@prisma/studio-core 0.0.0-dev.202505201220 → 0.0.0-dev.202505201337
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CPIOZS5X-ICU6WNOA.js → CPIOZS5X-UPTL2UWR.js} +2 -2
- package/dist/{OKF6E45R-3IGVLQES.js → OKF6E45R-YTUX3V7Q.js} +2 -2
- package/dist/chunk-DOLSM2NU.js +2 -0
- package/dist/chunk-I5ZAREYR.js +2 -0
- package/dist/chunk-NK6FOTFM.js +2 -0
- package/dist/chunk-U2CXFK7N.js +2 -0
- package/dist/chunk-U4ZJBDVG.js +1333 -0
- package/dist/data/accelerate/index.cjs +1 -1
- package/dist/data/accelerate/index.js +2 -2
- package/dist/data/bff/index.cjs +1 -1
- package/dist/data/bff/index.js +2 -2
- package/dist/data/index.cjs +1 -1
- package/dist/data/index.js +1 -1
- package/dist/data/pglite/index.cjs +1 -1
- package/dist/data/pglite/index.js +2 -2
- package/dist/data/postgres-core/index.cjs +1 -1
- package/dist/data/postgres-core/index.js +1 -1
- package/dist/metafile-cjs.json +1 -0
- package/dist/metafile-esm.json +1 -0
- package/dist/ui/index.cjs +109 -1335
- package/dist/ui/index.js +110 -7
- package/package.json +12 -13
- package/dist/chunk-IAKOOX7B.js +0 -1
- package/dist/chunk-NVCWH6WH.js +0 -2
- package/dist/chunk-OGMDOPWW.js +0 -2
- package/dist/chunk-RFCV76TR.js +0 -2
- package/dist/chunk-SOR7YZQY.js +0 -1333
- package/dist/chunk-XBQ4XZ2M.js +0 -2
|
@@ -0,0 +1,1333 @@
|
|
|
1
|
+
import{e as Xn}from"./chunk-U2CXFK7N.js";Xn();var X={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return Wo(this.context.count)},getNextContextId(){return Wo(this.context.count++)}};function Wo(e){let t=String(e),n=t.length-1;return X.context.id+(n?String.fromCharCode(96+n):"")+t}function Lr(e){X.context=e}function Sa(){return{...X.context,id:X.getNextContextId(),count:0}}var $a=!1,ka=(e,t)=>e===t,nr=Symbol("solid-proxy"),si=typeof Proxy=="function",Tn=Symbol("solid-track"),rr={equals:ka},Qo=null,li=mi,ze=1,Sn=2,ai={owned:null,cleanups:null,context:null,owner:null};var Y=null,_=null,sn=null,rn=null,re=null,we=null,Oe=null,lr=0;function bt(e,t){let n=re,r=Y,o=e.length===0,i=t===void 0?r:t,l=o?ai:{owned:null,cleanups:null,context:i?i.context:null,owner:i},a=o?e:()=>e(()=>ve(()=>Dt(l)));Y=l,re=null;try{return tt(a,!0)}finally{re=n,Y=r}}function z(e,t){t=t?Object.assign({},rr,t):rr;let n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},r=o=>(typeof o=="function"&&(_&&_.running&&_.sources.has(n)?o=o(n.tValue):o=o(n.value)),yi(n,o));return[hi.bind(n),r]}function ci(e,t,n){let r=ar(e,t,!0,ze);sn&&_&&_.running?we.push(r):ln(r)}function K(e,t,n){let r=ar(e,t,!1,ze);sn&&_&&_.running?we.push(r):ln(r)}function B(e,t,n){li=Oa;let r=ar(e,t,!1,ze),o=qr&&Se(qr);o&&(r.suspense=o),(!n||!n.render)&&(r.user=!0),Oe?Oe.push(r):ln(r)}function k(e,t,n){n=n?Object.assign({},rr,n):rr;let r=ar(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,sn&&_&&_.running?(r.tState=ze,we.push(r)):ln(r),hi.bind(r)}function ui(e){return tt(e,!1)}function ve(e){if(!rn&&re===null)return e();let t=re;re=null;try{return rn?rn.untrack(e):e()}finally{re=t}}function at(e,t,n){let r=Array.isArray(e),o,i=n&&n.defer;return l=>{let a;if(r){a=Array(e.length);for(let c=0;c<e.length;c++)a[c]=e[c]()}else a=e();if(i)return i=!1,l;let s=ve(()=>t(a,o,l));return o=a,s}}function wt(e){B(()=>ve(e))}function U(e){return Y===null||(Y.cleanups===null?Y.cleanups=[e]:Y.cleanups.push(e)),e}function or(){return Y}function Ea(e,t){let n=Y,r=re;Y=e,re=null;try{return tt(t,!0)}catch(o){cr(o)}finally{Y=n,re=r}}function di(e){if(_&&_.running)return e(),_.done;let t=re,n=Y;return Promise.resolve().then(()=>{re=t,Y=n;let r;return(sn||qr)&&(r=_||(_={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),r.done||(r.done=new Promise(o=>r.resolve=o)),r.running=!0),tt(e,!1),re=Y=null,r?r.done:void 0})}var[Aa,Yo]=z(!1);function fi(){return[Aa,di]}function ke(e,t){let n=Symbol("context");return{id:n,Provider:Ia(n),defaultValue:e}}function Se(e){let t;return Y&&Y.context&&(t=Y.context[e.id])!==void 0?t:e.defaultValue}function gi(e){let t=k(e),n=k(()=>_r(t()));return n.toArray=()=>{let r=n();return Array.isArray(r)?r:r!=null?[r]:[]},n}var qr;function hi(){let e=_&&_.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===ze)ln(this);else{let t=we;we=null,tt(()=>ir(this),!1),we=t}if(re){let t=this.observers?this.observers.length:0;re.sources?(re.sources.push(this),re.sourceSlots.push(t)):(re.sources=[this],re.sourceSlots=[t]),this.observers?(this.observers.push(re),this.observerSlots.push(re.sources.length-1)):(this.observers=[re],this.observerSlots=[re.sources.length-1])}return e&&_.sources.has(this)?this.tValue:this.value}function yi(e,t,n){let r=_&&_.running&&_.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(r,t)){if(_){let o=_.running;(o||!n&&_.sources.has(e))&&(_.sources.add(e),e.tValue=t),o||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&tt(()=>{for(let o=0;o<e.observers.length;o+=1){let i=e.observers[o],l=_&&_.running;l&&_.disposed.has(i)||((l?!i.tState:!i.state)&&(i.pure?we.push(i):Oe.push(i),i.observers&&vi(i)),l?i.tState=ze:i.state=ze)}if(we.length>1e6)throw we=[],new Error},!1)}return t}function ln(e){if(!e.fn)return;Dt(e);let t=lr;Xo(e,_&&_.running&&_.sources.has(e)?e.tValue:e.value,t),_&&!_.running&&_.sources.has(e)&&queueMicrotask(()=>{tt(()=>{_&&(_.running=!0),re=Y=e,Xo(e,e.tValue,t),re=Y=null},!1)})}function Xo(e,t,n){let r,o=Y,i=re;re=Y=e;try{r=e.fn(t)}catch(l){return e.pure&&(_&&_.running?(e.tState=ze,e.tOwned&&e.tOwned.forEach(Dt),e.tOwned=void 0):(e.state=ze,e.owned&&e.owned.forEach(Dt),e.owned=null)),e.updatedAt=n+1,cr(l)}finally{re=i,Y=o}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&"observers"in e?yi(e,r,!0):_&&_.running&&e.pure?(_.sources.add(e),e.tValue=r):e.value=r,e.updatedAt=n)}function ar(e,t,n,r=ze,o){let i={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:Y,context:Y?Y.context:null,pure:n};if(_&&_.running&&(i.state=0,i.tState=r),Y===null||Y!==ai&&(_&&_.running&&Y.pure?Y.tOwned?Y.tOwned.push(i):Y.tOwned=[i]:Y.owned?Y.owned.push(i):Y.owned=[i]),rn&&i.fn){let[l,a]=z(void 0,{equals:!1}),s=rn.factory(i.fn,a);U(()=>s.dispose());let c=()=>di(a).then(()=>d.dispose()),d=rn.factory(i.fn,c);i.fn=u=>(l(),_&&_.running?d.track(u):s.track(u))}return i}function $n(e){let t=_&&_.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===Sn)return ir(e);if(e.suspense&&ve(e.suspense.inFallback))return e.suspense.effects.push(e);let n=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<lr);){if(t&&_.disposed.has(e))return;(t?e.tState:e.state)&&n.push(e)}for(let r=n.length-1;r>=0;r--){if(e=n[r],t){let o=e,i=n[r+1];for(;(o=o.owner)&&o!==i;)if(_.disposed.has(o))return}if((t?e.tState:e.state)===ze)ln(e);else if((t?e.tState:e.state)===Sn){let o=we;we=null,tt(()=>ir(e,n[0]),!1),we=o}}}function tt(e,t){if(we)return e();let n=!1;t||(we=[]),Oe?n=!0:Oe=[],lr++;try{let r=e();return Ma(n),r}catch(r){n||(Oe=null),we=null,cr(r)}}function Ma(e){if(we&&(sn&&_&&_.running?Ta(we):mi(we),we=null),e)return;let t;if(_){if(!_.promises.size&&!_.queue.size){let r=_.sources,o=_.disposed;Oe.push.apply(Oe,_.effects),t=_.resolve;for(let i of Oe)"tState"in i&&(i.state=i.tState),delete i.tState;_=null,tt(()=>{for(let i of o)Dt(i);for(let i of r){if(i.value=i.tValue,i.owned)for(let l=0,a=i.owned.length;l<a;l++)Dt(i.owned[l]);i.tOwned&&(i.owned=i.tOwned),delete i.tValue,delete i.tOwned,i.tState=0}Yo(!1)},!1)}else if(_.running){_.running=!1,_.effects.push.apply(_.effects,Oe),Oe=null,Yo(!0);return}}let n=Oe;Oe=null,n.length&&tt(()=>li(n),!1),t&&t()}function mi(e){for(let t=0;t<e.length;t++)$n(e[t])}function Ta(e){for(let t=0;t<e.length;t++){let n=e[t],r=_.queue;r.has(n)||(r.add(n),sn(()=>{r.delete(n),tt(()=>{_.running=!0,$n(n)},!1),_&&(_.running=!1)}))}}function Oa(e){let t,n=0;for(t=0;t<e.length;t++){let r=e[t];r.user?e[n++]=r:$n(r)}if(X.context){if(X.count){X.effects||(X.effects=[]),X.effects.push(...e.slice(0,n));return}Lr()}for(X.effects&&(X.done||!X.count)&&(e=[...X.effects,...e],n+=X.effects.length,delete X.effects),t=0;t<n;t++)$n(e[t])}function ir(e,t){let n=_&&_.running;n?e.tState=0:e.state=0;for(let r=0;r<e.sources.length;r+=1){let o=e.sources[r];if(o.sources){let i=n?o.tState:o.state;i===ze?o!==t&&(!o.updatedAt||o.updatedAt<lr)&&$n(o):i===Sn&&ir(o,t)}}}function vi(e){let t=_&&_.running;for(let n=0;n<e.observers.length;n+=1){let r=e.observers[n];(t?!r.tState:!r.state)&&(t?r.tState=Sn:r.state=Sn,r.pure?we.push(r):Oe.push(r),r.observers&&vi(r))}}function Dt(e){let t;if(e.sources)for(;e.sources.length;){let n=e.sources.pop(),r=e.sourceSlots.pop(),o=n.observers;if(o&&o.length){let i=o.pop(),l=n.observerSlots.pop();r<o.length&&(i.sourceSlots[l]=r,o[r]=i,n.observerSlots[r]=l)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)Dt(e.tOwned[t]);delete e.tOwned}if(_&&_.running&&e.pure)pi(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)Dt(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}_&&_.running?e.tState=0:e.state=0}function pi(e,t){if(t||(e.tState=0,_.disposed.add(e)),e.owned)for(let n=0;n<e.owned.length;n++)pi(e.owned[n])}function Da(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function Zo(e,t,n){try{for(let r of t)r(e)}catch(r){cr(r,n&&n.owner||null)}}function cr(e,t=Y){let n=Qo&&t&&t.context&&t.context[Qo],r=Da(e);if(!n)throw r;Oe?Oe.push({fn(){Zo(r,n,t)},state:ze}):Zo(r,n,t)}function _r(e){if(typeof e=="function"&&!e.length)return _r(e());if(Array.isArray(e)){let t=[];for(let n=0;n<e.length;n++){let r=_r(e[n]);Array.isArray(r)?t.push.apply(t,r):t.push(r)}return t}return e}function Ia(e,t){return function(r){let o;return K(()=>o=ve(()=>(Y.context={...Y.context,[e]:r.value},gi(()=>r.children))),void 0),o}}var Rr=Symbol("fallback");function sr(e){for(let t=0;t<e.length;t++)e[t]()}function Pa(e,t,n={}){let r=[],o=[],i=[],l=0,a=t.length>1?[]:null;return U(()=>sr(i)),()=>{let s=e()||[],c=s.length,d,u;return s[Tn],ve(()=>{let f,h,y,m,p,b,w,x,C;if(c===0)l!==0&&(sr(i),i=[],r=[],o=[],l=0,a&&(a=[])),n.fallback&&(r=[Rr],o[0]=bt(P=>(i[0]=P,n.fallback())),l=1);else if(l===0){for(o=new Array(c),u=0;u<c;u++)r[u]=s[u],o[u]=bt(g);l=c}else{for(y=new Array(c),m=new Array(c),a&&(p=new Array(c)),b=0,w=Math.min(l,c);b<w&&r[b]===s[b];b++);for(w=l-1,x=c-1;w>=b&&x>=b&&r[w]===s[x];w--,x--)y[x]=o[w],m[x]=i[w],a&&(p[x]=a[w]);for(f=new Map,h=new Array(x+1),u=x;u>=b;u--)C=s[u],d=f.get(C),h[u]=d===void 0?-1:d,f.set(C,u);for(d=b;d<=w;d++)C=r[d],u=f.get(C),u!==void 0&&u!==-1?(y[u]=o[d],m[u]=i[d],a&&(p[u]=a[d]),u=h[u],f.set(C,u)):i[d]();for(u=b;u<c;u++)u in y?(o[u]=y[u],i[u]=m[u],a&&(a[u]=p[u],a[u](u))):o[u]=bt(g);o=o.slice(0,l=c),r=s.slice(0)}return o});function g(f){if(i[u]=f,a){let[h,y]=z(u);return a[u]=y,t(s[u],h)}return t(s[u])}}}function Fa(e,t,n={}){let r=[],o=[],i=[],l=[],a=0,s;return U(()=>sr(i)),()=>{let c=e()||[],d=c.length;return c[Tn],ve(()=>{if(d===0)return a!==0&&(sr(i),i=[],r=[],o=[],a=0,l=[]),n.fallback&&(r=[Rr],o[0]=bt(g=>(i[0]=g,n.fallback())),a=1),o;for(r[0]===Rr&&(i[0](),i=[],r=[],o=[],a=0),s=0;s<d;s++)s<r.length&&r[s]!==c[s]?l[s](()=>c[s]):s>=r.length&&(o[s]=bt(u));for(;s<r.length;s++)i[s]();return a=l.length=i.length=d,r=c.slice(0),o=o.slice(0,a)});function u(g){i[s]=g;let[f,h]=z(c[s]);return l[s]=h,t(f,s)}}}var La=!1;function v(e,t){if(La&&X.context){let n=X.context;Lr(Sa());let r=ve(()=>e(t||{}));return Lr(n),r}return ve(()=>e(t||{}))}function Zn(){return!0}var zr={get(e,t,n){return t===nr?n:e.get(t)},has(e,t){return t===nr?!0:e.has(t)},set:Zn,deleteProperty:Zn,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:Zn,deleteProperty:Zn}},ownKeys(e){return e.keys()}};function Pr(e){return(e=typeof e=="function"?e():e)?e:{}}function qa(){for(let e=0,t=this.length;e<t;++e){let n=this[e]();if(n!==void 0)return n}}function W(...e){let t=!1;for(let l=0;l<e.length;l++){let a=e[l];t=t||!!a&&nr in a,e[l]=typeof a=="function"?(t=!0,k(a)):a}if(si&&t)return new Proxy({get(l){for(let a=e.length-1;a>=0;a--){let s=Pr(e[a])[l];if(s!==void 0)return s}},has(l){for(let a=e.length-1;a>=0;a--)if(l in Pr(e[a]))return!0;return!1},keys(){let l=[];for(let a=0;a<e.length;a++)l.push(...Object.keys(Pr(e[a])));return[...new Set(l)]}},zr);let n={},r=Object.create(null);for(let l=e.length-1;l>=0;l--){let a=e[l];if(!a)continue;let s=Object.getOwnPropertyNames(a);for(let c=s.length-1;c>=0;c--){let d=s[c];if(d==="__proto__"||d==="constructor")continue;let u=Object.getOwnPropertyDescriptor(a,d);if(!r[d])r[d]=u.get?{enumerable:!0,configurable:!0,get:qa.bind(n[d]=[u.get.bind(a)])}:u.value!==void 0?u:void 0;else{let g=n[d];g&&(u.get?g.push(u.get.bind(a)):u.value!==void 0&&g.push(()=>u.value))}}}let o={},i=Object.keys(r);for(let l=i.length-1;l>=0;l--){let a=i[l],s=r[a];s&&s.get?Object.defineProperty(o,a,s):o[a]=s?s.value:void 0}return o}function ee(e,...t){if(si&&nr in e){let o=new Set(t.length>1?t.flat():t[0]),i=t.map(l=>new Proxy({get(a){return l.includes(a)?e[a]:void 0},has(a){return l.includes(a)&&a in e},keys(){return l.filter(a=>a in e)}},zr));return i.push(new Proxy({get(l){return o.has(l)?void 0:e[l]},has(l){return o.has(l)?!1:l in e},keys(){return Object.keys(e).filter(l=>!o.has(l))}},zr)),i}let n={},r=t.map(()=>({}));for(let o of Object.getOwnPropertyNames(e)){let i=Object.getOwnPropertyDescriptor(e,o),l=!i.get&&!i.set&&i.enumerable&&i.writable&&i.configurable,a=!1,s=0;for(let c of t)c.includes(o)&&(a=!0,l?r[s][o]=i.value:Object.defineProperty(r[s],o,i)),++s;a||(l?n[o]=i.value:Object.defineProperty(n,o,i))}return[...r,n]}var _a=0;function Ke(){return X.context?X.getNextContextId():`cl-${_a++}`}var bi=e=>`Stale read from <${e}>.`;function wi(e){let t="fallback"in e&&{fallback:()=>e.fallback};return k(Pa(()=>e.each,e.children,t||void 0))}function xi(e){let t="fallback"in e&&{fallback:()=>e.fallback};return k(Fa(()=>e.each,e.children,t||void 0))}function N(e){let t=e.keyed,n=k(()=>e.when,void 0,void 0),r=t?n:k(n,void 0,{equals:(o,i)=>!o==!i});return k(()=>{let o=r();if(o){let i=e.children;return typeof i=="function"&&i.length>0?ve(()=>i(t?o:()=>{if(!ve(r))throw bi("Show");return n()})):i}return e.fallback},void 0,void 0)}function Ci(e){let t=gi(()=>e.children),n=k(()=>{let r=t(),o=Array.isArray(r)?r:[r],i=()=>{};for(let l=0;l<o.length;l++){let a=l,s=o[l],c=i,d=k(()=>c()?void 0:s.when,void 0,void 0),u=s.keyed?d:k(d,void 0,{equals:(g,f)=>!g==!f});i=()=>c()||(u()?[a,d,s]:void 0)}return i});return k(()=>{let r=n()();if(!r)return e.fallback;let[o,i,l]=r,a=l.children;return typeof a=="function"&&a.length>0?ve(()=>a(l.keyed?i():()=>{if(ve(n)()?.[0]!==o)throw bi("Match");return i()})):a},void 0,void 0)}function ur(e){return e}var Si=void 0,Ra=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","hidden","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected"],za=new Set(["className","value","readOnly","formNoValidate","isMap","noModule","playsInline",...Ra]),Ka=new Set(["innerHTML","textContent","innerText","children"]),Ba=Object.assign(Object.create(null),{className:"class",htmlFor:"for"}),Na=Object.assign(Object.create(null),{class:"className",formnovalidate:{$:"formNoValidate",BUTTON:1,INPUT:1},ismap:{$:"isMap",IMG:1},nomodule:{$:"noModule",SCRIPT:1},playsinline:{$:"playsInline",VIDEO:1},readonly:{$:"readOnly",INPUT:1,TEXTAREA:1}});function Va(e,t){let n=Na[e];return typeof n=="object"?n[t]?n.$:void 0:n}var Ua=new Set(["beforeinput","click","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"]),Ga=new Set(["altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","svg","switch","symbol","text","textPath","tref","tspan","use","view","vkern"]),Ha={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"};function ja(e,t,n){let r=n.length,o=t.length,i=r,l=0,a=0,s=t[o-1].nextSibling,c=null;for(;l<o||a<i;){if(t[l]===n[a]){l++,a++;continue}for(;t[o-1]===n[i-1];)o--,i--;if(o===l){let d=i<r?a?n[a-1].nextSibling:n[i-a]:s;for(;a<i;)e.insertBefore(n[a++],d)}else if(i===a)for(;l<o;)(!c||!c.has(t[l]))&&t[l].remove(),l++;else if(t[l]===n[i-1]&&n[a]===t[o-1]){let d=t[--o].nextSibling;e.insertBefore(n[a++],t[l++].nextSibling),e.insertBefore(n[--i],d),t[o]=n[i]}else{if(!c){c=new Map;let u=a;for(;u<i;)c.set(n[u],u++)}let d=c.get(t[l]);if(d!=null)if(a<d&&d<i){let u=l,g=1,f;for(;++u<o&&u<i&&!((f=c.get(t[u]))==null||f!==d+g);)g++;if(g>d-a){let h=t[l];for(;a<d;)e.insertBefore(n[a++],h)}else e.replaceChild(n[a++],t[l++])}else l++;else t[l++].remove()}}}var xn="_$DX_DELEGATE";function R(e,t,n,r){let o,i=()=>{let a=r?document.createElementNS("http://www.w3.org/1998/Math/MathML","template"):document.createElement("template");return a.innerHTML=e,n?a.content.firstChild.firstChild:r?a.firstChild:a.content.firstChild},l=t?()=>ve(()=>document.importNode(o||(o=i()),!0)):()=>(o||(o=i())).cloneNode(!0);return l.cloneNode=l,l}function On(e,t=window.document){let n=t[xn]||(t[xn]=new Set);for(let r=0,o=e.length;r<o;r++){let i=e[r];n.has(i)||(n.add(i),t.addEventListener(i,ki))}}function $i(e=window.document){if(e[xn]){for(let t of e[xn].keys())e.removeEventListener(t,ki);delete e[xn]}}function M(e,t,n){Vt(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function Wa(e,t,n,r){Vt(e)||(r==null?e.removeAttributeNS(t,n):e.setAttributeNS(t,n,r))}function Qa(e,t,n){Vt(e)||(n?e.setAttribute(t,""):e.removeAttribute(t))}function T(e,t){Vt(e)||(t==null?e.removeAttribute("class"):e.className=t)}function Gr(e,t,n,r){if(r)Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n;else if(Array.isArray(n)){let o=n[0];e.addEventListener(t,n[0]=i=>o.call(e,n[1],i))}else e.addEventListener(t,n,typeof n!="function"&&n)}function Ya(e,t,n={}){let r=Object.keys(t||{}),o=Object.keys(n),i,l;for(i=0,l=o.length;i<l;i++){let a=o[i];!a||a==="undefined"||t[a]||(Jo(e,a,!1),delete n[a])}for(i=0,l=r.length;i<l;i++){let a=r[i],s=!!t[a];!a||a==="undefined"||n[a]===s||!s||(Jo(e,a,!0),n[a]=s)}return n}function Xa(e,t,n){if(!t)return n?M(e,"style"):t;let r=e.style;if(typeof t=="string")return r.cssText=t;typeof n=="string"&&(r.cssText=n=void 0),n||(n={}),t||(t={});let o,i;for(i in n)t[i]==null&&r.removeProperty(i),delete n[i];for(i in t)o=t[i],o!==n[i]&&(r.setProperty(i,o),n[i]=o);return n}function Hr(e,t={},n,r){let o={};return r||K(()=>o.children=kn(e,t.children,o.children)),K(()=>typeof t.ref=="function"&&Nt(t.ref,e)),K(()=>Za(e,t,n,!0,o,!0)),o}function Nt(e,t,n){return ve(()=>e(t,n))}function E(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!="function")return kn(e,t,r,n);K(o=>kn(e,t(),o,n),r)}function Za(e,t,n,r,o={},i=!1){t||(t={});for(let l in o)if(!(l in t)){if(l==="children")continue;o[l]=ei(e,l,null,o[l],n,i,t)}for(let l in t){if(l==="children")continue;let a=t[l];o[l]=ei(e,l,a,o[l],n,i,t)}}function Ja(e){let t,n;return!Vt()||!(t=X.registry.get(n=tc()))?e():(X.completed&&X.completed.add(t),X.registry.delete(n),t)}function Vt(e){return!!X.context&&!X.done&&(!e||e.isConnected)}function ec(e){return e.toLowerCase().replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}function Jo(e,t,n){let r=t.trim().split(/\s+/);for(let o=0,i=r.length;o<i;o++)e.classList.toggle(r[o],n)}function ei(e,t,n,r,o,i,l){let a,s,c,d,u;if(t==="style")return Xa(e,n,r);if(t==="classList")return Ya(e,n,r);if(n===r)return r;if(t==="ref")i||n(e);else if(t.slice(0,3)==="on:"){let g=t.slice(3);r&&e.removeEventListener(g,r,typeof r!="function"&&r),n&&e.addEventListener(g,n,typeof n!="function"&&n)}else if(t.slice(0,10)==="oncapture:"){let g=t.slice(10);r&&e.removeEventListener(g,r,!0),n&&e.addEventListener(g,n,!0)}else if(t.slice(0,2)==="on"){let g=t.slice(2).toLowerCase(),f=Ua.has(g);if(!f&&r){let h=Array.isArray(r)?r[0]:r;e.removeEventListener(g,h)}(f||n)&&(Gr(e,g,n,f),f&&On([g]))}else if(t.slice(0,5)==="attr:")M(e,t.slice(5),n);else if(t.slice(0,5)==="bool:")Qa(e,t.slice(5),n);else if((u=t.slice(0,5)==="prop:")||(c=Ka.has(t))||!o&&((d=Va(t,e.tagName))||(s=za.has(t)))||(a=e.nodeName.includes("-")||"is"in l)){if(u)t=t.slice(5),s=!0;else if(Vt(e))return n;t==="class"||t==="className"?T(e,n):a&&!s&&!c?e[ec(t)]=n:e[d||t]=n}else{let g=o&&t.indexOf(":")>-1&&Ha[t.split(":")[0]];g?Wa(e,g,t,n):M(e,Ba[t]||t,n)}return n}function ki(e){if(X.registry&&X.events&&X.events.find(([s,c])=>c===e))return;let t=e.target,n=`$$${e.type}`,r=e.target,o=e.currentTarget,i=s=>Object.defineProperty(e,"target",{configurable:!0,value:s}),l=()=>{let s=t[n];if(s&&!t.disabled){let c=t[`${n}Data`];if(c!==void 0?s.call(t,c,e):s.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&i(t.host),!0},a=()=>{for(;l()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),X.registry&&!X.done&&(X.done=_$HY.done=!0),e.composedPath){let s=e.composedPath();i(s[0]);for(let c=0;c<s.length-2&&(t=s[c],!!l());c++){if(t._$host){t=t._$host,a();break}if(t.parentNode===o)break}}else a();i(r)}function kn(e,t,n,r,o){let i=Vt(e);if(i){!n&&(n=[...e.childNodes]);let s=[];for(let c=0;c<n.length;c++){let d=n[c];d.nodeType===8&&d.data.slice(0,2)==="!$"?d.remove():s.push(d)}n=s}for(;typeof n=="function";)n=n();if(t===n)return n;let l=typeof t,a=r!==void 0;if(e=a&&n[0]&&n[0].parentNode||e,l==="string"||l==="number"){if(i||l==="number"&&(t=t.toString(),t===n))return n;if(a){let s=n[0];s&&s.nodeType===3?s.data!==t&&(s.data=t):s=document.createTextNode(t),n=en(e,n,r,s)}else n!==""&&typeof n=="string"?n=e.firstChild.data=t:n=e.textContent=t}else if(t==null||l==="boolean"){if(i)return n;n=en(e,n,r)}else{if(l==="function")return K(()=>{let s=t();for(;typeof s=="function";)s=s();n=kn(e,s,n,r)}),()=>n;if(Array.isArray(t)){let s=[],c=n&&Array.isArray(n);if(Kr(s,t,n,o))return K(()=>n=kn(e,s,n,r,!0)),()=>n;if(i){if(!s.length)return n;if(r===void 0)return n=[...e.childNodes];let d=s[0];if(d.parentNode!==e)return n;let u=[d];for(;(d=d.nextSibling)!==r;)u.push(d);return n=u}if(s.length===0){if(n=en(e,n,r),a)return n}else c?n.length===0?ti(e,s,r):ja(e,n,s):(n&&en(e),ti(e,s));n=s}else if(t.nodeType){if(i&&t.parentNode)return n=a?[t]:t;if(Array.isArray(n)){if(a)return n=en(e,n,r,t);en(e,n,null,t)}else n==null||n===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}}return n}function Kr(e,t,n,r){let o=!1;for(let i=0,l=t.length;i<l;i++){let a=t[i],s=n&&n[e.length],c;if(!(a==null||a===!0||a===!1))if((c=typeof a)=="object"&&a.nodeType)e.push(a);else if(Array.isArray(a))o=Kr(e,a,s)||o;else if(c==="function")if(r){for(;typeof a=="function";)a=a();o=Kr(e,Array.isArray(a)?a:[a],Array.isArray(s)?s:[s])||o}else e.push(a),o=!0;else{let d=String(a);s&&s.nodeType===3&&s.data===d?e.push(s):e.push(document.createTextNode(d))}}return o}function ti(e,t,n=null){for(let r=0,o=t.length;r<o;r++)e.insertBefore(t[r],n)}function en(e,t,n,r){if(n===void 0)return e.textContent="";let o=r||document.createTextNode("");if(t.length){let i=!1;for(let l=t.length-1;l>=0;l--){let a=t[l];if(o!==a){let s=a.parentNode===e;!i&&!l?s?e.replaceChild(o,a):e.insertBefore(o,n):s&&a.remove()}else i=!0}}else e.insertBefore(o,n);return[o]}function tc(){return X.getNextContextId()}var De=!1,nc="http://www.w3.org/2000/svg";function Ei(e,t=!1){return t?document.createElementNS(nc,e):document.createElement(e)}function jr(e){let{useShadow:t}=e,n=document.createTextNode(""),r=()=>e.mount||document.body,o=or(),i,l=!!X.context;return B(()=>{l&&(or().user=l=!1),i||(i=Ea(o,()=>k(()=>e.children)));let a=r();if(a instanceof HTMLHeadElement){let[s,c]=z(!1),d=()=>c(!0);bt(u=>E(a,()=>s()?u():i(),null)),U(d)}else{let s=Ei(e.isSVG?"g":"div",e.isSVG),c=t&&s.attachShadow?s.attachShadow({mode:"open"}):s;Object.defineProperty(s,"_$host",{get(){return n.parentNode},configurable:!0}),E(c,i),a.appendChild(s),e.ref&&e.ref(s),U(()=>a.removeChild(s))}},void 0,{render:!l}),n}function rc(e,t){let n=k(e);return k(()=>{let r=n();switch(typeof r){case"function":return ve(()=>r(t));case"string":let o=Ga.has(r),i=X.context?Ja():Ei(r,o);return Hr(i,t,o),i}})}function Ai(e){let[,t]=ee(e,["component"]);return rc(()=>e.component,t)}var oc=class{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}},Mi=class{constructor(e){this.generateIdentifier=e,this.kv=new oc}register(e,t){this.kv.getByValue(e)||(t||(t=this.generateIdentifier(e)),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}},ic=class extends Mi{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){typeof t=="object"?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}};function sc(e){if("values"in Object)return Object.values(e);let t=[];for(let n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t}function lc(e,t){let n=sc(e);if("find"in n)return n.find(t);let r=n;for(let o=0;o<r.length;o++){let i=r[o];if(t(i))return i}}function on(e,t){Object.entries(e).forEach(([n,r])=>t(r,n))}function tr(e,t){return e.indexOf(t)!==-1}function ni(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(t(r))return r}}var ac=class{constructor(){this.transfomers={}}register(e){this.transfomers[e.name]=e}findApplicable(e){return lc(this.transfomers,t=>t.isApplicable(e))}findByName(e){return this.transfomers[e]}},cc=e=>Object.prototype.toString.call(e).slice(8,-1),Ti=e=>typeof e>"u",uc=e=>e===null,En=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Br=e=>En(e)&&Object.keys(e).length===0,It=e=>Array.isArray(e),dc=e=>typeof e=="string",fc=e=>typeof e=="number"&&!isNaN(e),gc=e=>typeof e=="boolean",hc=e=>e instanceof RegExp,An=e=>e instanceof Map,Mn=e=>e instanceof Set,Oi=e=>cc(e)==="Symbol",yc=e=>e instanceof Date&&!isNaN(e.valueOf()),mc=e=>e instanceof Error,ri=e=>typeof e=="number"&&isNaN(e),vc=e=>gc(e)||uc(e)||Ti(e)||fc(e)||dc(e)||Oi(e),pc=e=>typeof e=="bigint",bc=e=>e===1/0||e===-1/0,wc=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),xc=e=>e instanceof URL,Di=e=>e.replace(/\./g,"\\."),Fr=e=>e.map(String).map(Di).join("."),Cn=e=>{let t=[],n="";for(let o=0;o<e.length;o++){let i=e.charAt(o);if(i==="\\"&&e.charAt(o+1)==="."){n+=".",o++;continue}if(i==="."){t.push(n),n="";continue}n+=i}let r=n;return t.push(r),t};function lt(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var Ii=[lt(Ti,"undefined",()=>null,()=>{}),lt(pc,"bigint",e=>e.toString(),e=>typeof BigInt<"u"?BigInt(e):e),lt(yc,"Date",e=>e.toISOString(),e=>new Date(e)),lt(mc,"Error",(e,t)=>{let n={name:e.name,message:e.message};return t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n},(e,t)=>{let n=new Error(e.message);return n.name=e.name,n.stack=e.stack,t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n}),lt(hc,"regexp",e=>""+e,e=>{let t=e.slice(1,e.lastIndexOf("/")),n=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,n)}),lt(Mn,"set",e=>[...e.values()],e=>new Set(e)),lt(An,"map",e=>[...e.entries()],e=>new Map(e)),lt(e=>ri(e)||bc(e),"number",e=>ri(e)?"NaN":e>0?"Infinity":"-Infinity",Number),lt(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),lt(xc,"URL",e=>e.toString(),e=>new URL(e))];function dr(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var Pi=dr((e,t)=>Oi(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,n)=>{let r=n.symbolRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown symbol");return r}),Cc=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),Fi=dr(wc,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{let n=Cc[t[1]];if(!n)throw new Error("Trying to deserialize unknown typed array");return new n(e)});function Li(e,t){return e?.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}var qi=dr(Li,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{let n=t.classRegistry.getAllowedProps(e.constructor);if(!n)return{...e};let r={};return n.forEach(o=>{r[o]=e[o]}),r},(e,t,n)=>{let r=n.classRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown class - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564");return Object.assign(Object.create(r.prototype),e)}),_i=dr((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,n)=>{let r=n.customTransformerRegistry.findByName(t[1]);if(!r)throw new Error("Trying to deserialize unknown custom value");return r.deserialize(e)}),Sc=[qi,Pi,_i,Fi],oi=(e,t)=>{let n=ni(Sc,o=>o.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation(e,t)};let r=ni(Ii,o=>o.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation}},Ri={};Ii.forEach(e=>{Ri[e.annotation]=e});var $c=(e,t,n)=>{if(It(t))switch(t[0]){case"symbol":return Pi.untransform(e,t,n);case"class":return qi.untransform(e,t,n);case"custom":return _i.untransform(e,t,n);case"typed-array":return Fi.untransform(e,t,n);default:throw new Error("Unknown transformation: "+t)}else{let r=Ri[t];if(!r)throw new Error("Unknown transformation: "+t);return r.untransform(e,n)}},tn=(e,t)=>{let n=e.keys();for(;t>0;)n.next(),t--;return n.next().value};function zi(e){if(tr(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(tr(e,"prototype"))throw new Error("prototype is not allowed as a property");if(tr(e,"constructor"))throw new Error("constructor is not allowed as a property")}var kc=(e,t)=>{zi(t);for(let n=0;n<t.length;n++){let r=t[n];if(Mn(e))e=tn(e,+r);else if(An(e)){let o=+r,i=+t[++n]==0?"key":"value",l=tn(e,o);switch(i){case"key":e=l;break;case"value":e=e.get(l);break}}else e=e[r]}return e},Nr=(e,t,n)=>{if(zi(t),t.length===0)return n(e);let r=e;for(let i=0;i<t.length-1;i++){let l=t[i];if(It(r)){let a=+l;r=r[a]}else if(En(r))r=r[l];else if(Mn(r)){let a=+l;r=tn(r,a)}else if(An(r)){if(i===t.length-2)break;let s=+l,c=+t[++i]==0?"key":"value",d=tn(r,s);switch(c){case"key":r=d;break;case"value":r=r.get(d);break}}}let o=t[t.length-1];if(It(r)?r[+o]=n(r[+o]):En(r)&&(r[o]=n(r[o])),Mn(r)){let i=tn(r,+o),l=n(i);i!==l&&(r.delete(i),r.add(l))}if(An(r)){let i=+t[t.length-2],l=tn(r,i);switch(+o==0?"key":"value"){case"key":{let s=n(l);r.set(s,r.get(l)),s!==l&&r.delete(l);break}case"value":{r.set(l,n(r.get(l)));break}}}return e};function Vr(e,t,n=[]){if(!e)return;if(!It(e)){on(e,(i,l)=>Vr(i,t,[...n,...Cn(l)]));return}let[r,o]=e;o&&on(o,(i,l)=>{Vr(i,t,[...n,...Cn(l)])}),t(r,n)}function Ec(e,t,n){return Vr(t,(r,o)=>{e=Nr(e,o,i=>$c(i,r,n))}),e}function Ac(e,t){function n(r,o){let i=kc(e,Cn(o));r.map(Cn).forEach(l=>{e=Nr(e,l,()=>i)})}if(It(t)){let[r,o]=t;r.forEach(i=>{e=Nr(e,Cn(i),()=>e)}),o&&on(o,n)}else on(t,n);return e}var Mc=(e,t)=>En(e)||It(e)||An(e)||Mn(e)||Li(e,t);function Tc(e,t,n){let r=n.get(e);r?r.push(t):n.set(e,[t])}function Oc(e,t){let n={},r;return e.forEach(o=>{if(o.length<=1)return;t||(o=o.map(a=>a.map(String)).sort((a,s)=>a.length-s.length));let[i,...l]=o;i.length===0?r=l.map(Fr):n[Fr(i)]=l.map(Fr)}),r?Br(n)?[r]:[r,n]:Br(n)?void 0:n}var Ki=(e,t,n,r,o=[],i=[],l=new Map)=>{let a=vc(e);if(!a){Tc(e,o,t);let f=l.get(e);if(f)return r?{transformedValue:null}:f}if(!Mc(e,n)){let f=oi(e,n),h=f?{transformedValue:f.value,annotations:[f.type]}:{transformedValue:e};return a||l.set(e,h),h}if(tr(i,e))return{transformedValue:null};let s=oi(e,n),c=s?.value??e,d=It(c)?[]:{},u={};on(c,(f,h)=>{if(h==="__proto__"||h==="constructor"||h==="prototype")throw new Error(`Detected property ${h}. This is a prototype pollution risk, please remove it from your object.`);let y=Ki(f,t,n,r,[...o,h],[...i,e],l);d[h]=y.transformedValue,It(y.annotations)?u[h]=y.annotations:En(y.annotations)&&on(y.annotations,(m,p)=>{u[Di(h)+"."+p]=m})});let g=Br(u)?{transformedValue:d,annotations:s?[s.type]:void 0}:{transformedValue:d,annotations:s?[s.type,u]:u};return a||l.set(e,g),g};function Bi(e){return Object.prototype.toString.call(e).slice(8,-1)}function ii(e){return Bi(e)==="Array"}function Dc(e){if(Bi(e)!=="Object")return!1;let t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function Ic(e,t,n,r,o){let i={}.propertyIsEnumerable.call(r,t)?"enumerable":"nonenumerable";i==="enumerable"&&(e[t]=n),o&&i==="nonenumerable"&&Object.defineProperty(e,t,{value:n,enumerable:!1,writable:!0,configurable:!0})}function Ur(e,t={}){if(ii(e))return e.map(o=>Ur(o,t));if(!Dc(e))return e;let n=Object.getOwnPropertyNames(e),r=Object.getOwnPropertySymbols(e);return[...n,...r].reduce((o,i)=>{if(ii(t.props)&&!t.props.includes(i))return o;let l=e[i],a=Ur(l,t);return Ic(o,i,a,e,t.nonenumerable),o},{})}var Z=class{constructor({dedupe:e=!1}={}){this.classRegistry=new ic,this.symbolRegistry=new Mi(t=>t.description??""),this.customTransformerRegistry=new ac,this.allowedErrorProps=[],this.dedupe=e}serialize(e){let t=new Map,n=Ki(e,t,this,this.dedupe),r={json:n.transformedValue};n.annotations&&(r.meta={...r.meta,values:n.annotations});let o=Oc(t,this.dedupe);return o&&(r.meta={...r.meta,referentialEqualities:o}),r}deserialize(e){let{json:t,meta:n}=e,r=Ur(t);return n?.values&&(r=Ec(r,n.values,this)),n?.referentialEqualities&&(r=Ac(r,n.referentialEqualities)),r}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e))}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}};Z.defaultInstance=new Z;Z.serialize=Z.defaultInstance.serialize.bind(Z.defaultInstance);Z.deserialize=Z.defaultInstance.deserialize.bind(Z.defaultInstance);Z.stringify=Z.defaultInstance.stringify.bind(Z.defaultInstance);Z.parse=Z.defaultInstance.parse.bind(Z.defaultInstance);Z.registerClass=Z.defaultInstance.registerClass.bind(Z.defaultInstance);Z.registerSymbol=Z.defaultInstance.registerSymbol.bind(Z.defaultInstance);Z.registerCustom=Z.defaultInstance.registerCustom.bind(Z.defaultInstance);Z.allowErrorProps=Z.defaultInstance.allowErrorProps.bind(Z.defaultInstance);var Wr=Z.serialize;Z.deserialize;var Ni=Z.stringify;Z.parse;Z.registerClass;Z.registerCustom;Z.registerSymbol;Z.allowErrorProps;function Ut(e){return e.state.fetchStatus==="fetching"?"fetching":e.getObserversCount()?e.state.fetchStatus==="paused"?"paused":e.isStale()?"stale":"fresh":"inactive"}function Vi(e,t){return`${e}${t.charAt(0).toUpperCase()+t.slice(1)}`}function Ui({queryState:e,observerCount:t,isStale:n}){return e.fetchStatus==="fetching"?"blue":t?e.fetchStatus==="paused"?"purple":n?"yellow":"green":"gray"}function Gt({status:e,isPaused:t}){return t?"purple":e==="error"?"red":e==="pending"?"yellow":e==="success"?"green":"gray"}function Gi(e){return e==="fresh"?"green":e==="stale"?"yellow":e==="paused"?"purple":e==="inactive"?"gray":"blue"}var Dn=(e,t=!1)=>{let{json:n}=Wr(e);return JSON.stringify(n,null,t?2:void 0)},Jn=e=>e.state.fetchStatus!=="idle"?0:e.getObserversCount()?e.isStale()?2:1:3,Pc=(e,t)=>e.queryHash.localeCompare(t.queryHash),Hi=(e,t)=>e.state.dataUpdatedAt<t.state.dataUpdatedAt?1:-1,Fc=(e,t)=>Jn(e)===Jn(t)?Hi(e,t):Jn(e)>Jn(t)?1:-1,fr={status:Fc,"query hash":Pc,"last updated":Hi},er=e=>e.state.isPaused?0:e.state.status==="error"?2:e.state.status==="pending"?1:3,ji=(e,t)=>e.state.submittedAt<t.state.submittedAt?1:-1,Lc=(e,t)=>er(e)===er(t)?ji(e,t):er(e)>er(t)?1:-1,gr={status:Lc,"last updated":ji},Qr=e=>e*parseFloat(getComputedStyle(document.documentElement).fontSize),rh=()=>{let[e,t]=z("dark");return wt(()=>{let n=window.matchMedia("(prefers-color-scheme: dark)");t(n.matches?"dark":"light");let r=o=>{t(o.matches?"dark":"light")};n.addEventListener("change",r),U(()=>n.removeEventListener("change",r))}),e},Ot=(e,t,n)=>{if(t.length===0)return n;if(e instanceof Map){let r=new Map(e);if(t.length===1)return r.set(t[0],n),r;let[o,...i]=t;return r.set(o,Ot(r.get(o),i,n)),r}if(e instanceof Set){let r=Ot(Array.from(e),t,n);return new Set(r)}if(Array.isArray(e)){let r=[...e];if(t.length===1)return r[t[0]]=n,r;let[o,...i]=t;return r[o]=Ot(r[o],i,n),r}if(e instanceof Object){let r={...e};if(t.length===1)return r[t[0]]=n,r;let[o,...i]=t;return r[o]=Ot(r[o],i,n),r}return e},nn=(e,t)=>{if(e instanceof Map){let n=new Map(e);if(t.length===1)return n.delete(t[0]),n;let[r,...o]=t;return n.set(r,nn(n.get(r),o)),n}if(e instanceof Set){let n=nn(Array.from(e),t);return new Set(n)}if(Array.isArray(e)){let n=[...e];if(t.length===1)return n.filter((i,l)=>l.toString()!==t[0]);let[r,...o]=t;return n[r]=nn(n[r],o),n}if(e instanceof Object){let n={...e};if(t.length===1)return delete n[t[0]],n;let[r,...o]=t;return n[r]=nn(n[r],o),n}return e};Xn();var qc=!De,_c=qc&&!!Si,Wi=()=>{},Rc=e=>e!=null,zc=e=>e.filter(Rc);function Kc(e){return(...t)=>{for(let n of e)n&&n(...t)}}var A=e=>typeof e=="function"&&!e.length?e():e,to=e=>Array.isArray(e)?e:e?[e]:[];function Bc(e,...t){return typeof e=="function"?e(...t):e}var Nc=_c?e=>or()?U(e):e:U;function Vc(e,t,n,r){let o=e.length,i=t.length,l=0;if(!i){for(;l<o;l++)n(e[l]);return}if(!o){for(;l<i;l++)r(t[l]);return}for(;l<i&&t[l]===e[l];l++);let a,s;t=t.slice(l),e=e.slice(l);for(a of t)e.includes(a)||r(a);for(s of e)t.includes(s)||n(s)}function Uc(e){let[t,n]=z(),r=e?.throw?(g,f)=>{throw n(g instanceof Error?g:new Error(f)),g}:(g,f)=>{n(g instanceof Error?g:new Error(f))},o=e?.api?Array.isArray(e.api)?e.api:[e.api]:[globalThis.localStorage].filter(Boolean),i=e?.prefix?`${e.prefix}.`:"",l=new Map,a=new Proxy({},{get(g,f){let h=l.get(f);h||(h=z(void 0,{equals:!1}),l.set(f,h)),h[0]();let y=o.reduce((m,p)=>{if(m!==null||!p)return m;try{return p.getItem(`${i}${f}`)}catch(b){return r(b,`Error reading ${i}${f} from ${p.name}`),null}},null);return y!==null&&e?.deserializer?e.deserializer(y,f,e.options):y}}),s=(g,f,h)=>{let y=e?.serializer?e.serializer(f,g,h??e.options):f,m=`${i}${g}`;o.forEach(b=>{try{b.getItem(m)!==y&&b.setItem(m,y)}catch(w){r(w,`Error setting ${i}${g} to ${y} in ${b.name}`)}});let p=l.get(g);p&&p[1]()},c=g=>o.forEach(f=>{try{f.removeItem(`${i}${g}`)}catch(h){r(h,`Error removing ${i}${g} from ${f.name}`)}}),d=()=>o.forEach(g=>{try{g.clear()}catch(f){r(f,`Error clearing ${g.name}`)}}),u=()=>{let g={},f=(h,y)=>{if(!g.hasOwnProperty(h)){let m=y&&e?.deserializer?e.deserializer(y,h,e.options):y;m&&(g[h]=m)}};return o.forEach(h=>{if(typeof h.getAll=="function"){let y;try{y=h.getAll()}catch(m){r(m,`Error getting all values from in ${h.name}`)}for(let m of y)f(m,y[m])}else{let y=0,m;try{for(;m=h.key(y++);)g.hasOwnProperty(m)||f(m,h.getItem(m))}catch(p){r(p,`Error getting all values from ${h.name}`)}}}),g};return e?.sync!==!1&&wt(()=>{let g=f=>{let h=!1;o.forEach(y=>{try{y!==f.storageArea&&f.key&&f.newValue!==y.getItem(f.key)&&(f.newValue?y.setItem(f.key,f.newValue):y.removeItem(f.key),h=!0)}catch(m){r(m,`Error synching api ${y.name} from storage event (${f.key}=${f.newValue})`)}}),h&&f.key&&l.get(f.key)?.[1]()};"addEventListener"in globalThis?(globalThis.addEventListener("storage",g),U(()=>globalThis.removeEventListener("storage",g))):(o.forEach(f=>f.addEventListener?.("storage",g)),U(()=>o.forEach(f=>f.removeEventListener?.("storage",g))))}),[a,s,{clear:d,error:t,remove:c,toJSON:u}]}var fh=Uc,Gc=e=>(typeof e.clear=="function"||(e.clear=()=>{let t;for(;t=e.key(0);)e.removeItem(t)}),e),Qi=e=>{if(!e)return"";let t="";for(let n in e){if(!e.hasOwnProperty(n))continue;let r=e[n];t+=r instanceof Date?`; ${n}=${r.toUTCString()}`:typeof r=="boolean"?`; ${n}`:`; ${n}=${r}`}return t},He=Gc({_cookies:[globalThis.document,"cookie"],getItem:e=>He._cookies[0][He._cookies[1]].match("(^|;)\\s*"+e+"\\s*=\\s*([^;]+)")?.pop()??null,setItem:(e,t,n)=>{let r=He.getItem(e);He._cookies[0][He._cookies[1]]=`${e}=${t}${Qi(n)}`;let o=Object.assign(new Event("storage"),{key:e,oldValue:r,newValue:t,url:globalThis.document.URL,storageArea:He});window.dispatchEvent(o)},removeItem:e=>{He._cookies[0][He._cookies[1]]=`${e}=deleted${Qi({expires:new Date(0)})}`},key:e=>{let t=null,n=0;return He._cookies[0][He._cookies[1]].replace(/(?:^|;)\s*(.+?)\s*=\s*[^;]+/g,(r,o)=>(!t&&o&&n++===e&&(t=o),"")),t},get length(){let e=0;return He._cookies[0][He._cookies[1]].replace(/(?:^|;)\s*.+?\s*=\s*[^;]+/g,t=>(e+=t?1:0,"")),e}}),Hc=1024,jt=796,go=700,jc="bottom-right",no="bottom",gh="system",Wc=!1,Vs=500,Qc=500,Us=500,Yc=Object.keys(fr)[0],Yi=1,Xc=Object.keys(gr)[0],Zc=ke({client:void 0,onlineManager:void 0,queryFlavor:"",version:"",shadowDOMTarget:void 0});function V(){return Se(Zc)}var Gs=ke(void 0),hh=e=>{let[t,n]=z(null),r=()=>{let l=t();l!=null&&(l.close(),n(null))},o=(l,a)=>{if(t()!=null)return;let s=window.open("","TSQD-Devtools-Panel",`width=${l},height=${a},popup`);if(!s)throw new Error("Failed to open popup. Please allow popups for this site to view the devtools in picture-in-picture mode.");s.document.head.innerHTML="",s.document.body.innerHTML="",$i(s.document),s.document.title="TanStack Query Devtools",s.document.body.style.margin="0",s.addEventListener("pagehide",()=>{e.setLocalStore("pip_open","false"),n(null)}),[...(V().shadowDOMTarget||document).styleSheets].forEach(c=>{try{let d=[...c.cssRules].map(h=>h.cssText).join(""),u=document.createElement("style"),g=c.ownerNode,f="";g&&"id"in g&&(f=g.id),f&&u.setAttribute("id",f),u.textContent=d,s.document.head.appendChild(u)}catch{let u=document.createElement("link");if(c.href==null)return;u.rel="stylesheet",u.type=c.type,u.media=c.media.toString(),u.href=c.href,s.document.head.appendChild(u)}}),On(["focusin","focusout","pointermove","keydown","pointerdown","pointerup","click","mousedown","input"],s.document),e.setLocalStore("pip_open","true"),n(s)};B(()=>{(e.localStore.pip_open??"false")==="true"&&!e.disabled&&o(Number(window.innerWidth),Number(e.localStore.height||Qc))}),B(()=>{let l=(V().shadowDOMTarget||document).querySelector("#_goober"),a=t();if(l&&a){let s=new MutationObserver(()=>{let c=(V().shadowDOMTarget||a.document).querySelector("#_goober");c&&(c.textContent=l.textContent)});s.observe(l,{childList:!0,subtree:!0,characterDataOldValue:!0}),U(()=>{s.disconnect()})}});let i=k(()=>({pipWindow:t(),requestPipWindow:o,closePipWindow:r,disabled:e.disabled??!1}));return v(Gs.Provider,{value:i,get children(){return e.children}})},ho=()=>k(()=>{let t=Se(Gs);if(!t)throw new Error("usePiPWindow must be used within a PiPProvider");return t()}),Jc=ke(()=>"dark");function Ae(){return Se(Jc)}var Hs={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u1EA4:"A",\u1EAE:"A",\u1EB2:"A",\u1EB4:"A",\u1EB6:"A",\u00C6:"AE",\u1EA6:"A",\u1EB0:"A",\u0202:"A",\u00C7:"C",\u1E08:"C",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u1EBE:"E",\u1E16:"E",\u1EC0:"E",\u1E14:"E",\u1E1C:"E",\u0206:"E",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u1E2E:"I",\u020A:"I",\u00D0:"D",\u00D1:"N",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u1ED0:"O",\u1E4C:"O",\u1E52:"O",\u020E:"O",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00DD:"Y",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u1EA5:"a",\u1EAF:"a",\u1EB3:"a",\u1EB5:"a",\u1EB7:"a",\u00E6:"ae",\u1EA7:"a",\u1EB1:"a",\u0203:"a",\u00E7:"c",\u1E09:"c",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u1EBF:"e",\u1E17:"e",\u1EC1:"e",\u1E15:"e",\u1E1D:"e",\u0207:"e",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u1E2F:"i",\u020B:"i",\u00F0:"d",\u00F1:"n",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u1ED1:"o",\u1E4D:"o",\u1E53:"o",\u020F:"o",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00FD:"y",\u00FF:"y",\u0100:"A",\u0101:"a",\u0102:"A",\u0103:"a",\u0104:"A",\u0105:"a",\u0106:"C",\u0107:"c",\u0108:"C",\u0109:"c",\u010A:"C",\u010B:"c",\u010C:"C",\u010D:"c",C\u0306:"C",c\u0306:"c",\u010E:"D",\u010F:"d",\u0110:"D",\u0111:"d",\u0112:"E",\u0113:"e",\u0114:"E",\u0115:"e",\u0116:"E",\u0117:"e",\u0118:"E",\u0119:"e",\u011A:"E",\u011B:"e",\u011C:"G",\u01F4:"G",\u011D:"g",\u01F5:"g",\u011E:"G",\u011F:"g",\u0120:"G",\u0121:"g",\u0122:"G",\u0123:"g",\u0124:"H",\u0125:"h",\u0126:"H",\u0127:"h",\u1E2A:"H",\u1E2B:"h",\u0128:"I",\u0129:"i",\u012A:"I",\u012B:"i",\u012C:"I",\u012D:"i",\u012E:"I",\u012F:"i",\u0130:"I",\u0131:"i",\u0132:"IJ",\u0133:"ij",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u1E30:"K",\u1E31:"k",K\u0306:"K",k\u0306:"k",\u0139:"L",\u013A:"l",\u013B:"L",\u013C:"l",\u013D:"L",\u013E:"l",\u013F:"L",\u0140:"l",\u0141:"l",\u0142:"l",\u1E3E:"M",\u1E3F:"m",M\u0306:"M",m\u0306:"m",\u0143:"N",\u0144:"n",\u0145:"N",\u0146:"n",\u0147:"N",\u0148:"n",\u0149:"n",N\u0306:"N",n\u0306:"n",\u014C:"O",\u014D:"o",\u014E:"O",\u014F:"o",\u0150:"O",\u0151:"o",\u0152:"OE",\u0153:"oe",P\u0306:"P",p\u0306:"p",\u0154:"R",\u0155:"r",\u0156:"R",\u0157:"r",\u0158:"R",\u0159:"r",R\u0306:"R",r\u0306:"r",\u0212:"R",\u0213:"r",\u015A:"S",\u015B:"s",\u015C:"S",\u015D:"s",\u015E:"S",\u0218:"S",\u0219:"s",\u015F:"s",\u0160:"S",\u0161:"s",\u0162:"T",\u0163:"t",\u021B:"t",\u021A:"T",\u0164:"T",\u0165:"t",\u0166:"T",\u0167:"t",T\u0306:"T",t\u0306:"t",\u0168:"U",\u0169:"u",\u016A:"U",\u016B:"u",\u016C:"U",\u016D:"u",\u016E:"U",\u016F:"u",\u0170:"U",\u0171:"u",\u0172:"U",\u0173:"u",\u0216:"U",\u0217:"u",V\u0306:"V",v\u0306:"v",\u0174:"W",\u0175:"w",\u1E82:"W",\u1E83:"w",X\u0306:"X",x\u0306:"x",\u0176:"Y",\u0177:"y",\u0178:"Y",Y\u0306:"Y",y\u0306:"y",\u0179:"Z",\u017A:"z",\u017B:"Z",\u017C:"z",\u017D:"Z",\u017E:"z",\u017F:"s",\u0192:"f",\u01A0:"O",\u01A1:"o",\u01AF:"U",\u01B0:"u",\u01CD:"A",\u01CE:"a",\u01CF:"I",\u01D0:"i",\u01D1:"O",\u01D2:"o",\u01D3:"U",\u01D4:"u",\u01D5:"U",\u01D6:"u",\u01D7:"U",\u01D8:"u",\u01D9:"U",\u01DA:"u",\u01DB:"U",\u01DC:"u",\u1EE8:"U",\u1EE9:"u",\u1E78:"U",\u1E79:"u",\u01FA:"A",\u01FB:"a",\u01FC:"AE",\u01FD:"ae",\u01FE:"O",\u01FF:"o",\u00DE:"TH",\u00FE:"th",\u1E54:"P",\u1E55:"p",\u1E64:"S",\u1E65:"s",X\u0301:"X",x\u0301:"x",\u0403:"\u0413",\u0453:"\u0433",\u040C:"\u041A",\u045C:"\u043A",A\u030B:"A",a\u030B:"a",E\u030B:"E",e\u030B:"e",I\u030B:"I",i\u030B:"i",\u01F8:"N",\u01F9:"n",\u1ED2:"O",\u1ED3:"o",\u1E50:"O",\u1E51:"o",\u1EEA:"U",\u1EEB:"u",\u1E80:"W",\u1E81:"w",\u1EF2:"Y",\u1EF3:"y",\u0200:"A",\u0201:"a",\u0204:"E",\u0205:"e",\u0208:"I",\u0209:"i",\u020C:"O",\u020D:"o",\u0210:"R",\u0211:"r",\u0214:"U",\u0215:"u",B\u030C:"B",b\u030C:"b",\u010C\u0323:"C",\u010D\u0323:"c",\u00CA\u030C:"E",\u00EA\u030C:"e",F\u030C:"F",f\u030C:"f",\u01E6:"G",\u01E7:"g",\u021E:"H",\u021F:"h",J\u030C:"J",\u01F0:"j",\u01E8:"K",\u01E9:"k",M\u030C:"M",m\u030C:"m",P\u030C:"P",p\u030C:"p",Q\u030C:"Q",q\u030C:"q",\u0158\u0329:"R",\u0159\u0329:"r",\u1E66:"S",\u1E67:"s",V\u030C:"V",v\u030C:"v",W\u030C:"W",w\u030C:"w",X\u030C:"X",x\u030C:"x",Y\u030C:"Y",y\u030C:"y",A\u0327:"A",a\u0327:"a",B\u0327:"B",b\u0327:"b",\u1E10:"D",\u1E11:"d",\u0228:"E",\u0229:"e",\u0190\u0327:"E",\u025B\u0327:"e",\u1E28:"H",\u1E29:"h",I\u0327:"I",i\u0327:"i",\u0197\u0327:"I",\u0268\u0327:"i",M\u0327:"M",m\u0327:"m",O\u0327:"O",o\u0327:"o",Q\u0327:"Q",q\u0327:"q",U\u0327:"U",u\u0327:"u",X\u0327:"X",x\u0327:"x",Z\u0327:"Z",z\u0327:"z"},eu=Object.keys(Hs).join("|"),tu=new RegExp(eu,"g");function nu(e){return e.replace(tu,t=>Hs[t])}var Re={CASE_SENSITIVE_EQUAL:7,EQUAL:6,STARTS_WITH:5,WORD_STARTS_WITH:4,CONTAINS:3,ACRONYM:2,MATCHES:1,NO_MATCH:0};function Xi(e,t,n){var r;if(n=n||{},n.threshold=(r=n.threshold)!=null?r:Re.MATCHES,!n.accessors){let l=Zi(e,t,n);return{rankedValue:e,rank:l,accessorIndex:-1,accessorThreshold:n.threshold,passed:l>=n.threshold}}let o=su(e,n.accessors),i={rankedValue:e,rank:Re.NO_MATCH,accessorIndex:-1,accessorThreshold:n.threshold,passed:!1};for(let l=0;l<o.length;l++){let a=o[l],s=Zi(a.itemValue,t,n),{minRanking:c,maxRanking:d,threshold:u=n.threshold}=a.attributes;s<c&&s>=Re.MATCHES?s=c:s>d&&(s=d),s=Math.min(s,d),s>=u&&s>i.rank&&(i.rank=s,i.passed=!0,i.accessorIndex=l,i.accessorThreshold=u,i.rankedValue=a.itemValue)}return i}function Zi(e,t,n){return e=Ji(e,n),t=Ji(t,n),t.length>e.length?Re.NO_MATCH:e===t?Re.CASE_SENSITIVE_EQUAL:(e=e.toLowerCase(),t=t.toLowerCase(),e===t?Re.EQUAL:e.startsWith(t)?Re.STARTS_WITH:e.includes(` ${t}`)?Re.WORD_STARTS_WITH:e.includes(t)?Re.CONTAINS:t.length===1?Re.NO_MATCH:ru(e).includes(t)?Re.ACRONYM:ou(e,t))}function ru(e){let t="";return e.split(" ").forEach(r=>{r.split("-").forEach(i=>{t+=i.substr(0,1)})}),t}function ou(e,t){let n=0,r=0;function o(s,c,d){for(let u=d,g=c.length;u<g;u++)if(c[u]===s)return n+=1,u+1;return-1}function i(s){let c=1/s,d=n/t.length;return Re.MATCHES+d*c}let l=o(t[0],e,0);if(l<0)return Re.NO_MATCH;r=l;for(let s=1,c=t.length;s<c;s++){let d=t[s];if(r=o(d,e,r),!(r>-1))return Re.NO_MATCH}let a=r-l;return i(a)}function Ji(e,t){let{keepDiacritics:n}=t;return e=`${e}`,n||(e=nu(e)),e}function iu(e,t){let n=t;typeof t=="object"&&(n=t.accessor);let r=n(e);return r==null?[]:Array.isArray(r)?r:[String(r)]}function su(e,t){let n=[];for(let r=0,o=t.length;r<o;r++){let i=t[r],l=lu(i),a=iu(e,i);for(let s=0,c=a.length;s<c;s++)n.push({itemValue:a[s],attributes:l})}return n}var es={maxRanking:1/0,minRanking:-1/0};function lu(e){return typeof e=="function"?es:{...es,...e}}var au={data:""},cu=e=>typeof window=="object"?((e?e.querySelector("#_goober"):window._goober)||Object.assign((e||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:e||au,uu=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,du=/\/\*[^]*?\*\/| +/g,ts=/\n+/g,Ht=(e,t)=>{let n="",r="",o="";for(let i in e){let l=e[i];i[0]=="@"?i[1]=="i"?n=i+" "+l+";":r+=i[1]=="f"?Ht(l,i):i+"{"+Ht(l,i[1]=="k"?"":t)+"}":typeof l=="object"?r+=Ht(l,t?t.replace(/([^,])+/g,a=>i.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,s=>/&/.test(s)?s.replace(/&/g,a):a?a+" "+s:s)):i):l!=null&&(i=/^--/.test(i)?i:i.replace(/[A-Z]/g,"-$&").toLowerCase(),o+=Ht.p?Ht.p(i,l):i+":"+l+";")}return n+(t&&o?t+"{"+o+"}":o)+r},xt={},js=e=>{if(typeof e=="object"){let t="";for(let n in e)t+=n+js(e[n]);return t}return e},fu=(e,t,n,r,o)=>{let i=js(e),l=xt[i]||(xt[i]=(s=>{let c=0,d=11;for(;c<s.length;)d=101*d+s.charCodeAt(c++)>>>0;return"go"+d})(i));if(!xt[l]){let s=i!==e?e:(c=>{let d,u,g=[{}];for(;d=uu.exec(c.replace(du,""));)d[4]?g.shift():d[3]?(u=d[3].replace(ts," ").trim(),g.unshift(g[0][u]=g[0][u]||{})):g[0][d[1]]=d[2].replace(ts," ").trim();return g[0]})(e);xt[l]=Ht(o?{["@keyframes "+l]:s}:s,n?"":"."+l)}let a=n&&xt.g?xt.g:null;return n&&(xt.g=xt[l]),((s,c,d,u)=>{u?c.data=c.data.replace(u,s):c.data.indexOf(s)===-1&&(c.data=d?s+c.data:c.data+s)})(xt[l],t,r,a),l},gu=(e,t,n)=>e.reduce((r,o,i)=>{let l=t[i];if(l&&l.call){let a=l(n),s=a&&a.props&&a.props.className||/^go/.test(a)&&a;l=s?"."+s:a&&typeof a=="object"?a.props?"":Ht(a,""):a===!1?"":a}return r+o+(l??"")},"");function Q(e){let t=this||{},n=e.call?e(t.p):e;return fu(n.unshift?n.raw?gu(n,[].slice.call(arguments,1),t.p):n.reduce((r,o)=>Object.assign(r,o&&o.call?o(t.p):o),{}):n,cu(t.target),t.g,t.o,t.k)}Q.bind({g:1});Q.bind({k:1});function Ws(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=Ws(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function L(){for(var e,t,n=0,r="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=Ws(e))&&(r&&(r+=" "),r+=t);return r}function hu(e,t){let n=ve(e);if(De){let u=n.slice();return()=>u}let{onChange:r}=t,o=new Set(t.appear?void 0:n),i=new WeakSet,[l,a]=z([],{equals:!1}),[s]=fi(),c=u=>{a(g=>(g.push.apply(g,u),g));for(let g of u)i.delete(g)},d=(u,g,f)=>u.splice(f,0,g);return k(u=>{let g=l(),f=e();if(f[Tn],ve(s))return s(),u;if(g.length){let h=u.filter(y=>!g.includes(y));return g.length=0,r({list:h,added:[],removed:[],unchanged:h,finishRemoved:c}),h}return ve(()=>{let h=new Set(f),y=f.slice(),m=[],p=[],b=[];for(let x of f)(o.has(x)?b:m).push(x);let w=!m.length;for(let x=0;x<u.length;x++){let C=u[x];h.has(C)||(i.has(C)||(p.push(C),i.add(C)),d(y,C,x)),w&&C!==y[x]&&(w=!1)}return!p.length&&w?u:(r({list:y,added:m,removed:p,unchanged:b,finishRemoved:c}),o=h,y)})},t.appear?[]:n.slice())}function qe(...e){return Kc(e)}var ns=De?e=>e!=null&&typeof e=="object"&&"t"in e:e=>e instanceof Element;function ro(e,t){if(t(e))return e;if(typeof e=="function"&&!e.length)return ro(e(),t);if(Array.isArray(e)){let n=[];for(let r of e){let o=ro(r,t);o&&(Array.isArray(o)?n.push.apply(n,o):n.push(o))}return n.length?n:null}return null}function yu(e,t=ns,n=ns){let r=k(e),o=k(()=>ro(r(),De?n:t));return o.toArray=()=>{let i=o();return Array.isArray(i)?i:i?[i]:[]},o}function mu(e){return k(()=>{let t=e.name||"s";return{enterActive:(e.enterActiveClass||t+"-enter-active").split(" "),enter:(e.enterClass||t+"-enter").split(" "),enterTo:(e.enterToClass||t+"-enter-to").split(" "),exitActive:(e.exitActiveClass||t+"-exit-active").split(" "),exit:(e.exitClass||t+"-exit").split(" "),exitTo:(e.exitToClass||t+"-exit-to").split(" "),move:(e.moveClass||t+"-move").split(" ")}})}function Qs(e){requestAnimationFrame(()=>requestAnimationFrame(e))}function vu(e,t,n,r){let{onBeforeEnter:o,onEnter:i,onAfterEnter:l}=t;o?.(n),n.classList.add(...e.enter),n.classList.add(...e.enterActive),queueMicrotask(()=>{if(!n.parentNode)return r?.();i?.(n,()=>a())}),Qs(()=>{n.classList.remove(...e.enter),n.classList.add(...e.enterTo),(!i||i.length<2)&&(n.addEventListener("transitionend",a),n.addEventListener("animationend",a))});function a(s){(!s||s.target===n)&&(n.removeEventListener("transitionend",a),n.removeEventListener("animationend",a),n.classList.remove(...e.enterActive),n.classList.remove(...e.enterTo),l?.(n))}}function pu(e,t,n,r){let{onBeforeExit:o,onExit:i,onAfterExit:l}=t;if(!n.parentNode)return r?.();o?.(n),n.classList.add(...e.exit),n.classList.add(...e.exitActive),i?.(n,()=>a()),Qs(()=>{n.classList.remove(...e.exit),n.classList.add(...e.exitTo),(!i||i.length<2)&&(n.addEventListener("transitionend",a),n.addEventListener("animationend",a))});function a(s){(!s||s.target===n)&&(r?.(),n.removeEventListener("transitionend",a),n.removeEventListener("animationend",a),n.classList.remove(...e.exitActive),n.classList.remove(...e.exitTo),l?.(n))}}var rs=e=>{let t=mu(e);return hu(yu(()=>e.children).toArray,{appear:e.appear,onChange({added:n,removed:r,finishRemoved:o,list:i}){let l=t();for(let s of n)vu(l,e,s);let a=[];for(let s of i)s.isConnected&&(s instanceof HTMLElement||s instanceof SVGElement)&&a.push({el:s,rect:s.getBoundingClientRect()});queueMicrotask(()=>{let s=[];for(let{el:c,rect:d}of a)if(c.isConnected){let u=c.getBoundingClientRect(),g=d.left-u.left,f=d.top-u.top;(g||f)&&(c.style.transform=`translate(${g}px, ${f}px)`,c.style.transitionDuration="0s",s.push(c))}document.body.offsetHeight;for(let c of s){let d=function(u){(u.target===c||/transform$/.test(u.propertyName))&&(c.removeEventListener("transitionend",d),c.classList.remove(...l.move))};c.classList.add(...l.move),c.style.transform=c.style.transitionDuration="",c.addEventListener("transitionend",d)}});for(let s of r)pu(l,e,s,()=>o([s]))}})},Yr=Symbol("fallback");function os(e){for(let t of e)t.dispose()}function bu(e,t,n,r={}){if(De){let l=e(),a=[];if(l&&l.length)for(let s=0,c=l.length;s<c;s++)a.push(n(()=>l[s],()=>s));else r.fallback&&(a=[r.fallback()]);return()=>a}let o=new Map;return U(()=>os(o.values())),()=>{let l=e()||[];return l[Tn],ve(()=>{if(!l.length)return os(o.values()),o.clear(),r.fallback?[bt(u=>(o.set(Yr,{dispose:u}),r.fallback()))]:[];let a=new Array(l.length),s=o.get(Yr);if(!o.size||s){s?.dispose(),o.delete(Yr);for(let d=0;d<l.length;d++){let u=l[d],g=t(u,d);i(a,u,d,g)}return a}let c=new Set(o.keys());for(let d=0;d<l.length;d++){let u=l[d],g=t(u,d);c.delete(g);let f=o.get(g);f?(a[d]=f.mapped,f.setIndex?.(d),f.setItem(()=>u)):i(a,u,d,g)}for(let d of c)o.get(d)?.dispose(),o.delete(d);return a})};function i(l,a,s,c){bt(d=>{let[u,g]=z(a),f={setItem:g,dispose:d};if(n.length>1){let[h,y]=z(s);f.setIndex=y,f.mapped=n(u,h)}else f.mapped=n(u);o.set(c,f),l[s]=f.mapped})}}function vr(e){let{by:t}=e;return k(bu(()=>e.each,typeof t=="function"?t:n=>n[t],e.children,"fallback"in e?{fallback:()=>e.fallback}:void 0))}function wu(e,t,n,r){return e.addEventListener(t,n,r),Nc(e.removeEventListener.bind(e,t,n,r))}function xu(e,t,n,r){if(De)return;let o=()=>{to(A(e)).forEach(i=>{i&&to(A(t)).forEach(l=>wu(i,l,n,r))})};typeof e=="function"?B(o):K(o)}function Cu(e,t){if(De)return{observe:Wi,unobserve:Wi};let n=new ResizeObserver(e);return U(n.disconnect.bind(n)),{observe:r=>n.observe(r,t),unobserve:n.unobserve.bind(n)}}function Ys(e,t,n){if(De)return;let r=new WeakMap,{observe:o,unobserve:i}=Cu(l=>{for(let a of l){let{contentRect:s,target:c}=a,d=Math.round(s.width),u=Math.round(s.height),g=r.get(c);(!g||g.width!==d||g.height!==u)&&(t(s,c,a),r.set(c,{width:d,height:u}))}},n);B(l=>{let a=zc(to(A(e)));return Vc(a,l,o,i),a},[])}var Su=/((?:--)?(?:\w+-?)+)\s*:\s*([^;]*)/g;function is(e){let t={},n;for(;n=Su.exec(e);)t[n[1]]=n[2];return t}function $r(e,t){if(typeof e=="string"){if(typeof t=="string")return`${e};${t}`;e=is(e)}else typeof t=="string"&&(t=is(t));return{...e,...t}}function $u(e,t,n=-1){return n in e?[...e.slice(0,n),t,...e.slice(n)]:[...e,t]}function oo(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function ku(e){return typeof e=="number"}function cn(e){return Object.prototype.toString.call(e)==="[object String]"}function Eu(e){return typeof e=="function"}function Nn(e){return t=>`${e()}-${t}`}function Qe(e,t){return e?e===t||e.contains(t):!1}function Ln(e,t=!1){let{activeElement:n}=ut(e);if(!n?.nodeName)return null;if(Xs(n)&&n.contentDocument)return Ln(n.contentDocument.body,t);if(t){let r=n.getAttribute("aria-activedescendant");if(r){let o=ut(n).getElementById(r);if(o)return o}}return n}function Au(e){return ut(e).defaultView||window}function ut(e){return e?e.ownerDocument||e:document}function Xs(e){return e.tagName==="IFRAME"}var yo=(e=>(e.Escape="Escape",e.Enter="Enter",e.Tab="Tab",e.Space=" ",e.ArrowDown="ArrowDown",e.ArrowLeft="ArrowLeft",e.ArrowRight="ArrowRight",e.ArrowUp="ArrowUp",e.End="End",e.Home="Home",e.PageDown="PageDown",e.PageUp="PageUp",e))(yo||{});function mo(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.userAgentData?.platform||window.navigator.platform):!1}function kr(){return mo(/^Mac/i)}function Mu(){return mo(/^iPhone/i)}function Tu(){return mo(/^iPad/i)||kr()&&navigator.maxTouchPoints>1}function Ou(){return Mu()||Tu()}function Du(){return kr()||Ou()}function ye(e,t){return t&&(Eu(t)?t(e):t[0](t[1],e)),e?.defaultPrevented}function Ee(e){return t=>{for(let n of e)ye(t,n)}}function Iu(e){return kr()?e.metaKey&&!e.ctrlKey:e.ctrlKey&&!e.metaKey}function Pe(e){if(e)if(Pu())e.focus({preventScroll:!0});else{let t=Fu(e);e.focus(),Lu(t)}}var hr=null;function Pu(){if(hr==null){hr=!1;try{document.createElement("div").focus({get preventScroll(){return hr=!0,!0}})}catch{}}return hr}function Fu(e){let t=e.parentNode,n=[],r=document.scrollingElement||document.documentElement;for(;t instanceof HTMLElement&&t!==r;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&n.push({element:t,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}),t=t.parentNode;return r instanceof HTMLElement&&n.push({element:r,scrollTop:r.scrollTop,scrollLeft:r.scrollLeft}),n}function Lu(e){for(let{element:t,scrollTop:n,scrollLeft:r}of e)t.scrollTop=n,t.scrollLeft=r}var Zs=["input:not([type='hidden']):not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","a[href]","area[href]","[tabindex]","iframe","object","embed","audio[controls]","video[controls]","[contenteditable]:not([contenteditable='false'])"],qu=[...Zs,'[tabindex]:not([tabindex="-1"]):not([disabled])'],vo=Zs.join(":not([hidden]),")+",[tabindex]:not([disabled]):not([hidden])",_u=qu.join(':not([hidden]):not([tabindex="-1"]),');function Js(e,t){let r=Array.from(e.querySelectorAll(vo)).filter(ss);return t&&ss(e)&&r.unshift(e),r.forEach((o,i)=>{if(Xs(o)&&o.contentDocument){let l=o.contentDocument.body,a=Js(l,!1);r.splice(i,1,...a)}}),r}function ss(e){return el(e)&&!Ru(e)}function el(e){return e.matches(vo)&&po(e)}function Ru(e){return parseInt(e.getAttribute("tabindex")||"0",10)<0}function po(e,t){return e.nodeName!=="#comment"&&zu(e)&&Ku(e,t)&&(!e.parentElement||po(e.parentElement,e))}function zu(e){if(!(e instanceof HTMLElement)&&!(e instanceof SVGElement))return!1;let{display:t,visibility:n}=e.style,r=t!=="none"&&n!=="hidden"&&n!=="collapse";if(r){if(!e.ownerDocument.defaultView)return r;let{getComputedStyle:o}=e.ownerDocument.defaultView,{display:i,visibility:l}=o(e);r=i!=="none"&&l!=="hidden"&&l!=="collapse"}return r}function Ku(e,t){return!e.hasAttribute("hidden")&&(e.nodeName==="DETAILS"&&t&&t.nodeName!=="SUMMARY"?e.hasAttribute("open"):!0)}function Bu(e,t,n){let r=t?.tabbable?_u:vo,o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode(i){return t?.from?.contains(i)?NodeFilter.FILTER_REJECT:i.matches(r)&&po(i)&&(!t?.accept||t.accept(i))?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});return t?.from&&(o.currentNode=t.from),o}function ls(e){for(;e&&!Nu(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}function Nu(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function Vu(){}function Uu(e,t){let[n,r]=e,o=!1,i=t.length;for(let l=i,a=0,s=l-1;a<l;s=a++){let[c,d]=t[a],[u,g]=t[s],[,f]=t[s===0?l-1:s-1]||[0,0],h=(d-g)*(n-c)-(c-u)*(r-d);if(g<d){if(r>=g&&r<d){if(h===0)return!0;h>0&&(r===g?r>f&&(o=!o):o=!o)}}else if(d<g){if(r>d&&r<=g){if(h===0)return!0;h<0&&(r===g?r<f&&(o=!o):o=!o)}}else if(r==d&&(n>=u&&n<=c||n>=c&&n<=u))return!0}return o}function J(e,t){return W(e,t)}var In=new Map,as=new Set;function cs(){if(typeof window>"u")return;let e=n=>{if(!n.target)return;let r=In.get(n.target);r||(r=new Set,In.set(n.target,r),n.target.addEventListener("transitioncancel",t)),r.add(n.propertyName)},t=n=>{if(!n.target)return;let r=In.get(n.target);if(r&&(r.delete(n.propertyName),r.size===0&&(n.target.removeEventListener("transitioncancel",t),In.delete(n.target)),In.size===0)){for(let o of as)o();as.clear()}};document.body.addEventListener("transitionrun",e),document.body.addEventListener("transitionend",t)}typeof document<"u"&&(document.readyState!=="loading"?cs():document.addEventListener("DOMContentLoaded",cs));function io(e,t){let n=us(e,t,"left"),r=us(e,t,"top"),o=t.offsetWidth,i=t.offsetHeight,l=e.scrollLeft,a=e.scrollTop,s=l+e.offsetWidth,c=a+e.offsetHeight;n<=l?l=n:n+o>s&&(l+=n+o-s),r<=a?a=r:r+i>c&&(a+=r+i-c),e.scrollLeft=l,e.scrollTop=a}function us(e,t,n){let r=n==="left"?"offsetLeft":"offsetTop",o=0;for(;t.offsetParent&&(o+=t[r],t.offsetParent!==e);){if(t.offsetParent.contains(e)){o-=e[r];break}t=t.offsetParent}return o}function Gu(e,t){if(document.contains(e)){let n=document.scrollingElement||document.documentElement;if(window.getComputedStyle(n).overflow==="hidden"){let o=ls(e);for(;e&&o&&e!==n&&o!==n;)io(o,e),e=o,o=ls(e)}else{let{left:o,top:i}=e.getBoundingClientRect();e?.scrollIntoView?.({block:"nearest"});let{left:l,top:a}=e.getBoundingClientRect();(Math.abs(o-l)>1||Math.abs(i-a)>1)&&e.scrollIntoView?.({block:"nearest"})}}}var tl={border:"0",clip:"rect(0 0 0 0)","clip-path":"inset(50%)",height:"1px",margin:"0 -1px -1px 0",overflow:"hidden",padding:"0",position:"absolute",width:"1px","white-space":"nowrap"};function Ye(e){return t=>(e(t),()=>e(void 0))}function Er(e,t){let[n,r]=z(ds(t?.()));return B(()=>{r(e()?.tagName.toLowerCase()||ds(t?.()))}),n}function ds(e){return cn(e)?e:void 0}function me(e){let[t,n]=ee(e,["as"]);if(!t.as)throw new Error("[kobalte]: Polymorphic is missing the required `as` prop.");return v(Ai,W(n,{get component(){return t.as}}))}var Hu=["id","name","validationState","required","disabled","readOnly"];function ju(e){let t=`form-control-${Ke()}`,n=J({id:t},e),[r,o]=z(),[i,l]=z(),[a,s]=z(),[c,d]=z(),u=(y,m,p)=>{let b=p!=null||r()!=null;return[p,r(),b&&m!=null?y:void 0].filter(Boolean).join(" ")||void 0},g=y=>[a(),c(),y].filter(Boolean).join(" ")||void 0,f=k(()=>({"data-valid":A(n.validationState)==="valid"?"":void 0,"data-invalid":A(n.validationState)==="invalid"?"":void 0,"data-required":A(n.required)?"":void 0,"data-disabled":A(n.disabled)?"":void 0,"data-readonly":A(n.readOnly)?"":void 0}));return{formControlContext:{name:()=>A(n.name)??A(n.id),dataset:f,validationState:()=>A(n.validationState),isRequired:()=>A(n.required),isDisabled:()=>A(n.disabled),isReadOnly:()=>A(n.readOnly),labelId:r,fieldId:i,descriptionId:a,errorMessageId:c,getAriaLabelledBy:u,getAriaDescribedBy:g,generateId:Nn(()=>A(n.id)),registerLabel:Ye(o),registerField:Ye(l),registerDescription:Ye(s),registerErrorMessage:Ye(d)}}}var nl=ke();function Vn(){let e=Se(nl);if(e===void 0)throw new Error("[kobalte]: `useFormControlContext` must be used within a `FormControlContext.Provider` component");return e}function rl(e){let t=Vn(),n=J({id:t.generateId("description")},e);return B(()=>U(t.registerDescription(n.id))),v(me,W({as:"div"},()=>t.dataset(),n))}function ol(e){let t=Vn(),n=J({id:t.generateId("error-message")},e),[r,o]=ee(n,["forceMount"]),i=()=>t.validationState()==="invalid";return B(()=>{i()&&U(t.registerErrorMessage(o.id))}),v(N,{get when(){return r.forceMount||i()},get children(){return v(me,W({as:"div"},()=>t.dataset(),o))}})}function Wu(e){let t,n=Vn(),r=J({id:n.generateId("label")},e),[o,i]=ee(r,["ref"]),l=Er(()=>t,()=>"label");return B(()=>U(n.registerLabel(i.id))),v(me,W({as:"label",ref(a){let s=qe(c=>t=c,o.ref);typeof s=="function"&&s(a)},get for(){return k(()=>l()==="label")()?n.fieldId():void 0}},()=>n.dataset(),i))}function Qu(e,t){B(at(e,n=>{if(n==null)return;let r=Yu(n);r!=null&&(r.addEventListener("reset",t,{passive:!0}),U(()=>{r.removeEventListener("reset",t)}))}))}function Yu(e){return Xu(e)?e.form:e.closest("form")}function Xu(e){return e.matches("textarea, input, select, button")}function Un(e){let[t,n]=z(e.defaultValue?.()),r=k(()=>e.value?.()!==void 0),o=k(()=>r()?e.value?.():t());return[o,l=>{ve(()=>{let a=Bc(l,o());return Object.is(a,o())||(r()||n(a),e.onChange?.(a)),a})}]}function il(e){let[t,n]=Un(e);return[()=>t()??!1,n]}function Zu(e){let[t,n]=Un(e);return[()=>t()??[],n]}function Ju(e={}){let[t,n]=il({value:()=>A(e.isSelected),defaultValue:()=>!!A(e.defaultIsSelected),onChange:i=>e.onSelectedChange?.(i)});return{isSelected:t,setIsSelected:i=>{!A(e.isReadOnly)&&!A(e.isDisabled)&&n(i)},toggle:()=>{!A(e.isReadOnly)&&!A(e.isDisabled)&&n(!t())}}}var ed=Object.defineProperty,Ar=(e,t)=>{for(var n in t)ed(e,n,{get:t[n],enumerable:!0})},sl=ke();function ll(){return Se(sl)}function td(){let e=ll();if(e===void 0)throw new Error("[kobalte]: `useDomCollectionContext` must be used within a `DomCollectionProvider` component");return e}function al(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}function nd(e,t){let n=t.ref();if(!n)return-1;let r=e.length;if(!r)return-1;for(;r--;){let o=e[r]?.ref();if(o&&al(o,n))return r+1}return 0}function rd(e){let t=e.map((r,o)=>[o,r]),n=!1;return t.sort(([r,o],[i,l])=>{let a=o.ref(),s=l.ref();return a===s||!a||!s?0:al(a,s)?(r>i&&(n=!0),-1):(r<i&&(n=!0),1)}),n?t.map(([r,o])=>o):e}function cl(e,t){let n=rd(e);e!==n&&t(n)}function od(e){let t=e[0],n=e[e.length-1]?.ref(),r=t?.ref()?.parentElement;for(;r;){if(n&&r.contains(n))return r;r=r.parentElement}return ut(r).body}function id(e,t){B(()=>{let n=setTimeout(()=>{cl(e(),t)});U(()=>clearTimeout(n))})}function sd(e,t){if(typeof IntersectionObserver!="function"){id(e,t);return}let n=[];B(()=>{let r=()=>{let l=!!n.length;n=e(),l&&cl(e(),t)},o=od(e()),i=new IntersectionObserver(r,{root:o});for(let l of e()){let a=l.ref();a&&i.observe(a)}U(()=>i.disconnect())})}function ld(e={}){let[t,n]=Zu({value:()=>A(e.items),onChange:i=>e.onItemsChange?.(i)});sd(t,n);let r=i=>(n(l=>{let a=nd(l,i);return $u(l,i,a)}),()=>{n(l=>{let a=l.filter(s=>s.ref()!==i.ref());return l.length===a.length?l:a})});return{DomCollectionProvider:i=>v(sl.Provider,{value:{registerItem:r},get children(){return i.children}})}}function ad(e){let t=td(),n=J({shouldRegisterItem:!0},e);B(()=>{if(!n.shouldRegisterItem)return;let r=t.registerItem(n.getItem());U(r)})}function ul(e){let t=e.startIndex??0,n=e.startLevel??0,r=[],o=s=>{if(s==null)return"";let c=e.getKey??"key",d=cn(c)?s[c]:c(s);return d!=null?String(d):""},i=s=>{if(s==null)return"";let c=e.getTextValue??"textValue",d=cn(c)?s[c]:c(s);return d!=null?String(d):""},l=s=>{if(s==null)return!1;let c=e.getDisabled??"disabled";return(cn(c)?s[c]:c(s))??!1},a=s=>{if(s!=null)return cn(e.getSectionChildren)?s[e.getSectionChildren]:e.getSectionChildren?.(s)};for(let s of e.dataSource){if(cn(s)||ku(s)){r.push({type:"item",rawValue:s,key:String(s),textValue:String(s),disabled:l(s),level:n,index:t}),t++;continue}if(a(s)!=null){r.push({type:"section",rawValue:s,key:"",textValue:"",disabled:!1,level:n,index:t}),t++;let c=a(s)??[];if(c.length>0){let d=ul({dataSource:c,getKey:e.getKey,getTextValue:e.getTextValue,getDisabled:e.getDisabled,getSectionChildren:e.getSectionChildren,startIndex:t,startLevel:n+1});r.push(...d),t+=d.length}}else r.push({type:"item",rawValue:s,key:o(s),textValue:i(s),disabled:l(s),level:n,index:t}),t++}return r}function cd(e,t=[]){return k(()=>{let n=ul({dataSource:A(e.dataSource),getKey:A(e.getKey),getTextValue:A(e.getTextValue),getDisabled:A(e.getDisabled),getSectionChildren:A(e.getSectionChildren)});for(let r=0;r<t.length;r++)t[r]();return e.factory(n)})}var ud=new Set(["Avst","Arab","Armi","Syrc","Samr","Mand","Thaa","Mend","Nkoo","Adlm","Rohg","Hebr"]),dd=new Set(["ae","ar","arc","bcc","bqi","ckb","dv","fa","glk","he","ku","mzn","nqo","pnb","ps","sd","ug","ur","yi"]);function fd(e){if(Intl.Locale){let n=new Intl.Locale(e).maximize().script??"";return ud.has(n)}let t=e.split("-")[0];return dd.has(t)}function gd(e){return fd(e)?"rtl":"ltr"}function dl(){let e=typeof navigator<"u"&&(navigator.language||navigator.userLanguage)||"en-US";return{locale:e,direction:gd(e)}}var so=dl(),qn=new Set;function fs(){so=dl();for(let e of qn)e(so)}function hd(){let e={locale:"en-US",direction:"ltr"},[t,n]=z(so),r=k(()=>De?e:t());return wt(()=>{qn.size===0&&window.addEventListener("languagechange",fs),qn.add(n),U(()=>{qn.delete(n),qn.size===0&&window.removeEventListener("languagechange",fs)})}),{locale:()=>r().locale,direction:()=>r().direction}}var yd=ke();function Rt(){let e=hd();return Se(yd)||e}var Xr=new Map;function md(e){let{locale:t}=Rt(),n=k(()=>t()+(e?Object.entries(e).sort((r,o)=>r[0]<o[0]?-1:1).join():""));return k(()=>{let r=n(),o;return Xr.has(r)&&(o=Xr.get(r)),o||(o=new Intl.Collator(t(),e),Xr.set(r,o)),o})}var Ct=class fl extends Set{anchorKey;currentKey;constructor(t,n,r){super(t),t instanceof fl?(this.anchorKey=n||t.anchorKey,this.currentKey=r||t.currentKey):(this.anchorKey=n,this.currentKey=r)}};function vd(e){let[t,n]=Un(e);return[()=>t()??new Ct,n]}function gl(e){return Du()?e.altKey:e.ctrlKey}function un(e){return kr()?e.metaKey:e.ctrlKey}function gs(e){return new Ct(e)}function pd(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function bd(e){let t=J({selectionMode:"none",selectionBehavior:"toggle"},e),[n,r]=z(!1),[o,i]=z(),l=k(()=>{let y=A(t.selectedKeys);return y!=null?gs(y):y}),a=k(()=>{let y=A(t.defaultSelectedKeys);return y!=null?gs(y):new Ct}),[s,c]=vd({value:l,defaultValue:a,onChange:y=>t.onSelectionChange?.(y)}),[d,u]=z(A(t.selectionBehavior)),g=()=>A(t.selectionMode),f=()=>A(t.disallowEmptySelection)??!1,h=y=>{(A(t.allowDuplicateSelectionEvents)||!pd(y,s()))&&c(y)};return B(()=>{let y=s();A(t.selectionBehavior)==="replace"&&d()==="toggle"&&typeof y=="object"&&y.size===0&&u("replace")}),B(()=>{u(A(t.selectionBehavior)??"toggle")}),{selectionMode:g,disallowEmptySelection:f,selectionBehavior:d,setSelectionBehavior:u,isFocused:n,setFocused:r,focusedKey:o,setFocusedKey:i,selectedKeys:s,setSelectedKeys:h}}function wd(e){let[t,n]=z(""),[r,o]=z(-1);return{typeSelectHandlers:{onKeyDown:l=>{if(A(e.isDisabled))return;let a=A(e.keyboardDelegate),s=A(e.selectionManager);if(!a.getKeyForSearch)return;let c=xd(l.key);if(!c||l.ctrlKey||l.metaKey)return;c===" "&&t().trim().length>0&&(l.preventDefault(),l.stopPropagation());let d=n(g=>g+c),u=a.getKeyForSearch(d,s.focusedKey())??a.getKeyForSearch(d);u==null&&Cd(d)&&(d=d[0],u=a.getKeyForSearch(d,s.focusedKey())??a.getKeyForSearch(d)),u!=null&&(s.setFocusedKey(u),e.onTypeSelect?.(u)),clearTimeout(r()),o(window.setTimeout(()=>n(""),500))}}}}function xd(e){return e.length===1||!/^[A-Z]/i.test(e)?e:""}function Cd(e){return e.split("").every(t=>t===e[0])}function Sd(e,t,n){let o=W({selectOnFocus:()=>A(e.selectionManager).selectionBehavior()==="replace"},e),i=()=>t(),{direction:l}=Rt(),a={top:0,left:0};xu(()=>A(o.isVirtualized)?void 0:i(),"scroll",()=>{let m=i();m&&(a={top:m.scrollTop,left:m.scrollLeft})});let{typeSelectHandlers:s}=wd({isDisabled:()=>A(o.disallowTypeAhead),keyboardDelegate:()=>A(o.keyboardDelegate),selectionManager:()=>A(o.selectionManager)}),c=()=>A(o.orientation)??"vertical",d=m=>{ye(m,s.onKeyDown),m.altKey&&m.key==="Tab"&&m.preventDefault();let p=t();if(!p?.contains(m.target))return;let b=A(o.selectionManager),w=A(o.selectOnFocus),x=F=>{F!=null&&(b.setFocusedKey(F),m.shiftKey&&b.selectionMode()==="multiple"?b.extendSelection(F):w&&!gl(m)&&b.replaceSelection(F))},C=A(o.keyboardDelegate),P=A(o.shouldFocusWrap),D=b.focusedKey();switch(m.key){case(c()==="vertical"?"ArrowDown":"ArrowRight"):{if(C.getKeyBelow){m.preventDefault();let F;D!=null?F=C.getKeyBelow(D):F=C.getFirstKey?.(),F==null&&P&&(F=C.getFirstKey?.(D)),x(F)}break}case(c()==="vertical"?"ArrowUp":"ArrowLeft"):{if(C.getKeyAbove){m.preventDefault();let F;D!=null?F=C.getKeyAbove(D):F=C.getLastKey?.(),F==null&&P&&(F=C.getLastKey?.(D)),x(F)}break}case(c()==="vertical"?"ArrowLeft":"ArrowUp"):{if(C.getKeyLeftOf){m.preventDefault();let F=l()==="rtl",$;D!=null?$=C.getKeyLeftOf(D):$=F?C.getFirstKey?.():C.getLastKey?.(),x($)}break}case(c()==="vertical"?"ArrowRight":"ArrowDown"):{if(C.getKeyRightOf){m.preventDefault();let F=l()==="rtl",$;D!=null?$=C.getKeyRightOf(D):$=F?C.getLastKey?.():C.getFirstKey?.(),x($)}break}case"Home":if(C.getFirstKey){m.preventDefault();let F=C.getFirstKey(D,un(m));F!=null&&(b.setFocusedKey(F),un(m)&&m.shiftKey&&b.selectionMode()==="multiple"?b.extendSelection(F):w&&b.replaceSelection(F))}break;case"End":if(C.getLastKey){m.preventDefault();let F=C.getLastKey(D,un(m));F!=null&&(b.setFocusedKey(F),un(m)&&m.shiftKey&&b.selectionMode()==="multiple"?b.extendSelection(F):w&&b.replaceSelection(F))}break;case"PageDown":if(C.getKeyPageBelow&&D!=null){m.preventDefault();let F=C.getKeyPageBelow(D);x(F)}break;case"PageUp":if(C.getKeyPageAbove&&D!=null){m.preventDefault();let F=C.getKeyPageAbove(D);x(F)}break;case"a":un(m)&&b.selectionMode()==="multiple"&&A(o.disallowSelectAll)!==!0&&(m.preventDefault(),b.selectAll());break;case"Escape":m.defaultPrevented||(m.preventDefault(),A(o.disallowEmptySelection)||b.clearSelection());break;case"Tab":if(!A(o.allowsTabNavigation)){if(m.shiftKey)p.focus();else{let F=Bu(p,{tabbable:!0}),$,q;do q=F.lastChild(),q&&($=q);while(q);$&&!$.contains(document.activeElement)&&Pe($)}break}}},u=m=>{let p=A(o.selectionManager),b=A(o.keyboardDelegate),w=A(o.selectOnFocus);if(p.isFocused()){m.currentTarget.contains(m.target)||p.setFocused(!1);return}if(m.currentTarget.contains(m.target)){if(p.setFocused(!0),p.focusedKey()==null){let x=P=>{P!=null&&(p.setFocusedKey(P),w&&p.replaceSelection(P))},C=m.relatedTarget;C&&m.currentTarget.compareDocumentPosition(C)&Node.DOCUMENT_POSITION_FOLLOWING?x(p.lastSelectedKey()??b.getLastKey?.()):x(p.firstSelectedKey()??b.getFirstKey?.())}else if(!A(o.isVirtualized)){let x=i();if(x){x.scrollTop=a.top,x.scrollLeft=a.left;let C=x.querySelector(`[data-key="${p.focusedKey()}"]`);C&&(Pe(C),io(x,C))}}}},g=m=>{let p=A(o.selectionManager);m.currentTarget.contains(m.relatedTarget)||p.setFocused(!1)},f=m=>{i()===m.target&&m.preventDefault()},h=()=>{let m=A(o.autoFocus);if(!m)return;let p=A(o.selectionManager),b=A(o.keyboardDelegate),w;m==="first"&&(w=b.getFirstKey?.()),m==="last"&&(w=b.getLastKey?.());let x=p.selectedKeys();x.size&&(w=x.values().next().value),p.setFocused(!0),p.setFocusedKey(w);let C=t();C&&w==null&&!A(o.shouldUseVirtualFocus)&&Pe(C)};return wt(()=>{o.deferAutoFocus?setTimeout(h,0):h()}),B(at([i,()=>A(o.isVirtualized),()=>A(o.selectionManager).focusedKey()],m=>{let[p,b,w]=m;if(b)w&&o.scrollToKey?.(w);else if(w&&p){let x=p.querySelector(`[data-key="${w}"]`);x&&io(p,x)}})),{tabIndex:k(()=>{if(!A(o.shouldUseVirtualFocus))return A(o.selectionManager).focusedKey()==null?0:-1}),onKeyDown:d,onMouseDown:f,onFocusIn:u,onFocusOut:g}}function hl(e,t){let n=()=>A(e.selectionManager),r=()=>A(e.key),o=()=>A(e.shouldUseVirtualFocus),i=b=>{n().selectionMode()!=="none"&&(n().selectionMode()==="single"?n().isSelected(r())&&!n().disallowEmptySelection()?n().toggleSelection(r()):n().replaceSelection(r()):b?.shiftKey?n().extendSelection(r()):n().selectionBehavior()==="toggle"||un(b)||"pointerType"in b&&b.pointerType==="touch"?n().toggleSelection(r()):n().replaceSelection(r()))},l=()=>n().isSelected(r()),a=()=>A(e.disabled)||n().isDisabled(r()),s=()=>!a()&&n().canSelectItem(r()),c=null,d=b=>{s()&&(c=b.pointerType,b.pointerType==="mouse"&&b.button===0&&!A(e.shouldSelectOnPressUp)&&i(b))},u=b=>{s()&&b.pointerType==="mouse"&&b.button===0&&A(e.shouldSelectOnPressUp)&&A(e.allowsDifferentPressOrigin)&&i(b)},g=b=>{s()&&(A(e.shouldSelectOnPressUp)&&!A(e.allowsDifferentPressOrigin)||c!=="mouse")&&i(b)},f=b=>{!s()||!["Enter"," "].includes(b.key)||(gl(b)?n().toggleSelection(r()):i(b))},h=b=>{a()&&b.preventDefault()},y=b=>{let w=t();o()||a()||!w||b.target===w&&n().setFocusedKey(r())},m=k(()=>{if(!(o()||a()))return r()===n().focusedKey()?0:-1}),p=k(()=>A(e.virtualized)?void 0:r());return B(at([t,r,o,()=>n().focusedKey(),()=>n().isFocused()],([b,w,x,C,P])=>{b&&w===C&&P&&!x&&document.activeElement!==b&&(e.focus?e.focus():Pe(b))})),{isSelected:l,isDisabled:a,allowsSelection:s,tabIndex:m,dataKey:p,onPointerDown:d,onPointerUp:u,onClick:g,onKeyDown:f,onMouseDown:h,onFocus:y}}var $d=class{collection;state;constructor(e,t){this.collection=e,this.state=t}selectionMode(){return this.state.selectionMode()}disallowEmptySelection(){return this.state.disallowEmptySelection()}selectionBehavior(){return this.state.selectionBehavior()}setSelectionBehavior(e){this.state.setSelectionBehavior(e)}isFocused(){return this.state.isFocused()}setFocused(e){this.state.setFocused(e)}focusedKey(){return this.state.focusedKey()}setFocusedKey(e){(e==null||this.collection().getItem(e))&&this.state.setFocusedKey(e)}selectedKeys(){return this.state.selectedKeys()}isSelected(e){if(this.state.selectionMode()==="none")return!1;let t=this.getKey(e);return t==null?!1:this.state.selectedKeys().has(t)}isEmpty(){return this.state.selectedKeys().size===0}isSelectAll(){if(this.isEmpty())return!1;let e=this.state.selectedKeys();return this.getAllSelectableKeys().every(t=>e.has(t))}firstSelectedKey(){let e;for(let t of this.state.selectedKeys()){let n=this.collection().getItem(t),r=n?.index!=null&&e?.index!=null&&n.index<e.index;(!e||r)&&(e=n)}return e?.key}lastSelectedKey(){let e;for(let t of this.state.selectedKeys()){let n=this.collection().getItem(t),r=n?.index!=null&&e?.index!=null&&n.index>e.index;(!e||r)&&(e=n)}return e?.key}extendSelection(e){if(this.selectionMode()==="none")return;if(this.selectionMode()==="single"){this.replaceSelection(e);return}let t=this.getKey(e);if(t==null)return;let n=this.state.selectedKeys(),r=n.anchorKey||t,o=new Ct(n,r,t);for(let i of this.getKeyRange(r,n.currentKey||t))o.delete(i);for(let i of this.getKeyRange(t,r))this.canSelectItem(i)&&o.add(i);this.state.setSelectedKeys(o)}getKeyRange(e,t){let n=this.collection().getItem(e),r=this.collection().getItem(t);return n&&r?n.index!=null&&r.index!=null&&n.index<=r.index?this.getKeyRangeInternal(e,t):this.getKeyRangeInternal(t,e):[]}getKeyRangeInternal(e,t){let n=[],r=e;for(;r!=null;){let o=this.collection().getItem(r);if(o&&o.type==="item"&&n.push(r),r===t)return n;r=this.collection().getKeyAfter(r)}return[]}getKey(e){let t=this.collection().getItem(e);return t?!t||t.type!=="item"?null:t.key:e}toggleSelection(e){if(this.selectionMode()==="none")return;if(this.selectionMode()==="single"&&!this.isSelected(e)){this.replaceSelection(e);return}let t=this.getKey(e);if(t==null)return;let n=new Ct(this.state.selectedKeys());n.has(t)?n.delete(t):this.canSelectItem(t)&&(n.add(t),n.anchorKey=t,n.currentKey=t),!(this.disallowEmptySelection()&&n.size===0)&&this.state.setSelectedKeys(n)}replaceSelection(e){if(this.selectionMode()==="none")return;let t=this.getKey(e);if(t==null)return;let n=this.canSelectItem(t)?new Ct([t],t,t):new Ct;this.state.setSelectedKeys(n)}setSelectedKeys(e){if(this.selectionMode()==="none")return;let t=new Ct;for(let n of e){let r=this.getKey(n);if(r!=null&&(t.add(r),this.selectionMode()==="single"))break}this.state.setSelectedKeys(t)}selectAll(){this.selectionMode()==="multiple"&&this.state.setSelectedKeys(new Set(this.getAllSelectableKeys()))}clearSelection(){let e=this.state.selectedKeys();!this.disallowEmptySelection()&&e.size>0&&this.state.setSelectedKeys(new Ct)}toggleSelectAll(){this.isSelectAll()?this.clearSelection():this.selectAll()}select(e,t){this.selectionMode()!=="none"&&(this.selectionMode()==="single"?this.isSelected(e)&&!this.disallowEmptySelection()?this.toggleSelection(e):this.replaceSelection(e):this.selectionBehavior()==="toggle"||t&&t.pointerType==="touch"?this.toggleSelection(e):this.replaceSelection(e))}isSelectionEqual(e){if(e===this.state.selectedKeys())return!0;let t=this.selectedKeys();if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;for(let n of t)if(!e.has(n))return!1;return!0}canSelectItem(e){if(this.state.selectionMode()==="none")return!1;let t=this.collection().getItem(e);return t!=null&&!t.disabled}isDisabled(e){let t=this.collection().getItem(e);return!t||t.disabled}getAllSelectableKeys(){let e=[];return(n=>{for(;n!=null;){if(this.canSelectItem(n)){let r=this.collection().getItem(n);if(!r)continue;r.type==="item"&&e.push(n)}n=this.collection().getKeyAfter(n)}})(this.collection().getFirstKey()),e}},hs=class{keyMap=new Map;iterable;firstKey;lastKey;constructor(e){this.iterable=e;for(let r of e)this.keyMap.set(r.key,r);if(this.keyMap.size===0)return;let t,n=0;for(let[r,o]of this.keyMap)t?(t.nextKey=r,o.prevKey=t.key):(this.firstKey=r,o.prevKey=void 0),o.type==="item"&&(o.index=n++),t=o,t.nextKey=void 0;this.lastKey=t.key}*[Symbol.iterator](){yield*this.iterable}getSize(){return this.keyMap.size}getKeys(){return this.keyMap.keys()}getKeyBefore(e){return this.keyMap.get(e)?.prevKey}getKeyAfter(e){return this.keyMap.get(e)?.nextKey}getFirstKey(){return this.firstKey}getLastKey(){return this.lastKey}getItem(e){return this.keyMap.get(e)}at(e){let t=[...this.getKeys()];return this.getItem(t[e])}};function kd(e){let t=bd(e),r=cd({dataSource:()=>A(e.dataSource),getKey:()=>A(e.getKey),getTextValue:()=>A(e.getTextValue),getDisabled:()=>A(e.getDisabled),getSectionChildren:()=>A(e.getSectionChildren),factory:i=>e.filter?new hs(e.filter(i)):new hs(i)},[()=>e.filter]),o=new $d(r,t);return ci(()=>{let i=t.focusedKey();i!=null&&!r().getItem(i)&&t.setFocusedKey(void 0)}),{collection:r,selectionManager:()=>o}}var Ie=e=>typeof e=="function"?e():e,Ed=e=>{let t=k(()=>{let l=Ie(e.element);if(l)return getComputedStyle(l)}),n=()=>t()?.animationName??"none",[r,o]=z(Ie(e.show)?"present":"hidden"),i="none";return B(l=>{let a=Ie(e.show);return ve(()=>{if(l===a)return a;let s=i,c=n();a?o("present"):c==="none"||t()?.display==="none"?o("hidden"):o(l===!0&&s!==c?"hiding":"hidden")}),a}),B(()=>{let l=Ie(e.element);if(!l)return;let a=c=>{c.target===l&&(i=n())},s=c=>{let u=n().includes(c.animationName);c.target===l&&u&&r()==="hiding"&&o("hidden")};l.addEventListener("animationstart",a),l.addEventListener("animationcancel",s),l.addEventListener("animationend",s),U(()=>{l.removeEventListener("animationstart",a),l.removeEventListener("animationcancel",s),l.removeEventListener("animationend",s)})}),{present:()=>r()==="present"||r()==="hiding",state:r}},Ad=Ed,yl=Ad,pr="data-kb-top-layer",ml,lo=!1,$t=[];function Rn(e){return $t.findIndex(t=>t.node===e)}function Md(e){return $t[Rn(e)]}function Td(e){return $t[$t.length-1].node===e}function vl(){return $t.filter(e=>e.isPointerBlocking)}function Od(){return[...vl()].slice(-1)[0]}function bo(){return vl().length>0}function pl(e){let t=Rn(Od()?.node);return Rn(e)<t}function Dd(e){$t.push(e)}function Id(e){let t=Rn(e);t<0||$t.splice(t,1)}function Pd(){for(let{node:e}of $t)e.style.pointerEvents=pl(e)?"none":"auto"}function Fd(e){if(bo()&&!lo){let t=ut(e);ml=document.body.style.pointerEvents,t.body.style.pointerEvents="none",lo=!0}}function Ld(e){if(bo())return;let t=ut(e);t.body.style.pointerEvents=ml,t.body.style.length===0&&t.body.removeAttribute("style"),lo=!1}var Be={layers:$t,isTopMostLayer:Td,hasPointerBlockingLayer:bo,isBelowPointerBlockingLayer:pl,addLayer:Dd,removeLayer:Id,indexOf:Rn,find:Md,assignPointerEventToLayers:Pd,disableBodyPointerEvents:Fd,restoreBodyPointerEvents:Ld},qd={};Ar(qd,{Button:()=>zd,Root:()=>wo});var _d=["button","color","file","image","reset","submit"];function Rd(e){let t=e.tagName.toLowerCase();return t==="button"?!0:t==="input"&&e.type?_d.indexOf(e.type)!==-1:!1}function wo(e){let t,n=J({type:"button"},e),[r,o]=ee(n,["ref","type","disabled"]),i=Er(()=>t,()=>"button"),l=k(()=>{let c=i();return c==null?!1:Rd({tagName:c,type:r.type})}),a=k(()=>i()==="input"),s=k(()=>i()==="a"&&t?.getAttribute("href")!=null);return v(me,W({as:"button",ref(c){let d=qe(u=>t=u,r.ref);typeof d=="function"&&d(c)},get type(){return l()||a()?r.type:void 0},get role(){return!l()&&!s()?"button":void 0},get tabIndex(){return!l()&&!s()&&!r.disabled?0:void 0},get disabled(){return l()||a()?r.disabled:void 0},get"aria-disabled"(){return!l()&&!a()&&r.disabled?!0:void 0},get"data-disabled"(){return r.disabled?"":void 0}},o))}var zd=wo,Kd=["top","right","bottom","left"],ct=Math.min,Ve=Math.max,br=Math.round,yr=Math.floor,Lt=e=>({x:e,y:e}),Bd={left:"right",right:"left",bottom:"top",top:"bottom"},Nd={start:"end",end:"start"};function ao(e,t,n){return Ve(e,ct(t,n))}function Yt(e,t){return typeof e=="function"?e(t):e}function qt(e){return e.split("-")[0]}function gn(e){return e.split("-")[1]}function bl(e){return e==="x"?"y":"x"}function xo(e){return e==="y"?"height":"width"}function Wt(e){return["top","bottom"].includes(qt(e))?"y":"x"}function Co(e){return bl(Wt(e))}function Vd(e,t,n){n===void 0&&(n=!1);let r=gn(e),o=Co(e),i=xo(o),l=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(l=wr(l)),[l,wr(l)]}function Ud(e){let t=wr(e);return[co(e),t,co(t)]}function co(e){return e.replace(/start|end/g,t=>Nd[t])}function Gd(e,t,n){let r=["left","right"],o=["right","left"],i=["top","bottom"],l=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?i:l;default:return[]}}function Hd(e,t,n,r){let o=gn(e),i=Gd(qt(e),n==="start",r);return o&&(i=i.map(l=>l+"-"+o),t&&(i=i.concat(i.map(co)))),i}function wr(e){return e.replace(/left|right|bottom|top/g,t=>Bd[t])}function jd(e){return{top:0,right:0,bottom:0,left:0,...e}}function wl(e){return typeof e!="number"?jd(e):{top:e,right:e,bottom:e,left:e}}function xr(e){let{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function ys(e,t,n){let{reference:r,floating:o}=e,i=Wt(t),l=Co(t),a=xo(l),s=qt(t),c=i==="y",d=r.x+r.width/2-o.width/2,u=r.y+r.height/2-o.height/2,g=r[a]/2-o[a]/2,f;switch(s){case"top":f={x:d,y:r.y-o.height};break;case"bottom":f={x:d,y:r.y+r.height};break;case"right":f={x:r.x+r.width,y:u};break;case"left":f={x:r.x-o.width,y:u};break;default:f={x:r.x,y:r.y}}switch(gn(t)){case"start":f[l]-=g*(n&&c?-1:1);break;case"end":f[l]+=g*(n&&c?-1:1);break}return f}var Wd=async(e,t,n)=>{let{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:l}=n,a=i.filter(Boolean),s=await(l.isRTL==null?void 0:l.isRTL(t)),c=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:d,y:u}=ys(c,r,s),g=r,f={},h=0;for(let y=0;y<a.length;y++){let{name:m,fn:p}=a[y],{x:b,y:w,data:x,reset:C}=await p({x:d,y:u,initialPlacement:r,placement:g,strategy:o,middlewareData:f,rects:c,platform:l,elements:{reference:e,floating:t}});d=b??d,u=w??u,f={...f,[m]:{...f[m],...x}},C&&h<=50&&(h++,typeof C=="object"&&(C.placement&&(g=C.placement),C.rects&&(c=C.rects===!0?await l.getElementRects({reference:e,floating:t,strategy:o}):C.rects),{x:d,y:u}=ys(c,g,s)),y=-1)}return{x:d,y:u,placement:g,strategy:o,middlewareData:f}};async function zn(e,t){var n;t===void 0&&(t={});let{x:r,y:o,platform:i,rects:l,elements:a,strategy:s}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:u="floating",altBoundary:g=!1,padding:f=0}=Yt(t,e),h=wl(f),m=a[g?u==="floating"?"reference":"floating":u],p=xr(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(m)))==null||n?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:c,rootBoundary:d,strategy:s})),b=u==="floating"?{x:r,y:o,width:l.floating.width,height:l.floating.height}:l.reference,w=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),x=await(i.isElement==null?void 0:i.isElement(w))?await(i.getScale==null?void 0:i.getScale(w))||{x:1,y:1}:{x:1,y:1},C=xr(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:b,offsetParent:w,strategy:s}):b);return{top:(p.top-C.top+h.top)/x.y,bottom:(C.bottom-p.bottom+h.bottom)/x.y,left:(p.left-C.left+h.left)/x.x,right:(C.right-p.right+h.right)/x.x}}var Qd=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:r,placement:o,rects:i,platform:l,elements:a,middlewareData:s}=t,{element:c,padding:d=0}=Yt(e,t)||{};if(c==null)return{};let u=wl(d),g={x:n,y:r},f=Co(o),h=xo(f),y=await l.getDimensions(c),m=f==="y",p=m?"top":"left",b=m?"bottom":"right",w=m?"clientHeight":"clientWidth",x=i.reference[h]+i.reference[f]-g[f]-i.floating[h],C=g[f]-i.reference[f],P=await(l.getOffsetParent==null?void 0:l.getOffsetParent(c)),D=P?P[w]:0;(!D||!await(l.isElement==null?void 0:l.isElement(P)))&&(D=a.floating[w]||i.floating[h]);let F=x/2-C/2,$=D/2-y[h]/2-1,q=ct(u[p],$),j=ct(u[b],$),G=q,se=D-y[h]-j,oe=D/2-y[h]/2+F,fe=ao(G,oe,se),ce=!s.arrow&&gn(o)!=null&&oe!==fe&&i.reference[h]/2-(oe<G?q:j)-y[h]/2<0,le=ce?oe<G?oe-G:oe-se:0;return{[f]:g[f]+le,data:{[f]:fe,centerOffset:oe-fe-le,...ce&&{alignmentOffset:le}},reset:ce}}}),Yd=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,r;let{placement:o,middlewareData:i,rects:l,initialPlacement:a,platform:s,elements:c}=t,{mainAxis:d=!0,crossAxis:u=!0,fallbackPlacements:g,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:h="none",flipAlignment:y=!0,...m}=Yt(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let p=qt(o),b=Wt(a),w=qt(a)===a,x=await(s.isRTL==null?void 0:s.isRTL(c.floating)),C=g||(w||!y?[wr(a)]:Ud(a)),P=h!=="none";!g&&P&&C.push(...Hd(a,y,h,x));let D=[a,...C],F=await zn(t,m),$=[],q=((r=i.flip)==null?void 0:r.overflows)||[];if(d&&$.push(F[p]),u){let oe=Vd(o,l,x);$.push(F[oe[0]],F[oe[1]])}if(q=[...q,{placement:o,overflows:$}],!$.every(oe=>oe<=0)){var j,G;let oe=(((j=i.flip)==null?void 0:j.index)||0)+1,fe=D[oe];if(fe)return{data:{index:oe,overflows:q},reset:{placement:fe}};let ce=(G=q.filter(le=>le.overflows[0]<=0).sort((le,ue)=>le.overflows[1]-ue.overflows[1])[0])==null?void 0:G.placement;if(!ce)switch(f){case"bestFit":{var se;let le=(se=q.filter(ue=>{if(P){let ge=Wt(ue.placement);return ge===b||ge==="y"}return!0}).map(ue=>[ue.placement,ue.overflows.filter(ge=>ge>0).reduce((ge,Ce)=>ge+Ce,0)]).sort((ue,ge)=>ue[1]-ge[1])[0])==null?void 0:se[0];le&&(ce=le);break}case"initialPlacement":ce=a;break}if(o!==ce)return{reset:{placement:ce}}}return{}}}};function ms(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function vs(e){return Kd.some(t=>e[t]>=0)}var Xd=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){let{rects:n}=t,{strategy:r="referenceHidden",...o}=Yt(e,t);switch(r){case"referenceHidden":{let i=await zn(t,{...o,elementContext:"reference"}),l=ms(i,n.reference);return{data:{referenceHiddenOffsets:l,referenceHidden:vs(l)}}}case"escaped":{let i=await zn(t,{...o,altBoundary:!0}),l=ms(i,n.floating);return{data:{escapedOffsets:l,escaped:vs(l)}}}default:return{}}}}};async function Zd(e,t){let{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),l=qt(n),a=gn(n),s=Wt(n)==="y",c=["left","top"].includes(l)?-1:1,d=i&&s?-1:1,u=Yt(t,e),{mainAxis:g,crossAxis:f,alignmentAxis:h}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...u};return a&&typeof h=="number"&&(f=a==="end"?h*-1:h),s?{x:f*d,y:g*c}:{x:g*c,y:f*d}}var Jd=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;let{x:o,y:i,placement:l,middlewareData:a}=t,s=await Zd(t,e);return l===((n=a.offset)==null?void 0:n.placement)&&(r=a.arrow)!=null&&r.alignmentOffset?{}:{x:o+s.x,y:i+s.y,data:{...s,placement:l}}}}},ef=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:l=!1,limiter:a={fn:m=>{let{x:p,y:b}=m;return{x:p,y:b}}},...s}=Yt(e,t),c={x:n,y:r},d=await zn(t,s),u=Wt(qt(o)),g=bl(u),f=c[g],h=c[u];if(i){let m=g==="y"?"top":"left",p=g==="y"?"bottom":"right",b=f+d[m],w=f-d[p];f=ao(b,f,w)}if(l){let m=u==="y"?"top":"left",p=u==="y"?"bottom":"right",b=h+d[m],w=h-d[p];h=ao(b,h,w)}let y=a.fn({...t,[g]:f,[u]:h});return{...y,data:{x:y.x-n,y:y.y-r}}}}},tf=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){let{placement:n,rects:r,platform:o,elements:i}=t,{apply:l=()=>{},...a}=Yt(e,t),s=await zn(t,a),c=qt(n),d=gn(n),u=Wt(n)==="y",{width:g,height:f}=r.floating,h,y;c==="top"||c==="bottom"?(h=c,y=d===(await(o.isRTL==null?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(y=c,h=d==="end"?"top":"bottom");let m=f-s.top-s.bottom,p=g-s.left-s.right,b=ct(f-s[h],m),w=ct(g-s[y],p),x=!t.middlewareData.shift,C=b,P=w;if(u?P=d||x?ct(w,p):p:C=d||x?ct(b,m):m,x&&!d){let F=Ve(s.left,0),$=Ve(s.right,0),q=Ve(s.top,0),j=Ve(s.bottom,0);u?P=g-2*(F!==0||$!==0?F+$:Ve(s.left,s.right)):C=f-2*(q!==0||j!==0?q+j:Ve(s.top,s.bottom))}await l({...t,availableWidth:P,availableHeight:C});let D=await o.getDimensions(i.floating);return g!==D.width||f!==D.height?{reset:{rects:!0}}:{}}}};function hn(e){return xl(e)?(e.nodeName||"").toLowerCase():"#document"}function Ue(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function kt(e){var t;return(t=(xl(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function xl(e){return e instanceof Node||e instanceof Ue(e).Node}function ot(e){return e instanceof Element||e instanceof Ue(e).Element}function dt(e){return e instanceof HTMLElement||e instanceof Ue(e).HTMLElement}function ps(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Ue(e).ShadowRoot}function Gn(e){let{overflow:t,overflowX:n,overflowY:r,display:o}=it(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function nf(e){return["table","td","th"].includes(hn(e))}function Mr(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch{return!1}})}function So(e){let t=$o(),n=ot(e)?it(e):e;return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function rf(e){let t=_t(e);for(;dt(t)&&!fn(t);){if(So(t))return t;if(Mr(t))return null;t=_t(t)}return null}function $o(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function fn(e){return["html","body","#document"].includes(hn(e))}function it(e){return Ue(e).getComputedStyle(e)}function Tr(e){return ot(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function _t(e){if(hn(e)==="html")return e;let t=e.assignedSlot||e.parentNode||ps(e)&&e.host||kt(e);return ps(t)?t.host:t}function Cl(e){let t=_t(e);return fn(t)?e.ownerDocument?e.ownerDocument.body:e.body:dt(t)&&Gn(t)?t:Cl(t)}function Kn(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);let o=Cl(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),l=Ue(o);return i?t.concat(l,l.visualViewport||[],Gn(o)?o:[],l.frameElement&&n?Kn(l.frameElement):[]):t.concat(o,Kn(o,[],n))}function Sl(e){let t=it(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,o=dt(e),i=o?e.offsetWidth:n,l=o?e.offsetHeight:r,a=br(n)!==i||br(r)!==l;return a&&(n=i,r=l),{width:n,height:r,$:a}}function ko(e){return ot(e)?e:e.contextElement}function dn(e){let t=ko(e);if(!dt(t))return Lt(1);let n=t.getBoundingClientRect(),{width:r,height:o,$:i}=Sl(t),l=(i?br(n.width):n.width)/r,a=(i?br(n.height):n.height)/o;return(!l||!Number.isFinite(l))&&(l=1),(!a||!Number.isFinite(a))&&(a=1),{x:l,y:a}}var of=Lt(0);function $l(e){let t=Ue(e);return!$o()||!t.visualViewport?of:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function sf(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Ue(e)?!1:t}function Qt(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let o=e.getBoundingClientRect(),i=ko(e),l=Lt(1);t&&(r?ot(r)&&(l=dn(r)):l=dn(e));let a=sf(i,n,r)?$l(i):Lt(0),s=(o.left+a.x)/l.x,c=(o.top+a.y)/l.y,d=o.width/l.x,u=o.height/l.y;if(i){let g=Ue(i),f=r&&ot(r)?Ue(r):r,h=g,y=h.frameElement;for(;y&&r&&f!==h;){let m=dn(y),p=y.getBoundingClientRect(),b=it(y),w=p.left+(y.clientLeft+parseFloat(b.paddingLeft))*m.x,x=p.top+(y.clientTop+parseFloat(b.paddingTop))*m.y;s*=m.x,c*=m.y,d*=m.x,u*=m.y,s+=w,c+=x,h=Ue(y),y=h.frameElement}}return xr({width:d,height:u,x:s,y:c})}function lf(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e,i=o==="fixed",l=kt(r),a=t?Mr(t.floating):!1;if(r===l||a&&i)return n;let s={scrollLeft:0,scrollTop:0},c=Lt(1),d=Lt(0),u=dt(r);if((u||!u&&!i)&&((hn(r)!=="body"||Gn(l))&&(s=Tr(r)),dt(r))){let g=Qt(r);c=dn(r),d.x=g.x+r.clientLeft,d.y=g.y+r.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+d.x,y:n.y*c.y-s.scrollTop*c.y+d.y}}function af(e){return Array.from(e.getClientRects())}function kl(e){return Qt(kt(e)).left+Tr(e).scrollLeft}function cf(e){let t=kt(e),n=Tr(e),r=e.ownerDocument.body,o=Ve(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=Ve(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),l=-n.scrollLeft+kl(e),a=-n.scrollTop;return it(r).direction==="rtl"&&(l+=Ve(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:l,y:a}}function uf(e,t){let n=Ue(e),r=kt(e),o=n.visualViewport,i=r.clientWidth,l=r.clientHeight,a=0,s=0;if(o){i=o.width,l=o.height;let c=$o();(!c||c&&t==="fixed")&&(a=o.offsetLeft,s=o.offsetTop)}return{width:i,height:l,x:a,y:s}}function df(e,t){let n=Qt(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=dt(e)?dn(e):Lt(1),l=e.clientWidth*i.x,a=e.clientHeight*i.y,s=o*i.x,c=r*i.y;return{width:l,height:a,x:s,y:c}}function bs(e,t,n){let r;if(t==="viewport")r=uf(e,n);else if(t==="document")r=cf(kt(e));else if(ot(t))r=df(t,n);else{let o=$l(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return xr(r)}function El(e,t){let n=_t(e);return n===t||!ot(n)||fn(n)?!1:it(n).position==="fixed"||El(n,t)}function ff(e,t){let n=t.get(e);if(n)return n;let r=Kn(e,[],!1).filter(a=>ot(a)&&hn(a)!=="body"),o=null,i=it(e).position==="fixed",l=i?_t(e):e;for(;ot(l)&&!fn(l);){let a=it(l),s=So(l);!s&&a.position==="fixed"&&(o=null),(i?!s&&!o:!s&&a.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||Gn(l)&&!s&&El(e,l))?r=r.filter(d=>d!==l):o=a,l=_t(l)}return t.set(e,r),r}function gf(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e,l=[...n==="clippingAncestors"?Mr(t)?[]:ff(t,this._c):[].concat(n),r],a=l[0],s=l.reduce((c,d)=>{let u=bs(t,d,o);return c.top=Ve(u.top,c.top),c.right=ct(u.right,c.right),c.bottom=ct(u.bottom,c.bottom),c.left=Ve(u.left,c.left),c},bs(t,a,o));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function hf(e){let{width:t,height:n}=Sl(e);return{width:t,height:n}}function yf(e,t,n){let r=dt(t),o=kt(t),i=n==="fixed",l=Qt(e,!0,i,t),a={scrollLeft:0,scrollTop:0},s=Lt(0);if(r||!r&&!i)if((hn(t)!=="body"||Gn(o))&&(a=Tr(t)),r){let u=Qt(t,!0,i,t);s.x=u.x+t.clientLeft,s.y=u.y+t.clientTop}else o&&(s.x=kl(o));let c=l.left+a.scrollLeft-s.x,d=l.top+a.scrollTop-s.y;return{x:c,y:d,width:l.width,height:l.height}}function Zr(e){return it(e).position==="static"}function ws(e,t){return!dt(e)||it(e).position==="fixed"?null:t?t(e):e.offsetParent}function Al(e,t){let n=Ue(e);if(Mr(e))return n;if(!dt(e)){let o=_t(e);for(;o&&!fn(o);){if(ot(o)&&!Zr(o))return o;o=_t(o)}return n}let r=ws(e,t);for(;r&&nf(r)&&Zr(r);)r=ws(r,t);return r&&fn(r)&&Zr(r)&&!So(r)?n:r||rf(e)||n}var mf=async function(e){let t=this.getOffsetParent||Al,n=this.getDimensions,r=await n(e.floating);return{reference:yf(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function vf(e){return it(e).direction==="rtl"}var Ml={convertOffsetParentRelativeRectToViewportRelativeRect:lf,getDocumentElement:kt,getClippingRect:gf,getOffsetParent:Al,getElementRects:mf,getClientRects:af,getDimensions:hf,getScale:dn,isElement:ot,isRTL:vf};function pf(e,t){let n=null,r,o=kt(e);function i(){var a;clearTimeout(r),(a=n)==null||a.disconnect(),n=null}function l(a,s){a===void 0&&(a=!1),s===void 0&&(s=1),i();let{left:c,top:d,width:u,height:g}=e.getBoundingClientRect();if(a||t(),!u||!g)return;let f=yr(d),h=yr(o.clientWidth-(c+u)),y=yr(o.clientHeight-(d+g)),m=yr(c),b={rootMargin:-f+"px "+-h+"px "+-y+"px "+-m+"px",threshold:Ve(0,ct(1,s))||1},w=!0;function x(C){let P=C[0].intersectionRatio;if(P!==s){if(!w)return l();P?l(!1,P):r=setTimeout(()=>{l(!1,1e-7)},1e3)}w=!1}try{n=new IntersectionObserver(x,{...b,root:o.ownerDocument})}catch{n=new IntersectionObserver(x,b)}n.observe(e)}return l(!0),i}function bf(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:s=!1}=r,c=ko(e),d=o||i?[...c?Kn(c):[],...Kn(t)]:[];d.forEach(p=>{o&&p.addEventListener("scroll",n,{passive:!0}),i&&p.addEventListener("resize",n)});let u=c&&a?pf(c,n):null,g=-1,f=null;l&&(f=new ResizeObserver(p=>{let[b]=p;b&&b.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var w;(w=f)==null||w.observe(t)})),n()}),c&&!s&&f.observe(c),f.observe(t));let h,y=s?Qt(e):null;s&&m();function m(){let p=Qt(e);y&&(p.x!==y.x||p.y!==y.y||p.width!==y.width||p.height!==y.height)&&n(),y=p,h=requestAnimationFrame(m)}return n(),()=>{var p;d.forEach(b=>{o&&b.removeEventListener("scroll",n),i&&b.removeEventListener("resize",n)}),u?.(),(p=f)==null||p.disconnect(),f=null,s&&cancelAnimationFrame(h)}}var wf=Jd,xf=ef,Cf=Yd,Sf=tf,$f=Xd,kf=Qd,Ef=(e,t,n)=>{let r=new Map,o={platform:Ml,...n},i={...o.platform,_c:r};return Wd(e,t,{...o,platform:i})},Eo=ke();function Ao(){let e=Se(Eo);if(e===void 0)throw new Error("[kobalte]: `usePopperContext` must be used within a `Popper` component");return e}var Af=R('<svg display="block" viewBox="0 0 30 30" style="transform:scale(1.02)"><g><path fill="none" d="M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z"></path><path stroke="none" d="M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z">'),uo=30,xs=uo/2,Mf={top:180,right:-90,bottom:0,left:90};function Mo(e){let t=Ao(),n=J({size:uo},e),[r,o]=ee(n,["ref","style","size"]),i=()=>t.currentPlacement().split("-")[0],l=Tf(t.contentRef),a=()=>l()?.getPropertyValue("background-color")||"none",s=()=>l()?.getPropertyValue(`border-${i()}-color`)||"none",c=()=>l()?.getPropertyValue(`border-${i()}-width`)||"0px",d=()=>Number.parseInt(c())*2*(uo/r.size),u=()=>`rotate(${Mf[i()]} ${xs} ${xs}) translate(0 2)`;return v(me,W({as:"div",ref(g){let f=qe(t.setArrowRef,r.ref);typeof f=="function"&&f(g)},"aria-hidden":"true",get style(){return $r({position:"absolute","font-size":`${r.size}px`,width:"1em",height:"1em","pointer-events":"none",fill:a(),stroke:s(),"stroke-width":d()},r.style)}},o,{get children(){let g=Af(),f=g.firstChild;return K(()=>M(f,"transform",u())),g}}))}function Tf(e){let[t,n]=z();return B(()=>{let r=e();r&&n(Au(r).getComputedStyle(r))}),t}function Of(e){let t=Ao(),[n,r]=ee(e,["ref","style"]);return v(me,W({as:"div",ref(o){let i=qe(t.setPositionerRef,n.ref);typeof i=="function"&&i(o)},"data-popper-positioner":"",get style(){return $r({position:"absolute",top:0,left:0,"min-width":"max-content"},n.style)}},r))}function Cs(e){let{x:t=0,y:n=0,width:r=0,height:o=0}=e??{};if(typeof DOMRect=="function")return new DOMRect(t,n,r,o);let i={x:t,y:n,width:r,height:o,top:n,right:t+r,bottom:n+o,left:t};return{...i,toJSON:()=>i}}function Df(e,t){return{contextElement:e,getBoundingClientRect:()=>{let r=t(e);return r?Cs(r):e?e.getBoundingClientRect():Cs()}}}function If(e){return/^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(e)}var Pf={top:"bottom",right:"left",bottom:"top",left:"right"};function Ff(e,t){let[n,r]=e.split("-"),o=Pf[n];return r?n==="left"||n==="right"?`${o} ${r==="start"?"top":"bottom"}`:r==="start"?`${o} ${t==="rtl"?"right":"left"}`:`${o} ${t==="rtl"?"left":"right"}`:`${o} center`}function Lf(e){let t=J({getAnchorRect:g=>g?.getBoundingClientRect(),placement:"bottom",gutter:0,shift:0,flip:!0,slide:!0,overlap:!1,sameWidth:!1,fitViewport:!1,hideWhenDetached:!1,detachedPadding:0,arrowPadding:4,overflowPadding:8},e),[n,r]=z(),[o,i]=z(),[l,a]=z(t.placement),s=()=>Df(t.anchorRef?.(),t.getAnchorRect),{direction:c}=Rt();async function d(){let g=s(),f=n(),h=o();if(!g||!f)return;let y=(h?.clientHeight||0)/2,m=typeof t.gutter=="number"?t.gutter+y:t.gutter??y;f.style.setProperty("--kb-popper-content-overflow-padding",`${t.overflowPadding}px`),g.getBoundingClientRect();let p=[wf(({placement:P})=>{let D=!!P.split("-")[1];return{mainAxis:m,crossAxis:D?void 0:t.shift,alignmentAxis:t.shift}})];if(t.flip!==!1){let P=typeof t.flip=="string"?t.flip.split(" "):void 0;if(P!==void 0&&!P.every(If))throw new Error("`flip` expects a spaced-delimited list of placements");p.push(Cf({padding:t.overflowPadding,fallbackPlacements:P}))}(t.slide||t.overlap)&&p.push(xf({mainAxis:t.slide,crossAxis:t.overlap,padding:t.overflowPadding})),p.push(Sf({padding:t.overflowPadding,apply({availableWidth:P,availableHeight:D,rects:F}){let $=Math.round(F.reference.width);P=Math.floor(P),D=Math.floor(D),f.style.setProperty("--kb-popper-anchor-width",`${$}px`),f.style.setProperty("--kb-popper-content-available-width",`${P}px`),f.style.setProperty("--kb-popper-content-available-height",`${D}px`),t.sameWidth&&(f.style.width=`${$}px`),t.fitViewport&&(f.style.maxWidth=`${P}px`,f.style.maxHeight=`${D}px`)}})),t.hideWhenDetached&&p.push($f({padding:t.detachedPadding})),h&&p.push(kf({element:h,padding:t.arrowPadding}));let b=await Ef(g,f,{placement:t.placement,strategy:"absolute",middleware:p,platform:{...Ml,isRTL:()=>c()==="rtl"}});if(a(b.placement),t.onCurrentPlacementChange?.(b.placement),!f)return;f.style.setProperty("--kb-popper-content-transform-origin",Ff(b.placement,c()));let w=Math.round(b.x),x=Math.round(b.y),C;if(t.hideWhenDetached&&(C=b.middlewareData.hide?.referenceHidden?"hidden":"visible"),Object.assign(f.style,{top:"0",left:"0",transform:`translate3d(${w}px, ${x}px, 0)`,visibility:C}),h&&b.middlewareData.arrow){let{x:P,y:D}=b.middlewareData.arrow,F=b.placement.split("-")[0];Object.assign(h.style,{left:P!=null?`${P}px`:"",top:D!=null?`${D}px`:"",[F]:"100%"})}}B(()=>{let g=s(),f=n();if(!g||!f)return;let h=bf(g,f,d,{elementResize:typeof ResizeObserver=="function"});U(h)}),B(()=>{let g=n(),f=t.contentRef?.();!g||!f||queueMicrotask(()=>{g.style.zIndex=getComputedStyle(f).zIndex})});let u={currentPlacement:l,contentRef:()=>t.contentRef?.(),setPositionerRef:r,setArrowRef:i};return v(Eo.Provider,{value:u,get children(){return t.children}})}var Tl=Object.assign(Lf,{Arrow:Mo,Context:Eo,usePopperContext:Ao,Positioner:Of});function qf(e){let t=n=>{n.key===yo.Escape&&e.onEscapeKeyDown?.(n)};B(()=>{if(De||A(e.isDisabled))return;let n=e.ownerDocument?.()??ut();n.addEventListener("keydown",t),U(()=>{n.removeEventListener("keydown",t)})})}var Ss="interactOutside.pointerDownOutside",$s="interactOutside.focusOutside";function _f(e,t){let n,r=Vu,o=()=>ut(t()),i=u=>e.onPointerDownOutside?.(u),l=u=>e.onFocusOutside?.(u),a=u=>e.onInteractOutside?.(u),s=u=>{let g=u.target;return!(g instanceof HTMLElement)||g.closest(`[${pr}]`)||!Qe(o(),g)||Qe(t(),g)?!1:!e.shouldExcludeElement?.(g)},c=u=>{function g(){let f=t(),h=u.target;if(!f||!h||!s(u))return;let y=Ee([i,a]);h.addEventListener(Ss,y,{once:!0});let m=new CustomEvent(Ss,{bubbles:!1,cancelable:!0,detail:{originalEvent:u,isContextMenu:u.button===2||Iu(u)&&u.button===0}});h.dispatchEvent(m)}u.pointerType==="touch"?(o().removeEventListener("click",g),r=g,o().addEventListener("click",g,{once:!0})):g()},d=u=>{let g=t(),f=u.target;if(!g||!f||!s(u))return;let h=Ee([l,a]);f.addEventListener($s,h,{once:!0});let y=new CustomEvent($s,{bubbles:!1,cancelable:!0,detail:{originalEvent:u,isContextMenu:!1}});f.dispatchEvent(y)};B(()=>{De||A(e.isDisabled)||(n=window.setTimeout(()=>{o().addEventListener("pointerdown",c,!0)},0),o().addEventListener("focusin",d,!0),U(()=>{window.clearTimeout(n),o().removeEventListener("click",r),o().removeEventListener("pointerdown",c,!0),o().removeEventListener("focusin",d,!0)}))})}var Ol=ke();function Rf(){return Se(Ol)}function zf(e){let t,n=Rf(),[r,o]=ee(e,["ref","disableOutsidePointerEvents","excludedElements","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","bypassTopMostLayerCheck"]),i=new Set([]),l=u=>{i.add(u);let g=n?.registerNestedLayer(u);return()=>{i.delete(u),g?.()}};_f({shouldExcludeElement:u=>t?r.excludedElements?.some(g=>Qe(g(),u))||[...i].some(g=>Qe(g,u)):!1,onPointerDownOutside:u=>{!t||Be.isBelowPointerBlockingLayer(t)||!r.bypassTopMostLayerCheck&&!Be.isTopMostLayer(t)||(r.onPointerDownOutside?.(u),r.onInteractOutside?.(u),u.defaultPrevented||r.onDismiss?.())},onFocusOutside:u=>{r.onFocusOutside?.(u),r.onInteractOutside?.(u),u.defaultPrevented||r.onDismiss?.()}},()=>t),qf({ownerDocument:()=>ut(t),onEscapeKeyDown:u=>{!t||!Be.isTopMostLayer(t)||(r.onEscapeKeyDown?.(u),!u.defaultPrevented&&r.onDismiss&&(u.preventDefault(),r.onDismiss()))}}),wt(()=>{if(!t)return;Be.addLayer({node:t,isPointerBlocking:r.disableOutsidePointerEvents,dismiss:r.onDismiss});let u=n?.registerNestedLayer(t);Be.assignPointerEventToLayers(),Be.disableBodyPointerEvents(t),U(()=>{t&&(Be.removeLayer(t),u?.(),Be.assignPointerEventToLayers(),Be.restoreBodyPointerEvents(t))})}),B(at([()=>t,()=>r.disableOutsidePointerEvents],([u,g])=>{if(!u)return;let f=Be.find(u);f&&f.isPointerBlocking!==g&&(f.isPointerBlocking=g,Be.assignPointerEventToLayers()),g&&Be.disableBodyPointerEvents(u),U(()=>{Be.restoreBodyPointerEvents(u)})},{defer:!0}));let d={registerNestedLayer:l};return v(Ol.Provider,{value:d,get children(){return v(me,W({as:"div",ref(u){let g=qe(f=>t=f,r.ref);typeof g=="function"&&g(u)}},o))}})}function Dl(e={}){let[t,n]=il({value:()=>A(e.open),defaultValue:()=>!!A(e.defaultOpen),onChange:l=>e.onOpenChange?.(l)}),r=()=>{n(!0)},o=()=>{n(!1)};return{isOpen:t,setIsOpen:n,open:r,close:o,toggle:()=>{t()?o():r()}}}var We={};Ar(We,{Description:()=>rl,ErrorMessage:()=>ol,Item:()=>Ll,ItemControl:()=>ql,ItemDescription:()=>_l,ItemIndicator:()=>Rl,ItemInput:()=>zl,ItemLabel:()=>Kl,Label:()=>Bl,RadioGroup:()=>Kf,Root:()=>Nl});var Il=ke();function Pl(){let e=Se(Il);if(e===void 0)throw new Error("[kobalte]: `useRadioGroupContext` must be used within a `RadioGroup` component");return e}var Fl=ke();function Hn(){let e=Se(Fl);if(e===void 0)throw new Error("[kobalte]: `useRadioGroupItemContext` must be used within a `RadioGroup.Item` component");return e}function Ll(e){let t=Vn(),n=Pl(),r=`${t.generateId("item")}-${Ke()}`,o=J({id:r},e),[i,l]=ee(o,["value","disabled","onPointerDown"]),[a,s]=z(),[c,d]=z(),[u,g]=z(),[f,h]=z(),[y,m]=z(!1),p=k(()=>n.isSelectedValue(i.value)),b=k(()=>i.disabled||t.isDisabled()||!1),w=P=>{ye(P,i.onPointerDown),y()&&P.preventDefault()},x=k(()=>({...t.dataset(),"data-disabled":b()?"":void 0,"data-checked":p()?"":void 0})),C={value:()=>i.value,dataset:x,isSelected:p,isDisabled:b,inputId:a,labelId:c,descriptionId:u,inputRef:f,select:()=>n.setSelectedValue(i.value),generateId:Nn(()=>l.id),registerInput:Ye(s),registerLabel:Ye(d),registerDescription:Ye(g),setIsFocused:m,setInputRef:h};return v(Fl.Provider,{value:C,get children(){return v(me,W({as:"div",role:"group",onPointerDown:w},x,l))}})}function ql(e){let t=Hn(),n=J({id:t.generateId("control")},e),[r,o]=ee(n,["onClick","onKeyDown"]);return v(me,W({as:"div",onClick:a=>{ye(a,r.onClick),t.select(),t.inputRef()?.focus()},onKeyDown:a=>{ye(a,r.onKeyDown),a.key===yo.Space&&(t.select(),t.inputRef()?.focus())}},()=>t.dataset(),o))}function _l(e){let t=Hn(),n=J({id:t.generateId("description")},e);return B(()=>U(t.registerDescription(n.id))),v(me,W({as:"div"},()=>t.dataset(),n))}function Rl(e){let t=Hn(),n=J({id:t.generateId("indicator")},e),[r,o]=ee(n,["ref","forceMount"]),[i,l]=z(),{present:a}=yl({show:()=>r.forceMount||t.isSelected(),element:()=>i()??null});return v(N,{get when(){return a()},get children(){return v(me,W({as:"div",ref(s){let c=qe(l,r.ref);typeof c=="function"&&c(s)}},()=>t.dataset(),o))}})}function zl(e){let t=Vn(),n=Pl(),r=Hn(),o=J({id:r.generateId("input")},e),[i,l]=ee(o,["ref","style","aria-labelledby","aria-describedby","onChange","onFocus","onBlur"]),a=()=>[i["aria-labelledby"],r.labelId(),i["aria-labelledby"]!=null&&l["aria-label"]!=null?l.id:void 0].filter(Boolean).join(" ")||void 0,s=()=>[i["aria-describedby"],r.descriptionId(),n.ariaDescribedBy()].filter(Boolean).join(" ")||void 0,[c,d]=z(!1),u=h=>{if(ye(h,i.onChange),h.stopPropagation(),!c()){n.setSelectedValue(r.value());let y=h.target;y.checked=r.isSelected()}d(!1)},g=h=>{ye(h,i.onFocus),r.setIsFocused(!0)},f=h=>{ye(h,i.onBlur),r.setIsFocused(!1)};return B(at([()=>r.isSelected(),()=>r.value()],h=>{if(!h[0]&&h[1]===r.value())return;d(!0);let y=r.inputRef();y?.dispatchEvent(new Event("input",{bubbles:!0,cancelable:!0})),y?.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0}))},{defer:!0})),B(()=>U(r.registerInput(l.id))),v(me,W({as:"input",ref(h){let y=qe(r.setInputRef,i.ref);typeof y=="function"&&y(h)},type:"radio",get name(){return t.name()},get value(){return r.value()},get checked(){return r.isSelected()},get required(){return t.isRequired()},get disabled(){return r.isDisabled()},get readonly(){return t.isReadOnly()},get style(){return $r({...tl},i.style)},get"aria-labelledby"(){return a()},get"aria-describedby"(){return s()},onChange:u,onFocus:g,onBlur:f},()=>r.dataset(),l))}function Kl(e){let t=Hn(),n=J({id:t.generateId("label")},e);return B(()=>U(t.registerLabel(n.id))),v(me,W({as:"label",get for(){return t.inputId()}},()=>t.dataset(),n))}function Bl(e){return v(Wu,W({as:"span"},e))}function Nl(e){let t,n=`radiogroup-${Ke()}`,r=J({id:n,orientation:"vertical"},e),[o,i,l]=ee(r,["ref","value","defaultValue","onChange","orientation","aria-labelledby","aria-describedby"],Hu),[a,s]=Un({value:()=>o.value,defaultValue:()=>o.defaultValue,onChange:h=>o.onChange?.(h)}),{formControlContext:c}=ju(i);Qu(()=>t,()=>s(o.defaultValue??""));let d=()=>c.getAriaLabelledBy(A(i.id),l["aria-label"],o["aria-labelledby"]),u=()=>c.getAriaDescribedBy(o["aria-describedby"]),g=h=>h===a(),f={ariaDescribedBy:u,isSelectedValue:g,setSelectedValue:h=>{if(!(c.isReadOnly()||c.isDisabled())&&(s(h),t))for(let y of t.querySelectorAll("[type='radio']")){let m=y;m.checked=g(m.value)}}};return v(nl.Provider,{value:c,get children(){return v(Il.Provider,{value:f,get children(){return v(me,W({as:"div",ref(h){let y=qe(m=>t=m,o.ref);typeof y=="function"&&y(h)},role:"radiogroup",get id(){return A(i.id)},get"aria-invalid"(){return c.validationState()==="invalid"||void 0},get"aria-required"(){return c.isRequired()||void 0},get"aria-disabled"(){return c.isDisabled()||void 0},get"aria-readonly"(){return c.isReadOnly()||void 0},get"aria-orientation"(){return o.orientation},get"aria-labelledby"(){return d()},get"aria-describedby"(){return u()}},()=>c.dataset(),l))}})}})}var Kf=Object.assign(Nl,{Description:rl,ErrorMessage:ol,Item:Ll,ItemControl:ql,ItemDescription:_l,ItemIndicator:Rl,ItemInput:zl,ItemLabel:Kl,Label:Bl}),Bf=class{collection;ref;collator;constructor(e,t,n){this.collection=e,this.ref=t,this.collator=n}getKeyBelow(e){let t=this.collection().getKeyAfter(e);for(;t!=null;){let n=this.collection().getItem(t);if(n&&n.type==="item"&&!n.disabled)return t;t=this.collection().getKeyAfter(t)}}getKeyAbove(e){let t=this.collection().getKeyBefore(e);for(;t!=null;){let n=this.collection().getItem(t);if(n&&n.type==="item"&&!n.disabled)return t;t=this.collection().getKeyBefore(t)}}getFirstKey(){let e=this.collection().getFirstKey();for(;e!=null;){let t=this.collection().getItem(e);if(t&&t.type==="item"&&!t.disabled)return e;e=this.collection().getKeyAfter(e)}}getLastKey(){let e=this.collection().getLastKey();for(;e!=null;){let t=this.collection().getItem(e);if(t&&t.type==="item"&&!t.disabled)return e;e=this.collection().getKeyBefore(e)}}getItem(e){return this.ref?.()?.querySelector(`[data-key="${e}"]`)??null}getKeyPageAbove(e){let t=this.ref?.(),n=this.getItem(e);if(!t||!n)return;let r=Math.max(0,n.offsetTop+n.offsetHeight-t.offsetHeight),o=e;for(;o&&n&&n.offsetTop>r;)o=this.getKeyAbove(o),n=o!=null?this.getItem(o):null;return o}getKeyPageBelow(e){let t=this.ref?.(),n=this.getItem(e);if(!t||!n)return;let r=Math.min(t.scrollHeight,n.offsetTop-n.offsetHeight+t.offsetHeight),o=e;for(;o&&n&&n.offsetTop<r;)o=this.getKeyBelow(o),n=o!=null?this.getItem(o):null;return o}getKeyForSearch(e,t){let n=this.collator?.();if(!n)return;let r=t!=null?this.getKeyBelow(t):this.getFirstKey();for(;r!=null;){let o=this.collection().getItem(r);if(o){let i=o.textValue.slice(0,e.length);if(o.textValue&&n.compare(i,e)===0)return r}r=this.getKeyBelow(r)}}};function Nf(e,t,n){let r=md({usage:"search",sensitivity:"base"}),o=k(()=>{let i=A(e.keyboardDelegate);return i||new Bf(e.collection,t,r)});return Sd({selectionManager:()=>A(e.selectionManager),keyboardDelegate:o,autoFocus:()=>A(e.autoFocus),deferAutoFocus:()=>A(e.deferAutoFocus),shouldFocusWrap:()=>A(e.shouldFocusWrap),disallowEmptySelection:()=>A(e.disallowEmptySelection),selectOnFocus:()=>A(e.selectOnFocus),disallowTypeAhead:()=>A(e.disallowTypeAhead),shouldUseVirtualFocus:()=>A(e.shouldUseVirtualFocus),allowsTabNavigation:()=>A(e.allowsTabNavigation),isVirtualized:()=>A(e.isVirtualized),scrollToKey:i=>A(e.scrollToKey)?.(i),orientation:()=>A(e.orientation)},t)}var Jr="focusScope.autoFocusOnMount",eo="focusScope.autoFocusOnUnmount",ks={bubbles:!1,cancelable:!0},Es={stack:[],active(){return this.stack[0]},add(e){e!==this.active()&&this.active()?.pause(),this.stack=oo(this.stack,e),this.stack.unshift(e)},remove(e){this.stack=oo(this.stack,e),this.active()?.resume()}};function Vf(e,t){let[n,r]=z(!1),o={pause(){r(!0)},resume(){r(!1)}},i=null,l=h=>e.onMountAutoFocus?.(h),a=h=>e.onUnmountAutoFocus?.(h),s=()=>ut(t()),c=()=>{let h=s().createElement("span");return h.setAttribute("data-focus-trap",""),h.tabIndex=0,Object.assign(h.style,tl),h},d=()=>{let h=t();return h?Js(h,!0).filter(y=>!y.hasAttribute("data-focus-trap")):[]},u=()=>{let h=d();return h.length>0?h[0]:null},g=()=>{let h=d();return h.length>0?h[h.length-1]:null},f=()=>{let h=t();if(!h)return!1;let y=Ln(h);return!y||Qe(h,y)?!1:el(y)};B(()=>{if(De)return;let h=t();if(!h)return;Es.add(o);let y=Ln(h);if(!Qe(h,y)){let p=new CustomEvent(Jr,ks);h.addEventListener(Jr,l),h.dispatchEvent(p),p.defaultPrevented||setTimeout(()=>{Pe(u()),Ln(h)===y&&Pe(h)},0)}U(()=>{h.removeEventListener(Jr,l),setTimeout(()=>{let p=new CustomEvent(eo,ks);f()&&p.preventDefault(),h.addEventListener(eo,a),h.dispatchEvent(p),p.defaultPrevented||Pe(y??s().body),h.removeEventListener(eo,a),Es.remove(o)},0)})}),B(()=>{if(De)return;let h=t();if(!h||!A(e.trapFocus)||n())return;let y=p=>{let b=p.target;b?.closest(`[${pr}]`)||(Qe(h,b)?i=b:Pe(i))},m=p=>{let w=p.relatedTarget??Ln(h);w?.closest(`[${pr}]`)||Qe(h,w)||Pe(i)};s().addEventListener("focusin",y),s().addEventListener("focusout",m),U(()=>{s().removeEventListener("focusin",y),s().removeEventListener("focusout",m)})}),B(()=>{if(De)return;let h=t();if(!h||!A(e.trapFocus)||n())return;let y=c();h.insertAdjacentElement("afterbegin",y);let m=c();h.insertAdjacentElement("beforeend",m);function p(w){let x=u(),C=g();w.relatedTarget===x?Pe(C):Pe(x)}y.addEventListener("focusin",p),m.addEventListener("focusin",p);let b=new MutationObserver(w=>{for(let x of w)x.previousSibling===m&&(m.remove(),h.insertAdjacentElement("beforeend",m)),x.nextSibling===y&&(y.remove(),h.insertAdjacentElement("afterbegin",y))});b.observe(h,{childList:!0,subtree:!1}),U(()=>{y.removeEventListener("focusin",p),m.removeEventListener("focusin",p),y.remove(),m.remove(),b.disconnect()})})}var Uf="data-live-announcer";function Gf(e){B(()=>{A(e.isDisabled)||U(Hf(A(e.targets),A(e.root)))})}var Pn=new WeakMap,je=[];function Hf(e,t=document.body){let n=new Set(e),r=new Set,o=s=>{for(let g of s.querySelectorAll(`[${Uf}], [${pr}]`))n.add(g);let c=g=>{if(n.has(g)||g.parentElement&&r.has(g.parentElement)&&g.parentElement.getAttribute("role")!=="row")return NodeFilter.FILTER_REJECT;for(let f of n)if(g.contains(f))return NodeFilter.FILTER_SKIP;return NodeFilter.FILTER_ACCEPT},d=document.createTreeWalker(s,NodeFilter.SHOW_ELEMENT,{acceptNode:c}),u=c(s);if(u===NodeFilter.FILTER_ACCEPT&&i(s),u!==NodeFilter.FILTER_REJECT){let g=d.nextNode();for(;g!=null;)i(g),g=d.nextNode()}},i=s=>{let c=Pn.get(s)??0;s.getAttribute("aria-hidden")==="true"&&c===0||(c===0&&s.setAttribute("aria-hidden","true"),r.add(s),Pn.set(s,c+1))};je.length&&je[je.length-1].disconnect(),o(t);let l=new MutationObserver(s=>{for(let c of s)if(!(c.type!=="childList"||c.addedNodes.length===0)&&![...n,...r].some(d=>d.contains(c.target))){for(let d of c.removedNodes)d instanceof Element&&(n.delete(d),r.delete(d));for(let d of c.addedNodes)(d instanceof HTMLElement||d instanceof SVGElement)&&(d.dataset.liveAnnouncer==="true"||d.dataset.reactAriaTopLayer==="true")?n.add(d):d instanceof Element&&o(d)}});l.observe(t,{childList:!0,subtree:!0});let a={observe(){l.observe(t,{childList:!0,subtree:!0})},disconnect(){l.disconnect()}};return je.push(a),()=>{l.disconnect();for(let s of r){let c=Pn.get(s);if(c==null)return;c===1?(s.removeAttribute("aria-hidden"),Pn.delete(s)):Pn.set(s,c-1)}a===je[je.length-1]?(je.pop(),je.length&&je[je.length-1].observe()):je.splice(je.indexOf(a),1)}}var mr=new Map,jf=e=>{B(()=>{let t=Ie(e.style)??{},n=Ie(e.properties)??[],r={};for(let i in t)r[i]=e.element.style[i];let o=mr.get(e.key);o?o.activeCount++:mr.set(e.key,{activeCount:1,originalStyles:r,properties:n.map(i=>i.key)}),Object.assign(e.element.style,e.style);for(let i of n)e.element.style.setProperty(i.key,i.value);U(()=>{let i=mr.get(e.key);if(i){if(i.activeCount!==1){i.activeCount--;return}mr.delete(e.key);for(let[l,a]of Object.entries(i.originalStyles))e.element.style[l]=a;for(let l of i.properties)e.element.style.removeProperty(l);e.element.style.length===0&&e.element.removeAttribute("style"),e.cleanup?.()}})})},As=jf,Wf=(e,t)=>{switch(t){case"x":return[e.clientWidth,e.scrollLeft,e.scrollWidth];case"y":return[e.clientHeight,e.scrollTop,e.scrollHeight]}},Qf=(e,t)=>{let n=getComputedStyle(e),r=t==="x"?n.overflowX:n.overflowY;return r==="auto"||r==="scroll"||e.tagName==="HTML"&&r==="visible"},Yf=(e,t,n)=>{let r=t==="x"&&window.getComputedStyle(e).direction==="rtl"?-1:1,o=e,i=0,l=0,a=!1;do{let[s,c,d]=Wf(o,t),u=d-s-r*c;(c!==0||u!==0)&&Qf(o,t)&&(i+=u,l+=c),o===(n??document.documentElement)?a=!0:o=o._$host??o.parentElement}while(o&&!a);return[i,l]},[Ms,Ts]=z([]),Xf=e=>Ms().indexOf(e)===Ms().length-1,Zf=e=>{let t=W({element:null,enabled:!0,hideScrollbar:!0,preventScrollbarShift:!0,preventScrollbarShiftMode:"padding",restoreScrollPosition:!0,allowPinchZoom:!1},e),n=Ke(),r=[0,0],o=null,i=null;B(()=>{Ie(t.enabled)&&(Ts(c=>[...c,n]),U(()=>{Ts(c=>c.filter(d=>d!==n))}))}),B(()=>{if(!Ie(t.enabled)||!Ie(t.hideScrollbar))return;let{body:c}=document,d=window.innerWidth-c.offsetWidth;if(Ie(t.preventScrollbarShift)){let u={overflow:"hidden"},g=[];d>0&&(Ie(t.preventScrollbarShiftMode)==="padding"?u.paddingRight=`calc(${window.getComputedStyle(c).paddingRight} + ${d}px)`:u.marginRight=`calc(${window.getComputedStyle(c).marginRight} + ${d}px)`,g.push({key:"--scrollbar-width",value:`${d}px`}));let f=window.scrollY,h=window.scrollX;As({key:"prevent-scroll",element:c,style:u,properties:g,cleanup:()=>{Ie(t.restoreScrollPosition)&&d>0&&window.scrollTo(h,f)}})}else As({key:"prevent-scroll",element:c,style:{overflow:"hidden"}})}),B(()=>{!Xf(n)||!Ie(t.enabled)||(document.addEventListener("wheel",a,{passive:!1}),document.addEventListener("touchstart",l,{passive:!1}),document.addEventListener("touchmove",s,{passive:!1}),U(()=>{document.removeEventListener("wheel",a),document.removeEventListener("touchstart",l),document.removeEventListener("touchmove",s)}))});let l=c=>{r=Os(c),o=null,i=null},a=c=>{let d=c.target,u=Ie(t.element),g=Jf(c),f=Math.abs(g[0])>Math.abs(g[1])?"x":"y",h=f==="x"?g[0]:g[1],y=Ds(d,f,h,u),m;u&&fo(u,d)?m=!y:m=!0,m&&c.cancelable&&c.preventDefault()},s=c=>{let d=Ie(t.element),u=c.target,g;if(c.touches.length===2)g=!Ie(t.allowPinchZoom);else{if(o==null||i===null){let f=Os(c).map((y,m)=>r[m]-y),h=Math.abs(f[0])>Math.abs(f[1])?"x":"y";o=h,i=h==="x"?f[0]:f[1]}if(u.type==="range")g=!1;else{let f=Ds(u,o,i,d);d&&fo(d,u)?g=!f:g=!0}}g&&c.cancelable&&c.preventDefault()}},Jf=e=>[e.deltaX,e.deltaY],Os=e=>e.changedTouches[0]?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0],Ds=(e,t,n,r)=>{let o=r!==null&&fo(r,e),[i,l]=Yf(e,t,o?r:void 0);return!(n>0&&Math.abs(i)<=1||n<0&&Math.abs(l)<1)},fo=(e,t)=>{if(e.contains(t))return!0;let n=t;for(;n;){if(n===e)return!0;n=n._$host??n.parentElement}return!1},e0=Zf,t0=e0,Vl=ke();function Ul(){return Se(Vl)}function Et(){let e=Ul();if(e===void 0)throw new Error("[kobalte]: `useMenuContext` must be used within a `Menu` component");return e}var Gl=ke();function To(){let e=Se(Gl);if(e===void 0)throw new Error("[kobalte]: `useMenuItemContext` must be used within a `Menu.Item` component");return e}var Hl=ke();function ft(){let e=Se(Hl);if(e===void 0)throw new Error("[kobalte]: `useMenuRootContext` must be used within a `MenuRoot` component");return e}function Oo(e){let t,n=ft(),r=Et(),o=J({id:n.generateId(`item-${Ke()}`)},e),[i,l]=ee(o,["ref","textValue","disabled","closeOnSelect","checked","indeterminate","onSelect","onPointerMove","onPointerLeave","onPointerDown","onPointerUp","onClick","onKeyDown","onMouseDown","onFocus"]),[a,s]=z(),[c,d]=z(),[u,g]=z(),f=()=>r.listState().selectionManager(),h=()=>l.id,y=()=>f().focusedKey()===h(),m=()=>{i.onSelect?.(),i.closeOnSelect&&setTimeout(()=>{r.close(!0)})};ad({getItem:()=>({ref:()=>t,type:"item",key:h(),textValue:i.textValue??u()?.textContent??t?.textContent??"",disabled:i.disabled??!1})});let p=hl({key:h,selectionManager:f,shouldSelectOnPressUp:!0,allowsDifferentPressOrigin:!0,disabled:()=>i.disabled},()=>t),b=$=>{ye($,i.onPointerMove),$.pointerType==="mouse"&&(i.disabled?r.onItemLeave($):(r.onItemEnter($),$.defaultPrevented||(Pe($.currentTarget),r.listState().selectionManager().setFocused(!0),r.listState().selectionManager().setFocusedKey(h()))))},w=$=>{ye($,i.onPointerLeave),$.pointerType==="mouse"&&r.onItemLeave($)},x=$=>{ye($,i.onPointerUp),!i.disabled&&$.button===0&&m()},C=$=>{if(ye($,i.onKeyDown),!$.repeat&&!i.disabled)switch($.key){case"Enter":case" ":m();break}},P=k(()=>{if(i.indeterminate)return"mixed";if(i.checked!=null)return i.checked}),D=k(()=>({"data-indeterminate":i.indeterminate?"":void 0,"data-checked":i.checked&&!i.indeterminate?"":void 0,"data-disabled":i.disabled?"":void 0,"data-highlighted":y()?"":void 0})),F={isChecked:()=>i.checked,dataset:D,setLabelRef:g,generateId:Nn(()=>l.id),registerLabel:Ye(s),registerDescription:Ye(d)};return v(Gl.Provider,{value:F,get children(){return v(me,W({as:"div",ref($){let q=qe(j=>t=j,i.ref);typeof q=="function"&&q($)},get tabIndex(){return p.tabIndex()},get"aria-checked"(){return P()},get"aria-disabled"(){return i.disabled},get"aria-labelledby"(){return a()},get"aria-describedby"(){return c()},get"data-key"(){return p.dataKey()},get onPointerDown(){return Ee([i.onPointerDown,p.onPointerDown])},get onPointerUp(){return Ee([x,p.onPointerUp])},get onClick(){return Ee([i.onClick,p.onClick])},get onKeyDown(){return Ee([C,p.onKeyDown])},get onMouseDown(){return Ee([i.onMouseDown,p.onMouseDown])},get onFocus(){return Ee([i.onFocus,p.onFocus])},onPointerMove:b,onPointerLeave:w},D,l))}})}function jl(e){let t=J({closeOnSelect:!1},e),[n,r]=ee(t,["checked","defaultChecked","onChange","onSelect"]),o=Ju({isSelected:()=>n.checked,defaultIsSelected:()=>n.defaultChecked,onSelectedChange:l=>n.onChange?.(l),isDisabled:()=>r.disabled});return v(Oo,W({role:"menuitemcheckbox",get checked(){return o.isSelected()},onSelect:()=>{n.onSelect?.(),o.toggle()}},r))}var n0=ke();function Or(){return Se(n0)}var Bn={next:(e,t)=>e==="ltr"?t==="horizontal"?"ArrowRight":"ArrowDown":t==="horizontal"?"ArrowLeft":"ArrowUp",previous:(e,t)=>Bn.next(e==="ltr"?"rtl":"ltr",t)},Is={first:e=>e==="horizontal"?"ArrowDown":"ArrowRight",last:e=>e==="horizontal"?"ArrowUp":"ArrowLeft"};function Wl(e){let t=ft(),n=Et(),r=Or(),{direction:o}=Rt(),i=J({id:t.generateId("trigger")},e),[l,a]=ee(i,["ref","id","disabled","onPointerDown","onClick","onKeyDown","onMouseOver","onFocus"]),s=()=>t.value();r!==void 0&&(s=()=>t.value()??l.id,r.lastValue()===void 0&&r.setLastValue(s));let c=Er(()=>n.triggerRef(),()=>"button"),d=k(()=>c()==="a"&&n.triggerRef()?.getAttribute("href")!=null);B(at(()=>r?.value(),p=>{d()&&p===s()&&n.triggerRef()?.focus()}));let u=()=>{r!==void 0?n.isOpen()?r.value()===s()&&r.closeMenu():(r.autoFocusMenu()||r.setAutoFocusMenu(!0),n.open(!1)):n.toggle(!0)},g=p=>{ye(p,l.onPointerDown),p.currentTarget.dataset.pointerType=p.pointerType,!l.disabled&&p.pointerType!=="touch"&&p.button===0&&u()},f=p=>{ye(p,l.onClick),l.disabled||p.currentTarget.dataset.pointerType==="touch"&&u()},h=p=>{if(ye(p,l.onKeyDown),!l.disabled){if(d())switch(p.key){case"Enter":case" ":return}switch(p.key){case"Enter":case" ":case Is.first(t.orientation()):p.stopPropagation(),p.preventDefault(),Gu(p.currentTarget),n.open("first"),r?.setAutoFocusMenu(!0),r?.setValue(s);break;case Is.last(t.orientation()):p.stopPropagation(),p.preventDefault(),n.open("last");break;case Bn.next(o(),t.orientation()):if(r===void 0)break;p.stopPropagation(),p.preventDefault(),r.nextMenu();break;case Bn.previous(o(),t.orientation()):if(r===void 0)break;p.stopPropagation(),p.preventDefault(),r.previousMenu();break}}},y=p=>{ye(p,l.onMouseOver),n.triggerRef()?.dataset.pointerType!=="touch"&&!l.disabled&&r!==void 0&&r.value()!==void 0&&r.setValue(s)},m=p=>{ye(p,l.onFocus),r!==void 0&&p.currentTarget.dataset.pointerType!=="touch"&&r.setValue(s)};return B(()=>U(n.registerTriggerId(l.id))),v(wo,W({ref(p){let b=qe(n.setTriggerRef,l.ref);typeof b=="function"&&b(p)},get"data-kb-menu-value-trigger"(){return t.value()},get id(){return l.id},get disabled(){return l.disabled},"aria-haspopup":"true",get"aria-expanded"(){return n.isOpen()},get"aria-controls"(){return k(()=>!!n.isOpen())()?n.contentId():void 0},get"data-highlighted"(){return s()!==void 0&&r?.value()===s()?!0:void 0},get tabIndex(){return r!==void 0?r.value()===s()||r.lastValue()===s()?0:-1:void 0},onPointerDown:g,onMouseOver:y,onClick:f,onKeyDown:h,onFocus:m,role:r!==void 0?"menuitem":void 0},()=>n.dataset(),a))}var r0=ke();function Ql(){return Se(r0)}function Yl(e){let t,n=ft(),r=Et(),o=Or(),i=Ql(),{direction:l}=Rt(),a=J({id:n.generateId(`content-${Ke()}`)},e),[s,c]=ee(a,["ref","id","style","onOpenAutoFocus","onCloseAutoFocus","onEscapeKeyDown","onFocusOutside","onPointerEnter","onPointerMove","onKeyDown","onMouseDown","onFocusIn","onFocusOut"]),d=0,u=()=>r.parentMenuContext()==null&&o===void 0&&n.isModal(),g=Nf({selectionManager:r.listState().selectionManager,collection:r.listState().collection,autoFocus:r.autoFocus,deferAutoFocus:!0,shouldFocusWrap:!0,disallowTypeAhead:()=>!r.listState().selectionManager().isFocused(),orientation:()=>n.orientation()==="horizontal"?"vertical":"horizontal"},()=>t);Vf({trapFocus:()=>u()&&r.isOpen(),onMountAutoFocus:w=>{o===void 0&&s.onOpenAutoFocus?.(w)},onUnmountAutoFocus:s.onCloseAutoFocus},()=>t);let f=w=>{if(Qe(w.currentTarget,w.target)&&(w.key==="Tab"&&r.isOpen()&&w.preventDefault(),o!==void 0&&w.currentTarget.getAttribute("aria-haspopup")!=="true"))switch(w.key){case Bn.next(l(),n.orientation()):w.stopPropagation(),w.preventDefault(),r.close(!0),o.setAutoFocusMenu(!0),o.nextMenu();break;case Bn.previous(l(),n.orientation()):if(w.currentTarget.hasAttribute("data-closed"))break;w.stopPropagation(),w.preventDefault(),r.close(!0),o.setAutoFocusMenu(!0),o.previousMenu();break}},h=w=>{s.onEscapeKeyDown?.(w),o?.setAutoFocusMenu(!1),r.close(!0)},y=w=>{s.onFocusOutside?.(w),n.isModal()&&w.preventDefault()},m=w=>{ye(w,s.onPointerEnter),r.isOpen()&&(r.parentMenuContext()?.listState().selectionManager().setFocused(!1),r.parentMenuContext()?.listState().selectionManager().setFocusedKey(void 0))},p=w=>{if(ye(w,s.onPointerMove),w.pointerType!=="mouse")return;let x=w.target,C=d!==w.clientX;Qe(w.currentTarget,x)&&C&&(r.setPointerDir(w.clientX>d?"right":"left"),d=w.clientX)};B(()=>U(r.registerContentId(s.id)));let b={ref:qe(w=>{r.setContentRef(w),t=w},s.ref),role:"menu",get id(){return s.id},get tabIndex(){return g.tabIndex()},get"aria-labelledby"(){return r.triggerId()},onKeyDown:Ee([s.onKeyDown,g.onKeyDown,f]),onMouseDown:Ee([s.onMouseDown,g.onMouseDown]),onFocusIn:Ee([s.onFocusIn,g.onFocusIn]),onFocusOut:Ee([s.onFocusOut,g.onFocusOut]),onPointerEnter:m,onPointerMove:p,get"data-orientation"(){return n.orientation()}};return v(N,{get when(){return r.contentPresent()},get children(){return v(N,{get when(){return i===void 0||r.parentMenuContext()!=null},get fallback(){return v(me,W({as:"div"},()=>r.dataset(),b,c))},get children(){return v(Tl.Positioner,{get children(){return v(zf,W({get disableOutsidePointerEvents(){return k(()=>!!u())()&&r.isOpen()},get excludedElements(){return[r.triggerRef]},bypassTopMostLayerCheck:!0,get style(){return $r({"--kb-menu-content-transform-origin":"var(--kb-popper-content-transform-origin)",position:"relative"},s.style)},onEscapeKeyDown:h,onFocusOutside:y,get onDismiss(){return r.close}},()=>r.dataset(),b,c))}})}})}})}function o0(e){let t,n=ft(),r=Et(),[o,i]=ee(e,["ref"]);return t0({element:()=>t??null,enabled:()=>r.contentPresent()&&n.preventScroll()}),v(Yl,W({ref(l){let a=qe(s=>{t=s},o.ref);typeof a=="function"&&a(l)}},i))}var Xl=ke();function i0(){let e=Se(Xl);if(e===void 0)throw new Error("[kobalte]: `useMenuGroupContext` must be used within a `Menu.Group` component");return e}function Do(e){let t=ft(),n=J({id:t.generateId(`group-${Ke()}`)},e),[r,o]=z(),i={generateId:Nn(()=>n.id),registerLabelId:Ye(o)};return v(Xl.Provider,{value:i,get children(){return v(me,W({as:"div",role:"group",get"aria-labelledby"(){return r()}},n))}})}function Zl(e){let t=i0(),n=J({id:t.generateId("label")},e),[r,o]=ee(n,["id"]);return B(()=>U(t.registerLabelId(r.id))),v(me,W({as:"span",get id(){return r.id},"aria-hidden":"true"},o))}function Jl(e){let t=Et(),n=J({children:"\u25BC"},e);return v(me,W({as:"span","aria-hidden":"true"},()=>t.dataset(),n))}function ea(e){return v(Oo,W({role:"menuitem",closeOnSelect:!0},e))}function ta(e){let t=To(),n=J({id:t.generateId("description")},e),[r,o]=ee(n,["id"]);return B(()=>U(t.registerDescription(r.id))),v(me,W({as:"div",get id(){return r.id}},()=>t.dataset(),o))}function na(e){let t=To(),n=J({id:t.generateId("indicator")},e),[r,o]=ee(n,["forceMount"]);return v(N,{get when(){return r.forceMount||t.isChecked()},get children(){return v(me,W({as:"div"},()=>t.dataset(),o))}})}function ra(e){let t=To(),n=J({id:t.generateId("label")},e),[r,o]=ee(n,["ref","id"]);return B(()=>U(t.registerLabel(r.id))),v(me,W({as:"div",ref(i){let l=qe(t.setLabelRef,r.ref);typeof l=="function"&&l(i)},get id(){return r.id}},()=>t.dataset(),o))}function oa(e){let t=Et();return v(N,{get when(){return t.contentPresent()},get children(){return v(jr,e)}})}var ia=ke();function s0(){let e=Se(ia);if(e===void 0)throw new Error("[kobalte]: `useMenuRadioGroupContext` must be used within a `Menu.RadioGroup` component");return e}function sa(e){let n=ft().generateId(`radiogroup-${Ke()}`),r=J({id:n},e),[o,i]=ee(r,["value","defaultValue","onChange","disabled"]),[l,a]=Un({value:()=>o.value,defaultValue:()=>o.defaultValue,onChange:c=>o.onChange?.(c)}),s={isDisabled:()=>o.disabled,isSelectedValue:c=>c===l(),setSelectedValue:a};return v(ia.Provider,{value:s,get children(){return v(Do,i)}})}function la(e){let t=s0(),n=J({closeOnSelect:!1},e),[r,o]=ee(n,["value","onSelect"]);return v(Oo,W({role:"menuitemradio",get checked(){return t.isSelectedValue(r.value)},onSelect:()=>{r.onSelect?.(),t.setSelectedValue(r.value)}},o))}function l0(e,t,n){let r=e.split("-")[0],o=n.getBoundingClientRect(),i=[],l=t.clientX,a=t.clientY;switch(r){case"top":i.push([l,a+5]),i.push([o.left,o.bottom]),i.push([o.left,o.top]),i.push([o.right,o.top]),i.push([o.right,o.bottom]);break;case"right":i.push([l-5,a]),i.push([o.left,o.top]),i.push([o.right,o.top]),i.push([o.right,o.bottom]),i.push([o.left,o.bottom]);break;case"bottom":i.push([l,a-5]),i.push([o.right,o.top]),i.push([o.right,o.bottom]),i.push([o.left,o.bottom]),i.push([o.left,o.top]);break;case"left":i.push([l+5,a]),i.push([o.right,o.bottom]),i.push([o.left,o.bottom]),i.push([o.left,o.top]),i.push([o.right,o.top]);break}return i}function a0(e,t){return t?Uu([e.clientX,e.clientY],t):!1}function aa(e){let t=ft(),n=ll(),r=Ul(),o=Or(),i=Ql(),l=J({placement:t.orientation()==="horizontal"?"bottom-start":"right-start"},e),[a,s]=ee(l,["open","defaultOpen","onOpenChange"]),c=0,d=null,u="right",[g,f]=z(),[h,y]=z(),[m,p]=z(),[b,w]=z(),[x,C]=z(!0),[P,D]=z(s.placement),[F,$]=z([]),[q,j]=z([]),{DomCollectionProvider:G}=ld({items:q,onItemsChange:j}),se=Dl({open:()=>a.open,defaultOpen:()=>a.defaultOpen,onOpenChange:H=>a.onOpenChange?.(H)}),{present:oe}=yl({show:()=>t.forceMount()||se.isOpen(),element:()=>b()??null}),fe=kd({selectionMode:"none",dataSource:q}),ce=H=>{C(H),se.open()},le=(H=!1)=>{se.close(),H&&r&&r.close(!0)},ue=H=>{C(H),se.toggle()},ge=()=>{let H=b();H&&(Pe(H),fe.selectionManager().setFocused(!0),fe.selectionManager().setFocusedKey(void 0))},Ce=()=>{i!=null?setTimeout(()=>ge()):ge()},_e=H=>{$(Te=>[...Te,H]);let Je=r?.registerNestedMenu(H);return()=>{$(Te=>oo(Te,H)),Je?.()}},be=H=>u===d?.side&&a0(H,d?.area),Fe=H=>{be(H)&&H.preventDefault()},O=H=>{be(H)||Ce()},pe=H=>{be(H)&&H.preventDefault()};Gf({isDisabled:()=>!(r==null&&se.isOpen()&&t.isModal()),targets:()=>[b(),...F()].filter(Boolean)}),B(()=>{let H=b();if(!H||!r)return;let Je=r.registerNestedMenu(H);U(()=>{Je()})}),B(()=>{r===void 0&&o?.registerMenu(t.value(),[b(),...F()])}),B(()=>{r!==void 0||o===void 0||(o.value()===t.value()?(m()?.focus(),o.autoFocusMenu()&&ce(!0)):le())}),B(()=>{r!==void 0||o===void 0||se.isOpen()&&o.setValue(t.value())}),U(()=>{r===void 0&&o?.unregisterMenu(t.value())});let At={dataset:k(()=>({"data-expanded":se.isOpen()?"":void 0,"data-closed":se.isOpen()?void 0:""})),isOpen:se.isOpen,contentPresent:oe,nestedMenus:F,currentPlacement:P,pointerGraceTimeoutId:()=>c,autoFocus:x,listState:()=>fe,parentMenuContext:()=>r,triggerRef:m,contentRef:b,triggerId:g,contentId:h,setTriggerRef:p,setContentRef:w,open:ce,close:le,toggle:ue,focusContent:Ce,onItemEnter:Fe,onItemLeave:O,onTriggerLeave:pe,setPointerDir:H=>u=H,setPointerGraceTimeoutId:H=>c=H,setPointerGraceIntent:H=>d=H,registerNestedMenu:_e,registerItemToParentDomCollection:n?.registerItem,registerTriggerId:Ye(f),registerContentId:Ye(y)};return v(G,{get children(){return v(Vl.Provider,{value:At,get children(){return v(N,{when:i===void 0,get fallback(){return s.children},get children(){return v(Tl,W({anchorRef:m,contentRef:b,onCurrentPlacementChange:D},s))}})}})}})}function ca(e){let{direction:t}=Rt();return v(aa,W({get placement(){return t()==="rtl"?"left-start":"right-start"},flip:!0},e))}var c0={close:(e,t)=>e==="ltr"?[t==="horizontal"?"ArrowLeft":"ArrowUp"]:[t==="horizontal"?"ArrowRight":"ArrowDown"]};function ua(e){let t=Et(),n=ft(),[r,o]=ee(e,["onFocusOutside","onKeyDown"]),{direction:i}=Rt();return v(Yl,W({onOpenAutoFocus:d=>{d.preventDefault()},onCloseAutoFocus:d=>{d.preventDefault()},onFocusOutside:d=>{r.onFocusOutside?.(d);let u=d.target;Qe(t.triggerRef(),u)||t.close()},onKeyDown:d=>{ye(d,r.onKeyDown);let u=Qe(d.currentTarget,d.target),g=c0.close(i(),n.orientation()).includes(d.key),f=t.parentMenuContext()!=null;u&&g&&f&&(t.close(),Pe(t.triggerRef()))}},o))}var Ps=["Enter"," "],u0={open:(e,t)=>e==="ltr"?[...Ps,t==="horizontal"?"ArrowRight":"ArrowDown"]:[...Ps,t==="horizontal"?"ArrowLeft":"ArrowUp"]};function da(e){let t,n=ft(),r=Et(),o=J({id:n.generateId(`sub-trigger-${Ke()}`)},e),[i,l]=ee(o,["ref","id","textValue","disabled","onPointerMove","onPointerLeave","onPointerDown","onPointerUp","onClick","onKeyDown","onMouseDown","onFocus"]),a=null,s=()=>{De||(a&&window.clearTimeout(a),a=null)},{direction:c}=Rt(),d=()=>i.id,u=()=>{let w=r.parentMenuContext();if(w==null)throw new Error("[kobalte]: `Menu.SubTrigger` must be used within a `Menu.Sub` component");return w.listState().selectionManager()},g=()=>r.listState().collection(),f=()=>u().focusedKey()===d(),h=hl({key:d,selectionManager:u,shouldSelectOnPressUp:!0,allowsDifferentPressOrigin:!0,disabled:()=>i.disabled},()=>t),y=w=>{ye(w,i.onClick),!r.isOpen()&&!i.disabled&&r.open(!0)},m=w=>{if(ye(w,i.onPointerMove),w.pointerType!=="mouse")return;let x=r.parentMenuContext();if(x?.onItemEnter(w),!w.defaultPrevented){if(i.disabled){x?.onItemLeave(w);return}!r.isOpen()&&!a&&(r.parentMenuContext()?.setPointerGraceIntent(null),a=window.setTimeout(()=>{r.open(!1),s()},100)),x?.onItemEnter(w),w.defaultPrevented||(r.listState().selectionManager().isFocused()&&(r.listState().selectionManager().setFocused(!1),r.listState().selectionManager().setFocusedKey(void 0)),Pe(w.currentTarget),x?.listState().selectionManager().setFocused(!0),x?.listState().selectionManager().setFocusedKey(d()))}},p=w=>{if(ye(w,i.onPointerLeave),w.pointerType!=="mouse")return;s();let x=r.parentMenuContext(),C=r.contentRef();if(C){x?.setPointerGraceIntent({area:l0(r.currentPlacement(),w,C),side:r.currentPlacement().split("-")[0]}),window.clearTimeout(x?.pointerGraceTimeoutId());let P=window.setTimeout(()=>{x?.setPointerGraceIntent(null)},300);x?.setPointerGraceTimeoutId(P)}else{if(x?.onTriggerLeave(w),w.defaultPrevented)return;x?.setPointerGraceIntent(null)}x?.onItemLeave(w)},b=w=>{ye(w,i.onKeyDown),!w.repeat&&(i.disabled||u0.open(c(),n.orientation()).includes(w.key)&&(w.stopPropagation(),w.preventDefault(),u().setFocused(!1),u().setFocusedKey(void 0),r.isOpen()||r.open("first"),r.focusContent(),r.listState().selectionManager().setFocused(!0),r.listState().selectionManager().setFocusedKey(g().getFirstKey())))};return B(()=>{if(r.registerItemToParentDomCollection==null)throw new Error("[kobalte]: `Menu.SubTrigger` must be used within a `Menu.Sub` component");let w=r.registerItemToParentDomCollection({ref:()=>t,type:"item",key:d(),textValue:i.textValue??t?.textContent??"",disabled:i.disabled??!1});U(w)}),B(at(()=>r.parentMenuContext()?.pointerGraceTimeoutId(),w=>{U(()=>{window.clearTimeout(w),r.parentMenuContext()?.setPointerGraceIntent(null)})})),B(()=>U(r.registerTriggerId(i.id))),U(()=>{s()}),v(me,W({as:"div",ref(w){let x=qe(C=>{r.setTriggerRef(C),t=C},i.ref);typeof x=="function"&&x(w)},get id(){return i.id},role:"menuitem",get tabIndex(){return h.tabIndex()},"aria-haspopup":"true",get"aria-expanded"(){return r.isOpen()},get"aria-controls"(){return k(()=>!!r.isOpen())()?r.contentId():void 0},get"aria-disabled"(){return i.disabled},get"data-key"(){return h.dataKey()},get"data-highlighted"(){return f()?"":void 0},get"data-disabled"(){return i.disabled?"":void 0},get onPointerDown(){return Ee([i.onPointerDown,h.onPointerDown])},get onPointerUp(){return Ee([i.onPointerUp,h.onPointerUp])},get onClick(){return Ee([y,h.onClick])},get onKeyDown(){return Ee([b,h.onKeyDown])},get onMouseDown(){return Ee([i.onMouseDown,h.onMouseDown])},get onFocus(){return Ee([i.onFocus,h.onFocus])},onPointerMove:m,onPointerLeave:p},()=>r.dataset(),l))}function d0(e){let t=Or(),n=`menu-${Ke()}`,r=J({id:n,modal:!0},e),[o,i]=ee(r,["id","modal","preventScroll","forceMount","open","defaultOpen","onOpenChange","value","orientation"]),l=Dl({open:()=>o.open,defaultOpen:()=>o.defaultOpen,onOpenChange:s=>o.onOpenChange?.(s)}),a={isModal:()=>o.modal??!0,preventScroll:()=>o.preventScroll??a.isModal(),forceMount:()=>o.forceMount??!1,generateId:Nn(()=>o.id),value:()=>o.value,orientation:()=>o.orientation??t?.orientation()??"horizontal"};return v(Hl.Provider,{value:a,get children(){return v(aa,W({get open(){return l.isOpen()},get onOpenChange(){return l.setIsOpen}},i))}})}var f0={};Ar(f0,{Root:()=>Dr,Separator:()=>g0});function Dr(e){let t,n=J({orientation:"horizontal"},e),[r,o]=ee(n,["ref","orientation"]),i=Er(()=>t,()=>"hr");return v(me,W({as:"hr",ref(l){let a=qe(s=>t=s,r.ref);typeof a=="function"&&a(l)},get role(){return i()!=="hr"?"separator":void 0},get"aria-orientation"(){return r.orientation==="vertical"?"vertical":void 0},get"data-orientation"(){return r.orientation}},o))}var g0=Dr,xe={};Ar(xe,{Arrow:()=>Mo,CheckboxItem:()=>jl,Content:()=>fa,DropdownMenu:()=>h0,Group:()=>Do,GroupLabel:()=>Zl,Icon:()=>Jl,Item:()=>ea,ItemDescription:()=>ta,ItemIndicator:()=>na,ItemLabel:()=>ra,Portal:()=>oa,RadioGroup:()=>sa,RadioItem:()=>la,Root:()=>ga,Separator:()=>Dr,Sub:()=>ca,SubContent:()=>ua,SubTrigger:()=>da,Trigger:()=>Wl});function fa(e){let t=ft(),n=Et(),[r,o]=ee(e,["onCloseAutoFocus","onInteractOutside"]),i=!1;return v(o0,W({onCloseAutoFocus:s=>{r.onCloseAutoFocus?.(s),i||Pe(n.triggerRef()),i=!1,s.preventDefault()},onInteractOutside:s=>{r.onInteractOutside?.(s),(!t.isModal()||s.detail.isContextMenu)&&(i=!0)}},o))}function ga(e){let t=`dropdownmenu-${Ke()}`,n=J({id:t},e);return v(d0,n)}var h0=Object.assign(ga,{Arrow:Mo,CheckboxItem:jl,Content:fa,Group:Do,GroupLabel:Zl,Icon:Jl,Item:ea,ItemDescription:ta,ItemIndicator:na,ItemLabel:ra,Portal:oa,RadioGroup:sa,RadioItem:la,Separator:Dr,Sub:ca,SubContent:ua,SubTrigger:da,Trigger:Wl}),S={colors:{inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000000",white:"#ffffff",neutral:{50:"#f9fafb",100:"#f2f4f7",200:"#eaecf0",300:"#d0d5dd",400:"#98a2b3",500:"#667085",600:"#475467",700:"#344054",800:"#1d2939",900:"#101828"},darkGray:{50:"#525c7a",100:"#49536e",200:"#414962",300:"#394056",400:"#313749",500:"#292e3d",600:"#212530",700:"#191c24",800:"#111318",900:"#0b0d10"},gray:{50:"#f9fafb",100:"#f2f4f7",200:"#eaecf0",300:"#d0d5dd",400:"#98a2b3",500:"#667085",600:"#475467",700:"#344054",800:"#1d2939",900:"#101828"},blue:{25:"#F5FAFF",50:"#EFF8FF",100:"#D1E9FF",200:"#B2DDFF",300:"#84CAFF",400:"#53B1FD",500:"#2E90FA",600:"#1570EF",700:"#175CD3",800:"#1849A9",900:"#194185"},green:{25:"#F6FEF9",50:"#ECFDF3",100:"#D1FADF",200:"#A6F4C5",300:"#6CE9A6",400:"#32D583",500:"#12B76A",600:"#039855",700:"#027A48",800:"#05603A",900:"#054F31"},red:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d",950:"#450a0a"},yellow:{25:"#FFFCF5",50:"#FFFAEB",100:"#FEF0C7",200:"#FEDF89",300:"#FEC84B",400:"#FDB022",500:"#F79009",600:"#DC6803",700:"#B54708",800:"#93370D",900:"#7A2E0E"},purple:{25:"#FAFAFF",50:"#F4F3FF",100:"#EBE9FE",200:"#D9D6FE",300:"#BDB4FE",400:"#9B8AFB",500:"#7A5AF8",600:"#6938EF",700:"#5925DC",800:"#4A1FB8",900:"#3E1C96"},teal:{25:"#F6FEFC",50:"#F0FDF9",100:"#CCFBEF",200:"#99F6E0",300:"#5FE9D0",400:"#2ED3B7",500:"#15B79E",600:"#0E9384",700:"#107569",800:"#125D56",900:"#134E48"},pink:{25:"#fdf2f8",50:"#fce7f3",100:"#fbcfe8",200:"#f9a8d4",300:"#f472b6",400:"#ec4899",500:"#db2777",600:"#be185d",700:"#9d174d",800:"#831843",900:"#500724"},cyan:{25:"#ecfeff",50:"#cffafe",100:"#a5f3fc",200:"#67e8f9",300:"#22d3ee",400:"#06b6d4",500:"#0891b2",600:"#0e7490",700:"#155e75",800:"#164e63",900:"#083344"}},alpha:{100:"ff",90:"e5",80:"cc",70:"b3",60:"99",50:"80",40:"66",30:"4d",20:"33",10:"1a",0:"00"},font:{size:{"2xs":"calc(var(--tsqd-font-size) * 0.625)",xs:"calc(var(--tsqd-font-size) * 0.75)",sm:"calc(var(--tsqd-font-size) * 0.875)",md:"var(--tsqd-font-size)",lg:"calc(var(--tsqd-font-size) * 1.125)",xl:"calc(var(--tsqd-font-size) * 1.25)","2xl":"calc(var(--tsqd-font-size) * 1.5)","3xl":"calc(var(--tsqd-font-size) * 1.875)","4xl":"calc(var(--tsqd-font-size) * 2.25)","5xl":"calc(var(--tsqd-font-size) * 3)","6xl":"calc(var(--tsqd-font-size) * 3.75)","7xl":"calc(var(--tsqd-font-size) * 4.5)","8xl":"calc(var(--tsqd-font-size) * 6)","9xl":"calc(var(--tsqd-font-size) * 8)"},lineHeight:{xs:"calc(var(--tsqd-font-size) * 1)",sm:"calc(var(--tsqd-font-size) * 1.25)",md:"calc(var(--tsqd-font-size) * 1.5)",lg:"calc(var(--tsqd-font-size) * 1.75)",xl:"calc(var(--tsqd-font-size) * 2)","2xl":"calc(var(--tsqd-font-size) * 2.25)","3xl":"calc(var(--tsqd-font-size) * 2.5)","4xl":"calc(var(--tsqd-font-size) * 2.75)","5xl":"calc(var(--tsqd-font-size) * 3)","6xl":"calc(var(--tsqd-font-size) * 3.25)","7xl":"calc(var(--tsqd-font-size) * 3.5)","8xl":"calc(var(--tsqd-font-size) * 3.75)","9xl":"calc(var(--tsqd-font-size) * 4)"},weight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"}},breakpoints:{xs:"320px",sm:"640px",md:"768px",lg:"1024px",xl:"1280px","2xl":"1536px"},border:{radius:{none:"0px",xs:"calc(var(--tsqd-font-size) * 0.125)",sm:"calc(var(--tsqd-font-size) * 0.25)",md:"calc(var(--tsqd-font-size) * 0.375)",lg:"calc(var(--tsqd-font-size) * 0.5)",xl:"calc(var(--tsqd-font-size) * 0.75)","2xl":"calc(var(--tsqd-font-size) * 1)","3xl":"calc(var(--tsqd-font-size) * 1.5)",full:"9999px"}},size:{0:"0px",.25:"calc(var(--tsqd-font-size) * 0.0625)",.5:"calc(var(--tsqd-font-size) * 0.125)",1:"calc(var(--tsqd-font-size) * 0.25)",1.5:"calc(var(--tsqd-font-size) * 0.375)",2:"calc(var(--tsqd-font-size) * 0.5)",2.5:"calc(var(--tsqd-font-size) * 0.625)",3:"calc(var(--tsqd-font-size) * 0.75)",3.5:"calc(var(--tsqd-font-size) * 0.875)",4:"calc(var(--tsqd-font-size) * 1)",4.5:"calc(var(--tsqd-font-size) * 1.125)",5:"calc(var(--tsqd-font-size) * 1.25)",5.5:"calc(var(--tsqd-font-size) * 1.375)",6:"calc(var(--tsqd-font-size) * 1.5)",6.5:"calc(var(--tsqd-font-size) * 1.625)",7:"calc(var(--tsqd-font-size) * 1.75)",8:"calc(var(--tsqd-font-size) * 2)",9:"calc(var(--tsqd-font-size) * 2.25)",10:"calc(var(--tsqd-font-size) * 2.5)",11:"calc(var(--tsqd-font-size) * 2.75)",12:"calc(var(--tsqd-font-size) * 3)",14:"calc(var(--tsqd-font-size) * 3.5)",16:"calc(var(--tsqd-font-size) * 4)",20:"calc(var(--tsqd-font-size) * 5)",24:"calc(var(--tsqd-font-size) * 6)",28:"calc(var(--tsqd-font-size) * 7)",32:"calc(var(--tsqd-font-size) * 8)",36:"calc(var(--tsqd-font-size) * 9)",40:"calc(var(--tsqd-font-size) * 10)",44:"calc(var(--tsqd-font-size) * 11)",48:"calc(var(--tsqd-font-size) * 12)",52:"calc(var(--tsqd-font-size) * 13)",56:"calc(var(--tsqd-font-size) * 14)",60:"calc(var(--tsqd-font-size) * 15)",64:"calc(var(--tsqd-font-size) * 16)",72:"calc(var(--tsqd-font-size) * 18)",80:"calc(var(--tsqd-font-size) * 20)",96:"calc(var(--tsqd-font-size) * 24)"},shadow:{xs:(e="rgb(0 0 0 / 0.1)")=>"0 1px 2px 0 rgb(0 0 0 / 0.05)",sm:(e="rgb(0 0 0 / 0.1)")=>`0 1px 3px 0 ${e}, 0 1px 2px -1px ${e}`,md:(e="rgb(0 0 0 / 0.1)")=>`0 4px 6px -1px ${e}, 0 2px 4px -2px ${e}`,lg:(e="rgb(0 0 0 / 0.1)")=>`0 10px 15px -3px ${e}, 0 4px 6px -4px ${e}`,xl:(e="rgb(0 0 0 / 0.1)")=>`0 20px 25px -5px ${e}, 0 8px 10px -6px ${e}`,"2xl":(e="rgb(0 0 0 / 0.25)")=>`0 25px 50px -12px ${e}`,inner:(e="rgb(0 0 0 / 0.05)")=>`inset 0 2px 4px 0 ${e}`,none:()=>"none"},zIndices:{hide:-1,auto:"auto",base:0,docked:10,dropdown:1e3,sticky:1100,banner:1200,overlay:1300,modal:1400,popover:1500,skipLink:1600,toast:1700,tooltip:1800}},y0=R('<svg width=14 height=14 viewBox="0 0 14 14"fill=none xmlns=http://www.w3.org/2000/svg><path d="M13 13L9.00007 9M10.3333 5.66667C10.3333 8.244 8.244 10.3333 5.66667 10.3333C3.08934 10.3333 1 8.244 1 5.66667C1 3.08934 3.08934 1 5.66667 1C8.244 1 10.3333 3.08934 10.3333 5.66667Z"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>'),m0=R('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M9 3H15M3 6H21M19 6L18.2987 16.5193C18.1935 18.0975 18.1409 18.8867 17.8 19.485C17.4999 20.0118 17.0472 20.4353 16.5017 20.6997C15.882 21 15.0911 21 13.5093 21H10.4907C8.90891 21 8.11803 21 7.49834 20.6997C6.95276 20.4353 6.50009 20.0118 6.19998 19.485C5.85911 18.8867 5.8065 18.0975 5.70129 16.5193L5 6M10 10.5V15.5M14 10.5V15.5"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),v0=R('<svg width=10 height=6 viewBox="0 0 10 6"fill=none xmlns=http://www.w3.org/2000/svg><path d="M1 1L5 5L9 1"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>'),p0=R('<svg width=12 height=12 viewBox="0 0 16 16"fill=none xmlns=http://www.w3.org/2000/svg><path d="M8 13.3333V2.66667M8 2.66667L4 6.66667M8 2.66667L12 6.66667"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>'),Io=R('<svg width=12 height=12 viewBox="0 0 16 16"fill=none xmlns=http://www.w3.org/2000/svg><path d="M8 2.66667V13.3333M8 13.3333L4 9.33333M8 13.3333L12 9.33333"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>'),b0=R('<svg viewBox="0 0 24 24"height=12 width=12 fill=none xmlns=http://www.w3.org/2000/svg><path d="M12 2v2m0 16v2M4 12H2m4.314-5.686L4.9 4.9m12.786 1.414L19.1 4.9M6.314 17.69 4.9 19.104m12.786-1.414 1.414 1.414M22 12h-2m-3 0a5 5 0 1 1-10 0 5 5 0 0 1 10 0Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),w0=R('<svg viewBox="0 0 24 24"height=12 width=12 fill=none xmlns=http://www.w3.org/2000/svg><path d="M22 15.844a10.424 10.424 0 0 1-4.306.925c-5.779 0-10.463-4.684-10.463-10.462 0-1.536.33-2.994.925-4.307A10.464 10.464 0 0 0 2 11.538C2 17.316 6.684 22 12.462 22c4.243 0 7.896-2.526 9.538-6.156Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),x0=R('<svg viewBox="0 0 24 24"height=12 width=12 fill=none xmlns=http://www.w3.org/2000/svg><path d="M8 21h8m-4-4v4m-5.2-4h10.4c1.68 0 2.52 0 3.162-.327a3 3 0 0 0 1.311-1.311C22 14.72 22 13.88 22 12.2V7.8c0-1.68 0-2.52-.327-3.162a3 3 0 0 0-1.311-1.311C19.72 3 18.88 3 17.2 3H6.8c-1.68 0-2.52 0-3.162.327a3 3 0 0 0-1.311 1.311C2 5.28 2 6.12 2 7.8v4.4c0 1.68 0 2.52.327 3.162a3 3 0 0 0 1.311 1.311C4.28 17 5.12 17 6.8 17Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),C0=R('<svg stroke=currentColor fill=currentColor stroke-width=0 viewBox="0 0 24 24"height=1em width=1em xmlns=http://www.w3.org/2000/svg><path fill=none d="M0 0h24v24H0z"></path><path d="M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3a4.237 4.237 0 00-6 0zm-4-4l2 2a7.074 7.074 0 0110 0l2-2C15.14 9.14 8.87 9.14 5 13z">'),S0=R('<svg stroke-width=0 viewBox="0 0 24 24"height=1em width=1em xmlns=http://www.w3.org/2000/svg><path fill=none d="M24 .01c0-.01 0-.01 0 0L0 0v24h24V.01zM0 0h24v24H0V0zm0 0h24v24H0V0z"></path><path d="M22.99 9C19.15 5.16 13.8 3.76 8.84 4.78l2.52 2.52c3.47-.17 6.99 1.05 9.63 3.7l2-2zm-4 4a9.793 9.793 0 00-4.49-2.56l3.53 3.53.96-.97zM2 3.05L5.07 6.1C3.6 6.82 2.22 7.78 1 9l1.99 2c1.24-1.24 2.67-2.16 4.2-2.77l2.24 2.24A9.684 9.684 0 005 13v.01L6.99 15a7.042 7.042 0 014.92-2.06L18.98 20l1.27-1.26L3.29 1.79 2 3.05zM9 17l3 3 3-3a4.237 4.237 0 00-6 0z">'),$0=R('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M9.3951 19.3711L9.97955 20.6856C10.1533 21.0768 10.4368 21.4093 10.7958 21.6426C11.1547 21.8759 11.5737 22.0001 12.0018 22C12.4299 22.0001 12.8488 21.8759 13.2078 21.6426C13.5667 21.4093 13.8503 21.0768 14.024 20.6856L14.6084 19.3711C14.8165 18.9047 15.1664 18.5159 15.6084 18.26C16.0532 18.0034 16.5678 17.8941 17.0784 17.9478L18.5084 18.1C18.9341 18.145 19.3637 18.0656 19.7451 17.8713C20.1265 17.6771 20.4434 17.3763 20.6573 17.0056C20.8715 16.635 20.9735 16.2103 20.9511 15.7829C20.9286 15.3555 20.7825 14.9438 20.5307 14.5978L19.684 13.4344C19.3825 13.0171 19.2214 12.5148 19.224 12C19.2239 11.4866 19.3865 10.9864 19.6884 10.5711L20.5351 9.40778C20.787 9.06175 20.933 8.65007 20.9555 8.22267C20.978 7.79528 20.8759 7.37054 20.6618 7C20.4479 6.62923 20.131 6.32849 19.7496 6.13423C19.3681 5.93997 18.9386 5.86053 18.5129 5.90556L17.0829 6.05778C16.5722 6.11141 16.0577 6.00212 15.6129 5.74556C15.17 5.48825 14.82 5.09736 14.6129 4.62889L14.024 3.31444C13.8503 2.92317 13.5667 2.59072 13.2078 2.3574C12.8488 2.12408 12.4299 1.99993 12.0018 2C11.5737 1.99993 11.1547 2.12408 10.7958 2.3574C10.4368 2.59072 10.1533 2.92317 9.97955 3.31444L9.3951 4.62889C9.18803 5.09736 8.83798 5.48825 8.3951 5.74556C7.95032 6.00212 7.43577 6.11141 6.9251 6.05778L5.49066 5.90556C5.06499 5.86053 4.6354 5.93997 4.25397 6.13423C3.87255 6.32849 3.55567 6.62923 3.34177 7C3.12759 7.37054 3.02555 7.79528 3.04804 8.22267C3.07052 8.65007 3.21656 9.06175 3.46844 9.40778L4.3151 10.5711C4.61704 10.9864 4.77964 11.4866 4.77955 12C4.77964 12.5134 4.61704 13.0137 4.3151 13.4289L3.46844 14.5922C3.21656 14.9382 3.07052 15.3499 3.04804 15.7773C3.02555 16.2047 3.12759 16.6295 3.34177 17C3.55589 17.3706 3.8728 17.6712 4.25417 17.8654C4.63554 18.0596 5.06502 18.1392 5.49066 18.0944L6.92066 17.9422C7.43133 17.8886 7.94587 17.9979 8.39066 18.2544C8.83519 18.511 9.18687 18.902 9.3951 19.3711Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round></path><path d="M12 15C13.6568 15 15 13.6569 15 12C15 10.3431 13.6568 9 12 9C10.3431 9 8.99998 10.3431 8.99998 12C8.99998 13.6569 10.3431 15 12 15Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),k0=R('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M16 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V7.8C21 6.11984 21 5.27976 20.673 4.63803C20.3854 4.07354 19.9265 3.6146 19.362 3.32698C18.7202 3 17.8802 3 16.2 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V8M11.5 12.5L17 7M17 7H12M17 7V12M6.2 21H8.8C9.9201 21 10.4802 21 10.908 20.782C11.2843 20.5903 11.5903 20.2843 11.782 19.908C12 19.4802 12 18.9201 12 17.8V15.2C12 14.0799 12 13.5198 11.782 13.092C11.5903 12.7157 11.2843 12.4097 10.908 12.218C10.4802 12 9.92011 12 8.8 12H6.2C5.0799 12 4.51984 12 4.09202 12.218C3.71569 12.4097 3.40973 12.7157 3.21799 13.092C3 13.5198 3 14.0799 3 15.2V17.8C3 18.9201 3 19.4802 3.21799 19.908C3.40973 20.2843 3.71569 20.5903 4.09202 20.782C4.51984 21 5.07989 21 6.2 21Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),E0=R('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path class=copier d="M8 8V5.2C8 4.0799 8 3.51984 8.21799 3.09202C8.40973 2.71569 8.71569 2.40973 9.09202 2.21799C9.51984 2 10.0799 2 11.2 2H18.8C19.9201 2 20.4802 2 20.908 2.21799C21.2843 2.40973 21.5903 2.71569 21.782 3.09202C22 3.51984 22 4.0799 22 5.2V12.8C22 13.9201 22 14.4802 21.782 14.908C21.5903 15.2843 21.2843 15.5903 20.908 15.782C20.4802 16 19.9201 16 18.8 16H16M5.2 22H12.8C13.9201 22 14.4802 22 14.908 21.782C15.2843 21.5903 15.5903 21.2843 15.782 20.908C16 20.4802 16 19.9201 16 18.8V11.2C16 10.0799 16 9.51984 15.782 9.09202C15.5903 8.71569 15.2843 8.40973 14.908 8.21799C14.4802 8 13.9201 8 12.8 8H5.2C4.0799 8 3.51984 8 3.09202 8.21799C2.71569 8.40973 2.40973 8.71569 2.21799 9.09202C2 9.51984 2 10.0799 2 11.2V18.8C2 19.9201 2 20.4802 2.21799 20.908C2.40973 21.2843 2.71569 21.5903 3.09202 21.782C3.51984 22 4.07989 22 5.2 22Z"stroke-width=2 stroke-linecap=round stroke-linejoin=round stroke=currentColor>'),A0=R('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M2.5 21.4998L8.04927 19.3655C8.40421 19.229 8.58168 19.1607 8.74772 19.0716C8.8952 18.9924 9.0358 18.901 9.16804 18.7984C9.31692 18.6829 9.45137 18.5484 9.72028 18.2795L21 6.99982C22.1046 5.89525 22.1046 4.10438 21 2.99981C19.8955 1.89525 18.1046 1.89524 17 2.99981L5.72028 14.2795C5.45138 14.5484 5.31692 14.6829 5.20139 14.8318C5.09877 14.964 5.0074 15.1046 4.92823 15.2521C4.83911 15.4181 4.77085 15.5956 4.63433 15.9506L2.5 21.4998ZM2.5 21.4998L4.55812 16.1488C4.7054 15.7659 4.77903 15.5744 4.90534 15.4867C5.01572 15.4101 5.1523 15.3811 5.2843 15.4063C5.43533 15.4351 5.58038 15.5802 5.87048 15.8703L8.12957 18.1294C8.41967 18.4195 8.56472 18.5645 8.59356 18.7155C8.61877 18.8475 8.58979 18.9841 8.51314 19.0945C8.42545 19.2208 8.23399 19.2944 7.85107 19.4417L2.5 21.4998Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),ha=R('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M7.5 12L10.5 15L16.5 9M7.8 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V7.8C21 6.11984 21 5.27976 20.673 4.63803C20.3854 4.07354 19.9265 3.6146 19.362 3.32698C18.7202 3 17.8802 3 16.2 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21Z"stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),M0=R('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M9 9L15 15M15 9L9 15M7.8 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V7.8C21 6.11984 21 5.27976 20.673 4.63803C20.3854 4.07354 19.9265 3.6146 19.362 3.32698C18.7202 3 17.8802 3 16.2 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21Z"stroke=#F04438 stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),T0=R('<svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 xmlns=http://www.w3.org/2000/svg><rect class=list width=20 height=20 y=2 x=2 rx=2></rect><line class=list-item y1=7 y2=7 x1=6 x2=18></line><line class=list-item y2=12 y1=12 x1=6 x2=18></line><line class=list-item y1=17 y2=17 x1=6 x2=18>'),O0=R('<svg viewBox="0 0 24 24"height=20 width=20 fill=none xmlns=http://www.w3.org/2000/svg><path d="M3 7.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C5.28 3 6.12 3 7.8 3h8.4c1.68 0 2.52 0 3.162.327a3 3 0 0 1 1.311 1.311C21 5.28 21 6.12 21 7.8v8.4c0 1.68 0 2.52-.327 3.162a3 3 0 0 1-1.311 1.311C18.72 21 17.88 21 16.2 21H7.8c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C3 18.72 3 17.88 3 16.2V7.8Z"stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),D0=R('<svg width=14 height=14 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M7.5 12L10.5 15L16.5 9M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),I0=R('<svg width=14 height=14 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M12 2V6M12 18V22M6 12H2M22 12H18M19.0784 19.0784L16.25 16.25M19.0784 4.99994L16.25 7.82837M4.92157 19.0784L7.75 16.25M4.92157 4.99994L7.75 7.82837"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round></path><animateTransform attributeName=transform attributeType=XML type=rotate from=0 to=360 dur=2s repeatCount=indefinite>'),P0=R('<svg width=14 height=14 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M15 9L9 15M9 9L15 15M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),F0=R('<svg width=14 height=14 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M9.5 15V9M14.5 15V9M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),L0=R('<svg version=1.0 viewBox="0 0 633 633"><linearGradient x1=-666.45 x2=-666.45 y1=163.28 y2=163.99 gradientTransform="matrix(633 0 0 633 422177 -103358)"gradientUnits=userSpaceOnUse><stop stop-color=#6BDAFF offset=0></stop><stop stop-color=#F9FFB5 offset=.32></stop><stop stop-color=#FFA770 offset=.71></stop><stop stop-color=#FF7373 offset=1></stop></linearGradient><circle cx=316.5 cy=316.5 r=316.5></circle><defs><filter x=-137.5 y=412 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=-137.5 y=412 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=89.5 cy=610.5 rx=214.5 ry=186 fill=#015064 stroke=#00CFE2 stroke-width=25></ellipse></g><defs><filter x=316.5 y=412 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=316.5 y=412 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=543.5 cy=610.5 rx=214.5 ry=186 fill=#015064 stroke=#00CFE2 stroke-width=25></ellipse></g><defs><filter x=-137.5 y=450 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=-137.5 y=450 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=89.5 cy=648.5 rx=214.5 ry=186 fill=#015064 stroke=#00A8B8 stroke-width=25></ellipse></g><defs><filter x=316.5 y=450 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=316.5 y=450 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=543.5 cy=648.5 rx=214.5 ry=186 fill=#015064 stroke=#00A8B8 stroke-width=25></ellipse></g><defs><filter x=-137.5 y=486 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=-137.5 y=486 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=89.5 cy=684.5 rx=214.5 ry=186 fill=#015064 stroke=#007782 stroke-width=25></ellipse></g><defs><filter x=316.5 y=486 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=316.5 y=486 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=543.5 cy=684.5 rx=214.5 ry=186 fill=#015064 stroke=#007782 stroke-width=25></ellipse></g><defs><filter x=272.2 y=308 width=176.9 height=129.3 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=272.2 y=308 width=176.9 height=129.3 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><line x1=436 x2=431 y1=403.2 y2=431.8 fill=none stroke=#000 stroke-linecap=round stroke-linejoin=bevel stroke-width=11></line><line x1=291 x2=280 y1=341.5 y2=403.5 fill=none stroke=#000 stroke-linecap=round stroke-linejoin=bevel stroke-width=11></line><line x1=332.9 x2=328.6 y1=384.1 y2=411.2 fill=none stroke=#000 stroke-linecap=round stroke-linejoin=bevel stroke-width=11></line><linearGradient x1=-670.75 x2=-671.59 y1=164.4 y2=164.49 gradientTransform="matrix(-184.16 -32.472 -11.461 64.997 -121359 -32126)"gradientUnits=userSpaceOnUse><stop stop-color=#EE2700 offset=0></stop><stop stop-color=#FF008E offset=1></stop></linearGradient><path d="m344.1 363 97.7 17.2c5.8 2.1 8.2 6.1 7.1 12.1s-4.7 9.2-11 9.9l-106-18.7-57.5-59.2c-3.2-4.8-2.9-9.1 0.8-12.8s8.3-4.4 13.7-2.1l55.2 53.6z"clip-rule=evenodd fill-rule=evenodd></path><line x1=428.2 x2=429.1 y1=384.5 y2=378 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=395.2 x2=396.1 y1=379.5 y2=373 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=362.2 x2=363.1 y1=373.5 y2=367.4 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=324.2 x2=328.4 y1=351.3 y2=347.4 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=303.2 x2=307.4 y1=331.3 y2=327.4 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line></g><defs><filter x=73.2 y=113.8 width=280.6 height=317.4 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=73.2 y=113.8 width=280.6 height=317.4 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><linearGradient x1=-672.16 x2=-672.16 y1=165.03 y2=166.03 gradientTransform="matrix(-100.18 48.861 97.976 200.88 -83342 -93.059)"gradientUnits=userSpaceOnUse><stop stop-color=#A17500 offset=0></stop><stop stop-color=#5D2100 offset=1></stop></linearGradient><path d="m192.3 203c8.1 37.3 14 73.6 17.8 109.1 3.8 35.4 2.8 75.1-3 119.2l61.2-16.7c-15.6-59-25.2-97.9-28.6-116.6s-10.8-51.9-22.1-99.6l-25.3 4.6"clip-rule=evenodd fill-rule=evenodd></path><g stroke=#2F8A00><linearGradient x1=-660.23 x2=-660.23 y1=166.72 y2=167.72 gradientTransform="matrix(92.683 4.8573 -2.0259 38.657 61680 -3088.6)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m195 183.9s-12.6-22.1-36.5-29.9c-15.9-5.2-34.4-1.5-55.5 11.1 15.9 14.3 29.5 22.6 40.7 24.9 16.8 3.6 51.3-6.1 51.3-6.1z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-661.36 x2=-661.36 y1=164.18 y2=165.18 gradientTransform="matrix(110 5.7648 -6.3599 121.35 73933 -15933)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m194.9 184.5s-47.5-8.5-83.2 15.7c-23.8 16.2-34.3 49.3-31.6 99.4 30.3-27.8 52.1-48.5 65.2-61.9 19.8-20.2 49.6-53.2 49.6-53.2z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-656.79 x2=-656.79 y1=165.15 y2=166.15 gradientTransform="matrix(62.954 3.2993 -3.5023 66.828 42156 -8754.1)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m195 183.9c-0.8-21.9 6-38 20.6-48.2s29.8-15.4 45.5-15.3c-6.1 21.4-14.5 35.8-25.2 43.4s-24.4 14.2-40.9 20.1z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-663.07 x2=-663.07 y1=165.44 y2=166.44 gradientTransform="matrix(152.47 7.9907 -3.0936 59.029 101884 -4318.7)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m194.9 184.5c31.9-30 64.1-39.7 96.7-29s50.8 30.4 54.6 59.1c-35.2-5.5-60.4-9.6-75.8-12.1-15.3-2.6-40.5-8.6-75.5-18z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-662.57 x2=-662.57 y1=164.44 y2=165.44 gradientTransform="matrix(136.46 7.1517 -5.2163 99.533 91536 -11442)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m194.9 184.5c35.8-7.6 65.6-0.2 89.2 22s37.7 49 42.3 80.3c-39.8-9.7-68.3-23.8-85.5-42.4s-32.5-38.5-46-59.9z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-656.43 x2=-656.43 y1=163.86 y2=164.86 gradientTransform="matrix(60.866 3.1899 -8.7773 167.48 41560 -25168)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m194.9 184.5c-33.6 13.8-53.6 35.7-60.1 65.6s-3.6 63.1 8.7 99.6c27.4-40.3 43.2-69.6 47.4-88s5.6-44.1 4-77.2z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><path d="m196.5 182.3c-14.8 21.6-25.1 41.4-30.8 59.4s-9.5 33-11.1 45.1"fill=none stroke-linecap=round stroke-width=8></path><path d="m194.9 185.7c-24.4 1.7-43.8 9-58.1 21.8s-24.7 25.4-31.3 37.8"fill=none stroke-linecap=round stroke-width=8></path><path d="m204.5 176.4c29.7-6.7 52-8.4 67-5.1s26.9 8.6 35.8 15.9"fill=none stroke-linecap=round stroke-width=8></path><path d="m196.5 181.4c20.3 9.9 38.2 20.5 53.9 31.9s27.4 22.1 35.1 32"fill=none stroke-linecap=round stroke-width=8></path></g></g><defs><filter x=50.5 y=399 width=532 height=633 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=50.5 y=399 width=532 height=633 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><linearGradient x1=-666.06 x2=-666.23 y1=163.36 y2=163.75 gradientTransform="matrix(532 0 0 633 354760 -102959)"gradientUnits=userSpaceOnUse><stop stop-color=#FFF400 offset=0></stop><stop stop-color=#3C8700 offset=1></stop></linearGradient><ellipse cx=316.5 cy=715.5 rx=266 ry=316.5></ellipse></g><defs><filter x=391 y=-24 width=288 height=283 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=391 y=-24 width=288 height=283 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><linearGradient x1=-664.56 x2=-664.56 y1=163.79 y2=164.79 gradientTransform="matrix(227 0 0 227 151421 -37204)"gradientUnits=userSpaceOnUse><stop stop-color=#FFDF00 offset=0></stop><stop stop-color=#FF9D00 offset=1></stop></linearGradient><circle cx=565.5 cy=89.5 r=113.5></circle><linearGradient x1=-644.5 x2=-645.77 y1=342 y2=342 gradientTransform="matrix(30 0 0 1 19770 -253)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=427 x2=397 y1=89 y2=89 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-641.56 x2=-642.83 y1=196.02 y2=196.07 gradientTransform="matrix(26.5 0 0 5.5 17439 -1025.5)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=430.5 x2=404 y1=55.5 y2=50 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-643.73 x2=-645 y1=185.83 y2=185.9 gradientTransform="matrix(29 0 0 8 19107 -1361)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=431 x2=402 y1=122 y2=130 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-638.94 x2=-640.22 y1=177.09 y2=177.39 gradientTransform="matrix(24 0 0 13 15783 -2145)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=442 x2=418 y1=153 y2=166 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-633.42 x2=-634.7 y1=172.41 y2=173.31 gradientTransform="matrix(20 0 0 19 13137 -3096)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=464 x2=444 y1=180 y2=199 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-619.05 x2=-619.52 y1=170.82 y2=171.82 gradientTransform="matrix(13.83 0 0 22.85 9050 -3703.4)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=491.4 x2=477.5 y1=203 y2=225.9 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-578.5 x2=-578.63 y1=170.31 y2=171.31 gradientTransform="matrix(7.5 0 0 24.5 4860 -3953)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=524.5 x2=517 y1=219.5 y2=244 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=666.5 x2=666.5 y1=170.31 y2=171.31 gradientTransform="matrix(.5 0 0 24.5 231.5 -3944)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=564.5 x2=565 y1=228.5 y2=253 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12>');function q0(){return y0()}function ya(){return m0()}function _n(){return v0()}function Fs(){return p0()}function Ls(){return Io()}function _0(){return(()=>{var e=Io();return e.style.setProperty("transform","rotate(90deg)"),e})()}function R0(){return(()=>{var e=Io();return e.style.setProperty("transform","rotate(-90deg)"),e})()}function z0(){return b0()}function K0(){return w0()}function B0(){return x0()}function N0(){return C0()}function V0(){return S0()}function U0(){return $0()}function G0(){return k0()}function H0(){return E0()}function j0(){return A0()}function W0(e){return(()=>{var t=ha(),n=t.firstChild;return K(()=>M(n,"stroke",e.theme==="dark"?"#12B76A":"#027A48")),t})()}function Q0(){return M0()}function Y0(){return T0()}function X0(e){return[v(N,{get when(){return e.checked},get children(){var t=ha(),n=t.firstChild;return K(()=>M(n,"stroke",e.theme==="dark"?"#9B8AFB":"#6938EF")),t}}),v(N,{get when(){return!e.checked},get children(){var t=O0(),n=t.firstChild;return K(()=>M(n,"stroke",e.theme==="dark"?"#9B8AFB":"#6938EF")),t}})]}function Z0(){return D0()}function J0(){return I0()}function eg(){return P0()}function tg(){return F0()}function qs(){let e=Ke();return(()=>{var t=L0(),n=t.firstChild,r=n.nextSibling,o=r.nextSibling,i=o.firstChild,l=o.nextSibling,a=l.firstChild,s=l.nextSibling,c=s.nextSibling,d=c.firstChild,u=c.nextSibling,g=u.firstChild,f=u.nextSibling,h=f.nextSibling,y=h.firstChild,m=h.nextSibling,p=m.firstChild,b=m.nextSibling,w=b.nextSibling,x=w.firstChild,C=w.nextSibling,P=C.firstChild,D=C.nextSibling,F=D.nextSibling,$=F.firstChild,q=F.nextSibling,j=q.firstChild,G=q.nextSibling,se=G.nextSibling,oe=se.firstChild,fe=se.nextSibling,ce=fe.firstChild,le=fe.nextSibling,ue=le.nextSibling,ge=ue.firstChild,Ce=ue.nextSibling,_e=Ce.firstChild,be=Ce.nextSibling,Fe=be.firstChild,O=Fe.nextSibling,pe=O.nextSibling,te=pe.nextSibling,At=te.nextSibling,H=be.nextSibling,Je=H.firstChild,Te=H.nextSibling,Xt=Te.firstChild,Ge=Te.nextSibling,Mt=Ge.firstChild,zt=Mt.nextSibling,gt=zt.nextSibling,st=gt.firstChild,ht=st.nextSibling,I=ht.nextSibling,ae=I.nextSibling,Le=ae.nextSibling,de=Le.nextSibling,ie=de.nextSibling,he=ie.nextSibling,$e=he.nextSibling,ne=$e.nextSibling,yt=ne.nextSibling,mt=yt.nextSibling,et=Ge.nextSibling,Kt=et.firstChild,vt=et.nextSibling,Bt=vt.firstChild,pt=vt.nextSibling,Tt=pt.firstChild,Wn=Tt.nextSibling,vn=pt.nextSibling,Qn=vn.firstChild,Zt=vn.nextSibling,Yn=Zt.firstChild,pn=Zt.nextSibling,bn=pn.firstChild,wn=bn.nextSibling,Jt=wn.nextSibling,Fo=Jt.nextSibling,Lo=Fo.nextSibling,qo=Lo.nextSibling,_o=qo.nextSibling,Ro=_o.nextSibling,zo=Ro.nextSibling,Ko=zo.nextSibling,Bo=Ko.nextSibling,No=Bo.nextSibling,Vo=No.nextSibling,Uo=Vo.nextSibling,Go=Uo.nextSibling,Ho=Go.nextSibling,jo=Ho.nextSibling,xa=jo.nextSibling;return M(n,"id",`a-${e}`),M(r,"fill",`url(#a-${e})`),M(i,"id",`am-${e}`),M(l,"id",`b-${e}`),M(a,"filter",`url(#am-${e})`),M(s,"mask",`url(#b-${e})`),M(d,"id",`ah-${e}`),M(u,"id",`k-${e}`),M(g,"filter",`url(#ah-${e})`),M(f,"mask",`url(#k-${e})`),M(y,"id",`ae-${e}`),M(m,"id",`j-${e}`),M(p,"filter",`url(#ae-${e})`),M(b,"mask",`url(#j-${e})`),M(x,"id",`ai-${e}`),M(C,"id",`i-${e}`),M(P,"filter",`url(#ai-${e})`),M(D,"mask",`url(#i-${e})`),M($,"id",`aj-${e}`),M(q,"id",`h-${e}`),M(j,"filter",`url(#aj-${e})`),M(G,"mask",`url(#h-${e})`),M(oe,"id",`ag-${e}`),M(fe,"id",`g-${e}`),M(ce,"filter",`url(#ag-${e})`),M(le,"mask",`url(#g-${e})`),M(ge,"id",`af-${e}`),M(Ce,"id",`f-${e}`),M(_e,"filter",`url(#af-${e})`),M(be,"mask",`url(#f-${e})`),M(te,"id",`m-${e}`),M(At,"fill",`url(#m-${e})`),M(Je,"id",`ak-${e}`),M(Te,"id",`e-${e}`),M(Xt,"filter",`url(#ak-${e})`),M(Ge,"mask",`url(#e-${e})`),M(Mt,"id",`n-${e}`),M(zt,"fill",`url(#n-${e})`),M(st,"id",`r-${e}`),M(ht,"fill",`url(#r-${e})`),M(I,"id",`s-${e}`),M(ae,"fill",`url(#s-${e})`),M(Le,"id",`q-${e}`),M(de,"fill",`url(#q-${e})`),M(ie,"id",`p-${e}`),M(he,"fill",`url(#p-${e})`),M($e,"id",`o-${e}`),M(ne,"fill",`url(#o-${e})`),M(yt,"id",`l-${e}`),M(mt,"fill",`url(#l-${e})`),M(Kt,"id",`al-${e}`),M(vt,"id",`d-${e}`),M(Bt,"filter",`url(#al-${e})`),M(pt,"mask",`url(#d-${e})`),M(Tt,"id",`u-${e}`),M(Wn,"fill",`url(#u-${e})`),M(Qn,"id",`ad-${e}`),M(Zt,"id",`c-${e}`),M(Yn,"filter",`url(#ad-${e})`),M(pn,"mask",`url(#c-${e})`),M(bn,"id",`t-${e}`),M(wn,"fill",`url(#t-${e})`),M(Jt,"id",`v-${e}`),M(Fo,"stroke",`url(#v-${e})`),M(Lo,"id",`aa-${e}`),M(qo,"stroke",`url(#aa-${e})`),M(_o,"id",`w-${e}`),M(Ro,"stroke",`url(#w-${e})`),M(zo,"id",`ac-${e}`),M(Ko,"stroke",`url(#ac-${e})`),M(Bo,"id",`ab-${e}`),M(No,"stroke",`url(#ab-${e})`),M(Vo,"id",`y-${e}`),M(Uo,"stroke",`url(#y-${e})`),M(Go,"id",`x-${e}`),M(Ho,"stroke",`url(#x-${e})`),M(jo,"id",`z-${e}`),M(xa,"stroke",`url(#z-${e})`),t})()}var ng=R('<span><svg width=16 height=16 viewBox="0 0 16 16"fill=none xmlns=http://www.w3.org/2000/svg><path d="M6 12L10 8L6 4"stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),rg=R('<button title="Copy object to clipboard">'),og=R('<button title="Remove all items"aria-label="Remove all items">'),ig=R('<button title="Delete item"aria-label="Delete item">'),sg=R('<button title="Toggle value"aria-label="Toggle value">'),lg=R('<button title="Bulk Edit Data"aria-label="Bulk Edit Data">'),Fn=R("<div>"),ag=R("<div><button> <span></span> <span> "),cg=R("<input>"),_s=R("<span>"),ug=R("<div><span>:"),dg=R("<div><div><button> [<!>...<!>]");function fg(e,t){let n=0,r=[];for(;n<e.length;)r.push(e.slice(n,n+t)),n=n+t;return r}var Rs=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?mn(n):yn(n));return(()=>{var o=ng();return K(()=>T(o,L(r().expander,n`
|
|
2
|
+
transform: rotate(${e.expanded?90:0}deg);
|
|
3
|
+
`,e.expanded&&n`
|
|
4
|
+
& svg {
|
|
5
|
+
top: -1px;
|
|
6
|
+
}
|
|
7
|
+
`))),o})()},gg=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?mn(n):yn(n)),[o,i]=z("NoCopy");return(()=>{var l=rg();return Gr(l,"click",o()==="NoCopy"?()=>{navigator.clipboard.writeText(Ni(e.value)).then(()=>{i("SuccessCopy"),setTimeout(()=>{i("NoCopy")},1500)},a=>{i("ErrorCopy"),setTimeout(()=>{i("NoCopy")},1500)})}:void 0,!0),E(l,v(Ci,{get children(){return[v(ur,{get when(){return o()==="NoCopy"},get children(){return v(H0,{})}}),v(ur,{get when(){return o()==="SuccessCopy"},get children(){return v(W0,{get theme(){return t()}})}}),v(ur,{get when(){return o()==="ErrorCopy"},get children(){return v(Q0,{})}})]}})),K(a=>{var s=r().actionButton,c=`${o()==="NoCopy"?"Copy object to clipboard":o()==="SuccessCopy"?"Object copied to clipboard":"Error copying object to clipboard"}`;return s!==a.e&&T(l,a.e=s),c!==a.t&&M(l,"aria-label",a.t=c),a},{e:void 0,t:void 0}),l})()},hg=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?mn(n):yn(n)),o=V().client;return(()=>{var i=og();return i.$$click=()=>{let l=e.activeQuery.state.data,a=Ot(l,e.dataPath,[]);o.setQueryData(e.activeQuery.queryKey,a)},E(i,v(Y0,{})),K(()=>T(i,r().actionButton)),i})()},zs=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?mn(n):yn(n)),o=V().client;return(()=>{var i=ig();return i.$$click=()=>{let l=e.activeQuery.state.data,a=nn(l,e.dataPath);o.setQueryData(e.activeQuery.queryKey,a)},E(i,v(ya,{})),K(()=>T(i,L(r().actionButton))),i})()},yg=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?mn(n):yn(n)),o=V().client;return(()=>{var i=sg();return i.$$click=()=>{let l=e.activeQuery.state.data,a=Ot(l,e.dataPath,!e.value);o.setQueryData(e.activeQuery.queryKey,a)},E(i,v(X0,{get theme(){return t()},get checked(){return e.value}})),K(()=>T(i,L(r().actionButton,n`
|
|
8
|
+
width: ${S.size[3.5]};
|
|
9
|
+
height: ${S.size[3.5]};
|
|
10
|
+
`))),i})()};function Ks(e){return Symbol.iterator in e}function Pt(e){let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?mn(n):yn(n)),o=V().client,[i,l]=z((e.defaultExpanded||[]).includes(e.label)),a=()=>l(h=>!h),[s,c]=z([]),d=k(()=>Array.isArray(e.value)?e.value.map((h,y)=>({label:y.toString(),value:h})):e.value!==null&&typeof e.value=="object"&&Ks(e.value)&&typeof e.value[Symbol.iterator]=="function"?e.value instanceof Map?Array.from(e.value,([h,y])=>({label:h,value:y})):Array.from(e.value,(h,y)=>({label:y.toString(),value:h})):typeof e.value=="object"&&e.value!==null?Object.entries(e.value).map(([h,y])=>({label:h,value:y})):[]),u=k(()=>Array.isArray(e.value)?"array":e.value!==null&&typeof e.value=="object"&&Ks(e.value)&&typeof e.value[Symbol.iterator]=="function"?"Iterable":typeof e.value=="object"&&e.value!==null?"object":typeof e.value),g=k(()=>fg(d(),100)),f=e.dataPath??[];return(()=>{var h=Fn();return E(h,v(N,{get when(){return g().length},get children(){return[(()=>{var y=ag(),m=y.firstChild,p=m.firstChild,b=p.nextSibling,w=b.nextSibling,x=w.nextSibling,C=x.firstChild;return m.$$click=()=>a(),E(m,v(Rs,{get expanded(){return i()}}),p),E(b,()=>e.label),E(x,()=>String(u()).toLowerCase()==="iterable"?"(Iterable) ":"",C),E(x,()=>d().length,C),E(x,()=>d().length>1?"items":"item",null),E(y,v(N,{get when(){return e.editable},get children(){var P=Fn();return E(P,v(gg,{get value(){return e.value}}),null),E(P,v(N,{get when(){return e.itemsDeletable&&e.activeQuery!==void 0},get children(){return v(zs,{get activeQuery(){return e.activeQuery},dataPath:f})}}),null),E(P,v(N,{get when(){return u()==="array"&&e.activeQuery!==void 0},get children(){return v(hg,{get activeQuery(){return e.activeQuery},dataPath:f})}}),null),E(P,v(N,{get when(){return k(()=>!!e.onEdit)()&&!Wr(e.value).meta},get children(){var D=lg();return D.$$click=()=>{e.onEdit?.()},E(D,v(j0,{})),K(()=>T(D,r().actionButton)),D}}),null),K(()=>T(P,r().actions)),P}}),null),K(P=>{var D=r().expanderButtonContainer,F=r().expanderButton,$=r().info;return D!==P.e&&T(y,P.e=D),F!==P.t&&T(m,P.t=F),$!==P.a&&T(x,P.a=$),P},{e:void 0,t:void 0,a:void 0}),y})(),v(N,{get when(){return i()},get children(){return[v(N,{get when(){return g().length===1},get children(){var y=Fn();return E(y,v(vr,{get each(){return d()},by:m=>m.label,children:m=>v(Pt,{get defaultExpanded(){return e.defaultExpanded},get label(){return m().label},get value(){return m().value},get editable(){return e.editable},get dataPath(){return[...f,m().label]},get activeQuery(){return e.activeQuery},get itemsDeletable(){return u()==="array"||u()==="Iterable"||u()==="object"}})})),K(()=>T(y,r().subEntry)),y}}),v(N,{get when(){return g().length>1},get children(){var y=Fn();return E(y,v(xi,{get each(){return g()},children:(m,p)=>(()=>{var b=dg(),w=b.firstChild,x=w.firstChild,C=x.firstChild,P=C.nextSibling,D=P.nextSibling,F=D.nextSibling;return F.nextSibling,x.$$click=()=>c($=>$.includes(p)?$.filter(q=>q!==p):[...$,p]),E(x,v(Rs,{get expanded(){return s().includes(p)}}),C),E(x,p*100,P),E(x,p*100+100-1,F),E(w,v(N,{get when(){return s().includes(p)},get children(){var $=Fn();return E($,v(vr,{get each(){return m()},by:q=>q.label,children:q=>v(Pt,{get defaultExpanded(){return e.defaultExpanded},get label(){return q().label},get value(){return q().value},get editable(){return e.editable},get dataPath(){return[...f,q().label]},get activeQuery(){return e.activeQuery}})})),K(()=>T($,r().subEntry)),$}}),null),K($=>{var q=r().entry,j=r().expanderButton;return q!==$.e&&T(w,$.e=q),j!==$.t&&T(x,$.t=j),$},{e:void 0,t:void 0}),b})()})),K(()=>T(y,r().subEntry)),y}})]}})]}}),null),E(h,v(N,{get when(){return g().length===0},get children(){var y=ug(),m=y.firstChild,p=m.firstChild;return E(m,()=>e.label,p),E(y,v(N,{get when(){return k(()=>!!(e.editable&&e.activeQuery!==void 0))()&&(u()==="string"||u()==="number"||u()==="boolean")},get fallback(){return(()=>{var b=_s();return E(b,()=>Dn(e.value)),K(()=>T(b,r().value)),b})()},get children(){return[v(N,{get when(){return k(()=>!!(e.editable&&e.activeQuery!==void 0))()&&(u()==="string"||u()==="number")},get children(){var b=cg();return b.addEventListener("change",w=>{let x=e.activeQuery.state.data,C=Ot(x,f,u()==="number"?w.target.valueAsNumber:w.target.value);o.setQueryData(e.activeQuery.queryKey,C)}),K(w=>{var x=u()==="number"?"number":"text",C=L(r().value,r().editableInput);return x!==w.e&&M(b,"type",w.e=x),C!==w.t&&T(b,w.t=C),w},{e:void 0,t:void 0}),K(()=>b.value=e.value),b}}),v(N,{get when(){return u()==="boolean"},get children(){var b=_s();return E(b,v(yg,{get activeQuery(){return e.activeQuery},dataPath:f,get value(){return e.value}}),null),E(b,()=>Dn(e.value),null),K(()=>T(b,L(r().value,r().actions,r().editableInput))),b}})]}}),null),E(y,v(N,{get when(){return e.editable&&e.itemsDeletable&&e.activeQuery!==void 0},get children(){return v(zs,{get activeQuery(){return e.activeQuery},dataPath:f})}}),null),K(b=>{var w=r().row,x=r().label;return w!==b.e&&T(y,b.e=w),x!==b.t&&T(m,b.t=x),b},{e:void 0,t:void 0}),y}}),null),K(()=>T(h,r().entry)),h})()}var ma=(e,t)=>{let{colors:n,font:r,size:o,border:i}=S,l=(a,s)=>e==="light"?a:s;return{entry:t`
|
|
11
|
+
& * {
|
|
12
|
+
font-size: ${r.size.xs};
|
|
13
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
14
|
+
'Liberation Mono', 'Courier New', monospace;
|
|
15
|
+
}
|
|
16
|
+
position: relative;
|
|
17
|
+
outline: none;
|
|
18
|
+
word-break: break-word;
|
|
19
|
+
`,subEntry:t`
|
|
20
|
+
margin: 0 0 0 0.5em;
|
|
21
|
+
padding-left: 0.75em;
|
|
22
|
+
border-left: 2px solid ${l(n.gray[300],n.darkGray[400])};
|
|
23
|
+
/* outline: 1px solid ${n.teal[400]}; */
|
|
24
|
+
`,expander:t`
|
|
25
|
+
& path {
|
|
26
|
+
stroke: ${n.gray[400]};
|
|
27
|
+
}
|
|
28
|
+
& svg {
|
|
29
|
+
width: ${o[3]};
|
|
30
|
+
height: ${o[3]};
|
|
31
|
+
}
|
|
32
|
+
display: inline-flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
transition: all 0.1s ease;
|
|
35
|
+
/* outline: 1px solid ${n.blue[400]}; */
|
|
36
|
+
`,expanderButtonContainer:t`
|
|
37
|
+
display: flex;
|
|
38
|
+
align-items: center;
|
|
39
|
+
line-height: ${o[4]};
|
|
40
|
+
min-height: ${o[4]};
|
|
41
|
+
gap: ${o[2]};
|
|
42
|
+
`,expanderButton:t`
|
|
43
|
+
cursor: pointer;
|
|
44
|
+
color: inherit;
|
|
45
|
+
font: inherit;
|
|
46
|
+
outline: inherit;
|
|
47
|
+
height: ${o[5]};
|
|
48
|
+
background: transparent;
|
|
49
|
+
border: none;
|
|
50
|
+
padding: 0;
|
|
51
|
+
display: inline-flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
gap: ${o[1]};
|
|
54
|
+
position: relative;
|
|
55
|
+
/* outline: 1px solid ${n.green[400]}; */
|
|
56
|
+
|
|
57
|
+
&:focus-visible {
|
|
58
|
+
border-radius: ${i.radius.xs};
|
|
59
|
+
outline: 2px solid ${n.blue[800]};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
& svg {
|
|
63
|
+
position: relative;
|
|
64
|
+
left: 1px;
|
|
65
|
+
}
|
|
66
|
+
`,info:t`
|
|
67
|
+
color: ${l(n.gray[500],n.gray[500])};
|
|
68
|
+
font-size: ${r.size.xs};
|
|
69
|
+
margin-left: ${o[1]};
|
|
70
|
+
/* outline: 1px solid ${n.yellow[400]}; */
|
|
71
|
+
`,label:t`
|
|
72
|
+
color: ${l(n.gray[700],n.gray[300])};
|
|
73
|
+
white-space: nowrap;
|
|
74
|
+
`,value:t`
|
|
75
|
+
color: ${l(n.purple[600],n.purple[400])};
|
|
76
|
+
flex-grow: 1;
|
|
77
|
+
`,actions:t`
|
|
78
|
+
display: inline-flex;
|
|
79
|
+
gap: ${o[2]};
|
|
80
|
+
align-items: center;
|
|
81
|
+
`,row:t`
|
|
82
|
+
display: inline-flex;
|
|
83
|
+
gap: ${o[2]};
|
|
84
|
+
width: 100%;
|
|
85
|
+
margin: ${o[.25]} 0px;
|
|
86
|
+
line-height: ${o[4.5]};
|
|
87
|
+
align-items: center;
|
|
88
|
+
`,editableInput:t`
|
|
89
|
+
border: none;
|
|
90
|
+
padding: ${o[.5]} ${o[1]} ${o[.5]} ${o[1.5]};
|
|
91
|
+
flex-grow: 1;
|
|
92
|
+
border-radius: ${i.radius.xs};
|
|
93
|
+
background-color: ${l(n.gray[200],n.darkGray[500])};
|
|
94
|
+
|
|
95
|
+
&:hover {
|
|
96
|
+
background-color: ${l(n.gray[300],n.darkGray[600])};
|
|
97
|
+
}
|
|
98
|
+
`,actionButton:t`
|
|
99
|
+
background-color: transparent;
|
|
100
|
+
color: ${l(n.gray[500],n.gray[500])};
|
|
101
|
+
border: none;
|
|
102
|
+
display: inline-flex;
|
|
103
|
+
padding: 0px;
|
|
104
|
+
align-items: center;
|
|
105
|
+
justify-content: center;
|
|
106
|
+
cursor: pointer;
|
|
107
|
+
width: ${o[3]};
|
|
108
|
+
height: ${o[3]};
|
|
109
|
+
position: relative;
|
|
110
|
+
z-index: 1;
|
|
111
|
+
|
|
112
|
+
&:hover svg {
|
|
113
|
+
color: ${l(n.gray[600],n.gray[400])};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
&:focus-visible {
|
|
117
|
+
border-radius: ${i.radius.xs};
|
|
118
|
+
outline: 2px solid ${n.blue[800]};
|
|
119
|
+
outline-offset: 2px;
|
|
120
|
+
}
|
|
121
|
+
`}},yn=e=>ma("light",e),mn=e=>ma("dark",e);On(["click"]);var mg=R('<div><div aria-hidden=true></div><button type=button aria-label="Open Tanstack query devtools"class=tsqd-open-btn>'),jn=R("<div>"),vg=R('<aside aria-label="Tanstack query devtools"><div></div><button aria-label="Close tanstack query devtools">'),pg=R("<select name=tsqd-queries-filter-sort>"),bg=R("<select name=tsqd-mutations-filter-sort>"),wg=R("<span>Asc"),xg=R("<span>Desc"),Cg=R('<button aria-label="Open in picture-in-picture mode"title="Open in picture-in-picture mode">'),Sg=R("<div>Settings"),$g=R("<span>Position"),kg=R("<span>Top"),Eg=R("<span>Bottom"),Ag=R("<span>Left"),Mg=R("<span>Right"),Tg=R("<span>Theme"),Og=R("<span>Light"),Dg=R("<span>Dark"),Ig=R("<span>System"),Pg=R("<div><div class=tsqd-queries-container>"),Fg=R("<div><div class=tsqd-mutations-container>"),Lg=R('<div><div><div><button aria-label="Close Tanstack query devtools"><span>TANSTACK</span><span> v</span></button></div></div><div><div><div><input aria-label="Filter queries by query key"type=text placeholder=Filter name=tsqd-query-filter-input></div><div></div><button class=tsqd-query-filter-sort-order-btn></button></div><div><button aria-label="Clear query cache"></button><button>'),Bs=R("<option>Sort by "),qg=R("<div class=tsqd-query-disabled-indicator>disabled"),va=R("<button><div></div><code class=tsqd-query-hash>"),_g=R("<div role=tooltip id=tsqd-status-tooltip>"),Rg=R("<span>"),zg=R("<button><span></span><span>"),Kg=R("<button><span></span> Error"),Bg=R('<div><span></span>Trigger Error<select><option value=""disabled selected>'),Ng=R('<div class="tsqd-query-details-explorer-container tsqd-query-details-data-explorer">'),Vg=R("<form><textarea name=data></textarea><div><span></span><div><button type=button>Cancel</button><button>Save"),Ug=R('<div><div>Query Details</div><div><div class=tsqd-query-details-summary><pre><code></code></pre><span></span></div><div class=tsqd-query-details-observers-count><span>Observers:</span><span></span></div><div class=tsqd-query-details-last-updated><span>Last Updated:</span><span></span></div></div><div>Actions</div><div><button><span></span>Refetch</button><button><span></span>Invalidate</button><button><span></span>Reset</button><button><span></span>Remove</button><button><span></span> Loading</button></div><div>Data </div><div>Query Explorer</div><div class="tsqd-query-details-explorer-container tsqd-query-details-query-explorer">'),Gg=R("<option>"),Hg=R('<div><div>Mutation Details</div><div><div class=tsqd-query-details-summary><pre><code></code></pre><span></span></div><div class=tsqd-query-details-last-updated><span>Submitted At:</span><span></span></div></div><div>Variables Details</div><div class="tsqd-query-details-explorer-container tsqd-query-details-query-explorer"></div><div>Context Details</div><div class="tsqd-query-details-explorer-container tsqd-query-details-query-explorer"></div><div>Data Explorer</div><div class="tsqd-query-details-explorer-container tsqd-query-details-query-explorer"></div><div>Mutations Explorer</div><div class="tsqd-query-details-explorer-container tsqd-query-details-query-explorer">'),[Ne,Ir]=z(null),[Ft,pa]=z(null),[rt,Po]=z(0),[an,Ns]=z(!1),yh=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?Ze(n):Xe(n)),o=ho(),i=k(()=>V().buttonPosition||jc),l=k(()=>e.localStore.open==="true"?!0:e.localStore.open==="false"?!1:V().initialIsOpen||Wc),a=k(()=>e.localStore.position||V().position||no),s;B(()=>{let d=s.parentElement,u=e.localStore.height||Vs,g=e.localStore.width||Us,f=a();d.style.setProperty("--tsqd-panel-height",`${f==="top"?"-":""}${u}px`),d.style.setProperty("--tsqd-panel-width",`${f==="left"?"-":""}${g}px`)}),wt(()=>{let d=()=>{let u=s.parentElement,g=getComputedStyle(u).fontSize;u.style.setProperty("--tsqd-font-size",g)};d(),window.addEventListener("focus",d),U(()=>{window.removeEventListener("focus",d)})});let c=k(()=>e.localStore.pip_open??"false");return[v(N,{get when(){return k(()=>!!o().pipWindow)()&&c()=="true"},get children(){return v(jr,{get mount(){return o().pipWindow?.document.body},get children(){return v(jg,{get children(){return v(ba,e)}})}})}}),(()=>{var d=jn(),u=s;return typeof u=="function"?Nt(u,d):s=d,E(d,v(rs,{name:"tsqd-panel-transition",get children(){return v(N,{get when(){return k(()=>!!(l()&&!o().pipWindow))()&&c()=="false"},get children(){return v(Wg,{get localStore(){return e.localStore},get setLocalStore(){return e.setLocalStore}})}})}}),null),E(d,v(rs,{name:"tsqd-button-transition",get children(){return v(N,{get when(){return!l()},get children(){var g=mg(),f=g.firstChild,h=f.nextSibling;return E(f,v(qs,{})),h.$$click=()=>e.setLocalStore("open","true"),E(h,v(qs,{})),K(()=>T(g,L(r().devtoolsBtn,r()[`devtoolsBtn-position-${i()}`],"tsqd-open-btn-container"))),g}})}}),null),K(()=>T(d,L(n`
|
|
122
|
+
& .tsqd-panel-transition-exit-active,
|
|
123
|
+
& .tsqd-panel-transition-enter-active {
|
|
124
|
+
transition:
|
|
125
|
+
opacity 0.3s,
|
|
126
|
+
transform 0.3s;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
& .tsqd-panel-transition-exit-to,
|
|
130
|
+
& .tsqd-panel-transition-enter {
|
|
131
|
+
${a()==="top"||a()==="bottom"?"transform: translateY(var(--tsqd-panel-height));":"transform: translateX(var(--tsqd-panel-width));"}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
& .tsqd-button-transition-exit-active,
|
|
135
|
+
& .tsqd-button-transition-enter-active {
|
|
136
|
+
transition:
|
|
137
|
+
opacity 0.3s,
|
|
138
|
+
transform 0.3s;
|
|
139
|
+
opacity: 1;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
& .tsqd-button-transition-exit-to,
|
|
143
|
+
& .tsqd-button-transition-enter {
|
|
144
|
+
transform: ${i()==="relative"?"none;":i()==="top-left"?"translateX(-72px);":i()==="top-right"?"translateX(72px);":"translateY(72px);"};
|
|
145
|
+
opacity: 0;
|
|
146
|
+
}
|
|
147
|
+
`,"tsqd-transitions-container"))),d})()]},jg=e=>{let t=ho(),n=Ae(),r=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,o=k(()=>n()==="dark"?Ze(r):Xe(r)),i=()=>{let{colors:l}=S,a=(s,c)=>n()==="dark"?c:s;return rt()<jt?r`
|
|
148
|
+
flex-direction: column;
|
|
149
|
+
background-color: ${a(l.gray[300],l.gray[600])};
|
|
150
|
+
`:r`
|
|
151
|
+
flex-direction: row;
|
|
152
|
+
background-color: ${a(l.gray[200],l.darkGray[900])};
|
|
153
|
+
`};return B(()=>{let l=t().pipWindow,a=()=>{l&&Po(l.innerWidth)};l&&(l.addEventListener("resize",a),a()),U(()=>{l&&l.removeEventListener("resize",a)})}),(()=>{var l=jn();return l.style.setProperty("--tsqd-font-size","16px"),l.style.setProperty("max-height","100vh"),l.style.setProperty("height","100vh"),l.style.setProperty("width","100vw"),E(l,()=>e.children),K(()=>T(l,L(o().panel,i(),{[r`
|
|
154
|
+
min-width: min-content;
|
|
155
|
+
`]:rt()<go},"tsqd-main-panel"))),l})()},mh=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?Ze(n):Xe(n)),o;wt(()=>{Ys(o,({width:l},a)=>{a===o&&Po(l)})});let i=()=>{let{colors:l}=S,a=(s,c)=>t()==="dark"?c:s;return rt()<jt?n`
|
|
156
|
+
flex-direction: column;
|
|
157
|
+
background-color: ${a(l.gray[300],l.gray[600])};
|
|
158
|
+
`:n`
|
|
159
|
+
flex-direction: row;
|
|
160
|
+
background-color: ${a(l.gray[200],l.darkGray[900])};
|
|
161
|
+
`};return(()=>{var l=jn(),a=o;return typeof a=="function"?Nt(a,l):o=l,l.style.setProperty("--tsqd-font-size","16px"),E(l,()=>e.children),K(()=>T(l,L(r().parentPanel,i(),{[n`
|
|
162
|
+
min-width: min-content;
|
|
163
|
+
`]:rt()<go},"tsqd-main-panel"))),l})()},Wg=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?Ze(n):Xe(n)),[o,i]=z(!1),l=k(()=>e.localStore.position||V().position||no),a=d=>{let u=d.currentTarget.parentElement;if(!u)return;i(!0);let{height:g,width:f}=u.getBoundingClientRect(),h=d.clientX,y=d.clientY,m=0,p=Qr(3.5),b=Qr(12),w=C=>{if(C.preventDefault(),l()==="left"||l()==="right"){let P=l()==="right"?h-C.clientX:C.clientX-h;m=Math.round(f+P),m<b&&(m=b),e.setLocalStore("width",String(Math.round(m)));let D=u.getBoundingClientRect().width;Number(e.localStore.width)<D&&e.setLocalStore("width",String(D))}else{let P=l()==="bottom"?y-C.clientY:C.clientY-y;m=Math.round(g+P),m<p&&(m=p,Ir(null)),e.setLocalStore("height",String(Math.round(m)))}},x=()=>{o()&&i(!1),document.removeEventListener("mousemove",w,!1),document.removeEventListener("mouseUp",x,!1)};document.addEventListener("mousemove",w,!1),document.addEventListener("mouseup",x,!1)},s;wt(()=>{Ys(s,({width:d},u)=>{u===s&&Po(d)})}),B(()=>{let d=s.parentElement?.parentElement?.parentElement;if(!d)return;let u=e.localStore.position||no,g=Vi("padding",u),f=e.localStore.position==="left"||e.localStore.position==="right",h=(({padding:y,paddingTop:m,paddingBottom:p,paddingLeft:b,paddingRight:w})=>({padding:y,paddingTop:m,paddingBottom:p,paddingLeft:b,paddingRight:w}))(d.style);d.style[g]=`${f?e.localStore.width:e.localStore.height}px`,U(()=>{Object.entries(h).forEach(([y,m])=>{d.style[y]=m})})});let c=()=>{let{colors:d}=S,u=(g,f)=>t()==="dark"?f:g;return rt()<jt?n`
|
|
164
|
+
flex-direction: column;
|
|
165
|
+
background-color: ${u(d.gray[300],d.gray[600])};
|
|
166
|
+
`:n`
|
|
167
|
+
flex-direction: row;
|
|
168
|
+
background-color: ${u(d.gray[200],d.darkGray[900])};
|
|
169
|
+
`};return(()=>{var d=vg(),u=d.firstChild,g=u.nextSibling,f=s;return typeof f=="function"?Nt(f,d):s=d,u.$$mousedown=a,g.$$click=()=>e.setLocalStore("open","false"),E(g,v(_n,{})),E(d,v(ba,e),null),K(h=>{var y=L(r().panel,r()[`panel-position-${l()}`],c(),{[n`
|
|
170
|
+
min-width: min-content;
|
|
171
|
+
`]:rt()<go&&(l()==="right"||l()==="left")},"tsqd-main-panel"),m=l()==="bottom"||l()==="top"?`${e.localStore.height||Vs}px`:"auto",p=l()==="right"||l()==="left"?`${e.localStore.width||Us}px`:"auto",b=L(r().dragHandle,r()[`dragHandle-position-${l()}`],"tsqd-drag-handle"),w=L(r().closeBtn,r()[`closeBtn-position-${l()}`],"tsqd-minimize-btn");return y!==h.e&&T(d,h.e=y),m!==h.t&&((h.t=m)!=null?d.style.setProperty("height",m):d.style.removeProperty("height")),p!==h.a&&((h.a=p)!=null?d.style.setProperty("width",p):d.style.removeProperty("width")),b!==h.o&&T(u,h.o=b),w!==h.i&&T(g,h.i=w),h},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),d})()},ba=e=>{th(),nh();let t,n=Ae(),r=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,o=k(()=>n()==="dark"?Ze(r):Xe(r)),i=ho(),[l,a]=z("queries"),s=k(()=>e.localStore.sort||Yc),c=k(()=>Number(e.localStore.sortOrder)||Yi),d=k(()=>e.localStore.mutationSort||Xc),u=k(()=>Number(e.localStore.mutationSortOrder)||Yi),g=k(()=>fr[s()]),f=k(()=>gr[d()]),h=k(()=>V().onlineManager),y=k(()=>V().client.getQueryCache()),m=k(()=>V().client.getMutationCache()),p=Me(D=>D().getAll().length,!1),b=k(at(()=>[p(),e.localStore.filter,s(),c()],()=>{let D=y().getAll(),F=e.localStore.filter?D.filter(q=>Xi(q.queryHash,e.localStore.filter||"").passed):[...D];return g()?F.sort((q,j)=>g()(q,j)*c()):F})),w=nt(D=>D().getAll().length,!1),x=k(at(()=>[w(),e.localStore.mutationFilter,d(),u()],()=>{let D=m().getAll(),F=e.localStore.mutationFilter?D.filter(q=>{let j=`${q.options.mutationKey?JSON.stringify(q.options.mutationKey)+" - ":""}${new Date(q.state.submittedAt).toLocaleString()}`;return Xi(j,e.localStore.mutationFilter||"").passed}):[...D];return f()?F.sort((q,j)=>f()(q,j)*u()):F})),C=D=>{e.setLocalStore("position",D)},P=D=>{let $=getComputedStyle(t).getPropertyValue("--tsqd-font-size");D.style.setProperty("--tsqd-font-size",$)};return[(()=>{var D=Lg(),F=D.firstChild,$=F.firstChild,q=$.firstChild,j=q.firstChild,G=j.nextSibling,se=G.firstChild,oe=F.nextSibling,fe=oe.firstChild,ce=fe.firstChild,le=ce.firstChild,ue=ce.nextSibling,ge=ue.nextSibling,Ce=fe.nextSibling,_e=Ce.firstChild,be=_e.nextSibling,Fe=t;return typeof Fe=="function"?Nt(Fe,D):t=D,q.$$click=()=>{if(!i().pipWindow&&!e.showPanelViewOnly){e.setLocalStore("open","false");return}e.onClose&&e.onClose()},E(G,()=>V().queryFlavor,se),E(G,()=>V().version,null),E($,v(We.Root,{get class(){return L(o().viewToggle)},get value(){return l()},onChange:O=>{a(O),Ir(null),pa(null)},get children(){return[v(We.Item,{value:"queries",class:"tsqd-radio-toggle",get children(){return[v(We.ItemInput,{}),v(We.ItemControl,{get children(){return v(We.ItemIndicator,{})}}),v(We.ItemLabel,{title:"Toggle Queries View",children:"Queries"})]}}),v(We.Item,{value:"mutations",class:"tsqd-radio-toggle",get children(){return[v(We.ItemInput,{}),v(We.ItemControl,{get children(){return v(We.ItemIndicator,{})}}),v(We.ItemLabel,{title:"Toggle Mutations View",children:"Mutations"})]}})]}}),null),E(F,v(N,{get when(){return l()==="queries"},get children(){return v(Xg,{})}}),null),E(F,v(N,{get when(){return l()==="mutations"},get children(){return v(Zg,{})}}),null),E(ce,v(q0,{}),le),le.$$input=O=>{l()==="queries"?e.setLocalStore("filter",O.currentTarget.value):e.setLocalStore("mutationFilter",O.currentTarget.value)},E(ue,v(N,{get when(){return l()==="queries"},get children(){var O=pg();return O.addEventListener("change",pe=>{e.setLocalStore("sort",pe.currentTarget.value)}),E(O,()=>Object.keys(fr).map(pe=>(()=>{var te=Bs();return te.firstChild,te.value=pe,E(te,pe,null),te})())),K(()=>O.value=s()),O}}),null),E(ue,v(N,{get when(){return l()==="mutations"},get children(){var O=bg();return O.addEventListener("change",pe=>{e.setLocalStore("mutationSort",pe.currentTarget.value)}),E(O,()=>Object.keys(gr).map(pe=>(()=>{var te=Bs();return te.firstChild,te.value=pe,E(te,pe,null),te})())),K(()=>O.value=d()),O}}),null),E(ue,v(_n,{}),null),ge.$$click=()=>{l()==="queries"?e.setLocalStore("sortOrder",String(c()*-1)):e.setLocalStore("mutationSortOrder",String(u()*-1))},E(ge,v(N,{get when(){return(l()==="queries"?c():u())===1},get children(){return[wg(),v(Fs,{})]}}),null),E(ge,v(N,{get when(){return(l()==="queries"?c():u())===-1},get children(){return[xg(),v(Ls,{})]}}),null),_e.$$click=()=>{l()==="queries"?y().clear():m().clear()},E(_e,v(ya,{})),be.$$click=()=>{an()?(h().setOnline(!0),Ns(!1)):(h().setOnline(!1),Ns(!0))},E(be,(()=>{var O=k(()=>!!an());return()=>O()?v(V0,{}):v(N0,{})})()),E(Ce,v(N,{get when(){return k(()=>!i().pipWindow)()&&!i().disabled},get children(){var O=Cg();return O.$$click=()=>{i().requestPipWindow(Number(window.innerWidth),Number(e.localStore.height??500))},E(O,v(G0,{})),K(()=>T(O,L(o().actionsBtn,"tsqd-actions-btn","tsqd-action-open-pip"))),O}}),null),E(Ce,v(xe.Root,{gutter:4,get children(){return[v(xe.Trigger,{get class(){return L(o().actionsBtn,"tsqd-actions-btn","tsqd-action-settings")},get children(){return v(U0,{})}}),v(xe.Portal,{ref:O=>P(O),get mount(){return k(()=>!!i().pipWindow)()?i().pipWindow.document.body:document.body},get children(){return v(xe.Content,{get class(){return L(o().settingsMenu,"tsqd-settings-menu")},get children(){return[(()=>{var O=Sg();return K(()=>T(O,L(o().settingsMenuHeader,"tsqd-settings-menu-header"))),O})(),v(N,{get when(){return!e.showPanelViewOnly},get children(){return v(xe.Sub,{overlap:!0,gutter:8,shift:-4,get children(){return[v(xe.SubTrigger,{get class(){return L(o().settingsSubTrigger,"tsqd-settings-menu-sub-trigger","tsqd-settings-menu-sub-trigger-position")},get children(){return[$g(),v(_n,{})]}}),v(xe.Portal,{ref:O=>P(O),get mount(){return k(()=>!!i().pipWindow)()?i().pipWindow.document.body:document.body},get children(){return v(xe.SubContent,{get class(){return L(o().settingsMenu,"tsqd-settings-submenu")},get children(){return[v(xe.Item,{onSelect:()=>{C("top")},as:"button",get class(){return L(o().settingsSubButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-top")},get children(){return[kg(),v(Fs,{})]}}),v(xe.Item,{onSelect:()=>{C("bottom")},as:"button",get class(){return L(o().settingsSubButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-bottom")},get children(){return[Eg(),v(Ls,{})]}}),v(xe.Item,{onSelect:()=>{C("left")},as:"button",get class(){return L(o().settingsSubButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-left")},get children(){return[Ag(),v(_0,{})]}}),v(xe.Item,{onSelect:()=>{C("right")},as:"button",get class(){return L(o().settingsSubButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-right")},get children(){return[Mg(),v(R0,{})]}})]}})}})]}})}}),v(xe.Sub,{overlap:!0,gutter:8,shift:-4,get children(){return[v(xe.SubTrigger,{get class(){return L(o().settingsSubTrigger,"tsqd-settings-menu-sub-trigger","tsqd-settings-menu-sub-trigger-position")},get children(){return[Tg(),v(_n,{})]}}),v(xe.Portal,{ref:O=>P(O),get mount(){return k(()=>!!i().pipWindow)()?i().pipWindow.document.body:document.body},get children(){return v(xe.SubContent,{get class(){return L(o().settingsMenu,"tsqd-settings-submenu")},get children(){return[v(xe.Item,{onSelect:()=>{e.setLocalStore("theme_preference","light")},as:"button",get class(){return L(o().settingsSubButton,e.localStore.theme_preference==="light"&&o().themeSelectedButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-top")},get children(){return[Og(),v(z0,{})]}}),v(xe.Item,{onSelect:()=>{e.setLocalStore("theme_preference","dark")},as:"button",get class(){return L(o().settingsSubButton,e.localStore.theme_preference==="dark"&&o().themeSelectedButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-bottom")},get children(){return[Dg(),v(K0,{})]}}),v(xe.Item,{onSelect:()=>{e.setLocalStore("theme_preference","system")},as:"button",get class(){return L(o().settingsSubButton,e.localStore.theme_preference==="system"&&o().themeSelectedButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-left")},get children(){return[Ig(),v(B0,{})]}})]}})}})]}})]}})}})]}}),null),E(D,v(N,{get when(){return l()==="queries"},get children(){var O=Pg(),pe=O.firstChild;return E(pe,v(vr,{by:te=>te.queryHash,get each(){return b()},children:te=>v(Qg,{get query(){return te()}})})),K(()=>T(O,L(o().overflowQueryContainer,"tsqd-queries-overflow-container"))),O}}),null),E(D,v(N,{get when(){return l()==="mutations"},get children(){var O=Fg(),pe=O.firstChild;return E(pe,v(vr,{by:te=>te.mutationId,get each(){return x()},children:te=>v(Yg,{get mutation(){return te()}})})),K(()=>T(O,L(o().overflowQueryContainer,"tsqd-mutations-overflow-container"))),O}}),null),K(O=>{var pe=L(o().queriesContainer,rt()<jt&&(Ne()||Ft())&&r`
|
|
172
|
+
height: 50%;
|
|
173
|
+
max-height: 50%;
|
|
174
|
+
`,rt()<jt&&!(Ne()||Ft())&&r`
|
|
175
|
+
height: 100%;
|
|
176
|
+
max-height: 100%;
|
|
177
|
+
`,"tsqd-queries-container"),te=L(o().row,"tsqd-header"),At=o().logoAndToggleContainer,H=L(o().logo,"tsqd-text-logo-container"),Je=L(o().tanstackLogo,"tsqd-text-logo-tanstack"),Te=L(o().queryFlavorLogo,"tsqd-text-logo-query-flavor"),Xt=L(o().row,"tsqd-filters-actions-container"),Ge=L(o().filtersContainer,"tsqd-filters-container"),Mt=L(o().filterInput,"tsqd-query-filter-textfield-container"),zt=L("tsqd-query-filter-textfield"),gt=L(o().filterSelect,"tsqd-query-filter-sort-container"),st=`Sort order ${(l()==="queries"?c():u())===-1?"descending":"ascending"}`,ht=(l()==="queries"?c():u())===-1,I=L(o().actionsContainer,"tsqd-actions-container"),ae=L(o().actionsBtn,"tsqd-actions-btn","tsqd-action-clear-cache"),Le=`Clear ${l()} cache`,de=L(o().actionsBtn,an()&&o().actionsBtnOffline,"tsqd-actions-btn","tsqd-action-mock-offline-behavior"),ie=`${an()?"Unset offline mocking behavior":"Mock offline behavior"}`,he=an(),$e=`${an()?"Unset offline mocking behavior":"Mock offline behavior"}`;return pe!==O.e&&T(D,O.e=pe),te!==O.t&&T(F,O.t=te),At!==O.a&&T($,O.a=At),H!==O.o&&T(q,O.o=H),Je!==O.i&&T(j,O.i=Je),Te!==O.n&&T(G,O.n=Te),Xt!==O.s&&T(oe,O.s=Xt),Ge!==O.h&&T(fe,O.h=Ge),Mt!==O.r&&T(ce,O.r=Mt),zt!==O.d&&T(le,O.d=zt),gt!==O.l&&T(ue,O.l=gt),st!==O.u&&M(ge,"aria-label",O.u=st),ht!==O.c&&M(ge,"aria-pressed",O.c=ht),I!==O.w&&T(Ce,O.w=I),ae!==O.m&&T(_e,O.m=ae),Le!==O.f&&M(_e,"title",O.f=Le),de!==O.y&&T(be,O.y=de),ie!==O.g&&M(be,"aria-label",O.g=ie),he!==O.p&&M(be,"aria-pressed",O.p=he),$e!==O.b&&M(be,"title",O.b=$e),O},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0}),K(()=>le.value=l()==="queries"?e.localStore.filter||"":e.localStore.mutationFilter||""),D})(),v(N,{get when(){return k(()=>l()==="queries")()&&Ne()},get children(){return v(Jg,{})}}),v(N,{get when(){return k(()=>l()==="mutations")()&&Ft()},get children(){return v(eh,{})}})]},Qg=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?Ze(n):Xe(n)),{colors:o,alpha:i}=S,l=(f,h)=>t()==="dark"?h:f,a=Me(f=>f().find({queryKey:e.query.queryKey})?.state,!0,f=>f.query.queryHash===e.query.queryHash),s=Me(f=>f().find({queryKey:e.query.queryKey})?.isDisabled()??!1,!0,f=>f.query.queryHash===e.query.queryHash),c=Me(f=>f().find({queryKey:e.query.queryKey})?.isStale()??!1,!0,f=>f.query.queryHash===e.query.queryHash),d=Me(f=>f().find({queryKey:e.query.queryKey})?.getObserversCount()??0,!0,f=>f.query.queryHash===e.query.queryHash),u=k(()=>Ui({queryState:a(),observerCount:d(),isStale:c()})),g=()=>u()==="gray"?n`
|
|
178
|
+
background-color: ${l(o[u()][200],o[u()][700])};
|
|
179
|
+
color: ${l(o[u()][700],o[u()][300])};
|
|
180
|
+
`:n`
|
|
181
|
+
background-color: ${l(o[u()][200]+i[80],o[u()][900])};
|
|
182
|
+
color: ${l(o[u()][800],o[u()][300])};
|
|
183
|
+
`;return v(N,{get when(){return a()},get children(){var f=va(),h=f.firstChild,y=h.nextSibling;return f.$$click=()=>Ir(e.query.queryHash===Ne()?null:e.query.queryHash),E(h,d),E(y,()=>e.query.queryHash),E(f,v(N,{get when(){return s()},get children(){return qg()}}),null),K(m=>{var p=L(r().queryRow,Ne()===e.query.queryHash&&r().selectedQueryRow,"tsqd-query-row"),b=`Query key ${e.query.queryHash}`,w=L(g(),"tsqd-query-observer-count");return p!==m.e&&T(f,m.e=p),b!==m.t&&M(f,"aria-label",m.t=b),w!==m.a&&T(h,m.a=w),m},{e:void 0,t:void 0,a:void 0}),f}})},Yg=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?Ze(n):Xe(n)),{colors:o,alpha:i}=S,l=(g,f)=>t()==="dark"?f:g,a=nt(g=>g().getAll().find(y=>y.mutationId===e.mutation.mutationId)?.state),s=nt(g=>{let h=g().getAll().find(y=>y.mutationId===e.mutation.mutationId);return h?h.state.isPaused:!1}),c=nt(g=>{let h=g().getAll().find(y=>y.mutationId===e.mutation.mutationId);return h?h.state.status:"idle"}),d=k(()=>Gt({isPaused:s(),status:c()})),u=()=>d()==="gray"?n`
|
|
184
|
+
background-color: ${l(o[d()][200],o[d()][700])};
|
|
185
|
+
color: ${l(o[d()][700],o[d()][300])};
|
|
186
|
+
`:n`
|
|
187
|
+
background-color: ${l(o[d()][200]+i[80],o[d()][900])};
|
|
188
|
+
color: ${l(o[d()][800],o[d()][300])};
|
|
189
|
+
`;return v(N,{get when(){return a()},get children(){var g=va(),f=g.firstChild,h=f.nextSibling;return g.$$click=()=>{pa(e.mutation.mutationId===Ft()?null:e.mutation.mutationId)},E(f,v(N,{get when(){return d()==="purple"},get children(){return v(tg,{})}}),null),E(f,v(N,{get when(){return d()==="green"},get children(){return v(Z0,{})}}),null),E(f,v(N,{get when(){return d()==="red"},get children(){return v(eg,{})}}),null),E(f,v(N,{get when(){return d()==="yellow"},get children(){return v(J0,{})}}),null),E(h,v(N,{get when(){return e.mutation.options.mutationKey},get children(){return[k(()=>JSON.stringify(e.mutation.options.mutationKey))," -"," "]}}),null),E(h,()=>new Date(e.mutation.state.submittedAt).toLocaleString(),null),K(y=>{var m=L(r().queryRow,Ft()===e.mutation.mutationId&&r().selectedQueryRow,"tsqd-query-row"),p=`Mutation submitted at ${new Date(e.mutation.state.submittedAt).toLocaleString()}`,b=L(u(),"tsqd-query-observer-count");return m!==y.e&&T(g,y.e=m),p!==y.t&&M(g,"aria-label",y.t=p),b!==y.a&&T(f,y.a=b),y},{e:void 0,t:void 0,a:void 0}),g}})},Xg=()=>{let e=Me(s=>s().getAll().filter(c=>Ut(c)==="stale").length),t=Me(s=>s().getAll().filter(c=>Ut(c)==="fresh").length),n=Me(s=>s().getAll().filter(c=>Ut(c)==="fetching").length),r=Me(s=>s().getAll().filter(c=>Ut(c)==="paused").length),o=Me(s=>s().getAll().filter(c=>Ut(c)==="inactive").length),i=Ae(),l=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,a=k(()=>i()==="dark"?Ze(l):Xe(l));return(()=>{var s=jn();return E(s,v(St,{label:"Fresh",color:"green",get count(){return t()}}),null),E(s,v(St,{label:"Fetching",color:"blue",get count(){return n()}}),null),E(s,v(St,{label:"Paused",color:"purple",get count(){return r()}}),null),E(s,v(St,{label:"Stale",color:"yellow",get count(){return e()}}),null),E(s,v(St,{label:"Inactive",color:"gray",get count(){return o()}}),null),K(()=>T(s,L(a().queryStatusContainer,"tsqd-query-status-container"))),s})()},Zg=()=>{let e=nt(a=>a().getAll().filter(s=>Gt({isPaused:s.state.isPaused,status:s.state.status})==="green").length),t=nt(a=>a().getAll().filter(s=>Gt({isPaused:s.state.isPaused,status:s.state.status})==="yellow").length),n=nt(a=>a().getAll().filter(s=>Gt({isPaused:s.state.isPaused,status:s.state.status})==="purple").length),r=nt(a=>a().getAll().filter(s=>Gt({isPaused:s.state.isPaused,status:s.state.status})==="red").length),o=Ae(),i=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,l=k(()=>o()==="dark"?Ze(i):Xe(i));return(()=>{var a=jn();return E(a,v(St,{label:"Paused",color:"purple",get count(){return n()}}),null),E(a,v(St,{label:"Pending",color:"yellow",get count(){return t()}}),null),E(a,v(St,{label:"Success",color:"green",get count(){return e()}}),null),E(a,v(St,{label:"Error",color:"red",get count(){return r()}}),null),K(()=>T(a,L(l().queryStatusContainer,"tsqd-query-status-container"))),a})()},St=e=>{let t=Ae(),n=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,r=k(()=>t()==="dark"?Ze(n):Xe(n)),{colors:o,alpha:i}=S,l=(f,h)=>t()==="dark"?h:f,a,[s,c]=z(!1),[d,u]=z(!1),g=k(()=>!(Ne()&&rt()<Hc&&rt()>jt||rt()<jt));return(()=>{var f=zg(),h=f.firstChild,y=h.nextSibling,m=a;return typeof m=="function"?Nt(m,f):a=f,f.addEventListener("mouseleave",()=>{c(!1),u(!1)}),f.addEventListener("mouseenter",()=>c(!0)),f.addEventListener("blur",()=>u(!1)),f.addEventListener("focus",()=>u(!0)),Hr(f,W({get disabled(){return g()},get class(){return L(r().queryStatusTag,!g()&&n`
|
|
190
|
+
cursor: pointer;
|
|
191
|
+
&:hover {
|
|
192
|
+
background: ${l(o.gray[200],o.darkGray[400])}${i[80]};
|
|
193
|
+
}
|
|
194
|
+
`,"tsqd-query-status-tag",`tsqd-query-status-tag-${e.label.toLowerCase()}`)}},()=>s()||d()?{"aria-describedby":"tsqd-status-tooltip"}:{}),!1,!0),E(f,v(N,{get when(){return k(()=>!g())()&&(s()||d())},get children(){var p=_g();return E(p,()=>e.label),K(()=>T(p,L(r().statusTooltip,"tsqd-query-status-tooltip"))),p}}),h),E(f,v(N,{get when(){return g()},get children(){var p=Rg();return E(p,()=>e.label),K(()=>T(p,L(r().queryStatusTagLabel,"tsqd-query-status-tag-label"))),p}}),y),E(y,()=>e.count),K(p=>{var b=L(n`
|
|
195
|
+
width: ${S.size[1.5]};
|
|
196
|
+
height: ${S.size[1.5]};
|
|
197
|
+
border-radius: ${S.border.radius.full};
|
|
198
|
+
background-color: ${S.colors[e.color][500]};
|
|
199
|
+
`,"tsqd-query-status-tag-dot"),w=L(r().queryStatusCount,e.count>0&&e.color!=="gray"&&n`
|
|
200
|
+
background-color: ${l(o[e.color][100],o[e.color][900])};
|
|
201
|
+
color: ${l(o[e.color][700],o[e.color][300])};
|
|
202
|
+
`,"tsqd-query-status-tag-count");return b!==p.e&&T(h,p.e=b),w!==p.t&&T(y,p.t=w),p},{e:void 0,t:void 0}),f})()},Jg=()=>{let e=Ae(),t=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,n=k(()=>e()==="dark"?Ze(t):Xe(t)),{colors:r}=S,o=($,q)=>e()==="dark"?q:$,i=V().client,[l,a]=z(!1),[s,c]=z("view"),[d,u]=z(!1),g=k(()=>V().errorTypes||[]),f=Me($=>$().getAll().find(q=>q.queryHash===Ne()),!1),h=Me($=>$().getAll().find(q=>q.queryHash===Ne()),!1),y=Me($=>$().getAll().find(q=>q.queryHash===Ne())?.state,!1),m=Me($=>$().getAll().find(q=>q.queryHash===Ne())?.state.data,!1),p=Me($=>{let q=$().getAll().find(j=>j.queryHash===Ne());return q?Ut(q):"inactive"}),b=Me($=>{let q=$().getAll().find(j=>j.queryHash===Ne());return q?q.state.status:"pending"}),w=Me($=>$().getAll().find(q=>q.queryHash===Ne())?.getObserversCount()??0),x=k(()=>Gi(p())),C=()=>{f()?.fetch()?.catch(()=>{})},P=$=>{let q=$?.initializer(f())??new Error("Unknown error from devtools"),j=f().options;f().setState({status:"error",error:q,fetchMeta:{...f().state.fetchMeta,__previousQueryOptions:j}})},D=()=>{let $=f(),q=$.state,j=$.state.fetchMeta?$.state.fetchMeta.__previousQueryOptions:null;$.cancel({silent:!0}),$.setState({...q,fetchStatus:"idle",fetchMeta:null}),j&&$.fetch(j)};B(()=>{p()!=="fetching"&&a(!1)});let F=()=>x()==="gray"?t`
|
|
203
|
+
background-color: ${o(r[x()][200],r[x()][700])};
|
|
204
|
+
color: ${o(r[x()][700],r[x()][300])};
|
|
205
|
+
border-color: ${o(r[x()][400],r[x()][600])};
|
|
206
|
+
`:t`
|
|
207
|
+
background-color: ${o(r[x()][100],r[x()][900])};
|
|
208
|
+
color: ${o(r[x()][700],r[x()][300])};
|
|
209
|
+
border-color: ${o(r[x()][400],r[x()][600])};
|
|
210
|
+
`;return v(N,{get when(){return k(()=>!!f())()&&y()},get children(){var $=Ug(),q=$.firstChild,j=q.nextSibling,G=j.firstChild,se=G.firstChild,oe=se.firstChild,fe=se.nextSibling,ce=G.nextSibling,le=ce.firstChild,ue=le.nextSibling,ge=ce.nextSibling,Ce=ge.firstChild,_e=Ce.nextSibling,be=j.nextSibling,Fe=be.nextSibling,O=Fe.firstChild,pe=O.firstChild,te=O.nextSibling,At=te.firstChild,H=te.nextSibling,Je=H.firstChild,Te=H.nextSibling,Xt=Te.firstChild,Ge=Te.nextSibling,Mt=Ge.firstChild,zt=Mt.nextSibling,gt=Fe.nextSibling;gt.firstChild;var st=gt.nextSibling,ht=st.nextSibling;return E(oe,()=>Dn(f().queryKey,!0)),E(fe,p),E(ue,w),E(_e,()=>new Date(y().dataUpdatedAt).toLocaleTimeString()),O.$$click=C,te.$$click=()=>i.invalidateQueries(f()),H.$$click=()=>i.resetQueries(f()),Te.$$click=()=>{i.removeQueries(f()),Ir(null)},Ge.$$click=()=>{if(f()?.state.data===void 0)a(!0),D();else{let I=f();if(!I)return;let ae=I.options;I.fetch({...ae,queryFn:()=>new Promise(()=>{}),gcTime:-1}),I.setState({data:void 0,status:"pending",fetchMeta:{...I.state.fetchMeta,__previousQueryOptions:ae}})}},E(Ge,()=>b()==="pending"?"Restore":"Trigger",zt),E(Fe,v(N,{get when(){return g().length===0||b()==="error"},get children(){var I=Kg(),ae=I.firstChild,Le=ae.nextSibling;return I.$$click=()=>{f().state.error?i.resetQueries(f()):P()},E(I,()=>b()==="error"?"Restore":"Trigger",Le),K(de=>{var ie=L(t`
|
|
211
|
+
color: ${o(r.red[500],r.red[400])};
|
|
212
|
+
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-error"),he=b()==="pending",$e=t`
|
|
213
|
+
background-color: ${o(r.red[500],r.red[400])};
|
|
214
|
+
`;return ie!==de.e&&T(I,de.e=ie),he!==de.t&&(I.disabled=de.t=he),$e!==de.a&&T(ae,de.a=$e),de},{e:void 0,t:void 0,a:void 0}),I}}),null),E(Fe,v(N,{get when(){return!(g().length===0||b()==="error")},get children(){var I=Bg(),ae=I.firstChild,Le=ae.nextSibling,de=Le.nextSibling;return de.firstChild,de.addEventListener("change",ie=>{let he=g().find($e=>$e.name===ie.currentTarget.value);P(he)}),E(de,v(wi,{get each(){return g()},children:ie=>(()=>{var he=Gg();return E(he,()=>ie.name),K(()=>he.value=ie.name),he})()}),null),E(I,v(_n,{}),null),K(ie=>{var he=L(n().actionsSelect,"tsqd-query-details-actions-btn","tsqd-query-details-action-error-multiple"),$e=t`
|
|
215
|
+
background-color: ${S.colors.red[400]};
|
|
216
|
+
`,ne=b()==="pending";return he!==ie.e&&T(I,ie.e=he),$e!==ie.t&&T(ae,ie.t=$e),ne!==ie.a&&(de.disabled=ie.a=ne),ie},{e:void 0,t:void 0,a:void 0}),I}}),null),E(gt,()=>s()==="view"?"Explorer":"Editor",null),E($,v(N,{get when(){return s()==="view"},get children(){var I=Ng();return E(I,v(Pt,{label:"Data",defaultExpanded:["Data"],get value(){return m()},editable:!0,onEdit:()=>c("edit"),get activeQuery(){return f()}})),K(ae=>(ae=S.size[2])!=null?I.style.setProperty("padding",ae):I.style.removeProperty("padding")),I}}),st),E($,v(N,{get when(){return s()==="edit"},get children(){var I=Vg(),ae=I.firstChild,Le=ae.nextSibling,de=Le.firstChild,ie=de.nextSibling,he=ie.firstChild,$e=he.nextSibling;return I.addEventListener("submit",ne=>{ne.preventDefault();let mt=new FormData(ne.currentTarget).get("data");try{let et=JSON.parse(mt);f().setState({...f().state,data:et}),c("view")}catch{u(!0)}}),ae.addEventListener("focus",()=>u(!1)),E(de,()=>d()?"Invalid Value":""),he.$$click=()=>c("view"),K(ne=>{var yt=L(n().devtoolsEditForm,"tsqd-query-details-data-editor"),mt=n().devtoolsEditTextarea,et=d(),Kt=n().devtoolsEditFormActions,vt=n().devtoolsEditFormError,Bt=n().devtoolsEditFormActionContainer,pt=L(n().devtoolsEditFormAction,t`
|
|
217
|
+
color: ${o(r.gray[600],r.gray[300])};
|
|
218
|
+
`),Tt=L(n().devtoolsEditFormAction,t`
|
|
219
|
+
color: ${o(r.blue[600],r.blue[400])};
|
|
220
|
+
`);return yt!==ne.e&&T(I,ne.e=yt),mt!==ne.t&&T(ae,ne.t=mt),et!==ne.a&&M(ae,"data-error",ne.a=et),Kt!==ne.o&&T(Le,ne.o=Kt),vt!==ne.i&&T(de,ne.i=vt),Bt!==ne.n&&T(ie,ne.n=Bt),pt!==ne.s&&T(he,ne.s=pt),Tt!==ne.h&&T($e,ne.h=Tt),ne},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),K(()=>ae.value=JSON.stringify(m(),null,2)),I}}),st),E(ht,v(Pt,{label:"Query",defaultExpanded:["Query","queryKey"],get value(){return h()}})),K(I=>{var ae=L(n().detailsContainer,"tsqd-query-details-container"),Le=L(n().detailsHeader,"tsqd-query-details-header"),de=L(n().detailsBody,"tsqd-query-details-summary-container"),ie=L(n().queryDetailsStatus,F()),he=L(n().detailsHeader,"tsqd-query-details-header"),$e=L(n().actionsBody,"tsqd-query-details-actions-container"),ne=L(t`
|
|
221
|
+
color: ${o(r.blue[600],r.blue[400])};
|
|
222
|
+
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-refetch"),yt=p()==="fetching",mt=t`
|
|
223
|
+
background-color: ${o(r.blue[600],r.blue[400])};
|
|
224
|
+
`,et=L(t`
|
|
225
|
+
color: ${o(r.yellow[600],r.yellow[400])};
|
|
226
|
+
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-invalidate"),Kt=b()==="pending",vt=t`
|
|
227
|
+
background-color: ${o(r.yellow[600],r.yellow[400])};
|
|
228
|
+
`,Bt=L(t`
|
|
229
|
+
color: ${o(r.gray[600],r.gray[300])};
|
|
230
|
+
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-reset"),pt=b()==="pending",Tt=t`
|
|
231
|
+
background-color: ${o(r.gray[600],r.gray[400])};
|
|
232
|
+
`,Wn=L(t`
|
|
233
|
+
color: ${o(r.pink[500],r.pink[400])};
|
|
234
|
+
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-remove"),vn=p()==="fetching",Qn=t`
|
|
235
|
+
background-color: ${o(r.pink[500],r.pink[400])};
|
|
236
|
+
`,Zt=L(t`
|
|
237
|
+
color: ${o(r.cyan[500],r.cyan[400])};
|
|
238
|
+
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-loading"),Yn=l(),pn=t`
|
|
239
|
+
background-color: ${o(r.cyan[500],r.cyan[400])};
|
|
240
|
+
`,bn=L(n().detailsHeader,"tsqd-query-details-header"),wn=L(n().detailsHeader,"tsqd-query-details-header"),Jt=S.size[2];return ae!==I.e&&T($,I.e=ae),Le!==I.t&&T(q,I.t=Le),de!==I.a&&T(j,I.a=de),ie!==I.o&&T(fe,I.o=ie),he!==I.i&&T(be,I.i=he),$e!==I.n&&T(Fe,I.n=$e),ne!==I.s&&T(O,I.s=ne),yt!==I.h&&(O.disabled=I.h=yt),mt!==I.r&&T(pe,I.r=mt),et!==I.d&&T(te,I.d=et),Kt!==I.l&&(te.disabled=I.l=Kt),vt!==I.u&&T(At,I.u=vt),Bt!==I.c&&T(H,I.c=Bt),pt!==I.w&&(H.disabled=I.w=pt),Tt!==I.m&&T(Je,I.m=Tt),Wn!==I.f&&T(Te,I.f=Wn),vn!==I.y&&(Te.disabled=I.y=vn),Qn!==I.g&&T(Xt,I.g=Qn),Zt!==I.p&&T(Ge,I.p=Zt),Yn!==I.b&&(Ge.disabled=I.b=Yn),pn!==I.T&&T(Mt,I.T=pn),bn!==I.A&&T(gt,I.A=bn),wn!==I.O&&T(st,I.O=wn),Jt!==I.I&&((I.I=Jt)!=null?ht.style.setProperty("padding",Jt):ht.style.removeProperty("padding")),I},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0}),$}})},eh=()=>{let e=Ae(),t=V().shadowDOMTarget?Q.bind({target:V().shadowDOMTarget}):Q,n=k(()=>e()==="dark"?Ze(t):Xe(t)),{colors:r}=S,o=(d,u)=>e()==="dark"?u:d,i=nt(d=>{let g=d().getAll().find(f=>f.mutationId===Ft());return g?g.state.isPaused:!1}),l=nt(d=>{let g=d().getAll().find(f=>f.mutationId===Ft());return g?g.state.status:"idle"}),a=k(()=>Gt({isPaused:i(),status:l()})),s=nt(d=>d().getAll().find(u=>u.mutationId===Ft()),!1),c=()=>a()==="gray"?t`
|
|
241
|
+
background-color: ${o(r[a()][200],r[a()][700])};
|
|
242
|
+
color: ${o(r[a()][700],r[a()][300])};
|
|
243
|
+
border-color: ${o(r[a()][400],r[a()][600])};
|
|
244
|
+
`:t`
|
|
245
|
+
background-color: ${o(r[a()][100],r[a()][900])};
|
|
246
|
+
color: ${o(r[a()][700],r[a()][300])};
|
|
247
|
+
border-color: ${o(r[a()][400],r[a()][600])};
|
|
248
|
+
`;return v(N,{get when(){return s()},get children(){var d=Hg(),u=d.firstChild,g=u.nextSibling,f=g.firstChild,h=f.firstChild,y=h.firstChild,m=h.nextSibling,p=f.nextSibling,b=p.firstChild,w=b.nextSibling,x=g.nextSibling,C=x.nextSibling,P=C.nextSibling,D=P.nextSibling,F=D.nextSibling,$=F.nextSibling,q=$.nextSibling,j=q.nextSibling;return E(y,v(N,{get when(){return s().options.mutationKey},fallback:"No mutationKey found",get children(){return Dn(s().options.mutationKey,!0)}})),E(m,v(N,{get when(){return a()==="purple"},children:"pending"}),null),E(m,v(N,{get when(){return a()!=="purple"},get children(){return l()}}),null),E(w,()=>new Date(s().state.submittedAt).toLocaleTimeString()),E(C,v(Pt,{label:"Variables",defaultExpanded:["Variables"],get value(){return s().state.variables}})),E(D,v(Pt,{label:"Context",defaultExpanded:["Context"],get value(){return s().state.context}})),E($,v(Pt,{label:"Data",defaultExpanded:["Data"],get value(){return s().state.data}})),E(j,v(Pt,{label:"Mutation",defaultExpanded:["Mutation"],get value(){return s()}})),K(G=>{var se=L(n().detailsContainer,"tsqd-query-details-container"),oe=L(n().detailsHeader,"tsqd-query-details-header"),fe=L(n().detailsBody,"tsqd-query-details-summary-container"),ce=L(n().queryDetailsStatus,c()),le=L(n().detailsHeader,"tsqd-query-details-header"),ue=S.size[2],ge=L(n().detailsHeader,"tsqd-query-details-header"),Ce=S.size[2],_e=L(n().detailsHeader,"tsqd-query-details-header"),be=S.size[2],Fe=L(n().detailsHeader,"tsqd-query-details-header"),O=S.size[2];return se!==G.e&&T(d,G.e=se),oe!==G.t&&T(u,G.t=oe),fe!==G.a&&T(g,G.a=fe),ce!==G.o&&T(m,G.o=ce),le!==G.i&&T(x,G.i=le),ue!==G.n&&((G.n=ue)!=null?C.style.setProperty("padding",ue):C.style.removeProperty("padding")),ge!==G.s&&T(P,G.s=ge),Ce!==G.h&&((G.h=Ce)!=null?D.style.setProperty("padding",Ce):D.style.removeProperty("padding")),_e!==G.r&&T(F,G.r=_e),be!==G.d&&((G.d=be)!=null?$.style.setProperty("padding",be):$.style.removeProperty("padding")),Fe!==G.l&&T(q,G.l=Fe),O!==G.u&&((G.u=O)!=null?j.style.setProperty("padding",O):j.style.removeProperty("padding")),G},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0}),d}})},Cr=new Map,th=()=>{let e=k(()=>V().client.getQueryCache()),t=e().subscribe(n=>{ui(()=>{for(let[r,o]of Cr.entries())o.shouldUpdate(n)&&o.setter(r(e))})});return U(()=>{Cr.clear(),t()}),t},Me=(e,t=!0,n=()=>!0)=>{let r=k(()=>V().client.getQueryCache()),[o,i]=z(e(r),t?void 0:{equals:!1});return B(()=>{i(e(r))}),Cr.set(e,{setter:i,shouldUpdate:n}),U(()=>{Cr.delete(e)}),o},Sr=new Map,nh=()=>{let e=k(()=>V().client.getMutationCache()),t=e().subscribe(()=>{for(let[n,r]of Sr.entries())queueMicrotask(()=>{r(n(e))})});return U(()=>{Sr.clear(),t()}),t},nt=(e,t=!0)=>{let n=k(()=>V().client.getMutationCache()),[r,o]=z(e(n),t?void 0:{equals:!1});return B(()=>{o(e(n))}),Sr.set(e,o),U(()=>{Sr.delete(e)}),r},wa=(e,t)=>{let{colors:n,font:r,size:o,alpha:i,shadow:l,border:a}=S,s=(c,d)=>e==="light"?c:d;return{devtoolsBtn:t`
|
|
249
|
+
z-index: 100000;
|
|
250
|
+
position: fixed;
|
|
251
|
+
padding: 4px;
|
|
252
|
+
text-align: left;
|
|
253
|
+
|
|
254
|
+
display: flex;
|
|
255
|
+
align-items: center;
|
|
256
|
+
justify-content: center;
|
|
257
|
+
border-radius: 9999px;
|
|
258
|
+
box-shadow: ${l.md()};
|
|
259
|
+
overflow: hidden;
|
|
260
|
+
|
|
261
|
+
& div {
|
|
262
|
+
position: absolute;
|
|
263
|
+
top: -8px;
|
|
264
|
+
left: -8px;
|
|
265
|
+
right: -8px;
|
|
266
|
+
bottom: -8px;
|
|
267
|
+
border-radius: 9999px;
|
|
268
|
+
|
|
269
|
+
& svg {
|
|
270
|
+
position: absolute;
|
|
271
|
+
width: 100%;
|
|
272
|
+
height: 100%;
|
|
273
|
+
}
|
|
274
|
+
filter: blur(6px) saturate(1.2) contrast(1.1);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
&:focus-within {
|
|
278
|
+
outline-offset: 2px;
|
|
279
|
+
outline: 3px solid ${n.green[600]};
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
& button {
|
|
283
|
+
position: relative;
|
|
284
|
+
z-index: 1;
|
|
285
|
+
padding: 0;
|
|
286
|
+
border-radius: 9999px;
|
|
287
|
+
background-color: transparent;
|
|
288
|
+
border: none;
|
|
289
|
+
height: 40px;
|
|
290
|
+
display: flex;
|
|
291
|
+
width: 40px;
|
|
292
|
+
overflow: hidden;
|
|
293
|
+
cursor: pointer;
|
|
294
|
+
outline: none;
|
|
295
|
+
& svg {
|
|
296
|
+
position: absolute;
|
|
297
|
+
width: 100%;
|
|
298
|
+
height: 100%;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
`,panel:t`
|
|
302
|
+
position: fixed;
|
|
303
|
+
z-index: 9999;
|
|
304
|
+
display: flex;
|
|
305
|
+
gap: ${S.size[.5]};
|
|
306
|
+
& * {
|
|
307
|
+
box-sizing: border-box;
|
|
308
|
+
text-transform: none;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
& *::-webkit-scrollbar {
|
|
312
|
+
width: 7px;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
& *::-webkit-scrollbar-track {
|
|
316
|
+
background: transparent;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
& *::-webkit-scrollbar-thumb {
|
|
320
|
+
background: ${s(n.gray[300],n.darkGray[200])};
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
& *::-webkit-scrollbar-thumb:hover {
|
|
324
|
+
background: ${s(n.gray[400],n.darkGray[300])};
|
|
325
|
+
}
|
|
326
|
+
`,parentPanel:t`
|
|
327
|
+
z-index: 9999;
|
|
328
|
+
display: flex;
|
|
329
|
+
height: 100%;
|
|
330
|
+
gap: ${S.size[.5]};
|
|
331
|
+
& * {
|
|
332
|
+
box-sizing: border-box;
|
|
333
|
+
text-transform: none;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
& *::-webkit-scrollbar {
|
|
337
|
+
width: 7px;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
& *::-webkit-scrollbar-track {
|
|
341
|
+
background: transparent;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
& *::-webkit-scrollbar-thumb {
|
|
345
|
+
background: ${s(n.gray[300],n.darkGray[200])};
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
& *::-webkit-scrollbar-thumb:hover {
|
|
349
|
+
background: ${s(n.gray[400],n.darkGray[300])};
|
|
350
|
+
}
|
|
351
|
+
`,"devtoolsBtn-position-bottom-right":t`
|
|
352
|
+
bottom: 12px;
|
|
353
|
+
right: 12px;
|
|
354
|
+
`,"devtoolsBtn-position-bottom-left":t`
|
|
355
|
+
bottom: 12px;
|
|
356
|
+
left: 12px;
|
|
357
|
+
`,"devtoolsBtn-position-top-left":t`
|
|
358
|
+
top: 12px;
|
|
359
|
+
left: 12px;
|
|
360
|
+
`,"devtoolsBtn-position-top-right":t`
|
|
361
|
+
top: 12px;
|
|
362
|
+
right: 12px;
|
|
363
|
+
`,"devtoolsBtn-position-relative":t`
|
|
364
|
+
position: relative;
|
|
365
|
+
`,"panel-position-top":t`
|
|
366
|
+
top: 0;
|
|
367
|
+
right: 0;
|
|
368
|
+
left: 0;
|
|
369
|
+
max-height: 90%;
|
|
370
|
+
min-height: ${o[14]};
|
|
371
|
+
border-bottom: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
372
|
+
`,"panel-position-bottom":t`
|
|
373
|
+
bottom: 0;
|
|
374
|
+
right: 0;
|
|
375
|
+
left: 0;
|
|
376
|
+
max-height: 90%;
|
|
377
|
+
min-height: ${o[14]};
|
|
378
|
+
border-top: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
379
|
+
`,"panel-position-right":t`
|
|
380
|
+
bottom: 0;
|
|
381
|
+
right: 0;
|
|
382
|
+
top: 0;
|
|
383
|
+
border-left: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
384
|
+
max-width: 90%;
|
|
385
|
+
`,"panel-position-left":t`
|
|
386
|
+
bottom: 0;
|
|
387
|
+
left: 0;
|
|
388
|
+
top: 0;
|
|
389
|
+
border-right: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
390
|
+
max-width: 90%;
|
|
391
|
+
`,closeBtn:t`
|
|
392
|
+
position: absolute;
|
|
393
|
+
cursor: pointer;
|
|
394
|
+
z-index: 5;
|
|
395
|
+
display: flex;
|
|
396
|
+
align-items: center;
|
|
397
|
+
justify-content: center;
|
|
398
|
+
outline: none;
|
|
399
|
+
background-color: ${s(n.gray[50],n.darkGray[700])};
|
|
400
|
+
&:hover {
|
|
401
|
+
background-color: ${s(n.gray[200],n.darkGray[500])};
|
|
402
|
+
}
|
|
403
|
+
&:focus-visible {
|
|
404
|
+
outline: 2px solid ${n.blue[600]};
|
|
405
|
+
}
|
|
406
|
+
& svg {
|
|
407
|
+
color: ${s(n.gray[600],n.gray[400])};
|
|
408
|
+
width: ${o[2]};
|
|
409
|
+
height: ${o[2]};
|
|
410
|
+
}
|
|
411
|
+
`,"closeBtn-position-top":t`
|
|
412
|
+
bottom: 0;
|
|
413
|
+
right: ${o[2]};
|
|
414
|
+
transform: translate(0, 100%);
|
|
415
|
+
border-right: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
416
|
+
border-left: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
417
|
+
border-top: none;
|
|
418
|
+
border-bottom: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
419
|
+
border-radius: 0px 0px ${a.radius.sm} ${a.radius.sm};
|
|
420
|
+
padding: ${o[.5]} ${o[1.5]} ${o[1]} ${o[1.5]};
|
|
421
|
+
|
|
422
|
+
&::after {
|
|
423
|
+
content: ' ';
|
|
424
|
+
position: absolute;
|
|
425
|
+
bottom: 100%;
|
|
426
|
+
left: -${o[2.5]};
|
|
427
|
+
height: ${o[1.5]};
|
|
428
|
+
width: calc(100% + ${o[5]});
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
& svg {
|
|
432
|
+
transform: rotate(180deg);
|
|
433
|
+
}
|
|
434
|
+
`,"closeBtn-position-bottom":t`
|
|
435
|
+
top: 0;
|
|
436
|
+
right: ${o[2]};
|
|
437
|
+
transform: translate(0, -100%);
|
|
438
|
+
border-right: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
439
|
+
border-left: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
440
|
+
border-top: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
441
|
+
border-bottom: none;
|
|
442
|
+
border-radius: ${a.radius.sm} ${a.radius.sm} 0px 0px;
|
|
443
|
+
padding: ${o[1]} ${o[1.5]} ${o[.5]} ${o[1.5]};
|
|
444
|
+
|
|
445
|
+
&::after {
|
|
446
|
+
content: ' ';
|
|
447
|
+
position: absolute;
|
|
448
|
+
top: 100%;
|
|
449
|
+
left: -${o[2.5]};
|
|
450
|
+
height: ${o[1.5]};
|
|
451
|
+
width: calc(100% + ${o[5]});
|
|
452
|
+
}
|
|
453
|
+
`,"closeBtn-position-right":t`
|
|
454
|
+
bottom: ${o[2]};
|
|
455
|
+
left: 0;
|
|
456
|
+
transform: translate(-100%, 0);
|
|
457
|
+
border-right: none;
|
|
458
|
+
border-left: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
459
|
+
border-top: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
460
|
+
border-bottom: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
461
|
+
border-radius: ${a.radius.sm} 0px 0px ${a.radius.sm};
|
|
462
|
+
padding: ${o[1.5]} ${o[.5]} ${o[1.5]} ${o[1]};
|
|
463
|
+
|
|
464
|
+
&::after {
|
|
465
|
+
content: ' ';
|
|
466
|
+
position: absolute;
|
|
467
|
+
left: 100%;
|
|
468
|
+
height: calc(100% + ${o[5]});
|
|
469
|
+
width: ${o[1.5]};
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
& svg {
|
|
473
|
+
transform: rotate(-90deg);
|
|
474
|
+
}
|
|
475
|
+
`,"closeBtn-position-left":t`
|
|
476
|
+
bottom: ${o[2]};
|
|
477
|
+
right: 0;
|
|
478
|
+
transform: translate(100%, 0);
|
|
479
|
+
border-left: none;
|
|
480
|
+
border-right: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
481
|
+
border-top: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
482
|
+
border-bottom: ${s(n.gray[400],n.darkGray[300])} 1px solid;
|
|
483
|
+
border-radius: 0px ${a.radius.sm} ${a.radius.sm} 0px;
|
|
484
|
+
padding: ${o[1.5]} ${o[1]} ${o[1.5]} ${o[.5]};
|
|
485
|
+
|
|
486
|
+
&::after {
|
|
487
|
+
content: ' ';
|
|
488
|
+
position: absolute;
|
|
489
|
+
right: 100%;
|
|
490
|
+
height: calc(100% + ${o[5]});
|
|
491
|
+
width: ${o[1.5]};
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
& svg {
|
|
495
|
+
transform: rotate(90deg);
|
|
496
|
+
}
|
|
497
|
+
`,queriesContainer:t`
|
|
498
|
+
flex: 1 1 700px;
|
|
499
|
+
background-color: ${s(n.gray[50],n.darkGray[700])};
|
|
500
|
+
display: flex;
|
|
501
|
+
flex-direction: column;
|
|
502
|
+
& * {
|
|
503
|
+
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
504
|
+
}
|
|
505
|
+
`,dragHandle:t`
|
|
506
|
+
position: absolute;
|
|
507
|
+
transition: background-color 0.125s ease;
|
|
508
|
+
&:hover {
|
|
509
|
+
background-color: ${n.purple[400]}${s("",i[90])};
|
|
510
|
+
}
|
|
511
|
+
z-index: 4;
|
|
512
|
+
`,"dragHandle-position-top":t`
|
|
513
|
+
bottom: 0;
|
|
514
|
+
width: 100%;
|
|
515
|
+
height: 3px;
|
|
516
|
+
cursor: ns-resize;
|
|
517
|
+
`,"dragHandle-position-bottom":t`
|
|
518
|
+
top: 0;
|
|
519
|
+
width: 100%;
|
|
520
|
+
height: 3px;
|
|
521
|
+
cursor: ns-resize;
|
|
522
|
+
`,"dragHandle-position-right":t`
|
|
523
|
+
left: 0;
|
|
524
|
+
width: 3px;
|
|
525
|
+
height: 100%;
|
|
526
|
+
cursor: ew-resize;
|
|
527
|
+
`,"dragHandle-position-left":t`
|
|
528
|
+
right: 0;
|
|
529
|
+
width: 3px;
|
|
530
|
+
height: 100%;
|
|
531
|
+
cursor: ew-resize;
|
|
532
|
+
`,row:t`
|
|
533
|
+
display: flex;
|
|
534
|
+
justify-content: space-between;
|
|
535
|
+
align-items: center;
|
|
536
|
+
padding: ${S.size[2]} ${S.size[2.5]};
|
|
537
|
+
gap: ${S.size[2.5]};
|
|
538
|
+
border-bottom: ${s(n.gray[300],n.darkGray[500])} 1px solid;
|
|
539
|
+
align-items: center;
|
|
540
|
+
& > button {
|
|
541
|
+
padding: 0;
|
|
542
|
+
background: transparent;
|
|
543
|
+
border: none;
|
|
544
|
+
display: flex;
|
|
545
|
+
gap: ${o[.5]};
|
|
546
|
+
flex-direction: column;
|
|
547
|
+
}
|
|
548
|
+
`,logoAndToggleContainer:t`
|
|
549
|
+
display: flex;
|
|
550
|
+
gap: ${S.size[3]};
|
|
551
|
+
align-items: center;
|
|
552
|
+
`,logo:t`
|
|
553
|
+
cursor: pointer;
|
|
554
|
+
display: flex;
|
|
555
|
+
flex-direction: column;
|
|
556
|
+
background-color: transparent;
|
|
557
|
+
border: none;
|
|
558
|
+
gap: ${S.size[.5]};
|
|
559
|
+
padding: 0px;
|
|
560
|
+
&:hover {
|
|
561
|
+
opacity: 0.7;
|
|
562
|
+
}
|
|
563
|
+
&:focus-visible {
|
|
564
|
+
outline-offset: 4px;
|
|
565
|
+
border-radius: ${a.radius.xs};
|
|
566
|
+
outline: 2px solid ${n.blue[800]};
|
|
567
|
+
}
|
|
568
|
+
`,tanstackLogo:t`
|
|
569
|
+
font-size: ${r.size.md};
|
|
570
|
+
font-weight: ${r.weight.bold};
|
|
571
|
+
line-height: ${r.lineHeight.xs};
|
|
572
|
+
white-space: nowrap;
|
|
573
|
+
color: ${s(n.gray[600],n.gray[300])};
|
|
574
|
+
`,queryFlavorLogo:t`
|
|
575
|
+
font-weight: ${r.weight.semibold};
|
|
576
|
+
font-size: ${r.size.xs};
|
|
577
|
+
background: linear-gradient(
|
|
578
|
+
to right,
|
|
579
|
+
${s("#ea4037, #ff9b11","#dd524b, #e9a03b")}
|
|
580
|
+
);
|
|
581
|
+
background-clip: text;
|
|
582
|
+
-webkit-background-clip: text;
|
|
583
|
+
line-height: 1;
|
|
584
|
+
-webkit-text-fill-color: transparent;
|
|
585
|
+
white-space: nowrap;
|
|
586
|
+
`,queryStatusContainer:t`
|
|
587
|
+
display: flex;
|
|
588
|
+
gap: ${S.size[2]};
|
|
589
|
+
height: min-content;
|
|
590
|
+
`,queryStatusTag:t`
|
|
591
|
+
display: flex;
|
|
592
|
+
gap: ${S.size[1.5]};
|
|
593
|
+
box-sizing: border-box;
|
|
594
|
+
height: ${S.size[6.5]};
|
|
595
|
+
background: ${s(n.gray[50],n.darkGray[500])};
|
|
596
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
597
|
+
border-radius: ${S.border.radius.sm};
|
|
598
|
+
font-size: ${r.size.sm};
|
|
599
|
+
padding: ${S.size[1]};
|
|
600
|
+
padding-left: ${S.size[1.5]};
|
|
601
|
+
align-items: center;
|
|
602
|
+
font-weight: ${r.weight.medium};
|
|
603
|
+
border: ${s("1px solid "+n.gray[300],"1px solid transparent")};
|
|
604
|
+
user-select: none;
|
|
605
|
+
position: relative;
|
|
606
|
+
&:focus-visible {
|
|
607
|
+
outline-offset: 2px;
|
|
608
|
+
outline: 2px solid ${n.blue[800]};
|
|
609
|
+
}
|
|
610
|
+
`,queryStatusTagLabel:t`
|
|
611
|
+
font-size: ${r.size.xs};
|
|
612
|
+
`,queryStatusCount:t`
|
|
613
|
+
font-size: ${r.size.xs};
|
|
614
|
+
padding: 0 5px;
|
|
615
|
+
display: flex;
|
|
616
|
+
align-items: center;
|
|
617
|
+
justify-content: center;
|
|
618
|
+
color: ${s(n.gray[500],n.gray[400])};
|
|
619
|
+
background-color: ${s(n.gray[200],n.darkGray[300])};
|
|
620
|
+
border-radius: 2px;
|
|
621
|
+
font-variant-numeric: tabular-nums;
|
|
622
|
+
height: ${S.size[4.5]};
|
|
623
|
+
`,statusTooltip:t`
|
|
624
|
+
position: absolute;
|
|
625
|
+
z-index: 1;
|
|
626
|
+
background-color: ${s(n.gray[50],n.darkGray[500])};
|
|
627
|
+
top: 100%;
|
|
628
|
+
left: 50%;
|
|
629
|
+
transform: translate(-50%, calc(${S.size[2]}));
|
|
630
|
+
padding: ${S.size[.5]} ${S.size[2]};
|
|
631
|
+
border-radius: ${S.border.radius.sm};
|
|
632
|
+
font-size: ${r.size.xs};
|
|
633
|
+
border: 1px solid ${s(n.gray[400],n.gray[600])};
|
|
634
|
+
color: ${s(n.gray[600],n.gray[300])};
|
|
635
|
+
|
|
636
|
+
&::before {
|
|
637
|
+
top: 0px;
|
|
638
|
+
content: ' ';
|
|
639
|
+
display: block;
|
|
640
|
+
left: 50%;
|
|
641
|
+
transform: translate(-50%, -100%);
|
|
642
|
+
position: absolute;
|
|
643
|
+
border-color: transparent transparent
|
|
644
|
+
${s(n.gray[400],n.gray[600])} transparent;
|
|
645
|
+
border-style: solid;
|
|
646
|
+
border-width: 7px;
|
|
647
|
+
/* transform: rotate(180deg); */
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
&::after {
|
|
651
|
+
top: 0px;
|
|
652
|
+
content: ' ';
|
|
653
|
+
display: block;
|
|
654
|
+
left: 50%;
|
|
655
|
+
transform: translate(-50%, calc(-100% + 2px));
|
|
656
|
+
position: absolute;
|
|
657
|
+
border-color: transparent transparent
|
|
658
|
+
${s(n.gray[100],n.darkGray[500])} transparent;
|
|
659
|
+
border-style: solid;
|
|
660
|
+
border-width: 7px;
|
|
661
|
+
}
|
|
662
|
+
`,filtersContainer:t`
|
|
663
|
+
display: flex;
|
|
664
|
+
gap: ${S.size[2]};
|
|
665
|
+
& > button {
|
|
666
|
+
cursor: pointer;
|
|
667
|
+
padding: ${S.size[.5]} ${S.size[1.5]} ${S.size[.5]}
|
|
668
|
+
${S.size[2]};
|
|
669
|
+
border-radius: ${S.border.radius.sm};
|
|
670
|
+
background-color: ${s(n.gray[100],n.darkGray[400])};
|
|
671
|
+
border: 1px solid ${s(n.gray[300],n.darkGray[200])};
|
|
672
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
673
|
+
font-size: ${r.size.xs};
|
|
674
|
+
display: flex;
|
|
675
|
+
align-items: center;
|
|
676
|
+
line-height: ${r.lineHeight.sm};
|
|
677
|
+
gap: ${S.size[1.5]};
|
|
678
|
+
max-width: 160px;
|
|
679
|
+
&:focus-visible {
|
|
680
|
+
outline-offset: 2px;
|
|
681
|
+
border-radius: ${a.radius.xs};
|
|
682
|
+
outline: 2px solid ${n.blue[800]};
|
|
683
|
+
}
|
|
684
|
+
& svg {
|
|
685
|
+
width: ${S.size[3]};
|
|
686
|
+
height: ${S.size[3]};
|
|
687
|
+
color: ${s(n.gray[500],n.gray[400])};
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
`,filterInput:t`
|
|
691
|
+
padding: ${o[.5]} ${o[2]};
|
|
692
|
+
border-radius: ${S.border.radius.sm};
|
|
693
|
+
background-color: ${s(n.gray[100],n.darkGray[400])};
|
|
694
|
+
display: flex;
|
|
695
|
+
box-sizing: content-box;
|
|
696
|
+
align-items: center;
|
|
697
|
+
gap: ${S.size[1.5]};
|
|
698
|
+
max-width: 160px;
|
|
699
|
+
min-width: 100px;
|
|
700
|
+
border: 1px solid ${s(n.gray[300],n.darkGray[200])};
|
|
701
|
+
height: min-content;
|
|
702
|
+
color: ${s(n.gray[600],n.gray[400])};
|
|
703
|
+
& > svg {
|
|
704
|
+
width: ${o[3]};
|
|
705
|
+
height: ${o[3]};
|
|
706
|
+
}
|
|
707
|
+
& input {
|
|
708
|
+
font-size: ${r.size.xs};
|
|
709
|
+
width: 100%;
|
|
710
|
+
background-color: ${s(n.gray[100],n.darkGray[400])};
|
|
711
|
+
border: none;
|
|
712
|
+
padding: 0;
|
|
713
|
+
line-height: ${r.lineHeight.sm};
|
|
714
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
715
|
+
&::placeholder {
|
|
716
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
717
|
+
}
|
|
718
|
+
&:focus {
|
|
719
|
+
outline: none;
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
&:focus-within {
|
|
724
|
+
outline-offset: 2px;
|
|
725
|
+
border-radius: ${a.radius.xs};
|
|
726
|
+
outline: 2px solid ${n.blue[800]};
|
|
727
|
+
}
|
|
728
|
+
`,filterSelect:t`
|
|
729
|
+
padding: ${S.size[.5]} ${S.size[2]};
|
|
730
|
+
border-radius: ${S.border.radius.sm};
|
|
731
|
+
background-color: ${s(n.gray[100],n.darkGray[400])};
|
|
732
|
+
display: flex;
|
|
733
|
+
align-items: center;
|
|
734
|
+
gap: ${S.size[1.5]};
|
|
735
|
+
box-sizing: content-box;
|
|
736
|
+
max-width: 160px;
|
|
737
|
+
border: 1px solid ${s(n.gray[300],n.darkGray[200])};
|
|
738
|
+
height: min-content;
|
|
739
|
+
& > svg {
|
|
740
|
+
color: ${s(n.gray[600],n.gray[400])};
|
|
741
|
+
width: ${S.size[2]};
|
|
742
|
+
height: ${S.size[2]};
|
|
743
|
+
}
|
|
744
|
+
& > select {
|
|
745
|
+
appearance: none;
|
|
746
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
747
|
+
min-width: 100px;
|
|
748
|
+
line-height: ${r.lineHeight.sm};
|
|
749
|
+
font-size: ${r.size.xs};
|
|
750
|
+
background-color: ${s(n.gray[100],n.darkGray[400])};
|
|
751
|
+
border: none;
|
|
752
|
+
&:focus {
|
|
753
|
+
outline: none;
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
&:focus-within {
|
|
757
|
+
outline-offset: 2px;
|
|
758
|
+
border-radius: ${a.radius.xs};
|
|
759
|
+
outline: 2px solid ${n.blue[800]};
|
|
760
|
+
}
|
|
761
|
+
`,actionsContainer:t`
|
|
762
|
+
display: flex;
|
|
763
|
+
gap: ${S.size[2]};
|
|
764
|
+
`,actionsBtn:t`
|
|
765
|
+
border-radius: ${S.border.radius.sm};
|
|
766
|
+
background-color: ${s(n.gray[100],n.darkGray[400])};
|
|
767
|
+
border: 1px solid ${s(n.gray[300],n.darkGray[200])};
|
|
768
|
+
width: ${S.size[6.5]};
|
|
769
|
+
height: ${S.size[6.5]};
|
|
770
|
+
justify-content: center;
|
|
771
|
+
display: flex;
|
|
772
|
+
align-items: center;
|
|
773
|
+
gap: ${S.size[1.5]};
|
|
774
|
+
max-width: 160px;
|
|
775
|
+
cursor: pointer;
|
|
776
|
+
padding: 0;
|
|
777
|
+
&:hover {
|
|
778
|
+
background-color: ${s(n.gray[200],n.darkGray[500])};
|
|
779
|
+
}
|
|
780
|
+
& svg {
|
|
781
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
782
|
+
width: ${S.size[3]};
|
|
783
|
+
height: ${S.size[3]};
|
|
784
|
+
}
|
|
785
|
+
&:focus-visible {
|
|
786
|
+
outline-offset: 2px;
|
|
787
|
+
border-radius: ${a.radius.xs};
|
|
788
|
+
outline: 2px solid ${n.blue[800]};
|
|
789
|
+
}
|
|
790
|
+
`,actionsBtnOffline:t`
|
|
791
|
+
& svg {
|
|
792
|
+
stroke: ${s(n.yellow[700],n.yellow[500])};
|
|
793
|
+
fill: ${s(n.yellow[700],n.yellow[500])};
|
|
794
|
+
}
|
|
795
|
+
`,overflowQueryContainer:t`
|
|
796
|
+
flex: 1;
|
|
797
|
+
overflow-y: auto;
|
|
798
|
+
& > div {
|
|
799
|
+
display: flex;
|
|
800
|
+
flex-direction: column;
|
|
801
|
+
}
|
|
802
|
+
`,queryRow:t`
|
|
803
|
+
display: flex;
|
|
804
|
+
align-items: center;
|
|
805
|
+
padding: 0;
|
|
806
|
+
border: none;
|
|
807
|
+
cursor: pointer;
|
|
808
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
809
|
+
background-color: ${s(n.gray[50],n.darkGray[700])};
|
|
810
|
+
line-height: 1;
|
|
811
|
+
&:focus {
|
|
812
|
+
outline: none;
|
|
813
|
+
}
|
|
814
|
+
&:focus-visible {
|
|
815
|
+
outline-offset: -2px;
|
|
816
|
+
border-radius: ${a.radius.xs};
|
|
817
|
+
outline: 2px solid ${n.blue[800]};
|
|
818
|
+
}
|
|
819
|
+
&:hover .tsqd-query-hash {
|
|
820
|
+
background-color: ${s(n.gray[200],n.darkGray[600])};
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
& .tsqd-query-observer-count {
|
|
824
|
+
padding: 0 ${S.size[1]};
|
|
825
|
+
user-select: none;
|
|
826
|
+
min-width: ${S.size[6.5]};
|
|
827
|
+
align-self: stretch;
|
|
828
|
+
display: flex;
|
|
829
|
+
align-items: center;
|
|
830
|
+
justify-content: center;
|
|
831
|
+
font-size: ${r.size.xs};
|
|
832
|
+
font-weight: ${r.weight.medium};
|
|
833
|
+
border-bottom-width: 1px;
|
|
834
|
+
border-bottom-style: solid;
|
|
835
|
+
border-bottom: 1px solid ${s(n.gray[300],n.darkGray[700])};
|
|
836
|
+
}
|
|
837
|
+
& .tsqd-query-hash {
|
|
838
|
+
user-select: text;
|
|
839
|
+
font-size: ${r.size.xs};
|
|
840
|
+
display: flex;
|
|
841
|
+
align-items: center;
|
|
842
|
+
min-height: ${S.size[6]};
|
|
843
|
+
flex: 1;
|
|
844
|
+
padding: ${S.size[1]} ${S.size[2]};
|
|
845
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
846
|
+
'Liberation Mono', 'Courier New', monospace;
|
|
847
|
+
border-bottom: 1px solid ${s(n.gray[300],n.darkGray[400])};
|
|
848
|
+
text-align: left;
|
|
849
|
+
text-overflow: clip;
|
|
850
|
+
word-break: break-word;
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
& .tsqd-query-disabled-indicator {
|
|
854
|
+
align-self: stretch;
|
|
855
|
+
display: flex;
|
|
856
|
+
align-items: center;
|
|
857
|
+
padding: 0 ${S.size[2]};
|
|
858
|
+
color: ${s(n.gray[800],n.gray[300])};
|
|
859
|
+
background-color: ${s(n.gray[300],n.darkGray[600])};
|
|
860
|
+
border-bottom: 1px solid ${s(n.gray[300],n.darkGray[400])};
|
|
861
|
+
font-size: ${r.size.xs};
|
|
862
|
+
}
|
|
863
|
+
`,selectedQueryRow:t`
|
|
864
|
+
background-color: ${s(n.gray[200],n.darkGray[500])};
|
|
865
|
+
`,detailsContainer:t`
|
|
866
|
+
flex: 1 1 700px;
|
|
867
|
+
background-color: ${s(n.gray[50],n.darkGray[700])};
|
|
868
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
869
|
+
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
870
|
+
display: flex;
|
|
871
|
+
flex-direction: column;
|
|
872
|
+
overflow-y: auto;
|
|
873
|
+
display: flex;
|
|
874
|
+
text-align: left;
|
|
875
|
+
`,detailsHeader:t`
|
|
876
|
+
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
877
|
+
position: sticky;
|
|
878
|
+
top: 0;
|
|
879
|
+
z-index: 2;
|
|
880
|
+
background-color: ${s(n.gray[200],n.darkGray[600])};
|
|
881
|
+
padding: ${S.size[1.5]} ${S.size[2]};
|
|
882
|
+
font-weight: ${r.weight.medium};
|
|
883
|
+
font-size: ${r.size.xs};
|
|
884
|
+
line-height: ${r.lineHeight.xs};
|
|
885
|
+
text-align: left;
|
|
886
|
+
`,detailsBody:t`
|
|
887
|
+
margin: ${S.size[1.5]} 0px ${S.size[2]} 0px;
|
|
888
|
+
& > div {
|
|
889
|
+
display: flex;
|
|
890
|
+
align-items: stretch;
|
|
891
|
+
padding: 0 ${S.size[2]};
|
|
892
|
+
line-height: ${r.lineHeight.sm};
|
|
893
|
+
justify-content: space-between;
|
|
894
|
+
& > span {
|
|
895
|
+
font-size: ${r.size.xs};
|
|
896
|
+
}
|
|
897
|
+
& > span:nth-child(2) {
|
|
898
|
+
font-variant-numeric: tabular-nums;
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
& > div:first-child {
|
|
903
|
+
margin-bottom: ${S.size[1.5]};
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
& code {
|
|
907
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
908
|
+
'Liberation Mono', 'Courier New', monospace;
|
|
909
|
+
margin: 0;
|
|
910
|
+
font-size: ${r.size.xs};
|
|
911
|
+
line-height: ${r.lineHeight.xs};
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
& pre {
|
|
915
|
+
margin: 0;
|
|
916
|
+
display: flex;
|
|
917
|
+
align-items: center;
|
|
918
|
+
}
|
|
919
|
+
`,queryDetailsStatus:t`
|
|
920
|
+
border: 1px solid ${n.darkGray[200]};
|
|
921
|
+
border-radius: ${S.border.radius.sm};
|
|
922
|
+
font-weight: ${r.weight.medium};
|
|
923
|
+
padding: ${S.size[1]} ${S.size[2.5]};
|
|
924
|
+
`,actionsBody:t`
|
|
925
|
+
flex-wrap: wrap;
|
|
926
|
+
margin: ${S.size[2]} 0px ${S.size[2]} 0px;
|
|
927
|
+
display: flex;
|
|
928
|
+
gap: ${S.size[2]};
|
|
929
|
+
padding: 0px ${S.size[2]};
|
|
930
|
+
& > button {
|
|
931
|
+
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
932
|
+
font-size: ${r.size.xs};
|
|
933
|
+
padding: ${S.size[1]} ${S.size[2]};
|
|
934
|
+
display: flex;
|
|
935
|
+
border-radius: ${S.border.radius.sm};
|
|
936
|
+
background-color: ${s(n.gray[100],n.darkGray[600])};
|
|
937
|
+
border: 1px solid ${s(n.gray[300],n.darkGray[400])};
|
|
938
|
+
align-items: center;
|
|
939
|
+
gap: ${S.size[2]};
|
|
940
|
+
font-weight: ${r.weight.medium};
|
|
941
|
+
line-height: ${r.lineHeight.xs};
|
|
942
|
+
cursor: pointer;
|
|
943
|
+
&:focus-visible {
|
|
944
|
+
outline-offset: 2px;
|
|
945
|
+
border-radius: ${a.radius.xs};
|
|
946
|
+
outline: 2px solid ${n.blue[800]};
|
|
947
|
+
}
|
|
948
|
+
&:hover {
|
|
949
|
+
background-color: ${s(n.gray[200],n.darkGray[500])};
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
&:disabled {
|
|
953
|
+
opacity: 0.6;
|
|
954
|
+
cursor: not-allowed;
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
& > span {
|
|
958
|
+
width: ${o[1.5]};
|
|
959
|
+
height: ${o[1.5]};
|
|
960
|
+
border-radius: ${S.border.radius.full};
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
`,actionsSelect:t`
|
|
964
|
+
font-size: ${r.size.xs};
|
|
965
|
+
padding: ${S.size[.5]} ${S.size[2]};
|
|
966
|
+
display: flex;
|
|
967
|
+
border-radius: ${S.border.radius.sm};
|
|
968
|
+
overflow: hidden;
|
|
969
|
+
background-color: ${s(n.gray[100],n.darkGray[600])};
|
|
970
|
+
border: 1px solid ${s(n.gray[300],n.darkGray[400])};
|
|
971
|
+
align-items: center;
|
|
972
|
+
gap: ${S.size[2]};
|
|
973
|
+
font-weight: ${r.weight.medium};
|
|
974
|
+
line-height: ${r.lineHeight.sm};
|
|
975
|
+
color: ${s(n.red[500],n.red[400])};
|
|
976
|
+
cursor: pointer;
|
|
977
|
+
position: relative;
|
|
978
|
+
&:hover {
|
|
979
|
+
background-color: ${s(n.gray[200],n.darkGray[500])};
|
|
980
|
+
}
|
|
981
|
+
& > span {
|
|
982
|
+
width: ${o[1.5]};
|
|
983
|
+
height: ${o[1.5]};
|
|
984
|
+
border-radius: ${S.border.radius.full};
|
|
985
|
+
}
|
|
986
|
+
&:focus-within {
|
|
987
|
+
outline-offset: 2px;
|
|
988
|
+
border-radius: ${a.radius.xs};
|
|
989
|
+
outline: 2px solid ${n.blue[800]};
|
|
990
|
+
}
|
|
991
|
+
& select {
|
|
992
|
+
position: absolute;
|
|
993
|
+
top: 0;
|
|
994
|
+
left: 0;
|
|
995
|
+
width: 100%;
|
|
996
|
+
height: 100%;
|
|
997
|
+
appearance: none;
|
|
998
|
+
background-color: transparent;
|
|
999
|
+
border: none;
|
|
1000
|
+
color: transparent;
|
|
1001
|
+
outline: none;
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
& svg path {
|
|
1005
|
+
stroke: ${S.colors.red[400]};
|
|
1006
|
+
}
|
|
1007
|
+
& svg {
|
|
1008
|
+
width: ${S.size[2]};
|
|
1009
|
+
height: ${S.size[2]};
|
|
1010
|
+
}
|
|
1011
|
+
`,settingsMenu:t`
|
|
1012
|
+
display: flex;
|
|
1013
|
+
& * {
|
|
1014
|
+
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
1015
|
+
}
|
|
1016
|
+
flex-direction: column;
|
|
1017
|
+
gap: ${o[.5]};
|
|
1018
|
+
border-radius: ${S.border.radius.sm};
|
|
1019
|
+
border: 1px solid ${s(n.gray[300],n.gray[700])};
|
|
1020
|
+
background-color: ${s(n.gray[50],n.darkGray[600])};
|
|
1021
|
+
font-size: ${r.size.xs};
|
|
1022
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
1023
|
+
z-index: 99999;
|
|
1024
|
+
min-width: 120px;
|
|
1025
|
+
padding: ${o[.5]};
|
|
1026
|
+
`,settingsSubTrigger:t`
|
|
1027
|
+
display: flex;
|
|
1028
|
+
align-items: center;
|
|
1029
|
+
justify-content: space-between;
|
|
1030
|
+
border-radius: ${S.border.radius.xs};
|
|
1031
|
+
padding: ${S.size[1]} ${S.size[1]};
|
|
1032
|
+
cursor: pointer;
|
|
1033
|
+
background-color: transparent;
|
|
1034
|
+
border: none;
|
|
1035
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
1036
|
+
& svg {
|
|
1037
|
+
color: ${s(n.gray[600],n.gray[400])};
|
|
1038
|
+
transform: rotate(-90deg);
|
|
1039
|
+
width: ${S.size[2]};
|
|
1040
|
+
height: ${S.size[2]};
|
|
1041
|
+
}
|
|
1042
|
+
&:hover {
|
|
1043
|
+
background-color: ${s(n.gray[200],n.darkGray[500])};
|
|
1044
|
+
}
|
|
1045
|
+
&:focus-visible {
|
|
1046
|
+
outline-offset: 2px;
|
|
1047
|
+
outline: 2px solid ${n.blue[800]};
|
|
1048
|
+
}
|
|
1049
|
+
&.data-disabled {
|
|
1050
|
+
opacity: 0.6;
|
|
1051
|
+
cursor: not-allowed;
|
|
1052
|
+
}
|
|
1053
|
+
`,settingsMenuHeader:t`
|
|
1054
|
+
padding: ${S.size[1]} ${S.size[1]};
|
|
1055
|
+
font-weight: ${r.weight.medium};
|
|
1056
|
+
border-bottom: 1px solid ${s(n.gray[300],n.darkGray[400])};
|
|
1057
|
+
color: ${s(n.gray[500],n.gray[400])};
|
|
1058
|
+
font-size: ${r.size.xs};
|
|
1059
|
+
`,settingsSubButton:t`
|
|
1060
|
+
display: flex;
|
|
1061
|
+
align-items: center;
|
|
1062
|
+
justify-content: space-between;
|
|
1063
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
1064
|
+
font-size: ${r.size.xs};
|
|
1065
|
+
border-radius: ${S.border.radius.xs};
|
|
1066
|
+
padding: ${S.size[1]} ${S.size[1]};
|
|
1067
|
+
cursor: pointer;
|
|
1068
|
+
background-color: transparent;
|
|
1069
|
+
border: none;
|
|
1070
|
+
& svg {
|
|
1071
|
+
color: ${s(n.gray[600],n.gray[400])};
|
|
1072
|
+
}
|
|
1073
|
+
&:hover {
|
|
1074
|
+
background-color: ${s(n.gray[200],n.darkGray[500])};
|
|
1075
|
+
}
|
|
1076
|
+
&:focus-visible {
|
|
1077
|
+
outline-offset: 2px;
|
|
1078
|
+
outline: 2px solid ${n.blue[800]};
|
|
1079
|
+
}
|
|
1080
|
+
`,themeSelectedButton:t`
|
|
1081
|
+
background-color: ${s(n.purple[100],n.purple[900])};
|
|
1082
|
+
color: ${s(n.purple[700],n.purple[300])};
|
|
1083
|
+
& svg {
|
|
1084
|
+
color: ${s(n.purple[700],n.purple[300])};
|
|
1085
|
+
}
|
|
1086
|
+
&:hover {
|
|
1087
|
+
background-color: ${s(n.purple[100],n.purple[900])};
|
|
1088
|
+
}
|
|
1089
|
+
`,viewToggle:t`
|
|
1090
|
+
border-radius: ${S.border.radius.sm};
|
|
1091
|
+
background-color: ${s(n.gray[200],n.darkGray[600])};
|
|
1092
|
+
border: 1px solid ${s(n.gray[300],n.darkGray[200])};
|
|
1093
|
+
display: flex;
|
|
1094
|
+
padding: 0;
|
|
1095
|
+
font-size: ${r.size.xs};
|
|
1096
|
+
color: ${s(n.gray[700],n.gray[300])};
|
|
1097
|
+
overflow: hidden;
|
|
1098
|
+
|
|
1099
|
+
&:has(:focus-visible) {
|
|
1100
|
+
outline: 2px solid ${n.blue[800]};
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
& .tsqd-radio-toggle {
|
|
1104
|
+
opacity: 0.5;
|
|
1105
|
+
display: flex;
|
|
1106
|
+
& label {
|
|
1107
|
+
display: flex;
|
|
1108
|
+
align-items: center;
|
|
1109
|
+
cursor: pointer;
|
|
1110
|
+
line-height: ${r.lineHeight.md};
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
& label:hover {
|
|
1114
|
+
background-color: ${s(n.gray[100],n.darkGray[500])};
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
& > [data-checked] {
|
|
1119
|
+
opacity: 1;
|
|
1120
|
+
background-color: ${s(n.gray[100],n.darkGray[400])};
|
|
1121
|
+
& label:hover {
|
|
1122
|
+
background-color: ${s(n.gray[100],n.darkGray[400])};
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
& .tsqd-radio-toggle:first-child {
|
|
1127
|
+
& label {
|
|
1128
|
+
padding: 0 ${S.size[1.5]} 0 ${S.size[2]};
|
|
1129
|
+
}
|
|
1130
|
+
border-right: 1px solid ${s(n.gray[300],n.darkGray[200])};
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
& .tsqd-radio-toggle:nth-child(2) {
|
|
1134
|
+
& label {
|
|
1135
|
+
padding: 0 ${S.size[2]} 0 ${S.size[1.5]};
|
|
1136
|
+
}
|
|
1137
|
+
}
|
|
1138
|
+
`,devtoolsEditForm:t`
|
|
1139
|
+
padding: ${o[2]};
|
|
1140
|
+
& > [data-error='true'] {
|
|
1141
|
+
outline: 2px solid ${s(n.red[200],n.red[800])};
|
|
1142
|
+
outline-offset: 2px;
|
|
1143
|
+
border-radius: ${a.radius.xs};
|
|
1144
|
+
}
|
|
1145
|
+
`,devtoolsEditTextarea:t`
|
|
1146
|
+
width: 100%;
|
|
1147
|
+
max-height: 500px;
|
|
1148
|
+
font-family: 'Fira Code', monospace;
|
|
1149
|
+
font-size: ${r.size.xs};
|
|
1150
|
+
border-radius: ${a.radius.sm};
|
|
1151
|
+
field-sizing: content;
|
|
1152
|
+
padding: ${o[2]};
|
|
1153
|
+
background-color: ${s(n.gray[100],n.darkGray[800])};
|
|
1154
|
+
color: ${s(n.gray[900],n.gray[100])};
|
|
1155
|
+
border: 1px solid ${s(n.gray[200],n.gray[700])};
|
|
1156
|
+
resize: none;
|
|
1157
|
+
&:focus {
|
|
1158
|
+
outline-offset: 2px;
|
|
1159
|
+
border-radius: ${a.radius.xs};
|
|
1160
|
+
outline: 2px solid ${s(n.blue[200],n.blue[800])};
|
|
1161
|
+
}
|
|
1162
|
+
`,devtoolsEditFormActions:t`
|
|
1163
|
+
display: flex;
|
|
1164
|
+
justify-content: space-between;
|
|
1165
|
+
gap: ${o[2]};
|
|
1166
|
+
align-items: center;
|
|
1167
|
+
padding-top: ${o[1]};
|
|
1168
|
+
font-size: ${r.size.xs};
|
|
1169
|
+
`,devtoolsEditFormError:t`
|
|
1170
|
+
color: ${s(n.red[700],n.red[500])};
|
|
1171
|
+
`,devtoolsEditFormActionContainer:t`
|
|
1172
|
+
display: flex;
|
|
1173
|
+
gap: ${o[2]};
|
|
1174
|
+
`,devtoolsEditFormAction:t`
|
|
1175
|
+
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
1176
|
+
font-size: ${r.size.xs};
|
|
1177
|
+
padding: ${o[1]} ${S.size[2]};
|
|
1178
|
+
display: flex;
|
|
1179
|
+
border-radius: ${a.radius.sm};
|
|
1180
|
+
background-color: ${s(n.gray[100],n.darkGray[600])};
|
|
1181
|
+
border: 1px solid ${s(n.gray[300],n.darkGray[400])};
|
|
1182
|
+
align-items: center;
|
|
1183
|
+
gap: ${o[2]};
|
|
1184
|
+
font-weight: ${r.weight.medium};
|
|
1185
|
+
line-height: ${r.lineHeight.xs};
|
|
1186
|
+
cursor: pointer;
|
|
1187
|
+
&:focus-visible {
|
|
1188
|
+
outline-offset: 2px;
|
|
1189
|
+
border-radius: ${a.radius.xs};
|
|
1190
|
+
outline: 2px solid ${n.blue[800]};
|
|
1191
|
+
}
|
|
1192
|
+
&:hover {
|
|
1193
|
+
background-color: ${s(n.gray[200],n.darkGray[500])};
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
&:disabled {
|
|
1197
|
+
opacity: 0.6;
|
|
1198
|
+
cursor: not-allowed;
|
|
1199
|
+
}
|
|
1200
|
+
`}},Xe=e=>wa("light",e),Ze=e=>wa("dark",e);On(["click","mousedown","input"]);export{k as a,v as b,rh as c,fh as d,gh as e,Zc as f,hh as g,Jc as h,yh as i,mh as j,ba as k};
|
|
1201
|
+
/*! Bundled license information:
|
|
1202
|
+
|
|
1203
|
+
@tanstack/query-devtools/build/chunk/WXAWMS3D.js:
|
|
1204
|
+
(*! Bundled license information:
|
|
1205
|
+
|
|
1206
|
+
@tanstack/match-sorter-utils/build/lib/index.mjs:
|
|
1207
|
+
(**
|
|
1208
|
+
* match-sorter-utils
|
|
1209
|
+
*
|
|
1210
|
+
* Copyright (c) TanStack
|
|
1211
|
+
*
|
|
1212
|
+
* This source code is licensed under the MIT license found in the
|
|
1213
|
+
* LICENSE.md file in the root directory of this source tree.
|
|
1214
|
+
*
|
|
1215
|
+
* @license MIT
|
|
1216
|
+
*)
|
|
1217
|
+
(**
|
|
1218
|
+
* @name match-sorter
|
|
1219
|
+
* @license MIT license.
|
|
1220
|
+
* @copyright (c) 2099 Kent C. Dodds
|
|
1221
|
+
* @author Kent C. Dodds <me@kentcdodds.com> (https://kentcdodds.com)
|
|
1222
|
+
*)
|
|
1223
|
+
|
|
1224
|
+
@kobalte/utils/dist/index.js:
|
|
1225
|
+
(*!
|
|
1226
|
+
* Portions of this file are based on code from ariakit.
|
|
1227
|
+
* MIT Licensed, Copyright (c) Diego Haz.
|
|
1228
|
+
*
|
|
1229
|
+
* Credits to the Ariakit team:
|
|
1230
|
+
* https://github.com/ariakit/ariakit/blob/da142672eddefa99365773ced72171facc06fdcb/packages/ariakit-utils/src/array.ts
|
|
1231
|
+
*)
|
|
1232
|
+
(*!
|
|
1233
|
+
* Original code by Chakra UI
|
|
1234
|
+
* MIT Licensed, Copyright (c) 2019 Segun Adebayo.
|
|
1235
|
+
*
|
|
1236
|
+
* Credits to the Chakra UI team:
|
|
1237
|
+
* https://github.com/chakra-ui/chakra-ui/blob/main/packages/utils/src/assertion.ts
|
|
1238
|
+
*)
|
|
1239
|
+
(*!
|
|
1240
|
+
* Portions of this file are based on code from react-spectrum.
|
|
1241
|
+
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1242
|
+
*
|
|
1243
|
+
* Credits to the React Spectrum team:
|
|
1244
|
+
* https://github.com/solidjs-community/solid-aria/blob/2c5f54feb5cfea514b1ee0a52d0416878f882351/packages/utils/src/createGlobalListeners.ts
|
|
1245
|
+
*)
|
|
1246
|
+
(*!
|
|
1247
|
+
* Portions of this file are based on code from ariakit.
|
|
1248
|
+
* MIT Licensed, Copyright (c) Diego Haz.
|
|
1249
|
+
*
|
|
1250
|
+
* Credits to the Ariakit team:
|
|
1251
|
+
* https://github.com/ariakit/ariakit/blob/232bc79018ec20967fec1e097a9474aba3bb5be7/packages/ariakit-utils/src/dom.ts
|
|
1252
|
+
*)
|
|
1253
|
+
(*!
|
|
1254
|
+
* Portions of this file are based on code from react-spectrum.
|
|
1255
|
+
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1256
|
+
*
|
|
1257
|
+
* Credits to the React Spectrum team:
|
|
1258
|
+
* https://github.com/adobe/react-spectrum/blob/cf9ab24f3255be1530d0f584061a01aa1e8180e6/packages/@react-aria/utils/src/platform.ts
|
|
1259
|
+
*)
|
|
1260
|
+
(*!
|
|
1261
|
+
* Portions of this file are based on code from react-spectrum.
|
|
1262
|
+
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1263
|
+
*
|
|
1264
|
+
* Credits to the React Spectrum team:
|
|
1265
|
+
* https://github.com/adobe/react-spectrum/blob/a9dea8a3672179e6c38aafd1429daf44c7ea2ff6/packages/@react-aria/utils/src/focusWithoutScrolling.ts
|
|
1266
|
+
*)
|
|
1267
|
+
(*!
|
|
1268
|
+
* Portions of this file are based on code from ariakit.
|
|
1269
|
+
* MIT Licensed, Copyright (c) Diego Haz.
|
|
1270
|
+
*
|
|
1271
|
+
* Credits to the Ariakit team:
|
|
1272
|
+
* https://github.com/ariakit/ariakit/blob/main/packages/ariakit-utils/src/focus.ts
|
|
1273
|
+
*
|
|
1274
|
+
* Portions of this file are based on code from react-spectrum.
|
|
1275
|
+
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1276
|
+
*
|
|
1277
|
+
* Credits to the React Spectrum team:
|
|
1278
|
+
* https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/focus/src/isElementVisible.ts
|
|
1279
|
+
* https://github.com/adobe/react-spectrum/blob/8f2f2acb3d5850382ebe631f055f88c704aa7d17/packages/@react-aria/focus/src/FocusScope.tsx
|
|
1280
|
+
*)
|
|
1281
|
+
(*!
|
|
1282
|
+
* Portions of this file are based on code from react-spectrum.
|
|
1283
|
+
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1284
|
+
*
|
|
1285
|
+
* Credits to the React Spectrum team:
|
|
1286
|
+
* https://github.com/adobe/react-spectrum/blob/f6e686fe9d3b983d48650980c1ecfdde320bc62f/packages/@react-aria/focus/src/FocusScope.tsx
|
|
1287
|
+
*)
|
|
1288
|
+
(*!
|
|
1289
|
+
* Portions of this file are based on code from react-spectrum.
|
|
1290
|
+
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1291
|
+
*
|
|
1292
|
+
* Credits to the React Spectrum team:
|
|
1293
|
+
* https://github.com/adobe/react-spectrum/blob/a9dea8a3672179e6c38aafd1429daf44c7ea2ff6/packages/@react-aria/utils/src/getScrollParent.ts
|
|
1294
|
+
*)
|
|
1295
|
+
(*!
|
|
1296
|
+
* Portions of this file are based on code from react-spectrum.
|
|
1297
|
+
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1298
|
+
*
|
|
1299
|
+
* Credits to the React Spectrum team:
|
|
1300
|
+
* https://github.com/adobe/react-spectrum/blob/a9dea8a3672179e6c38aafd1429daf44c7ea2ff6/packages/@react-aria/utils/src/isVirtualEvent.ts
|
|
1301
|
+
*)
|
|
1302
|
+
(*!
|
|
1303
|
+
* Portions of this file are based on code from react-spectrum.
|
|
1304
|
+
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1305
|
+
*
|
|
1306
|
+
* Credits to the React Spectrum team:
|
|
1307
|
+
* https://github.com/adobe/react-spectrum/blob/ff3e690fffc6c54367b8057e28a0e5b9211f37b5/packages/@react-stately/utils/src/number.ts
|
|
1308
|
+
*)
|
|
1309
|
+
(*!
|
|
1310
|
+
* Portions of this file are based on code from ariakit.
|
|
1311
|
+
* MIT Licensed, Copyright (c) Diego Haz.
|
|
1312
|
+
*
|
|
1313
|
+
* Credits to the Ariakit team:
|
|
1314
|
+
* https://github.com/ariakit/ariakit/blob/84e97943ad637a582c01c9b56d880cd95f595737/packages/ariakit/src/hovercard/__utils/polygon.ts
|
|
1315
|
+
* https://github.com/ariakit/ariakit/blob/f2a96973de523d67e41eec983263936c489ef3e2/packages/ariakit/src/hovercard/__utils/debug-polygon.ts
|
|
1316
|
+
*)
|
|
1317
|
+
(*!
|
|
1318
|
+
* Portions of this file are based on code from react-spectrum.
|
|
1319
|
+
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1320
|
+
*
|
|
1321
|
+
* Credits to the React Spectrum team:
|
|
1322
|
+
* https://github.com/adobe/react-spectrum/blob/a9dea8a3672179e6c38aafd1429daf44c7ea2ff6/packages/@react-aria/utils/src/runAfterTransition.ts
|
|
1323
|
+
*)
|
|
1324
|
+
(*!
|
|
1325
|
+
* Portions of this file are based on code from react-spectrum.
|
|
1326
|
+
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1327
|
+
*
|
|
1328
|
+
* Credits to the React Spectrum team:
|
|
1329
|
+
* https://github.com/adobe/react-spectrum/blob/8f2f2acb3d5850382ebe631f055f88c704aa7d17/packages/@react-aria/utils/src/scrollIntoView.ts
|
|
1330
|
+
*)
|
|
1331
|
+
*)
|
|
1332
|
+
*/
|
|
1333
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytxdWVyeS1kZXZ0b29sc0A1LjcyLjIvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scy9idWlsZC9jaHVuay9IUjdZWFo1SC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3F1ZXJ5LWRldnRvb2xzQDUuNzIuMi9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzL2J1aWxkL2NodW5rL1dYQVdNUzNELmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL3NvbGlkLWpzL2Rpc3Qvc29saWQuanNcbnZhciBzaGFyZWRDb25maWcgPSB7XG4gIGNvbnRleHQ6IHZvaWQgMCxcbiAgcmVnaXN0cnk6IHZvaWQgMCxcbiAgZWZmZWN0czogdm9pZCAwLFxuICBkb25lOiBmYWxzZSxcbiAgZ2V0Q29udGV4dElkKCkge1xuICAgIHJldHVybiBnZXRDb250ZXh0SWQodGhpcy5jb250ZXh0LmNvdW50KTtcbiAgfSxcbiAgZ2V0TmV4dENvbnRleHRJZCgpIHtcbiAgICByZXR1cm4gZ2V0Q29udGV4dElkKHRoaXMuY29udGV4dC5jb3VudCsrKTtcbiAgfVxufTtcbmZ1bmN0aW9uIGdldENvbnRleHRJZChjb3VudCkge1xuICBjb25zdCBudW0gPSBTdHJpbmcoY291bnQpLCBsZW4gPSBudW0ubGVuZ3RoIC0gMTtcbiAgcmV0dXJuIHNoYXJlZENvbmZpZy5jb250ZXh0LmlkICsgKGxlbiA/IFN0cmluZy5mcm9tQ2hhckNvZGUoOTYgKyBsZW4pIDogXCJcIikgKyBudW07XG59XG5mdW5jdGlvbiBzZXRIeWRyYXRlQ29udGV4dChjb250ZXh0KSB7XG4gIHNoYXJlZENvbmZpZy5jb250ZXh0ID0gY29udGV4dDtcbn1cbmZ1bmN0aW9uIG5leHRIeWRyYXRlQ29udGV4dCgpIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zaGFyZWRDb25maWcuY29udGV4dCxcbiAgICBpZDogc2hhcmVkQ29uZmlnLmdldE5leHRDb250ZXh0SWQoKSxcbiAgICBjb3VudDogMFxuICB9O1xufVxudmFyIElTX0RFViA9IGZhbHNlO1xudmFyIGVxdWFsRm4gPSAoYSwgYikgPT4gYSA9PT0gYjtcbnZhciAkUFJPWFkgPSBTeW1ib2woXCJzb2xpZC1wcm94eVwiKTtcbnZhciBTVVBQT1JUU19QUk9YWSA9IHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiO1xudmFyICRUUkFDSyA9IFN5bWJvbChcInNvbGlkLXRyYWNrXCIpO1xudmFyIHNpZ25hbE9wdGlvbnMgPSB7XG4gIGVxdWFsczogZXF1YWxGblxufTtcbnZhciBFUlJPUiA9IG51bGw7XG52YXIgcnVuRWZmZWN0cyA9IHJ1blF1ZXVlO1xudmFyIFNUQUxFID0gMTtcbnZhciBQRU5ESU5HID0gMjtcbnZhciBVTk9XTkVEID0ge1xuICBvd25lZDogbnVsbCxcbiAgY2xlYW51cHM6IG51bGwsXG4gIGNvbnRleHQ6IG51bGwsXG4gIG93bmVyOiBudWxsXG59O1xudmFyIE5PX0lOSVQgPSB7fTtcbnZhciBPd25lciA9IG51bGw7XG52YXIgVHJhbnNpdGlvbiA9IG51bGw7XG52YXIgU2NoZWR1bGVyID0gbnVsbDtcbnZhciBFeHRlcm5hbFNvdXJjZUNvbmZpZyA9IG51bGw7XG52YXIgTGlzdGVuZXIgPSBudWxsO1xudmFyIFVwZGF0ZXMgPSBudWxsO1xudmFyIEVmZmVjdHMgPSBudWxsO1xudmFyIEV4ZWNDb3VudCA9IDA7XG5mdW5jdGlvbiBjcmVhdGVSb290KGZuLCBkZXRhY2hlZE93bmVyKSB7XG4gIGNvbnN0IGxpc3RlbmVyID0gTGlzdGVuZXIsIG93bmVyID0gT3duZXIsIHVub3duZWQgPSBmbi5sZW5ndGggPT09IDAsIGN1cnJlbnQgPSBkZXRhY2hlZE93bmVyID09PSB2b2lkIDAgPyBvd25lciA6IGRldGFjaGVkT3duZXIsIHJvb3QgPSB1bm93bmVkID8gVU5PV05FRCA6IHtcbiAgICBvd25lZDogbnVsbCxcbiAgICBjbGVhbnVwczogbnVsbCxcbiAgICBjb250ZXh0OiBjdXJyZW50ID8gY3VycmVudC5jb250ZXh0IDogbnVsbCxcbiAgICBvd25lcjogY3VycmVudFxuICB9LCB1cGRhdGVGbiA9IHVub3duZWQgPyBmbiA6ICgpID0+IGZuKCgpID0+IHVudHJhY2soKCkgPT4gY2xlYW5Ob2RlKHJvb3QpKSk7XG4gIE93bmVyID0gcm9vdDtcbiAgTGlzdGVuZXIgPSBudWxsO1xuICB0cnkge1xuICAgIHJldHVybiBydW5VcGRhdGVzKHVwZGF0ZUZuLCB0cnVlKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBMaXN0ZW5lciA9IGxpc3RlbmVyO1xuICAgIE93bmVyID0gb3duZXI7XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZVNpZ25hbCh2YWx1ZSwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyA/IE9iamVjdC5hc3NpZ24oe30sIHNpZ25hbE9wdGlvbnMsIG9wdGlvbnMpIDogc2lnbmFsT3B0aW9ucztcbiAgY29uc3QgcyA9IHtcbiAgICB2YWx1ZSxcbiAgICBvYnNlcnZlcnM6IG51bGwsXG4gICAgb2JzZXJ2ZXJTbG90czogbnVsbCxcbiAgICBjb21wYXJhdG9yOiBvcHRpb25zLmVxdWFscyB8fCB2b2lkIDBcbiAgfTtcbiAgY29uc3Qgc2V0dGVyID0gKHZhbHVlMikgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGlmIChUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZyAmJiBUcmFuc2l0aW9uLnNvdXJjZXMuaGFzKHMpKSB2YWx1ZTIgPSB2YWx1ZTIocy50VmFsdWUpO1xuICAgICAgZWxzZSB2YWx1ZTIgPSB2YWx1ZTIocy52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB3cml0ZVNpZ25hbChzLCB2YWx1ZTIpO1xuICB9O1xuICByZXR1cm4gW3JlYWRTaWduYWwuYmluZChzKSwgc2V0dGVyXTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVkKGZuLCB2YWx1ZSwgb3B0aW9ucykge1xuICBjb25zdCBjID0gY3JlYXRlQ29tcHV0YXRpb24oZm4sIHZhbHVlLCB0cnVlLCBTVEFMRSk7XG4gIGlmIChTY2hlZHVsZXIgJiYgVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmcpIFVwZGF0ZXMucHVzaChjKTtcbiAgZWxzZSB1cGRhdGVDb21wdXRhdGlvbihjKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJlbmRlckVmZmVjdChmbiwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgY29uc3QgYyA9IGNyZWF0ZUNvbXB1dGF0aW9uKGZuLCB2YWx1ZSwgZmFsc2UsIFNUQUxFKTtcbiAgaWYgKFNjaGVkdWxlciAmJiBUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZykgVXBkYXRlcy5wdXNoKGMpO1xuICBlbHNlIHVwZGF0ZUNvbXB1dGF0aW9uKGMpO1xufVxuZnVuY3Rpb24gY3JlYXRlRWZmZWN0KGZuLCB2YWx1ZSwgb3B0aW9ucykge1xuICBydW5FZmZlY3RzID0gcnVuVXNlckVmZmVjdHM7XG4gIGNvbnN0IGMgPSBjcmVhdGVDb21wdXRhdGlvbihmbiwgdmFsdWUsIGZhbHNlLCBTVEFMRSksIHMgPSBTdXNwZW5zZUNvbnRleHQgJiYgdXNlQ29udGV4dChTdXNwZW5zZUNvbnRleHQpO1xuICBpZiAocykgYy5zdXNwZW5zZSA9IHM7XG4gIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5yZW5kZXIpIGMudXNlciA9IHRydWU7XG4gIEVmZmVjdHMgPyBFZmZlY3RzLnB1c2goYykgOiB1cGRhdGVDb21wdXRhdGlvbihjKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZU1lbW8oZm4sIHZhbHVlLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zID8gT2JqZWN0LmFzc2lnbih7fSwgc2lnbmFsT3B0aW9ucywgb3B0aW9ucykgOiBzaWduYWxPcHRpb25zO1xuICBjb25zdCBjID0gY3JlYXRlQ29tcHV0YXRpb24oZm4sIHZhbHVlLCB0cnVlLCAwKTtcbiAgYy5vYnNlcnZlcnMgPSBudWxsO1xuICBjLm9ic2VydmVyU2xvdHMgPSBudWxsO1xuICBjLmNvbXBhcmF0b3IgPSBvcHRpb25zLmVxdWFscyB8fCB2b2lkIDA7XG4gIGlmIChTY2hlZHVsZXIgJiYgVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmcpIHtcbiAgICBjLnRTdGF0ZSA9IFNUQUxFO1xuICAgIFVwZGF0ZXMucHVzaChjKTtcbiAgfSBlbHNlIHVwZGF0ZUNvbXB1dGF0aW9uKGMpO1xuICByZXR1cm4gcmVhZFNpZ25hbC5iaW5kKGMpO1xufVxuZnVuY3Rpb24gaXNQcm9taXNlKHYpIHtcbiAgcmV0dXJuIHYgJiYgdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgXCJ0aGVuXCIgaW4gdjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlKHBTb3VyY2UsIHBGZXRjaGVyLCBwT3B0aW9ucykge1xuICBsZXQgc291cmNlO1xuICBsZXQgZmV0Y2hlcjtcbiAgbGV0IG9wdGlvbnM7XG4gIHtcbiAgICBzb3VyY2UgPSB0cnVlO1xuICAgIGZldGNoZXIgPSBwU291cmNlO1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBsZXQgcHIgPSBudWxsLCBpbml0UCA9IE5PX0lOSVQsIGlkID0gbnVsbCwgbG9hZGVkVW5kZXJUcmFuc2l0aW9uID0gZmFsc2UsIHNjaGVkdWxlZCA9IGZhbHNlLCByZXNvbHZlZCA9IFwiaW5pdGlhbFZhbHVlXCIgaW4gb3B0aW9ucywgZHluYW1pYyA9IHR5cGVvZiBzb3VyY2UgPT09IFwiZnVuY3Rpb25cIiAmJiBjcmVhdGVNZW1vKHNvdXJjZSk7XG4gIGNvbnN0IGNvbnRleHRzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSwgW3ZhbHVlLCBzZXRWYWx1ZV0gPSAob3B0aW9ucy5zdG9yYWdlIHx8IGNyZWF0ZVNpZ25hbCkob3B0aW9ucy5pbml0aWFsVmFsdWUpLCBbZXJyb3IsIHNldEVycm9yXSA9IGNyZWF0ZVNpZ25hbCh2b2lkIDApLCBbdHJhY2ssIHRyaWdnZXJdID0gY3JlYXRlU2lnbmFsKHZvaWQgMCwge1xuICAgIGVxdWFsczogZmFsc2VcbiAgfSksIFtzdGF0ZSwgc2V0U3RhdGVdID0gY3JlYXRlU2lnbmFsKHJlc29sdmVkID8gXCJyZWFkeVwiIDogXCJ1bnJlc29sdmVkXCIpO1xuICBpZiAoc2hhcmVkQ29uZmlnLmNvbnRleHQpIHtcbiAgICBpZCA9IHNoYXJlZENvbmZpZy5nZXROZXh0Q29udGV4dElkKCk7XG4gICAgaWYgKG9wdGlvbnMuc3NyTG9hZEZyb20gPT09IFwiaW5pdGlhbFwiKSBpbml0UCA9IG9wdGlvbnMuaW5pdGlhbFZhbHVlO1xuICAgIGVsc2UgaWYgKHNoYXJlZENvbmZpZy5sb2FkICYmIHNoYXJlZENvbmZpZy5oYXMoaWQpKSBpbml0UCA9IHNoYXJlZENvbmZpZy5sb2FkKGlkKTtcbiAgfVxuICBmdW5jdGlvbiBsb2FkRW5kKHAsIHYsIGVycm9yMiwga2V5KSB7XG4gICAgaWYgKHByID09PSBwKSB7XG4gICAgICBwciA9IG51bGw7XG4gICAgICBrZXkgIT09IHZvaWQgMCAmJiAocmVzb2x2ZWQgPSB0cnVlKTtcbiAgICAgIGlmICgocCA9PT0gaW5pdFAgfHwgdiA9PT0gaW5pdFApICYmIG9wdGlvbnMub25IeWRyYXRlZClcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soXG4gICAgICAgICAgKCkgPT4gb3B0aW9ucy5vbkh5ZHJhdGVkKGtleSwge1xuICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgaW5pdFAgPSBOT19JTklUO1xuICAgICAgaWYgKFRyYW5zaXRpb24gJiYgcCAmJiBsb2FkZWRVbmRlclRyYW5zaXRpb24pIHtcbiAgICAgICAgVHJhbnNpdGlvbi5wcm9taXNlcy5kZWxldGUocCk7XG4gICAgICAgIGxvYWRlZFVuZGVyVHJhbnNpdGlvbiA9IGZhbHNlO1xuICAgICAgICBydW5VcGRhdGVzKCgpID0+IHtcbiAgICAgICAgICBUcmFuc2l0aW9uLnJ1bm5pbmcgPSB0cnVlO1xuICAgICAgICAgIGNvbXBsZXRlTG9hZCh2LCBlcnJvcjIpO1xuICAgICAgICB9LCBmYWxzZSk7XG4gICAgICB9IGVsc2UgY29tcGxldGVMb2FkKHYsIGVycm9yMik7XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG4gIGZ1bmN0aW9uIGNvbXBsZXRlTG9hZCh2LCBlcnIpIHtcbiAgICBydW5VcGRhdGVzKCgpID0+IHtcbiAgICAgIGlmIChlcnIgPT09IHZvaWQgMCkgc2V0VmFsdWUoKCkgPT4gdik7XG4gICAgICBzZXRTdGF0ZShlcnIgIT09IHZvaWQgMCA/IFwiZXJyb3JlZFwiIDogcmVzb2x2ZWQgPyBcInJlYWR5XCIgOiBcInVucmVzb2x2ZWRcIik7XG4gICAgICBzZXRFcnJvcihlcnIpO1xuICAgICAgZm9yIChjb25zdCBjIG9mIGNvbnRleHRzLmtleXMoKSkgYy5kZWNyZW1lbnQoKTtcbiAgICAgIGNvbnRleHRzLmNsZWFyKCk7XG4gICAgfSwgZmFsc2UpO1xuICB9XG4gIGZ1bmN0aW9uIHJlYWQoKSB7XG4gICAgY29uc3QgYyA9IFN1c3BlbnNlQ29udGV4dCAmJiB1c2VDb250ZXh0KFN1c3BlbnNlQ29udGV4dCksIHYgPSB2YWx1ZSgpLCBlcnIgPSBlcnJvcigpO1xuICAgIGlmIChlcnIgIT09IHZvaWQgMCAmJiAhcHIpIHRocm93IGVycjtcbiAgICBpZiAoTGlzdGVuZXIgJiYgIUxpc3RlbmVyLnVzZXIgJiYgYykge1xuICAgICAgY3JlYXRlQ29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICB0cmFjaygpO1xuICAgICAgICBpZiAocHIpIHtcbiAgICAgICAgICBpZiAoYy5yZXNvbHZlZCAmJiBUcmFuc2l0aW9uICYmIGxvYWRlZFVuZGVyVHJhbnNpdGlvbikgVHJhbnNpdGlvbi5wcm9taXNlcy5hZGQocHIpO1xuICAgICAgICAgIGVsc2UgaWYgKCFjb250ZXh0cy5oYXMoYykpIHtcbiAgICAgICAgICAgIGMuaW5jcmVtZW50KCk7XG4gICAgICAgICAgICBjb250ZXh0cy5hZGQoYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cbiAgZnVuY3Rpb24gbG9hZChyZWZldGNoaW5nID0gdHJ1ZSkge1xuICAgIGlmIChyZWZldGNoaW5nICE9PSBmYWxzZSAmJiBzY2hlZHVsZWQpIHJldHVybjtcbiAgICBzY2hlZHVsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBsb29rdXAgPSBkeW5hbWljID8gZHluYW1pYygpIDogc291cmNlO1xuICAgIGxvYWRlZFVuZGVyVHJhbnNpdGlvbiA9IFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nO1xuICAgIGlmIChsb29rdXAgPT0gbnVsbCB8fCBsb29rdXAgPT09IGZhbHNlKSB7XG4gICAgICBsb2FkRW5kKHByLCB1bnRyYWNrKHZhbHVlKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChUcmFuc2l0aW9uICYmIHByKSBUcmFuc2l0aW9uLnByb21pc2VzLmRlbGV0ZShwcik7XG4gICAgY29uc3QgcCA9IGluaXRQICE9PSBOT19JTklUID8gaW5pdFAgOiB1bnRyYWNrKFxuICAgICAgKCkgPT4gZmV0Y2hlcihsb29rdXAsIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlKCksXG4gICAgICAgIHJlZmV0Y2hpbmdcbiAgICAgIH0pXG4gICAgKTtcbiAgICBpZiAoIWlzUHJvbWlzZShwKSkge1xuICAgICAgbG9hZEVuZChwciwgcCwgdm9pZCAwLCBsb29rdXApO1xuICAgICAgcmV0dXJuIHA7XG4gICAgfVxuICAgIHByID0gcDtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIHApIHtcbiAgICAgIGlmIChwLnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIGxvYWRFbmQocHIsIHAudmFsdWUsIHZvaWQgMCwgbG9va3VwKTtcbiAgICAgIGVsc2UgbG9hZEVuZChwciwgdm9pZCAwLCBjYXN0RXJyb3IocC52YWx1ZSksIGxvb2t1cCk7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gICAgc2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiBzY2hlZHVsZWQgPSBmYWxzZSk7XG4gICAgcnVuVXBkYXRlcygoKSA9PiB7XG4gICAgICBzZXRTdGF0ZShyZXNvbHZlZCA/IFwicmVmcmVzaGluZ1wiIDogXCJwZW5kaW5nXCIpO1xuICAgICAgdHJpZ2dlcigpO1xuICAgIH0sIGZhbHNlKTtcbiAgICByZXR1cm4gcC50aGVuKFxuICAgICAgKHYpID0+IGxvYWRFbmQocCwgdiwgdm9pZCAwLCBsb29rdXApLFxuICAgICAgKGUpID0+IGxvYWRFbmQocCwgdm9pZCAwLCBjYXN0RXJyb3IoZSksIGxvb2t1cClcbiAgICApO1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHJlYWQsIHtcbiAgICBzdGF0ZToge1xuICAgICAgZ2V0OiAoKSA9PiBzdGF0ZSgpXG4gICAgfSxcbiAgICBlcnJvcjoge1xuICAgICAgZ2V0OiAoKSA9PiBlcnJvcigpXG4gICAgfSxcbiAgICBsb2FkaW5nOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIGNvbnN0IHMgPSBzdGF0ZSgpO1xuICAgICAgICByZXR1cm4gcyA9PT0gXCJwZW5kaW5nXCIgfHwgcyA9PT0gXCJyZWZyZXNoaW5nXCI7XG4gICAgICB9XG4gICAgfSxcbiAgICBsYXRlc3Q6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkgcmV0dXJuIHJlYWQoKTtcbiAgICAgICAgY29uc3QgZXJyID0gZXJyb3IoKTtcbiAgICAgICAgaWYgKGVyciAmJiAhcHIpIHRocm93IGVycjtcbiAgICAgICAgcmV0dXJuIHZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgaWYgKGR5bmFtaWMpIGNyZWF0ZUNvbXB1dGVkKCgpID0+IGxvYWQoZmFsc2UpKTtcbiAgZWxzZSBsb2FkKGZhbHNlKTtcbiAgcmV0dXJuIFtcbiAgICByZWFkLFxuICAgIHtcbiAgICAgIHJlZmV0Y2g6IGxvYWQsXG4gICAgICBtdXRhdGU6IHNldFZhbHVlXG4gICAgfVxuICBdO1xufVxuZnVuY3Rpb24gYmF0Y2goZm4pIHtcbiAgcmV0dXJuIHJ1blVwZGF0ZXMoZm4sIGZhbHNlKTtcbn1cbmZ1bmN0aW9uIHVudHJhY2soZm4pIHtcbiAgaWYgKCFFeHRlcm5hbFNvdXJjZUNvbmZpZyAmJiBMaXN0ZW5lciA9PT0gbnVsbCkgcmV0dXJuIGZuKCk7XG4gIGNvbnN0IGxpc3RlbmVyID0gTGlzdGVuZXI7XG4gIExpc3RlbmVyID0gbnVsbDtcbiAgdHJ5IHtcbiAgICBpZiAoRXh0ZXJuYWxTb3VyY2VDb25maWcpIHJldHVybiBFeHRlcm5hbFNvdXJjZUNvbmZpZy51bnRyYWNrKGZuKTtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBMaXN0ZW5lciA9IGxpc3RlbmVyO1xuICB9XG59XG5mdW5jdGlvbiBvbihkZXBzLCBmbiwgb3B0aW9ucykge1xuICBjb25zdCBpc0FycmF5MyA9IEFycmF5LmlzQXJyYXkoZGVwcyk7XG4gIGxldCBwcmV2SW5wdXQ7XG4gIGxldCBkZWZlciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kZWZlcjtcbiAgcmV0dXJuIChwcmV2VmFsdWUpID0+IHtcbiAgICBsZXQgaW5wdXQ7XG4gICAgaWYgKGlzQXJyYXkzKSB7XG4gICAgICBpbnB1dCA9IEFycmF5KGRlcHMubGVuZ3RoKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVwcy5sZW5ndGg7IGkrKykgaW5wdXRbaV0gPSBkZXBzW2ldKCk7XG4gICAgfSBlbHNlIGlucHV0ID0gZGVwcygpO1xuICAgIGlmIChkZWZlcikge1xuICAgICAgZGVmZXIgPSBmYWxzZTtcbiAgICAgIHJldHVybiBwcmV2VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHVudHJhY2soKCkgPT4gZm4oaW5wdXQsIHByZXZJbnB1dCwgcHJldlZhbHVlKSk7XG4gICAgcHJldklucHV0ID0gaW5wdXQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cbmZ1bmN0aW9uIG9uTW91bnQoZm4pIHtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHVudHJhY2soZm4pKTtcbn1cbmZ1bmN0aW9uIG9uQ2xlYW51cChmbikge1xuICBpZiAoT3duZXIgPT09IG51bGwpIDtcbiAgZWxzZSBpZiAoT3duZXIuY2xlYW51cHMgPT09IG51bGwpIE93bmVyLmNsZWFudXBzID0gW2ZuXTtcbiAgZWxzZSBPd25lci5jbGVhbnVwcy5wdXNoKGZuKTtcbiAgcmV0dXJuIGZuO1xufVxuZnVuY3Rpb24gZ2V0T3duZXIoKSB7XG4gIHJldHVybiBPd25lcjtcbn1cbmZ1bmN0aW9uIHJ1bldpdGhPd25lcihvLCBmbikge1xuICBjb25zdCBwcmV2ID0gT3duZXI7XG4gIGNvbnN0IHByZXZMaXN0ZW5lciA9IExpc3RlbmVyO1xuICBPd25lciA9IG87XG4gIExpc3RlbmVyID0gbnVsbDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcnVuVXBkYXRlcyhmbiwgdHJ1ZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGhhbmRsZUVycm9yKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgT3duZXIgPSBwcmV2O1xuICAgIExpc3RlbmVyID0gcHJldkxpc3RlbmVyO1xuICB9XG59XG5mdW5jdGlvbiBzdGFydFRyYW5zaXRpb24oZm4pIHtcbiAgaWYgKFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nKSB7XG4gICAgZm4oKTtcbiAgICByZXR1cm4gVHJhbnNpdGlvbi5kb25lO1xuICB9XG4gIGNvbnN0IGwgPSBMaXN0ZW5lcjtcbiAgY29uc3QgbyA9IE93bmVyO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgTGlzdGVuZXIgPSBsO1xuICAgIE93bmVyID0gbztcbiAgICBsZXQgdDtcbiAgICBpZiAoU2NoZWR1bGVyIHx8IFN1c3BlbnNlQ29udGV4dCkge1xuICAgICAgdCA9IFRyYW5zaXRpb24gfHwgKFRyYW5zaXRpb24gPSB7XG4gICAgICAgIHNvdXJjZXM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksXG4gICAgICAgIGVmZmVjdHM6IFtdLFxuICAgICAgICBwcm9taXNlczogLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSxcbiAgICAgICAgZGlzcG9zZWQ6IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksXG4gICAgICAgIHF1ZXVlOiAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpLFxuICAgICAgICBydW5uaW5nOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIHQuZG9uZSB8fCAodC5kb25lID0gbmV3IFByb21pc2UoKHJlcykgPT4gdC5yZXNvbHZlID0gcmVzKSk7XG4gICAgICB0LnJ1bm5pbmcgPSB0cnVlO1xuICAgIH1cbiAgICBydW5VcGRhdGVzKGZuLCBmYWxzZSk7XG4gICAgTGlzdGVuZXIgPSBPd25lciA9IG51bGw7XG4gICAgcmV0dXJuIHQgPyB0LmRvbmUgOiB2b2lkIDA7XG4gIH0pO1xufVxudmFyIFt0cmFuc1BlbmRpbmcsIHNldFRyYW5zUGVuZGluZ10gPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbmZ1bmN0aW9uIHVzZVRyYW5zaXRpb24oKSB7XG4gIHJldHVybiBbdHJhbnNQZW5kaW5nLCBzdGFydFRyYW5zaXRpb25dO1xufVxuZnVuY3Rpb24gY3JlYXRlQ29udGV4dChkZWZhdWx0VmFsdWUsIG9wdGlvbnMpIHtcbiAgY29uc3QgaWQgPSBTeW1ib2woXCJjb250ZXh0XCIpO1xuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIFByb3ZpZGVyOiBjcmVhdGVQcm92aWRlcihpZCksXG4gICAgZGVmYXVsdFZhbHVlXG4gIH07XG59XG5mdW5jdGlvbiB1c2VDb250ZXh0KGNvbnRleHQpIHtcbiAgbGV0IHZhbHVlO1xuICByZXR1cm4gT3duZXIgJiYgT3duZXIuY29udGV4dCAmJiAodmFsdWUgPSBPd25lci5jb250ZXh0W2NvbnRleHQuaWRdKSAhPT0gdm9pZCAwID8gdmFsdWUgOiBjb250ZXh0LmRlZmF1bHRWYWx1ZTtcbn1cbmZ1bmN0aW9uIGNoaWxkcmVuKGZuKSB7XG4gIGNvbnN0IGNoaWxkcmVuMiA9IGNyZWF0ZU1lbW8oZm4pO1xuICBjb25zdCBtZW1vID0gY3JlYXRlTWVtbygoKSA9PiByZXNvbHZlQ2hpbGRyZW4oY2hpbGRyZW4yKCkpKTtcbiAgbWVtby50b0FycmF5ID0gKCkgPT4ge1xuICAgIGNvbnN0IGMgPSBtZW1vKCk7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYykgPyBjIDogYyAhPSBudWxsID8gW2NdIDogW107XG4gIH07XG4gIHJldHVybiBtZW1vO1xufVxudmFyIFN1c3BlbnNlQ29udGV4dDtcbmZ1bmN0aW9uIHJlYWRTaWduYWwoKSB7XG4gIGNvbnN0IHJ1bm5pbmdUcmFuc2l0aW9uID0gVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmc7XG4gIGlmICh0aGlzLnNvdXJjZXMgJiYgKHJ1bm5pbmdUcmFuc2l0aW9uID8gdGhpcy50U3RhdGUgOiB0aGlzLnN0YXRlKSkge1xuICAgIGlmICgocnVubmluZ1RyYW5zaXRpb24gPyB0aGlzLnRTdGF0ZSA6IHRoaXMuc3RhdGUpID09PSBTVEFMRSkgdXBkYXRlQ29tcHV0YXRpb24odGhpcyk7XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCB1cGRhdGVzID0gVXBkYXRlcztcbiAgICAgIFVwZGF0ZXMgPSBudWxsO1xuICAgICAgcnVuVXBkYXRlcygoKSA9PiBsb29rVXBzdHJlYW0odGhpcyksIGZhbHNlKTtcbiAgICAgIFVwZGF0ZXMgPSB1cGRhdGVzO1xuICAgIH1cbiAgfVxuICBpZiAoTGlzdGVuZXIpIHtcbiAgICBjb25zdCBzU2xvdCA9IHRoaXMub2JzZXJ2ZXJzID8gdGhpcy5vYnNlcnZlcnMubGVuZ3RoIDogMDtcbiAgICBpZiAoIUxpc3RlbmVyLnNvdXJjZXMpIHtcbiAgICAgIExpc3RlbmVyLnNvdXJjZXMgPSBbdGhpc107XG4gICAgICBMaXN0ZW5lci5zb3VyY2VTbG90cyA9IFtzU2xvdF07XG4gICAgfSBlbHNlIHtcbiAgICAgIExpc3RlbmVyLnNvdXJjZXMucHVzaCh0aGlzKTtcbiAgICAgIExpc3RlbmVyLnNvdXJjZVNsb3RzLnB1c2goc1Nsb3QpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub2JzZXJ2ZXJzKSB7XG4gICAgICB0aGlzLm9ic2VydmVycyA9IFtMaXN0ZW5lcl07XG4gICAgICB0aGlzLm9ic2VydmVyU2xvdHMgPSBbTGlzdGVuZXIuc291cmNlcy5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vYnNlcnZlcnMucHVzaChMaXN0ZW5lcik7XG4gICAgICB0aGlzLm9ic2VydmVyU2xvdHMucHVzaChMaXN0ZW5lci5zb3VyY2VzLmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfVxuICBpZiAocnVubmluZ1RyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5zb3VyY2VzLmhhcyh0aGlzKSkgcmV0dXJuIHRoaXMudFZhbHVlO1xuICByZXR1cm4gdGhpcy52YWx1ZTtcbn1cbmZ1bmN0aW9uIHdyaXRlU2lnbmFsKG5vZGUsIHZhbHVlLCBpc0NvbXApIHtcbiAgbGV0IGN1cnJlbnQgPSBUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZyAmJiBUcmFuc2l0aW9uLnNvdXJjZXMuaGFzKG5vZGUpID8gbm9kZS50VmFsdWUgOiBub2RlLnZhbHVlO1xuICBpZiAoIW5vZGUuY29tcGFyYXRvciB8fCAhbm9kZS5jb21wYXJhdG9yKGN1cnJlbnQsIHZhbHVlKSkge1xuICAgIGlmIChUcmFuc2l0aW9uKSB7XG4gICAgICBjb25zdCBUcmFuc2l0aW9uUnVubmluZyA9IFRyYW5zaXRpb24ucnVubmluZztcbiAgICAgIGlmIChUcmFuc2l0aW9uUnVubmluZyB8fCAhaXNDb21wICYmIFRyYW5zaXRpb24uc291cmNlcy5oYXMobm9kZSkpIHtcbiAgICAgICAgVHJhbnNpdGlvbi5zb3VyY2VzLmFkZChub2RlKTtcbiAgICAgICAgbm9kZS50VmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmICghVHJhbnNpdGlvblJ1bm5pbmcpIG5vZGUudmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2Ugbm9kZS52YWx1ZSA9IHZhbHVlO1xuICAgIGlmIChub2RlLm9ic2VydmVycyAmJiBub2RlLm9ic2VydmVycy5sZW5ndGgpIHtcbiAgICAgIHJ1blVwZGF0ZXMoKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUub2JzZXJ2ZXJzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgY29uc3QgbyA9IG5vZGUub2JzZXJ2ZXJzW2ldO1xuICAgICAgICAgIGNvbnN0IFRyYW5zaXRpb25SdW5uaW5nID0gVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmc7XG4gICAgICAgICAgaWYgKFRyYW5zaXRpb25SdW5uaW5nICYmIFRyYW5zaXRpb24uZGlzcG9zZWQuaGFzKG8pKSBjb250aW51ZTtcbiAgICAgICAgICBpZiAoVHJhbnNpdGlvblJ1bm5pbmcgPyAhby50U3RhdGUgOiAhby5zdGF0ZSkge1xuICAgICAgICAgICAgaWYgKG8ucHVyZSkgVXBkYXRlcy5wdXNoKG8pO1xuICAgICAgICAgICAgZWxzZSBFZmZlY3RzLnB1c2gobyk7XG4gICAgICAgICAgICBpZiAoby5vYnNlcnZlcnMpIG1hcmtEb3duc3RyZWFtKG8pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIVRyYW5zaXRpb25SdW5uaW5nKSBvLnN0YXRlID0gU1RBTEU7XG4gICAgICAgICAgZWxzZSBvLnRTdGF0ZSA9IFNUQUxFO1xuICAgICAgICB9XG4gICAgICAgIGlmIChVcGRhdGVzLmxlbmd0aCA+IDFlNikge1xuICAgICAgICAgIFVwZGF0ZXMgPSBbXTtcbiAgICAgICAgICBpZiAoSVNfREVWKSA7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gdXBkYXRlQ29tcHV0YXRpb24obm9kZSkge1xuICBpZiAoIW5vZGUuZm4pIHJldHVybjtcbiAgY2xlYW5Ob2RlKG5vZGUpO1xuICBjb25zdCB0aW1lID0gRXhlY0NvdW50O1xuICBydW5Db21wdXRhdGlvbihcbiAgICBub2RlLFxuICAgIFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nICYmIFRyYW5zaXRpb24uc291cmNlcy5oYXMobm9kZSkgPyBub2RlLnRWYWx1ZSA6IG5vZGUudmFsdWUsXG4gICAgdGltZVxuICApO1xuICBpZiAoVHJhbnNpdGlvbiAmJiAhVHJhbnNpdGlvbi5ydW5uaW5nICYmIFRyYW5zaXRpb24uc291cmNlcy5oYXMobm9kZSkpIHtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBydW5VcGRhdGVzKCgpID0+IHtcbiAgICAgICAgVHJhbnNpdGlvbiAmJiAoVHJhbnNpdGlvbi5ydW5uaW5nID0gdHJ1ZSk7XG4gICAgICAgIExpc3RlbmVyID0gT3duZXIgPSBub2RlO1xuICAgICAgICBydW5Db21wdXRhdGlvbihub2RlLCBub2RlLnRWYWx1ZSwgdGltZSk7XG4gICAgICAgIExpc3RlbmVyID0gT3duZXIgPSBudWxsO1xuICAgICAgfSwgZmFsc2UpO1xuICAgIH0pO1xuICB9XG59XG5mdW5jdGlvbiBydW5Db21wdXRhdGlvbihub2RlLCB2YWx1ZSwgdGltZSkge1xuICBsZXQgbmV4dFZhbHVlO1xuICBjb25zdCBvd25lciA9IE93bmVyLCBsaXN0ZW5lciA9IExpc3RlbmVyO1xuICBMaXN0ZW5lciA9IE93bmVyID0gbm9kZTtcbiAgdHJ5IHtcbiAgICBuZXh0VmFsdWUgPSBub2RlLmZuKHZhbHVlKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKG5vZGUucHVyZSkge1xuICAgICAgaWYgKFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nKSB7XG4gICAgICAgIG5vZGUudFN0YXRlID0gU1RBTEU7XG4gICAgICAgIG5vZGUudE93bmVkICYmIG5vZGUudE93bmVkLmZvckVhY2goY2xlYW5Ob2RlKTtcbiAgICAgICAgbm9kZS50T3duZWQgPSB2b2lkIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLnN0YXRlID0gU1RBTEU7XG4gICAgICAgIG5vZGUub3duZWQgJiYgbm9kZS5vd25lZC5mb3JFYWNoKGNsZWFuTm9kZSk7XG4gICAgICAgIG5vZGUub3duZWQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBub2RlLnVwZGF0ZWRBdCA9IHRpbWUgKyAxO1xuICAgIHJldHVybiBoYW5kbGVFcnJvcihlcnIpO1xuICB9IGZpbmFsbHkge1xuICAgIExpc3RlbmVyID0gbGlzdGVuZXI7XG4gICAgT3duZXIgPSBvd25lcjtcbiAgfVxuICBpZiAoIW5vZGUudXBkYXRlZEF0IHx8IG5vZGUudXBkYXRlZEF0IDw9IHRpbWUpIHtcbiAgICBpZiAobm9kZS51cGRhdGVkQXQgIT0gbnVsbCAmJiBcIm9ic2VydmVyc1wiIGluIG5vZGUpIHtcbiAgICAgIHdyaXRlU2lnbmFsKG5vZGUsIG5leHRWYWx1ZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZyAmJiBub2RlLnB1cmUpIHtcbiAgICAgIFRyYW5zaXRpb24uc291cmNlcy5hZGQobm9kZSk7XG4gICAgICBub2RlLnRWYWx1ZSA9IG5leHRWYWx1ZTtcbiAgICB9IGVsc2Ugbm9kZS52YWx1ZSA9IG5leHRWYWx1ZTtcbiAgICBub2RlLnVwZGF0ZWRBdCA9IHRpbWU7XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGF0aW9uKGZuLCBpbml0LCBwdXJlLCBzdGF0ZSA9IFNUQUxFLCBvcHRpb25zKSB7XG4gIGNvbnN0IGMgPSB7XG4gICAgZm4sXG4gICAgc3RhdGUsXG4gICAgdXBkYXRlZEF0OiBudWxsLFxuICAgIG93bmVkOiBudWxsLFxuICAgIHNvdXJjZXM6IG51bGwsXG4gICAgc291cmNlU2xvdHM6IG51bGwsXG4gICAgY2xlYW51cHM6IG51bGwsXG4gICAgdmFsdWU6IGluaXQsXG4gICAgb3duZXI6IE93bmVyLFxuICAgIGNvbnRleHQ6IE93bmVyID8gT3duZXIuY29udGV4dCA6IG51bGwsXG4gICAgcHVyZVxuICB9O1xuICBpZiAoVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmcpIHtcbiAgICBjLnN0YXRlID0gMDtcbiAgICBjLnRTdGF0ZSA9IHN0YXRlO1xuICB9XG4gIGlmIChPd25lciA9PT0gbnVsbCkgO1xuICBlbHNlIGlmIChPd25lciAhPT0gVU5PV05FRCkge1xuICAgIGlmIChUcmFuc2l0aW9uICYmIFRyYW5zaXRpb24ucnVubmluZyAmJiBPd25lci5wdXJlKSB7XG4gICAgICBpZiAoIU93bmVyLnRPd25lZCkgT3duZXIudE93bmVkID0gW2NdO1xuICAgICAgZWxzZSBPd25lci50T3duZWQucHVzaChjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFPd25lci5vd25lZCkgT3duZXIub3duZWQgPSBbY107XG4gICAgICBlbHNlIE93bmVyLm93bmVkLnB1c2goYyk7XG4gICAgfVxuICB9XG4gIGlmIChFeHRlcm5hbFNvdXJjZUNvbmZpZyAmJiBjLmZuKSB7XG4gICAgY29uc3QgW3RyYWNrLCB0cmlnZ2VyXSA9IGNyZWF0ZVNpZ25hbCh2b2lkIDAsIHtcbiAgICAgIGVxdWFsczogZmFsc2VcbiAgICB9KTtcbiAgICBjb25zdCBvcmRpbmFyeSA9IEV4dGVybmFsU291cmNlQ29uZmlnLmZhY3RvcnkoYy5mbiwgdHJpZ2dlcik7XG4gICAgb25DbGVhbnVwKCgpID0+IG9yZGluYXJ5LmRpc3Bvc2UoKSk7XG4gICAgY29uc3QgdHJpZ2dlckluVHJhbnNpdGlvbiA9ICgpID0+IHN0YXJ0VHJhbnNpdGlvbih0cmlnZ2VyKS50aGVuKCgpID0+IGluVHJhbnNpdGlvbi5kaXNwb3NlKCkpO1xuICAgIGNvbnN0IGluVHJhbnNpdGlvbiA9IEV4dGVybmFsU291cmNlQ29uZmlnLmZhY3RvcnkoYy5mbiwgdHJpZ2dlckluVHJhbnNpdGlvbik7XG4gICAgYy5mbiA9ICh4KSA9PiB7XG4gICAgICB0cmFjaygpO1xuICAgICAgcmV0dXJuIFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nID8gaW5UcmFuc2l0aW9uLnRyYWNrKHgpIDogb3JkaW5hcnkudHJhY2soeCk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gYztcbn1cbmZ1bmN0aW9uIHJ1blRvcChub2RlKSB7XG4gIGNvbnN0IHJ1bm5pbmdUcmFuc2l0aW9uID0gVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmc7XG4gIGlmICgocnVubmluZ1RyYW5zaXRpb24gPyBub2RlLnRTdGF0ZSA6IG5vZGUuc3RhdGUpID09PSAwKSByZXR1cm47XG4gIGlmICgocnVubmluZ1RyYW5zaXRpb24gPyBub2RlLnRTdGF0ZSA6IG5vZGUuc3RhdGUpID09PSBQRU5ESU5HKSByZXR1cm4gbG9va1Vwc3RyZWFtKG5vZGUpO1xuICBpZiAobm9kZS5zdXNwZW5zZSAmJiB1bnRyYWNrKG5vZGUuc3VzcGVuc2UuaW5GYWxsYmFjaykpIHJldHVybiBub2RlLnN1c3BlbnNlLmVmZmVjdHMucHVzaChub2RlKTtcbiAgY29uc3QgYW5jZXN0b3JzID0gW25vZGVdO1xuICB3aGlsZSAoKG5vZGUgPSBub2RlLm93bmVyKSAmJiAoIW5vZGUudXBkYXRlZEF0IHx8IG5vZGUudXBkYXRlZEF0IDwgRXhlY0NvdW50KSkge1xuICAgIGlmIChydW5uaW5nVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLmRpc3Bvc2VkLmhhcyhub2RlKSkgcmV0dXJuO1xuICAgIGlmIChydW5uaW5nVHJhbnNpdGlvbiA/IG5vZGUudFN0YXRlIDogbm9kZS5zdGF0ZSkgYW5jZXN0b3JzLnB1c2gobm9kZSk7XG4gIH1cbiAgZm9yIChsZXQgaSA9IGFuY2VzdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIG5vZGUgPSBhbmNlc3RvcnNbaV07XG4gICAgaWYgKHJ1bm5pbmdUcmFuc2l0aW9uKSB7XG4gICAgICBsZXQgdG9wID0gbm9kZSwgcHJldiA9IGFuY2VzdG9yc1tpICsgMV07XG4gICAgICB3aGlsZSAoKHRvcCA9IHRvcC5vd25lcikgJiYgdG9wICE9PSBwcmV2KSB7XG4gICAgICAgIGlmIChUcmFuc2l0aW9uLmRpc3Bvc2VkLmhhcyh0b3ApKSByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgocnVubmluZ1RyYW5zaXRpb24gPyBub2RlLnRTdGF0ZSA6IG5vZGUuc3RhdGUpID09PSBTVEFMRSkge1xuICAgICAgdXBkYXRlQ29tcHV0YXRpb24obm9kZSk7XG4gICAgfSBlbHNlIGlmICgocnVubmluZ1RyYW5zaXRpb24gPyBub2RlLnRTdGF0ZSA6IG5vZGUuc3RhdGUpID09PSBQRU5ESU5HKSB7XG4gICAgICBjb25zdCB1cGRhdGVzID0gVXBkYXRlcztcbiAgICAgIFVwZGF0ZXMgPSBudWxsO1xuICAgICAgcnVuVXBkYXRlcygoKSA9PiBsb29rVXBzdHJlYW0obm9kZSwgYW5jZXN0b3JzWzBdKSwgZmFsc2UpO1xuICAgICAgVXBkYXRlcyA9IHVwZGF0ZXM7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBydW5VcGRhdGVzKGZuLCBpbml0KSB7XG4gIGlmIChVcGRhdGVzKSByZXR1cm4gZm4oKTtcbiAgbGV0IHdhaXQgPSBmYWxzZTtcbiAgaWYgKCFpbml0KSBVcGRhdGVzID0gW107XG4gIGlmIChFZmZlY3RzKSB3YWl0ID0gdHJ1ZTtcbiAgZWxzZSBFZmZlY3RzID0gW107XG4gIEV4ZWNDb3VudCsrO1xuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGZuKCk7XG4gICAgY29tcGxldGVVcGRhdGVzKHdhaXQpO1xuICAgIHJldHVybiByZXM7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICghd2FpdCkgRWZmZWN0cyA9IG51bGw7XG4gICAgVXBkYXRlcyA9IG51bGw7XG4gICAgaGFuZGxlRXJyb3IoZXJyKTtcbiAgfVxufVxuZnVuY3Rpb24gY29tcGxldGVVcGRhdGVzKHdhaXQpIHtcbiAgaWYgKFVwZGF0ZXMpIHtcbiAgICBpZiAoU2NoZWR1bGVyICYmIFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nKSBzY2hlZHVsZVF1ZXVlKFVwZGF0ZXMpO1xuICAgIGVsc2UgcnVuUXVldWUoVXBkYXRlcyk7XG4gICAgVXBkYXRlcyA9IG51bGw7XG4gIH1cbiAgaWYgKHdhaXQpIHJldHVybjtcbiAgbGV0IHJlcztcbiAgaWYgKFRyYW5zaXRpb24pIHtcbiAgICBpZiAoIVRyYW5zaXRpb24ucHJvbWlzZXMuc2l6ZSAmJiAhVHJhbnNpdGlvbi5xdWV1ZS5zaXplKSB7XG4gICAgICBjb25zdCBzb3VyY2VzID0gVHJhbnNpdGlvbi5zb3VyY2VzO1xuICAgICAgY29uc3QgZGlzcG9zZWQgPSBUcmFuc2l0aW9uLmRpc3Bvc2VkO1xuICAgICAgRWZmZWN0cy5wdXNoLmFwcGx5KEVmZmVjdHMsIFRyYW5zaXRpb24uZWZmZWN0cyk7XG4gICAgICByZXMgPSBUcmFuc2l0aW9uLnJlc29sdmU7XG4gICAgICBmb3IgKGNvbnN0IGUyIG9mIEVmZmVjdHMpIHtcbiAgICAgICAgXCJ0U3RhdGVcIiBpbiBlMiAmJiAoZTIuc3RhdGUgPSBlMi50U3RhdGUpO1xuICAgICAgICBkZWxldGUgZTIudFN0YXRlO1xuICAgICAgfVxuICAgICAgVHJhbnNpdGlvbiA9IG51bGw7XG4gICAgICBydW5VcGRhdGVzKCgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBkIG9mIGRpc3Bvc2VkKSBjbGVhbk5vZGUoZCk7XG4gICAgICAgIGZvciAoY29uc3QgdiBvZiBzb3VyY2VzKSB7XG4gICAgICAgICAgdi52YWx1ZSA9IHYudFZhbHVlO1xuICAgICAgICAgIGlmICh2Lm93bmVkKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdi5vd25lZC5sZW5ndGg7IGkgPCBsZW47IGkrKykgY2xlYW5Ob2RlKHYub3duZWRbaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodi50T3duZWQpIHYub3duZWQgPSB2LnRPd25lZDtcbiAgICAgICAgICBkZWxldGUgdi50VmFsdWU7XG4gICAgICAgICAgZGVsZXRlIHYudE93bmVkO1xuICAgICAgICAgIHYudFN0YXRlID0gMDtcbiAgICAgICAgfVxuICAgICAgICBzZXRUcmFuc1BlbmRpbmcoZmFsc2UpO1xuICAgICAgfSwgZmFsc2UpO1xuICAgIH0gZWxzZSBpZiAoVHJhbnNpdGlvbi5ydW5uaW5nKSB7XG4gICAgICBUcmFuc2l0aW9uLnJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgIFRyYW5zaXRpb24uZWZmZWN0cy5wdXNoLmFwcGx5KFRyYW5zaXRpb24uZWZmZWN0cywgRWZmZWN0cyk7XG4gICAgICBFZmZlY3RzID0gbnVsbDtcbiAgICAgIHNldFRyYW5zUGVuZGluZyh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgY29uc3QgZSA9IEVmZmVjdHM7XG4gIEVmZmVjdHMgPSBudWxsO1xuICBpZiAoZS5sZW5ndGgpIHJ1blVwZGF0ZXMoKCkgPT4gcnVuRWZmZWN0cyhlKSwgZmFsc2UpO1xuICBpZiAocmVzKSByZXMoKTtcbn1cbmZ1bmN0aW9uIHJ1blF1ZXVlKHF1ZXVlKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHJ1blRvcChxdWV1ZVtpXSk7XG59XG5mdW5jdGlvbiBzY2hlZHVsZVF1ZXVlKHF1ZXVlKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBpdGVtID0gcXVldWVbaV07XG4gICAgY29uc3QgdGFza3MgPSBUcmFuc2l0aW9uLnF1ZXVlO1xuICAgIGlmICghdGFza3MuaGFzKGl0ZW0pKSB7XG4gICAgICB0YXNrcy5hZGQoaXRlbSk7XG4gICAgICBTY2hlZHVsZXIoKCkgPT4ge1xuICAgICAgICB0YXNrcy5kZWxldGUoaXRlbSk7XG4gICAgICAgIHJ1blVwZGF0ZXMoKCkgPT4ge1xuICAgICAgICAgIFRyYW5zaXRpb24ucnVubmluZyA9IHRydWU7XG4gICAgICAgICAgcnVuVG9wKGl0ZW0pO1xuICAgICAgICB9LCBmYWxzZSk7XG4gICAgICAgIFRyYW5zaXRpb24gJiYgKFRyYW5zaXRpb24ucnVubmluZyA9IGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcnVuVXNlckVmZmVjdHMocXVldWUpIHtcbiAgbGV0IGksIHVzZXJMZW5ndGggPSAwO1xuICBmb3IgKGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBlID0gcXVldWVbaV07XG4gICAgaWYgKCFlLnVzZXIpIHJ1blRvcChlKTtcbiAgICBlbHNlIHF1ZXVlW3VzZXJMZW5ndGgrK10gPSBlO1xuICB9XG4gIGlmIChzaGFyZWRDb25maWcuY29udGV4dCkge1xuICAgIGlmIChzaGFyZWRDb25maWcuY291bnQpIHtcbiAgICAgIHNoYXJlZENvbmZpZy5lZmZlY3RzIHx8IChzaGFyZWRDb25maWcuZWZmZWN0cyA9IFtdKTtcbiAgICAgIHNoYXJlZENvbmZpZy5lZmZlY3RzLnB1c2goLi4ucXVldWUuc2xpY2UoMCwgdXNlckxlbmd0aCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRIeWRyYXRlQ29udGV4dCgpO1xuICB9XG4gIGlmIChzaGFyZWRDb25maWcuZWZmZWN0cyAmJiAoc2hhcmVkQ29uZmlnLmRvbmUgfHwgIXNoYXJlZENvbmZpZy5jb3VudCkpIHtcbiAgICBxdWV1ZSA9IFsuLi5zaGFyZWRDb25maWcuZWZmZWN0cywgLi4ucXVldWVdO1xuICAgIHVzZXJMZW5ndGggKz0gc2hhcmVkQ29uZmlnLmVmZmVjdHMubGVuZ3RoO1xuICAgIGRlbGV0ZSBzaGFyZWRDb25maWcuZWZmZWN0cztcbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgdXNlckxlbmd0aDsgaSsrKSBydW5Ub3AocXVldWVbaV0pO1xufVxuZnVuY3Rpb24gbG9va1Vwc3RyZWFtKG5vZGUsIGlnbm9yZSkge1xuICBjb25zdCBydW5uaW5nVHJhbnNpdGlvbiA9IFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nO1xuICBpZiAocnVubmluZ1RyYW5zaXRpb24pIG5vZGUudFN0YXRlID0gMDtcbiAgZWxzZSBub2RlLnN0YXRlID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnNvdXJjZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCBzb3VyY2UgPSBub2RlLnNvdXJjZXNbaV07XG4gICAgaWYgKHNvdXJjZS5zb3VyY2VzKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHJ1bm5pbmdUcmFuc2l0aW9uID8gc291cmNlLnRTdGF0ZSA6IHNvdXJjZS5zdGF0ZTtcbiAgICAgIGlmIChzdGF0ZSA9PT0gU1RBTEUpIHtcbiAgICAgICAgaWYgKHNvdXJjZSAhPT0gaWdub3JlICYmICghc291cmNlLnVwZGF0ZWRBdCB8fCBzb3VyY2UudXBkYXRlZEF0IDwgRXhlY0NvdW50KSlcbiAgICAgICAgICBydW5Ub3Aoc291cmNlKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFBFTkRJTkcpIGxvb2tVcHN0cmVhbShzb3VyY2UsIGlnbm9yZSk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBtYXJrRG93bnN0cmVhbShub2RlKSB7XG4gIGNvbnN0IHJ1bm5pbmdUcmFuc2l0aW9uID0gVHJhbnNpdGlvbiAmJiBUcmFuc2l0aW9uLnJ1bm5pbmc7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5vYnNlcnZlcnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCBvID0gbm9kZS5vYnNlcnZlcnNbaV07XG4gICAgaWYgKHJ1bm5pbmdUcmFuc2l0aW9uID8gIW8udFN0YXRlIDogIW8uc3RhdGUpIHtcbiAgICAgIGlmIChydW5uaW5nVHJhbnNpdGlvbikgby50U3RhdGUgPSBQRU5ESU5HO1xuICAgICAgZWxzZSBvLnN0YXRlID0gUEVORElORztcbiAgICAgIGlmIChvLnB1cmUpIFVwZGF0ZXMucHVzaChvKTtcbiAgICAgIGVsc2UgRWZmZWN0cy5wdXNoKG8pO1xuICAgICAgby5vYnNlcnZlcnMgJiYgbWFya0Rvd25zdHJlYW0obyk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBjbGVhbk5vZGUobm9kZSkge1xuICBsZXQgaTtcbiAgaWYgKG5vZGUuc291cmNlcykge1xuICAgIHdoaWxlIChub2RlLnNvdXJjZXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBub2RlLnNvdXJjZXMucG9wKCksIGluZGV4ID0gbm9kZS5zb3VyY2VTbG90cy5wb3AoKSwgb2JzID0gc291cmNlLm9ic2VydmVycztcbiAgICAgIGlmIChvYnMgJiYgb2JzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBuID0gb2JzLnBvcCgpLCBzID0gc291cmNlLm9ic2VydmVyU2xvdHMucG9wKCk7XG4gICAgICAgIGlmIChpbmRleCA8IG9icy5sZW5ndGgpIHtcbiAgICAgICAgICBuLnNvdXJjZVNsb3RzW3NdID0gaW5kZXg7XG4gICAgICAgICAgb2JzW2luZGV4XSA9IG47XG4gICAgICAgICAgc291cmNlLm9ic2VydmVyU2xvdHNbaW5kZXhdID0gcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAobm9kZS50T3duZWQpIHtcbiAgICBmb3IgKGkgPSBub2RlLnRPd25lZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgY2xlYW5Ob2RlKG5vZGUudE93bmVkW2ldKTtcbiAgICBkZWxldGUgbm9kZS50T3duZWQ7XG4gIH1cbiAgaWYgKFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nICYmIG5vZGUucHVyZSkge1xuICAgIHJlc2V0KG5vZGUsIHRydWUpO1xuICB9IGVsc2UgaWYgKG5vZGUub3duZWQpIHtcbiAgICBmb3IgKGkgPSBub2RlLm93bmVkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBjbGVhbk5vZGUobm9kZS5vd25lZFtpXSk7XG4gICAgbm9kZS5vd25lZCA9IG51bGw7XG4gIH1cbiAgaWYgKG5vZGUuY2xlYW51cHMpIHtcbiAgICBmb3IgKGkgPSBub2RlLmNsZWFudXBzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBub2RlLmNsZWFudXBzW2ldKCk7XG4gICAgbm9kZS5jbGVhbnVwcyA9IG51bGw7XG4gIH1cbiAgaWYgKFRyYW5zaXRpb24gJiYgVHJhbnNpdGlvbi5ydW5uaW5nKSBub2RlLnRTdGF0ZSA9IDA7XG4gIGVsc2Ugbm9kZS5zdGF0ZSA9IDA7XG59XG5mdW5jdGlvbiByZXNldChub2RlLCB0b3ApIHtcbiAgaWYgKCF0b3ApIHtcbiAgICBub2RlLnRTdGF0ZSA9IDA7XG4gICAgVHJhbnNpdGlvbi5kaXNwb3NlZC5hZGQobm9kZSk7XG4gIH1cbiAgaWYgKG5vZGUub3duZWQpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUub3duZWQubGVuZ3RoOyBpKyspIHJlc2V0KG5vZGUub3duZWRbaV0pO1xuICB9XG59XG5mdW5jdGlvbiBjYXN0RXJyb3IoZXJyKSB7XG4gIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikgcmV0dXJuIGVycjtcbiAgcmV0dXJuIG5ldyBFcnJvcih0eXBlb2YgZXJyID09PSBcInN0cmluZ1wiID8gZXJyIDogXCJVbmtub3duIGVycm9yXCIsIHtcbiAgICBjYXVzZTogZXJyXG4gIH0pO1xufVxuZnVuY3Rpb24gcnVuRXJyb3JzKGVyciwgZm5zLCBvd25lcikge1xuICB0cnkge1xuICAgIGZvciAoY29uc3QgZiBvZiBmbnMpIGYoZXJyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZUVycm9yKGUsIG93bmVyICYmIG93bmVyLm93bmVyIHx8IG51bGwpO1xuICB9XG59XG5mdW5jdGlvbiBoYW5kbGVFcnJvcihlcnIsIG93bmVyID0gT3duZXIpIHtcbiAgY29uc3QgZm5zID0gRVJST1IgJiYgb3duZXIgJiYgb3duZXIuY29udGV4dCAmJiBvd25lci5jb250ZXh0W0VSUk9SXTtcbiAgY29uc3QgZXJyb3IgPSBjYXN0RXJyb3IoZXJyKTtcbiAgaWYgKCFmbnMpIHRocm93IGVycm9yO1xuICBpZiAoRWZmZWN0cylcbiAgICBFZmZlY3RzLnB1c2goe1xuICAgICAgZm4oKSB7XG4gICAgICAgIHJ1bkVycm9ycyhlcnJvciwgZm5zLCBvd25lcik7XG4gICAgICB9LFxuICAgICAgc3RhdGU6IFNUQUxFXG4gICAgfSk7XG4gIGVsc2UgcnVuRXJyb3JzKGVycm9yLCBmbnMsIG93bmVyKTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVDaGlsZHJlbihjaGlsZHJlbjIpIHtcbiAgaWYgKHR5cGVvZiBjaGlsZHJlbjIgPT09IFwiZnVuY3Rpb25cIiAmJiAhY2hpbGRyZW4yLmxlbmd0aCkgcmV0dXJuIHJlc29sdmVDaGlsZHJlbihjaGlsZHJlbjIoKSk7XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuMikpIHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbjIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVDaGlsZHJlbihjaGlsZHJlbjJbaV0pO1xuICAgICAgQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0cy5wdXNoLmFwcGx5KHJlc3VsdHMsIHJlc3VsdCkgOiByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cbiAgcmV0dXJuIGNoaWxkcmVuMjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKGlkLCBvcHRpb25zKSB7XG4gIHJldHVybiBmdW5jdGlvbiBwcm92aWRlcihwcm9wcykge1xuICAgIGxldCByZXM7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KFxuICAgICAgKCkgPT4gcmVzID0gdW50cmFjaygoKSA9PiB7XG4gICAgICAgIE93bmVyLmNvbnRleHQgPSB7XG4gICAgICAgICAgLi4uT3duZXIuY29udGV4dCxcbiAgICAgICAgICBbaWRdOiBwcm9wcy52YWx1ZVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4oKCkgPT4gcHJvcHMuY2hpbGRyZW4pO1xuICAgICAgfSksXG4gICAgICB2b2lkIDBcbiAgICApO1xuICAgIHJldHVybiByZXM7XG4gIH07XG59XG52YXIgRkFMTEJBQ0sgPSBTeW1ib2woXCJmYWxsYmFja1wiKTtcbmZ1bmN0aW9uIGRpc3Bvc2UoZCkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGQubGVuZ3RoOyBpKyspIGRbaV0oKTtcbn1cbmZ1bmN0aW9uIG1hcEFycmF5KGxpc3QsIG1hcEZuLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGl0ZW1zID0gW10sIG1hcHBlZCA9IFtdLCBkaXNwb3NlcnMgPSBbXSwgbGVuID0gMCwgaW5kZXhlcyA9IG1hcEZuLmxlbmd0aCA+IDEgPyBbXSA6IG51bGw7XG4gIG9uQ2xlYW51cCgoKSA9PiBkaXNwb3NlKGRpc3Bvc2VycykpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGxldCBuZXdJdGVtcyA9IGxpc3QoKSB8fCBbXSwgbmV3TGVuID0gbmV3SXRlbXMubGVuZ3RoLCBpLCBqO1xuICAgIG5ld0l0ZW1zWyRUUkFDS107XG4gICAgcmV0dXJuIHVudHJhY2soKCkgPT4ge1xuICAgICAgbGV0IG5ld0luZGljZXMsIG5ld0luZGljZXNOZXh0LCB0ZW1wLCB0ZW1wZGlzcG9zZXJzLCB0ZW1wSW5kZXhlcywgc3RhcnQsIGVuZCwgbmV3RW5kLCBpdGVtO1xuICAgICAgaWYgKG5ld0xlbiA9PT0gMCkge1xuICAgICAgICBpZiAobGVuICE9PSAwKSB7XG4gICAgICAgICAgZGlzcG9zZShkaXNwb3NlcnMpO1xuICAgICAgICAgIGRpc3Bvc2VycyA9IFtdO1xuICAgICAgICAgIGl0ZW1zID0gW107XG4gICAgICAgICAgbWFwcGVkID0gW107XG4gICAgICAgICAgbGVuID0gMDtcbiAgICAgICAgICBpbmRleGVzICYmIChpbmRleGVzID0gW10pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmZhbGxiYWNrKSB7XG4gICAgICAgICAgaXRlbXMgPSBbRkFMTEJBQ0tdO1xuICAgICAgICAgIG1hcHBlZFswXSA9IGNyZWF0ZVJvb3QoKGRpc3Bvc2VyKSA9PiB7XG4gICAgICAgICAgICBkaXNwb3NlcnNbMF0gPSBkaXNwb3NlcjtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZhbGxiYWNrKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGVuID0gMTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZW4gPT09IDApIHtcbiAgICAgICAgbWFwcGVkID0gbmV3IEFycmF5KG5ld0xlbik7XG4gICAgICAgIGZvciAoaiA9IDA7IGogPCBuZXdMZW47IGorKykge1xuICAgICAgICAgIGl0ZW1zW2pdID0gbmV3SXRlbXNbal07XG4gICAgICAgICAgbWFwcGVkW2pdID0gY3JlYXRlUm9vdChtYXBwZXIpO1xuICAgICAgICB9XG4gICAgICAgIGxlbiA9IG5ld0xlbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlbXAgPSBuZXcgQXJyYXkobmV3TGVuKTtcbiAgICAgICAgdGVtcGRpc3Bvc2VycyA9IG5ldyBBcnJheShuZXdMZW4pO1xuICAgICAgICBpbmRleGVzICYmICh0ZW1wSW5kZXhlcyA9IG5ldyBBcnJheShuZXdMZW4pKTtcbiAgICAgICAgZm9yIChzdGFydCA9IDAsIGVuZCA9IE1hdGgubWluKGxlbiwgbmV3TGVuKTsgc3RhcnQgPCBlbmQgJiYgaXRlbXNbc3RhcnRdID09PSBuZXdJdGVtc1tzdGFydF07IHN0YXJ0KyspIDtcbiAgICAgICAgZm9yIChlbmQgPSBsZW4gLSAxLCBuZXdFbmQgPSBuZXdMZW4gLSAxOyBlbmQgPj0gc3RhcnQgJiYgbmV3RW5kID49IHN0YXJ0ICYmIGl0ZW1zW2VuZF0gPT09IG5ld0l0ZW1zW25ld0VuZF07IGVuZC0tLCBuZXdFbmQtLSkge1xuICAgICAgICAgIHRlbXBbbmV3RW5kXSA9IG1hcHBlZFtlbmRdO1xuICAgICAgICAgIHRlbXBkaXNwb3NlcnNbbmV3RW5kXSA9IGRpc3Bvc2Vyc1tlbmRdO1xuICAgICAgICAgIGluZGV4ZXMgJiYgKHRlbXBJbmRleGVzW25ld0VuZF0gPSBpbmRleGVzW2VuZF0pO1xuICAgICAgICB9XG4gICAgICAgIG5ld0luZGljZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgICAgICBuZXdJbmRpY2VzTmV4dCA9IG5ldyBBcnJheShuZXdFbmQgKyAxKTtcbiAgICAgICAgZm9yIChqID0gbmV3RW5kOyBqID49IHN0YXJ0OyBqLS0pIHtcbiAgICAgICAgICBpdGVtID0gbmV3SXRlbXNbal07XG4gICAgICAgICAgaSA9IG5ld0luZGljZXMuZ2V0KGl0ZW0pO1xuICAgICAgICAgIG5ld0luZGljZXNOZXh0W2pdID0gaSA9PT0gdm9pZCAwID8gLTEgOiBpO1xuICAgICAgICAgIG5ld0luZGljZXMuc2V0KGl0ZW0sIGopO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XG4gICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICAgIGogPSBuZXdJbmRpY2VzLmdldChpdGVtKTtcbiAgICAgICAgICBpZiAoaiAhPT0gdm9pZCAwICYmIGogIT09IC0xKSB7XG4gICAgICAgICAgICB0ZW1wW2pdID0gbWFwcGVkW2ldO1xuICAgICAgICAgICAgdGVtcGRpc3Bvc2Vyc1tqXSA9IGRpc3Bvc2Vyc1tpXTtcbiAgICAgICAgICAgIGluZGV4ZXMgJiYgKHRlbXBJbmRleGVzW2pdID0gaW5kZXhlc1tpXSk7XG4gICAgICAgICAgICBqID0gbmV3SW5kaWNlc05leHRbal07XG4gICAgICAgICAgICBuZXdJbmRpY2VzLnNldChpdGVtLCBqKTtcbiAgICAgICAgICB9IGVsc2UgZGlzcG9zZXJzW2ldKCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChqID0gc3RhcnQ7IGogPCBuZXdMZW47IGorKykge1xuICAgICAgICAgIGlmIChqIGluIHRlbXApIHtcbiAgICAgICAgICAgIG1hcHBlZFtqXSA9IHRlbXBbal07XG4gICAgICAgICAgICBkaXNwb3NlcnNbal0gPSB0ZW1wZGlzcG9zZXJzW2pdO1xuICAgICAgICAgICAgaWYgKGluZGV4ZXMpIHtcbiAgICAgICAgICAgICAgaW5kZXhlc1tqXSA9IHRlbXBJbmRleGVzW2pdO1xuICAgICAgICAgICAgICBpbmRleGVzW2pdKGopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBtYXBwZWRbal0gPSBjcmVhdGVSb290KG1hcHBlcik7XG4gICAgICAgIH1cbiAgICAgICAgbWFwcGVkID0gbWFwcGVkLnNsaWNlKDAsIGxlbiA9IG5ld0xlbik7XG4gICAgICAgIGl0ZW1zID0gbmV3SXRlbXMuc2xpY2UoMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWFwcGVkO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIG1hcHBlcihkaXNwb3Nlcikge1xuICAgICAgZGlzcG9zZXJzW2pdID0gZGlzcG9zZXI7XG4gICAgICBpZiAoaW5kZXhlcykge1xuICAgICAgICBjb25zdCBbcywgc2V0XSA9IGNyZWF0ZVNpZ25hbChqKTtcbiAgICAgICAgaW5kZXhlc1tqXSA9IHNldDtcbiAgICAgICAgcmV0dXJuIG1hcEZuKG5ld0l0ZW1zW2pdLCBzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXBGbihuZXdJdGVtc1tqXSk7XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gaW5kZXhBcnJheShsaXN0LCBtYXBGbiwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBpdGVtcyA9IFtdLCBtYXBwZWQgPSBbXSwgZGlzcG9zZXJzID0gW10sIHNpZ25hbHMgPSBbXSwgbGVuID0gMCwgaTtcbiAgb25DbGVhbnVwKCgpID0+IGRpc3Bvc2UoZGlzcG9zZXJzKSk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBsaXN0KCkgfHwgW10sIG5ld0xlbiA9IG5ld0l0ZW1zLmxlbmd0aDtcbiAgICBuZXdJdGVtc1skVFJBQ0tdO1xuICAgIHJldHVybiB1bnRyYWNrKCgpID0+IHtcbiAgICAgIGlmIChuZXdMZW4gPT09IDApIHtcbiAgICAgICAgaWYgKGxlbiAhPT0gMCkge1xuICAgICAgICAgIGRpc3Bvc2UoZGlzcG9zZXJzKTtcbiAgICAgICAgICBkaXNwb3NlcnMgPSBbXTtcbiAgICAgICAgICBpdGVtcyA9IFtdO1xuICAgICAgICAgIG1hcHBlZCA9IFtdO1xuICAgICAgICAgIGxlbiA9IDA7XG4gICAgICAgICAgc2lnbmFscyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmZhbGxiYWNrKSB7XG4gICAgICAgICAgaXRlbXMgPSBbRkFMTEJBQ0tdO1xuICAgICAgICAgIG1hcHBlZFswXSA9IGNyZWF0ZVJvb3QoKGRpc3Bvc2VyKSA9PiB7XG4gICAgICAgICAgICBkaXNwb3NlcnNbMF0gPSBkaXNwb3NlcjtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZhbGxiYWNrKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGVuID0gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFwcGVkO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1zWzBdID09PSBGQUxMQkFDSykge1xuICAgICAgICBkaXNwb3NlcnNbMF0oKTtcbiAgICAgICAgZGlzcG9zZXJzID0gW107XG4gICAgICAgIGl0ZW1zID0gW107XG4gICAgICAgIG1hcHBlZCA9IFtdO1xuICAgICAgICBsZW4gPSAwO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IG5ld0xlbjsgaSsrKSB7XG4gICAgICAgIGlmIChpIDwgaXRlbXMubGVuZ3RoICYmIGl0ZW1zW2ldICE9PSBuZXdJdGVtc1tpXSkge1xuICAgICAgICAgIHNpZ25hbHNbaV0oKCkgPT4gbmV3SXRlbXNbaV0pO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPj0gaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgbWFwcGVkW2ldID0gY3JlYXRlUm9vdChtYXBwZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGRpc3Bvc2Vyc1tpXSgpO1xuICAgICAgfVxuICAgICAgbGVuID0gc2lnbmFscy5sZW5ndGggPSBkaXNwb3NlcnMubGVuZ3RoID0gbmV3TGVuO1xuICAgICAgaXRlbXMgPSBuZXdJdGVtcy5zbGljZSgwKTtcbiAgICAgIHJldHVybiBtYXBwZWQgPSBtYXBwZWQuc2xpY2UoMCwgbGVuKTtcbiAgICB9KTtcbiAgICBmdW5jdGlvbiBtYXBwZXIoZGlzcG9zZXIpIHtcbiAgICAgIGRpc3Bvc2Vyc1tpXSA9IGRpc3Bvc2VyO1xuICAgICAgY29uc3QgW3MsIHNldF0gPSBjcmVhdGVTaWduYWwobmV3SXRlbXNbaV0pO1xuICAgICAgc2lnbmFsc1tpXSA9IHNldDtcbiAgICAgIHJldHVybiBtYXBGbihzLCBpKTtcbiAgICB9XG4gIH07XG59XG52YXIgaHlkcmF0aW9uRW5hYmxlZCA9IGZhbHNlO1xuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50KENvbXAsIHByb3BzKSB7XG4gIGlmIChoeWRyYXRpb25FbmFibGVkKSB7XG4gICAgaWYgKHNoYXJlZENvbmZpZy5jb250ZXh0KSB7XG4gICAgICBjb25zdCBjID0gc2hhcmVkQ29uZmlnLmNvbnRleHQ7XG4gICAgICBzZXRIeWRyYXRlQ29udGV4dChuZXh0SHlkcmF0ZUNvbnRleHQoKSk7XG4gICAgICBjb25zdCByID0gdW50cmFjaygoKSA9PiBDb21wKHByb3BzIHx8IHt9KSk7XG4gICAgICBzZXRIeWRyYXRlQ29udGV4dChjKTtcbiAgICAgIHJldHVybiByO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW50cmFjaygoKSA9PiBDb21wKHByb3BzIHx8IHt9KSk7XG59XG5mdW5jdGlvbiB0cnVlRm4oKSB7XG4gIHJldHVybiB0cnVlO1xufVxudmFyIHByb3BUcmFwcyA9IHtcbiAgZ2V0KF8sIHByb3BlcnR5LCByZWNlaXZlcikge1xuICAgIGlmIChwcm9wZXJ0eSA9PT0gJFBST1hZKSByZXR1cm4gcmVjZWl2ZXI7XG4gICAgcmV0dXJuIF8uZ2V0KHByb3BlcnR5KTtcbiAgfSxcbiAgaGFzKF8sIHByb3BlcnR5KSB7XG4gICAgaWYgKHByb3BlcnR5ID09PSAkUFJPWFkpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBfLmhhcyhwcm9wZXJ0eSk7XG4gIH0sXG4gIHNldDogdHJ1ZUZuLFxuICBkZWxldGVQcm9wZXJ0eTogdHJ1ZUZuLFxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXywgcHJvcGVydHkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIF8uZ2V0KHByb3BlcnR5KTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IHRydWVGbixcbiAgICAgIGRlbGV0ZVByb3BlcnR5OiB0cnVlRm5cbiAgICB9O1xuICB9LFxuICBvd25LZXlzKF8pIHtcbiAgICByZXR1cm4gXy5rZXlzKCk7XG4gIH1cbn07XG5mdW5jdGlvbiByZXNvbHZlU291cmNlKHMpIHtcbiAgcmV0dXJuICEocyA9IHR5cGVvZiBzID09PSBcImZ1bmN0aW9uXCIgPyBzKCkgOiBzKSA/IHt9IDogcztcbn1cbmZ1bmN0aW9uIHJlc29sdmVTb3VyY2VzKCkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gdGhpcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IHYgPSB0aGlzW2ldKCk7XG4gICAgaWYgKHYgIT09IHZvaWQgMCkgcmV0dXJuIHY7XG4gIH1cbn1cbmZ1bmN0aW9uIG1lcmdlUHJvcHMoLi4uc291cmNlcykge1xuICBsZXQgcHJveHkgPSBmYWxzZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcyA9IHNvdXJjZXNbaV07XG4gICAgcHJveHkgPSBwcm94eSB8fCAhIXMgJiYgJFBST1hZIGluIHM7XG4gICAgc291cmNlc1tpXSA9IHR5cGVvZiBzID09PSBcImZ1bmN0aW9uXCIgPyAocHJveHkgPSB0cnVlLCBjcmVhdGVNZW1vKHMpKSA6IHM7XG4gIH1cbiAgaWYgKFNVUFBPUlRTX1BST1hZICYmIHByb3h5KSB7XG4gICAgcmV0dXJuIG5ldyBQcm94eShcbiAgICAgIHtcbiAgICAgICAgZ2V0KHByb3BlcnR5KSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IHNvdXJjZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSByZXNvbHZlU291cmNlKHNvdXJjZXNbaV0pW3Byb3BlcnR5XTtcbiAgICAgICAgICAgIGlmICh2ICE9PSB2b2lkIDApIHJldHVybiB2O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaGFzKHByb3BlcnR5KSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IHNvdXJjZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eSBpbiByZXNvbHZlU291cmNlKHNvdXJjZXNbaV0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBrZXlzKCkge1xuICAgICAgICAgIGNvbnN0IGtleXMgPSBbXTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZXMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBrZXlzLnB1c2goLi4uT2JqZWN0LmtleXMocmVzb2x2ZVNvdXJjZShzb3VyY2VzW2ldKSkpO1xuICAgICAgICAgIHJldHVybiBbLi4ubmV3IFNldChrZXlzKV07XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwcm9wVHJhcHNcbiAgICApO1xuICB9XG4gIGNvbnN0IHNvdXJjZXNNYXAgPSB7fTtcbiAgY29uc3QgZGVmaW5lZCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBmb3IgKGxldCBpID0gc291cmNlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGNvbnN0IHNvdXJjZSA9IHNvdXJjZXNbaV07XG4gICAgaWYgKCFzb3VyY2UpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHNvdXJjZUtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2UpO1xuICAgIGZvciAobGV0IGkyID0gc291cmNlS2V5cy5sZW5ndGggLSAxOyBpMiA+PSAwOyBpMi0tKSB7XG4gICAgICBjb25zdCBrZXkgPSBzb3VyY2VLZXlzW2kyXTtcbiAgICAgIGlmIChrZXkgPT09IFwiX19wcm90b19fXCIgfHwga2V5ID09PSBcImNvbnN0cnVjdG9yXCIpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpO1xuICAgICAgaWYgKCFkZWZpbmVkW2tleV0pIHtcbiAgICAgICAgZGVmaW5lZFtrZXldID0gZGVzYy5nZXQgPyB7XG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgZ2V0OiByZXNvbHZlU291cmNlcy5iaW5kKHNvdXJjZXNNYXBba2V5XSA9IFtkZXNjLmdldC5iaW5kKHNvdXJjZSldKVxuICAgICAgICB9IDogZGVzYy52YWx1ZSAhPT0gdm9pZCAwID8gZGVzYyA6IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZXMyID0gc291cmNlc01hcFtrZXldO1xuICAgICAgICBpZiAoc291cmNlczIpIHtcbiAgICAgICAgICBpZiAoZGVzYy5nZXQpIHNvdXJjZXMyLnB1c2goZGVzYy5nZXQuYmluZChzb3VyY2UpKTtcbiAgICAgICAgICBlbHNlIGlmIChkZXNjLnZhbHVlICE9PSB2b2lkIDApIHNvdXJjZXMyLnB1c2goKCkgPT4gZGVzYy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3QgdGFyZ2V0ID0ge307XG4gIGNvbnN0IGRlZmluZWRLZXlzID0gT2JqZWN0LmtleXMoZGVmaW5lZCk7XG4gIGZvciAobGV0IGkgPSBkZWZpbmVkS2V5cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGNvbnN0IGtleSA9IGRlZmluZWRLZXlzW2ldLCBkZXNjID0gZGVmaW5lZFtrZXldO1xuICAgIGlmIChkZXNjICYmIGRlc2MuZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2MpO1xuICAgIGVsc2UgdGFyZ2V0W2tleV0gPSBkZXNjID8gZGVzYy52YWx1ZSA6IHZvaWQgMDtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gc3BsaXRQcm9wcyhwcm9wcywgLi4ua2V5cykge1xuICBpZiAoU1VQUE9SVFNfUFJPWFkgJiYgJFBST1hZIGluIHByb3BzKSB7XG4gICAgY29uc3QgYmxvY2tlZCA9IG5ldyBTZXQoa2V5cy5sZW5ndGggPiAxID8ga2V5cy5mbGF0KCkgOiBrZXlzWzBdKTtcbiAgICBjb25zdCByZXMgPSBrZXlzLm1hcCgoaykgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm94eShcbiAgICAgICAge1xuICAgICAgICAgIGdldChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgcmV0dXJuIGsuaW5jbHVkZXMocHJvcGVydHkpID8gcHJvcHNbcHJvcGVydHldIDogdm9pZCAwO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGFzKHByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm4gay5pbmNsdWRlcyhwcm9wZXJ0eSkgJiYgcHJvcGVydHkgaW4gcHJvcHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXlzKCkge1xuICAgICAgICAgICAgcmV0dXJuIGsuZmlsdGVyKChwcm9wZXJ0eSkgPT4gcHJvcGVydHkgaW4gcHJvcHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcHJvcFRyYXBzXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJlcy5wdXNoKFxuICAgICAgbmV3IFByb3h5KFxuICAgICAgICB7XG4gICAgICAgICAgZ2V0KHByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm4gYmxvY2tlZC5oYXMocHJvcGVydHkpID8gdm9pZCAwIDogcHJvcHNbcHJvcGVydHldO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaGFzKHByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm4gYmxvY2tlZC5oYXMocHJvcGVydHkpID8gZmFsc2UgOiBwcm9wZXJ0eSBpbiBwcm9wcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtleXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocHJvcHMpLmZpbHRlcigoaykgPT4gIWJsb2NrZWQuaGFzKGspKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByb3BUcmFwc1xuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBjb25zdCBvdGhlck9iamVjdCA9IHt9O1xuICBjb25zdCBvYmplY3RzID0ga2V5cy5tYXAoKCkgPT4gKHt9KSk7XG4gIGZvciAoY29uc3QgcHJvcE5hbWUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvcHMpKSB7XG4gICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvcHMsIHByb3BOYW1lKTtcbiAgICBjb25zdCBpc0RlZmF1bHREZXNjID0gIWRlc2MuZ2V0ICYmICFkZXNjLnNldCAmJiBkZXNjLmVudW1lcmFibGUgJiYgZGVzYy53cml0YWJsZSAmJiBkZXNjLmNvbmZpZ3VyYWJsZTtcbiAgICBsZXQgYmxvY2tlZCA9IGZhbHNlO1xuICAgIGxldCBvYmplY3RJbmRleCA9IDA7XG4gICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgIGlmIChrLmluY2x1ZGVzKHByb3BOYW1lKSkge1xuICAgICAgICBibG9ja2VkID0gdHJ1ZTtcbiAgICAgICAgaXNEZWZhdWx0RGVzYyA/IG9iamVjdHNbb2JqZWN0SW5kZXhdW3Byb3BOYW1lXSA9IGRlc2MudmFsdWUgOiBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0c1tvYmplY3RJbmRleF0sIHByb3BOYW1lLCBkZXNjKTtcbiAgICAgIH1cbiAgICAgICsrb2JqZWN0SW5kZXg7XG4gICAgfVxuICAgIGlmICghYmxvY2tlZCkge1xuICAgICAgaXNEZWZhdWx0RGVzYyA/IG90aGVyT2JqZWN0W3Byb3BOYW1lXSA9IGRlc2MudmFsdWUgOiBPYmplY3QuZGVmaW5lUHJvcGVydHkob3RoZXJPYmplY3QsIHByb3BOYW1lLCBkZXNjKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFsuLi5vYmplY3RzLCBvdGhlck9iamVjdF07XG59XG5mdW5jdGlvbiBsYXp5KGZuKSB7XG4gIGxldCBjb21wO1xuICBsZXQgcDtcbiAgY29uc3Qgd3JhcCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGN0eCA9IHNoYXJlZENvbmZpZy5jb250ZXh0O1xuICAgIGlmIChjdHgpIHtcbiAgICAgIGNvbnN0IFtzLCBzZXRdID0gY3JlYXRlU2lnbmFsKCk7XG4gICAgICBzaGFyZWRDb25maWcuY291bnQgfHwgKHNoYXJlZENvbmZpZy5jb3VudCA9IDApO1xuICAgICAgc2hhcmVkQ29uZmlnLmNvdW50Kys7XG4gICAgICAocCB8fCAocCA9IGZuKCkpKS50aGVuKChtb2QpID0+IHtcbiAgICAgICAgIXNoYXJlZENvbmZpZy5kb25lICYmIHNldEh5ZHJhdGVDb250ZXh0KGN0eCk7XG4gICAgICAgIHNoYXJlZENvbmZpZy5jb3VudC0tO1xuICAgICAgICBzZXQoKCkgPT4gbW9kLmRlZmF1bHQpO1xuICAgICAgICBzZXRIeWRyYXRlQ29udGV4dCgpO1xuICAgICAgfSk7XG4gICAgICBjb21wID0gcztcbiAgICB9IGVsc2UgaWYgKCFjb21wKSB7XG4gICAgICBjb25zdCBbc10gPSBjcmVhdGVSZXNvdXJjZSgoKSA9PiAocCB8fCAocCA9IGZuKCkpKS50aGVuKChtb2QpID0+IG1vZC5kZWZhdWx0KSk7XG4gICAgICBjb21wID0gcztcbiAgICB9XG4gICAgbGV0IENvbXA7XG4gICAgcmV0dXJuIGNyZWF0ZU1lbW8oXG4gICAgICAoKSA9PiAoQ29tcCA9IGNvbXAoKSkgPyB1bnRyYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKElTX0RFVikgO1xuICAgICAgICBpZiAoIWN0eCB8fCBzaGFyZWRDb25maWcuZG9uZSkgcmV0dXJuIENvbXAocHJvcHMpO1xuICAgICAgICBjb25zdCBjID0gc2hhcmVkQ29uZmlnLmNvbnRleHQ7XG4gICAgICAgIHNldEh5ZHJhdGVDb250ZXh0KGN0eCk7XG4gICAgICAgIGNvbnN0IHIgPSBDb21wKHByb3BzKTtcbiAgICAgICAgc2V0SHlkcmF0ZUNvbnRleHQoYyk7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfSkgOiBcIlwiXG4gICAgKTtcbiAgfTtcbiAgd3JhcC5wcmVsb2FkID0gKCkgPT4gcCB8fCAoKHAgPSBmbigpKS50aGVuKChtb2QpID0+IGNvbXAgPSAoKSA9PiBtb2QuZGVmYXVsdCksIHApO1xuICByZXR1cm4gd3JhcDtcbn1cbnZhciBjb3VudGVyID0gMDtcbmZ1bmN0aW9uIGNyZWF0ZVVuaXF1ZUlkKCkge1xuICBjb25zdCBjdHggPSBzaGFyZWRDb25maWcuY29udGV4dDtcbiAgcmV0dXJuIGN0eCA/IHNoYXJlZENvbmZpZy5nZXROZXh0Q29udGV4dElkKCkgOiBgY2wtJHtjb3VudGVyKyt9YDtcbn1cbnZhciBuYXJyb3dlZEVycm9yID0gKG5hbWUpID0+IGBTdGFsZSByZWFkIGZyb20gPCR7bmFtZX0+LmA7XG5mdW5jdGlvbiBGb3IocHJvcHMpIHtcbiAgY29uc3QgZmFsbGJhY2sgPSBcImZhbGxiYWNrXCIgaW4gcHJvcHMgJiYge1xuICAgIGZhbGxiYWNrOiAoKSA9PiBwcm9wcy5mYWxsYmFja1xuICB9O1xuICByZXR1cm4gY3JlYXRlTWVtbyhtYXBBcnJheSgoKSA9PiBwcm9wcy5lYWNoLCBwcm9wcy5jaGlsZHJlbiwgZmFsbGJhY2sgfHwgdm9pZCAwKSk7XG59XG5mdW5jdGlvbiBJbmRleChwcm9wcykge1xuICBjb25zdCBmYWxsYmFjayA9IFwiZmFsbGJhY2tcIiBpbiBwcm9wcyAmJiB7XG4gICAgZmFsbGJhY2s6ICgpID0+IHByb3BzLmZhbGxiYWNrXG4gIH07XG4gIHJldHVybiBjcmVhdGVNZW1vKGluZGV4QXJyYXkoKCkgPT4gcHJvcHMuZWFjaCwgcHJvcHMuY2hpbGRyZW4sIGZhbGxiYWNrIHx8IHZvaWQgMCkpO1xufVxuZnVuY3Rpb24gU2hvdyhwcm9wcykge1xuICBjb25zdCBrZXllZCA9IHByb3BzLmtleWVkO1xuICBjb25zdCBjb25kaXRpb25WYWx1ZSA9IGNyZWF0ZU1lbW8oKCkgPT4gcHJvcHMud2hlbiwgdm9pZCAwLCB2b2lkIDApO1xuICBjb25zdCBjb25kaXRpb24gPSBrZXllZCA/IGNvbmRpdGlvblZhbHVlIDogY3JlYXRlTWVtbyhjb25kaXRpb25WYWx1ZSwgdm9pZCAwLCB7XG4gICAgZXF1YWxzOiAoYSwgYikgPT4gIWEgPT09ICFiXG4gIH0pO1xuICByZXR1cm4gY3JlYXRlTWVtbyhcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBjID0gY29uZGl0aW9uKCk7XG4gICAgICBpZiAoYykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IHByb3BzLmNoaWxkcmVuO1xuICAgICAgICBjb25zdCBmbiA9IHR5cGVvZiBjaGlsZCA9PT0gXCJmdW5jdGlvblwiICYmIGNoaWxkLmxlbmd0aCA+IDA7XG4gICAgICAgIHJldHVybiBmbiA/IHVudHJhY2soXG4gICAgICAgICAgKCkgPT4gY2hpbGQoXG4gICAgICAgICAgICBrZXllZCA/IGMgOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghdW50cmFjayhjb25kaXRpb24pKSB0aHJvdyBuYXJyb3dlZEVycm9yKFwiU2hvd1wiKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlvblZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICApIDogY2hpbGQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcHMuZmFsbGJhY2s7XG4gICAgfSxcbiAgICB2b2lkIDAsXG4gICAgdm9pZCAwXG4gICk7XG59XG5mdW5jdGlvbiBTd2l0Y2gocHJvcHMpIHtcbiAgY29uc3QgY2hzID0gY2hpbGRyZW4oKCkgPT4gcHJvcHMuY2hpbGRyZW4pO1xuICBjb25zdCBzd2l0Y2hGdW5jID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgY2ggPSBjaHMoKTtcbiAgICBjb25zdCBtcHMgPSBBcnJheS5pc0FycmF5KGNoKSA/IGNoIDogW2NoXTtcbiAgICBsZXQgZnVuYyA9ICgpID0+IHZvaWQgMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1wcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaW5kZXggPSBpO1xuICAgICAgY29uc3QgbXAgPSBtcHNbaV07XG4gICAgICBjb25zdCBwcmV2RnVuYyA9IGZ1bmM7XG4gICAgICBjb25zdCBjb25kaXRpb25WYWx1ZSA9IGNyZWF0ZU1lbW8oXG4gICAgICAgICgpID0+IHByZXZGdW5jKCkgPyB2b2lkIDAgOiBtcC53aGVuLFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIHZvaWQgMFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IG1wLmtleWVkID8gY29uZGl0aW9uVmFsdWUgOiBjcmVhdGVNZW1vKGNvbmRpdGlvblZhbHVlLCB2b2lkIDAsIHtcbiAgICAgICAgZXF1YWxzOiAoYSwgYikgPT4gIWEgPT09ICFiXG4gICAgICB9KTtcbiAgICAgIGZ1bmMgPSAoKSA9PiBwcmV2RnVuYygpIHx8IChjb25kaXRpb24oKSA/IFtpbmRleCwgY29uZGl0aW9uVmFsdWUsIG1wXSA6IHZvaWQgMCk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jO1xuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZU1lbW8oXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsID0gc3dpdGNoRnVuYygpKCk7XG4gICAgICBpZiAoIXNlbCkgcmV0dXJuIHByb3BzLmZhbGxiYWNrO1xuICAgICAgY29uc3QgW2luZGV4LCBjb25kaXRpb25WYWx1ZSwgbXBdID0gc2VsO1xuICAgICAgY29uc3QgY2hpbGQgPSBtcC5jaGlsZHJlbjtcbiAgICAgIGNvbnN0IGZuID0gdHlwZW9mIGNoaWxkID09PSBcImZ1bmN0aW9uXCIgJiYgY2hpbGQubGVuZ3RoID4gMDtcbiAgICAgIHJldHVybiBmbiA/IHVudHJhY2soXG4gICAgICAgICgpID0+IGNoaWxkKFxuICAgICAgICAgIG1wLmtleWVkID8gY29uZGl0aW9uVmFsdWUoKSA6ICgpID0+IHtcbiAgICAgICAgICAgIGlmICh1bnRyYWNrKHN3aXRjaEZ1bmMpKCk/LlswXSAhPT0gaW5kZXgpIHRocm93IG5hcnJvd2VkRXJyb3IoXCJNYXRjaFwiKTtcbiAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25WYWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKSA6IGNoaWxkO1xuICAgIH0sXG4gICAgdm9pZCAwLFxuICAgIHZvaWQgMFxuICApO1xufVxuZnVuY3Rpb24gTWF0Y2gocHJvcHMpIHtcbiAgcmV0dXJuIHByb3BzO1xufVxudmFyIERFViA9IHZvaWQgMDtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9zb2xpZC1qcy93ZWIvZGlzdC93ZWIuanNcbnZhciBib29sZWFucyA9IFtcbiAgXCJhbGxvd2Z1bGxzY3JlZW5cIixcbiAgXCJhc3luY1wiLFxuICBcImF1dG9mb2N1c1wiLFxuICBcImF1dG9wbGF5XCIsXG4gIFwiY2hlY2tlZFwiLFxuICBcImNvbnRyb2xzXCIsXG4gIFwiZGVmYXVsdFwiLFxuICBcImRpc2FibGVkXCIsXG4gIFwiZm9ybW5vdmFsaWRhdGVcIixcbiAgXCJoaWRkZW5cIixcbiAgXCJpbmRldGVybWluYXRlXCIsXG4gIFwiaW5lcnRcIixcbiAgXCJpc21hcFwiLFxuICBcImxvb3BcIixcbiAgXCJtdWx0aXBsZVwiLFxuICBcIm11dGVkXCIsXG4gIFwibm9tb2R1bGVcIixcbiAgXCJub3ZhbGlkYXRlXCIsXG4gIFwib3BlblwiLFxuICBcInBsYXlzaW5saW5lXCIsXG4gIFwicmVhZG9ubHlcIixcbiAgXCJyZXF1aXJlZFwiLFxuICBcInJldmVyc2VkXCIsXG4gIFwic2VhbWxlc3NcIixcbiAgXCJzZWxlY3RlZFwiXG5dO1xudmFyIFByb3BlcnRpZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXG4gIFwiY2xhc3NOYW1lXCIsXG4gIFwidmFsdWVcIixcbiAgXCJyZWFkT25seVwiLFxuICBcImZvcm1Ob1ZhbGlkYXRlXCIsXG4gIFwiaXNNYXBcIixcbiAgXCJub01vZHVsZVwiLFxuICBcInBsYXlzSW5saW5lXCIsXG4gIC4uLmJvb2xlYW5zXG5dKTtcbnZhciBDaGlsZFByb3BlcnRpZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXG4gIFwiaW5uZXJIVE1MXCIsXG4gIFwidGV4dENvbnRlbnRcIixcbiAgXCJpbm5lclRleHRcIixcbiAgXCJjaGlsZHJlblwiXG5dKTtcbnZhciBBbGlhc2VzID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5hc3NpZ24oLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCksIHtcbiAgY2xhc3NOYW1lOiBcImNsYXNzXCIsXG4gIGh0bWxGb3I6IFwiZm9yXCJcbn0pO1xudmFyIFByb3BBbGlhc2VzID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5hc3NpZ24oLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCksIHtcbiAgY2xhc3M6IFwiY2xhc3NOYW1lXCIsXG4gIGZvcm1ub3ZhbGlkYXRlOiB7XG4gICAgJDogXCJmb3JtTm9WYWxpZGF0ZVwiLFxuICAgIEJVVFRPTjogMSxcbiAgICBJTlBVVDogMVxuICB9LFxuICBpc21hcDoge1xuICAgICQ6IFwiaXNNYXBcIixcbiAgICBJTUc6IDFcbiAgfSxcbiAgbm9tb2R1bGU6IHtcbiAgICAkOiBcIm5vTW9kdWxlXCIsXG4gICAgU0NSSVBUOiAxXG4gIH0sXG4gIHBsYXlzaW5saW5lOiB7XG4gICAgJDogXCJwbGF5c0lubGluZVwiLFxuICAgIFZJREVPOiAxXG4gIH0sXG4gIHJlYWRvbmx5OiB7XG4gICAgJDogXCJyZWFkT25seVwiLFxuICAgIElOUFVUOiAxLFxuICAgIFRFWFRBUkVBOiAxXG4gIH1cbn0pO1xuZnVuY3Rpb24gZ2V0UHJvcEFsaWFzKHByb3AsIHRhZ05hbWUpIHtcbiAgY29uc3QgYSA9IFByb3BBbGlhc2VzW3Byb3BdO1xuICByZXR1cm4gdHlwZW9mIGEgPT09IFwib2JqZWN0XCIgPyBhW3RhZ05hbWVdID8gYVtcIiRcIl0gOiB2b2lkIDAgOiBhO1xufVxudmFyIERlbGVnYXRlZEV2ZW50cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcbiAgXCJiZWZvcmVpbnB1dFwiLFxuICBcImNsaWNrXCIsXG4gIFwiZGJsY2xpY2tcIixcbiAgXCJjb250ZXh0bWVudVwiLFxuICBcImZvY3VzaW5cIixcbiAgXCJmb2N1c291dFwiLFxuICBcImlucHV0XCIsXG4gIFwia2V5ZG93blwiLFxuICBcImtleXVwXCIsXG4gIFwibW91c2Vkb3duXCIsXG4gIFwibW91c2Vtb3ZlXCIsXG4gIFwibW91c2VvdXRcIixcbiAgXCJtb3VzZW92ZXJcIixcbiAgXCJtb3VzZXVwXCIsXG4gIFwicG9pbnRlcmRvd25cIixcbiAgXCJwb2ludGVybW92ZVwiLFxuICBcInBvaW50ZXJvdXRcIixcbiAgXCJwb2ludGVyb3ZlclwiLFxuICBcInBvaW50ZXJ1cFwiLFxuICBcInRvdWNoZW5kXCIsXG4gIFwidG91Y2htb3ZlXCIsXG4gIFwidG91Y2hzdGFydFwiXG5dKTtcbnZhciBTVkdFbGVtZW50cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcbiAgXCJhbHRHbHlwaFwiLFxuICBcImFsdEdseXBoRGVmXCIsXG4gIFwiYWx0R2x5cGhJdGVtXCIsXG4gIFwiYW5pbWF0ZVwiLFxuICBcImFuaW1hdGVDb2xvclwiLFxuICBcImFuaW1hdGVNb3Rpb25cIixcbiAgXCJhbmltYXRlVHJhbnNmb3JtXCIsXG4gIFwiY2lyY2xlXCIsXG4gIFwiY2xpcFBhdGhcIixcbiAgXCJjb2xvci1wcm9maWxlXCIsXG4gIFwiY3Vyc29yXCIsXG4gIFwiZGVmc1wiLFxuICBcImRlc2NcIixcbiAgXCJlbGxpcHNlXCIsXG4gIFwiZmVCbGVuZFwiLFxuICBcImZlQ29sb3JNYXRyaXhcIixcbiAgXCJmZUNvbXBvbmVudFRyYW5zZmVyXCIsXG4gIFwiZmVDb21wb3NpdGVcIixcbiAgXCJmZUNvbnZvbHZlTWF0cml4XCIsXG4gIFwiZmVEaWZmdXNlTGlnaHRpbmdcIixcbiAgXCJmZURpc3BsYWNlbWVudE1hcFwiLFxuICBcImZlRGlzdGFudExpZ2h0XCIsXG4gIFwiZmVEcm9wU2hhZG93XCIsXG4gIFwiZmVGbG9vZFwiLFxuICBcImZlRnVuY0FcIixcbiAgXCJmZUZ1bmNCXCIsXG4gIFwiZmVGdW5jR1wiLFxuICBcImZlRnVuY1JcIixcbiAgXCJmZUdhdXNzaWFuQmx1clwiLFxuICBcImZlSW1hZ2VcIixcbiAgXCJmZU1lcmdlXCIsXG4gIFwiZmVNZXJnZU5vZGVcIixcbiAgXCJmZU1vcnBob2xvZ3lcIixcbiAgXCJmZU9mZnNldFwiLFxuICBcImZlUG9pbnRMaWdodFwiLFxuICBcImZlU3BlY3VsYXJMaWdodGluZ1wiLFxuICBcImZlU3BvdExpZ2h0XCIsXG4gIFwiZmVUaWxlXCIsXG4gIFwiZmVUdXJidWxlbmNlXCIsXG4gIFwiZmlsdGVyXCIsXG4gIFwiZm9udFwiLFxuICBcImZvbnQtZmFjZVwiLFxuICBcImZvbnQtZmFjZS1mb3JtYXRcIixcbiAgXCJmb250LWZhY2UtbmFtZVwiLFxuICBcImZvbnQtZmFjZS1zcmNcIixcbiAgXCJmb250LWZhY2UtdXJpXCIsXG4gIFwiZm9yZWlnbk9iamVjdFwiLFxuICBcImdcIixcbiAgXCJnbHlwaFwiLFxuICBcImdseXBoUmVmXCIsXG4gIFwiaGtlcm5cIixcbiAgXCJpbWFnZVwiLFxuICBcImxpbmVcIixcbiAgXCJsaW5lYXJHcmFkaWVudFwiLFxuICBcIm1hcmtlclwiLFxuICBcIm1hc2tcIixcbiAgXCJtZXRhZGF0YVwiLFxuICBcIm1pc3NpbmctZ2x5cGhcIixcbiAgXCJtcGF0aFwiLFxuICBcInBhdGhcIixcbiAgXCJwYXR0ZXJuXCIsXG4gIFwicG9seWdvblwiLFxuICBcInBvbHlsaW5lXCIsXG4gIFwicmFkaWFsR3JhZGllbnRcIixcbiAgXCJyZWN0XCIsXG4gIFwic2V0XCIsXG4gIFwic3RvcFwiLFxuICBcInN2Z1wiLFxuICBcInN3aXRjaFwiLFxuICBcInN5bWJvbFwiLFxuICBcInRleHRcIixcbiAgXCJ0ZXh0UGF0aFwiLFxuICBcInRyZWZcIixcbiAgXCJ0c3BhblwiLFxuICBcInVzZVwiLFxuICBcInZpZXdcIixcbiAgXCJ2a2VyblwiXG5dKTtcbnZhciBTVkdOYW1lc3BhY2UgPSB7XG4gIHhsaW5rOiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcbiAgeG1sOiBcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiXG59O1xuZnVuY3Rpb24gcmVjb25jaWxlQXJyYXlzKHBhcmVudE5vZGUsIGEsIGIpIHtcbiAgbGV0IGJMZW5ndGggPSBiLmxlbmd0aCwgYUVuZCA9IGEubGVuZ3RoLCBiRW5kID0gYkxlbmd0aCwgYVN0YXJ0ID0gMCwgYlN0YXJ0ID0gMCwgYWZ0ZXIgPSBhW2FFbmQgLSAxXS5uZXh0U2libGluZywgbWFwID0gbnVsbDtcbiAgd2hpbGUgKGFTdGFydCA8IGFFbmQgfHwgYlN0YXJ0IDwgYkVuZCkge1xuICAgIGlmIChhW2FTdGFydF0gPT09IGJbYlN0YXJ0XSkge1xuICAgICAgYVN0YXJ0Kys7XG4gICAgICBiU3RhcnQrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB3aGlsZSAoYVthRW5kIC0gMV0gPT09IGJbYkVuZCAtIDFdKSB7XG4gICAgICBhRW5kLS07XG4gICAgICBiRW5kLS07XG4gICAgfVxuICAgIGlmIChhRW5kID09PSBhU3RhcnQpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBiRW5kIDwgYkxlbmd0aCA/IGJTdGFydCA/IGJbYlN0YXJ0IC0gMV0ubmV4dFNpYmxpbmcgOiBiW2JFbmQgLSBiU3RhcnRdIDogYWZ0ZXI7XG4gICAgICB3aGlsZSAoYlN0YXJ0IDwgYkVuZCkgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYltiU3RhcnQrK10sIG5vZGUpO1xuICAgIH0gZWxzZSBpZiAoYkVuZCA9PT0gYlN0YXJ0KSB7XG4gICAgICB3aGlsZSAoYVN0YXJ0IDwgYUVuZCkge1xuICAgICAgICBpZiAoIW1hcCB8fCAhbWFwLmhhcyhhW2FTdGFydF0pKSBhW2FTdGFydF0ucmVtb3ZlKCk7XG4gICAgICAgIGFTdGFydCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYVthU3RhcnRdID09PSBiW2JFbmQgLSAxXSAmJiBiW2JTdGFydF0gPT09IGFbYUVuZCAtIDFdKSB7XG4gICAgICBjb25zdCBub2RlID0gYVstLWFFbmRdLm5leHRTaWJsaW5nO1xuICAgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYltiU3RhcnQrK10sIGFbYVN0YXJ0KytdLm5leHRTaWJsaW5nKTtcbiAgICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJbLS1iRW5kXSwgbm9kZSk7XG4gICAgICBhW2FFbmRdID0gYltiRW5kXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFtYXApIHtcbiAgICAgICAgbWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAgICAgbGV0IGkgPSBiU3RhcnQ7XG4gICAgICAgIHdoaWxlIChpIDwgYkVuZCkgbWFwLnNldChiW2ldLCBpKyspO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXggPSBtYXAuZ2V0KGFbYVN0YXJ0XSk7XG4gICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICBpZiAoYlN0YXJ0IDwgaW5kZXggJiYgaW5kZXggPCBiRW5kKSB7XG4gICAgICAgICAgbGV0IGkgPSBhU3RhcnQsIHNlcXVlbmNlID0gMSwgdDtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgYUVuZCAmJiBpIDwgYkVuZCkge1xuICAgICAgICAgICAgaWYgKCh0ID0gbWFwLmdldChhW2ldKSkgPT0gbnVsbCB8fCB0ICE9PSBpbmRleCArIHNlcXVlbmNlKSBicmVhaztcbiAgICAgICAgICAgIHNlcXVlbmNlKys7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzZXF1ZW5jZSA+IGluZGV4IC0gYlN0YXJ0KSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gYVthU3RhcnRdO1xuICAgICAgICAgICAgd2hpbGUgKGJTdGFydCA8IGluZGV4KSBwYXJlbnROb2RlLmluc2VydEJlZm9yZShiW2JTdGFydCsrXSwgbm9kZSk7XG4gICAgICAgICAgfSBlbHNlIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGJbYlN0YXJ0KytdLCBhW2FTdGFydCsrXSk7XG4gICAgICAgIH0gZWxzZSBhU3RhcnQrKztcbiAgICAgIH0gZWxzZSBhW2FTdGFydCsrXS5yZW1vdmUoKTtcbiAgICB9XG4gIH1cbn1cbnZhciAkJEVWRU5UUyA9IFwiXyREWF9ERUxFR0FURVwiO1xuZnVuY3Rpb24gcmVuZGVyKGNvZGUsIGVsZW1lbnQsIGluaXQsIG9wdGlvbnMgPSB7fSkge1xuICBsZXQgZGlzcG9zZXI7XG4gIGNyZWF0ZVJvb3QoKGRpc3Bvc2UyKSA9PiB7XG4gICAgZGlzcG9zZXIgPSBkaXNwb3NlMjtcbiAgICBlbGVtZW50ID09PSBkb2N1bWVudCA/IGNvZGUoKSA6IGluc2VydChlbGVtZW50LCBjb2RlKCksIGVsZW1lbnQuZmlyc3RDaGlsZCA/IG51bGwgOiB2b2lkIDAsIGluaXQpO1xuICB9LCBvcHRpb25zLm93bmVyKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBkaXNwb3NlcigpO1xuICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBcIlwiO1xuICB9O1xufVxuZnVuY3Rpb24gdGVtcGxhdGUoaHRtbCwgaXNJbXBvcnROb2RlLCBpc1NWRywgaXNNYXRoTUwpIHtcbiAgbGV0IG5vZGU7XG4gIGNvbnN0IGNyZWF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCB0ID0gaXNNYXRoTUwgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsIFwidGVtcGxhdGVcIikgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGVtcGxhdGVcIik7XG4gICAgdC5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiBpc1NWRyA/IHQuY29udGVudC5maXJzdENoaWxkLmZpcnN0Q2hpbGQgOiBpc01hdGhNTCA/IHQuZmlyc3RDaGlsZCA6IHQuY29udGVudC5maXJzdENoaWxkO1xuICB9O1xuICBjb25zdCBmbiA9IGlzSW1wb3J0Tm9kZSA/ICgpID0+IHVudHJhY2soKCkgPT4gZG9jdW1lbnQuaW1wb3J0Tm9kZShub2RlIHx8IChub2RlID0gY3JlYXRlKCkpLCB0cnVlKSkgOiAoKSA9PiAobm9kZSB8fCAobm9kZSA9IGNyZWF0ZSgpKSkuY2xvbmVOb2RlKHRydWUpO1xuICBmbi5jbG9uZU5vZGUgPSBmbjtcbiAgcmV0dXJuIGZuO1xufVxuZnVuY3Rpb24gZGVsZWdhdGVFdmVudHMoZXZlbnROYW1lcywgZG9jdW1lbnQyID0gd2luZG93LmRvY3VtZW50KSB7XG4gIGNvbnN0IGUgPSBkb2N1bWVudDJbJCRFVkVOVFNdIHx8IChkb2N1bWVudDJbJCRFVkVOVFNdID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSk7XG4gIGZvciAobGV0IGkgPSAwLCBsID0gZXZlbnROYW1lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb25zdCBuYW1lID0gZXZlbnROYW1lc1tpXTtcbiAgICBpZiAoIWUuaGFzKG5hbWUpKSB7XG4gICAgICBlLmFkZChuYW1lKTtcbiAgICAgIGRvY3VtZW50Mi5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGV2ZW50SGFuZGxlcik7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBjbGVhckRlbGVnYXRlZEV2ZW50cyhkb2N1bWVudDIgPSB3aW5kb3cuZG9jdW1lbnQpIHtcbiAgaWYgKGRvY3VtZW50MlskJEVWRU5UU10pIHtcbiAgICBmb3IgKGxldCBuYW1lIG9mIGRvY3VtZW50MlskJEVWRU5UU10ua2V5cygpKSBkb2N1bWVudDIucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBldmVudEhhbmRsZXIpO1xuICAgIGRlbGV0ZSBkb2N1bWVudDJbJCRFVkVOVFNdO1xuICB9XG59XG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGUobm9kZSwgbmFtZSwgdmFsdWUpIHtcbiAgaWYgKGlzSHlkcmF0aW5nKG5vZGUpKSByZXR1cm47XG4gIGlmICh2YWx1ZSA9PSBudWxsKSBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgZWxzZSBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG59XG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVOUyhub2RlLCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gIGlmIChpc0h5ZHJhdGluZyhub2RlKSkgcmV0dXJuO1xuICBpZiAodmFsdWUgPT0gbnVsbCkgbm9kZS5yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpO1xuICBlbHNlIG5vZGUuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG59XG5mdW5jdGlvbiBzZXRCb29sQXR0cmlidXRlKG5vZGUsIG5hbWUsIHZhbHVlKSB7XG4gIGlmIChpc0h5ZHJhdGluZyhub2RlKSkgcmV0dXJuO1xuICB2YWx1ZSA/IG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsIFwiXCIpIDogbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG59XG5mdW5jdGlvbiBjbGFzc05hbWUobm9kZSwgdmFsdWUpIHtcbiAgaWYgKGlzSHlkcmF0aW5nKG5vZGUpKSByZXR1cm47XG4gIGlmICh2YWx1ZSA9PSBudWxsKSBub2RlLnJlbW92ZUF0dHJpYnV0ZShcImNsYXNzXCIpO1xuICBlbHNlIG5vZGUuY2xhc3NOYW1lID0gdmFsdWU7XG59XG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKG5vZGUsIG5hbWUsIGhhbmRsZXIsIGRlbGVnYXRlKSB7XG4gIGlmIChkZWxlZ2F0ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGhhbmRsZXIpKSB7XG4gICAgICBub2RlW2AkJCR7bmFtZX1gXSA9IGhhbmRsZXJbMF07XG4gICAgICBub2RlW2AkJCR7bmFtZX1EYXRhYF0gPSBoYW5kbGVyWzFdO1xuICAgIH0gZWxzZSBub2RlW2AkJCR7bmFtZX1gXSA9IGhhbmRsZXI7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgIGNvbnN0IGhhbmRsZXJGbiA9IGhhbmRsZXJbMF07XG4gICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGhhbmRsZXJbMF0gPSAoZSkgPT4gaGFuZGxlckZuLmNhbGwobm9kZSwgaGFuZGxlclsxXSwgZSkpO1xuICB9IGVsc2Ugbm9kZS5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGhhbmRsZXIsIHR5cGVvZiBoYW5kbGVyICE9PSBcImZ1bmN0aW9uXCIgJiYgaGFuZGxlcik7XG59XG5mdW5jdGlvbiBjbGFzc0xpc3Qobm9kZSwgdmFsdWUsIHByZXYgPSB7fSkge1xuICBjb25zdCBjbGFzc0tleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSB8fCB7fSksIHByZXZLZXlzID0gT2JqZWN0LmtleXMocHJldik7XG4gIGxldCBpLCBsZW47XG4gIGZvciAoaSA9IDAsIGxlbiA9IHByZXZLZXlzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY29uc3Qga2V5ID0gcHJldktleXNbaV07XG4gICAgaWYgKCFrZXkgfHwga2V5ID09PSBcInVuZGVmaW5lZFwiIHx8IHZhbHVlW2tleV0pIGNvbnRpbnVlO1xuICAgIHRvZ2dsZUNsYXNzS2V5KG5vZGUsIGtleSwgZmFsc2UpO1xuICAgIGRlbGV0ZSBwcmV2W2tleV07XG4gIH1cbiAgZm9yIChpID0gMCwgbGVuID0gY2xhc3NLZXlzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY29uc3Qga2V5ID0gY2xhc3NLZXlzW2ldLCBjbGFzc1ZhbHVlID0gISF2YWx1ZVtrZXldO1xuICAgIGlmICgha2V5IHx8IGtleSA9PT0gXCJ1bmRlZmluZWRcIiB8fCBwcmV2W2tleV0gPT09IGNsYXNzVmFsdWUgfHwgIWNsYXNzVmFsdWUpIGNvbnRpbnVlO1xuICAgIHRvZ2dsZUNsYXNzS2V5KG5vZGUsIGtleSwgdHJ1ZSk7XG4gICAgcHJldltrZXldID0gY2xhc3NWYWx1ZTtcbiAgfVxuICByZXR1cm4gcHJldjtcbn1cbmZ1bmN0aW9uIHN0eWxlKG5vZGUsIHZhbHVlLCBwcmV2KSB7XG4gIGlmICghdmFsdWUpIHJldHVybiBwcmV2ID8gc2V0QXR0cmlidXRlKG5vZGUsIFwic3R5bGVcIikgOiB2YWx1ZTtcbiAgY29uc3Qgbm9kZVN0eWxlID0gbm9kZS5zdHlsZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIG5vZGVTdHlsZS5jc3NUZXh0ID0gdmFsdWU7XG4gIHR5cGVvZiBwcmV2ID09PSBcInN0cmluZ1wiICYmIChub2RlU3R5bGUuY3NzVGV4dCA9IHByZXYgPSB2b2lkIDApO1xuICBwcmV2IHx8IChwcmV2ID0ge30pO1xuICB2YWx1ZSB8fCAodmFsdWUgPSB7fSk7XG4gIGxldCB2LCBzO1xuICBmb3IgKHMgaW4gcHJldikge1xuICAgIHZhbHVlW3NdID09IG51bGwgJiYgbm9kZVN0eWxlLnJlbW92ZVByb3BlcnR5KHMpO1xuICAgIGRlbGV0ZSBwcmV2W3NdO1xuICB9XG4gIGZvciAocyBpbiB2YWx1ZSkge1xuICAgIHYgPSB2YWx1ZVtzXTtcbiAgICBpZiAodiAhPT0gcHJldltzXSkge1xuICAgICAgbm9kZVN0eWxlLnNldFByb3BlcnR5KHMsIHYpO1xuICAgICAgcHJldltzXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuZnVuY3Rpb24gc3ByZWFkKG5vZGUsIHByb3BzID0ge30sIGlzU1ZHLCBza2lwQ2hpbGRyZW4pIHtcbiAgY29uc3QgcHJldlByb3BzID0ge307XG4gIGlmICghc2tpcENoaWxkcmVuKSB7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KFxuICAgICAgKCkgPT4gcHJldlByb3BzLmNoaWxkcmVuID0gaW5zZXJ0RXhwcmVzc2lvbihub2RlLCBwcm9wcy5jaGlsZHJlbiwgcHJldlByb3BzLmNoaWxkcmVuKVxuICAgICk7XG4gIH1cbiAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IHR5cGVvZiBwcm9wcy5yZWYgPT09IFwiZnVuY3Rpb25cIiAmJiB1c2UocHJvcHMucmVmLCBub2RlKSk7XG4gIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBhc3NpZ24obm9kZSwgcHJvcHMsIGlzU1ZHLCB0cnVlLCBwcmV2UHJvcHMsIHRydWUpKTtcbiAgcmV0dXJuIHByZXZQcm9wcztcbn1cbmZ1bmN0aW9uIHVzZShmbiwgZWxlbWVudCwgYXJnKSB7XG4gIHJldHVybiB1bnRyYWNrKCgpID0+IGZuKGVsZW1lbnQsIGFyZykpO1xufVxuZnVuY3Rpb24gaW5zZXJ0KHBhcmVudCwgYWNjZXNzb3IsIG1hcmtlciwgaW5pdGlhbCkge1xuICBpZiAobWFya2VyICE9PSB2b2lkIDAgJiYgIWluaXRpYWwpIGluaXRpYWwgPSBbXTtcbiAgaWYgKHR5cGVvZiBhY2Nlc3NvciAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gaW5zZXJ0RXhwcmVzc2lvbihwYXJlbnQsIGFjY2Vzc29yLCBpbml0aWFsLCBtYXJrZXIpO1xuICBjcmVhdGVSZW5kZXJFZmZlY3QoKGN1cnJlbnQpID0+IGluc2VydEV4cHJlc3Npb24ocGFyZW50LCBhY2Nlc3NvcigpLCBjdXJyZW50LCBtYXJrZXIpLCBpbml0aWFsKTtcbn1cbmZ1bmN0aW9uIGFzc2lnbihub2RlLCBwcm9wcywgaXNTVkcsIHNraXBDaGlsZHJlbiwgcHJldlByb3BzID0ge30sIHNraXBSZWYgPSBmYWxzZSkge1xuICBwcm9wcyB8fCAocHJvcHMgPSB7fSk7XG4gIGZvciAoY29uc3QgcHJvcCBpbiBwcmV2UHJvcHMpIHtcbiAgICBpZiAoIShwcm9wIGluIHByb3BzKSkge1xuICAgICAgaWYgKHByb3AgPT09IFwiY2hpbGRyZW5cIikgY29udGludWU7XG4gICAgICBwcmV2UHJvcHNbcHJvcF0gPSBhc3NpZ25Qcm9wKG5vZGUsIHByb3AsIG51bGwsIHByZXZQcm9wc1twcm9wXSwgaXNTVkcsIHNraXBSZWYsIHByb3BzKTtcbiAgICB9XG4gIH1cbiAgZm9yIChjb25zdCBwcm9wIGluIHByb3BzKSB7XG4gICAgaWYgKHByb3AgPT09IFwiY2hpbGRyZW5cIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gcHJvcHNbcHJvcF07XG4gICAgcHJldlByb3BzW3Byb3BdID0gYXNzaWduUHJvcChub2RlLCBwcm9wLCB2YWx1ZSwgcHJldlByb3BzW3Byb3BdLCBpc1NWRywgc2tpcFJlZiwgcHJvcHMpO1xuICB9XG59XG5mdW5jdGlvbiBnZXROZXh0RWxlbWVudCh0ZW1wbGF0ZTIpIHtcbiAgbGV0IG5vZGUsIGtleSwgaHlkcmF0aW5nID0gaXNIeWRyYXRpbmcoKTtcbiAgaWYgKCFoeWRyYXRpbmcgfHwgIShub2RlID0gc2hhcmVkQ29uZmlnLnJlZ2lzdHJ5LmdldChrZXkgPSBnZXRIeWRyYXRpb25LZXkoKSkpKSB7XG4gICAgcmV0dXJuIHRlbXBsYXRlMigpO1xuICB9XG4gIGlmIChzaGFyZWRDb25maWcuY29tcGxldGVkKSBzaGFyZWRDb25maWcuY29tcGxldGVkLmFkZChub2RlKTtcbiAgc2hhcmVkQ29uZmlnLnJlZ2lzdHJ5LmRlbGV0ZShrZXkpO1xuICByZXR1cm4gbm9kZTtcbn1cbmZ1bmN0aW9uIGlzSHlkcmF0aW5nKG5vZGUpIHtcbiAgcmV0dXJuICEhc2hhcmVkQ29uZmlnLmNvbnRleHQgJiYgIXNoYXJlZENvbmZpZy5kb25lICYmICghbm9kZSB8fCBub2RlLmlzQ29ubmVjdGVkKTtcbn1cbmZ1bmN0aW9uIHRvUHJvcGVydHlOYW1lKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tKFthLXpdKS9nLCAoXywgdykgPT4gdy50b1VwcGVyQ2FzZSgpKTtcbn1cbmZ1bmN0aW9uIHRvZ2dsZUNsYXNzS2V5KG5vZGUsIGtleSwgdmFsdWUpIHtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGtleS50cmltKCkuc3BsaXQoL1xccysvKTtcbiAgZm9yIChsZXQgaSA9IDAsIG5hbWVMZW4gPSBjbGFzc05hbWVzLmxlbmd0aDsgaSA8IG5hbWVMZW47IGkrKylcbiAgICBub2RlLmNsYXNzTGlzdC50b2dnbGUoY2xhc3NOYW1lc1tpXSwgdmFsdWUpO1xufVxuZnVuY3Rpb24gYXNzaWduUHJvcChub2RlLCBwcm9wLCB2YWx1ZSwgcHJldiwgaXNTVkcsIHNraXBSZWYsIHByb3BzKSB7XG4gIGxldCBpc0NFLCBpc1Byb3AsIGlzQ2hpbGRQcm9wLCBwcm9wQWxpYXMsIGZvcmNlUHJvcDtcbiAgaWYgKHByb3AgPT09IFwic3R5bGVcIikgcmV0dXJuIHN0eWxlKG5vZGUsIHZhbHVlLCBwcmV2KTtcbiAgaWYgKHByb3AgPT09IFwiY2xhc3NMaXN0XCIpIHJldHVybiBjbGFzc0xpc3Qobm9kZSwgdmFsdWUsIHByZXYpO1xuICBpZiAodmFsdWUgPT09IHByZXYpIHJldHVybiBwcmV2O1xuICBpZiAocHJvcCA9PT0gXCJyZWZcIikge1xuICAgIGlmICghc2tpcFJlZikgdmFsdWUobm9kZSk7XG4gIH0gZWxzZSBpZiAocHJvcC5zbGljZSgwLCAzKSA9PT0gXCJvbjpcIikge1xuICAgIGNvbnN0IGUgPSBwcm9wLnNsaWNlKDMpO1xuICAgIHByZXYgJiYgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGUsIHByZXYsIHR5cGVvZiBwcmV2ICE9PSBcImZ1bmN0aW9uXCIgJiYgcHJldik7XG4gICAgdmFsdWUgJiYgbm9kZS5hZGRFdmVudExpc3RlbmVyKGUsIHZhbHVlLCB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIiAmJiB2YWx1ZSk7XG4gIH0gZWxzZSBpZiAocHJvcC5zbGljZSgwLCAxMCkgPT09IFwib25jYXB0dXJlOlwiKSB7XG4gICAgY29uc3QgZSA9IHByb3Auc2xpY2UoMTApO1xuICAgIHByZXYgJiYgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGUsIHByZXYsIHRydWUpO1xuICAgIHZhbHVlICYmIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihlLCB2YWx1ZSwgdHJ1ZSk7XG4gIH0gZWxzZSBpZiAocHJvcC5zbGljZSgwLCAyKSA9PT0gXCJvblwiKSB7XG4gICAgY29uc3QgbmFtZSA9IHByb3Auc2xpY2UoMikudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBkZWxlZ2F0ZSA9IERlbGVnYXRlZEV2ZW50cy5oYXMobmFtZSk7XG4gICAgaWYgKCFkZWxlZ2F0ZSAmJiBwcmV2KSB7XG4gICAgICBjb25zdCBoID0gQXJyYXkuaXNBcnJheShwcmV2KSA/IHByZXZbMF0gOiBwcmV2O1xuICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGgpO1xuICAgIH1cbiAgICBpZiAoZGVsZWdhdGUgfHwgdmFsdWUpIHtcbiAgICAgIGFkZEV2ZW50TGlzdGVuZXIobm9kZSwgbmFtZSwgdmFsdWUsIGRlbGVnYXRlKTtcbiAgICAgIGRlbGVnYXRlICYmIGRlbGVnYXRlRXZlbnRzKFtuYW1lXSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb3Auc2xpY2UoMCwgNSkgPT09IFwiYXR0cjpcIikge1xuICAgIHNldEF0dHJpYnV0ZShub2RlLCBwcm9wLnNsaWNlKDUpLCB2YWx1ZSk7XG4gIH0gZWxzZSBpZiAocHJvcC5zbGljZSgwLCA1KSA9PT0gXCJib29sOlwiKSB7XG4gICAgc2V0Qm9vbEF0dHJpYnV0ZShub2RlLCBwcm9wLnNsaWNlKDUpLCB2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoKGZvcmNlUHJvcCA9IHByb3Auc2xpY2UoMCwgNSkgPT09IFwicHJvcDpcIikgfHwgKGlzQ2hpbGRQcm9wID0gQ2hpbGRQcm9wZXJ0aWVzLmhhcyhwcm9wKSkgfHwgIWlzU1ZHICYmICgocHJvcEFsaWFzID0gZ2V0UHJvcEFsaWFzKHByb3AsIG5vZGUudGFnTmFtZSkpIHx8IChpc1Byb3AgPSBQcm9wZXJ0aWVzLmhhcyhwcm9wKSkpIHx8IChpc0NFID0gbm9kZS5ub2RlTmFtZS5pbmNsdWRlcyhcIi1cIikgfHwgXCJpc1wiIGluIHByb3BzKSkge1xuICAgIGlmIChmb3JjZVByb3ApIHtcbiAgICAgIHByb3AgPSBwcm9wLnNsaWNlKDUpO1xuICAgICAgaXNQcm9wID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGlzSHlkcmF0aW5nKG5vZGUpKSByZXR1cm4gdmFsdWU7XG4gICAgaWYgKHByb3AgPT09IFwiY2xhc3NcIiB8fCBwcm9wID09PSBcImNsYXNzTmFtZVwiKSBjbGFzc05hbWUobm9kZSwgdmFsdWUpO1xuICAgIGVsc2UgaWYgKGlzQ0UgJiYgIWlzUHJvcCAmJiAhaXNDaGlsZFByb3ApIG5vZGVbdG9Qcm9wZXJ0eU5hbWUocHJvcCldID0gdmFsdWU7XG4gICAgZWxzZSBub2RlW3Byb3BBbGlhcyB8fCBwcm9wXSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG5zID0gaXNTVkcgJiYgcHJvcC5pbmRleE9mKFwiOlwiKSA+IC0xICYmIFNWR05hbWVzcGFjZVtwcm9wLnNwbGl0KFwiOlwiKVswXV07XG4gICAgaWYgKG5zKSBzZXRBdHRyaWJ1dGVOUyhub2RlLCBucywgcHJvcCwgdmFsdWUpO1xuICAgIGVsc2Ugc2V0QXR0cmlidXRlKG5vZGUsIEFsaWFzZXNbcHJvcF0gfHwgcHJvcCwgdmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGV2ZW50SGFuZGxlcihlKSB7XG4gIGlmIChzaGFyZWRDb25maWcucmVnaXN0cnkgJiYgc2hhcmVkQ29uZmlnLmV2ZW50cykge1xuICAgIGlmIChzaGFyZWRDb25maWcuZXZlbnRzLmZpbmQoKFtlbCwgZXZdKSA9PiBldiA9PT0gZSkpIHJldHVybjtcbiAgfVxuICBsZXQgbm9kZSA9IGUudGFyZ2V0O1xuICBjb25zdCBrZXkgPSBgJCQke2UudHlwZX1gO1xuICBjb25zdCBvcmlUYXJnZXQgPSBlLnRhcmdldDtcbiAgY29uc3Qgb3JpQ3VycmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldDtcbiAgY29uc3QgcmV0YXJnZXQgPSAodmFsdWUpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInRhcmdldFwiLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIHZhbHVlXG4gIH0pO1xuICBjb25zdCBoYW5kbGVOb2RlID0gKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZXIgPSBub2RlW2tleV07XG4gICAgaWYgKGhhbmRsZXIgJiYgIW5vZGUuZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBub2RlW2Ake2tleX1EYXRhYF07XG4gICAgICBkYXRhICE9PSB2b2lkIDAgPyBoYW5kbGVyLmNhbGwobm9kZSwgZGF0YSwgZSkgOiBoYW5kbGVyLmNhbGwobm9kZSwgZSk7XG4gICAgICBpZiAoZS5jYW5jZWxCdWJibGUpIHJldHVybjtcbiAgICB9XG4gICAgbm9kZS5ob3N0ICYmIHR5cGVvZiBub2RlLmhvc3QgIT09IFwic3RyaW5nXCIgJiYgIW5vZGUuaG9zdC5fJGhvc3QgJiYgbm9kZS5jb250YWlucyhlLnRhcmdldCkgJiYgcmV0YXJnZXQobm9kZS5ob3N0KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgY29uc3Qgd2Fsa1VwVHJlZSA9ICgpID0+IHtcbiAgICB3aGlsZSAoaGFuZGxlTm9kZSgpICYmIChub2RlID0gbm9kZS5fJGhvc3QgfHwgbm9kZS5wYXJlbnROb2RlIHx8IG5vZGUuaG9zdCkpIDtcbiAgfTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiY3VycmVudFRhcmdldFwiLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBub2RlIHx8IGRvY3VtZW50O1xuICAgIH1cbiAgfSk7XG4gIGlmIChzaGFyZWRDb25maWcucmVnaXN0cnkgJiYgIXNoYXJlZENvbmZpZy5kb25lKSBzaGFyZWRDb25maWcuZG9uZSA9IF8kSFkuZG9uZSA9IHRydWU7XG4gIGlmIChlLmNvbXBvc2VkUGF0aCkge1xuICAgIGNvbnN0IHBhdGggPSBlLmNvbXBvc2VkUGF0aCgpO1xuICAgIHJldGFyZ2V0KHBhdGhbMF0pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgIG5vZGUgPSBwYXRoW2ldO1xuICAgICAgaWYgKCFoYW5kbGVOb2RlKCkpIGJyZWFrO1xuICAgICAgaWYgKG5vZGUuXyRob3N0KSB7XG4gICAgICAgIG5vZGUgPSBub2RlLl8kaG9zdDtcbiAgICAgICAgd2Fsa1VwVHJlZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnBhcmVudE5vZGUgPT09IG9yaUN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Ugd2Fsa1VwVHJlZSgpO1xuICByZXRhcmdldChvcmlUYXJnZXQpO1xufVxuZnVuY3Rpb24gaW5zZXJ0RXhwcmVzc2lvbihwYXJlbnQsIHZhbHVlLCBjdXJyZW50LCBtYXJrZXIsIHVud3JhcEFycmF5KSB7XG4gIGNvbnN0IGh5ZHJhdGluZyA9IGlzSHlkcmF0aW5nKHBhcmVudCk7XG4gIGlmIChoeWRyYXRpbmcpIHtcbiAgICAhY3VycmVudCAmJiAoY3VycmVudCA9IFsuLi5wYXJlbnQuY2hpbGROb2Rlc10pO1xuICAgIGxldCBjbGVhbmVkID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBub2RlID0gY3VycmVudFtpXTtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUuZGF0YS5zbGljZSgwLCAyKSA9PT0gXCIhJFwiKSBub2RlLnJlbW92ZSgpO1xuICAgICAgZWxzZSBjbGVhbmVkLnB1c2gobm9kZSk7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjbGVhbmVkO1xuICB9XG4gIHdoaWxlICh0eXBlb2YgY3VycmVudCA9PT0gXCJmdW5jdGlvblwiKSBjdXJyZW50ID0gY3VycmVudCgpO1xuICBpZiAodmFsdWUgPT09IGN1cnJlbnQpIHJldHVybiBjdXJyZW50O1xuICBjb25zdCB0ID0gdHlwZW9mIHZhbHVlLCBtdWx0aSA9IG1hcmtlciAhPT0gdm9pZCAwO1xuICBwYXJlbnQgPSBtdWx0aSAmJiBjdXJyZW50WzBdICYmIGN1cnJlbnRbMF0ucGFyZW50Tm9kZSB8fCBwYXJlbnQ7XG4gIGlmICh0ID09PSBcInN0cmluZ1wiIHx8IHQgPT09IFwibnVtYmVyXCIpIHtcbiAgICBpZiAoaHlkcmF0aW5nKSByZXR1cm4gY3VycmVudDtcbiAgICBpZiAodCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgaWYgKHZhbHVlID09PSBjdXJyZW50KSByZXR1cm4gY3VycmVudDtcbiAgICB9XG4gICAgaWYgKG11bHRpKSB7XG4gICAgICBsZXQgbm9kZSA9IGN1cnJlbnRbMF07XG4gICAgICBpZiAobm9kZSAmJiBub2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgIG5vZGUuZGF0YSAhPT0gdmFsdWUgJiYgKG5vZGUuZGF0YSA9IHZhbHVlKTtcbiAgICAgIH0gZWxzZSBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgICAgY3VycmVudCA9IGNsZWFuQ2hpbGRyZW4ocGFyZW50LCBjdXJyZW50LCBtYXJrZXIsIG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VycmVudCAhPT0gXCJcIiAmJiB0eXBlb2YgY3VycmVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBjdXJyZW50ID0gcGFyZW50LmZpcnN0Q2hpbGQuZGF0YSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIGN1cnJlbnQgPSBwYXJlbnQudGV4dENvbnRlbnQgPSB2YWx1ZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodmFsdWUgPT0gbnVsbCB8fCB0ID09PSBcImJvb2xlYW5cIikge1xuICAgIGlmIChoeWRyYXRpbmcpIHJldHVybiBjdXJyZW50O1xuICAgIGN1cnJlbnQgPSBjbGVhbkNoaWxkcmVuKHBhcmVudCwgY3VycmVudCwgbWFya2VyKTtcbiAgfSBlbHNlIGlmICh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4ge1xuICAgICAgbGV0IHYgPSB2YWx1ZSgpO1xuICAgICAgd2hpbGUgKHR5cGVvZiB2ID09PSBcImZ1bmN0aW9uXCIpIHYgPSB2KCk7XG4gICAgICBjdXJyZW50ID0gaW5zZXJ0RXhwcmVzc2lvbihwYXJlbnQsIHYsIGN1cnJlbnQsIG1hcmtlcik7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IGN1cnJlbnQ7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBjb25zdCBhcnJheSA9IFtdO1xuICAgIGNvbnN0IGN1cnJlbnRBcnJheSA9IGN1cnJlbnQgJiYgQXJyYXkuaXNBcnJheShjdXJyZW50KTtcbiAgICBpZiAobm9ybWFsaXplSW5jb21pbmdBcnJheShhcnJheSwgdmFsdWUsIGN1cnJlbnQsIHVud3JhcEFycmF5KSkge1xuICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGN1cnJlbnQgPSBpbnNlcnRFeHByZXNzaW9uKHBhcmVudCwgYXJyYXksIGN1cnJlbnQsIG1hcmtlciwgdHJ1ZSkpO1xuICAgICAgcmV0dXJuICgpID0+IGN1cnJlbnQ7XG4gICAgfVxuICAgIGlmIChoeWRyYXRpbmcpIHtcbiAgICAgIGlmICghYXJyYXkubGVuZ3RoKSByZXR1cm4gY3VycmVudDtcbiAgICAgIGlmIChtYXJrZXIgPT09IHZvaWQgMCkgcmV0dXJuIGN1cnJlbnQgPSBbLi4ucGFyZW50LmNoaWxkTm9kZXNdO1xuICAgICAgbGV0IG5vZGUgPSBhcnJheVswXTtcbiAgICAgIGlmIChub2RlLnBhcmVudE5vZGUgIT09IHBhcmVudCkgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICBjb25zdCBub2RlcyA9IFtub2RlXTtcbiAgICAgIHdoaWxlICgobm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpICE9PSBtYXJrZXIpIG5vZGVzLnB1c2gobm9kZSk7XG4gICAgICByZXR1cm4gY3VycmVudCA9IG5vZGVzO1xuICAgIH1cbiAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICBjdXJyZW50ID0gY2xlYW5DaGlsZHJlbihwYXJlbnQsIGN1cnJlbnQsIG1hcmtlcik7XG4gICAgICBpZiAobXVsdGkpIHJldHVybiBjdXJyZW50O1xuICAgIH0gZWxzZSBpZiAoY3VycmVudEFycmF5KSB7XG4gICAgICBpZiAoY3VycmVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgYXBwZW5kTm9kZXMocGFyZW50LCBhcnJheSwgbWFya2VyKTtcbiAgICAgIH0gZWxzZSByZWNvbmNpbGVBcnJheXMocGFyZW50LCBjdXJyZW50LCBhcnJheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnQgJiYgY2xlYW5DaGlsZHJlbihwYXJlbnQpO1xuICAgICAgYXBwZW5kTm9kZXMocGFyZW50LCBhcnJheSk7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBhcnJheTtcbiAgfSBlbHNlIGlmICh2YWx1ZS5ub2RlVHlwZSkge1xuICAgIGlmIChoeWRyYXRpbmcgJiYgdmFsdWUucGFyZW50Tm9kZSkgcmV0dXJuIGN1cnJlbnQgPSBtdWx0aSA/IFt2YWx1ZV0gOiB2YWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuICAgICAgaWYgKG11bHRpKSByZXR1cm4gY3VycmVudCA9IGNsZWFuQ2hpbGRyZW4ocGFyZW50LCBjdXJyZW50LCBtYXJrZXIsIHZhbHVlKTtcbiAgICAgIGNsZWFuQ2hpbGRyZW4ocGFyZW50LCBjdXJyZW50LCBudWxsLCB2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChjdXJyZW50ID09IG51bGwgfHwgY3VycmVudCA9PT0gXCJcIiB8fCAhcGFyZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHBhcmVudC5hcHBlbmRDaGlsZCh2YWx1ZSk7XG4gICAgfSBlbHNlIHBhcmVudC5yZXBsYWNlQ2hpbGQodmFsdWUsIHBhcmVudC5maXJzdENoaWxkKTtcbiAgICBjdXJyZW50ID0gdmFsdWU7XG4gIH0gZWxzZSA7XG4gIHJldHVybiBjdXJyZW50O1xufVxuZnVuY3Rpb24gbm9ybWFsaXplSW5jb21pbmdBcnJheShub3JtYWxpemVkLCBhcnJheSwgY3VycmVudCwgdW53cmFwKSB7XG4gIGxldCBkeW5hbWljID0gZmFsc2U7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGxldCBpdGVtID0gYXJyYXlbaV0sIHByZXYgPSBjdXJyZW50ICYmIGN1cnJlbnRbbm9ybWFsaXplZC5sZW5ndGhdLCB0O1xuICAgIGlmIChpdGVtID09IG51bGwgfHwgaXRlbSA9PT0gdHJ1ZSB8fCBpdGVtID09PSBmYWxzZSkgO1xuICAgIGVsc2UgaWYgKCh0ID0gdHlwZW9mIGl0ZW0pID09PSBcIm9iamVjdFwiICYmIGl0ZW0ubm9kZVR5cGUpIHtcbiAgICAgIG5vcm1hbGl6ZWQucHVzaChpdGVtKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIGR5bmFtaWMgPSBub3JtYWxpemVJbmNvbWluZ0FycmF5KG5vcm1hbGl6ZWQsIGl0ZW0sIHByZXYpIHx8IGR5bmFtaWM7XG4gICAgfSBlbHNlIGlmICh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGlmICh1bndyYXApIHtcbiAgICAgICAgd2hpbGUgKHR5cGVvZiBpdGVtID09PSBcImZ1bmN0aW9uXCIpIGl0ZW0gPSBpdGVtKCk7XG4gICAgICAgIGR5bmFtaWMgPSBub3JtYWxpemVJbmNvbWluZ0FycmF5KFxuICAgICAgICAgIG5vcm1hbGl6ZWQsXG4gICAgICAgICAgQXJyYXkuaXNBcnJheShpdGVtKSA/IGl0ZW0gOiBbaXRlbV0sXG4gICAgICAgICAgQXJyYXkuaXNBcnJheShwcmV2KSA/IHByZXYgOiBbcHJldl1cbiAgICAgICAgKSB8fCBkeW5hbWljO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9ybWFsaXplZC5wdXNoKGl0ZW0pO1xuICAgICAgICBkeW5hbWljID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFsdWUgPSBTdHJpbmcoaXRlbSk7XG4gICAgICBpZiAocHJldiAmJiBwcmV2Lm5vZGVUeXBlID09PSAzICYmIHByZXYuZGF0YSA9PT0gdmFsdWUpIG5vcm1hbGl6ZWQucHVzaChwcmV2KTtcbiAgICAgIGVsc2Ugbm9ybWFsaXplZC5wdXNoKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHZhbHVlKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkeW5hbWljO1xufVxuZnVuY3Rpb24gYXBwZW5kTm9kZXMocGFyZW50LCBhcnJheSwgbWFya2VyID0gbnVsbCkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHBhcmVudC5pbnNlcnRCZWZvcmUoYXJyYXlbaV0sIG1hcmtlcik7XG59XG5mdW5jdGlvbiBjbGVhbkNoaWxkcmVuKHBhcmVudCwgY3VycmVudCwgbWFya2VyLCByZXBsYWNlbWVudCkge1xuICBpZiAobWFya2VyID09PSB2b2lkIDApIHJldHVybiBwYXJlbnQudGV4dENvbnRlbnQgPSBcIlwiO1xuICBjb25zdCBub2RlID0gcmVwbGFjZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcIik7XG4gIGlmIChjdXJyZW50Lmxlbmd0aCkge1xuICAgIGxldCBpbnNlcnRlZCA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSBjdXJyZW50Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBlbCA9IGN1cnJlbnRbaV07XG4gICAgICBpZiAobm9kZSAhPT0gZWwpIHtcbiAgICAgICAgY29uc3QgaXNQYXJlbnQgPSBlbC5wYXJlbnROb2RlID09PSBwYXJlbnQ7XG4gICAgICAgIGlmICghaW5zZXJ0ZWQgJiYgIWkpXG4gICAgICAgICAgaXNQYXJlbnQgPyBwYXJlbnQucmVwbGFjZUNoaWxkKG5vZGUsIGVsKSA6IHBhcmVudC5pbnNlcnRCZWZvcmUobm9kZSwgbWFya2VyKTtcbiAgICAgICAgZWxzZSBpc1BhcmVudCAmJiBlbC5yZW1vdmUoKTtcbiAgICAgIH0gZWxzZSBpbnNlcnRlZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2UgcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCBtYXJrZXIpO1xuICByZXR1cm4gW25vZGVdO1xufVxuZnVuY3Rpb24gZ2V0SHlkcmF0aW9uS2V5KCkge1xuICByZXR1cm4gc2hhcmVkQ29uZmlnLmdldE5leHRDb250ZXh0SWQoKTtcbn1cbnZhciBpc1NlcnZlciA9IGZhbHNlO1xudmFyIFNWR19OQU1FU1BBQ0UgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7XG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZ05hbWUsIGlzU1ZHID0gZmFsc2UpIHtcbiAgcmV0dXJuIGlzU1ZHID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OQU1FU1BBQ0UsIHRhZ05hbWUpIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcbn1cbmZ1bmN0aW9uIFBvcnRhbChwcm9wcykge1xuICBjb25zdCB7IHVzZVNoYWRvdyB9ID0gcHJvcHMsIG1hcmtlciA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpLCBtb3VudCA9ICgpID0+IHByb3BzLm1vdW50IHx8IGRvY3VtZW50LmJvZHksIG93bmVyID0gZ2V0T3duZXIoKTtcbiAgbGV0IGNvbnRlbnQ7XG4gIGxldCBoeWRyYXRpbmcgPSAhIXNoYXJlZENvbmZpZy5jb250ZXh0O1xuICBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKGh5ZHJhdGluZykgZ2V0T3duZXIoKS51c2VyID0gaHlkcmF0aW5nID0gZmFsc2U7XG4gICAgICBjb250ZW50IHx8IChjb250ZW50ID0gcnVuV2l0aE93bmVyKG93bmVyLCAoKSA9PiBjcmVhdGVNZW1vKCgpID0+IHByb3BzLmNoaWxkcmVuKSkpO1xuICAgICAgY29uc3QgZWwgPSBtb3VudCgpO1xuICAgICAgaWYgKGVsIGluc3RhbmNlb2YgSFRNTEhlYWRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IFtjbGVhbiwgc2V0Q2xlYW5dID0gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbiAgICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHNldENsZWFuKHRydWUpO1xuICAgICAgICBjcmVhdGVSb290KChkaXNwb3NlMikgPT4gaW5zZXJ0KGVsLCAoKSA9PiAhY2xlYW4oKSA/IGNvbnRlbnQoKSA6IGRpc3Bvc2UyKCksIG51bGwpKTtcbiAgICAgICAgb25DbGVhbnVwKGNsZWFudXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gY3JlYXRlRWxlbWVudChwcm9wcy5pc1NWRyA/IFwiZ1wiIDogXCJkaXZcIiwgcHJvcHMuaXNTVkcpLCByZW5kZXJSb290ID0gdXNlU2hhZG93ICYmIGNvbnRhaW5lci5hdHRhY2hTaGFkb3cgPyBjb250YWluZXIuYXR0YWNoU2hhZG93KHtcbiAgICAgICAgICBtb2RlOiBcIm9wZW5cIlxuICAgICAgICB9KSA6IGNvbnRhaW5lcjtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnRhaW5lciwgXCJfJGhvc3RcIiwge1xuICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXJrZXIucGFyZW50Tm9kZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaW5zZXJ0KHJlbmRlclJvb3QsIGNvbnRlbnQpO1xuICAgICAgICBlbC5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgICAgICBwcm9wcy5yZWYgJiYgcHJvcHMucmVmKGNvbnRhaW5lcik7XG4gICAgICAgIG9uQ2xlYW51cCgoKSA9PiBlbC5yZW1vdmVDaGlsZChjb250YWluZXIpKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHZvaWQgMCxcbiAgICB7XG4gICAgICByZW5kZXI6ICFoeWRyYXRpbmdcbiAgICB9XG4gICk7XG4gIHJldHVybiBtYXJrZXI7XG59XG5mdW5jdGlvbiBjcmVhdGVEeW5hbWljKGNvbXBvbmVudCwgcHJvcHMpIHtcbiAgY29uc3QgY2FjaGVkID0gY3JlYXRlTWVtbyhjb21wb25lbnQpO1xuICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgY29tcG9uZW50MiA9IGNhY2hlZCgpO1xuICAgIHN3aXRjaCAodHlwZW9mIGNvbXBvbmVudDIpIHtcbiAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICByZXR1cm4gdW50cmFjaygoKSA9PiBjb21wb25lbnQyKHByb3BzKSk7XG4gICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgIGNvbnN0IGlzU3ZnID0gU1ZHRWxlbWVudHMuaGFzKGNvbXBvbmVudDIpO1xuICAgICAgICBjb25zdCBlbCA9IHNoYXJlZENvbmZpZy5jb250ZXh0ID8gZ2V0TmV4dEVsZW1lbnQoKSA6IGNyZWF0ZUVsZW1lbnQoY29tcG9uZW50MiwgaXNTdmcpO1xuICAgICAgICBzcHJlYWQoZWwsIHByb3BzLCBpc1N2Zyk7XG4gICAgICAgIHJldHVybiBlbDtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gRHluYW1pYyhwcm9wcykge1xuICBjb25zdCBbLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhwcm9wcywgW1wiY29tcG9uZW50XCJdKTtcbiAgcmV0dXJuIGNyZWF0ZUR5bmFtaWMoKCkgPT4gcHJvcHMuY29tcG9uZW50LCBvdGhlcnMpO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3VwZXJqc29uQDIuMi4xL25vZGVfbW9kdWxlcy9zdXBlcmpzb24vZGlzdC9kb3VibGUtaW5kZXhlZC1rdi5qc1xudmFyIERvdWJsZUluZGV4ZWRLViA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5rZXlUb1ZhbHVlID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICB0aGlzLnZhbHVlVG9LZXkgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICB9XG4gIHNldChrZXksIHZhbHVlKSB7XG4gICAgdGhpcy5rZXlUb1ZhbHVlLnNldChrZXksIHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlVG9LZXkuc2V0KHZhbHVlLCBrZXkpO1xuICB9XG4gIGdldEJ5S2V5KGtleSkge1xuICAgIHJldHVybiB0aGlzLmtleVRvVmFsdWUuZ2V0KGtleSk7XG4gIH1cbiAgZ2V0QnlWYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlVG9LZXkuZ2V0KHZhbHVlKTtcbiAgfVxuICBjbGVhcigpIHtcbiAgICB0aGlzLmtleVRvVmFsdWUuY2xlYXIoKTtcbiAgICB0aGlzLnZhbHVlVG9LZXkuY2xlYXIoKTtcbiAgfVxufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N1cGVyanNvbkAyLjIuMS9ub2RlX21vZHVsZXMvc3VwZXJqc29uL2Rpc3QvcmVnaXN0cnkuanNcbnZhciBSZWdpc3RyeSA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IoZ2VuZXJhdGVJZGVudGlmaWVyKSB7XG4gICAgdGhpcy5nZW5lcmF0ZUlkZW50aWZpZXIgPSBnZW5lcmF0ZUlkZW50aWZpZXI7XG4gICAgdGhpcy5rdiA9IG5ldyBEb3VibGVJbmRleGVkS1YoKTtcbiAgfVxuICByZWdpc3Rlcih2YWx1ZSwgaWRlbnRpZmllcikge1xuICAgIGlmICh0aGlzLmt2LmdldEJ5VmFsdWUodmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaWRlbnRpZmllcikge1xuICAgICAgaWRlbnRpZmllciA9IHRoaXMuZ2VuZXJhdGVJZGVudGlmaWVyKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5rdi5zZXQoaWRlbnRpZmllciwgdmFsdWUpO1xuICB9XG4gIGNsZWFyKCkge1xuICAgIHRoaXMua3YuY2xlYXIoKTtcbiAgfVxuICBnZXRJZGVudGlmaWVyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMua3YuZ2V0QnlWYWx1ZSh2YWx1ZSk7XG4gIH1cbiAgZ2V0VmFsdWUoaWRlbnRpZmllcikge1xuICAgIHJldHVybiB0aGlzLmt2LmdldEJ5S2V5KGlkZW50aWZpZXIpO1xuICB9XG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3VwZXJqc29uQDIuMi4xL25vZGVfbW9kdWxlcy9zdXBlcmpzb24vZGlzdC9jbGFzcy1yZWdpc3RyeS5qc1xudmFyIENsYXNzUmVnaXN0cnkgPSBjbGFzcyBleHRlbmRzIFJlZ2lzdHJ5IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKGMpID0+IGMubmFtZSk7XG4gICAgdGhpcy5jbGFzc1RvQWxsb3dlZFByb3BzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgfVxuICByZWdpc3Rlcih2YWx1ZSwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJvYmplY3RcIikge1xuICAgICAgaWYgKG9wdGlvbnMuYWxsb3dQcm9wcykge1xuICAgICAgICB0aGlzLmNsYXNzVG9BbGxvd2VkUHJvcHMuc2V0KHZhbHVlLCBvcHRpb25zLmFsbG93UHJvcHMpO1xuICAgICAgfVxuICAgICAgc3VwZXIucmVnaXN0ZXIodmFsdWUsIG9wdGlvbnMuaWRlbnRpZmllcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLnJlZ2lzdGVyKHZhbHVlLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbiAgZ2V0QWxsb3dlZFByb3BzKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xhc3NUb0FsbG93ZWRQcm9wcy5nZXQodmFsdWUpO1xuICB9XG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3VwZXJqc29uQDIuMi4xL25vZGVfbW9kdWxlcy9zdXBlcmpzb24vZGlzdC91dGlsLmpzXG5mdW5jdGlvbiB2YWx1ZXNPZk9iaihyZWNvcmQpIHtcbiAgaWYgKFwidmFsdWVzXCIgaW4gT2JqZWN0KSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVjb3JkKTtcbiAgfVxuICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgZm9yIChjb25zdCBrZXkgaW4gcmVjb3JkKSB7XG4gICAgaWYgKHJlY29yZC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICB2YWx1ZXMucHVzaChyZWNvcmRba2V5XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZXM7XG59XG5mdW5jdGlvbiBmaW5kKHJlY29yZCwgcHJlZGljYXRlKSB7XG4gIGNvbnN0IHZhbHVlcyA9IHZhbHVlc09mT2JqKHJlY29yZCk7XG4gIGlmIChcImZpbmRcIiBpbiB2YWx1ZXMpIHtcbiAgICByZXR1cm4gdmFsdWVzLmZpbmQocHJlZGljYXRlKTtcbiAgfVxuICBjb25zdCB2YWx1ZXNOb3ROZXZlciA9IHZhbHVlcztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXNOb3ROZXZlci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzTm90TmV2ZXJbaV07XG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZvaWQgMDtcbn1cbmZ1bmN0aW9uIGZvckVhY2gocmVjb3JkLCBydW4pIHtcbiAgT2JqZWN0LmVudHJpZXMocmVjb3JkKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHJ1bih2YWx1ZSwga2V5KSk7XG59XG5mdW5jdGlvbiBpbmNsdWRlcyhhcnIsIHZhbHVlKSB7XG4gIHJldHVybiBhcnIuaW5kZXhPZih2YWx1ZSkgIT09IC0xO1xufVxuZnVuY3Rpb24gZmluZEFycihyZWNvcmQsIHByZWRpY2F0ZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY29yZC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHZhbHVlID0gcmVjb3JkW2ldO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiB2b2lkIDA7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdXBlcmpzb25AMi4yLjEvbm9kZV9tb2R1bGVzL3N1cGVyanNvbi9kaXN0L2N1c3RvbS10cmFuc2Zvcm1lci1yZWdpc3RyeS5qc1xudmFyIEN1c3RvbVRyYW5zZm9ybWVyUmVnaXN0cnkgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudHJhbnNmb21lcnMgPSB7fTtcbiAgfVxuICByZWdpc3Rlcih0cmFuc2Zvcm1lcikge1xuICAgIHRoaXMudHJhbnNmb21lcnNbdHJhbnNmb3JtZXIubmFtZV0gPSB0cmFuc2Zvcm1lcjtcbiAgfVxuICBmaW5kQXBwbGljYWJsZSh2KSB7XG4gICAgcmV0dXJuIGZpbmQodGhpcy50cmFuc2ZvbWVycywgKHRyYW5zZm9ybWVyKSA9PiB0cmFuc2Zvcm1lci5pc0FwcGxpY2FibGUodikpO1xuICB9XG4gIGZpbmRCeU5hbWUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zZm9tZXJzW25hbWVdO1xuICB9XG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3VwZXJqc29uQDIuMi4xL25vZGVfbW9kdWxlcy9zdXBlcmpzb24vZGlzdC9pcy5qc1xudmFyIGdldFR5cGUgPSAocGF5bG9hZCkgPT4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHBheWxvYWQpLnNsaWNlKDgsIC0xKTtcbnZhciBpc1VuZGVmaW5lZCA9IChwYXlsb2FkKSA9PiB0eXBlb2YgcGF5bG9hZCA9PT0gXCJ1bmRlZmluZWRcIjtcbnZhciBpc051bGwgPSAocGF5bG9hZCkgPT4gcGF5bG9hZCA9PT0gbnVsbDtcbnZhciBpc1BsYWluT2JqZWN0ID0gKHBheWxvYWQpID0+IHtcbiAgaWYgKHR5cGVvZiBwYXlsb2FkICE9PSBcIm9iamVjdFwiIHx8IHBheWxvYWQgPT09IG51bGwpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAocGF5bG9hZCA9PT0gT2JqZWN0LnByb3RvdHlwZSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YocGF5bG9hZCkgPT09IG51bGwpXG4gICAgcmV0dXJuIHRydWU7XG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YocGF5bG9hZCkgPT09IE9iamVjdC5wcm90b3R5cGU7XG59O1xudmFyIGlzRW1wdHlPYmplY3QgPSAocGF5bG9hZCkgPT4gaXNQbGFpbk9iamVjdChwYXlsb2FkKSAmJiBPYmplY3Qua2V5cyhwYXlsb2FkKS5sZW5ndGggPT09IDA7XG52YXIgaXNBcnJheSA9IChwYXlsb2FkKSA9PiBBcnJheS5pc0FycmF5KHBheWxvYWQpO1xudmFyIGlzU3RyaW5nID0gKHBheWxvYWQpID0+IHR5cGVvZiBwYXlsb2FkID09PSBcInN0cmluZ1wiO1xudmFyIGlzTnVtYmVyID0gKHBheWxvYWQpID0+IHR5cGVvZiBwYXlsb2FkID09PSBcIm51bWJlclwiICYmICFpc05hTihwYXlsb2FkKTtcbnZhciBpc0Jvb2xlYW4gPSAocGF5bG9hZCkgPT4gdHlwZW9mIHBheWxvYWQgPT09IFwiYm9vbGVhblwiO1xudmFyIGlzUmVnRXhwID0gKHBheWxvYWQpID0+IHBheWxvYWQgaW5zdGFuY2VvZiBSZWdFeHA7XG52YXIgaXNNYXAgPSAocGF5bG9hZCkgPT4gcGF5bG9hZCBpbnN0YW5jZW9mIE1hcDtcbnZhciBpc1NldCA9IChwYXlsb2FkKSA9PiBwYXlsb2FkIGluc3RhbmNlb2YgU2V0O1xudmFyIGlzU3ltYm9sID0gKHBheWxvYWQpID0+IGdldFR5cGUocGF5bG9hZCkgPT09IFwiU3ltYm9sXCI7XG52YXIgaXNEYXRlID0gKHBheWxvYWQpID0+IHBheWxvYWQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihwYXlsb2FkLnZhbHVlT2YoKSk7XG52YXIgaXNFcnJvciA9IChwYXlsb2FkKSA9PiBwYXlsb2FkIGluc3RhbmNlb2YgRXJyb3I7XG52YXIgaXNOYU5WYWx1ZSA9IChwYXlsb2FkKSA9PiB0eXBlb2YgcGF5bG9hZCA9PT0gXCJudW1iZXJcIiAmJiBpc05hTihwYXlsb2FkKTtcbnZhciBpc1ByaW1pdGl2ZSA9IChwYXlsb2FkKSA9PiBpc0Jvb2xlYW4ocGF5bG9hZCkgfHwgaXNOdWxsKHBheWxvYWQpIHx8IGlzVW5kZWZpbmVkKHBheWxvYWQpIHx8IGlzTnVtYmVyKHBheWxvYWQpIHx8IGlzU3RyaW5nKHBheWxvYWQpIHx8IGlzU3ltYm9sKHBheWxvYWQpO1xudmFyIGlzQmlnaW50ID0gKHBheWxvYWQpID0+IHR5cGVvZiBwYXlsb2FkID09PSBcImJpZ2ludFwiO1xudmFyIGlzSW5maW5pdGUgPSAocGF5bG9hZCkgPT4gcGF5bG9hZCA9PT0gSW5maW5pdHkgfHwgcGF5bG9hZCA9PT0gLUluZmluaXR5O1xudmFyIGlzVHlwZWRBcnJheSA9IChwYXlsb2FkKSA9PiBBcnJheUJ1ZmZlci5pc1ZpZXcocGF5bG9hZCkgJiYgIShwYXlsb2FkIGluc3RhbmNlb2YgRGF0YVZpZXcpO1xudmFyIGlzVVJMID0gKHBheWxvYWQpID0+IHBheWxvYWQgaW5zdGFuY2VvZiBVUkw7XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdXBlcmpzb25AMi4yLjEvbm9kZV9tb2R1bGVzL3N1cGVyanNvbi9kaXN0L3BhdGhzdHJpbmdpZmllci5qc1xudmFyIGVzY2FwZUtleSA9IChrZXkpID0+IGtleS5yZXBsYWNlKC9cXC4vZywgXCJcXFxcLlwiKTtcbnZhciBzdHJpbmdpZnlQYXRoID0gKHBhdGgpID0+IHBhdGgubWFwKFN0cmluZykubWFwKGVzY2FwZUtleSkuam9pbihcIi5cIik7XG52YXIgcGFyc2VQYXRoID0gKHN0cmluZykgPT4ge1xuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgbGV0IHNlZ21lbnQgPSBcIlwiO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBjaGFyID0gc3RyaW5nLmNoYXJBdChpKTtcbiAgICBjb25zdCBpc0VzY2FwZWREb3QgPSBjaGFyID09PSBcIlxcXFxcIiAmJiBzdHJpbmcuY2hhckF0KGkgKyAxKSA9PT0gXCIuXCI7XG4gICAgaWYgKGlzRXNjYXBlZERvdCkge1xuICAgICAgc2VnbWVudCArPSBcIi5cIjtcbiAgICAgIGkrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBpc0VuZE9mU2VnbWVudCA9IGNoYXIgPT09IFwiLlwiO1xuICAgIGlmIChpc0VuZE9mU2VnbWVudCkge1xuICAgICAgcmVzdWx0LnB1c2goc2VnbWVudCk7XG4gICAgICBzZWdtZW50ID0gXCJcIjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBzZWdtZW50ICs9IGNoYXI7XG4gIH1cbiAgY29uc3QgbGFzdFNlZ21lbnQgPSBzZWdtZW50O1xuICByZXN1bHQucHVzaChsYXN0U2VnbWVudCk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3VwZXJqc29uQDIuMi4xL25vZGVfbW9kdWxlcy9zdXBlcmpzb24vZGlzdC90cmFuc2Zvcm1lci5qc1xuZnVuY3Rpb24gc2ltcGxlVHJhbnNmb3JtYXRpb24oaXNBcHBsaWNhYmxlLCBhbm5vdGF0aW9uLCB0cmFuc2Zvcm0sIHVudHJhbnNmb3JtKSB7XG4gIHJldHVybiB7XG4gICAgaXNBcHBsaWNhYmxlLFxuICAgIGFubm90YXRpb24sXG4gICAgdHJhbnNmb3JtLFxuICAgIHVudHJhbnNmb3JtXG4gIH07XG59XG52YXIgc2ltcGxlUnVsZXMgPSBbXG4gIHNpbXBsZVRyYW5zZm9ybWF0aW9uKGlzVW5kZWZpbmVkLCBcInVuZGVmaW5lZFwiLCAoKSA9PiBudWxsLCAoKSA9PiB2b2lkIDApLFxuICBzaW1wbGVUcmFuc2Zvcm1hdGlvbihpc0JpZ2ludCwgXCJiaWdpbnRcIiwgKHYpID0+IHYudG9TdHJpbmcoKSwgKHYpID0+IHtcbiAgICBpZiAodHlwZW9mIEJpZ0ludCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIEJpZ0ludCh2KTtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH0pLFxuICBzaW1wbGVUcmFuc2Zvcm1hdGlvbihpc0RhdGUsIFwiRGF0ZVwiLCAodikgPT4gdi50b0lTT1N0cmluZygpLCAodikgPT4gbmV3IERhdGUodikpLFxuICBzaW1wbGVUcmFuc2Zvcm1hdGlvbihpc0Vycm9yLCBcIkVycm9yXCIsICh2LCBzdXBlckpzb24pID0+IHtcbiAgICBjb25zdCBiYXNlRXJyb3IgPSB7XG4gICAgICBuYW1lOiB2Lm5hbWUsXG4gICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2VcbiAgICB9O1xuICAgIHN1cGVySnNvbi5hbGxvd2VkRXJyb3JQcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICBiYXNlRXJyb3JbcHJvcF0gPSB2W3Byb3BdO1xuICAgIH0pO1xuICAgIHJldHVybiBiYXNlRXJyb3I7XG4gIH0sICh2LCBzdXBlckpzb24pID0+IHtcbiAgICBjb25zdCBlID0gbmV3IEVycm9yKHYubWVzc2FnZSk7XG4gICAgZS5uYW1lID0gdi5uYW1lO1xuICAgIGUuc3RhY2sgPSB2LnN0YWNrO1xuICAgIHN1cGVySnNvbi5hbGxvd2VkRXJyb3JQcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICBlW3Byb3BdID0gdltwcm9wXTtcbiAgICB9KTtcbiAgICByZXR1cm4gZTtcbiAgfSksXG4gIHNpbXBsZVRyYW5zZm9ybWF0aW9uKGlzUmVnRXhwLCBcInJlZ2V4cFwiLCAodikgPT4gXCJcIiArIHYsIChyZWdleCkgPT4ge1xuICAgIGNvbnN0IGJvZHkgPSByZWdleC5zbGljZSgxLCByZWdleC5sYXN0SW5kZXhPZihcIi9cIikpO1xuICAgIGNvbnN0IGZsYWdzID0gcmVnZXguc2xpY2UocmVnZXgubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYm9keSwgZmxhZ3MpO1xuICB9KSxcbiAgc2ltcGxlVHJhbnNmb3JtYXRpb24oXG4gICAgaXNTZXQsXG4gICAgXCJzZXRcIixcbiAgICAvLyAoc2V0cyBvbmx5IGV4aXN0IGluIGVzNispXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzNS9uby1lczYtbWV0aG9kc1xuICAgICh2KSA9PiBbLi4udi52YWx1ZXMoKV0sXG4gICAgKHYpID0+IG5ldyBTZXQodilcbiAgKSxcbiAgc2ltcGxlVHJhbnNmb3JtYXRpb24oaXNNYXAsIFwibWFwXCIsICh2KSA9PiBbLi4udi5lbnRyaWVzKCldLCAodikgPT4gbmV3IE1hcCh2KSksXG4gIHNpbXBsZVRyYW5zZm9ybWF0aW9uKCh2KSA9PiBpc05hTlZhbHVlKHYpIHx8IGlzSW5maW5pdGUodiksIFwibnVtYmVyXCIsICh2KSA9PiB7XG4gICAgaWYgKGlzTmFOVmFsdWUodikpIHtcbiAgICAgIHJldHVybiBcIk5hTlwiO1xuICAgIH1cbiAgICBpZiAodiA+IDApIHtcbiAgICAgIHJldHVybiBcIkluZmluaXR5XCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcIi1JbmZpbml0eVwiO1xuICAgIH1cbiAgfSwgTnVtYmVyKSxcbiAgc2ltcGxlVHJhbnNmb3JtYXRpb24oKHYpID0+IHYgPT09IDAgJiYgMSAvIHYgPT09IC1JbmZpbml0eSwgXCJudW1iZXJcIiwgKCkgPT4ge1xuICAgIHJldHVybiBcIi0wXCI7XG4gIH0sIE51bWJlciksXG4gIHNpbXBsZVRyYW5zZm9ybWF0aW9uKGlzVVJMLCBcIlVSTFwiLCAodikgPT4gdi50b1N0cmluZygpLCAodikgPT4gbmV3IFVSTCh2KSlcbl07XG5mdW5jdGlvbiBjb21wb3NpdGVUcmFuc2Zvcm1hdGlvbihpc0FwcGxpY2FibGUsIGFubm90YXRpb24sIHRyYW5zZm9ybSwgdW50cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIHtcbiAgICBpc0FwcGxpY2FibGUsXG4gICAgYW5ub3RhdGlvbixcbiAgICB0cmFuc2Zvcm0sXG4gICAgdW50cmFuc2Zvcm1cbiAgfTtcbn1cbnZhciBzeW1ib2xSdWxlID0gY29tcG9zaXRlVHJhbnNmb3JtYXRpb24oKHMsIHN1cGVySnNvbikgPT4ge1xuICBpZiAoaXNTeW1ib2wocykpIHtcbiAgICBjb25zdCBpc1JlZ2lzdGVyZWQgPSAhIXN1cGVySnNvbi5zeW1ib2xSZWdpc3RyeS5nZXRJZGVudGlmaWVyKHMpO1xuICAgIHJldHVybiBpc1JlZ2lzdGVyZWQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSwgKHMsIHN1cGVySnNvbikgPT4ge1xuICBjb25zdCBpZGVudGlmaWVyID0gc3VwZXJKc29uLnN5bWJvbFJlZ2lzdHJ5LmdldElkZW50aWZpZXIocyk7XG4gIHJldHVybiBbXCJzeW1ib2xcIiwgaWRlbnRpZmllcl07XG59LCAodikgPT4gdi5kZXNjcmlwdGlvbiwgKF8sIGEsIHN1cGVySnNvbikgPT4ge1xuICBjb25zdCB2YWx1ZSA9IHN1cGVySnNvbi5zeW1ib2xSZWdpc3RyeS5nZXRWYWx1ZShhWzFdKTtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRyeWluZyB0byBkZXNlcmlhbGl6ZSB1bmtub3duIHN5bWJvbFwiKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59KTtcbnZhciBjb25zdHJ1Y3RvclRvTmFtZSA9IFtcbiAgSW50OEFycmF5LFxuICBVaW50OEFycmF5LFxuICBJbnQxNkFycmF5LFxuICBVaW50MTZBcnJheSxcbiAgSW50MzJBcnJheSxcbiAgVWludDMyQXJyYXksXG4gIEZsb2F0MzJBcnJheSxcbiAgRmxvYXQ2NEFycmF5LFxuICBVaW50OENsYW1wZWRBcnJheVxuXS5yZWR1Y2UoKG9iaiwgY3RvcikgPT4ge1xuICBvYmpbY3Rvci5uYW1lXSA9IGN0b3I7XG4gIHJldHVybiBvYmo7XG59LCB7fSk7XG52YXIgdHlwZWRBcnJheVJ1bGUgPSBjb21wb3NpdGVUcmFuc2Zvcm1hdGlvbihpc1R5cGVkQXJyYXksICh2KSA9PiBbXCJ0eXBlZC1hcnJheVwiLCB2LmNvbnN0cnVjdG9yLm5hbWVdLCAodikgPT4gWy4uLnZdLCAodiwgYSkgPT4ge1xuICBjb25zdCBjdG9yID0gY29uc3RydWN0b3JUb05hbWVbYVsxXV07XG4gIGlmICghY3Rvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRyeWluZyB0byBkZXNlcmlhbGl6ZSB1bmtub3duIHR5cGVkIGFycmF5XCIpO1xuICB9XG4gIHJldHVybiBuZXcgY3Rvcih2KTtcbn0pO1xuZnVuY3Rpb24gaXNJbnN0YW5jZU9mUmVnaXN0ZXJlZENsYXNzKHBvdGVudGlhbENsYXNzLCBzdXBlckpzb24pIHtcbiAgaWYgKHBvdGVudGlhbENsYXNzPy5jb25zdHJ1Y3Rvcikge1xuICAgIGNvbnN0IGlzUmVnaXN0ZXJlZCA9ICEhc3VwZXJKc29uLmNsYXNzUmVnaXN0cnkuZ2V0SWRlbnRpZmllcihwb3RlbnRpYWxDbGFzcy5jb25zdHJ1Y3Rvcik7XG4gICAgcmV0dXJuIGlzUmVnaXN0ZXJlZDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG52YXIgY2xhc3NSdWxlID0gY29tcG9zaXRlVHJhbnNmb3JtYXRpb24oaXNJbnN0YW5jZU9mUmVnaXN0ZXJlZENsYXNzLCAoY2xhenosIHN1cGVySnNvbikgPT4ge1xuICBjb25zdCBpZGVudGlmaWVyID0gc3VwZXJKc29uLmNsYXNzUmVnaXN0cnkuZ2V0SWRlbnRpZmllcihjbGF6ei5jb25zdHJ1Y3Rvcik7XG4gIHJldHVybiBbXCJjbGFzc1wiLCBpZGVudGlmaWVyXTtcbn0sIChjbGF6eiwgc3VwZXJKc29uKSA9PiB7XG4gIGNvbnN0IGFsbG93ZWRQcm9wcyA9IHN1cGVySnNvbi5jbGFzc1JlZ2lzdHJ5LmdldEFsbG93ZWRQcm9wcyhjbGF6ei5jb25zdHJ1Y3Rvcik7XG4gIGlmICghYWxsb3dlZFByb3BzKSB7XG4gICAgcmV0dXJuIHsgLi4uY2xhenogfTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgYWxsb3dlZFByb3BzLmZvckVhY2goKHByb3ApID0+IHtcbiAgICByZXN1bHRbcHJvcF0gPSBjbGF6eltwcm9wXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59LCAodiwgYSwgc3VwZXJKc29uKSA9PiB7XG4gIGNvbnN0IGNsYXp6ID0gc3VwZXJKc29uLmNsYXNzUmVnaXN0cnkuZ2V0VmFsdWUoYVsxXSk7XG4gIGlmICghY2xhenopIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcnlpbmcgdG8gZGVzZXJpYWxpemUgdW5rbm93biBjbGFzcyAtIGNoZWNrIGh0dHBzOi8vZ2l0aHViLmNvbS9ibGl0ei1qcy9zdXBlcmpzb24vaXNzdWVzLzExNiNpc3N1ZWNvbW1lbnQtNzczOTk2NTY0XCIpO1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoY2xhenoucHJvdG90eXBlKSwgdik7XG59KTtcbnZhciBjdXN0b21SdWxlID0gY29tcG9zaXRlVHJhbnNmb3JtYXRpb24oKHZhbHVlLCBzdXBlckpzb24pID0+IHtcbiAgcmV0dXJuICEhc3VwZXJKc29uLmN1c3RvbVRyYW5zZm9ybWVyUmVnaXN0cnkuZmluZEFwcGxpY2FibGUodmFsdWUpO1xufSwgKHZhbHVlLCBzdXBlckpzb24pID0+IHtcbiAgY29uc3QgdHJhbnNmb3JtZXIgPSBzdXBlckpzb24uY3VzdG9tVHJhbnNmb3JtZXJSZWdpc3RyeS5maW5kQXBwbGljYWJsZSh2YWx1ZSk7XG4gIHJldHVybiBbXCJjdXN0b21cIiwgdHJhbnNmb3JtZXIubmFtZV07XG59LCAodmFsdWUsIHN1cGVySnNvbikgPT4ge1xuICBjb25zdCB0cmFuc2Zvcm1lciA9IHN1cGVySnNvbi5jdXN0b21UcmFuc2Zvcm1lclJlZ2lzdHJ5LmZpbmRBcHBsaWNhYmxlKHZhbHVlKTtcbiAgcmV0dXJuIHRyYW5zZm9ybWVyLnNlcmlhbGl6ZSh2YWx1ZSk7XG59LCAodiwgYSwgc3VwZXJKc29uKSA9PiB7XG4gIGNvbnN0IHRyYW5zZm9ybWVyID0gc3VwZXJKc29uLmN1c3RvbVRyYW5zZm9ybWVyUmVnaXN0cnkuZmluZEJ5TmFtZShhWzFdKTtcbiAgaWYgKCF0cmFuc2Zvcm1lcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRyeWluZyB0byBkZXNlcmlhbGl6ZSB1bmtub3duIGN1c3RvbSB2YWx1ZVwiKTtcbiAgfVxuICByZXR1cm4gdHJhbnNmb3JtZXIuZGVzZXJpYWxpemUodik7XG59KTtcbnZhciBjb21wb3NpdGVSdWxlcyA9IFtjbGFzc1J1bGUsIHN5bWJvbFJ1bGUsIGN1c3RvbVJ1bGUsIHR5cGVkQXJyYXlSdWxlXTtcbnZhciB0cmFuc2Zvcm1WYWx1ZSA9ICh2YWx1ZSwgc3VwZXJKc29uKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2FibGVDb21wb3NpdGVSdWxlID0gZmluZEFycihjb21wb3NpdGVSdWxlcywgKHJ1bGUpID0+IHJ1bGUuaXNBcHBsaWNhYmxlKHZhbHVlLCBzdXBlckpzb24pKTtcbiAgaWYgKGFwcGxpY2FibGVDb21wb3NpdGVSdWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBhcHBsaWNhYmxlQ29tcG9zaXRlUnVsZS50cmFuc2Zvcm0odmFsdWUsIHN1cGVySnNvbiksXG4gICAgICB0eXBlOiBhcHBsaWNhYmxlQ29tcG9zaXRlUnVsZS5hbm5vdGF0aW9uKHZhbHVlLCBzdXBlckpzb24pXG4gICAgfTtcbiAgfVxuICBjb25zdCBhcHBsaWNhYmxlU2ltcGxlUnVsZSA9IGZpbmRBcnIoc2ltcGxlUnVsZXMsIChydWxlKSA9PiBydWxlLmlzQXBwbGljYWJsZSh2YWx1ZSwgc3VwZXJKc29uKSk7XG4gIGlmIChhcHBsaWNhYmxlU2ltcGxlUnVsZSkge1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogYXBwbGljYWJsZVNpbXBsZVJ1bGUudHJhbnNmb3JtKHZhbHVlLCBzdXBlckpzb24pLFxuICAgICAgdHlwZTogYXBwbGljYWJsZVNpbXBsZVJ1bGUuYW5ub3RhdGlvblxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHZvaWQgMDtcbn07XG52YXIgc2ltcGxlUnVsZXNCeUFubm90YXRpb24gPSB7fTtcbnNpbXBsZVJ1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgc2ltcGxlUnVsZXNCeUFubm90YXRpb25bcnVsZS5hbm5vdGF0aW9uXSA9IHJ1bGU7XG59KTtcbnZhciB1bnRyYW5zZm9ybVZhbHVlID0gKGpzb24sIHR5cGUsIHN1cGVySnNvbikgPT4ge1xuICBpZiAoaXNBcnJheSh0eXBlKSkge1xuICAgIHN3aXRjaCAodHlwZVswXSkge1xuICAgICAgY2FzZSBcInN5bWJvbFwiOlxuICAgICAgICByZXR1cm4gc3ltYm9sUnVsZS51bnRyYW5zZm9ybShqc29uLCB0eXBlLCBzdXBlckpzb24pO1xuICAgICAgY2FzZSBcImNsYXNzXCI6XG4gICAgICAgIHJldHVybiBjbGFzc1J1bGUudW50cmFuc2Zvcm0oanNvbiwgdHlwZSwgc3VwZXJKc29uKTtcbiAgICAgIGNhc2UgXCJjdXN0b21cIjpcbiAgICAgICAgcmV0dXJuIGN1c3RvbVJ1bGUudW50cmFuc2Zvcm0oanNvbiwgdHlwZSwgc3VwZXJKc29uKTtcbiAgICAgIGNhc2UgXCJ0eXBlZC1hcnJheVwiOlxuICAgICAgICByZXR1cm4gdHlwZWRBcnJheVJ1bGUudW50cmFuc2Zvcm0oanNvbiwgdHlwZSwgc3VwZXJKc29uKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gdHJhbnNmb3JtYXRpb246IFwiICsgdHlwZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHRyYW5zZm9ybWF0aW9uID0gc2ltcGxlUnVsZXNCeUFubm90YXRpb25bdHlwZV07XG4gICAgaWYgKCF0cmFuc2Zvcm1hdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biB0cmFuc2Zvcm1hdGlvbjogXCIgKyB0eXBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zZm9ybWF0aW9uLnVudHJhbnNmb3JtKGpzb24sIHN1cGVySnNvbik7XG4gIH1cbn07XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdXBlcmpzb25AMi4yLjEvbm9kZV9tb2R1bGVzL3N1cGVyanNvbi9kaXN0L2FjY2Vzc0RlZXAuanNcbnZhciBnZXROdGhLZXkgPSAodmFsdWUsIG4pID0+IHtcbiAgY29uc3Qga2V5cyA9IHZhbHVlLmtleXMoKTtcbiAgd2hpbGUgKG4gPiAwKSB7XG4gICAga2V5cy5uZXh0KCk7XG4gICAgbi0tO1xuICB9XG4gIHJldHVybiBrZXlzLm5leHQoKS52YWx1ZTtcbn07XG5mdW5jdGlvbiB2YWxpZGF0ZVBhdGgocGF0aCkge1xuICBpZiAoaW5jbHVkZXMocGF0aCwgXCJfX3Byb3RvX19cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX3Byb3RvX18gaXMgbm90IGFsbG93ZWQgYXMgYSBwcm9wZXJ0eVwiKTtcbiAgfVxuICBpZiAoaW5jbHVkZXMocGF0aCwgXCJwcm90b3R5cGVcIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJwcm90b3R5cGUgaXMgbm90IGFsbG93ZWQgYXMgYSBwcm9wZXJ0eVwiKTtcbiAgfVxuICBpZiAoaW5jbHVkZXMocGF0aCwgXCJjb25zdHJ1Y3RvclwiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImNvbnN0cnVjdG9yIGlzIG5vdCBhbGxvd2VkIGFzIGEgcHJvcGVydHlcIik7XG4gIH1cbn1cbnZhciBnZXREZWVwID0gKG9iamVjdCwgcGF0aCkgPT4ge1xuICB2YWxpZGF0ZVBhdGgocGF0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGtleSA9IHBhdGhbaV07XG4gICAgaWYgKGlzU2V0KG9iamVjdCkpIHtcbiAgICAgIG9iamVjdCA9IGdldE50aEtleShvYmplY3QsICtrZXkpO1xuICAgIH0gZWxzZSBpZiAoaXNNYXAob2JqZWN0KSkge1xuICAgICAgY29uc3Qgcm93ID0gK2tleTtcbiAgICAgIGNvbnN0IHR5cGUgPSArcGF0aFsrK2ldID09PSAwID8gXCJrZXlcIiA6IFwidmFsdWVcIjtcbiAgICAgIGNvbnN0IGtleU9mUm93ID0gZ2V0TnRoS2V5KG9iamVjdCwgcm93KTtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwia2V5XCI6XG4gICAgICAgICAgb2JqZWN0ID0ga2V5T2ZSb3c7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ2YWx1ZVwiOlxuICAgICAgICAgIG9iamVjdCA9IG9iamVjdC5nZXQoa2V5T2ZSb3cpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn07XG52YXIgc2V0RGVlcCA9IChvYmplY3QsIHBhdGgsIG1hcHBlcikgPT4ge1xuICB2YWxpZGF0ZVBhdGgocGF0aCk7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBtYXBwZXIob2JqZWN0KTtcbiAgfVxuICBsZXQgcGFyZW50ID0gb2JqZWN0O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgY29uc3Qga2V5ID0gcGF0aFtpXTtcbiAgICBpZiAoaXNBcnJheShwYXJlbnQpKSB7XG4gICAgICBjb25zdCBpbmRleCA9ICtrZXk7XG4gICAgICBwYXJlbnQgPSBwYXJlbnRbaW5kZXhdO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChwYXJlbnQpKSB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnRba2V5XTtcbiAgICB9IGVsc2UgaWYgKGlzU2V0KHBhcmVudCkpIHtcbiAgICAgIGNvbnN0IHJvdyA9ICtrZXk7XG4gICAgICBwYXJlbnQgPSBnZXROdGhLZXkocGFyZW50LCByb3cpO1xuICAgIH0gZWxzZSBpZiAoaXNNYXAocGFyZW50KSkge1xuICAgICAgY29uc3QgaXNFbmQgPSBpID09PSBwYXRoLmxlbmd0aCAtIDI7XG4gICAgICBpZiAoaXNFbmQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb25zdCByb3cgPSAra2V5O1xuICAgICAgY29uc3QgdHlwZSA9ICtwYXRoWysraV0gPT09IDAgPyBcImtleVwiIDogXCJ2YWx1ZVwiO1xuICAgICAgY29uc3Qga2V5T2ZSb3cgPSBnZXROdGhLZXkocGFyZW50LCByb3cpO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgXCJrZXlcIjpcbiAgICAgICAgICBwYXJlbnQgPSBrZXlPZlJvdztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgcGFyZW50ID0gcGFyZW50LmdldChrZXlPZlJvdyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IGxhc3RLZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gIGlmIChpc0FycmF5KHBhcmVudCkpIHtcbiAgICBwYXJlbnRbK2xhc3RLZXldID0gbWFwcGVyKHBhcmVudFsrbGFzdEtleV0pO1xuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QocGFyZW50KSkge1xuICAgIHBhcmVudFtsYXN0S2V5XSA9IG1hcHBlcihwYXJlbnRbbGFzdEtleV0pO1xuICB9XG4gIGlmIChpc1NldChwYXJlbnQpKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSBnZXROdGhLZXkocGFyZW50LCArbGFzdEtleSk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBtYXBwZXIob2xkVmFsdWUpO1xuICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgIHBhcmVudC5kZWxldGUob2xkVmFsdWUpO1xuICAgICAgcGFyZW50LmFkZChuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIGlmIChpc01hcChwYXJlbnQpKSB7XG4gICAgY29uc3Qgcm93ID0gK3BhdGhbcGF0aC5sZW5ndGggLSAyXTtcbiAgICBjb25zdCBrZXlUb1JvdyA9IGdldE50aEtleShwYXJlbnQsIHJvdyk7XG4gICAgY29uc3QgdHlwZSA9ICtsYXN0S2V5ID09PSAwID8gXCJrZXlcIiA6IFwidmFsdWVcIjtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJrZXlcIjoge1xuICAgICAgICBjb25zdCBuZXdLZXkgPSBtYXBwZXIoa2V5VG9Sb3cpO1xuICAgICAgICBwYXJlbnQuc2V0KG5ld0tleSwgcGFyZW50LmdldChrZXlUb1JvdykpO1xuICAgICAgICBpZiAobmV3S2V5ICE9PSBrZXlUb1Jvdykge1xuICAgICAgICAgIHBhcmVudC5kZWxldGUoa2V5VG9Sb3cpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcInZhbHVlXCI6IHtcbiAgICAgICAgcGFyZW50LnNldChrZXlUb1JvdywgbWFwcGVyKHBhcmVudC5nZXQoa2V5VG9Sb3cpKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N1cGVyanNvbkAyLjIuMS9ub2RlX21vZHVsZXMvc3VwZXJqc29uL2Rpc3QvcGxhaW5lci5qc1xuZnVuY3Rpb24gdHJhdmVyc2UodHJlZSwgd2Fsa2VyMiwgb3JpZ2luID0gW10pIHtcbiAgaWYgKCF0cmVlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghaXNBcnJheSh0cmVlKSkge1xuICAgIGZvckVhY2godHJlZSwgKHN1YnRyZWUsIGtleSkgPT4gdHJhdmVyc2Uoc3VidHJlZSwgd2Fsa2VyMiwgWy4uLm9yaWdpbiwgLi4ucGFyc2VQYXRoKGtleSldKSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IFtub2RlVmFsdWUsIGNoaWxkcmVuMl0gPSB0cmVlO1xuICBpZiAoY2hpbGRyZW4yKSB7XG4gICAgZm9yRWFjaChjaGlsZHJlbjIsIChjaGlsZCwga2V5KSA9PiB7XG4gICAgICB0cmF2ZXJzZShjaGlsZCwgd2Fsa2VyMiwgWy4uLm9yaWdpbiwgLi4ucGFyc2VQYXRoKGtleSldKTtcbiAgICB9KTtcbiAgfVxuICB3YWxrZXIyKG5vZGVWYWx1ZSwgb3JpZ2luKTtcbn1cbmZ1bmN0aW9uIGFwcGx5VmFsdWVBbm5vdGF0aW9ucyhwbGFpbiwgYW5ub3RhdGlvbnMsIHN1cGVySnNvbikge1xuICB0cmF2ZXJzZShhbm5vdGF0aW9ucywgKHR5cGUsIHBhdGgpID0+IHtcbiAgICBwbGFpbiA9IHNldERlZXAocGxhaW4sIHBhdGgsICh2KSA9PiB1bnRyYW5zZm9ybVZhbHVlKHYsIHR5cGUsIHN1cGVySnNvbikpO1xuICB9KTtcbiAgcmV0dXJuIHBsYWluO1xufVxuZnVuY3Rpb24gYXBwbHlSZWZlcmVudGlhbEVxdWFsaXR5QW5ub3RhdGlvbnMocGxhaW4sIGFubm90YXRpb25zKSB7XG4gIGZ1bmN0aW9uIGFwcGx5KGlkZW50aWNhbFBhdGhzLCBwYXRoKSB7XG4gICAgY29uc3Qgb2JqZWN0ID0gZ2V0RGVlcChwbGFpbiwgcGFyc2VQYXRoKHBhdGgpKTtcbiAgICBpZGVudGljYWxQYXRocy5tYXAocGFyc2VQYXRoKS5mb3JFYWNoKChpZGVudGljYWxPYmplY3RQYXRoKSA9PiB7XG4gICAgICBwbGFpbiA9IHNldERlZXAocGxhaW4sIGlkZW50aWNhbE9iamVjdFBhdGgsICgpID0+IG9iamVjdCk7XG4gICAgfSk7XG4gIH1cbiAgaWYgKGlzQXJyYXkoYW5ub3RhdGlvbnMpKSB7XG4gICAgY29uc3QgW3Jvb3QsIG90aGVyXSA9IGFubm90YXRpb25zO1xuICAgIHJvb3QuZm9yRWFjaCgoaWRlbnRpY2FsUGF0aCkgPT4ge1xuICAgICAgcGxhaW4gPSBzZXREZWVwKHBsYWluLCBwYXJzZVBhdGgoaWRlbnRpY2FsUGF0aCksICgpID0+IHBsYWluKTtcbiAgICB9KTtcbiAgICBpZiAob3RoZXIpIHtcbiAgICAgIGZvckVhY2gob3RoZXIsIGFwcGx5KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yRWFjaChhbm5vdGF0aW9ucywgYXBwbHkpO1xuICB9XG4gIHJldHVybiBwbGFpbjtcbn1cbnZhciBpc0RlZXAgPSAob2JqZWN0LCBzdXBlckpzb24pID0+IGlzUGxhaW5PYmplY3Qob2JqZWN0KSB8fCBpc0FycmF5KG9iamVjdCkgfHwgaXNNYXAob2JqZWN0KSB8fCBpc1NldChvYmplY3QpIHx8IGlzSW5zdGFuY2VPZlJlZ2lzdGVyZWRDbGFzcyhvYmplY3QsIHN1cGVySnNvbik7XG5mdW5jdGlvbiBhZGRJZGVudGl0eShvYmplY3QsIHBhdGgsIGlkZW50aXRpZXMpIHtcbiAgY29uc3QgZXhpc3RpbmdTZXQgPSBpZGVudGl0aWVzLmdldChvYmplY3QpO1xuICBpZiAoZXhpc3RpbmdTZXQpIHtcbiAgICBleGlzdGluZ1NldC5wdXNoKHBhdGgpO1xuICB9IGVsc2Uge1xuICAgIGlkZW50aXRpZXMuc2V0KG9iamVjdCwgW3BhdGhdKTtcbiAgfVxufVxuZnVuY3Rpb24gZ2VuZXJhdGVSZWZlcmVudGlhbEVxdWFsaXR5QW5ub3RhdGlvbnMoaWRlbnRpdGl0ZXMsIGRlZHVwZSkge1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgbGV0IHJvb3RFcXVhbGl0eVBhdGhzID0gdm9pZCAwO1xuICBpZGVudGl0aXRlcy5mb3JFYWNoKChwYXRocykgPT4ge1xuICAgIGlmIChwYXRocy5sZW5ndGggPD0gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWRlZHVwZSkge1xuICAgICAgcGF0aHMgPSBwYXRocy5tYXAoKHBhdGgpID0+IHBhdGgubWFwKFN0cmluZykpLnNvcnQoKGEsIGIpID0+IGEubGVuZ3RoIC0gYi5sZW5ndGgpO1xuICAgIH1cbiAgICBjb25zdCBbcmVwcmVzZW50YXRpdmVQYXRoLCAuLi5pZGVudGljYWxQYXRoc10gPSBwYXRocztcbiAgICBpZiAocmVwcmVzZW50YXRpdmVQYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcm9vdEVxdWFsaXR5UGF0aHMgPSBpZGVudGljYWxQYXRocy5tYXAoc3RyaW5naWZ5UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtzdHJpbmdpZnlQYXRoKHJlcHJlc2VudGF0aXZlUGF0aCldID0gaWRlbnRpY2FsUGF0aHMubWFwKHN0cmluZ2lmeVBhdGgpO1xuICAgIH1cbiAgfSk7XG4gIGlmIChyb290RXF1YWxpdHlQYXRocykge1xuICAgIGlmIChpc0VtcHR5T2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiBbcm9vdEVxdWFsaXR5UGF0aHNdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3Jvb3RFcXVhbGl0eVBhdGhzLCByZXN1bHRdO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaXNFbXB0eU9iamVjdChyZXN1bHQpID8gdm9pZCAwIDogcmVzdWx0O1xuICB9XG59XG52YXIgd2Fsa2VyID0gKG9iamVjdCwgaWRlbnRpdGllcywgc3VwZXJKc29uLCBkZWR1cGUsIHBhdGggPSBbXSwgb2JqZWN0c0luVGhpc1BhdGggPSBbXSwgc2Vlbk9iamVjdHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpKSA9PiB7XG4gIGNvbnN0IHByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlKG9iamVjdCk7XG4gIGlmICghcHJpbWl0aXZlKSB7XG4gICAgYWRkSWRlbnRpdHkob2JqZWN0LCBwYXRoLCBpZGVudGl0aWVzKTtcbiAgICBjb25zdCBzZWVuID0gc2Vlbk9iamVjdHMuZ2V0KG9iamVjdCk7XG4gICAgaWYgKHNlZW4pIHtcbiAgICAgIHJldHVybiBkZWR1cGUgPyB7XG4gICAgICAgIHRyYW5zZm9ybWVkVmFsdWU6IG51bGxcbiAgICAgIH0gOiBzZWVuO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzRGVlcChvYmplY3QsIHN1cGVySnNvbikpIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZDIgPSB0cmFuc2Zvcm1WYWx1ZShvYmplY3QsIHN1cGVySnNvbik7XG4gICAgY29uc3QgcmVzdWx0MiA9IHRyYW5zZm9ybWVkMiA/IHtcbiAgICAgIHRyYW5zZm9ybWVkVmFsdWU6IHRyYW5zZm9ybWVkMi52YWx1ZSxcbiAgICAgIGFubm90YXRpb25zOiBbdHJhbnNmb3JtZWQyLnR5cGVdXG4gICAgfSA6IHtcbiAgICAgIHRyYW5zZm9ybWVkVmFsdWU6IG9iamVjdFxuICAgIH07XG4gICAgaWYgKCFwcmltaXRpdmUpIHtcbiAgICAgIHNlZW5PYmplY3RzLnNldChvYmplY3QsIHJlc3VsdDIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0MjtcbiAgfVxuICBpZiAoaW5jbHVkZXMob2JqZWN0c0luVGhpc1BhdGgsIG9iamVjdCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNmb3JtZWRWYWx1ZTogbnVsbFxuICAgIH07XG4gIH1cbiAgY29uc3QgdHJhbnNmb3JtYXRpb25SZXN1bHQgPSB0cmFuc2Zvcm1WYWx1ZShvYmplY3QsIHN1cGVySnNvbik7XG4gIGNvbnN0IHRyYW5zZm9ybWVkID0gdHJhbnNmb3JtYXRpb25SZXN1bHQ/LnZhbHVlID8/IG9iamVjdDtcbiAgY29uc3QgdHJhbnNmb3JtZWRWYWx1ZSA9IGlzQXJyYXkodHJhbnNmb3JtZWQpID8gW10gOiB7fTtcbiAgY29uc3QgaW5uZXJBbm5vdGF0aW9ucyA9IHt9O1xuICBmb3JFYWNoKHRyYW5zZm9ybWVkLCAodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBcIl9fcHJvdG9fX1wiIHx8IGluZGV4ID09PSBcImNvbnN0cnVjdG9yXCIgfHwgaW5kZXggPT09IFwicHJvdG90eXBlXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGV0ZWN0ZWQgcHJvcGVydHkgJHtpbmRleH0uIFRoaXMgaXMgYSBwcm90b3R5cGUgcG9sbHV0aW9uIHJpc2ssIHBsZWFzZSByZW1vdmUgaXQgZnJvbSB5b3VyIG9iamVjdC5gKTtcbiAgICB9XG4gICAgY29uc3QgcmVjdXJzaXZlUmVzdWx0ID0gd2Fsa2VyKHZhbHVlLCBpZGVudGl0aWVzLCBzdXBlckpzb24sIGRlZHVwZSwgWy4uLnBhdGgsIGluZGV4XSwgWy4uLm9iamVjdHNJblRoaXNQYXRoLCBvYmplY3RdLCBzZWVuT2JqZWN0cyk7XG4gICAgdHJhbnNmb3JtZWRWYWx1ZVtpbmRleF0gPSByZWN1cnNpdmVSZXN1bHQudHJhbnNmb3JtZWRWYWx1ZTtcbiAgICBpZiAoaXNBcnJheShyZWN1cnNpdmVSZXN1bHQuYW5ub3RhdGlvbnMpKSB7XG4gICAgICBpbm5lckFubm90YXRpb25zW2luZGV4XSA9IHJlY3Vyc2l2ZVJlc3VsdC5hbm5vdGF0aW9ucztcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QocmVjdXJzaXZlUmVzdWx0LmFubm90YXRpb25zKSkge1xuICAgICAgZm9yRWFjaChyZWN1cnNpdmVSZXN1bHQuYW5ub3RhdGlvbnMsICh0cmVlLCBrZXkpID0+IHtcbiAgICAgICAgaW5uZXJBbm5vdGF0aW9uc1tlc2NhcGVLZXkoaW5kZXgpICsgXCIuXCIgKyBrZXldID0gdHJlZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHJlc3VsdCA9IGlzRW1wdHlPYmplY3QoaW5uZXJBbm5vdGF0aW9ucykgPyB7XG4gICAgdHJhbnNmb3JtZWRWYWx1ZSxcbiAgICBhbm5vdGF0aW9uczogISF0cmFuc2Zvcm1hdGlvblJlc3VsdCA/IFt0cmFuc2Zvcm1hdGlvblJlc3VsdC50eXBlXSA6IHZvaWQgMFxuICB9IDoge1xuICAgIHRyYW5zZm9ybWVkVmFsdWUsXG4gICAgYW5ub3RhdGlvbnM6ICEhdHJhbnNmb3JtYXRpb25SZXN1bHQgPyBbdHJhbnNmb3JtYXRpb25SZXN1bHQudHlwZSwgaW5uZXJBbm5vdGF0aW9uc10gOiBpbm5lckFubm90YXRpb25zXG4gIH07XG4gIGlmICghcHJpbWl0aXZlKSB7XG4gICAgc2Vlbk9iamVjdHMuc2V0KG9iamVjdCwgcmVzdWx0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2lzLXdoYXRANC4xLjE2L25vZGVfbW9kdWxlcy9pcy13aGF0L2Rpc3QvaW5kZXguanNcbmZ1bmN0aW9uIGdldFR5cGUyKHBheWxvYWQpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwYXlsb2FkKS5zbGljZSg4LCAtMSk7XG59XG5mdW5jdGlvbiBpc0FycmF5MihwYXlsb2FkKSB7XG4gIHJldHVybiBnZXRUeXBlMihwYXlsb2FkKSA9PT0gXCJBcnJheVwiO1xufVxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdDIocGF5bG9hZCkge1xuICBpZiAoZ2V0VHlwZTIocGF5bG9hZCkgIT09IFwiT2JqZWN0XCIpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocGF5bG9hZCk7XG4gIHJldHVybiAhIXByb3RvdHlwZSAmJiBwcm90b3R5cGUuY29uc3RydWN0b3IgPT09IE9iamVjdCAmJiBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb3B5LWFueXRoaW5nQDMuMC41L25vZGVfbW9kdWxlcy9jb3B5LWFueXRoaW5nL2Rpc3QvaW5kZXguanNcbmZ1bmN0aW9uIGFzc2lnblByb3AyKGNhcnJ5LCBrZXksIG5ld1ZhbCwgb3JpZ2luYWxPYmplY3QsIGluY2x1ZGVOb25lbnVtZXJhYmxlKSB7XG4gIGNvbnN0IHByb3BUeXBlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvcmlnaW5hbE9iamVjdCwga2V5KSA/IFwiZW51bWVyYWJsZVwiIDogXCJub25lbnVtZXJhYmxlXCI7XG4gIGlmIChwcm9wVHlwZSA9PT0gXCJlbnVtZXJhYmxlXCIpXG4gICAgY2Fycnlba2V5XSA9IG5ld1ZhbDtcbiAgaWYgKGluY2x1ZGVOb25lbnVtZXJhYmxlICYmIHByb3BUeXBlID09PSBcIm5vbmVudW1lcmFibGVcIikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYXJyeSwga2V5LCB7XG4gICAgICB2YWx1ZTogbmV3VmFsLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG59XG5mdW5jdGlvbiBjb3B5KHRhcmdldCwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmIChpc0FycmF5Mih0YXJnZXQpKSB7XG4gICAgcmV0dXJuIHRhcmdldC5tYXAoKGl0ZW0pID0+IGNvcHkoaXRlbSwgb3B0aW9ucykpO1xuICB9XG4gIGlmICghaXNQbGFpbk9iamVjdDIodGFyZ2V0KSkge1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgY29uc3QgcHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQpO1xuICBjb25zdCBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpO1xuICByZXR1cm4gWy4uLnByb3BzLCAuLi5zeW1ib2xzXS5yZWR1Y2UoKGNhcnJ5LCBrZXkpID0+IHtcbiAgICBpZiAoaXNBcnJheTIob3B0aW9ucy5wcm9wcykgJiYgIW9wdGlvbnMucHJvcHMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgcmV0dXJuIGNhcnJ5O1xuICAgIH1cbiAgICBjb25zdCB2YWwgPSB0YXJnZXRba2V5XTtcbiAgICBjb25zdCBuZXdWYWwgPSBjb3B5KHZhbCwgb3B0aW9ucyk7XG4gICAgYXNzaWduUHJvcDIoY2FycnksIGtleSwgbmV3VmFsLCB0YXJnZXQsIG9wdGlvbnMubm9uZW51bWVyYWJsZSk7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9LCB7fSk7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdXBlcmpzb25AMi4yLjEvbm9kZV9tb2R1bGVzL3N1cGVyanNvbi9kaXN0L2luZGV4LmpzXG52YXIgU3VwZXJKU09OID0gY2xhc3Mge1xuICAvKipcbiAgICogQHBhcmFtIGRlZHVwZVJlZmVyZW50aWFsRXF1YWxpdGllcyAgSWYgdHJ1ZSwgU3VwZXJKU09OIHdpbGwgbWFrZSBzdXJlIG9ubHkgb25lIGluc3RhbmNlIG9mIHJlZmVyZW50aWFsbHkgZXF1YWwgb2JqZWN0cyBhcmUgc2VyaWFsaXplZCBhbmQgdGhlIHJlc3QgYXJlIHJlcGxhY2VkIHdpdGggYG51bGxgLlxuICAgKi9cbiAgY29uc3RydWN0b3IoeyBkZWR1cGUgPSBmYWxzZSB9ID0ge30pIHtcbiAgICB0aGlzLmNsYXNzUmVnaXN0cnkgPSBuZXcgQ2xhc3NSZWdpc3RyeSgpO1xuICAgIHRoaXMuc3ltYm9sUmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKHMpID0+IHMuZGVzY3JpcHRpb24gPz8gXCJcIik7XG4gICAgdGhpcy5jdXN0b21UcmFuc2Zvcm1lclJlZ2lzdHJ5ID0gbmV3IEN1c3RvbVRyYW5zZm9ybWVyUmVnaXN0cnkoKTtcbiAgICB0aGlzLmFsbG93ZWRFcnJvclByb3BzID0gW107XG4gICAgdGhpcy5kZWR1cGUgPSBkZWR1cGU7XG4gIH1cbiAgc2VyaWFsaXplKG9iamVjdCkge1xuICAgIGNvbnN0IGlkZW50aXRpZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgIGNvbnN0IG91dHB1dCA9IHdhbGtlcihvYmplY3QsIGlkZW50aXRpZXMsIHRoaXMsIHRoaXMuZGVkdXBlKTtcbiAgICBjb25zdCByZXMgPSB7XG4gICAgICBqc29uOiBvdXRwdXQudHJhbnNmb3JtZWRWYWx1ZVxuICAgIH07XG4gICAgaWYgKG91dHB1dC5hbm5vdGF0aW9ucykge1xuICAgICAgcmVzLm1ldGEgPSB7XG4gICAgICAgIC4uLnJlcy5tZXRhLFxuICAgICAgICB2YWx1ZXM6IG91dHB1dC5hbm5vdGF0aW9uc1xuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgZXF1YWxpdHlBbm5vdGF0aW9ucyA9IGdlbmVyYXRlUmVmZXJlbnRpYWxFcXVhbGl0eUFubm90YXRpb25zKGlkZW50aXRpZXMsIHRoaXMuZGVkdXBlKTtcbiAgICBpZiAoZXF1YWxpdHlBbm5vdGF0aW9ucykge1xuICAgICAgcmVzLm1ldGEgPSB7XG4gICAgICAgIC4uLnJlcy5tZXRhLFxuICAgICAgICByZWZlcmVudGlhbEVxdWFsaXRpZXM6IGVxdWFsaXR5QW5ub3RhdGlvbnNcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cbiAgZGVzZXJpYWxpemUocGF5bG9hZCkge1xuICAgIGNvbnN0IHsganNvbiwgbWV0YSB9ID0gcGF5bG9hZDtcbiAgICBsZXQgcmVzdWx0ID0gY29weShqc29uKTtcbiAgICBpZiAobWV0YT8udmFsdWVzKSB7XG4gICAgICByZXN1bHQgPSBhcHBseVZhbHVlQW5ub3RhdGlvbnMocmVzdWx0LCBtZXRhLnZhbHVlcywgdGhpcyk7XG4gICAgfVxuICAgIGlmIChtZXRhPy5yZWZlcmVudGlhbEVxdWFsaXRpZXMpIHtcbiAgICAgIHJlc3VsdCA9IGFwcGx5UmVmZXJlbnRpYWxFcXVhbGl0eUFubm90YXRpb25zKHJlc3VsdCwgbWV0YS5yZWZlcmVudGlhbEVxdWFsaXRpZXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHN0cmluZ2lmeShvYmplY3QpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5zZXJpYWxpemUob2JqZWN0KSk7XG4gIH1cbiAgcGFyc2Uoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVzZXJpYWxpemUoSlNPTi5wYXJzZShzdHJpbmcpKTtcbiAgfVxuICByZWdpc3RlckNsYXNzKHYsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmNsYXNzUmVnaXN0cnkucmVnaXN0ZXIodiwgb3B0aW9ucyk7XG4gIH1cbiAgcmVnaXN0ZXJTeW1ib2wodiwgaWRlbnRpZmllcikge1xuICAgIHRoaXMuc3ltYm9sUmVnaXN0cnkucmVnaXN0ZXIodiwgaWRlbnRpZmllcik7XG4gIH1cbiAgcmVnaXN0ZXJDdXN0b20odHJhbnNmb3JtZXIsIG5hbWUpIHtcbiAgICB0aGlzLmN1c3RvbVRyYW5zZm9ybWVyUmVnaXN0cnkucmVnaXN0ZXIoe1xuICAgICAgbmFtZSxcbiAgICAgIC4uLnRyYW5zZm9ybWVyXG4gICAgfSk7XG4gIH1cbiAgYWxsb3dFcnJvclByb3BzKC4uLnByb3BzKSB7XG4gICAgdGhpcy5hbGxvd2VkRXJyb3JQcm9wcy5wdXNoKC4uLnByb3BzKTtcbiAgfVxufTtcblN1cGVySlNPTi5kZWZhdWx0SW5zdGFuY2UgPSBuZXcgU3VwZXJKU09OKCk7XG5TdXBlckpTT04uc2VyaWFsaXplID0gU3VwZXJKU09OLmRlZmF1bHRJbnN0YW5jZS5zZXJpYWxpemUuYmluZChTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlKTtcblN1cGVySlNPTi5kZXNlcmlhbGl6ZSA9IFN1cGVySlNPTi5kZWZhdWx0SW5zdGFuY2UuZGVzZXJpYWxpemUuYmluZChTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlKTtcblN1cGVySlNPTi5zdHJpbmdpZnkgPSBTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlLnN0cmluZ2lmeS5iaW5kKFN1cGVySlNPTi5kZWZhdWx0SW5zdGFuY2UpO1xuU3VwZXJKU09OLnBhcnNlID0gU3VwZXJKU09OLmRlZmF1bHRJbnN0YW5jZS5wYXJzZS5iaW5kKFN1cGVySlNPTi5kZWZhdWx0SW5zdGFuY2UpO1xuU3VwZXJKU09OLnJlZ2lzdGVyQ2xhc3MgPSBTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlLnJlZ2lzdGVyQ2xhc3MuYmluZChTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlKTtcblN1cGVySlNPTi5yZWdpc3RlclN5bWJvbCA9IFN1cGVySlNPTi5kZWZhdWx0SW5zdGFuY2UucmVnaXN0ZXJTeW1ib2wuYmluZChTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlKTtcblN1cGVySlNPTi5yZWdpc3RlckN1c3RvbSA9IFN1cGVySlNPTi5kZWZhdWx0SW5zdGFuY2UucmVnaXN0ZXJDdXN0b20uYmluZChTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlKTtcblN1cGVySlNPTi5hbGxvd0Vycm9yUHJvcHMgPSBTdXBlckpTT04uZGVmYXVsdEluc3RhbmNlLmFsbG93RXJyb3JQcm9wcy5iaW5kKFN1cGVySlNPTi5kZWZhdWx0SW5zdGFuY2UpO1xudmFyIHNlcmlhbGl6ZSA9IFN1cGVySlNPTi5zZXJpYWxpemU7XG5TdXBlckpTT04uZGVzZXJpYWxpemU7XG52YXIgc3RyaW5naWZ5ID0gU3VwZXJKU09OLnN0cmluZ2lmeTtcblN1cGVySlNPTi5wYXJzZTtcblN1cGVySlNPTi5yZWdpc3RlckNsYXNzO1xuU3VwZXJKU09OLnJlZ2lzdGVyQ3VzdG9tO1xuU3VwZXJKU09OLnJlZ2lzdGVyU3ltYm9sO1xuU3VwZXJKU09OLmFsbG93RXJyb3JQcm9wcztcblxuLy8gc3JjL3V0aWxzLnRzeFxuZnVuY3Rpb24gZ2V0UXVlcnlTdGF0dXNMYWJlbChxdWVyeSkge1xuICByZXR1cm4gcXVlcnkuc3RhdGUuZmV0Y2hTdGF0dXMgPT09IFwiZmV0Y2hpbmdcIiA/IFwiZmV0Y2hpbmdcIiA6ICFxdWVyeS5nZXRPYnNlcnZlcnNDb3VudCgpID8gXCJpbmFjdGl2ZVwiIDogcXVlcnkuc3RhdGUuZmV0Y2hTdGF0dXMgPT09IFwicGF1c2VkXCIgPyBcInBhdXNlZFwiIDogcXVlcnkuaXNTdGFsZSgpID8gXCJzdGFsZVwiIDogXCJmcmVzaFwiO1xufVxuZnVuY3Rpb24gZ2V0U2lkZWRQcm9wKHByb3AsIHNpZGUpIHtcbiAgcmV0dXJuIGAke3Byb3B9JHtzaWRlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc2lkZS5zbGljZSgxKX1gO1xufVxuZnVuY3Rpb24gZ2V0UXVlcnlTdGF0dXNDb2xvcih7XG4gIHF1ZXJ5U3RhdGUsXG4gIG9ic2VydmVyQ291bnQsXG4gIGlzU3RhbGVcbn0pIHtcbiAgcmV0dXJuIHF1ZXJ5U3RhdGUuZmV0Y2hTdGF0dXMgPT09IFwiZmV0Y2hpbmdcIiA/IFwiYmx1ZVwiIDogIW9ic2VydmVyQ291bnQgPyBcImdyYXlcIiA6IHF1ZXJ5U3RhdGUuZmV0Y2hTdGF0dXMgPT09IFwicGF1c2VkXCIgPyBcInB1cnBsZVwiIDogaXNTdGFsZSA/IFwieWVsbG93XCIgOiBcImdyZWVuXCI7XG59XG5mdW5jdGlvbiBnZXRNdXRhdGlvblN0YXR1c0NvbG9yKHtcbiAgc3RhdHVzLFxuICBpc1BhdXNlZFxufSkge1xuICByZXR1cm4gaXNQYXVzZWQgPyBcInB1cnBsZVwiIDogc3RhdHVzID09PSBcImVycm9yXCIgPyBcInJlZFwiIDogc3RhdHVzID09PSBcInBlbmRpbmdcIiA/IFwieWVsbG93XCIgOiBzdGF0dXMgPT09IFwic3VjY2Vzc1wiID8gXCJncmVlblwiIDogXCJncmF5XCI7XG59XG5mdW5jdGlvbiBnZXRRdWVyeVN0YXR1c0NvbG9yQnlMYWJlbChsYWJlbCkge1xuICByZXR1cm4gbGFiZWwgPT09IFwiZnJlc2hcIiA/IFwiZ3JlZW5cIiA6IGxhYmVsID09PSBcInN0YWxlXCIgPyBcInllbGxvd1wiIDogbGFiZWwgPT09IFwicGF1c2VkXCIgPyBcInB1cnBsZVwiIDogbGFiZWwgPT09IFwiaW5hY3RpdmVcIiA/IFwiZ3JheVwiIDogXCJibHVlXCI7XG59XG52YXIgZGlzcGxheVZhbHVlID0gKHZhbHVlLCBiZWF1dGlmeSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBqc29uXG4gIH0gPSBzZXJpYWxpemUodmFsdWUpO1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgYmVhdXRpZnkgPyAyIDogdm9pZCAwKTtcbn07XG52YXIgZ2V0U3RhdHVzUmFuayA9IChxKSA9PiBxLnN0YXRlLmZldGNoU3RhdHVzICE9PSBcImlkbGVcIiA/IDAgOiAhcS5nZXRPYnNlcnZlcnNDb3VudCgpID8gMyA6IHEuaXNTdGFsZSgpID8gMiA6IDE7XG52YXIgcXVlcnlIYXNoU29ydCA9IChhLCBiKSA9PiBhLnF1ZXJ5SGFzaC5sb2NhbGVDb21wYXJlKGIucXVlcnlIYXNoKTtcbnZhciBkYXRlU29ydCA9IChhLCBiKSA9PiBhLnN0YXRlLmRhdGFVcGRhdGVkQXQgPCBiLnN0YXRlLmRhdGFVcGRhdGVkQXQgPyAxIDogLTE7XG52YXIgc3RhdHVzQW5kRGF0ZVNvcnQgPSAoYSwgYikgPT4ge1xuICBpZiAoZ2V0U3RhdHVzUmFuayhhKSA9PT0gZ2V0U3RhdHVzUmFuayhiKSkge1xuICAgIHJldHVybiBkYXRlU29ydChhLCBiKTtcbiAgfVxuICByZXR1cm4gZ2V0U3RhdHVzUmFuayhhKSA+IGdldFN0YXR1c1JhbmsoYikgPyAxIDogLTE7XG59O1xudmFyIHNvcnRGbnMgPSB7XG4gIHN0YXR1czogc3RhdHVzQW5kRGF0ZVNvcnQsXG4gIFwicXVlcnkgaGFzaFwiOiBxdWVyeUhhc2hTb3J0LFxuICBcImxhc3QgdXBkYXRlZFwiOiBkYXRlU29ydFxufTtcbnZhciBnZXRNdXRhdGlvblN0YXR1c1JhbmsgPSAobSkgPT4gbS5zdGF0ZS5pc1BhdXNlZCA/IDAgOiBtLnN0YXRlLnN0YXR1cyA9PT0gXCJlcnJvclwiID8gMiA6IG0uc3RhdGUuc3RhdHVzID09PSBcInBlbmRpbmdcIiA/IDEgOiAzO1xudmFyIG11dGF0aW9uRGF0ZVNvcnQgPSAoYSwgYikgPT4gYS5zdGF0ZS5zdWJtaXR0ZWRBdCA8IGIuc3RhdGUuc3VibWl0dGVkQXQgPyAxIDogLTE7XG52YXIgbXV0YXRpb25TdGF0dXNTb3J0ID0gKGEsIGIpID0+IHtcbiAgaWYgKGdldE11dGF0aW9uU3RhdHVzUmFuayhhKSA9PT0gZ2V0TXV0YXRpb25TdGF0dXNSYW5rKGIpKSB7XG4gICAgcmV0dXJuIG11dGF0aW9uRGF0ZVNvcnQoYSwgYik7XG4gIH1cbiAgcmV0dXJuIGdldE11dGF0aW9uU3RhdHVzUmFuayhhKSA+IGdldE11dGF0aW9uU3RhdHVzUmFuayhiKSA/IDEgOiAtMTtcbn07XG52YXIgbXV0YXRpb25Tb3J0Rm5zID0ge1xuICBzdGF0dXM6IG11dGF0aW9uU3RhdHVzU29ydCxcbiAgXCJsYXN0IHVwZGF0ZWRcIjogbXV0YXRpb25EYXRlU29ydFxufTtcbnZhciBjb252ZXJ0UmVtVG9QaXhlbHMgPSAocmVtKSA9PiB7XG4gIHJldHVybiByZW0gKiBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5mb250U2l6ZSk7XG59O1xudmFyIGdldFByZWZlcnJlZENvbG9yU2NoZW1lID0gKCkgPT4ge1xuICBjb25zdCBbY29sb3JTY2hlbWUsIHNldENvbG9yU2NoZW1lXSA9IGNyZWF0ZVNpZ25hbChcImRhcmtcIik7XG4gIG9uTW91bnQoKCkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoXCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCIpO1xuICAgIHNldENvbG9yU2NoZW1lKHF1ZXJ5Lm1hdGNoZXMgPyBcImRhcmtcIiA6IFwibGlnaHRcIik7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoZSkgPT4ge1xuICAgICAgc2V0Q29sb3JTY2hlbWUoZS5tYXRjaGVzID8gXCJkYXJrXCIgOiBcImxpZ2h0XCIpO1xuICAgIH07XG4gICAgcXVlcnkuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBsaXN0ZW5lcik7XG4gICAgb25DbGVhbnVwKCgpID0+IHF1ZXJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgbGlzdGVuZXIpKTtcbiAgfSk7XG4gIHJldHVybiBjb2xvclNjaGVtZTtcbn07XG52YXIgdXBkYXRlTmVzdGVkRGF0YUJ5UGF0aCA9IChvbGREYXRhLCB1cGRhdGVQYXRoLCB2YWx1ZSkgPT4ge1xuICBpZiAodXBkYXRlUGF0aC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKG9sZERhdGEgaW5zdGFuY2VvZiBNYXApIHtcbiAgICBjb25zdCBuZXdEYXRhID0gbmV3IE1hcChvbGREYXRhKTtcbiAgICBpZiAodXBkYXRlUGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICAgIG5ld0RhdGEuc2V0KHVwZGF0ZVBhdGhbMF0sIHZhbHVlKTtcbiAgICAgIHJldHVybiBuZXdEYXRhO1xuICAgIH1cbiAgICBjb25zdCBbaGVhZCwgLi4udGFpbF0gPSB1cGRhdGVQYXRoO1xuICAgIG5ld0RhdGEuc2V0KGhlYWQsIHVwZGF0ZU5lc3RlZERhdGFCeVBhdGgobmV3RGF0YS5nZXQoaGVhZCksIHRhaWwsIHZhbHVlKSk7XG4gICAgcmV0dXJuIG5ld0RhdGE7XG4gIH1cbiAgaWYgKG9sZERhdGEgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICBjb25zdCBzZXRBc0FycmF5ID0gdXBkYXRlTmVzdGVkRGF0YUJ5UGF0aChBcnJheS5mcm9tKG9sZERhdGEpLCB1cGRhdGVQYXRoLCB2YWx1ZSk7XG4gICAgcmV0dXJuIG5ldyBTZXQoc2V0QXNBcnJheSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkob2xkRGF0YSkpIHtcbiAgICBjb25zdCBuZXdEYXRhID0gWy4uLm9sZERhdGFdO1xuICAgIGlmICh1cGRhdGVQYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgICAgbmV3RGF0YVt1cGRhdGVQYXRoWzBdXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIG5ld0RhdGE7XG4gICAgfVxuICAgIGNvbnN0IFtoZWFkLCAuLi50YWlsXSA9IHVwZGF0ZVBhdGg7XG4gICAgbmV3RGF0YVtoZWFkXSA9IHVwZGF0ZU5lc3RlZERhdGFCeVBhdGgobmV3RGF0YVtoZWFkXSwgdGFpbCwgdmFsdWUpO1xuICAgIHJldHVybiBuZXdEYXRhO1xuICB9XG4gIGlmIChvbGREYXRhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgY29uc3QgbmV3RGF0YSA9IHtcbiAgICAgIC4uLm9sZERhdGFcbiAgICB9O1xuICAgIGlmICh1cGRhdGVQYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgICAgbmV3RGF0YVt1cGRhdGVQYXRoWzBdXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIG5ld0RhdGE7XG4gICAgfVxuICAgIGNvbnN0IFtoZWFkLCAuLi50YWlsXSA9IHVwZGF0ZVBhdGg7XG4gICAgbmV3RGF0YVtoZWFkXSA9IHVwZGF0ZU5lc3RlZERhdGFCeVBhdGgobmV3RGF0YVtoZWFkXSwgdGFpbCwgdmFsdWUpO1xuICAgIHJldHVybiBuZXdEYXRhO1xuICB9XG4gIHJldHVybiBvbGREYXRhO1xufTtcbnZhciBkZWxldGVOZXN0ZWREYXRhQnlQYXRoID0gKG9sZERhdGEsIGRlbGV0ZVBhdGgpID0+IHtcbiAgaWYgKG9sZERhdGEgaW5zdGFuY2VvZiBNYXApIHtcbiAgICBjb25zdCBuZXdEYXRhID0gbmV3IE1hcChvbGREYXRhKTtcbiAgICBpZiAoZGVsZXRlUGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICAgIG5ld0RhdGEuZGVsZXRlKGRlbGV0ZVBhdGhbMF0pO1xuICAgICAgcmV0dXJuIG5ld0RhdGE7XG4gICAgfVxuICAgIGNvbnN0IFtoZWFkLCAuLi50YWlsXSA9IGRlbGV0ZVBhdGg7XG4gICAgbmV3RGF0YS5zZXQoaGVhZCwgZGVsZXRlTmVzdGVkRGF0YUJ5UGF0aChuZXdEYXRhLmdldChoZWFkKSwgdGFpbCkpO1xuICAgIHJldHVybiBuZXdEYXRhO1xuICB9XG4gIGlmIChvbGREYXRhIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgY29uc3Qgc2V0QXNBcnJheSA9IGRlbGV0ZU5lc3RlZERhdGFCeVBhdGgoQXJyYXkuZnJvbShvbGREYXRhKSwgZGVsZXRlUGF0aCk7XG4gICAgcmV0dXJuIG5ldyBTZXQoc2V0QXNBcnJheSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkob2xkRGF0YSkpIHtcbiAgICBjb25zdCBuZXdEYXRhID0gWy4uLm9sZERhdGFdO1xuICAgIGlmIChkZWxldGVQYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIG5ld0RhdGEuZmlsdGVyKChfLCBpZHgpID0+IGlkeC50b1N0cmluZygpICE9PSBkZWxldGVQYXRoWzBdKTtcbiAgICB9XG4gICAgY29uc3QgW2hlYWQsIC4uLnRhaWxdID0gZGVsZXRlUGF0aDtcbiAgICBuZXdEYXRhW2hlYWRdID0gZGVsZXRlTmVzdGVkRGF0YUJ5UGF0aChuZXdEYXRhW2hlYWRdLCB0YWlsKTtcbiAgICByZXR1cm4gbmV3RGF0YTtcbiAgfVxuICBpZiAob2xkRGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIGNvbnN0IG5ld0RhdGEgPSB7XG4gICAgICAuLi5vbGREYXRhXG4gICAgfTtcbiAgICBpZiAoZGVsZXRlUGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGRlbGV0ZSBuZXdEYXRhW2RlbGV0ZVBhdGhbMF1dO1xuICAgICAgcmV0dXJuIG5ld0RhdGE7XG4gICAgfVxuICAgIGNvbnN0IFtoZWFkLCAuLi50YWlsXSA9IGRlbGV0ZVBhdGg7XG4gICAgbmV3RGF0YVtoZWFkXSA9IGRlbGV0ZU5lc3RlZERhdGFCeVBhdGgobmV3RGF0YVtoZWFkXSwgdGFpbCk7XG4gICAgcmV0dXJuIG5ld0RhdGE7XG4gIH1cbiAgcmV0dXJuIG9sZERhdGE7XG59O1xudmFyIHNldHVwU3R5bGVTaGVldCA9IChub25jZSwgdGFyZ2V0KSA9PiB7XG4gIGlmICghbm9uY2UpIHJldHVybjtcbiAgY29uc3Qgc3R5bGVFeGlzdHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI19nb29iZXJcIikgfHwgdGFyZ2V0Py5xdWVyeVNlbGVjdG9yKFwiI19nb29iZXJcIik7XG4gIGlmIChzdHlsZUV4aXN0cykgcmV0dXJuO1xuICBjb25zdCBzdHlsZVRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgY29uc3QgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKTtcbiAgc3R5bGVUYWcuYXBwZW5kQ2hpbGQodGV4dE5vZGUpO1xuICBzdHlsZVRhZy5pZCA9IFwiX2dvb2JlclwiO1xuICBzdHlsZVRhZy5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIGlmICh0YXJnZXQpIHtcbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGVUYWcpO1xuICB9IGVsc2Uge1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVUYWcpO1xuICB9XG59O1xuXG5leHBvcnQgeyAkVFJBQ0ssIERFViwgRHluYW1pYywgRm9yLCBJbmRleCwgTWF0Y2gsIFBvcnRhbCwgU2hvdywgU3dpdGNoLCBhZGRFdmVudExpc3RlbmVyLCBiYXRjaCwgY2xhc3NOYW1lLCBjbGVhckRlbGVnYXRlZEV2ZW50cywgY29udmVydFJlbVRvUGl4ZWxzLCBjcmVhdGVDb21wb25lbnQsIGNyZWF0ZUNvbXB1dGVkLCBjcmVhdGVDb250ZXh0LCBjcmVhdGVFZmZlY3QsIGNyZWF0ZU1lbW8sIGNyZWF0ZVJlbmRlckVmZmVjdCwgY3JlYXRlUm9vdCwgY3JlYXRlU2lnbmFsLCBjcmVhdGVVbmlxdWVJZCwgZGVsZWdhdGVFdmVudHMsIGRlbGV0ZU5lc3RlZERhdGFCeVBhdGgsIGRpc3BsYXlWYWx1ZSwgZ2V0TXV0YXRpb25TdGF0dXNDb2xvciwgZ2V0T3duZXIsIGdldFByZWZlcnJlZENvbG9yU2NoZW1lLCBnZXRRdWVyeVN0YXR1c0NvbG9yLCBnZXRRdWVyeVN0YXR1c0NvbG9yQnlMYWJlbCwgZ2V0UXVlcnlTdGF0dXNMYWJlbCwgZ2V0U2lkZWRQcm9wLCBpbnNlcnQsIGlzU2VydmVyLCBsYXp5LCBtZXJnZVByb3BzLCBtdXRhdGlvblNvcnRGbnMsIG9uLCBvbkNsZWFudXAsIG9uTW91bnQsIHJlbmRlciwgc2VyaWFsaXplLCBzZXRBdHRyaWJ1dGUsIHNldHVwU3R5bGVTaGVldCwgc29ydEZucywgc3BsaXRQcm9wcywgc3ByZWFkLCBzdHJpbmdpZnksIHRlbXBsYXRlLCB1bnRyYWNrLCB1cGRhdGVOZXN0ZWREYXRhQnlQYXRoLCB1c2UsIHVzZUNvbnRleHQsIHVzZVRyYW5zaXRpb24gfTtcbiIsICJpbXBvcnQgeyBzb3J0Rm5zLCBtdXRhdGlvblNvcnRGbnMsIGNyZWF0ZUNvbnRleHQsIHNwbGl0UHJvcHMsIGNyZWF0ZU1lbW8sIGNyZWF0ZUNvbXBvbmVudCwgbWVyZ2VQcm9wcywgY3JlYXRlVW5pcXVlSWQsIGNyZWF0ZVNpZ25hbCwgY3JlYXRlRWZmZWN0LCBvbkNsZWFudXAsIFNob3csIG9uLCBkZWxlZ2F0ZUV2ZW50cywgRHluYW1pYywgdXNlQ29udGV4dCwgdGVtcGxhdGUsIGNyZWF0ZVJlbmRlckVmZmVjdCwgc2V0QXR0cmlidXRlLCBQb3J0YWwsIHVudHJhY2ssIGlzU2VydmVyLCBvbk1vdW50LCBjcmVhdGVDb21wdXRlZCwgZ2V0T3duZXIsIHVzZSwgaW5zZXJ0LCBjbGFzc05hbWUsIGdldFNpZGVkUHJvcCwgZ2V0UXVlcnlTdGF0dXNDb2xvciwgZ2V0TXV0YXRpb25TdGF0dXNDb2xvciwgZ2V0UXVlcnlTdGF0dXNMYWJlbCwgc3ByZWFkLCBnZXRRdWVyeVN0YXR1c0NvbG9yQnlMYWJlbCwgZGlzcGxheVZhbHVlLCBGb3IsIGJhdGNoLCBjbGVhckRlbGVnYXRlZEV2ZW50cywgY29udmVydFJlbVRvUGl4ZWxzLCBzZXJpYWxpemUsIEluZGV4LCB1cGRhdGVOZXN0ZWREYXRhQnlQYXRoLCAkVFJBQ0ssIGNyZWF0ZVJvb3QsIERFViwgYWRkRXZlbnRMaXN0ZW5lciwgc3RyaW5naWZ5LCBTd2l0Y2gsIE1hdGNoLCBkZWxldGVOZXN0ZWREYXRhQnlQYXRoLCB1c2VUcmFuc2l0aW9uIH0gZnJvbSAnLi9IUjdZWFo1SC5qcyc7XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac29saWQtcHJpbWl0aXZlcyt1dGlsc0A2LjIuM19zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQHNvbGlkLXByaW1pdGl2ZXMvdXRpbHMvZGlzdC9jaHVuay9SNTY3NVlNVS5qc1xudmFyIGlzQ2xpZW50ID0gIWlzU2VydmVyO1xudmFyIGlzRGV2ID0gaXNDbGllbnQgJiYgISFERVY7XG52YXIgbm9vcCA9ICgpID0+IHZvaWQgMDtcbnZhciBpc05vbk51bGxhYmxlID0gKGkyKSA9PiBpMiAhPSBudWxsO1xudmFyIGZpbHRlck5vbk51bGxhYmxlID0gKGFycikgPT4gYXJyLmZpbHRlcihpc05vbk51bGxhYmxlKTtcbmZ1bmN0aW9uIGNoYWluKGNhbGxiYWNrcykge1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIGNhbGxiYWNrcylcbiAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKC4uLmFyZ3MpO1xuICB9O1xufVxudmFyIGFjY2VzcyA9ICh2KSA9PiB0eXBlb2YgdiA9PT0gXCJmdW5jdGlvblwiICYmICF2Lmxlbmd0aCA/IHYoKSA6IHY7XG52YXIgYXNBcnJheSA9ICh2YWx1ZSkgPT4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlID8gW3ZhbHVlXSA6IFtdO1xuZnVuY3Rpb24gYWNjZXNzV2l0aCh2YWx1ZU9yRm4sIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZU9yRm4gPT09IFwiZnVuY3Rpb25cIiA/IHZhbHVlT3JGbiguLi5hcmdzKSA6IHZhbHVlT3JGbjtcbn1cbnZhciB0cnlPbkNsZWFudXAgPSBpc0RldiA/IChmbikgPT4gZ2V0T3duZXIoKSA/IG9uQ2xlYW51cChmbikgOiBmbiA6IG9uQ2xlYW51cDtcbmZ1bmN0aW9uIGhhbmRsZURpZmZBcnJheShjdXJyZW50LCBwcmV2LCBoYW5kbGVBZGRlZCwgaGFuZGxlUmVtb3ZlZCkge1xuICBjb25zdCBjdXJyTGVuZ3RoID0gY3VycmVudC5sZW5ndGg7XG4gIGNvbnN0IHByZXZMZW5ndGggPSBwcmV2Lmxlbmd0aDtcbiAgbGV0IGkyID0gMDtcbiAgaWYgKCFwcmV2TGVuZ3RoKSB7XG4gICAgZm9yICg7IGkyIDwgY3Vyckxlbmd0aDsgaTIrKylcbiAgICAgIGhhbmRsZUFkZGVkKGN1cnJlbnRbaTJdKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFjdXJyTGVuZ3RoKSB7XG4gICAgZm9yICg7IGkyIDwgcHJldkxlbmd0aDsgaTIrKylcbiAgICAgIGhhbmRsZVJlbW92ZWQocHJldltpMl0pO1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKDsgaTIgPCBwcmV2TGVuZ3RoOyBpMisrKSB7XG4gICAgaWYgKHByZXZbaTJdICE9PSBjdXJyZW50W2kyXSlcbiAgICAgIGJyZWFrO1xuICB9XG4gIGxldCBwcmV2RWw7XG4gIGxldCBjdXJyRWw7XG4gIHByZXYgPSBwcmV2LnNsaWNlKGkyKTtcbiAgY3VycmVudCA9IGN1cnJlbnQuc2xpY2UoaTIpO1xuICBmb3IgKHByZXZFbCBvZiBwcmV2KSB7XG4gICAgaWYgKCFjdXJyZW50LmluY2x1ZGVzKHByZXZFbCkpXG4gICAgICBoYW5kbGVSZW1vdmVkKHByZXZFbCk7XG4gIH1cbiAgZm9yIChjdXJyRWwgb2YgY3VycmVudCkge1xuICAgIGlmICghcHJldi5pbmNsdWRlcyhjdXJyRWwpKVxuICAgICAgaGFuZGxlQWRkZWQoY3VyckVsKTtcbiAgfVxufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHNvbGlkLXByaW1pdGl2ZXMrc3RvcmFnZUAxLjMuMTFfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Bzb2xpZC1wcmltaXRpdmVzL3N0b3JhZ2UvZGlzdC9pbmRleC5qc1xuZnVuY3Rpb24gY3JlYXRlU3RvcmFnZShwcm9wcykge1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBoYW5kbGVFcnJvciA9IHByb3BzPy50aHJvdyA/IChlcnIsIGZhbGxiYWNrKSA9PiB7XG4gICAgc2V0RXJyb3IoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoZmFsbGJhY2spKTtcbiAgICB0aHJvdyBlcnI7XG4gIH0gOiAoZXJyLCBmYWxsYmFjaykgPT4ge1xuICAgIHNldEVycm9yKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKGZhbGxiYWNrKSk7XG4gIH07XG4gIGNvbnN0IGFwaXMgPSBwcm9wcz8uYXBpID8gQXJyYXkuaXNBcnJheShwcm9wcy5hcGkpID8gcHJvcHMuYXBpIDogW3Byb3BzLmFwaV0gOiBbZ2xvYmFsVGhpcy5sb2NhbFN0b3JhZ2VdLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3QgcHJlZml4ID0gcHJvcHM/LnByZWZpeCA/IGAke3Byb3BzLnByZWZpeH0uYCA6IFwiXCI7XG4gIGNvbnN0IHNpZ25hbHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBjb25zdCBzdG9yZSA9IG5ldyBQcm94eShcbiAgICB7fSxcbiAgICB7XG4gICAgICBnZXQoXywga2V5KSB7XG4gICAgICAgIGxldCBub2RlID0gc2lnbmFscy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgbm9kZSA9IGNyZWF0ZVNpZ25hbCh2b2lkIDAsIHsgZXF1YWxzOiBmYWxzZSB9KTtcbiAgICAgICAgICBzaWduYWxzLnNldChrZXksIG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIG5vZGVbMF0oKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBhcGlzLnJlZHVjZShcbiAgICAgICAgICAocmVzdWx0LCBhcGkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwgfHwgIWFwaSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGFwaS5nZXRJdGVtKGAke3ByZWZpeH0ke2tleX1gKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGBFcnJvciByZWFkaW5nICR7cHJlZml4fSR7a2V5fSBmcm9tICR7YXBpW1wibmFtZVwiXX1gKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBudWxsXG4gICAgICAgICk7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiBwcm9wcz8uZGVzZXJpYWxpemVyKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BzLmRlc2VyaWFsaXplcih2YWx1ZSwga2V5LCBwcm9wcy5vcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuICBjb25zdCBzZXR0ZXIgPSAoa2V5LCB2YWx1ZSwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGZpbHRlcmVkVmFsdWUgPSBwcm9wcz8uc2VyaWFsaXplciA/IHByb3BzLnNlcmlhbGl6ZXIodmFsdWUsIGtleSwgb3B0aW9ucyA/PyBwcm9wcy5vcHRpb25zKSA6IHZhbHVlO1xuICAgIGNvbnN0IGFwaUtleSA9IGAke3ByZWZpeH0ke2tleX1gO1xuICAgIGFwaXMuZm9yRWFjaCgoYXBpKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhcGkuZ2V0SXRlbShhcGlLZXkpICE9PSBmaWx0ZXJlZFZhbHVlICYmIGFwaS5zZXRJdGVtKGFwaUtleSwgZmlsdGVyZWRWYWx1ZSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBgRXJyb3Igc2V0dGluZyAke3ByZWZpeH0ke2tleX0gdG8gJHtmaWx0ZXJlZFZhbHVlfSBpbiAke2FwaS5uYW1lfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG5vZGUgPSBzaWduYWxzLmdldChrZXkpO1xuICAgIG5vZGUgJiYgbm9kZVsxXSgpO1xuICB9O1xuICBjb25zdCByZW1vdmUgPSAoa2V5KSA9PiBhcGlzLmZvckVhY2goKGFwaSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhcGkucmVtb3ZlSXRlbShgJHtwcmVmaXh9JHtrZXl9YCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBoYW5kbGVFcnJvcihlcnIsIGBFcnJvciByZW1vdmluZyAke3ByZWZpeH0ke2tleX0gZnJvbSAke2FwaS5uYW1lfWApO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGNsZWFyID0gKCkgPT4gYXBpcy5mb3JFYWNoKChhcGkpID0+IHtcbiAgICB0cnkge1xuICAgICAgYXBpLmNsZWFyKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBoYW5kbGVFcnJvcihlcnIsIGBFcnJvciBjbGVhcmluZyAke2FwaS5uYW1lfWApO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHRvSlNPTiA9ICgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBjb25zdCBhZGRWYWx1ZSA9IChrZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXJlc3VsdC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkVmFsdWUgPSB2YWx1ZSAmJiBwcm9wcz8uZGVzZXJpYWxpemVyID8gcHJvcHMuZGVzZXJpYWxpemVyKHZhbHVlLCBrZXksIHByb3BzLm9wdGlvbnMpIDogdmFsdWU7XG4gICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBmaWx0ZXJlZFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBhcGlzLmZvckVhY2goKGFwaSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBhcGkuZ2V0QWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgbGV0IHZhbHVlcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YWx1ZXMgPSBhcGkuZ2V0QWxsKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGVyciwgYEVycm9yIGdldHRpbmcgYWxsIHZhbHVlcyBmcm9tIGluICR7YXBpLm5hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgYWRkVmFsdWUoa2V5LCB2YWx1ZXNba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBpbmRleCA9IDAsIGtleTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB3aGlsZSAoa2V5ID0gYXBpLmtleShpbmRleCsrKSkge1xuICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICBhZGRWYWx1ZShrZXksIGFwaS5nZXRJdGVtKGtleSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBgRXJyb3IgZ2V0dGluZyBhbGwgdmFsdWVzIGZyb20gJHthcGkubmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIHByb3BzPy5zeW5jICE9PSBmYWxzZSAmJiBvbk1vdW50KCgpID0+IHtcbiAgICBjb25zdCBsaXN0ZW5lciA9IChldikgPT4ge1xuICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgIGFwaXMuZm9yRWFjaCgoYXBpKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKGFwaSAhPT0gZXYuc3RvcmFnZUFyZWEgJiYgZXYua2V5ICYmIGV2Lm5ld1ZhbHVlICE9PSBhcGkuZ2V0SXRlbShldi5rZXkpKSB7XG4gICAgICAgICAgICBldi5uZXdWYWx1ZSA/IGFwaS5zZXRJdGVtKGV2LmtleSwgZXYubmV3VmFsdWUpIDogYXBpLnJlbW92ZUl0ZW0oZXYua2V5KTtcbiAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoXG4gICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICBgRXJyb3Igc3luY2hpbmcgYXBpICR7YXBpLm5hbWV9IGZyb20gc3RvcmFnZSBldmVudCAoJHtldi5rZXl9PSR7ZXYubmV3VmFsdWV9KWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNoYW5nZWQgJiYgZXYua2V5ICYmIHNpZ25hbHMuZ2V0KGV2LmtleSk/LlsxXSgpO1xuICAgIH07XG4gICAgaWYgKFwiYWRkRXZlbnRMaXN0ZW5lclwiIGluIGdsb2JhbFRoaXMpIHtcbiAgICAgIGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcihcInN0b3JhZ2VcIiwgbGlzdGVuZXIpO1xuICAgICAgb25DbGVhbnVwKCgpID0+IGdsb2JhbFRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInN0b3JhZ2VcIiwgbGlzdGVuZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpcy5mb3JFYWNoKChhcGkpID0+IGFwaS5hZGRFdmVudExpc3RlbmVyPy4oXCJzdG9yYWdlXCIsIGxpc3RlbmVyKSk7XG4gICAgICBvbkNsZWFudXAoKCkgPT4gYXBpcy5mb3JFYWNoKChhcGkpID0+IGFwaS5yZW1vdmVFdmVudExpc3RlbmVyPy4oXCJzdG9yYWdlXCIsIGxpc3RlbmVyKSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBbXG4gICAgc3RvcmUsXG4gICAgc2V0dGVyLFxuICAgIHtcbiAgICAgIGNsZWFyLFxuICAgICAgZXJyb3IsXG4gICAgICByZW1vdmUsXG4gICAgICB0b0pTT05cbiAgICB9XG4gIF07XG59XG52YXIgY3JlYXRlTG9jYWxTdG9yYWdlID0gY3JlYXRlU3RvcmFnZTtcbnZhciBhZGRDbGVhck1ldGhvZCA9IChzdG9yYWdlKSA9PiB7XG4gIGlmICh0eXBlb2Ygc3RvcmFnZS5jbGVhciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIHN0b3JhZ2U7XG4gIH1cbiAgc3RvcmFnZS5jbGVhciA9ICgpID0+IHtcbiAgICBsZXQga2V5O1xuICAgIHdoaWxlIChrZXkgPSBzdG9yYWdlLmtleSgwKSkge1xuICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gc3RvcmFnZTtcbn07XG52YXIgc2VyaWFsaXplQ29va2llT3B0aW9ucyA9IChvcHRpb25zKSA9PiB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIGxldCBtZW1vID0gXCJcIjtcbiAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBvcHRpb25zW2tleV07XG4gICAgbWVtbyArPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBgOyAke2tleX09JHt2YWx1ZS50b1VUQ1N0cmluZygpfWAgOiB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiID8gYDsgJHtrZXl9YCA6IGA7ICR7a2V5fT0ke3ZhbHVlfWA7XG4gIH1cbiAgcmV0dXJuIG1lbW87XG59O1xudmFyIGNvb2tpZVN0b3JhZ2UgPSBhZGRDbGVhck1ldGhvZCh7XG4gIF9jb29raWVzOiBbZ2xvYmFsVGhpcy5kb2N1bWVudCwgXCJjb29raWVcIl0sXG4gIGdldEl0ZW06IChrZXkpID0+IGNvb2tpZVN0b3JhZ2UuX2Nvb2tpZXNbMF1bY29va2llU3RvcmFnZS5fY29va2llc1sxXV0ubWF0Y2goXCIoXnw7KVxcXFxzKlwiICsga2V5ICsgXCJcXFxccyo9XFxcXHMqKFteO10rKVwiKT8ucG9wKCkgPz8gbnVsbCxcbiAgc2V0SXRlbTogKGtleSwgdmFsdWUsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IGNvb2tpZVN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIGNvb2tpZVN0b3JhZ2UuX2Nvb2tpZXNbMF1bY29va2llU3RvcmFnZS5fY29va2llc1sxXV0gPSBgJHtrZXl9PSR7dmFsdWV9JHtzZXJpYWxpemVDb29raWVPcHRpb25zKFxuICAgICAgb3B0aW9uc1xuICAgICl9YDtcbiAgICBjb25zdCBzdG9yYWdlRXZlbnQgPSBPYmplY3QuYXNzaWduKG5ldyBFdmVudChcInN0b3JhZ2VcIiksIHtcbiAgICAgIGtleSxcbiAgICAgIG9sZFZhbHVlLFxuICAgICAgbmV3VmFsdWU6IHZhbHVlLFxuICAgICAgdXJsOiBnbG9iYWxUaGlzLmRvY3VtZW50LlVSTCxcbiAgICAgIHN0b3JhZ2VBcmVhOiBjb29raWVTdG9yYWdlXG4gICAgfSk7XG4gICAgd2luZG93LmRpc3BhdGNoRXZlbnQoc3RvcmFnZUV2ZW50KTtcbiAgfSxcbiAgcmVtb3ZlSXRlbTogKGtleSkgPT4ge1xuICAgIGNvb2tpZVN0b3JhZ2UuX2Nvb2tpZXNbMF1bY29va2llU3RvcmFnZS5fY29va2llc1sxXV0gPSBgJHtrZXl9PWRlbGV0ZWQke3NlcmlhbGl6ZUNvb2tpZU9wdGlvbnMoe1xuICAgICAgZXhwaXJlczogLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKDApXG4gICAgfSl9YDtcbiAgfSxcbiAga2V5OiAoaW5kZXgpID0+IHtcbiAgICBsZXQga2V5ID0gbnVsbDtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGNvb2tpZVN0b3JhZ2UuX2Nvb2tpZXNbMF1bY29va2llU3RvcmFnZS5fY29va2llc1sxXV0ucmVwbGFjZShcbiAgICAgIC8oPzpefDspXFxzKiguKz8pXFxzKj1cXHMqW147XSsvZyxcbiAgICAgIChfLCBmb3VuZCkgPT4ge1xuICAgICAgICBpZiAoIWtleSAmJiBmb3VuZCAmJiBjb3VudCsrID09PSBpbmRleCkge1xuICAgICAgICAgIGtleSA9IGZvdW5kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIGtleTtcbiAgfSxcbiAgZ2V0IGxlbmd0aCgpIHtcbiAgICBsZXQgbGVuZ3RoID0gMDtcbiAgICBjb29raWVTdG9yYWdlLl9jb29raWVzWzBdW2Nvb2tpZVN0b3JhZ2UuX2Nvb2tpZXNbMV1dLnJlcGxhY2UoXG4gICAgICAvKD86Xnw7KVxccyouKz9cXHMqPVxccypbXjtdKy9nLFxuICAgICAgKGZvdW5kKSA9PiB7XG4gICAgICAgIGxlbmd0aCArPSBmb3VuZCA/IDEgOiAwO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cbn0pO1xuXG4vLyBzcmMvY29uc3RhbnRzLnRzXG52YXIgZmlyc3RCcmVha3BvaW50ID0gMTAyNDtcbnZhciBzZWNvbmRCcmVha3BvaW50ID0gNzk2O1xudmFyIHRoaXJkQnJlYWtwb2ludCA9IDcwMDtcbnZhciBCVVRUT05fUE9TSVRJT04gPSBcImJvdHRvbS1yaWdodFwiO1xudmFyIFBPU0lUSU9OID0gXCJib3R0b21cIjtcbnZhciBUSEVNRV9QUkVGRVJFTkNFID0gXCJzeXN0ZW1cIjtcbnZhciBJTklUSUFMX0lTX09QRU4gPSBmYWxzZTtcbnZhciBERUZBVUxUX0hFSUdIVCA9IDUwMDtcbnZhciBQSVBfREVGQVVMVF9IRUlHSFQgPSA1MDA7XG52YXIgREVGQVVMVF9XSURUSCA9IDUwMDtcbnZhciBERUZBVUxUX1NPUlRfRk5fTkFNRSA9IE9iamVjdC5rZXlzKHNvcnRGbnMpWzBdO1xudmFyIERFRkFVTFRfU09SVF9PUkRFUiA9IDE7XG52YXIgREVGQVVMVF9NVVRBVElPTl9TT1JUX0ZOX05BTUUgPSBPYmplY3Qua2V5cyhtdXRhdGlvblNvcnRGbnMpWzBdO1xuXG4vLyBzcmMvY29udGV4dHMvUXVlcnlEZXZ0b29sc0NvbnRleHQudHNcbnZhciBRdWVyeURldnRvb2xzQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoe1xuICBjbGllbnQ6IHZvaWQgMCxcbiAgb25saW5lTWFuYWdlcjogdm9pZCAwLFxuICBxdWVyeUZsYXZvcjogXCJcIixcbiAgdmVyc2lvbjogXCJcIixcbiAgc2hhZG93RE9NVGFyZ2V0OiB2b2lkIDBcbn0pO1xuZnVuY3Rpb24gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KFF1ZXJ5RGV2dG9vbHNDb250ZXh0KTtcbn1cblxuLy8gc3JjL2NvbnRleHRzL1BpUENvbnRleHQudHN4XG52YXIgUGlQQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbnZhciBQaVBQcm92aWRlciA9IChwcm9wcykgPT4ge1xuICBjb25zdCBbcGlwV2luZG93LCBzZXRQaXBXaW5kb3ddID0gY3JlYXRlU2lnbmFsKG51bGwpO1xuICBjb25zdCBjbG9zZVBpcFdpbmRvdyA9ICgpID0+IHtcbiAgICBjb25zdCB3ID0gcGlwV2luZG93KCk7XG4gICAgaWYgKHcgIT0gbnVsbCkge1xuICAgICAgdy5jbG9zZSgpO1xuICAgICAgc2V0UGlwV2luZG93KG51bGwpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVxdWVzdFBpcFdpbmRvdyA9ICh3aWR0aCwgaGVpZ2h0KSA9PiB7XG4gICAgaWYgKHBpcFdpbmRvdygpICE9IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGlwID0gd2luZG93Lm9wZW4oXCJcIiwgXCJUU1FELURldnRvb2xzLVBhbmVsXCIsIGB3aWR0aD0ke3dpZHRofSxoZWlnaHQ9JHtoZWlnaHR9LHBvcHVwYCk7XG4gICAgaWYgKCFwaXApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBvcGVuIHBvcHVwLiBQbGVhc2UgYWxsb3cgcG9wdXBzIGZvciB0aGlzIHNpdGUgdG8gdmlldyB0aGUgZGV2dG9vbHMgaW4gcGljdHVyZS1pbi1waWN0dXJlIG1vZGUuXCIpO1xuICAgIH1cbiAgICBwaXAuZG9jdW1lbnQuaGVhZC5pbm5lckhUTUwgPSBcIlwiO1xuICAgIHBpcC5kb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IFwiXCI7XG4gICAgY2xlYXJEZWxlZ2F0ZWRFdmVudHMocGlwLmRvY3VtZW50KTtcbiAgICBwaXAuZG9jdW1lbnQudGl0bGUgPSBcIlRhblN0YWNrIFF1ZXJ5IERldnRvb2xzXCI7XG4gICAgcGlwLmRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gXCIwXCI7XG4gICAgcGlwLmFkZEV2ZW50TGlzdGVuZXIoXCJwYWdlaGlkZVwiLCAoKSA9PiB7XG4gICAgICBwcm9wcy5zZXRMb2NhbFN0b3JlKFwicGlwX29wZW5cIiwgXCJmYWxzZVwiKTtcbiAgICAgIHNldFBpcFdpbmRvdyhudWxsKTtcbiAgICB9KTtcbiAgICBbLi4uKHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0IHx8IGRvY3VtZW50KS5zdHlsZVNoZWV0c10uZm9yRWFjaCgoc3R5bGVTaGVldCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY3NzUnVsZXMgPSBbLi4uc3R5bGVTaGVldC5jc3NSdWxlc10ubWFwKChydWxlKSA9PiBydWxlLmNzc1RleHQpLmpvaW4oXCJcIik7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICBjb25zdCBzdHlsZV9ub2RlID0gc3R5bGVTaGVldC5vd25lck5vZGU7XG4gICAgICAgIGxldCBzdHlsZV9pZCA9IFwiXCI7XG4gICAgICAgIGlmIChzdHlsZV9ub2RlICYmIFwiaWRcIiBpbiBzdHlsZV9ub2RlKSB7XG4gICAgICAgICAgc3R5bGVfaWQgPSBzdHlsZV9ub2RlLmlkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdHlsZV9pZCkge1xuICAgICAgICAgIHN0eWxlLnNldEF0dHJpYnV0ZShcImlkXCIsIHN0eWxlX2lkKTtcbiAgICAgICAgfVxuICAgICAgICBzdHlsZS50ZXh0Q29udGVudCA9IGNzc1J1bGVzO1xuICAgICAgICBwaXAuZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgICB9IGNhdGNoIChlMikge1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gICAgICAgIGlmIChzdHlsZVNoZWV0LmhyZWYgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsaW5rLnJlbCA9IFwic3R5bGVzaGVldFwiO1xuICAgICAgICBsaW5rLnR5cGUgPSBzdHlsZVNoZWV0LnR5cGU7XG4gICAgICAgIGxpbmsubWVkaWEgPSBzdHlsZVNoZWV0Lm1lZGlhLnRvU3RyaW5nKCk7XG4gICAgICAgIGxpbmsuaHJlZiA9IHN0eWxlU2hlZXQuaHJlZjtcbiAgICAgICAgcGlwLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGVsZWdhdGVFdmVudHMoW1wiZm9jdXNpblwiLCBcImZvY3Vzb3V0XCIsIFwicG9pbnRlcm1vdmVcIiwgXCJrZXlkb3duXCIsIFwicG9pbnRlcmRvd25cIiwgXCJwb2ludGVydXBcIiwgXCJjbGlja1wiLCBcIm1vdXNlZG93blwiLCBcImlucHV0XCJdLCBwaXAuZG9jdW1lbnQpO1xuICAgIHByb3BzLnNldExvY2FsU3RvcmUoXCJwaXBfb3BlblwiLCBcInRydWVcIik7XG4gICAgc2V0UGlwV2luZG93KHBpcCk7XG4gIH07XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcGlwX29wZW4gPSBwcm9wcy5sb2NhbFN0b3JlLnBpcF9vcGVuID8/IFwiZmFsc2VcIjtcbiAgICBpZiAocGlwX29wZW4gPT09IFwidHJ1ZVwiICYmICFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgcmVxdWVzdFBpcFdpbmRvdyhOdW1iZXIod2luZG93LmlubmVyV2lkdGgpLCBOdW1iZXIocHJvcHMubG9jYWxTdG9yZS5oZWlnaHQgfHwgUElQX0RFRkFVTFRfSEVJR0hUKSk7XG4gICAgfVxuICB9KTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBnb29iZXJTdHlsZXMgPSAodXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgfHwgZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3IoXCIjX2dvb2JlclwiKTtcbiAgICBjb25zdCB3ID0gcGlwV2luZG93KCk7XG4gICAgaWYgKGdvb2JlclN0eWxlcyAmJiB3KSB7XG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgY29uc3QgcGlwX3N0eWxlID0gKHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0IHx8IHcuZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3IoXCIjX2dvb2JlclwiKTtcbiAgICAgICAgaWYgKHBpcF9zdHlsZSkge1xuICAgICAgICAgIHBpcF9zdHlsZS50ZXh0Q29udGVudCA9IGdvb2JlclN0eWxlcy50ZXh0Q29udGVudDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKGdvb2JlclN0eWxlcywge1xuICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgIC8vIG9ic2VydmUgZGlyZWN0IGNoaWxkcmVuXG4gICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgIC8vIGFuZCBsb3dlciBkZXNjZW5kYW50cyB0b29cbiAgICAgICAgY2hhcmFjdGVyRGF0YU9sZFZhbHVlOiB0cnVlXG4gICAgICAgIC8vIHBhc3Mgb2xkIGRhdGEgdG8gY2FsbGJhY2tcbiAgICAgIH0pO1xuICAgICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgdmFsdWUgPSBjcmVhdGVNZW1vKCgpID0+ICh7XG4gICAgcGlwV2luZG93OiBwaXBXaW5kb3coKSxcbiAgICByZXF1ZXN0UGlwV2luZG93LFxuICAgIGNsb3NlUGlwV2luZG93LFxuICAgIGRpc2FibGVkOiBwcm9wcy5kaXNhYmxlZCA/PyBmYWxzZVxuICB9KSk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUGlQQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlLFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbiAgICB9XG4gIH0pO1xufTtcbnZhciB1c2VQaVBXaW5kb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBjb25zdCBjdHggPSB1c2VDb250ZXh0KFBpUENvbnRleHQpO1xuICAgIGlmICghY3R4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VQaVBXaW5kb3cgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFBpUFByb3ZpZGVyXCIpO1xuICAgIH1cbiAgICByZXR1cm4gY3R4KCk7XG4gIH0pO1xuICByZXR1cm4gY29udGV4dDtcbn07XG5cbi8vIHNyYy9jb250ZXh0cy9UaGVtZUNvbnRleHQudHNcbnZhciBUaGVtZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KFxuICAoKSA9PiBcImRhcmtcIlxuKTtcbmZ1bmN0aW9uIHVzZVRoZW1lKCkge1xuICByZXR1cm4gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK21hdGNoLXNvcnRlci11dGlsc0A4LjE5LjQvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9tYXRjaC1zb3J0ZXItdXRpbHMvYnVpbGQvbGliL2luZGV4Lm1qc1xudmFyIGNoYXJhY3Rlck1hcCA9IHtcbiAgXFx1MDBDMDogXCJBXCIsXG4gIFxcdTAwQzE6IFwiQVwiLFxuICBcXHUwMEMyOiBcIkFcIixcbiAgXFx1MDBDMzogXCJBXCIsXG4gIFxcdTAwQzQ6IFwiQVwiLFxuICBcXHUwMEM1OiBcIkFcIixcbiAgXFx1MUVBNDogXCJBXCIsXG4gIFxcdTFFQUU6IFwiQVwiLFxuICBcXHUxRUIyOiBcIkFcIixcbiAgXFx1MUVCNDogXCJBXCIsXG4gIFxcdTFFQjY6IFwiQVwiLFxuICBcXHUwMEM2OiBcIkFFXCIsXG4gIFxcdTFFQTY6IFwiQVwiLFxuICBcXHUxRUIwOiBcIkFcIixcbiAgXFx1MDIwMjogXCJBXCIsXG4gIFxcdTAwQzc6IFwiQ1wiLFxuICBcXHUxRTA4OiBcIkNcIixcbiAgXFx1MDBDODogXCJFXCIsXG4gIFxcdTAwQzk6IFwiRVwiLFxuICBcXHUwMENBOiBcIkVcIixcbiAgXFx1MDBDQjogXCJFXCIsXG4gIFxcdTFFQkU6IFwiRVwiLFxuICBcXHUxRTE2OiBcIkVcIixcbiAgXFx1MUVDMDogXCJFXCIsXG4gIFxcdTFFMTQ6IFwiRVwiLFxuICBcXHUxRTFDOiBcIkVcIixcbiAgXFx1MDIwNjogXCJFXCIsXG4gIFxcdTAwQ0M6IFwiSVwiLFxuICBcXHUwMENEOiBcIklcIixcbiAgXFx1MDBDRTogXCJJXCIsXG4gIFxcdTAwQ0Y6IFwiSVwiLFxuICBcXHUxRTJFOiBcIklcIixcbiAgXFx1MDIwQTogXCJJXCIsXG4gIFxcdTAwRDA6IFwiRFwiLFxuICBcXHUwMEQxOiBcIk5cIixcbiAgXFx1MDBEMjogXCJPXCIsXG4gIFxcdTAwRDM6IFwiT1wiLFxuICBcXHUwMEQ0OiBcIk9cIixcbiAgXFx1MDBENTogXCJPXCIsXG4gIFxcdTAwRDY6IFwiT1wiLFxuICBcXHUwMEQ4OiBcIk9cIixcbiAgXFx1MUVEMDogXCJPXCIsXG4gIFxcdTFFNEM6IFwiT1wiLFxuICBcXHUxRTUyOiBcIk9cIixcbiAgXFx1MDIwRTogXCJPXCIsXG4gIFxcdTAwRDk6IFwiVVwiLFxuICBcXHUwMERBOiBcIlVcIixcbiAgXFx1MDBEQjogXCJVXCIsXG4gIFxcdTAwREM6IFwiVVwiLFxuICBcXHUwMEREOiBcIllcIixcbiAgXFx1MDBFMDogXCJhXCIsXG4gIFxcdTAwRTE6IFwiYVwiLFxuICBcXHUwMEUyOiBcImFcIixcbiAgXFx1MDBFMzogXCJhXCIsXG4gIFxcdTAwRTQ6IFwiYVwiLFxuICBcXHUwMEU1OiBcImFcIixcbiAgXFx1MUVBNTogXCJhXCIsXG4gIFxcdTFFQUY6IFwiYVwiLFxuICBcXHUxRUIzOiBcImFcIixcbiAgXFx1MUVCNTogXCJhXCIsXG4gIFxcdTFFQjc6IFwiYVwiLFxuICBcXHUwMEU2OiBcImFlXCIsXG4gIFxcdTFFQTc6IFwiYVwiLFxuICBcXHUxRUIxOiBcImFcIixcbiAgXFx1MDIwMzogXCJhXCIsXG4gIFxcdTAwRTc6IFwiY1wiLFxuICBcXHUxRTA5OiBcImNcIixcbiAgXFx1MDBFODogXCJlXCIsXG4gIFxcdTAwRTk6IFwiZVwiLFxuICBcXHUwMEVBOiBcImVcIixcbiAgXFx1MDBFQjogXCJlXCIsXG4gIFxcdTFFQkY6IFwiZVwiLFxuICBcXHUxRTE3OiBcImVcIixcbiAgXFx1MUVDMTogXCJlXCIsXG4gIFxcdTFFMTU6IFwiZVwiLFxuICBcXHUxRTFEOiBcImVcIixcbiAgXFx1MDIwNzogXCJlXCIsXG4gIFxcdTAwRUM6IFwiaVwiLFxuICBcXHUwMEVEOiBcImlcIixcbiAgXFx1MDBFRTogXCJpXCIsXG4gIFxcdTAwRUY6IFwiaVwiLFxuICBcXHUxRTJGOiBcImlcIixcbiAgXFx1MDIwQjogXCJpXCIsXG4gIFxcdTAwRjA6IFwiZFwiLFxuICBcXHUwMEYxOiBcIm5cIixcbiAgXFx1MDBGMjogXCJvXCIsXG4gIFxcdTAwRjM6IFwib1wiLFxuICBcXHUwMEY0OiBcIm9cIixcbiAgXFx1MDBGNTogXCJvXCIsXG4gIFxcdTAwRjY6IFwib1wiLFxuICBcXHUwMEY4OiBcIm9cIixcbiAgXFx1MUVEMTogXCJvXCIsXG4gIFxcdTFFNEQ6IFwib1wiLFxuICBcXHUxRTUzOiBcIm9cIixcbiAgXFx1MDIwRjogXCJvXCIsXG4gIFxcdTAwRjk6IFwidVwiLFxuICBcXHUwMEZBOiBcInVcIixcbiAgXFx1MDBGQjogXCJ1XCIsXG4gIFxcdTAwRkM6IFwidVwiLFxuICBcXHUwMEZEOiBcInlcIixcbiAgXFx1MDBGRjogXCJ5XCIsXG4gIFxcdTAxMDA6IFwiQVwiLFxuICBcXHUwMTAxOiBcImFcIixcbiAgXFx1MDEwMjogXCJBXCIsXG4gIFxcdTAxMDM6IFwiYVwiLFxuICBcXHUwMTA0OiBcIkFcIixcbiAgXFx1MDEwNTogXCJhXCIsXG4gIFxcdTAxMDY6IFwiQ1wiLFxuICBcXHUwMTA3OiBcImNcIixcbiAgXFx1MDEwODogXCJDXCIsXG4gIFxcdTAxMDk6IFwiY1wiLFxuICBcXHUwMTBBOiBcIkNcIixcbiAgXFx1MDEwQjogXCJjXCIsXG4gIFxcdTAxMEM6IFwiQ1wiLFxuICBcXHUwMTBEOiBcImNcIixcbiAgQ1xcdTAzMDY6IFwiQ1wiLFxuICBjXFx1MDMwNjogXCJjXCIsXG4gIFxcdTAxMEU6IFwiRFwiLFxuICBcXHUwMTBGOiBcImRcIixcbiAgXFx1MDExMDogXCJEXCIsXG4gIFxcdTAxMTE6IFwiZFwiLFxuICBcXHUwMTEyOiBcIkVcIixcbiAgXFx1MDExMzogXCJlXCIsXG4gIFxcdTAxMTQ6IFwiRVwiLFxuICBcXHUwMTE1OiBcImVcIixcbiAgXFx1MDExNjogXCJFXCIsXG4gIFxcdTAxMTc6IFwiZVwiLFxuICBcXHUwMTE4OiBcIkVcIixcbiAgXFx1MDExOTogXCJlXCIsXG4gIFxcdTAxMUE6IFwiRVwiLFxuICBcXHUwMTFCOiBcImVcIixcbiAgXFx1MDExQzogXCJHXCIsXG4gIFxcdTAxRjQ6IFwiR1wiLFxuICBcXHUwMTFEOiBcImdcIixcbiAgXFx1MDFGNTogXCJnXCIsXG4gIFxcdTAxMUU6IFwiR1wiLFxuICBcXHUwMTFGOiBcImdcIixcbiAgXFx1MDEyMDogXCJHXCIsXG4gIFxcdTAxMjE6IFwiZ1wiLFxuICBcXHUwMTIyOiBcIkdcIixcbiAgXFx1MDEyMzogXCJnXCIsXG4gIFxcdTAxMjQ6IFwiSFwiLFxuICBcXHUwMTI1OiBcImhcIixcbiAgXFx1MDEyNjogXCJIXCIsXG4gIFxcdTAxMjc6IFwiaFwiLFxuICBcXHUxRTJBOiBcIkhcIixcbiAgXFx1MUUyQjogXCJoXCIsXG4gIFxcdTAxMjg6IFwiSVwiLFxuICBcXHUwMTI5OiBcImlcIixcbiAgXFx1MDEyQTogXCJJXCIsXG4gIFxcdTAxMkI6IFwiaVwiLFxuICBcXHUwMTJDOiBcIklcIixcbiAgXFx1MDEyRDogXCJpXCIsXG4gIFxcdTAxMkU6IFwiSVwiLFxuICBcXHUwMTJGOiBcImlcIixcbiAgXFx1MDEzMDogXCJJXCIsXG4gIFxcdTAxMzE6IFwiaVwiLFxuICBcXHUwMTMyOiBcIklKXCIsXG4gIFxcdTAxMzM6IFwiaWpcIixcbiAgXFx1MDEzNDogXCJKXCIsXG4gIFxcdTAxMzU6IFwialwiLFxuICBcXHUwMTM2OiBcIktcIixcbiAgXFx1MDEzNzogXCJrXCIsXG4gIFxcdTFFMzA6IFwiS1wiLFxuICBcXHUxRTMxOiBcImtcIixcbiAgS1xcdTAzMDY6IFwiS1wiLFxuICBrXFx1MDMwNjogXCJrXCIsXG4gIFxcdTAxMzk6IFwiTFwiLFxuICBcXHUwMTNBOiBcImxcIixcbiAgXFx1MDEzQjogXCJMXCIsXG4gIFxcdTAxM0M6IFwibFwiLFxuICBcXHUwMTNEOiBcIkxcIixcbiAgXFx1MDEzRTogXCJsXCIsXG4gIFxcdTAxM0Y6IFwiTFwiLFxuICBcXHUwMTQwOiBcImxcIixcbiAgXFx1MDE0MTogXCJsXCIsXG4gIFxcdTAxNDI6IFwibFwiLFxuICBcXHUxRTNFOiBcIk1cIixcbiAgXFx1MUUzRjogXCJtXCIsXG4gIE1cXHUwMzA2OiBcIk1cIixcbiAgbVxcdTAzMDY6IFwibVwiLFxuICBcXHUwMTQzOiBcIk5cIixcbiAgXFx1MDE0NDogXCJuXCIsXG4gIFxcdTAxNDU6IFwiTlwiLFxuICBcXHUwMTQ2OiBcIm5cIixcbiAgXFx1MDE0NzogXCJOXCIsXG4gIFxcdTAxNDg6IFwiblwiLFxuICBcXHUwMTQ5OiBcIm5cIixcbiAgTlxcdTAzMDY6IFwiTlwiLFxuICBuXFx1MDMwNjogXCJuXCIsXG4gIFxcdTAxNEM6IFwiT1wiLFxuICBcXHUwMTREOiBcIm9cIixcbiAgXFx1MDE0RTogXCJPXCIsXG4gIFxcdTAxNEY6IFwib1wiLFxuICBcXHUwMTUwOiBcIk9cIixcbiAgXFx1MDE1MTogXCJvXCIsXG4gIFxcdTAxNTI6IFwiT0VcIixcbiAgXFx1MDE1MzogXCJvZVwiLFxuICBQXFx1MDMwNjogXCJQXCIsXG4gIHBcXHUwMzA2OiBcInBcIixcbiAgXFx1MDE1NDogXCJSXCIsXG4gIFxcdTAxNTU6IFwiclwiLFxuICBcXHUwMTU2OiBcIlJcIixcbiAgXFx1MDE1NzogXCJyXCIsXG4gIFxcdTAxNTg6IFwiUlwiLFxuICBcXHUwMTU5OiBcInJcIixcbiAgUlxcdTAzMDY6IFwiUlwiLFxuICByXFx1MDMwNjogXCJyXCIsXG4gIFxcdTAyMTI6IFwiUlwiLFxuICBcXHUwMjEzOiBcInJcIixcbiAgXFx1MDE1QTogXCJTXCIsXG4gIFxcdTAxNUI6IFwic1wiLFxuICBcXHUwMTVDOiBcIlNcIixcbiAgXFx1MDE1RDogXCJzXCIsXG4gIFxcdTAxNUU6IFwiU1wiLFxuICBcXHUwMjE4OiBcIlNcIixcbiAgXFx1MDIxOTogXCJzXCIsXG4gIFxcdTAxNUY6IFwic1wiLFxuICBcXHUwMTYwOiBcIlNcIixcbiAgXFx1MDE2MTogXCJzXCIsXG4gIFxcdTAxNjI6IFwiVFwiLFxuICBcXHUwMTYzOiBcInRcIixcbiAgXFx1MDIxQjogXCJ0XCIsXG4gIFxcdTAyMUE6IFwiVFwiLFxuICBcXHUwMTY0OiBcIlRcIixcbiAgXFx1MDE2NTogXCJ0XCIsXG4gIFxcdTAxNjY6IFwiVFwiLFxuICBcXHUwMTY3OiBcInRcIixcbiAgVFxcdTAzMDY6IFwiVFwiLFxuICB0XFx1MDMwNjogXCJ0XCIsXG4gIFxcdTAxNjg6IFwiVVwiLFxuICBcXHUwMTY5OiBcInVcIixcbiAgXFx1MDE2QTogXCJVXCIsXG4gIFxcdTAxNkI6IFwidVwiLFxuICBcXHUwMTZDOiBcIlVcIixcbiAgXFx1MDE2RDogXCJ1XCIsXG4gIFxcdTAxNkU6IFwiVVwiLFxuICBcXHUwMTZGOiBcInVcIixcbiAgXFx1MDE3MDogXCJVXCIsXG4gIFxcdTAxNzE6IFwidVwiLFxuICBcXHUwMTcyOiBcIlVcIixcbiAgXFx1MDE3MzogXCJ1XCIsXG4gIFxcdTAyMTY6IFwiVVwiLFxuICBcXHUwMjE3OiBcInVcIixcbiAgVlxcdTAzMDY6IFwiVlwiLFxuICB2XFx1MDMwNjogXCJ2XCIsXG4gIFxcdTAxNzQ6IFwiV1wiLFxuICBcXHUwMTc1OiBcIndcIixcbiAgXFx1MUU4MjogXCJXXCIsXG4gIFxcdTFFODM6IFwid1wiLFxuICBYXFx1MDMwNjogXCJYXCIsXG4gIHhcXHUwMzA2OiBcInhcIixcbiAgXFx1MDE3NjogXCJZXCIsXG4gIFxcdTAxNzc6IFwieVwiLFxuICBcXHUwMTc4OiBcIllcIixcbiAgWVxcdTAzMDY6IFwiWVwiLFxuICB5XFx1MDMwNjogXCJ5XCIsXG4gIFxcdTAxNzk6IFwiWlwiLFxuICBcXHUwMTdBOiBcInpcIixcbiAgXFx1MDE3QjogXCJaXCIsXG4gIFxcdTAxN0M6IFwielwiLFxuICBcXHUwMTdEOiBcIlpcIixcbiAgXFx1MDE3RTogXCJ6XCIsXG4gIFxcdTAxN0Y6IFwic1wiLFxuICBcXHUwMTkyOiBcImZcIixcbiAgXFx1MDFBMDogXCJPXCIsXG4gIFxcdTAxQTE6IFwib1wiLFxuICBcXHUwMUFGOiBcIlVcIixcbiAgXFx1MDFCMDogXCJ1XCIsXG4gIFxcdTAxQ0Q6IFwiQVwiLFxuICBcXHUwMUNFOiBcImFcIixcbiAgXFx1MDFDRjogXCJJXCIsXG4gIFxcdTAxRDA6IFwiaVwiLFxuICBcXHUwMUQxOiBcIk9cIixcbiAgXFx1MDFEMjogXCJvXCIsXG4gIFxcdTAxRDM6IFwiVVwiLFxuICBcXHUwMUQ0OiBcInVcIixcbiAgXFx1MDFENTogXCJVXCIsXG4gIFxcdTAxRDY6IFwidVwiLFxuICBcXHUwMUQ3OiBcIlVcIixcbiAgXFx1MDFEODogXCJ1XCIsXG4gIFxcdTAxRDk6IFwiVVwiLFxuICBcXHUwMURBOiBcInVcIixcbiAgXFx1MDFEQjogXCJVXCIsXG4gIFxcdTAxREM6IFwidVwiLFxuICBcXHUxRUU4OiBcIlVcIixcbiAgXFx1MUVFOTogXCJ1XCIsXG4gIFxcdTFFNzg6IFwiVVwiLFxuICBcXHUxRTc5OiBcInVcIixcbiAgXFx1MDFGQTogXCJBXCIsXG4gIFxcdTAxRkI6IFwiYVwiLFxuICBcXHUwMUZDOiBcIkFFXCIsXG4gIFxcdTAxRkQ6IFwiYWVcIixcbiAgXFx1MDFGRTogXCJPXCIsXG4gIFxcdTAxRkY6IFwib1wiLFxuICBcXHUwMERFOiBcIlRIXCIsXG4gIFxcdTAwRkU6IFwidGhcIixcbiAgXFx1MUU1NDogXCJQXCIsXG4gIFxcdTFFNTU6IFwicFwiLFxuICBcXHUxRTY0OiBcIlNcIixcbiAgXFx1MUU2NTogXCJzXCIsXG4gIFhcXHUwMzAxOiBcIlhcIixcbiAgeFxcdTAzMDE6IFwieFwiLFxuICBcXHUwNDAzOiBcIlxcdTA0MTNcIixcbiAgXFx1MDQ1MzogXCJcXHUwNDMzXCIsXG4gIFxcdTA0MEM6IFwiXFx1MDQxQVwiLFxuICBcXHUwNDVDOiBcIlxcdTA0M0FcIixcbiAgQVxcdTAzMEI6IFwiQVwiLFxuICBhXFx1MDMwQjogXCJhXCIsXG4gIEVcXHUwMzBCOiBcIkVcIixcbiAgZVxcdTAzMEI6IFwiZVwiLFxuICBJXFx1MDMwQjogXCJJXCIsXG4gIGlcXHUwMzBCOiBcImlcIixcbiAgXFx1MDFGODogXCJOXCIsXG4gIFxcdTAxRjk6IFwiblwiLFxuICBcXHUxRUQyOiBcIk9cIixcbiAgXFx1MUVEMzogXCJvXCIsXG4gIFxcdTFFNTA6IFwiT1wiLFxuICBcXHUxRTUxOiBcIm9cIixcbiAgXFx1MUVFQTogXCJVXCIsXG4gIFxcdTFFRUI6IFwidVwiLFxuICBcXHUxRTgwOiBcIldcIixcbiAgXFx1MUU4MTogXCJ3XCIsXG4gIFxcdTFFRjI6IFwiWVwiLFxuICBcXHUxRUYzOiBcInlcIixcbiAgXFx1MDIwMDogXCJBXCIsXG4gIFxcdTAyMDE6IFwiYVwiLFxuICBcXHUwMjA0OiBcIkVcIixcbiAgXFx1MDIwNTogXCJlXCIsXG4gIFxcdTAyMDg6IFwiSVwiLFxuICBcXHUwMjA5OiBcImlcIixcbiAgXFx1MDIwQzogXCJPXCIsXG4gIFxcdTAyMEQ6IFwib1wiLFxuICBcXHUwMjEwOiBcIlJcIixcbiAgXFx1MDIxMTogXCJyXCIsXG4gIFxcdTAyMTQ6IFwiVVwiLFxuICBcXHUwMjE1OiBcInVcIixcbiAgQlxcdTAzMEM6IFwiQlwiLFxuICBiXFx1MDMwQzogXCJiXCIsXG4gIFxcdTAxMENcXHUwMzIzOiBcIkNcIixcbiAgXFx1MDEwRFxcdTAzMjM6IFwiY1wiLFxuICBcXHUwMENBXFx1MDMwQzogXCJFXCIsXG4gIFxcdTAwRUFcXHUwMzBDOiBcImVcIixcbiAgRlxcdTAzMEM6IFwiRlwiLFxuICBmXFx1MDMwQzogXCJmXCIsXG4gIFxcdTAxRTY6IFwiR1wiLFxuICBcXHUwMUU3OiBcImdcIixcbiAgXFx1MDIxRTogXCJIXCIsXG4gIFxcdTAyMUY6IFwiaFwiLFxuICBKXFx1MDMwQzogXCJKXCIsXG4gIFxcdTAxRjA6IFwialwiLFxuICBcXHUwMUU4OiBcIktcIixcbiAgXFx1MDFFOTogXCJrXCIsXG4gIE1cXHUwMzBDOiBcIk1cIixcbiAgbVxcdTAzMEM6IFwibVwiLFxuICBQXFx1MDMwQzogXCJQXCIsXG4gIHBcXHUwMzBDOiBcInBcIixcbiAgUVxcdTAzMEM6IFwiUVwiLFxuICBxXFx1MDMwQzogXCJxXCIsXG4gIFxcdTAxNThcXHUwMzI5OiBcIlJcIixcbiAgXFx1MDE1OVxcdTAzMjk6IFwiclwiLFxuICBcXHUxRTY2OiBcIlNcIixcbiAgXFx1MUU2NzogXCJzXCIsXG4gIFZcXHUwMzBDOiBcIlZcIixcbiAgdlxcdTAzMEM6IFwidlwiLFxuICBXXFx1MDMwQzogXCJXXCIsXG4gIHdcXHUwMzBDOiBcIndcIixcbiAgWFxcdTAzMEM6IFwiWFwiLFxuICB4XFx1MDMwQzogXCJ4XCIsXG4gIFlcXHUwMzBDOiBcIllcIixcbiAgeVxcdTAzMEM6IFwieVwiLFxuICBBXFx1MDMyNzogXCJBXCIsXG4gIGFcXHUwMzI3OiBcImFcIixcbiAgQlxcdTAzMjc6IFwiQlwiLFxuICBiXFx1MDMyNzogXCJiXCIsXG4gIFxcdTFFMTA6IFwiRFwiLFxuICBcXHUxRTExOiBcImRcIixcbiAgXFx1MDIyODogXCJFXCIsXG4gIFxcdTAyMjk6IFwiZVwiLFxuICBcXHUwMTkwXFx1MDMyNzogXCJFXCIsXG4gIFxcdTAyNUJcXHUwMzI3OiBcImVcIixcbiAgXFx1MUUyODogXCJIXCIsXG4gIFxcdTFFMjk6IFwiaFwiLFxuICBJXFx1MDMyNzogXCJJXCIsXG4gIGlcXHUwMzI3OiBcImlcIixcbiAgXFx1MDE5N1xcdTAzMjc6IFwiSVwiLFxuICBcXHUwMjY4XFx1MDMyNzogXCJpXCIsXG4gIE1cXHUwMzI3OiBcIk1cIixcbiAgbVxcdTAzMjc6IFwibVwiLFxuICBPXFx1MDMyNzogXCJPXCIsXG4gIG9cXHUwMzI3OiBcIm9cIixcbiAgUVxcdTAzMjc6IFwiUVwiLFxuICBxXFx1MDMyNzogXCJxXCIsXG4gIFVcXHUwMzI3OiBcIlVcIixcbiAgdVxcdTAzMjc6IFwidVwiLFxuICBYXFx1MDMyNzogXCJYXCIsXG4gIHhcXHUwMzI3OiBcInhcIixcbiAgWlxcdTAzMjc6IFwiWlwiLFxuICB6XFx1MDMyNzogXCJ6XCJcbn07XG52YXIgY2hhcnMgPSBPYmplY3Qua2V5cyhjaGFyYWN0ZXJNYXApLmpvaW4oXCJ8XCIpO1xudmFyIGFsbEFjY2VudHMgPSBuZXcgUmVnRXhwKGNoYXJzLCBcImdcIik7XG5mdW5jdGlvbiByZW1vdmVBY2NlbnRzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoYWxsQWNjZW50cywgKG1hdGNoKSA9PiB7XG4gICAgcmV0dXJuIGNoYXJhY3Rlck1hcFttYXRjaF07XG4gIH0pO1xufVxudmFyIHJhbmtpbmdzID0ge1xuICBDQVNFX1NFTlNJVElWRV9FUVVBTDogNyxcbiAgRVFVQUw6IDYsXG4gIFNUQVJUU19XSVRIOiA1LFxuICBXT1JEX1NUQVJUU19XSVRIOiA0LFxuICBDT05UQUlOUzogMyxcbiAgQUNST05ZTTogMixcbiAgTUFUQ0hFUzogMSxcbiAgTk9fTUFUQ0g6IDBcbn07XG5mdW5jdGlvbiByYW5rSXRlbShpdGVtLCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgX29wdGlvbnMkdGhyZXNob2xkO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgb3B0aW9ucy50aHJlc2hvbGQgPSAoX29wdGlvbnMkdGhyZXNob2xkID0gb3B0aW9ucy50aHJlc2hvbGQpICE9IG51bGwgPyBfb3B0aW9ucyR0aHJlc2hvbGQgOiByYW5raW5ncy5NQVRDSEVTO1xuICBpZiAoIW9wdGlvbnMuYWNjZXNzb3JzKSB7XG4gICAgY29uc3QgcmFuayA9IGdldE1hdGNoUmFua2luZyhpdGVtLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIGVuZHMgdXAgYmVpbmcgZHVwbGljYXRlIG9mICdpdGVtJyBpbiBtYXRjaGVzIGJ1dCBjb25zaXN0ZW50XG4gICAgICByYW5rZWRWYWx1ZTogaXRlbSxcbiAgICAgIHJhbmssXG4gICAgICBhY2Nlc3NvckluZGV4OiAtMSxcbiAgICAgIGFjY2Vzc29yVGhyZXNob2xkOiBvcHRpb25zLnRocmVzaG9sZCxcbiAgICAgIHBhc3NlZDogcmFuayA+PSBvcHRpb25zLnRocmVzaG9sZFxuICAgIH07XG4gIH1cbiAgY29uc3QgdmFsdWVzVG9SYW5rID0gZ2V0QWxsVmFsdWVzVG9SYW5rKGl0ZW0sIG9wdGlvbnMuYWNjZXNzb3JzKTtcbiAgY29uc3QgcmFua2luZ0luZm8gPSB7XG4gICAgcmFua2VkVmFsdWU6IGl0ZW0sXG4gICAgcmFuazogcmFua2luZ3MuTk9fTUFUQ0gsXG4gICAgYWNjZXNzb3JJbmRleDogLTEsXG4gICAgYWNjZXNzb3JUaHJlc2hvbGQ6IG9wdGlvbnMudGhyZXNob2xkLFxuICAgIHBhc3NlZDogZmFsc2VcbiAgfTtcbiAgZm9yIChsZXQgaTIgPSAwOyBpMiA8IHZhbHVlc1RvUmFuay5sZW5ndGg7IGkyKyspIHtcbiAgICBjb25zdCByYW5rVmFsdWUgPSB2YWx1ZXNUb1JhbmtbaTJdO1xuICAgIGxldCBuZXdSYW5rID0gZ2V0TWF0Y2hSYW5raW5nKHJhbmtWYWx1ZS5pdGVtVmFsdWUsIHZhbHVlLCBvcHRpb25zKTtcbiAgICBjb25zdCB7XG4gICAgICBtaW5SYW5raW5nLFxuICAgICAgbWF4UmFua2luZyxcbiAgICAgIHRocmVzaG9sZCA9IG9wdGlvbnMudGhyZXNob2xkXG4gICAgfSA9IHJhbmtWYWx1ZS5hdHRyaWJ1dGVzO1xuICAgIGlmIChuZXdSYW5rIDwgbWluUmFua2luZyAmJiBuZXdSYW5rID49IHJhbmtpbmdzLk1BVENIRVMpIHtcbiAgICAgIG5ld1JhbmsgPSBtaW5SYW5raW5nO1xuICAgIH0gZWxzZSBpZiAobmV3UmFuayA+IG1heFJhbmtpbmcpIHtcbiAgICAgIG5ld1JhbmsgPSBtYXhSYW5raW5nO1xuICAgIH1cbiAgICBuZXdSYW5rID0gTWF0aC5taW4obmV3UmFuaywgbWF4UmFua2luZyk7XG4gICAgaWYgKG5ld1JhbmsgPj0gdGhyZXNob2xkICYmIG5ld1JhbmsgPiByYW5raW5nSW5mby5yYW5rKSB7XG4gICAgICByYW5raW5nSW5mby5yYW5rID0gbmV3UmFuaztcbiAgICAgIHJhbmtpbmdJbmZvLnBhc3NlZCA9IHRydWU7XG4gICAgICByYW5raW5nSW5mby5hY2Nlc3NvckluZGV4ID0gaTI7XG4gICAgICByYW5raW5nSW5mby5hY2Nlc3NvclRocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgICAgIHJhbmtpbmdJbmZvLnJhbmtlZFZhbHVlID0gcmFua1ZhbHVlLml0ZW1WYWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJhbmtpbmdJbmZvO1xufVxuZnVuY3Rpb24gZ2V0TWF0Y2hSYW5raW5nKHRlc3RTdHJpbmcsIHN0cmluZ1RvUmFuaywgb3B0aW9ucykge1xuICB0ZXN0U3RyaW5nID0gcHJlcGFyZVZhbHVlRm9yQ29tcGFyaXNvbih0ZXN0U3RyaW5nLCBvcHRpb25zKTtcbiAgc3RyaW5nVG9SYW5rID0gcHJlcGFyZVZhbHVlRm9yQ29tcGFyaXNvbihzdHJpbmdUb1JhbmssIG9wdGlvbnMpO1xuICBpZiAoc3RyaW5nVG9SYW5rLmxlbmd0aCA+IHRlc3RTdHJpbmcubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHJhbmtpbmdzLk5PX01BVENIO1xuICB9XG4gIGlmICh0ZXN0U3RyaW5nID09PSBzdHJpbmdUb1JhbmspIHtcbiAgICByZXR1cm4gcmFua2luZ3MuQ0FTRV9TRU5TSVRJVkVfRVFVQUw7XG4gIH1cbiAgdGVzdFN0cmluZyA9IHRlc3RTdHJpbmcudG9Mb3dlckNhc2UoKTtcbiAgc3RyaW5nVG9SYW5rID0gc3RyaW5nVG9SYW5rLnRvTG93ZXJDYXNlKCk7XG4gIGlmICh0ZXN0U3RyaW5nID09PSBzdHJpbmdUb1JhbmspIHtcbiAgICByZXR1cm4gcmFua2luZ3MuRVFVQUw7XG4gIH1cbiAgaWYgKHRlc3RTdHJpbmcuc3RhcnRzV2l0aChzdHJpbmdUb1JhbmspKSB7XG4gICAgcmV0dXJuIHJhbmtpbmdzLlNUQVJUU19XSVRIO1xuICB9XG4gIGlmICh0ZXN0U3RyaW5nLmluY2x1ZGVzKGAgJHtzdHJpbmdUb1Jhbmt9YCkpIHtcbiAgICByZXR1cm4gcmFua2luZ3MuV09SRF9TVEFSVFNfV0lUSDtcbiAgfVxuICBpZiAodGVzdFN0cmluZy5pbmNsdWRlcyhzdHJpbmdUb1JhbmspKSB7XG4gICAgcmV0dXJuIHJhbmtpbmdzLkNPTlRBSU5TO1xuICB9IGVsc2UgaWYgKHN0cmluZ1RvUmFuay5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gcmFua2luZ3MuTk9fTUFUQ0g7XG4gIH1cbiAgaWYgKGdldEFjcm9ueW0odGVzdFN0cmluZykuaW5jbHVkZXMoc3RyaW5nVG9SYW5rKSkge1xuICAgIHJldHVybiByYW5raW5ncy5BQ1JPTllNO1xuICB9XG4gIHJldHVybiBnZXRDbG9zZW5lc3NSYW5raW5nKHRlc3RTdHJpbmcsIHN0cmluZ1RvUmFuayk7XG59XG5mdW5jdGlvbiBnZXRBY3JvbnltKHN0cmluZykge1xuICBsZXQgYWNyb255bSA9IFwiXCI7XG4gIGNvbnN0IHdvcmRzSW5TdHJpbmcgPSBzdHJpbmcuc3BsaXQoXCIgXCIpO1xuICB3b3Jkc0luU3RyaW5nLmZvckVhY2goKHdvcmRJblN0cmluZykgPT4ge1xuICAgIGNvbnN0IHNwbGl0QnlIeXBoZW5Xb3JkcyA9IHdvcmRJblN0cmluZy5zcGxpdChcIi1cIik7XG4gICAgc3BsaXRCeUh5cGhlbldvcmRzLmZvckVhY2goKHNwbGl0QnlIeXBoZW5Xb3JkKSA9PiB7XG4gICAgICBhY3JvbnltICs9IHNwbGl0QnlIeXBoZW5Xb3JkLnN1YnN0cigwLCAxKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBhY3JvbnltO1xufVxuZnVuY3Rpb24gZ2V0Q2xvc2VuZXNzUmFua2luZyh0ZXN0U3RyaW5nLCBzdHJpbmdUb1JhbmspIHtcbiAgbGV0IG1hdGNoaW5nSW5PcmRlckNoYXJDb3VudCA9IDA7XG4gIGxldCBjaGFyTnVtYmVyID0gMDtcbiAgZnVuY3Rpb24gZmluZE1hdGNoaW5nQ2hhcmFjdGVyKG1hdGNoQ2hhciwgc3RyaW5nLCBpbmRleCkge1xuICAgIGZvciAobGV0IGogPSBpbmRleCwgSiA9IHN0cmluZy5sZW5ndGg7IGogPCBKOyBqKyspIHtcbiAgICAgIGNvbnN0IHN0cmluZ0NoYXIgPSBzdHJpbmdbal07XG4gICAgICBpZiAoc3RyaW5nQ2hhciA9PT0gbWF0Y2hDaGFyKSB7XG4gICAgICAgIG1hdGNoaW5nSW5PcmRlckNoYXJDb3VudCArPSAxO1xuICAgICAgICByZXR1cm4gaiArIDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuICBmdW5jdGlvbiBnZXRSYW5raW5nKHNwcmVhZDMpIHtcbiAgICBjb25zdCBzcHJlYWRQZXJjZW50YWdlID0gMSAvIHNwcmVhZDM7XG4gICAgY29uc3QgaW5PcmRlclBlcmNlbnRhZ2UgPSBtYXRjaGluZ0luT3JkZXJDaGFyQ291bnQgLyBzdHJpbmdUb1JhbmsubGVuZ3RoO1xuICAgIGNvbnN0IHJhbmtpbmcgPSByYW5raW5ncy5NQVRDSEVTICsgaW5PcmRlclBlcmNlbnRhZ2UgKiBzcHJlYWRQZXJjZW50YWdlO1xuICAgIHJldHVybiByYW5raW5nO1xuICB9XG4gIGNvbnN0IGZpcnN0SW5kZXggPSBmaW5kTWF0Y2hpbmdDaGFyYWN0ZXIoc3RyaW5nVG9SYW5rWzBdLCB0ZXN0U3RyaW5nLCAwKTtcbiAgaWYgKGZpcnN0SW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIHJhbmtpbmdzLk5PX01BVENIO1xuICB9XG4gIGNoYXJOdW1iZXIgPSBmaXJzdEluZGV4O1xuICBmb3IgKGxldCBpMiA9IDEsIEkgPSBzdHJpbmdUb1JhbmsubGVuZ3RoOyBpMiA8IEk7IGkyKyspIHtcbiAgICBjb25zdCBtYXRjaENoYXIgPSBzdHJpbmdUb1JhbmtbaTJdO1xuICAgIGNoYXJOdW1iZXIgPSBmaW5kTWF0Y2hpbmdDaGFyYWN0ZXIobWF0Y2hDaGFyLCB0ZXN0U3RyaW5nLCBjaGFyTnVtYmVyKTtcbiAgICBjb25zdCBmb3VuZCA9IGNoYXJOdW1iZXIgPiAtMTtcbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICByZXR1cm4gcmFua2luZ3MuTk9fTUFUQ0g7XG4gICAgfVxuICB9XG4gIGNvbnN0IHNwcmVhZDIgPSBjaGFyTnVtYmVyIC0gZmlyc3RJbmRleDtcbiAgcmV0dXJuIGdldFJhbmtpbmcoc3ByZWFkMik7XG59XG5mdW5jdGlvbiBwcmVwYXJlVmFsdWVGb3JDb21wYXJpc29uKHZhbHVlLCBfcmVmKSB7XG4gIGxldCB7XG4gICAga2VlcERpYWNyaXRpY3NcbiAgfSA9IF9yZWY7XG4gIHZhbHVlID0gYCR7dmFsdWV9YDtcbiAgaWYgKCFrZWVwRGlhY3JpdGljcykge1xuICAgIHZhbHVlID0gcmVtb3ZlQWNjZW50cyh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0SXRlbVZhbHVlcyhpdGVtLCBhY2Nlc3Nvcikge1xuICBsZXQgYWNjZXNzb3JGbiA9IGFjY2Vzc29yO1xuICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSBcIm9iamVjdFwiKSB7XG4gICAgYWNjZXNzb3JGbiA9IGFjY2Vzc29yLmFjY2Vzc29yO1xuICB9XG4gIGNvbnN0IHZhbHVlID0gYWNjZXNzb3JGbihpdGVtKTtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBbU3RyaW5nKHZhbHVlKV07XG59XG5mdW5jdGlvbiBnZXRBbGxWYWx1ZXNUb1JhbmsoaXRlbSwgYWNjZXNzb3JzKSB7XG4gIGNvbnN0IGFsbFZhbHVlcyA9IFtdO1xuICBmb3IgKGxldCBqID0gMCwgSiA9IGFjY2Vzc29ycy5sZW5ndGg7IGogPCBKOyBqKyspIHtcbiAgICBjb25zdCBhY2Nlc3NvciA9IGFjY2Vzc29yc1tqXTtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZ2V0QWNjZXNzb3JBdHRyaWJ1dGVzKGFjY2Vzc29yKTtcbiAgICBjb25zdCBpdGVtVmFsdWVzID0gZ2V0SXRlbVZhbHVlcyhpdGVtLCBhY2Nlc3Nvcik7XG4gICAgZm9yIChsZXQgaTIgPSAwLCBJID0gaXRlbVZhbHVlcy5sZW5ndGg7IGkyIDwgSTsgaTIrKykge1xuICAgICAgYWxsVmFsdWVzLnB1c2goe1xuICAgICAgICBpdGVtVmFsdWU6IGl0ZW1WYWx1ZXNbaTJdLFxuICAgICAgICBhdHRyaWJ1dGVzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFsbFZhbHVlcztcbn1cbnZhciBkZWZhdWx0S2V5QXR0cmlidXRlcyA9IHtcbiAgbWF4UmFua2luZzogSW5maW5pdHksXG4gIG1pblJhbmtpbmc6IC1JbmZpbml0eVxufTtcbmZ1bmN0aW9uIGdldEFjY2Vzc29yQXR0cmlidXRlcyhhY2Nlc3Nvcikge1xuICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gZGVmYXVsdEtleUF0dHJpYnV0ZXM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5kZWZhdWx0S2V5QXR0cmlidXRlcyxcbiAgICAuLi5hY2Nlc3NvclxuICB9O1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZ29vYmVyQDIuMS4xNl9jc3N0eXBlQDMuMS4zL25vZGVfbW9kdWxlcy9nb29iZXIvZGlzdC9nb29iZXIubW9kZXJuLmpzXG52YXIgZSA9IHsgZGF0YTogXCJcIiB9O1xudmFyIHQgPSAodDIpID0+IFwib2JqZWN0XCIgPT0gdHlwZW9mIHdpbmRvdyA/ICgodDIgPyB0Mi5xdWVyeVNlbGVjdG9yKFwiI19nb29iZXJcIikgOiB3aW5kb3cuX2dvb2JlcikgfHwgT2JqZWN0LmFzc2lnbigodDIgfHwgZG9jdW1lbnQuaGVhZCkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpKSwgeyBpbm5lckhUTUw6IFwiIFwiLCBpZDogXCJfZ29vYmVyXCIgfSkpLmZpcnN0Q2hpbGQgOiB0MiB8fCBlO1xudmFyIGwgPSAvKD86KFtcXHUwMDgwLVxcdUZGRkZcXHctJUBdKykgKjo/ICooW157O10rPyk7fChbXjt9e10qPykgKnspfCh9XFxzKikvZztcbnZhciBhID0gL1xcL1xcKlteXSo/XFwqXFwvfCAgKy9nO1xudmFyIG4gPSAvXFxuKy9nO1xudmFyIG8gPSAoZTIsIHQyKSA9PiB7XG4gIGxldCByMiA9IFwiXCIsIGwyID0gXCJcIiwgYTIgPSBcIlwiO1xuICBmb3IgKGxldCBuMiBpbiBlMikge1xuICAgIGxldCBjMiA9IGUyW24yXTtcbiAgICBcIkBcIiA9PSBuMlswXSA/IFwiaVwiID09IG4yWzFdID8gcjIgPSBuMiArIFwiIFwiICsgYzIgKyBcIjtcIiA6IGwyICs9IFwiZlwiID09IG4yWzFdID8gbyhjMiwgbjIpIDogbjIgKyBcIntcIiArIG8oYzIsIFwia1wiID09IG4yWzFdID8gXCJcIiA6IHQyKSArIFwifVwiIDogXCJvYmplY3RcIiA9PSB0eXBlb2YgYzIgPyBsMiArPSBvKGMyLCB0MiA/IHQyLnJlcGxhY2UoLyhbXixdKSsvZywgKGUzKSA9PiBuMi5yZXBsYWNlKC8oW14sXSo6XFxTK1xcKFteKV0qXFwpKXwoW14sXSkrL2csICh0MykgPT4gLyYvLnRlc3QodDMpID8gdDMucmVwbGFjZSgvJi9nLCBlMykgOiBlMyA/IGUzICsgXCIgXCIgKyB0MyA6IHQzKSkgOiBuMikgOiBudWxsICE9IGMyICYmIChuMiA9IC9eLS0vLnRlc3QobjIpID8gbjIgOiBuMi5yZXBsYWNlKC9bQS1aXS9nLCBcIi0kJlwiKS50b0xvd2VyQ2FzZSgpLCBhMiArPSBvLnAgPyBvLnAobjIsIGMyKSA6IG4yICsgXCI6XCIgKyBjMiArIFwiO1wiKTtcbiAgfVxuICByZXR1cm4gcjIgKyAodDIgJiYgYTIgPyB0MiArIFwie1wiICsgYTIgKyBcIn1cIiA6IGEyKSArIGwyO1xufTtcbnZhciBjID0ge307XG52YXIgcyA9IChlMikgPT4ge1xuICBpZiAoXCJvYmplY3RcIiA9PSB0eXBlb2YgZTIpIHtcbiAgICBsZXQgdDIgPSBcIlwiO1xuICAgIGZvciAobGV0IHIyIGluIGUyKSB0MiArPSByMiArIHMoZTJbcjJdKTtcbiAgICByZXR1cm4gdDI7XG4gIH1cbiAgcmV0dXJuIGUyO1xufTtcbnZhciBpID0gKGUyLCB0MiwgcjIsIGkyLCBwMikgPT4ge1xuICBsZXQgdTIgPSBzKGUyKSwgZCA9IGNbdTJdIHx8IChjW3UyXSA9ICgoZTMpID0+IHtcbiAgICBsZXQgdDMgPSAwLCByMyA9IDExO1xuICAgIGZvciAoOyB0MyA8IGUzLmxlbmd0aDsgKSByMyA9IDEwMSAqIHIzICsgZTMuY2hhckNvZGVBdCh0MysrKSA+Pj4gMDtcbiAgICByZXR1cm4gXCJnb1wiICsgcjM7XG4gIH0pKHUyKSk7XG4gIGlmICghY1tkXSkge1xuICAgIGxldCB0MyA9IHUyICE9PSBlMiA/IGUyIDogKChlMykgPT4ge1xuICAgICAgbGV0IHQ0LCByMywgbzIgPSBbe31dO1xuICAgICAgZm9yICg7IHQ0ID0gbC5leGVjKGUzLnJlcGxhY2UoYSwgXCJcIikpOyApIHQ0WzRdID8gbzIuc2hpZnQoKSA6IHQ0WzNdID8gKHIzID0gdDRbM10ucmVwbGFjZShuLCBcIiBcIikudHJpbSgpLCBvMi51bnNoaWZ0KG8yWzBdW3IzXSA9IG8yWzBdW3IzXSB8fCB7fSkpIDogbzJbMF1bdDRbMV1dID0gdDRbMl0ucmVwbGFjZShuLCBcIiBcIikudHJpbSgpO1xuICAgICAgcmV0dXJuIG8yWzBdO1xuICAgIH0pKGUyKTtcbiAgICBjW2RdID0gbyhwMiA/IHsgW1wiQGtleWZyYW1lcyBcIiArIGRdOiB0MyB9IDogdDMsIHIyID8gXCJcIiA6IFwiLlwiICsgZCk7XG4gIH1cbiAgbGV0IGYgPSByMiAmJiBjLmcgPyBjLmcgOiBudWxsO1xuICByZXR1cm4gcjIgJiYgKGMuZyA9IGNbZF0pLCAoKGUzLCB0MywgcjMsIGwyKSA9PiB7XG4gICAgbDIgPyB0My5kYXRhID0gdDMuZGF0YS5yZXBsYWNlKGwyLCBlMykgOiAtMSA9PT0gdDMuZGF0YS5pbmRleE9mKGUzKSAmJiAodDMuZGF0YSA9IHIzID8gZTMgKyB0My5kYXRhIDogdDMuZGF0YSArIGUzKTtcbiAgfSkoY1tkXSwgdDIsIGkyLCBmKSwgZDtcbn07XG52YXIgcCA9IChlMiwgdDIsIHIyKSA9PiBlMi5yZWR1Y2UoKGUzLCBsMiwgYTIpID0+IHtcbiAgbGV0IG4yID0gdDJbYTJdO1xuICBpZiAobjIgJiYgbjIuY2FsbCkge1xuICAgIGxldCBlNCA9IG4yKHIyKSwgdDMgPSBlNCAmJiBlNC5wcm9wcyAmJiBlNC5wcm9wcy5jbGFzc05hbWUgfHwgL15nby8udGVzdChlNCkgJiYgZTQ7XG4gICAgbjIgPSB0MyA/IFwiLlwiICsgdDMgOiBlNCAmJiBcIm9iamVjdFwiID09IHR5cGVvZiBlNCA/IGU0LnByb3BzID8gXCJcIiA6IG8oZTQsIFwiXCIpIDogZmFsc2UgPT09IGU0ID8gXCJcIiA6IGU0O1xuICB9XG4gIHJldHVybiBlMyArIGwyICsgKG51bGwgPT0gbjIgPyBcIlwiIDogbjIpO1xufSwgXCJcIik7XG5mdW5jdGlvbiB1KGUyKSB7XG4gIGxldCByMiA9IHRoaXMgfHwge30sIGwyID0gZTIuY2FsbCA/IGUyKHIyLnApIDogZTI7XG4gIHJldHVybiBpKGwyLnVuc2hpZnQgPyBsMi5yYXcgPyBwKGwyLCBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSksIHIyLnApIDogbDIucmVkdWNlKChlMywgdDIpID0+IE9iamVjdC5hc3NpZ24oZTMsIHQyICYmIHQyLmNhbGwgPyB0MihyMi5wKSA6IHQyKSwge30pIDogbDIsIHQocjIudGFyZ2V0KSwgcjIuZywgcjIubywgcjIuayk7XG59XG51LmJpbmQoeyBnOiAxIH0pO1xudS5iaW5kKHsgazogMSB9KTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nsc3hAMi4xLjEvbm9kZV9tb2R1bGVzL2Nsc3gvZGlzdC9jbHN4Lm1qc1xuZnVuY3Rpb24gcihlMikge1xuICB2YXIgdDIsIGYsIG4yID0gXCJcIjtcbiAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIGUyIHx8IFwibnVtYmVyXCIgPT0gdHlwZW9mIGUyKSBuMiArPSBlMjtcbiAgZWxzZSBpZiAoXCJvYmplY3RcIiA9PSB0eXBlb2YgZTIpIGlmIChBcnJheS5pc0FycmF5KGUyKSkge1xuICAgIHZhciBvMiA9IGUyLmxlbmd0aDtcbiAgICBmb3IgKHQyID0gMDsgdDIgPCBvMjsgdDIrKykgZTJbdDJdICYmIChmID0gcihlMlt0Ml0pKSAmJiAobjIgJiYgKG4yICs9IFwiIFwiKSwgbjIgKz0gZik7XG4gIH0gZWxzZSBmb3IgKGYgaW4gZTIpIGUyW2ZdICYmIChuMiAmJiAobjIgKz0gXCIgXCIpLCBuMiArPSBmKTtcbiAgcmV0dXJuIG4yO1xufVxuZnVuY3Rpb24gY2xzeCgpIHtcbiAgZm9yICh2YXIgZTIsIHQyLCBmID0gMCwgbjIgPSBcIlwiLCBvMiA9IGFyZ3VtZW50cy5sZW5ndGg7IGYgPCBvMjsgZisrKSAoZTIgPSBhcmd1bWVudHNbZl0pICYmICh0MiA9IHIoZTIpKSAmJiAobjIgJiYgKG4yICs9IFwiIFwiKSwgbjIgKz0gdDIpO1xuICByZXR1cm4gbjI7XG59XG5mdW5jdGlvbiBjcmVhdGVMaXN0VHJhbnNpdGlvbihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgY29uc3QgaW5pdFNvdXJjZSA9IHVudHJhY2soc291cmNlKTtcbiAgaWYgKGlzU2VydmVyKSB7XG4gICAgY29uc3QgY29weSA9IGluaXRTb3VyY2Uuc2xpY2UoKTtcbiAgICByZXR1cm4gKCkgPT4gY29weTtcbiAgfVxuICBjb25zdCB7IG9uQ2hhbmdlIH0gPSBvcHRpb25zO1xuICBsZXQgcHJldlNldCA9IG5ldyBTZXQob3B0aW9ucy5hcHBlYXIgPyB2b2lkIDAgOiBpbml0U291cmNlKTtcbiAgY29uc3QgZXhpdGluZyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha1NldCgpO1xuICBjb25zdCBbdG9SZW1vdmUsIHNldFRvUmVtb3ZlXSA9IGNyZWF0ZVNpZ25hbChbXSwgeyBlcXVhbHM6IGZhbHNlIH0pO1xuICBjb25zdCBbaXNUcmFuc2l0aW9uUGVuZGluZ10gPSB1c2VUcmFuc2l0aW9uKCk7XG4gIGNvbnN0IGZpbmlzaFJlbW92ZWQgPSAoZWxzKSA9PiB7XG4gICAgc2V0VG9SZW1vdmUoKHAyKSA9PiAocDIucHVzaC5hcHBseShwMiwgZWxzKSwgcDIpKTtcbiAgICBmb3IgKGNvbnN0IGVsIG9mIGVscylcbiAgICAgIGV4aXRpbmcuZGVsZXRlKGVsKTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlUmVtb3ZlZCA9IChlbHMsIGVsLCBpMikgPT4gZWxzLnNwbGljZShpMiwgMCwgZWwpIDtcbiAgcmV0dXJuIGNyZWF0ZU1lbW8oXG4gICAgKHByZXYpID0+IHtcbiAgICAgIGNvbnN0IGVsc1RvUmVtb3ZlID0gdG9SZW1vdmUoKTtcbiAgICAgIGNvbnN0IHNvdXJjZUxpc3QgPSBzb3VyY2UoKTtcbiAgICAgIHNvdXJjZUxpc3RbJFRSQUNLXTtcbiAgICAgIGlmICh1bnRyYWNrKGlzVHJhbnNpdGlvblBlbmRpbmcpKSB7XG4gICAgICAgIGlzVHJhbnNpdGlvblBlbmRpbmcoKTtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9XG4gICAgICBpZiAoZWxzVG9SZW1vdmUubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBwcmV2LmZpbHRlcigoZTIpID0+ICFlbHNUb1JlbW92ZS5pbmNsdWRlcyhlMikpO1xuICAgICAgICBlbHNUb1JlbW92ZS5sZW5ndGggPSAwO1xuICAgICAgICBvbkNoYW5nZSh7IGxpc3Q6IG5leHQsIGFkZGVkOiBbXSwgcmVtb3ZlZDogW10sIHVuY2hhbmdlZDogbmV4dCwgZmluaXNoUmVtb3ZlZCB9KTtcbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW50cmFjaygoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRTZXQgPSBuZXcgU2V0KHNvdXJjZUxpc3QpO1xuICAgICAgICBjb25zdCBuZXh0ID0gc291cmNlTGlzdC5zbGljZSgpO1xuICAgICAgICBjb25zdCBhZGRlZCA9IFtdO1xuICAgICAgICBjb25zdCByZW1vdmVkID0gW107XG4gICAgICAgIGNvbnN0IHVuY2hhbmdlZCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIHNvdXJjZUxpc3QpIHtcbiAgICAgICAgICAocHJldlNldC5oYXMoZWwpID8gdW5jaGFuZ2VkIDogYWRkZWQpLnB1c2goZWwpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBub3RoaW5nQ2hhbmdlZCA9ICFhZGRlZC5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkyID0gMDsgaTIgPCBwcmV2Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgIGNvbnN0IGVsID0gcHJldltpMl07XG4gICAgICAgICAgaWYgKCFuZXh0U2V0LmhhcyhlbCkpIHtcbiAgICAgICAgICAgIGlmICghZXhpdGluZy5oYXMoZWwpKSB7XG4gICAgICAgICAgICAgIHJlbW92ZWQucHVzaChlbCk7XG4gICAgICAgICAgICAgIGV4aXRpbmcuYWRkKGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZVJlbW92ZWQobmV4dCwgZWwsIGkyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5vdGhpbmdDaGFuZ2VkICYmIGVsICE9PSBuZXh0W2kyXSlcbiAgICAgICAgICAgIG5vdGhpbmdDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZW1vdmVkLmxlbmd0aCAmJiBub3RoaW5nQ2hhbmdlZClcbiAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgb25DaGFuZ2UoeyBsaXN0OiBuZXh0LCBhZGRlZCwgcmVtb3ZlZCwgdW5jaGFuZ2VkLCBmaW5pc2hSZW1vdmVkIH0pO1xuICAgICAgICBwcmV2U2V0ID0gbmV4dFNldDtcbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9wdGlvbnMuYXBwZWFyID8gW10gOiBpbml0U291cmNlLnNsaWNlKClcbiAgKTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzb2xpZC1wcmltaXRpdmVzK3JlZnNAMS4wLjhfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Bzb2xpZC1wcmltaXRpdmVzL3JlZnMvZGlzdC9pbmRleC5qc1xuZnVuY3Rpb24gbWVyZ2VSZWZzKC4uLnJlZnMpIHtcbiAgcmV0dXJuIGNoYWluKHJlZnMpO1xufVxudmFyIGRlZmF1bHRFbGVtZW50UHJlZGljYXRlID0gaXNTZXJ2ZXIgPyAoaXRlbSkgPT4gaXRlbSAhPSBudWxsICYmIHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiICYmIFwidFwiIGluIGl0ZW0gOiAoaXRlbSkgPT4gaXRlbSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG5mdW5jdGlvbiBnZXRSZXNvbHZlZEVsZW1lbnRzKHZhbHVlLCBwcmVkaWNhdGUpIHtcbiAgaWYgKHByZWRpY2F0ZSh2YWx1ZSkpXG4gICAgcmV0dXJuIHZhbHVlO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIgJiYgIXZhbHVlLmxlbmd0aClcbiAgICByZXR1cm4gZ2V0UmVzb2x2ZWRFbGVtZW50cyh2YWx1ZSgpLCBwcmVkaWNhdGUpO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRSZXNvbHZlZEVsZW1lbnRzKGl0ZW0sIHByZWRpY2F0ZSk7XG4gICAgICBpZiAocmVzdWx0KVxuICAgICAgICBBcnJheS5pc0FycmF5KHJlc3VsdCkgPyByZXN1bHRzLnB1c2guYXBwbHkocmVzdWx0cywgcmVzdWx0KSA6IHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cy5sZW5ndGggPyByZXN1bHRzIDogbnVsbDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHJlc29sdmVFbGVtZW50cyhmbiwgcHJlZGljYXRlID0gZGVmYXVsdEVsZW1lbnRQcmVkaWNhdGUsIHNlcnZlclByZWRpY2F0ZSA9IGRlZmF1bHRFbGVtZW50UHJlZGljYXRlKSB7XG4gIGNvbnN0IGNoaWxkcmVuMiA9IGNyZWF0ZU1lbW8oZm4pO1xuICBjb25zdCBtZW1vID0gY3JlYXRlTWVtbyhcbiAgICAoKSA9PiBnZXRSZXNvbHZlZEVsZW1lbnRzKGNoaWxkcmVuMigpLCBpc1NlcnZlciA/IHNlcnZlclByZWRpY2F0ZSA6IHByZWRpY2F0ZSlcbiAgKTtcbiAgbWVtby50b0FycmF5ID0gKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gbWVtbygpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdmFsdWUgPyBbdmFsdWVdIDogW107XG4gIH07XG4gIHJldHVybiBtZW1vO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc29saWQtdHJhbnNpdGlvbi1ncm91cEAwLjIuM19zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvc29saWQtdHJhbnNpdGlvbi1ncm91cC9kaXN0L2luZGV4LmpzXG5mdW5jdGlvbiBjcmVhdGVDbGFzc25hbWVzKHByb3BzKSB7XG4gIHJldHVybiBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBjb25zdCBuYW1lID0gcHJvcHMubmFtZSB8fCBcInNcIjtcbiAgICByZXR1cm4ge1xuICAgICAgZW50ZXJBY3RpdmU6IChwcm9wcy5lbnRlckFjdGl2ZUNsYXNzIHx8IG5hbWUgKyBcIi1lbnRlci1hY3RpdmVcIikuc3BsaXQoXCIgXCIpLFxuICAgICAgZW50ZXI6IChwcm9wcy5lbnRlckNsYXNzIHx8IG5hbWUgKyBcIi1lbnRlclwiKS5zcGxpdChcIiBcIiksXG4gICAgICBlbnRlclRvOiAocHJvcHMuZW50ZXJUb0NsYXNzIHx8IG5hbWUgKyBcIi1lbnRlci10b1wiKS5zcGxpdChcIiBcIiksXG4gICAgICBleGl0QWN0aXZlOiAocHJvcHMuZXhpdEFjdGl2ZUNsYXNzIHx8IG5hbWUgKyBcIi1leGl0LWFjdGl2ZVwiKS5zcGxpdChcIiBcIiksXG4gICAgICBleGl0OiAocHJvcHMuZXhpdENsYXNzIHx8IG5hbWUgKyBcIi1leGl0XCIpLnNwbGl0KFwiIFwiKSxcbiAgICAgIGV4aXRUbzogKHByb3BzLmV4aXRUb0NsYXNzIHx8IG5hbWUgKyBcIi1leGl0LXRvXCIpLnNwbGl0KFwiIFwiKSxcbiAgICAgIG1vdmU6IChwcm9wcy5tb3ZlQ2xhc3MgfHwgbmFtZSArIFwiLW1vdmVcIikuc3BsaXQoXCIgXCIpXG4gICAgfTtcbiAgfSk7XG59XG5mdW5jdGlvbiBuZXh0RnJhbWUoZm4pIHtcbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShmbikpO1xufVxuZnVuY3Rpb24gZW50ZXJUcmFuc2l0aW9uKGNsYXNzZXMsIGV2ZW50cywgZWwsIGRvbmUpIHtcbiAgY29uc3QgeyBvbkJlZm9yZUVudGVyLCBvbkVudGVyLCBvbkFmdGVyRW50ZXIgfSA9IGV2ZW50cztcbiAgb25CZWZvcmVFbnRlcj8uKGVsKTtcbiAgZWwuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzLmVudGVyKTtcbiAgZWwuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzLmVudGVyQWN0aXZlKTtcbiAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgIGlmICghZWwucGFyZW50Tm9kZSlcbiAgICAgIHJldHVybiBkb25lPy4oKTtcbiAgICBvbkVudGVyPy4oZWwsICgpID0+IGVuZFRyYW5zaXRpb24oKSk7XG4gIH0pO1xuICBuZXh0RnJhbWUoKCkgPT4ge1xuICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlcy5lbnRlcik7XG4gICAgZWwuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzLmVudGVyVG8pO1xuICAgIGlmICghb25FbnRlciB8fCBvbkVudGVyLmxlbmd0aCA8IDIpIHtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIGVuZFRyYW5zaXRpb24pO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImFuaW1hdGlvbmVuZFwiLCBlbmRUcmFuc2l0aW9uKTtcbiAgICB9XG4gIH0pO1xuICBmdW5jdGlvbiBlbmRUcmFuc2l0aW9uKGUyKSB7XG4gICAgaWYgKCFlMiB8fCBlMi50YXJnZXQgPT09IGVsKSB7XG4gICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCBlbmRUcmFuc2l0aW9uKTtcbiAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25lbmRcIiwgZW5kVHJhbnNpdGlvbik7XG4gICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzZXMuZW50ZXJBY3RpdmUpO1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSguLi5jbGFzc2VzLmVudGVyVG8pO1xuICAgICAgb25BZnRlckVudGVyPy4oZWwpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZXhpdFRyYW5zaXRpb24oY2xhc3NlcywgZXZlbnRzLCBlbCwgZG9uZSkge1xuICBjb25zdCB7IG9uQmVmb3JlRXhpdCwgb25FeGl0LCBvbkFmdGVyRXhpdCB9ID0gZXZlbnRzO1xuICBpZiAoIWVsLnBhcmVudE5vZGUpXG4gICAgcmV0dXJuIGRvbmU/LigpO1xuICBvbkJlZm9yZUV4aXQ/LihlbCk7XG4gIGVsLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5leGl0KTtcbiAgZWwuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzLmV4aXRBY3RpdmUpO1xuICBvbkV4aXQ/LihlbCwgKCkgPT4gZW5kVHJhbnNpdGlvbigpKTtcbiAgbmV4dEZyYW1lKCgpID0+IHtcbiAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzZXMuZXhpdCk7XG4gICAgZWwuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzLmV4aXRUbyk7XG4gICAgaWYgKCFvbkV4aXQgfHwgb25FeGl0Lmxlbmd0aCA8IDIpIHtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIGVuZFRyYW5zaXRpb24pO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImFuaW1hdGlvbmVuZFwiLCBlbmRUcmFuc2l0aW9uKTtcbiAgICB9XG4gIH0pO1xuICBmdW5jdGlvbiBlbmRUcmFuc2l0aW9uKGUyKSB7XG4gICAgaWYgKCFlMiB8fCBlMi50YXJnZXQgPT09IGVsKSB7XG4gICAgICBkb25lPy4oKTtcbiAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIGVuZFRyYW5zaXRpb24pO1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFuaW1hdGlvbmVuZFwiLCBlbmRUcmFuc2l0aW9uKTtcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlcy5leGl0QWN0aXZlKTtcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlcy5leGl0VG8pO1xuICAgICAgb25BZnRlckV4aXQ/LihlbCk7XG4gICAgfVxuICB9XG59XG52YXIgVHJhbnNpdGlvbkdyb3VwID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IGNsYXNzbmFtZXMgPSBjcmVhdGVDbGFzc25hbWVzKHByb3BzKTtcbiAgcmV0dXJuIGNyZWF0ZUxpc3RUcmFuc2l0aW9uKHJlc29sdmVFbGVtZW50cygoKSA9PiBwcm9wcy5jaGlsZHJlbikudG9BcnJheSwge1xuICAgIGFwcGVhcjogcHJvcHMuYXBwZWFyLFxuICAgIG9uQ2hhbmdlKHsgYWRkZWQsIHJlbW92ZWQsIGZpbmlzaFJlbW92ZWQsIGxpc3QgfSkge1xuICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoKTtcbiAgICAgIGZvciAoY29uc3QgZWwgb2YgYWRkZWQpIHtcbiAgICAgICAgZW50ZXJUcmFuc2l0aW9uKGNsYXNzZXMsIHByb3BzLCBlbCk7XG4gICAgICB9XG4gICAgICBjb25zdCB0b01vdmUgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZWwgb2YgbGlzdCkge1xuICAgICAgICBpZiAoZWwuaXNDb25uZWN0ZWQgJiYgKGVsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgZWwgaW5zdGFuY2VvZiBTVkdFbGVtZW50KSkge1xuICAgICAgICAgIHRvTW92ZS5wdXNoKHsgZWwsIHJlY3Q6IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vdmVkID0gW107XG4gICAgICAgIGZvciAoY29uc3QgeyBlbCwgcmVjdCB9IG9mIHRvTW92ZSkge1xuICAgICAgICAgIGlmIChlbC5pc0Nvbm5lY3RlZCkge1xuICAgICAgICAgICAgY29uc3QgbmV3UmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBkWCA9IHJlY3QubGVmdCAtIG5ld1JlY3QubGVmdCwgZFkgPSByZWN0LnRvcCAtIG5ld1JlY3QudG9wO1xuICAgICAgICAgICAgaWYgKGRYIHx8IGRZKSB7XG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtkWH1weCwgJHtkWX1weClgO1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBcIjBzXCI7XG4gICAgICAgICAgICAgIG1vdmVkLnB1c2goZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDtcbiAgICAgICAgZm9yIChjb25zdCBlbCBvZiBtb3ZlZCkge1xuICAgICAgICAgIGxldCBlbmRUcmFuc2l0aW9uMiA9IGZ1bmN0aW9uKGUyKSB7XG4gICAgICAgICAgICBpZiAoZTIudGFyZ2V0ID09PSBlbCB8fCAvdHJhbnNmb3JtJC8udGVzdChlMi5wcm9wZXJ0eU5hbWUpKSB7XG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIGVuZFRyYW5zaXRpb24yKTtcbiAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSguLi5jbGFzc2VzLm1vdmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzLm1vdmUpO1xuICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGVsLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IFwiXCI7XG4gICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgZW5kVHJhbnNpdGlvbjIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgZWwgb2YgcmVtb3ZlZCkge1xuICAgICAgICBleGl0VHJhbnNpdGlvbihjbGFzc2VzLCBwcm9wcywgZWwsICgpID0+IGZpbmlzaFJlbW92ZWQoW2VsXSkpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHNvbGlkLXByaW1pdGl2ZXMra2V5ZWRAMS4yLjJfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Bzb2xpZC1wcmltaXRpdmVzL2tleWVkL2Rpc3QvaW5kZXguanNcbnZhciBGQUxMQkFDSyA9IFN5bWJvbChcImZhbGxiYWNrXCIpO1xuZnVuY3Rpb24gZGlzcG9zZShsaXN0KSB7XG4gIGZvciAoY29uc3QgbzIgb2YgbGlzdClcbiAgICBvMi5kaXNwb3NlKCk7XG59XG5mdW5jdGlvbiBrZXlBcnJheShpdGVtcywga2V5Rm4sIG1hcEZuLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKGlzU2VydmVyKSB7XG4gICAgY29uc3QgaXRlbXNSZWYgPSBpdGVtcygpO1xuICAgIGxldCBzMiA9IFtdO1xuICAgIGlmIChpdGVtc1JlZiAmJiBpdGVtc1JlZi5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkyID0gMCwgbGVuID0gaXRlbXNSZWYubGVuZ3RoOyBpMiA8IGxlbjsgaTIrKylcbiAgICAgICAgczIucHVzaChcbiAgICAgICAgICBtYXBGbihcbiAgICAgICAgICAgICgpID0+IGl0ZW1zUmVmW2kyXSxcbiAgICAgICAgICAgICgpID0+IGkyXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5mYWxsYmFjaylcbiAgICAgIHMyID0gW29wdGlvbnMuZmFsbGJhY2soKV07XG4gICAgcmV0dXJuICgpID0+IHMyO1xuICB9XG4gIGNvbnN0IHByZXYgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBvbkNsZWFudXAoKCkgPT4gZGlzcG9zZShwcmV2LnZhbHVlcygpKSk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgY29uc3QgbGlzdCA9IGl0ZW1zKCkgfHwgW107XG4gICAgbGlzdFskVFJBQ0tdO1xuICAgIHJldHVybiB1bnRyYWNrKCgpID0+IHtcbiAgICAgIGlmICghbGlzdC5sZW5ndGgpIHtcbiAgICAgICAgZGlzcG9zZShwcmV2LnZhbHVlcygpKTtcbiAgICAgICAgcHJldi5jbGVhcigpO1xuICAgICAgICBpZiAoIW9wdGlvbnMuZmFsbGJhY2spXG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCBmYjIgPSBjcmVhdGVSb290KChkaXNwb3NlMikgPT4ge1xuICAgICAgICAgIHByZXYuc2V0KEZBTExCQUNLLCB7IGRpc3Bvc2U6IGRpc3Bvc2UyIH0pO1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmZhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gW2ZiMl07XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXkobGlzdC5sZW5ndGgpO1xuICAgICAgY29uc3QgZmIgPSBwcmV2LmdldChGQUxMQkFDSyk7XG4gICAgICBpZiAoIXByZXYuc2l6ZSB8fCBmYikge1xuICAgICAgICBmYj8uZGlzcG9zZSgpO1xuICAgICAgICBwcmV2LmRlbGV0ZShGQUxMQkFDSyk7XG4gICAgICAgIGZvciAobGV0IGkyID0gMDsgaTIgPCBsaXN0Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBsaXN0W2kyXTtcbiAgICAgICAgICBjb25zdCBrZXkgPSBrZXlGbihpdGVtLCBpMik7XG4gICAgICAgICAgYWRkTmV3SXRlbShyZXN1bHQsIGl0ZW0sIGkyLCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBjb25zdCBwcmV2S2V5cyA9IG5ldyBTZXQocHJldi5rZXlzKCkpO1xuICAgICAgZm9yIChsZXQgaTIgPSAwOyBpMiA8IGxpc3QubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBsaXN0W2kyXTtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5Rm4oaXRlbSwgaTIpO1xuICAgICAgICBwcmV2S2V5cy5kZWxldGUoa2V5KTtcbiAgICAgICAgY29uc3QgbG9va3VwID0gcHJldi5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGxvb2t1cCkge1xuICAgICAgICAgIHJlc3VsdFtpMl0gPSBsb29rdXAubWFwcGVkO1xuICAgICAgICAgIGxvb2t1cC5zZXRJbmRleD8uKGkyKTtcbiAgICAgICAgICBsb29rdXAuc2V0SXRlbSgoKSA9PiBpdGVtKTtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgYWRkTmV3SXRlbShyZXN1bHQsIGl0ZW0sIGkyLCBrZXkpO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgcHJldktleXMpIHtcbiAgICAgICAgcHJldi5nZXQoa2V5KT8uZGlzcG9zZSgpO1xuICAgICAgICBwcmV2LmRlbGV0ZShrZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgfTtcbiAgZnVuY3Rpb24gYWRkTmV3SXRlbShsaXN0LCBpdGVtLCBpMiwga2V5KSB7XG4gICAgY3JlYXRlUm9vdCgoZGlzcG9zZTIpID0+IHtcbiAgICAgIGNvbnN0IFtnZXRJdGVtLCBzZXRJdGVtXSA9IGNyZWF0ZVNpZ25hbChpdGVtKTtcbiAgICAgIGNvbnN0IHNhdmUgPSB7IHNldEl0ZW0sIGRpc3Bvc2U6IGRpc3Bvc2UyIH07XG4gICAgICBpZiAobWFwRm4ubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbChpMik7XG4gICAgICAgIHNhdmUuc2V0SW5kZXggPSBzZXRJbmRleDtcbiAgICAgICAgc2F2ZS5tYXBwZWQgPSBtYXBGbihnZXRJdGVtLCBpbmRleCk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgc2F2ZS5tYXBwZWQgPSBtYXBGbihnZXRJdGVtKTtcbiAgICAgIHByZXYuc2V0KGtleSwgc2F2ZSk7XG4gICAgICBsaXN0W2kyXSA9IHNhdmUubWFwcGVkO1xuICAgIH0pO1xuICB9XG59XG5mdW5jdGlvbiBLZXkocHJvcHMpIHtcbiAgY29uc3QgeyBieSB9ID0gcHJvcHM7XG4gIHJldHVybiBjcmVhdGVNZW1vKFxuICAgIGtleUFycmF5KFxuICAgICAgKCkgPT4gcHJvcHMuZWFjaCxcbiAgICAgIHR5cGVvZiBieSA9PT0gXCJmdW5jdGlvblwiID8gYnkgOiAodikgPT4gdltieV0sXG4gICAgICBwcm9wcy5jaGlsZHJlbixcbiAgICAgIFwiZmFsbGJhY2tcIiBpbiBwcm9wcyA/IHsgZmFsbGJhY2s6ICgpID0+IHByb3BzLmZhbGxiYWNrIH0gOiB2b2lkIDBcbiAgICApXG4gICk7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac29saWQtcHJpbWl0aXZlcytldmVudC1saXN0ZW5lckAyLjMuM19zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQHNvbGlkLXByaW1pdGl2ZXMvZXZlbnQtbGlzdGVuZXIvZGlzdC9pbmRleC5qc1xuZnVuY3Rpb24gbWFrZUV2ZW50TGlzdGVuZXIodGFyZ2V0LCB0eXBlLCBoYW5kbGVyLCBvcHRpb25zKSB7XG4gIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICByZXR1cm4gdHJ5T25DbGVhbnVwKHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGFyZ2V0LCB0eXBlLCBoYW5kbGVyLCBvcHRpb25zKSk7XG59XG5mdW5jdGlvbiBjcmVhdGVFdmVudExpc3RlbmVyKHRhcmdldHMsIHR5cGUsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgaWYgKGlzU2VydmVyKVxuICAgIHJldHVybjtcbiAgY29uc3QgYXR0YWNoTGlzdGVuZXJzID0gKCkgPT4ge1xuICAgIGFzQXJyYXkoYWNjZXNzKHRhcmdldHMpKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgaWYgKGVsKVxuICAgICAgICBhc0FycmF5KGFjY2Vzcyh0eXBlKSkuZm9yRWFjaCgodHlwZTIpID0+IG1ha2VFdmVudExpc3RlbmVyKGVsLCB0eXBlMiwgaGFuZGxlciwgb3B0aW9ucykpO1xuICAgIH0pO1xuICB9O1xuICBpZiAodHlwZW9mIHRhcmdldHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICBjcmVhdGVFZmZlY3QoYXR0YWNoTGlzdGVuZXJzKTtcbiAgZWxzZVxuICAgIGNyZWF0ZVJlbmRlckVmZmVjdChhdHRhY2hMaXN0ZW5lcnMpO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHNvbGlkLXByaW1pdGl2ZXMrcmVzaXplLW9ic2VydmVyQDIuMC4yNl9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQHNvbGlkLXByaW1pdGl2ZXMvcmVzaXplLW9ic2VydmVyL2Rpc3QvaW5kZXguanNcbmZ1bmN0aW9uIG1ha2VSZXNpemVPYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucykge1xuICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICByZXR1cm4geyBvYnNlcnZlOiBub29wLCB1bm9ic2VydmU6IG5vb3AgfTtcbiAgfVxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihjYWxsYmFjayk7XG4gIG9uQ2xlYW51cChvYnNlcnZlci5kaXNjb25uZWN0LmJpbmQob2JzZXJ2ZXIpKTtcbiAgcmV0dXJuIHtcbiAgICBvYnNlcnZlOiAocmVmKSA9PiBvYnNlcnZlci5vYnNlcnZlKHJlZiwgb3B0aW9ucyksXG4gICAgdW5vYnNlcnZlOiBvYnNlcnZlci51bm9ic2VydmUuYmluZChvYnNlcnZlcilcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJlc2l6ZU9ic2VydmVyKHRhcmdldHMsIG9uUmVzaXplLCBvcHRpb25zKSB7XG4gIGlmIChpc1NlcnZlcilcbiAgICByZXR1cm47XG4gIGNvbnN0IHByZXZpb3VzTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCksIHsgb2JzZXJ2ZSwgdW5vYnNlcnZlIH0gPSBtYWtlUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMyKSA9PiB7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzMikge1xuICAgICAgY29uc3QgeyBjb250ZW50UmVjdCwgdGFyZ2V0IH0gPSBlbnRyeSwgd2lkdGggPSBNYXRoLnJvdW5kKGNvbnRlbnRSZWN0LndpZHRoKSwgaGVpZ2h0ID0gTWF0aC5yb3VuZChjb250ZW50UmVjdC5oZWlnaHQpLCBwcmV2aW91cyA9IHByZXZpb3VzTWFwLmdldCh0YXJnZXQpO1xuICAgICAgaWYgKCFwcmV2aW91cyB8fCBwcmV2aW91cy53aWR0aCAhPT0gd2lkdGggfHwgcHJldmlvdXMuaGVpZ2h0ICE9PSBoZWlnaHQpIHtcbiAgICAgICAgb25SZXNpemUoY29udGVudFJlY3QsIHRhcmdldCwgZW50cnkpO1xuICAgICAgICBwcmV2aW91c01hcC5zZXQodGFyZ2V0LCB7IHdpZHRoLCBoZWlnaHQgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBvcHRpb25zKTtcbiAgY3JlYXRlRWZmZWN0KChwcmV2KSA9PiB7XG4gICAgY29uc3QgcmVmcyA9IGZpbHRlck5vbk51bGxhYmxlKGFzQXJyYXkoYWNjZXNzKHRhcmdldHMpKSk7XG4gICAgaGFuZGxlRGlmZkFycmF5KHJlZnMsIHByZXYsIG9ic2VydmUsIHVub2JzZXJ2ZSk7XG4gICAgcmV0dXJuIHJlZnM7XG4gIH0sIFtdKTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzb2xpZC1wcmltaXRpdmVzK3Byb3BzQDMuMS4xMV9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQHNvbGlkLXByaW1pdGl2ZXMvcHJvcHMvZGlzdC9pbmRleC5qc1xudmFyIGV4dHJhY3RDU1NyZWdleCA9IC8oKD86LS0pPyg/OlxcdystPykrKVxccyo6XFxzKihbXjtdKikvZztcbmZ1bmN0aW9uIHN0cmluZ1N0eWxlVG9PYmplY3Qoc3R5bGUpIHtcbiAgY29uc3Qgb2JqZWN0ID0ge307XG4gIGxldCBtYXRjaDtcbiAgd2hpbGUgKG1hdGNoID0gZXh0cmFjdENTU3JlZ2V4LmV4ZWMoc3R5bGUpKSB7XG4gICAgb2JqZWN0W21hdGNoWzFdXSA9IG1hdGNoWzJdO1xuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5mdW5jdGlvbiBjb21iaW5lU3R5bGUoYTIsIGIyKSB7XG4gIGlmICh0eXBlb2YgYTIgPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAodHlwZW9mIGIyID09PSBcInN0cmluZ1wiKVxuICAgICAgcmV0dXJuIGAke2EyfTske2IyfWA7XG4gICAgYTIgPSBzdHJpbmdTdHlsZVRvT2JqZWN0KGEyKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgYjIgPT09IFwic3RyaW5nXCIpIHtcbiAgICBiMiA9IHN0cmluZ1N0eWxlVG9PYmplY3QoYjIpO1xuICB9XG4gIHJldHVybiB7IC4uLmEyLCAuLi5iMiB9O1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrdXRpbHNAMC45LjBfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL3V0aWxzL2Rpc3QvaW5kZXguanNcbmZ1bmN0aW9uIGFkZEl0ZW1Ub0FycmF5KGFycmF5LCBpdGVtLCBpbmRleCA9IC0xKSB7XG4gIGlmICghKGluZGV4IGluIGFycmF5KSkge1xuICAgIHJldHVybiBbLi4uYXJyYXksIGl0ZW1dO1xuICB9XG4gIHJldHVybiBbLi4uYXJyYXkuc2xpY2UoMCwgaW5kZXgpLCBpdGVtLCAuLi5hcnJheS5zbGljZShpbmRleCldO1xufVxuZnVuY3Rpb24gcmVtb3ZlSXRlbUZyb21BcnJheShhcnJheSwgaXRlbSkge1xuICBjb25zdCB1cGRhdGVkQXJyYXkgPSBbLi4uYXJyYXldO1xuICBjb25zdCBpbmRleCA9IHVwZGF0ZWRBcnJheS5pbmRleE9mKGl0ZW0pO1xuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgdXBkYXRlZEFycmF5LnNwbGljZShpbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIHVwZGF0ZWRBcnJheTtcbn1cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCI7XG59XG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIjtcbn1cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gY3JlYXRlR2VuZXJhdGVJZChiYXNlSWQpIHtcbiAgcmV0dXJuIChzdWZmaXgpID0+IGAke2Jhc2VJZCgpfS0ke3N1ZmZpeH1gO1xufVxuZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICBpZiAoIXBhcmVudCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gcGFyZW50ID09PSBjaGlsZCB8fCBwYXJlbnQuY29udGFpbnMoY2hpbGQpO1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlRWxlbWVudChub2RlLCBhY3RpdmVEZXNjZW5kYW50ID0gZmFsc2UpIHtcbiAgY29uc3QgeyBhY3RpdmVFbGVtZW50IH0gPSBnZXREb2N1bWVudChub2RlKTtcbiAgaWYgKCFhY3RpdmVFbGVtZW50Py5ub2RlTmFtZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChpc0ZyYW1lKGFjdGl2ZUVsZW1lbnQpICYmIGFjdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50KSB7XG4gICAgcmV0dXJuIGdldEFjdGl2ZUVsZW1lbnQoYWN0aXZlRWxlbWVudC5jb250ZW50RG9jdW1lbnQuYm9keSwgYWN0aXZlRGVzY2VuZGFudCk7XG4gIH1cbiAgaWYgKGFjdGl2ZURlc2NlbmRhbnQpIHtcbiAgICBjb25zdCBpZCA9IGFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIpO1xuICAgIGlmIChpZCkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGdldERvY3VtZW50KGFjdGl2ZUVsZW1lbnQpLmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gYWN0aXZlRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIHJldHVybiBnZXREb2N1bWVudChub2RlKS5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudChub2RlKSB7XG4gIHJldHVybiBub2RlID8gbm9kZS5vd25lckRvY3VtZW50IHx8IG5vZGUgOiBkb2N1bWVudDtcbn1cbmZ1bmN0aW9uIGlzRnJhbWUoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudC50YWdOYW1lID09PSBcIklGUkFNRVwiO1xufVxudmFyIEV2ZW50S2V5ID0gLyogQF9fUFVSRV9fICovICgoRXZlbnRLZXkyKSA9PiB7XG4gIEV2ZW50S2V5MltcIkVzY2FwZVwiXSA9IFwiRXNjYXBlXCI7XG4gIEV2ZW50S2V5MltcIkVudGVyXCJdID0gXCJFbnRlclwiO1xuICBFdmVudEtleTJbXCJUYWJcIl0gPSBcIlRhYlwiO1xuICBFdmVudEtleTJbXCJTcGFjZVwiXSA9IFwiIFwiO1xuICBFdmVudEtleTJbXCJBcnJvd0Rvd25cIl0gPSBcIkFycm93RG93blwiO1xuICBFdmVudEtleTJbXCJBcnJvd0xlZnRcIl0gPSBcIkFycm93TGVmdFwiO1xuICBFdmVudEtleTJbXCJBcnJvd1JpZ2h0XCJdID0gXCJBcnJvd1JpZ2h0XCI7XG4gIEV2ZW50S2V5MltcIkFycm93VXBcIl0gPSBcIkFycm93VXBcIjtcbiAgRXZlbnRLZXkyW1wiRW5kXCJdID0gXCJFbmRcIjtcbiAgRXZlbnRLZXkyW1wiSG9tZVwiXSA9IFwiSG9tZVwiO1xuICBFdmVudEtleTJbXCJQYWdlRG93blwiXSA9IFwiUGFnZURvd25cIjtcbiAgRXZlbnRLZXkyW1wiUGFnZVVwXCJdID0gXCJQYWdlVXBcIjtcbiAgcmV0dXJuIEV2ZW50S2V5Mjtcbn0pKEV2ZW50S2V5IHx8IHt9KTtcbmZ1bmN0aW9uIHRlc3RQbGF0Zm9ybShyZSkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cubmF2aWdhdG9yICE9IG51bGwgPyAoXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJlLnRlc3Qod2luZG93Lm5hdmlnYXRvcltcInVzZXJBZ2VudERhdGFcIl0/LnBsYXRmb3JtIHx8IHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0pXG4gICkgOiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzTWFjKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eTWFjL2kpO1xufVxuZnVuY3Rpb24gaXNJUGhvbmUoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15pUGhvbmUvaSk7XG59XG5mdW5jdGlvbiBpc0lQYWQoKSB7XG4gIHJldHVybiB0ZXN0UGxhdGZvcm0oL15pUGFkL2kpIHx8IC8vIGlQYWRPUyAxMyBsaWVzIGFuZCBzYXlzIGl0J3MgYSBNYWMsIGJ1dCB3ZSBjYW4gZGlzdGluZ3Vpc2ggYnkgZGV0ZWN0aW5nIHRvdWNoIHN1cHBvcnQuXG4gIGlzTWFjKCkgJiYgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMTtcbn1cbmZ1bmN0aW9uIGlzSU9TKCkge1xuICByZXR1cm4gaXNJUGhvbmUoKSB8fCBpc0lQYWQoKTtcbn1cbmZ1bmN0aW9uIGlzQXBwbGVEZXZpY2UoKSB7XG4gIHJldHVybiBpc01hYygpIHx8IGlzSU9TKCk7XG59XG5mdW5jdGlvbiBjYWxsSGFuZGxlcihldmVudCwgaGFuZGxlcikge1xuICBpZiAoaGFuZGxlcikge1xuICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG4gICAgICBoYW5kbGVyKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlclswXShoYW5kbGVyWzFdLCBldmVudCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBldmVudD8uZGVmYXVsdFByZXZlbnRlZDtcbn1cbmZ1bmN0aW9uIGNvbXBvc2VFdmVudEhhbmRsZXJzKGhhbmRsZXJzKSB7XG4gIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgaGFuZGxlcnMpIHtcbiAgICAgIGNhbGxIYW5kbGVyKGV2ZW50LCBoYW5kbGVyKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBpc0N0cmxLZXkoZTIpIHtcbiAgaWYgKGlzTWFjKCkpIHtcbiAgICByZXR1cm4gZTIubWV0YUtleSAmJiAhZTIuY3RybEtleTtcbiAgfVxuICByZXR1cm4gZTIuY3RybEtleSAmJiAhZTIubWV0YUtleTtcbn1cbmZ1bmN0aW9uIGZvY3VzV2l0aG91dFNjcm9sbGluZyhlbGVtZW50KSB7XG4gIGlmICghZWxlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoc3VwcG9ydHNQcmV2ZW50U2Nyb2xsKCkpIHtcbiAgICBlbGVtZW50LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzY3JvbGxhYmxlRWxlbWVudHMgPSBnZXRTY3JvbGxhYmxlRWxlbWVudHMoZWxlbWVudCk7XG4gICAgZWxlbWVudC5mb2N1cygpO1xuICAgIHJlc3RvcmVTY3JvbGxQb3NpdGlvbihzY3JvbGxhYmxlRWxlbWVudHMpO1xuICB9XG59XG52YXIgc3VwcG9ydHNQcmV2ZW50U2Nyb2xsQ2FjaGVkID0gbnVsbDtcbmZ1bmN0aW9uIHN1cHBvcnRzUHJldmVudFNjcm9sbCgpIHtcbiAgaWYgKHN1cHBvcnRzUHJldmVudFNjcm9sbENhY2hlZCA9PSBudWxsKSB7XG4gICAgc3VwcG9ydHNQcmV2ZW50U2Nyb2xsQ2FjaGVkID0gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZvY3VzRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICBmb2N1c0VsZW0uZm9jdXMoe1xuICAgICAgICBnZXQgcHJldmVudFNjcm9sbCgpIHtcbiAgICAgICAgICBzdXBwb3J0c1ByZXZlbnRTY3JvbGxDYWNoZWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlMikge1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3VwcG9ydHNQcmV2ZW50U2Nyb2xsQ2FjaGVkO1xufVxuZnVuY3Rpb24gZ2V0U2Nyb2xsYWJsZUVsZW1lbnRzKGVsZW1lbnQpIHtcbiAgbGV0IHBhcmVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgY29uc3Qgc2Nyb2xsYWJsZUVsZW1lbnRzID0gW107XG4gIGNvbnN0IHJvb3RTY3JvbGxpbmdFbGVtZW50ID0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIHdoaWxlIChwYXJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBwYXJlbnQgIT09IHJvb3RTY3JvbGxpbmdFbGVtZW50KSB7XG4gICAgaWYgKHBhcmVudC5vZmZzZXRIZWlnaHQgPCBwYXJlbnQuc2Nyb2xsSGVpZ2h0IHx8IHBhcmVudC5vZmZzZXRXaWR0aCA8IHBhcmVudC5zY3JvbGxXaWR0aCkge1xuICAgICAgc2Nyb2xsYWJsZUVsZW1lbnRzLnB1c2goe1xuICAgICAgICBlbGVtZW50OiBwYXJlbnQsXG4gICAgICAgIHNjcm9sbFRvcDogcGFyZW50LnNjcm9sbFRvcCxcbiAgICAgICAgc2Nyb2xsTGVmdDogcGFyZW50LnNjcm9sbExlZnRcbiAgICAgIH0pO1xuICAgIH1cbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTtcbiAgfVxuICBpZiAocm9vdFNjcm9sbGluZ0VsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgIHNjcm9sbGFibGVFbGVtZW50cy5wdXNoKHtcbiAgICAgIGVsZW1lbnQ6IHJvb3RTY3JvbGxpbmdFbGVtZW50LFxuICAgICAgc2Nyb2xsVG9wOiByb290U2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AsXG4gICAgICBzY3JvbGxMZWZ0OiByb290U2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxMZWZ0XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHNjcm9sbGFibGVFbGVtZW50cztcbn1cbmZ1bmN0aW9uIHJlc3RvcmVTY3JvbGxQb3NpdGlvbihzY3JvbGxhYmxlRWxlbWVudHMpIHtcbiAgZm9yIChjb25zdCB7IGVsZW1lbnQsIHNjcm9sbFRvcCwgc2Nyb2xsTGVmdCB9IG9mIHNjcm9sbGFibGVFbGVtZW50cykge1xuICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG4gIH1cbn1cbnZhciBmb2N1c2FibGVFbGVtZW50cyA9IFtcbiAgXCJpbnB1dDpub3QoW3R5cGU9J2hpZGRlbiddKTpub3QoW2Rpc2FibGVkXSlcIixcbiAgXCJzZWxlY3Q6bm90KFtkaXNhYmxlZF0pXCIsXG4gIFwidGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pXCIsXG4gIFwiYnV0dG9uOm5vdChbZGlzYWJsZWRdKVwiLFxuICBcImFbaHJlZl1cIixcbiAgXCJhcmVhW2hyZWZdXCIsXG4gIFwiW3RhYmluZGV4XVwiLFxuICBcImlmcmFtZVwiLFxuICBcIm9iamVjdFwiLFxuICBcImVtYmVkXCIsXG4gIFwiYXVkaW9bY29udHJvbHNdXCIsXG4gIFwidmlkZW9bY29udHJvbHNdXCIsXG4gIFwiW2NvbnRlbnRlZGl0YWJsZV06bm90KFtjb250ZW50ZWRpdGFibGU9J2ZhbHNlJ10pXCJcbl07XG52YXIgdGFiYmFibGVFbGVtZW50cyA9IFsuLi5mb2N1c2FibGVFbGVtZW50cywgJ1t0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKTpub3QoW2Rpc2FibGVkXSknXTtcbnZhciBGT0NVU0FCTEVfRUxFTUVOVF9TRUxFQ1RPUiA9IGZvY3VzYWJsZUVsZW1lbnRzLmpvaW4oXCI6bm90KFtoaWRkZW5dKSxcIikgKyBcIixbdGFiaW5kZXhdOm5vdChbZGlzYWJsZWRdKTpub3QoW2hpZGRlbl0pXCI7XG52YXIgVEFCQkFCTEVfRUxFTUVOVF9TRUxFQ1RPUiA9IHRhYmJhYmxlRWxlbWVudHMuam9pbihcbiAgJzpub3QoW2hpZGRlbl0pOm5vdChbdGFiaW5kZXg9XCItMVwiXSksJ1xuKTtcbmZ1bmN0aW9uIGdldEFsbFRhYmJhYmxlSW4oY29udGFpbmVyLCBpbmNsdWRlQ29udGFpbmVyKSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gQXJyYXkuZnJvbShjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChGT0NVU0FCTEVfRUxFTUVOVF9TRUxFQ1RPUikpO1xuICBjb25zdCB0YWJiYWJsZUVsZW1lbnRzMiA9IGVsZW1lbnRzLmZpbHRlcihpc1RhYmJhYmxlKTtcbiAgaWYgKGluY2x1ZGVDb250YWluZXIgJiYgaXNUYWJiYWJsZShjb250YWluZXIpKSB7XG4gICAgdGFiYmFibGVFbGVtZW50czIudW5zaGlmdChjb250YWluZXIpO1xuICB9XG4gIHRhYmJhYmxlRWxlbWVudHMyLmZvckVhY2goKGVsZW1lbnQsIGkyKSA9PiB7XG4gICAgaWYgKGlzRnJhbWUoZWxlbWVudCkgJiYgZWxlbWVudC5jb250ZW50RG9jdW1lbnQpIHtcbiAgICAgIGNvbnN0IGZyYW1lQm9keSA9IGVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHk7XG4gICAgICBjb25zdCBhbGxGcmFtZVRhYmJhYmxlID0gZ2V0QWxsVGFiYmFibGVJbihmcmFtZUJvZHksIGZhbHNlKTtcbiAgICAgIHRhYmJhYmxlRWxlbWVudHMyLnNwbGljZShpMiwgMSwgLi4uYWxsRnJhbWVUYWJiYWJsZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHRhYmJhYmxlRWxlbWVudHMyO1xufVxuZnVuY3Rpb24gaXNUYWJiYWJsZShlbGVtZW50KSB7XG4gIHJldHVybiBpc0ZvY3VzYWJsZShlbGVtZW50KSAmJiAhaGFzTmVnYXRpdmVUYWJJbmRleChlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNhYmxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhGT0NVU0FCTEVfRUxFTUVOVF9TRUxFQ1RPUikgJiYgaXNFbGVtZW50VmlzaWJsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGhhc05lZ2F0aXZlVGFiSW5kZXgoZWxlbWVudCkge1xuICBjb25zdCB0YWJJbmRleCA9IHBhcnNlSW50KGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIikgfHwgXCIwXCIsIDEwKTtcbiAgcmV0dXJuIHRhYkluZGV4IDwgMDtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudFZpc2libGUoZWxlbWVudCwgY2hpbGRFbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50Lm5vZGVOYW1lICE9PSBcIiNjb21tZW50XCIgJiYgaXNTdHlsZVZpc2libGUoZWxlbWVudCkgJiYgaXNBdHRyaWJ1dGVWaXNpYmxlKGVsZW1lbnQsIGNoaWxkRWxlbWVudCkgJiYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQgfHwgaXNFbGVtZW50VmlzaWJsZShlbGVtZW50LnBhcmVudEVsZW1lbnQsIGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzU3R5bGVWaXNpYmxlKGVsZW1lbnQpIHtcbiAgaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSAmJiAhKGVsZW1lbnQgaW5zdGFuY2VvZiBTVkdFbGVtZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCB7IGRpc3BsYXksIHZpc2liaWxpdHkgfSA9IGVsZW1lbnQuc3R5bGU7XG4gIGxldCBpc1Zpc2libGUgPSBkaXNwbGF5ICE9PSBcIm5vbmVcIiAmJiB2aXNpYmlsaXR5ICE9PSBcImhpZGRlblwiICYmIHZpc2liaWxpdHkgIT09IFwiY29sbGFwc2VcIjtcbiAgaWYgKGlzVmlzaWJsZSkge1xuICAgIGlmICghZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB7XG4gICAgICByZXR1cm4gaXNWaXNpYmxlO1xuICAgIH1cbiAgICBjb25zdCB7IGdldENvbXB1dGVkU3R5bGU6IGdldENvbXB1dGVkU3R5bGUzIH0gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gICAgY29uc3QgeyBkaXNwbGF5OiBjb21wdXRlZERpc3BsYXksIHZpc2liaWxpdHk6IGNvbXB1dGVkVmlzaWJpbGl0eSB9ID0gZ2V0Q29tcHV0ZWRTdHlsZTMoZWxlbWVudCk7XG4gICAgaXNWaXNpYmxlID0gY29tcHV0ZWREaXNwbGF5ICE9PSBcIm5vbmVcIiAmJiBjb21wdXRlZFZpc2liaWxpdHkgIT09IFwiaGlkZGVuXCIgJiYgY29tcHV0ZWRWaXNpYmlsaXR5ICE9PSBcImNvbGxhcHNlXCI7XG4gIH1cbiAgcmV0dXJuIGlzVmlzaWJsZTtcbn1cbmZ1bmN0aW9uIGlzQXR0cmlidXRlVmlzaWJsZShlbGVtZW50LCBjaGlsZEVsZW1lbnQpIHtcbiAgcmV0dXJuICFlbGVtZW50Lmhhc0F0dHJpYnV0ZShcImhpZGRlblwiKSAmJiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gXCJERVRBSUxTXCIgJiYgY2hpbGRFbGVtZW50ICYmIGNoaWxkRWxlbWVudC5ub2RlTmFtZSAhPT0gXCJTVU1NQVJZXCIgPyBlbGVtZW50Lmhhc0F0dHJpYnV0ZShcIm9wZW5cIikgOiB0cnVlKTtcbn1cbmZ1bmN0aW9uIGdldEZvY3VzYWJsZVRyZWVXYWxrZXIocm9vdCwgb3B0cywgc2NvcGUpIHtcbiAgY29uc3Qgc2VsZWN0b3IgPSBvcHRzPy50YWJiYWJsZSA/IFRBQkJBQkxFX0VMRU1FTlRfU0VMRUNUT1IgOiBGT0NVU0FCTEVfRUxFTUVOVF9TRUxFQ1RPUjtcbiAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihyb290LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwge1xuICAgIGFjY2VwdE5vZGUobm9kZSkge1xuICAgICAgaWYgKG9wdHM/LmZyb20/LmNvbnRhaW5zKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5tYXRjaGVzKHNlbGVjdG9yKSAmJiBpc0VsZW1lbnRWaXNpYmxlKG5vZGUpICYmICh0cnVlKSAmJiAoIW9wdHM/LmFjY2VwdCB8fCBvcHRzLmFjY2VwdChub2RlKSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQO1xuICAgIH1cbiAgfSk7XG4gIGlmIChvcHRzPy5mcm9tKSB7XG4gICAgd2Fsa2VyLmN1cnJlbnROb2RlID0gb3B0cy5mcm9tO1xuICB9XG4gIHJldHVybiB3YWxrZXI7XG59XG5mdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICB3aGlsZSAobm9kZSAmJiAhaXNTY3JvbGxhYmxlKG5vZGUpKSB7XG4gICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgfVxuICByZXR1cm4gbm9kZSB8fCBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2Nyb2xsYWJsZShub2RlKSB7XG4gIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gIHJldHVybiAvKGF1dG98c2Nyb2xsKS8udGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WCArIHN0eWxlLm92ZXJmbG93WSk7XG59XG5mdW5jdGlvbiBub29wMygpIHtcbiAgcmV0dXJuO1xufVxuZnVuY3Rpb24gaXNQb2ludEluUG9seWdvbihwb2ludCwgcG9seWdvbikge1xuICBjb25zdCBbeCwgeV0gPSBwb2ludDtcbiAgbGV0IGluc2lkZSA9IGZhbHNlO1xuICBjb25zdCBsZW5ndGggPSBwb2x5Z29uLmxlbmd0aDtcbiAgZm9yIChsZXQgbDIgPSBsZW5ndGgsIGkyID0gMCwgaiA9IGwyIC0gMTsgaTIgPCBsMjsgaiA9IGkyKyspIHtcbiAgICBjb25zdCBbeGksIHlpXSA9IHBvbHlnb25baTJdO1xuICAgIGNvbnN0IFt4aiwgeWpdID0gcG9seWdvbltqXTtcbiAgICBjb25zdCBbLCB2eV0gPSBwb2x5Z29uW2ogPT09IDAgPyBsMiAtIDEgOiBqIC0gMV0gfHwgWzAsIDBdO1xuICAgIGNvbnN0IHdoZXJlID0gKHlpIC0geWopICogKHggLSB4aSkgLSAoeGkgLSB4aikgKiAoeSAtIHlpKTtcbiAgICBpZiAoeWogPCB5aSkge1xuICAgICAgaWYgKHkgPj0geWogJiYgeSA8IHlpKSB7XG4gICAgICAgIGlmICh3aGVyZSA9PT0gMClcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHdoZXJlID4gMCkge1xuICAgICAgICAgIGlmICh5ID09PSB5aikge1xuICAgICAgICAgICAgaWYgKHkgPiB2eSkge1xuICAgICAgICAgICAgICBpbnNpZGUgPSAhaW5zaWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnNpZGUgPSAhaW5zaWRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoeWkgPCB5aikge1xuICAgICAgaWYgKHkgPiB5aSAmJiB5IDw9IHlqKSB7XG4gICAgICAgIGlmICh3aGVyZSA9PT0gMClcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHdoZXJlIDwgMCkge1xuICAgICAgICAgIGlmICh5ID09PSB5aikge1xuICAgICAgICAgICAgaWYgKHkgPCB2eSkge1xuICAgICAgICAgICAgICBpbnNpZGUgPSAhaW5zaWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnNpZGUgPSAhaW5zaWRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoeSA9PSB5aSAmJiAoeCA+PSB4aiAmJiB4IDw9IHhpIHx8IHggPj0geGkgJiYgeCA8PSB4aikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5zaWRlO1xufVxuZnVuY3Rpb24gbWVyZ2VEZWZhdWx0UHJvcHMoZGVmYXVsdFByb3BzLCBwcm9wcykge1xuICByZXR1cm4gbWVyZ2VQcm9wcyhkZWZhdWx0UHJvcHMsIHByb3BzKTtcbn1cbnZhciB0cmFuc2l0aW9uc0J5RWxlbWVudCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG52YXIgdHJhbnNpdGlvbkNhbGxiYWNrcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG5mdW5jdGlvbiBzZXR1cEdsb2JhbEV2ZW50cygpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgb25UcmFuc2l0aW9uU3RhcnQgPSAoZTIpID0+IHtcbiAgICBpZiAoIWUyLnRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgdHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9uc0J5RWxlbWVudC5nZXQoZTIudGFyZ2V0KTtcbiAgICBpZiAoIXRyYW5zaXRpb25zKSB7XG4gICAgICB0cmFuc2l0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gICAgICB0cmFuc2l0aW9uc0J5RWxlbWVudC5zZXQoZTIudGFyZ2V0LCB0cmFuc2l0aW9ucyk7XG4gICAgICBlMi50YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25jYW5jZWxcIiwgb25UcmFuc2l0aW9uRW5kKTtcbiAgICB9XG4gICAgdHJhbnNpdGlvbnMuYWRkKGUyLnByb3BlcnR5TmFtZSk7XG4gIH07XG4gIGNvbnN0IG9uVHJhbnNpdGlvbkVuZCA9IChlMikgPT4ge1xuICAgIGlmICghZTIudGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0cmFuc2l0aW9uc0J5RWxlbWVudC5nZXQoZTIudGFyZ2V0KTtcbiAgICBpZiAoIXByb3BlcnRpZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcHJvcGVydGllcy5kZWxldGUoZTIucHJvcGVydHlOYW1lKTtcbiAgICBpZiAocHJvcGVydGllcy5zaXplID09PSAwKSB7XG4gICAgICBlMi50YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25jYW5jZWxcIiwgb25UcmFuc2l0aW9uRW5kKTtcbiAgICAgIHRyYW5zaXRpb25zQnlFbGVtZW50LmRlbGV0ZShlMi50YXJnZXQpO1xuICAgIH1cbiAgICBpZiAodHJhbnNpdGlvbnNCeUVsZW1lbnQuc2l6ZSA9PT0gMCkge1xuICAgICAgZm9yIChjb25zdCBjYiBvZiB0cmFuc2l0aW9uQ2FsbGJhY2tzKSB7XG4gICAgICAgIGNiKCk7XG4gICAgICB9XG4gICAgICB0cmFuc2l0aW9uQ2FsbGJhY2tzLmNsZWFyKCk7XG4gICAgfVxuICB9O1xuICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9ucnVuXCIsIG9uVHJhbnNpdGlvblN0YXJ0KTtcbiAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCBvblRyYW5zaXRpb25FbmQpO1xufVxuaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gXCJsb2FkaW5nXCIpIHtcbiAgICBzZXR1cEdsb2JhbEV2ZW50cygpO1xuICB9IGVsc2Uge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsIHNldHVwR2xvYmFsRXZlbnRzKTtcbiAgfVxufVxuZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXcoc2Nyb2xsVmlldywgZWxlbWVudCkge1xuICBjb25zdCBvZmZzZXRYID0gcmVsYXRpdmVPZmZzZXQoc2Nyb2xsVmlldywgZWxlbWVudCwgXCJsZWZ0XCIpO1xuICBjb25zdCBvZmZzZXRZID0gcmVsYXRpdmVPZmZzZXQoc2Nyb2xsVmlldywgZWxlbWVudCwgXCJ0b3BcIik7XG4gIGNvbnN0IHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gIGxldCB4ID0gc2Nyb2xsVmlldy5zY3JvbGxMZWZ0O1xuICBsZXQgeSA9IHNjcm9sbFZpZXcuc2Nyb2xsVG9wO1xuICBjb25zdCBtYXhYID0geCArIHNjcm9sbFZpZXcub2Zmc2V0V2lkdGg7XG4gIGNvbnN0IG1heFkgPSB5ICsgc2Nyb2xsVmlldy5vZmZzZXRIZWlnaHQ7XG4gIGlmIChvZmZzZXRYIDw9IHgpIHtcbiAgICB4ID0gb2Zmc2V0WDtcbiAgfSBlbHNlIGlmIChvZmZzZXRYICsgd2lkdGggPiBtYXhYKSB7XG4gICAgeCArPSBvZmZzZXRYICsgd2lkdGggLSBtYXhYO1xuICB9XG4gIGlmIChvZmZzZXRZIDw9IHkpIHtcbiAgICB5ID0gb2Zmc2V0WTtcbiAgfSBlbHNlIGlmIChvZmZzZXRZICsgaGVpZ2h0ID4gbWF4WSkge1xuICAgIHkgKz0gb2Zmc2V0WSArIGhlaWdodCAtIG1heFk7XG4gIH1cbiAgc2Nyb2xsVmlldy5zY3JvbGxMZWZ0ID0geDtcbiAgc2Nyb2xsVmlldy5zY3JvbGxUb3AgPSB5O1xufVxuZnVuY3Rpb24gcmVsYXRpdmVPZmZzZXQoYW5jZXN0b3IsIGNoaWxkLCBheGlzKSB7XG4gIGNvbnN0IHByb3AgPSBheGlzID09PSBcImxlZnRcIiA/IFwib2Zmc2V0TGVmdFwiIDogXCJvZmZzZXRUb3BcIjtcbiAgbGV0IHN1bSA9IDA7XG4gIHdoaWxlIChjaGlsZC5vZmZzZXRQYXJlbnQpIHtcbiAgICBzdW0gKz0gY2hpbGRbcHJvcF07XG4gICAgaWYgKGNoaWxkLm9mZnNldFBhcmVudCA9PT0gYW5jZXN0b3IpIHtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSBpZiAoY2hpbGQub2Zmc2V0UGFyZW50LmNvbnRhaW5zKGFuY2VzdG9yKSkge1xuICAgICAgc3VtIC09IGFuY2VzdG9yW3Byb3BdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNoaWxkID0gY2hpbGQub2Zmc2V0UGFyZW50O1xuICB9XG4gIHJldHVybiBzdW07XG59XG5mdW5jdGlvbiBzY3JvbGxJbnRvVmlld3BvcnQodGFyZ2V0RWxlbWVudCwgb3B0cykge1xuICBpZiAoZG9jdW1lbnQuY29udGFpbnModGFyZ2V0RWxlbWVudCkpIHtcbiAgICBjb25zdCByb290ID0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgY29uc3QgaXNTY3JvbGxQcmV2ZW50ZWQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5vdmVyZmxvdyA9PT0gXCJoaWRkZW5cIjtcbiAgICBpZiAoIWlzU2Nyb2xsUHJldmVudGVkKSB7XG4gICAgICBjb25zdCB7IGxlZnQ6IG9yaWdpbmFsTGVmdCwgdG9wOiBvcmlnaW5hbFRvcCB9ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHRhcmdldEVsZW1lbnQ/LnNjcm9sbEludG9WaWV3Py4oeyBibG9jazogXCJuZWFyZXN0XCIgfSk7XG4gICAgICBjb25zdCB7IGxlZnQ6IG5ld0xlZnQsIHRvcDogbmV3VG9wIH0gPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgaWYgKE1hdGguYWJzKG9yaWdpbmFsTGVmdCAtIG5ld0xlZnQpID4gMSB8fCBNYXRoLmFicyhvcmlnaW5hbFRvcCAtIG5ld1RvcCkgPiAxKSB7XG4gICAgICAgIHRhcmdldEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXc/Lih7IGJsb2NrOiBcIm5lYXJlc3RcIiB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudCh0YXJnZXRFbGVtZW50KTtcbiAgICAgIHdoaWxlICh0YXJnZXRFbGVtZW50ICYmIHNjcm9sbFBhcmVudCAmJiB0YXJnZXRFbGVtZW50ICE9PSByb290ICYmIHNjcm9sbFBhcmVudCAhPT0gcm9vdCkge1xuICAgICAgICBzY3JvbGxJbnRvVmlldyhzY3JvbGxQYXJlbnQsIHRhcmdldEVsZW1lbnQpO1xuICAgICAgICB0YXJnZXRFbGVtZW50ID0gc2Nyb2xsUGFyZW50O1xuICAgICAgICBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQodGFyZ2V0RWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG52YXIgdmlzdWFsbHlIaWRkZW5TdHlsZXMgPSB7XG4gIGJvcmRlcjogXCIwXCIsXG4gIGNsaXA6IFwicmVjdCgwIDAgMCAwKVwiLFxuICBcImNsaXAtcGF0aFwiOiBcImluc2V0KDUwJSlcIixcbiAgaGVpZ2h0OiBcIjFweFwiLFxuICBtYXJnaW46IFwiMCAtMXB4IC0xcHggMFwiLFxuICBvdmVyZmxvdzogXCJoaWRkZW5cIixcbiAgcGFkZGluZzogXCIwXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHdpZHRoOiBcIjFweFwiLFxuICBcIndoaXRlLXNwYWNlXCI6IFwibm93cmFwXCJcbn07XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL0U0UjJFTU00LmpzXG5mdW5jdGlvbiBjcmVhdGVSZWdpc3RlcklkKHNldHRlcikge1xuICByZXR1cm4gKGlkKSA9PiB7XG4gICAgc2V0dGVyKGlkKTtcbiAgICByZXR1cm4gKCkgPT4gc2V0dGVyKHZvaWQgMCk7XG4gIH07XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL0VUNVQ0NURPLmpzXG5mdW5jdGlvbiBjcmVhdGVUYWdOYW1lKHJlZiwgZmFsbGJhY2spIHtcbiAgY29uc3QgW3RhZ05hbWUsIHNldFRhZ05hbWVdID0gY3JlYXRlU2lnbmFsKHN0cmluZ09yVW5kZWZpbmVkKGZhbGxiYWNrPy4oKSkpO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIHNldFRhZ05hbWUocmVmKCk/LnRhZ05hbWUudG9Mb3dlckNhc2UoKSB8fCBzdHJpbmdPclVuZGVmaW5lZChmYWxsYmFjaz8uKCkpKTtcbiAgfSk7XG4gIHJldHVybiB0YWdOYW1lO1xufVxuZnVuY3Rpb24gc3RyaW5nT3JVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogdm9pZCAwO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay82WTdCMk5FTy5qc1xuZnVuY3Rpb24gUG9seW1vcnBoaWMocHJvcHMpIHtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhwcm9wcywgW1wiYXNcIl0pO1xuICBpZiAoIWxvY2FsLmFzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW2tvYmFsdGVdOiBQb2x5bW9ycGhpYyBpcyBtaXNzaW5nIHRoZSByZXF1aXJlZCBgYXNgIHByb3AuXCIpO1xuICB9XG4gIHJldHVybiAoXG4gICAgLy8gQHRzLWlnbm9yZTogUHJvcHMgYXJlIHZhbGlkIGJ1dCBub3Qgd29ydGggY2FsY3VsYXRpbmdcbiAgICBjcmVhdGVDb21wb25lbnQoRHluYW1pYywgbWVyZ2VQcm9wcyhvdGhlcnMsIHtcbiAgICAgIGdldCBjb21wb25lbnQoKSB7XG4gICAgICAgIHJldHVybiBsb2NhbC5hcztcbiAgICAgIH1cbiAgICB9KSlcbiAgKTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvUTJESkxaUUUuanNcbnZhciBGT1JNX0NPTlRST0xfUFJPUF9OQU1FUyA9IFtcImlkXCIsIFwibmFtZVwiLCBcInZhbGlkYXRpb25TdGF0ZVwiLCBcInJlcXVpcmVkXCIsIFwiZGlzYWJsZWRcIiwgXCJyZWFkT25seVwiXTtcbmZ1bmN0aW9uIGNyZWF0ZUZvcm1Db250cm9sKHByb3BzKSB7XG4gIGNvbnN0IGRlZmF1bHRJZCA9IGBmb3JtLWNvbnRyb2wtJHtjcmVhdGVVbmlxdWVJZCgpfWA7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBkZWZhdWx0SWRcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbGFiZWxJZCwgc2V0TGFiZWxJZF0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgW2ZpZWxkSWQsIHNldEZpZWxkSWRdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IFtkZXNjcmlwdGlvbklkLCBzZXREZXNjcmlwdGlvbklkXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbZXJyb3JNZXNzYWdlSWQsIHNldEVycm9yTWVzc2FnZUlkXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBnZXRBcmlhTGFiZWxsZWRCeSA9IChmaWVsZElkMiwgZmllbGRBcmlhTGFiZWwsIGZpZWxkQXJpYUxhYmVsbGVkQnkpID0+IHtcbiAgICBjb25zdCBoYXNBcmlhTGFiZWxsZWRCeSA9IGZpZWxkQXJpYUxhYmVsbGVkQnkgIT0gbnVsbCB8fCBsYWJlbElkKCkgIT0gbnVsbDtcbiAgICByZXR1cm4gW1xuICAgICAgZmllbGRBcmlhTGFiZWxsZWRCeSxcbiAgICAgIGxhYmVsSWQoKSxcbiAgICAgIC8vIElmIHRoZXJlIGlzIGJvdGggYW4gYXJpYS1sYWJlbCBhbmQgYXJpYS1sYWJlbGxlZGJ5LCBhZGQgdGhlIGZpZWxkIGl0c2VsZiBoYXMgYW4gYXJpYS1sYWJlbGxlZGJ5XG4gICAgICBoYXNBcmlhTGFiZWxsZWRCeSAmJiBmaWVsZEFyaWFMYWJlbCAhPSBudWxsID8gZmllbGRJZDIgOiB2b2lkIDBcbiAgICBdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKSB8fCB2b2lkIDA7XG4gIH07XG4gIGNvbnN0IGdldEFyaWFEZXNjcmliZWRCeSA9IChmaWVsZEFyaWFEZXNjcmliZWRCeSkgPT4ge1xuICAgIHJldHVybiBbXG4gICAgICBkZXNjcmlwdGlvbklkKCksXG4gICAgICAvLyBVc2UgYXJpYS1kZXNjcmliZWRieSBmb3IgZXJyb3IgbWVzc2FnZSBiZWNhdXNlIGFyaWEtZXJyb3JtZXNzYWdlIGlzIHVuc3VwcG9ydGVkIHVzaW5nIFZvaWNlT3ZlciBvciBOVkRBLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9pc3N1ZXMvMTM0NiNpc3N1ZWNvbW1lbnQtNzQwMTM2MjY4XG4gICAgICBlcnJvck1lc3NhZ2VJZCgpLFxuICAgICAgZmllbGRBcmlhRGVzY3JpYmVkQnlcbiAgICBdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKSB8fCB2b2lkIDA7XG4gIH07XG4gIGNvbnN0IGRhdGFzZXQgPSBjcmVhdGVNZW1vKCgpID0+ICh7XG4gICAgXCJkYXRhLXZhbGlkXCI6IGFjY2VzcyhtZXJnZWRQcm9wcy52YWxpZGF0aW9uU3RhdGUpID09PSBcInZhbGlkXCIgPyBcIlwiIDogdm9pZCAwLFxuICAgIFwiZGF0YS1pbnZhbGlkXCI6IGFjY2VzcyhtZXJnZWRQcm9wcy52YWxpZGF0aW9uU3RhdGUpID09PSBcImludmFsaWRcIiA/IFwiXCIgOiB2b2lkIDAsXG4gICAgXCJkYXRhLXJlcXVpcmVkXCI6IGFjY2VzcyhtZXJnZWRQcm9wcy5yZXF1aXJlZCkgPyBcIlwiIDogdm9pZCAwLFxuICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBhY2Nlc3MobWVyZ2VkUHJvcHMuZGlzYWJsZWQpID8gXCJcIiA6IHZvaWQgMCxcbiAgICBcImRhdGEtcmVhZG9ubHlcIjogYWNjZXNzKG1lcmdlZFByb3BzLnJlYWRPbmx5KSA/IFwiXCIgOiB2b2lkIDBcbiAgfSkpO1xuICBjb25zdCBmb3JtQ29udHJvbENvbnRleHQgPSB7XG4gICAgbmFtZTogKCkgPT4gYWNjZXNzKG1lcmdlZFByb3BzLm5hbWUpID8/IGFjY2VzcyhtZXJnZWRQcm9wcy5pZCksXG4gICAgZGF0YXNldCxcbiAgICB2YWxpZGF0aW9uU3RhdGU6ICgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy52YWxpZGF0aW9uU3RhdGUpLFxuICAgIGlzUmVxdWlyZWQ6ICgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy5yZXF1aXJlZCksXG4gICAgaXNEaXNhYmxlZDogKCkgPT4gYWNjZXNzKG1lcmdlZFByb3BzLmRpc2FibGVkKSxcbiAgICBpc1JlYWRPbmx5OiAoKSA9PiBhY2Nlc3MobWVyZ2VkUHJvcHMucmVhZE9ubHkpLFxuICAgIGxhYmVsSWQsXG4gICAgZmllbGRJZCxcbiAgICBkZXNjcmlwdGlvbklkLFxuICAgIGVycm9yTWVzc2FnZUlkLFxuICAgIGdldEFyaWFMYWJlbGxlZEJ5LFxuICAgIGdldEFyaWFEZXNjcmliZWRCeSxcbiAgICBnZW5lcmF0ZUlkOiBjcmVhdGVHZW5lcmF0ZUlkKCgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy5pZCkpLFxuICAgIHJlZ2lzdGVyTGFiZWw6IGNyZWF0ZVJlZ2lzdGVySWQoc2V0TGFiZWxJZCksXG4gICAgcmVnaXN0ZXJGaWVsZDogY3JlYXRlUmVnaXN0ZXJJZChzZXRGaWVsZElkKSxcbiAgICByZWdpc3RlckRlc2NyaXB0aW9uOiBjcmVhdGVSZWdpc3RlcklkKHNldERlc2NyaXB0aW9uSWQpLFxuICAgIHJlZ2lzdGVyRXJyb3JNZXNzYWdlOiBjcmVhdGVSZWdpc3RlcklkKHNldEVycm9yTWVzc2FnZUlkKVxuICB9O1xuICByZXR1cm4ge1xuICAgIGZvcm1Db250cm9sQ29udGV4dFxuICB9O1xufVxudmFyIEZvcm1Db250cm9sQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZUZvcm1Db250cm9sQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRm9ybUNvbnRyb2xDb250ZXh0KTtcbiAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltrb2JhbHRlXTogYHVzZUZvcm1Db250cm9sQ29udGV4dGAgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBGb3JtQ29udHJvbENvbnRleHQuUHJvdmlkZXJgIGNvbXBvbmVudFwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIEZvcm1Db250cm9sRGVzY3JpcHRpb24ocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUZvcm1Db250cm9sQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogY29udGV4dC5nZW5lcmF0ZUlkKFwiZGVzY3JpcHRpb25cIilcbiAgfSwgcHJvcHMpO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4gb25DbGVhbnVwKGNvbnRleHQucmVnaXN0ZXJEZXNjcmlwdGlvbihtZXJnZWRQcm9wcy5pZCkpKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiZGl2XCJcbiAgfSwgKCkgPT4gY29udGV4dC5kYXRhc2V0KCksIG1lcmdlZFByb3BzKSk7XG59XG5mdW5jdGlvbiBGb3JtQ29udHJvbEVycm9yTWVzc2FnZShwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlRm9ybUNvbnRyb2xDb250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBjb250ZXh0LmdlbmVyYXRlSWQoXCJlcnJvci1tZXNzYWdlXCIpXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wiZm9yY2VNb3VudFwiXSk7XG4gIGNvbnN0IGlzSW52YWxpZCA9ICgpID0+IGNvbnRleHQudmFsaWRhdGlvblN0YXRlKCkgPT09IFwiaW52YWxpZFwiO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNJbnZhbGlkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb25DbGVhbnVwKGNvbnRleHQucmVnaXN0ZXJFcnJvck1lc3NhZ2Uob3RoZXJzLmlkKSk7XG4gIH0pO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICBnZXQgd2hlbigpIHtcbiAgICAgIHJldHVybiBsb2NhbC5mb3JjZU1vdW50IHx8IGlzSW52YWxpZCgpO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGFzOiBcImRpdlwiXG4gICAgICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgb3RoZXJzKSk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIEZvcm1Db250cm9sTGFiZWwocHJvcHMpIHtcbiAgbGV0IHJlZjtcbiAgY29uc3QgY29udGV4dCA9IHVzZUZvcm1Db250cm9sQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogY29udGV4dC5nZW5lcmF0ZUlkKFwibGFiZWxcIilcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJyZWZcIl0pO1xuICBjb25zdCB0YWdOYW1lID0gY3JlYXRlVGFnTmFtZSgoKSA9PiByZWYsICgpID0+IFwibGFiZWxcIik7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiBvbkNsZWFudXAoY29udGV4dC5yZWdpc3RlckxhYmVsKG90aGVycy5pZCkpKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwibGFiZWxcIixcbiAgICByZWYociQpIHtcbiAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKChlbCkgPT4gcmVmID0gZWwsIGxvY2FsLnJlZik7XG4gICAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiAmJiBfcmVmJChyJCk7XG4gICAgfSxcbiAgICBnZXQgW1wiZm9yXCJdKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gdGFnTmFtZSgpID09PSBcImxhYmVsXCIpKCkgPyBjb250ZXh0LmZpZWxkSWQoKSA6IHZvaWQgMDtcbiAgICB9XG4gIH0sICgpID0+IGNvbnRleHQuZGF0YXNldCgpLCBvdGhlcnMpKTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvQU5OM0EyUU0uanNcbmZ1bmN0aW9uIGNyZWF0ZUZvcm1SZXNldExpc3RlbmVyKGVsZW1lbnQsIGhhbmRsZXIpIHtcbiAgY3JlYXRlRWZmZWN0KFxuICAgIG9uKGVsZW1lbnQsIChlbGVtZW50MikgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQyID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZm9ybSA9IGdldENsb3Nlc3RGb3JtKGVsZW1lbnQyKTtcbiAgICAgIGlmIChmb3JtID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9ybS5hZGRFdmVudExpc3RlbmVyKFwicmVzZXRcIiwgaGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgICAgZm9ybS5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzZXRcIiwgaGFuZGxlcik7XG4gICAgICB9KTtcbiAgICB9KVxuICApO1xufVxuZnVuY3Rpb24gZ2V0Q2xvc2VzdEZvcm0oZWxlbWVudCkge1xuICByZXR1cm4gaXNGb3JtRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuZm9ybSA6IGVsZW1lbnQuY2xvc2VzdChcImZvcm1cIik7XG59XG5mdW5jdGlvbiBpc0Zvcm1FbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhcInRleHRhcmVhLCBpbnB1dCwgc2VsZWN0LCBidXR0b25cIik7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL0JMTjYzRkRDLmpzXG5mdW5jdGlvbiBjcmVhdGVDb250cm9sbGFibGVTaWduYWwocHJvcHMpIHtcbiAgY29uc3QgW192YWx1ZSwgX3NldFZhbHVlXSA9IGNyZWF0ZVNpZ25hbChwcm9wcy5kZWZhdWx0VmFsdWU/LigpKTtcbiAgY29uc3QgaXNDb250cm9sbGVkID0gY3JlYXRlTWVtbygoKSA9PiBwcm9wcy52YWx1ZT8uKCkgIT09IHZvaWQgMCk7XG4gIGNvbnN0IHZhbHVlID0gY3JlYXRlTWVtbygoKSA9PiBpc0NvbnRyb2xsZWQoKSA/IHByb3BzLnZhbHVlPy4oKSA6IF92YWx1ZSgpKTtcbiAgY29uc3Qgc2V0VmFsdWUgPSAobmV4dCkgPT4ge1xuICAgIHVudHJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgbmV4dFZhbHVlID0gYWNjZXNzV2l0aChuZXh0LCB2YWx1ZSgpKTtcbiAgICAgIGlmICghT2JqZWN0LmlzKG5leHRWYWx1ZSwgdmFsdWUoKSkpIHtcbiAgICAgICAgaWYgKCFpc0NvbnRyb2xsZWQoKSkge1xuICAgICAgICAgIF9zZXRWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHByb3BzLm9uQ2hhbmdlPy4obmV4dFZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0VmFsdWU7XG4gICAgfSk7XG4gIH07XG4gIHJldHVybiBbdmFsdWUsIHNldFZhbHVlXTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbnRyb2xsYWJsZUJvb2xlYW5TaWduYWwocHJvcHMpIHtcbiAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gY3JlYXRlQ29udHJvbGxhYmxlU2lnbmFsKHByb3BzKTtcbiAgY29uc3QgdmFsdWUgPSAoKSA9PiBfdmFsdWUoKSA/PyBmYWxzZTtcbiAgcmV0dXJuIFt2YWx1ZSwgc2V0VmFsdWVdO1xufVxuZnVuY3Rpb24gY3JlYXRlQ29udHJvbGxhYmxlQXJyYXlTaWduYWwocHJvcHMpIHtcbiAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gY3JlYXRlQ29udHJvbGxhYmxlU2lnbmFsKHByb3BzKTtcbiAgY29uc3QgdmFsdWUgPSAoKSA9PiBfdmFsdWUoKSA/PyBbXTtcbiAgcmV0dXJuIFt2YWx1ZSwgc2V0VmFsdWVdO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9ZR0RRWFEyQi5qc1xuZnVuY3Rpb24gY3JlYXRlVG9nZ2xlU3RhdGUocHJvcHMgPSB7fSkge1xuICBjb25zdCBbaXNTZWxlY3RlZCwgX3NldElzU2VsZWN0ZWRdID0gY3JlYXRlQ29udHJvbGxhYmxlQm9vbGVhblNpZ25hbCh7XG4gICAgdmFsdWU6ICgpID0+IGFjY2Vzcyhwcm9wcy5pc1NlbGVjdGVkKSxcbiAgICBkZWZhdWx0VmFsdWU6ICgpID0+ICEhYWNjZXNzKHByb3BzLmRlZmF1bHRJc1NlbGVjdGVkKSxcbiAgICBvbkNoYW5nZTogKHZhbHVlKSA9PiBwcm9wcy5vblNlbGVjdGVkQ2hhbmdlPy4odmFsdWUpXG4gIH0pO1xuICBjb25zdCBzZXRJc1NlbGVjdGVkID0gKHZhbHVlKSA9PiB7XG4gICAgaWYgKCFhY2Nlc3MocHJvcHMuaXNSZWFkT25seSkgJiYgIWFjY2Vzcyhwcm9wcy5pc0Rpc2FibGVkKSkge1xuICAgICAgX3NldElzU2VsZWN0ZWQodmFsdWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIGlmICghYWNjZXNzKHByb3BzLmlzUmVhZE9ubHkpICYmICFhY2Nlc3MocHJvcHMuaXNEaXNhYmxlZCkpIHtcbiAgICAgIF9zZXRJc1NlbGVjdGVkKCFpc1NlbGVjdGVkKCkpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBpc1NlbGVjdGVkLFxuICAgIHNldElzU2VsZWN0ZWQsXG4gICAgdG9nZ2xlXG4gIH07XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rLzVaS0FFNFZaLmpzXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7XG4gIGZvciAodmFyIG5hbWUgaW4gYWxsKVxuICAgIF9fZGVmUHJvcCh0YXJnZXQsIG5hbWUsIHsgZ2V0OiBhbGxbbmFtZV0sIGVudW1lcmFibGU6IHRydWUgfSk7XG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay83Q1ZOTVRZRi5qc1xudmFyIERvbUNvbGxlY3Rpb25Db250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xuZnVuY3Rpb24gdXNlT3B0aW9uYWxEb21Db2xsZWN0aW9uQ29udGV4dCgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoRG9tQ29sbGVjdGlvbkNvbnRleHQpO1xufVxuZnVuY3Rpb24gdXNlRG9tQ29sbGVjdGlvbkNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VPcHRpb25hbERvbUNvbGxlY3Rpb25Db250ZXh0KCk7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIltrb2JhbHRlXTogYHVzZURvbUNvbGxlY3Rpb25Db250ZXh0YCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYERvbUNvbGxlY3Rpb25Qcm92aWRlcmAgY29tcG9uZW50XCJcbiAgICApO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gaXNFbGVtZW50UHJlY2VkaW5nKGEyLCBiMikge1xuICByZXR1cm4gQm9vbGVhbihcbiAgICBiMi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhMikgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElOR1xuICApO1xufVxuZnVuY3Rpb24gZmluZERPTUluZGV4KGl0ZW1zLCBpdGVtKSB7XG4gIGNvbnN0IGl0ZW1FbCA9IGl0ZW0ucmVmKCk7XG4gIGlmICghaXRlbUVsKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGxldCBsZW5ndGggPSBpdGVtcy5sZW5ndGg7XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGNvbnN0IGN1cnJlbnRJdGVtRWwgPSBpdGVtc1tsZW5ndGhdPy5yZWYoKTtcbiAgICBpZiAoIWN1cnJlbnRJdGVtRWwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoaXNFbGVtZW50UHJlY2VkaW5nKGN1cnJlbnRJdGVtRWwsIGl0ZW1FbCkpIHtcbiAgICAgIHJldHVybiBsZW5ndGggKyAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cbmZ1bmN0aW9uIHNvcnRCYXNlZE9uRE9NUG9zaXRpb24oaXRlbXMpIHtcbiAgY29uc3QgcGFpcnMgPSBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiBbaW5kZXgsIGl0ZW1dKTtcbiAgbGV0IGlzT3JkZXJEaWZmZXJlbnQgPSBmYWxzZTtcbiAgcGFpcnMuc29ydCgoW2luZGV4QSwgYTJdLCBbaW5kZXhCLCBiMl0pID0+IHtcbiAgICBjb25zdCBlbGVtZW50QSA9IGEyLnJlZigpO1xuICAgIGNvbnN0IGVsZW1lbnRCID0gYjIucmVmKCk7XG4gICAgaWYgKGVsZW1lbnRBID09PSBlbGVtZW50Qikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmICghZWxlbWVudEEgfHwgIWVsZW1lbnRCKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKGlzRWxlbWVudFByZWNlZGluZyhlbGVtZW50QSwgZWxlbWVudEIpKSB7XG4gICAgICBpZiAoaW5kZXhBID4gaW5kZXhCKSB7XG4gICAgICAgIGlzT3JkZXJEaWZmZXJlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoaW5kZXhBIDwgaW5kZXhCKSB7XG4gICAgICBpc09yZGVyRGlmZmVyZW50ID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIDE7XG4gIH0pO1xuICBpZiAoaXNPcmRlckRpZmZlcmVudCkge1xuICAgIHJldHVybiBwYWlycy5tYXAoKFtfLCBpdGVtXSkgPT4gaXRlbSk7XG4gIH1cbiAgcmV0dXJuIGl0ZW1zO1xufVxuZnVuY3Rpb24gc2V0SXRlbXNCYXNlZE9uRE9NUG9zaXRpb24oaXRlbXMsIHNldEl0ZW1zKSB7XG4gIGNvbnN0IHNvcnRlZEl0ZW1zID0gc29ydEJhc2VkT25ET01Qb3NpdGlvbihpdGVtcyk7XG4gIGlmIChpdGVtcyAhPT0gc29ydGVkSXRlbXMpIHtcbiAgICBzZXRJdGVtcyhzb3J0ZWRJdGVtcyk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldENvbW1vblBhcmVudChpdGVtcykge1xuICBjb25zdCBmaXJzdEl0ZW0gPSBpdGVtc1swXTtcbiAgY29uc3QgbGFzdEl0ZW1FbCA9IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdPy5yZWYoKTtcbiAgbGV0IHBhcmVudEVsID0gZmlyc3RJdGVtPy5yZWYoKT8ucGFyZW50RWxlbWVudDtcbiAgd2hpbGUgKHBhcmVudEVsKSB7XG4gICAgaWYgKGxhc3RJdGVtRWwgJiYgcGFyZW50RWwuY29udGFpbnMobGFzdEl0ZW1FbCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnRFbDtcbiAgICB9XG4gICAgcGFyZW50RWwgPSBwYXJlbnRFbC5wYXJlbnRFbGVtZW50O1xuICB9XG4gIHJldHVybiBnZXREb2N1bWVudChwYXJlbnRFbCkuYm9keTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVRpbWVvdXRPYnNlcnZlcihpdGVtcywgc2V0SXRlbXMpIHtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRJdGVtc0Jhc2VkT25ET01Qb3NpdGlvbihpdGVtcygpLCBzZXRJdGVtcyk7XG4gICAgfSk7XG4gICAgb25DbGVhbnVwKCgpID0+IGNsZWFyVGltZW91dCh0aW1lb3V0KSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlU29ydEJhc2VkT25ET01Qb3NpdGlvbihpdGVtcywgc2V0SXRlbXMpIHtcbiAgaWYgKHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY3JlYXRlVGltZW91dE9ic2VydmVyKGl0ZW1zLCBzZXRJdGVtcyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBwcmV2aW91c0l0ZW1zID0gW107XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBjb25zdCBoYXNQcmV2aW91c0l0ZW1zID0gISFwcmV2aW91c0l0ZW1zLmxlbmd0aDtcbiAgICAgIHByZXZpb3VzSXRlbXMgPSBpdGVtcygpO1xuICAgICAgaWYgKCFoYXNQcmV2aW91c0l0ZW1zKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNldEl0ZW1zQmFzZWRPbkRPTVBvc2l0aW9uKGl0ZW1zKCksIHNldEl0ZW1zKTtcbiAgICB9O1xuICAgIGNvbnN0IHJvb3QgPSBnZXRDb21tb25QYXJlbnQoaXRlbXMoKSk7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIHsgcm9vdCB9KTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMoKSkge1xuICAgICAgY29uc3QgaXRlbUVsID0gaXRlbS5yZWYoKTtcbiAgICAgIGlmIChpdGVtRWwpIHtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShpdGVtRWwpO1xuICAgICAgfVxuICAgIH1cbiAgICBvbkNsZWFudXAoKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBjcmVhdGVEb21Db2xsZWN0aW9uKHByb3BzID0ge30pIHtcbiAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSBjcmVhdGVDb250cm9sbGFibGVBcnJheVNpZ25hbCh7XG4gICAgdmFsdWU6ICgpID0+IGFjY2Vzcyhwcm9wcy5pdGVtcyksXG4gICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4gcHJvcHMub25JdGVtc0NoYW5nZT8uKHZhbHVlKVxuICB9KTtcbiAgY3JlYXRlU29ydEJhc2VkT25ET01Qb3NpdGlvbihpdGVtcywgc2V0SXRlbXMpO1xuICBjb25zdCByZWdpc3Rlckl0ZW0gPSAoaXRlbSkgPT4ge1xuICAgIHNldEl0ZW1zKChwcmV2SXRlbXMpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmluZERPTUluZGV4KHByZXZJdGVtcywgaXRlbSk7XG4gICAgICByZXR1cm4gYWRkSXRlbVRvQXJyYXkocHJldkl0ZW1zLCBpdGVtLCBpbmRleCk7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHNldEl0ZW1zKChwcmV2SXRlbXMpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gcHJldkl0ZW1zLmZpbHRlcihcbiAgICAgICAgICAocHJldkl0ZW0pID0+IHByZXZJdGVtLnJlZigpICE9PSBpdGVtLnJlZigpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChwcmV2SXRlbXMubGVuZ3RoID09PSBuZXh0SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZJdGVtcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dEl0ZW1zO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfTtcbiAgY29uc3QgRG9tQ29sbGVjdGlvblByb3ZpZGVyID0gKHByb3BzMikgPT4ge1xuICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRG9tQ29sbGVjdGlvbkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiB7IHJlZ2lzdGVySXRlbSB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICByZXR1cm4gcHJvcHMyLmNoaWxkcmVuO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICByZXR1cm4geyBEb21Db2xsZWN0aW9uUHJvdmlkZXIgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZURvbUNvbGxlY3Rpb25JdGVtKHByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VEb21Db2xsZWN0aW9uQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHsgc2hvdWxkUmVnaXN0ZXJJdGVtOiB0cnVlIH0sIHByb3BzKTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1lcmdlZFByb3BzLnNob3VsZFJlZ2lzdGVySXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1bnJlZ2lzdGVyID0gY29udGV4dC5yZWdpc3Rlckl0ZW0obWVyZ2VkUHJvcHMuZ2V0SXRlbSgpKTtcbiAgICBvbkNsZWFudXAodW5yZWdpc3Rlcik7XG4gIH0pO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9KTUEyUldVNi5qc1xuZnVuY3Rpb24gYnVpbGROb2RlcyhwYXJhbXMpIHtcbiAgbGV0IGluZGV4ID0gcGFyYW1zLnN0YXJ0SW5kZXggPz8gMDtcbiAgY29uc3QgbGV2ZWwgPSBwYXJhbXMuc3RhcnRMZXZlbCA/PyAwO1xuICBjb25zdCBub2RlcyA9IFtdO1xuICBjb25zdCBnZXRLZXkgPSAoZGF0YSkgPT4ge1xuICAgIGlmIChkYXRhID09IG51bGwpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICBjb25zdCBfZ2V0S2V5ID0gcGFyYW1zLmdldEtleSA/PyBcImtleVwiO1xuICAgIGNvbnN0IGRhdGFLZXkgPSBpc1N0cmluZyhfZ2V0S2V5KSA/IGRhdGFbX2dldEtleV0gOiBfZ2V0S2V5KGRhdGEpO1xuICAgIHJldHVybiBkYXRhS2V5ICE9IG51bGwgPyBTdHJpbmcoZGF0YUtleSkgOiBcIlwiO1xuICB9O1xuICBjb25zdCBnZXRUZXh0VmFsdWUgPSAoZGF0YSkgPT4ge1xuICAgIGlmIChkYXRhID09IG51bGwpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICBjb25zdCBfZ2V0VGV4dFZhbHVlID0gcGFyYW1zLmdldFRleHRWYWx1ZSA/PyBcInRleHRWYWx1ZVwiO1xuICAgIGNvbnN0IGRhdGFUZXh0VmFsdWUgPSBpc1N0cmluZyhfZ2V0VGV4dFZhbHVlKSA/IGRhdGFbX2dldFRleHRWYWx1ZV0gOiBfZ2V0VGV4dFZhbHVlKGRhdGEpO1xuICAgIHJldHVybiBkYXRhVGV4dFZhbHVlICE9IG51bGwgPyBTdHJpbmcoZGF0YVRleHRWYWx1ZSkgOiBcIlwiO1xuICB9O1xuICBjb25zdCBnZXREaXNhYmxlZCA9IChkYXRhKSA9PiB7XG4gICAgaWYgKGRhdGEgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBfZ2V0RGlzYWJsZWQgPSBwYXJhbXMuZ2V0RGlzYWJsZWQgPz8gXCJkaXNhYmxlZFwiO1xuICAgIHJldHVybiAoaXNTdHJpbmcoX2dldERpc2FibGVkKSA/IGRhdGFbX2dldERpc2FibGVkXSA6IF9nZXREaXNhYmxlZChkYXRhKSkgPz8gZmFsc2U7XG4gIH07XG4gIGNvbnN0IGdldFNlY3Rpb25DaGlsZHJlbiA9IChkYXRhKSA9PiB7XG4gICAgaWYgKGRhdGEgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgaWYgKGlzU3RyaW5nKHBhcmFtcy5nZXRTZWN0aW9uQ2hpbGRyZW4pKSB7XG4gICAgICByZXR1cm4gZGF0YVtwYXJhbXMuZ2V0U2VjdGlvbkNoaWxkcmVuXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcy5nZXRTZWN0aW9uQ2hpbGRyZW4/LihkYXRhKTtcbiAgfTtcbiAgZm9yIChjb25zdCBkYXRhIG9mIHBhcmFtcy5kYXRhU291cmNlKSB7XG4gICAgaWYgKGlzU3RyaW5nKGRhdGEpIHx8IGlzTnVtYmVyKGRhdGEpKSB7XG4gICAgICBub2Rlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogXCJpdGVtXCIsXG4gICAgICAgIHJhd1ZhbHVlOiBkYXRhLFxuICAgICAgICBrZXk6IFN0cmluZyhkYXRhKSxcbiAgICAgICAgdGV4dFZhbHVlOiBTdHJpbmcoZGF0YSksXG4gICAgICAgIGRpc2FibGVkOiBnZXREaXNhYmxlZChkYXRhKSxcbiAgICAgICAgbGV2ZWwsXG4gICAgICAgIGluZGV4XG4gICAgICB9KTtcbiAgICAgIGluZGV4Kys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGdldFNlY3Rpb25DaGlsZHJlbihkYXRhKSAhPSBudWxsKSB7XG4gICAgICBub2Rlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogXCJzZWN0aW9uXCIsXG4gICAgICAgIHJhd1ZhbHVlOiBkYXRhLFxuICAgICAgICBrZXk6IFwiXCIsXG4gICAgICAgIC8vIG5vdCBhcHBsaWNhYmxlIGhlcmVcbiAgICAgICAgdGV4dFZhbHVlOiBcIlwiLFxuICAgICAgICAvLyBub3QgYXBwbGljYWJsZSBoZXJlXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgLy8gbm90IGFwcGxpY2FibGUgaGVyZVxuICAgICAgICBsZXZlbCxcbiAgICAgICAgaW5kZXhcbiAgICAgIH0pO1xuICAgICAgaW5kZXgrKztcbiAgICAgIGNvbnN0IHNlY3Rpb25DaGlsZHJlbiA9IGdldFNlY3Rpb25DaGlsZHJlbihkYXRhKSA/PyBbXTtcbiAgICAgIGlmIChzZWN0aW9uQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gYnVpbGROb2Rlcyh7XG4gICAgICAgICAgZGF0YVNvdXJjZTogc2VjdGlvbkNoaWxkcmVuLFxuICAgICAgICAgIGdldEtleTogcGFyYW1zLmdldEtleSxcbiAgICAgICAgICBnZXRUZXh0VmFsdWU6IHBhcmFtcy5nZXRUZXh0VmFsdWUsXG4gICAgICAgICAgZ2V0RGlzYWJsZWQ6IHBhcmFtcy5nZXREaXNhYmxlZCxcbiAgICAgICAgICBnZXRTZWN0aW9uQ2hpbGRyZW46IHBhcmFtcy5nZXRTZWN0aW9uQ2hpbGRyZW4sXG4gICAgICAgICAgc3RhcnRJbmRleDogaW5kZXgsXG4gICAgICAgICAgc3RhcnRMZXZlbDogbGV2ZWwgKyAxXG4gICAgICAgIH0pO1xuICAgICAgICBub2Rlcy5wdXNoKC4uLmNoaWxkTm9kZXMpO1xuICAgICAgICBpbmRleCArPSBjaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZXMucHVzaCh7XG4gICAgICAgIHR5cGU6IFwiaXRlbVwiLFxuICAgICAgICByYXdWYWx1ZTogZGF0YSxcbiAgICAgICAga2V5OiBnZXRLZXkoZGF0YSksXG4gICAgICAgIHRleHRWYWx1ZTogZ2V0VGV4dFZhbHVlKGRhdGEpLFxuICAgICAgICBkaXNhYmxlZDogZ2V0RGlzYWJsZWQoZGF0YSksXG4gICAgICAgIGxldmVsLFxuICAgICAgICBpbmRleFxuICAgICAgfSk7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9kZXM7XG59XG5mdW5jdGlvbiBjcmVhdGVDb2xsZWN0aW9uKHByb3BzLCBkZXBzID0gW10pIHtcbiAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVzID0gYnVpbGROb2Rlcyh7XG4gICAgICBkYXRhU291cmNlOiBhY2Nlc3MocHJvcHMuZGF0YVNvdXJjZSksXG4gICAgICBnZXRLZXk6IGFjY2Vzcyhwcm9wcy5nZXRLZXkpLFxuICAgICAgZ2V0VGV4dFZhbHVlOiBhY2Nlc3MocHJvcHMuZ2V0VGV4dFZhbHVlKSxcbiAgICAgIGdldERpc2FibGVkOiBhY2Nlc3MocHJvcHMuZ2V0RGlzYWJsZWQpLFxuICAgICAgZ2V0U2VjdGlvbkNoaWxkcmVuOiBhY2Nlc3MocHJvcHMuZ2V0U2VjdGlvbkNoaWxkcmVuKVxuICAgIH0pO1xuICAgIGZvciAobGV0IGkyID0gMDsgaTIgPCBkZXBzLmxlbmd0aDsgaTIrKylcbiAgICAgIGRlcHNbaTJdKCk7XG4gICAgcmV0dXJuIHByb3BzLmZhY3Rvcnkobm9kZXMpO1xuICB9KTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvWEhKUFFFWlAuanNcbnZhciBSVExfU0NSSVBUUyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcbiAgXCJBdnN0XCIsXG4gIFwiQXJhYlwiLFxuICBcIkFybWlcIixcbiAgXCJTeXJjXCIsXG4gIFwiU2FtclwiLFxuICBcIk1hbmRcIixcbiAgXCJUaGFhXCIsXG4gIFwiTWVuZFwiLFxuICBcIk5rb29cIixcbiAgXCJBZGxtXCIsXG4gIFwiUm9oZ1wiLFxuICBcIkhlYnJcIlxuXSk7XG52YXIgUlRMX0xBTkdTID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICBcImFlXCIsXG4gIFwiYXJcIixcbiAgXCJhcmNcIixcbiAgXCJiY2NcIixcbiAgXCJicWlcIixcbiAgXCJja2JcIixcbiAgXCJkdlwiLFxuICBcImZhXCIsXG4gIFwiZ2xrXCIsXG4gIFwiaGVcIixcbiAgXCJrdVwiLFxuICBcIm16blwiLFxuICBcIm5xb1wiLFxuICBcInBuYlwiLFxuICBcInBzXCIsXG4gIFwic2RcIixcbiAgXCJ1Z1wiLFxuICBcInVyXCIsXG4gIFwieWlcIlxuXSk7XG5mdW5jdGlvbiBpc1JUTChsb2NhbGUpIHtcbiAgaWYgKEludGwuTG9jYWxlKSB7XG4gICAgY29uc3Qgc2NyaXB0ID0gbmV3IEludGwuTG9jYWxlKGxvY2FsZSkubWF4aW1pemUoKS5zY3JpcHQgPz8gXCJcIjtcbiAgICByZXR1cm4gUlRMX1NDUklQVFMuaGFzKHNjcmlwdCk7XG4gIH1cbiAgY29uc3QgbGFuZyA9IGxvY2FsZS5zcGxpdChcIi1cIilbMF07XG4gIHJldHVybiBSVExfTEFOR1MuaGFzKGxhbmcpO1xufVxuZnVuY3Rpb24gZ2V0UmVhZGluZ0RpcmVjdGlvbihsb2NhbGUpIHtcbiAgcmV0dXJuIGlzUlRMKGxvY2FsZSkgPyBcInJ0bFwiIDogXCJsdHJcIjtcbn1cbmZ1bmN0aW9uIGdldERlZmF1bHRMb2NhbGUoKSB7XG4gIGxldCBsb2NhbGUgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiICYmIC8vIEB0cy1pZ25vcmVcbiAgKG5hdmlnYXRvci5sYW5ndWFnZSB8fCBuYXZpZ2F0b3IudXNlckxhbmd1YWdlKSB8fCBcImVuLVVTXCI7XG4gIHJldHVybiB7XG4gICAgbG9jYWxlLFxuICAgIGRpcmVjdGlvbjogZ2V0UmVhZGluZ0RpcmVjdGlvbihsb2NhbGUpXG4gIH07XG59XG52YXIgY3VycmVudExvY2FsZSA9IGdldERlZmF1bHRMb2NhbGUoKTtcbnZhciBsaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuZnVuY3Rpb24gdXBkYXRlTG9jYWxlKCkge1xuICBjdXJyZW50TG9jYWxlID0gZ2V0RGVmYXVsdExvY2FsZSgpO1xuICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVycykge1xuICAgIGxpc3RlbmVyKGN1cnJlbnRMb2NhbGUpO1xuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVEZWZhdWx0TG9jYWxlKCkge1xuICBjb25zdCBkZWZhdWx0U1NSTG9jYWxlID0ge1xuICAgIGxvY2FsZTogXCJlbi1VU1wiLFxuICAgIGRpcmVjdGlvbjogXCJsdHJcIlxuICB9O1xuICBjb25zdCBbZGVmYXVsdENsaWVudExvY2FsZSwgc2V0RGVmYXVsdENsaWVudExvY2FsZV0gPSBjcmVhdGVTaWduYWwoY3VycmVudExvY2FsZSk7XG4gIGNvbnN0IGRlZmF1bHRMb2NhbGUgPSBjcmVhdGVNZW1vKFxuICAgICgpID0+IGlzU2VydmVyID8gZGVmYXVsdFNTUkxvY2FsZSA6IGRlZmF1bHRDbGllbnRMb2NhbGUoKVxuICApO1xuICBvbk1vdW50KCgpID0+IHtcbiAgICBpZiAobGlzdGVuZXJzLnNpemUgPT09IDApIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibGFuZ3VhZ2VjaGFuZ2VcIiwgdXBkYXRlTG9jYWxlKTtcbiAgICB9XG4gICAgbGlzdGVuZXJzLmFkZChzZXREZWZhdWx0Q2xpZW50TG9jYWxlKTtcbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgbGlzdGVuZXJzLmRlbGV0ZShzZXREZWZhdWx0Q2xpZW50TG9jYWxlKTtcbiAgICAgIGlmIChsaXN0ZW5lcnMuc2l6ZSA9PT0gMCkge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImxhbmd1YWdlY2hhbmdlXCIsIHVwZGF0ZUxvY2FsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGxvY2FsZTogKCkgPT4gZGVmYXVsdExvY2FsZSgpLmxvY2FsZSxcbiAgICBkaXJlY3Rpb246ICgpID0+IGRlZmF1bHRMb2NhbGUoKS5kaXJlY3Rpb25cbiAgfTtcbn1cbnZhciBJMThuQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZUxvY2FsZSgpIHtcbiAgY29uc3QgZGVmYXVsdExvY2FsZSA9IGNyZWF0ZURlZmF1bHRMb2NhbGUoKTtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoSTE4bkNvbnRleHQpO1xuICByZXR1cm4gY29udGV4dCB8fCBkZWZhdWx0TG9jYWxlO1xufVxudmFyIGNhY2hlID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbmZ1bmN0aW9uIGNyZWF0ZUNvbGxhdG9yKG9wdGlvbnMpIHtcbiAgY29uc3QgeyBsb2NhbGUgfSA9IHVzZUxvY2FsZSgpO1xuICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBsb2NhbGUoKSArIChvcHRpb25zID8gT2JqZWN0LmVudHJpZXMob3B0aW9ucykuc29ydCgoYTIsIGIyKSA9PiBhMlswXSA8IGIyWzBdID8gLTEgOiAxKS5qb2luKCkgOiBcIlwiKTtcbiAgfSk7XG4gIHJldHVybiBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBjb25zdCBrZXkgPSBjYWNoZUtleSgpO1xuICAgIGxldCBjb2xsYXRvcjtcbiAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIGNvbGxhdG9yID0gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIGlmICghY29sbGF0b3IpIHtcbiAgICAgIGNvbGxhdG9yID0gbmV3IEludGwuQ29sbGF0b3IobG9jYWxlKCksIG9wdGlvbnMpO1xuICAgICAgY2FjaGUuc2V0KGtleSwgY29sbGF0b3IpO1xuICAgIH1cbiAgICByZXR1cm4gY29sbGF0b3I7XG4gIH0pO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9INkRTSURFQy5qc1xudmFyIFNlbGVjdGlvbiA9IGNsYXNzIF9TZWxlY3Rpb24gZXh0ZW5kcyBTZXQge1xuICBhbmNob3JLZXk7XG4gIGN1cnJlbnRLZXk7XG4gIGNvbnN0cnVjdG9yKGtleXMyLCBhbmNob3JLZXksIGN1cnJlbnRLZXkpIHtcbiAgICBzdXBlcihrZXlzMik7XG4gICAgaWYgKGtleXMyIGluc3RhbmNlb2YgX1NlbGVjdGlvbikge1xuICAgICAgdGhpcy5hbmNob3JLZXkgPSBhbmNob3JLZXkgfHwga2V5czIuYW5jaG9yS2V5O1xuICAgICAgdGhpcy5jdXJyZW50S2V5ID0gY3VycmVudEtleSB8fCBrZXlzMi5jdXJyZW50S2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFuY2hvcktleSA9IGFuY2hvcktleTtcbiAgICAgIHRoaXMuY3VycmVudEtleSA9IGN1cnJlbnRLZXk7XG4gICAgfVxuICB9XG59O1xuZnVuY3Rpb24gY3JlYXRlQ29udHJvbGxhYmxlU2VsZWN0aW9uU2lnbmFsKHByb3BzKSB7XG4gIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IGNyZWF0ZUNvbnRyb2xsYWJsZVNpZ25hbChwcm9wcyk7XG4gIGNvbnN0IHZhbHVlID0gKCkgPT4gX3ZhbHVlKCkgPz8gbmV3IFNlbGVjdGlvbigpO1xuICByZXR1cm4gW3ZhbHVlLCBzZXRWYWx1ZV07XG59XG5mdW5jdGlvbiBpc05vbkNvbnRpZ3VvdXNTZWxlY3Rpb25Nb2RpZmllcihlMikge1xuICByZXR1cm4gaXNBcHBsZURldmljZSgpID8gZTIuYWx0S2V5IDogZTIuY3RybEtleTtcbn1cbmZ1bmN0aW9uIGlzQ3RybEtleVByZXNzZWQoZTIpIHtcbiAgaWYgKGlzTWFjKCkpIHtcbiAgICByZXR1cm4gZTIubWV0YUtleTtcbiAgfVxuICByZXR1cm4gZTIuY3RybEtleTtcbn1cbmZ1bmN0aW9uIGNvbnZlcnRTZWxlY3Rpb24oc2VsZWN0aW9uKSB7XG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHNlbGVjdGlvbik7XG59XG5mdW5jdGlvbiBpc1NhbWVTZWxlY3Rpb24oc2V0QSwgc2V0Qikge1xuICBpZiAoc2V0QS5zaXplICE9PSBzZXRCLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChjb25zdCBpdGVtIG9mIHNldEEpIHtcbiAgICBpZiAoIXNldEIuaGFzKGl0ZW0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gY3JlYXRlTXVsdGlwbGVTZWxlY3Rpb25TdGF0ZShwcm9wcykge1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKFxuICAgIHtcbiAgICAgIHNlbGVjdGlvbk1vZGU6IFwibm9uZVwiLFxuICAgICAgc2VsZWN0aW9uQmVoYXZpb3I6IFwidG9nZ2xlXCJcbiAgICB9LFxuICAgIHByb3BzXG4gICk7XG4gIGNvbnN0IFtpc0ZvY3VzZWQsIHNldEZvY3VzZWRdID0gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbiAgY29uc3QgW2ZvY3VzZWRLZXksIHNldEZvY3VzZWRLZXldID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IHNlbGVjdGVkS2V5c1Byb3AgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBhY2Nlc3MobWVyZ2VkUHJvcHMuc2VsZWN0ZWRLZXlzKTtcbiAgICBpZiAoc2VsZWN0aW9uICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBjb252ZXJ0U2VsZWN0aW9uKHNlbGVjdGlvbik7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH0pO1xuICBjb25zdCBkZWZhdWx0U2VsZWN0ZWRLZXlzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdFNlbGVjdGlvbiA9IGFjY2VzcyhtZXJnZWRQcm9wcy5kZWZhdWx0U2VsZWN0ZWRLZXlzKTtcbiAgICBpZiAoZGVmYXVsdFNlbGVjdGlvbiAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gY29udmVydFNlbGVjdGlvbihkZWZhdWx0U2VsZWN0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oKTtcbiAgfSk7XG4gIGNvbnN0IFtzZWxlY3RlZEtleXMsIF9zZXRTZWxlY3RlZEtleXNdID0gY3JlYXRlQ29udHJvbGxhYmxlU2VsZWN0aW9uU2lnbmFsKHtcbiAgICB2YWx1ZTogc2VsZWN0ZWRLZXlzUHJvcCxcbiAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRTZWxlY3RlZEtleXMsXG4gICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4gbWVyZ2VkUHJvcHMub25TZWxlY3Rpb25DaGFuZ2U/Lih2YWx1ZSlcbiAgfSk7XG4gIGNvbnN0IFtzZWxlY3Rpb25CZWhhdmlvciwgc2V0U2VsZWN0aW9uQmVoYXZpb3JdID0gY3JlYXRlU2lnbmFsKGFjY2VzcyhtZXJnZWRQcm9wcy5zZWxlY3Rpb25CZWhhdmlvcikpO1xuICBjb25zdCBzZWxlY3Rpb25Nb2RlID0gKCkgPT4gYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdGlvbk1vZGUpO1xuICBjb25zdCBkaXNhbGxvd0VtcHR5U2VsZWN0aW9uID0gKCkgPT4gYWNjZXNzKG1lcmdlZFByb3BzLmRpc2FsbG93RW1wdHlTZWxlY3Rpb24pID8/IGZhbHNlO1xuICBjb25zdCBzZXRTZWxlY3RlZEtleXMgPSAoa2V5czIpID0+IHtcbiAgICBpZiAoYWNjZXNzKG1lcmdlZFByb3BzLmFsbG93RHVwbGljYXRlU2VsZWN0aW9uRXZlbnRzKSB8fCAhaXNTYW1lU2VsZWN0aW9uKGtleXMyLCBzZWxlY3RlZEtleXMoKSkpIHtcbiAgICAgIF9zZXRTZWxlY3RlZEtleXMoa2V5czIpO1xuICAgIH1cbiAgfTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBzZWxlY3RlZEtleXMoKTtcbiAgICBpZiAoYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdGlvbkJlaGF2aW9yKSA9PT0gXCJyZXBsYWNlXCIgJiYgc2VsZWN0aW9uQmVoYXZpb3IoKSA9PT0gXCJ0b2dnbGVcIiAmJiB0eXBlb2Ygc2VsZWN0aW9uID09PSBcIm9iamVjdFwiICYmIHNlbGVjdGlvbi5zaXplID09PSAwKSB7XG4gICAgICBzZXRTZWxlY3Rpb25CZWhhdmlvcihcInJlcGxhY2VcIik7XG4gICAgfVxuICB9KTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTZWxlY3Rpb25CZWhhdmlvcihhY2Nlc3MobWVyZ2VkUHJvcHMuc2VsZWN0aW9uQmVoYXZpb3IpID8/IFwidG9nZ2xlXCIpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBzZWxlY3Rpb25Nb2RlLFxuICAgIGRpc2FsbG93RW1wdHlTZWxlY3Rpb24sXG4gICAgc2VsZWN0aW9uQmVoYXZpb3IsXG4gICAgc2V0U2VsZWN0aW9uQmVoYXZpb3IsXG4gICAgaXNGb2N1c2VkLFxuICAgIHNldEZvY3VzZWQsXG4gICAgZm9jdXNlZEtleSxcbiAgICBzZXRGb2N1c2VkS2V5LFxuICAgIHNlbGVjdGVkS2V5cyxcbiAgICBzZXRTZWxlY3RlZEtleXNcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVR5cGVTZWxlY3QocHJvcHMpIHtcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IGNyZWF0ZVNpZ25hbChcIlwiKTtcbiAgY29uc3QgW3RpbWVvdXRJZCwgc2V0VGltZW91dElkXSA9IGNyZWF0ZVNpZ25hbCgtMSk7XG4gIGNvbnN0IG9uS2V5RG93biA9IChlMikgPT4ge1xuICAgIGlmIChhY2Nlc3MocHJvcHMuaXNEaXNhYmxlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGVsZWdhdGUgPSBhY2Nlc3MocHJvcHMua2V5Ym9hcmREZWxlZ2F0ZSk7XG4gICAgY29uc3QgbWFuYWdlciA9IGFjY2Vzcyhwcm9wcy5zZWxlY3Rpb25NYW5hZ2VyKTtcbiAgICBpZiAoIWRlbGVnYXRlLmdldEtleUZvclNlYXJjaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjaGFyYWN0ZXIgPSBnZXRTdHJpbmdGb3JLZXkoZTIua2V5KTtcbiAgICBpZiAoIWNoYXJhY3RlciB8fCBlMi5jdHJsS2V5IHx8IGUyLm1ldGFLZXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNoYXJhY3RlciA9PT0gXCIgXCIgJiYgc2VhcmNoKCkudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlMi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgbGV0IG5ld1NlYXJjaCA9IHNldFNlYXJjaCgocHJldikgPT4gcHJldiArIGNoYXJhY3Rlcik7XG4gICAgbGV0IGtleSA9IGRlbGVnYXRlLmdldEtleUZvclNlYXJjaChuZXdTZWFyY2gsIG1hbmFnZXIuZm9jdXNlZEtleSgpKSA/PyBkZWxlZ2F0ZS5nZXRLZXlGb3JTZWFyY2gobmV3U2VhcmNoKTtcbiAgICBpZiAoa2V5ID09IG51bGwgJiYgaXNBbGxTYW1lTGV0dGVyKG5ld1NlYXJjaCkpIHtcbiAgICAgIG5ld1NlYXJjaCA9IG5ld1NlYXJjaFswXTtcbiAgICAgIGtleSA9IGRlbGVnYXRlLmdldEtleUZvclNlYXJjaChuZXdTZWFyY2gsIG1hbmFnZXIuZm9jdXNlZEtleSgpKSA/PyBkZWxlZ2F0ZS5nZXRLZXlGb3JTZWFyY2gobmV3U2VhcmNoKTtcbiAgICB9XG4gICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICBtYW5hZ2VyLnNldEZvY3VzZWRLZXkoa2V5KTtcbiAgICAgIHByb3BzLm9uVHlwZVNlbGVjdD8uKGtleSk7XG4gICAgfVxuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQoKSk7XG4gICAgc2V0VGltZW91dElkKHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHNldFNlYXJjaChcIlwiKSwgNTAwKSk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgdHlwZVNlbGVjdEhhbmRsZXJzOiB7XG4gICAgICBvbktleURvd25cbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBnZXRTdHJpbmdGb3JLZXkoa2V5KSB7XG4gIGlmIChrZXkubGVuZ3RoID09PSAxIHx8ICEvXltBLVpdL2kudGVzdChrZXkpKSB7XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuICByZXR1cm4gXCJcIjtcbn1cbmZ1bmN0aW9uIGlzQWxsU2FtZUxldHRlcihzZWFyY2gpIHtcbiAgcmV0dXJuIHNlYXJjaC5zcGxpdChcIlwiKS5ldmVyeSgobGV0dGVyKSA9PiBsZXR0ZXIgPT09IHNlYXJjaFswXSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTZWxlY3RhYmxlQ29sbGVjdGlvbihwcm9wcywgcmVmLCBzY3JvbGxSZWYpIHtcbiAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgIHNlbGVjdE9uRm9jdXM6ICgpID0+IGFjY2Vzcyhwcm9wcy5zZWxlY3Rpb25NYW5hZ2VyKS5zZWxlY3Rpb25CZWhhdmlvcigpID09PSBcInJlcGxhY2VcIlxuICB9O1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoZGVmYXVsdFByb3BzLCBwcm9wcyk7XG4gIGNvbnN0IGZpbmFsU2Nyb2xsUmVmID0gKCkgPT4gcmVmKCk7XG4gIGNvbnN0IHsgZGlyZWN0aW9uIH0gPSB1c2VMb2NhbGUoKTtcbiAgbGV0IHNjcm9sbFBvcyA9IHsgdG9wOiAwLCBsZWZ0OiAwIH07XG4gIGNyZWF0ZUV2ZW50TGlzdGVuZXIoXG4gICAgKCkgPT4gIWFjY2VzcyhtZXJnZWRQcm9wcy5pc1ZpcnR1YWxpemVkKSA/IGZpbmFsU2Nyb2xsUmVmKCkgOiB2b2lkIDAsXG4gICAgXCJzY3JvbGxcIixcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxFbCA9IGZpbmFsU2Nyb2xsUmVmKCk7XG4gICAgICBpZiAoIXNjcm9sbEVsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNjcm9sbFBvcyA9IHtcbiAgICAgICAgdG9wOiBzY3JvbGxFbC5zY3JvbGxUb3AsXG4gICAgICAgIGxlZnQ6IHNjcm9sbEVsLnNjcm9sbExlZnRcbiAgICAgIH07XG4gICAgfVxuICApO1xuICBjb25zdCB7IHR5cGVTZWxlY3RIYW5kbGVycyB9ID0gY3JlYXRlVHlwZVNlbGVjdCh7XG4gICAgaXNEaXNhYmxlZDogKCkgPT4gYWNjZXNzKG1lcmdlZFByb3BzLmRpc2FsbG93VHlwZUFoZWFkKSxcbiAgICBrZXlib2FyZERlbGVnYXRlOiAoKSA9PiBhY2Nlc3MobWVyZ2VkUHJvcHMua2V5Ym9hcmREZWxlZ2F0ZSksXG4gICAgc2VsZWN0aW9uTWFuYWdlcjogKCkgPT4gYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdGlvbk1hbmFnZXIpXG4gIH0pO1xuICBjb25zdCBvcmllbnRhdGlvbiA9ICgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy5vcmllbnRhdGlvbikgPz8gXCJ2ZXJ0aWNhbFwiO1xuICBjb25zdCBvbktleURvd24gPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgdHlwZVNlbGVjdEhhbmRsZXJzLm9uS2V5RG93bik7XG4gICAgaWYgKGUyLmFsdEtleSAmJiBlMi5rZXkgPT09IFwiVGFiXCIpIHtcbiAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGNvbnN0IHJlZkVsID0gcmVmKCk7XG4gICAgaWYgKCFyZWZFbD8uY29udGFpbnMoZTIudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtYW5hZ2VyID0gYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdGlvbk1hbmFnZXIpO1xuICAgIGNvbnN0IHNlbGVjdE9uRm9jdXMgPSBhY2Nlc3MobWVyZ2VkUHJvcHMuc2VsZWN0T25Gb2N1cyk7XG4gICAgY29uc3QgbmF2aWdhdGVUb0tleSA9IChrZXkpID0+IHtcbiAgICAgIGlmIChrZXkgIT0gbnVsbCkge1xuICAgICAgICBtYW5hZ2VyLnNldEZvY3VzZWRLZXkoa2V5KTtcbiAgICAgICAgaWYgKGUyLnNoaWZ0S2V5ICYmIG1hbmFnZXIuc2VsZWN0aW9uTW9kZSgpID09PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgICAgICBtYW5hZ2VyLmV4dGVuZFNlbGVjdGlvbihrZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdE9uRm9jdXMgJiYgIWlzTm9uQ29udGlndW91c1NlbGVjdGlvbk1vZGlmaWVyKGUyKSkge1xuICAgICAgICAgIG1hbmFnZXIucmVwbGFjZVNlbGVjdGlvbihrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBkZWxlZ2F0ZSA9IGFjY2VzcyhtZXJnZWRQcm9wcy5rZXlib2FyZERlbGVnYXRlKTtcbiAgICBjb25zdCBzaG91bGRGb2N1c1dyYXAgPSBhY2Nlc3MobWVyZ2VkUHJvcHMuc2hvdWxkRm9jdXNXcmFwKTtcbiAgICBjb25zdCBmb2N1c2VkS2V5ID0gbWFuYWdlci5mb2N1c2VkS2V5KCk7XG4gICAgc3dpdGNoIChlMi5rZXkpIHtcbiAgICAgIGNhc2UgKG9yaWVudGF0aW9uKCkgPT09IFwidmVydGljYWxcIiA/IFwiQXJyb3dEb3duXCIgOiBcIkFycm93UmlnaHRcIik6IHtcbiAgICAgICAgaWYgKGRlbGVnYXRlLmdldEtleUJlbG93KSB7XG4gICAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBsZXQgbmV4dEtleTtcbiAgICAgICAgICBpZiAoZm9jdXNlZEtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICBuZXh0S2V5ID0gZGVsZWdhdGUuZ2V0S2V5QmVsb3coZm9jdXNlZEtleSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHRLZXkgPSBkZWxlZ2F0ZS5nZXRGaXJzdEtleT8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXh0S2V5ID09IG51bGwgJiYgc2hvdWxkRm9jdXNXcmFwKSB7XG4gICAgICAgICAgICBuZXh0S2V5ID0gZGVsZWdhdGUuZ2V0Rmlyc3RLZXk/Lihmb2N1c2VkS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmF2aWdhdGVUb0tleShuZXh0S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgKG9yaWVudGF0aW9uKCkgPT09IFwidmVydGljYWxcIiA/IFwiQXJyb3dVcFwiIDogXCJBcnJvd0xlZnRcIik6IHtcbiAgICAgICAgaWYgKGRlbGVnYXRlLmdldEtleUFib3ZlKSB7XG4gICAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBsZXQgbmV4dEtleTtcbiAgICAgICAgICBpZiAoZm9jdXNlZEtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICBuZXh0S2V5ID0gZGVsZWdhdGUuZ2V0S2V5QWJvdmUoZm9jdXNlZEtleSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHRLZXkgPSBkZWxlZ2F0ZS5nZXRMYXN0S2V5Py4oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5leHRLZXkgPT0gbnVsbCAmJiBzaG91bGRGb2N1c1dyYXApIHtcbiAgICAgICAgICAgIG5leHRLZXkgPSBkZWxlZ2F0ZS5nZXRMYXN0S2V5Py4oZm9jdXNlZEtleSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5hdmlnYXRlVG9LZXkobmV4dEtleSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIChvcmllbnRhdGlvbigpID09PSBcInZlcnRpY2FsXCIgPyBcIkFycm93TGVmdFwiIDogXCJBcnJvd1VwXCIpOiB7XG4gICAgICAgIGlmIChkZWxlZ2F0ZS5nZXRLZXlMZWZ0T2YpIHtcbiAgICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGNvbnN0IGlzUlRMMyA9IGRpcmVjdGlvbigpID09PSBcInJ0bFwiO1xuICAgICAgICAgIGxldCBuZXh0S2V5O1xuICAgICAgICAgIGlmIChmb2N1c2VkS2V5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIG5leHRLZXkgPSBkZWxlZ2F0ZS5nZXRLZXlMZWZ0T2YoZm9jdXNlZEtleSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHRLZXkgPSBpc1JUTDMgPyBkZWxlZ2F0ZS5nZXRGaXJzdEtleT8uKCkgOiBkZWxlZ2F0ZS5nZXRMYXN0S2V5Py4oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmF2aWdhdGVUb0tleShuZXh0S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgKG9yaWVudGF0aW9uKCkgPT09IFwidmVydGljYWxcIiA/IFwiQXJyb3dSaWdodFwiIDogXCJBcnJvd0Rvd25cIik6IHtcbiAgICAgICAgaWYgKGRlbGVnYXRlLmdldEtleVJpZ2h0T2YpIHtcbiAgICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGNvbnN0IGlzUlRMMyA9IGRpcmVjdGlvbigpID09PSBcInJ0bFwiO1xuICAgICAgICAgIGxldCBuZXh0S2V5O1xuICAgICAgICAgIGlmIChmb2N1c2VkS2V5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIG5leHRLZXkgPSBkZWxlZ2F0ZS5nZXRLZXlSaWdodE9mKGZvY3VzZWRLZXkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0S2V5ID0gaXNSVEwzID8gZGVsZWdhdGUuZ2V0TGFzdEtleT8uKCkgOiBkZWxlZ2F0ZS5nZXRGaXJzdEtleT8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5hdmlnYXRlVG9LZXkobmV4dEtleSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFwiSG9tZVwiOlxuICAgICAgICBpZiAoZGVsZWdhdGUuZ2V0Rmlyc3RLZXkpIHtcbiAgICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGNvbnN0IGZpcnN0S2V5ID0gZGVsZWdhdGUuZ2V0Rmlyc3RLZXkoXG4gICAgICAgICAgICBmb2N1c2VkS2V5LFxuICAgICAgICAgICAgaXNDdHJsS2V5UHJlc3NlZChlMilcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChmaXJzdEtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYW5hZ2VyLnNldEZvY3VzZWRLZXkoZmlyc3RLZXkpO1xuICAgICAgICAgICAgaWYgKGlzQ3RybEtleVByZXNzZWQoZTIpICYmIGUyLnNoaWZ0S2V5ICYmIG1hbmFnZXIuc2VsZWN0aW9uTW9kZSgpID09PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgICAgICAgICAgbWFuYWdlci5leHRlbmRTZWxlY3Rpb24oZmlyc3RLZXkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RPbkZvY3VzKSB7XG4gICAgICAgICAgICAgIG1hbmFnZXIucmVwbGFjZVNlbGVjdGlvbihmaXJzdEtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkVuZFwiOlxuICAgICAgICBpZiAoZGVsZWdhdGUuZ2V0TGFzdEtleSkge1xuICAgICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgY29uc3QgbGFzdEtleSA9IGRlbGVnYXRlLmdldExhc3RLZXkoZm9jdXNlZEtleSwgaXNDdHJsS2V5UHJlc3NlZChlMikpO1xuICAgICAgICAgIGlmIChsYXN0S2V5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIG1hbmFnZXIuc2V0Rm9jdXNlZEtleShsYXN0S2V5KTtcbiAgICAgICAgICAgIGlmIChpc0N0cmxLZXlQcmVzc2VkKGUyKSAmJiBlMi5zaGlmdEtleSAmJiBtYW5hZ2VyLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICAgICAgICAgIG1hbmFnZXIuZXh0ZW5kU2VsZWN0aW9uKGxhc3RLZXkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RPbkZvY3VzKSB7XG4gICAgICAgICAgICAgIG1hbmFnZXIucmVwbGFjZVNlbGVjdGlvbihsYXN0S2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiUGFnZURvd25cIjpcbiAgICAgICAgaWYgKGRlbGVnYXRlLmdldEtleVBhZ2VCZWxvdyAmJiBmb2N1c2VkS2V5ICE9IG51bGwpIHtcbiAgICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGNvbnN0IG5leHRLZXkgPSBkZWxlZ2F0ZS5nZXRLZXlQYWdlQmVsb3coZm9jdXNlZEtleSk7XG4gICAgICAgICAgbmF2aWdhdGVUb0tleShuZXh0S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJQYWdlVXBcIjpcbiAgICAgICAgaWYgKGRlbGVnYXRlLmdldEtleVBhZ2VBYm92ZSAmJiBmb2N1c2VkS2V5ICE9IG51bGwpIHtcbiAgICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGNvbnN0IG5leHRLZXkgPSBkZWxlZ2F0ZS5nZXRLZXlQYWdlQWJvdmUoZm9jdXNlZEtleSk7XG4gICAgICAgICAgbmF2aWdhdGVUb0tleShuZXh0S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhXCI6XG4gICAgICAgIGlmIChpc0N0cmxLZXlQcmVzc2VkKGUyKSAmJiBtYW5hZ2VyLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJtdWx0aXBsZVwiICYmIGFjY2VzcyhtZXJnZWRQcm9wcy5kaXNhbGxvd1NlbGVjdEFsbCkgIT09IHRydWUpIHtcbiAgICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIG1hbmFnZXIuc2VsZWN0QWxsKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiRXNjYXBlXCI6XG4gICAgICAgIGlmICghZTIuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgaWYgKCFhY2Nlc3MobWVyZ2VkUHJvcHMuZGlzYWxsb3dFbXB0eVNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIG1hbmFnZXIuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiVGFiXCI6IHtcbiAgICAgICAgaWYgKCFhY2Nlc3MobWVyZ2VkUHJvcHMuYWxsb3dzVGFiTmF2aWdhdGlvbikpIHtcbiAgICAgICAgICBpZiAoZTIuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHJlZkVsLmZvY3VzKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHdhbGtlciA9IGdldEZvY3VzYWJsZVRyZWVXYWxrZXIocmVmRWwsIHsgdGFiYmFibGU6IHRydWUgfSk7XG4gICAgICAgICAgICBsZXQgbmV4dDtcbiAgICAgICAgICAgIGxldCBsYXN0O1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICBsYXN0ID0gd2Fsa2VyLmxhc3RDaGlsZCgpO1xuICAgICAgICAgICAgICBpZiAobGFzdCkge1xuICAgICAgICAgICAgICAgIG5leHQgPSBsYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlIChsYXN0KTtcbiAgICAgICAgICAgIGlmIChuZXh0ICYmICFuZXh0LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhuZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uRm9jdXNJbiA9IChlMikgPT4ge1xuICAgIGNvbnN0IG1hbmFnZXIgPSBhY2Nlc3MobWVyZ2VkUHJvcHMuc2VsZWN0aW9uTWFuYWdlcik7XG4gICAgY29uc3QgZGVsZWdhdGUgPSBhY2Nlc3MobWVyZ2VkUHJvcHMua2V5Ym9hcmREZWxlZ2F0ZSk7XG4gICAgY29uc3Qgc2VsZWN0T25Gb2N1cyA9IGFjY2VzcyhtZXJnZWRQcm9wcy5zZWxlY3RPbkZvY3VzKTtcbiAgICBpZiAobWFuYWdlci5pc0ZvY3VzZWQoKSkge1xuICAgICAgaWYgKCFlMi5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKGUyLnRhcmdldCkpIHtcbiAgICAgICAgbWFuYWdlci5zZXRGb2N1c2VkKGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFlMi5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKGUyLnRhcmdldCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbWFuYWdlci5zZXRGb2N1c2VkKHRydWUpO1xuICAgIGlmIChtYW5hZ2VyLmZvY3VzZWRLZXkoKSA9PSBudWxsKSB7XG4gICAgICBjb25zdCBuYXZpZ2F0ZVRvRmlyc3RLZXkgPSAoa2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBtYW5hZ2VyLnNldEZvY3VzZWRLZXkoa2V5KTtcbiAgICAgICAgaWYgKHNlbGVjdE9uRm9jdXMpIHtcbiAgICAgICAgICBtYW5hZ2VyLnJlcGxhY2VTZWxlY3Rpb24oa2V5KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBlMi5yZWxhdGVkVGFyZ2V0O1xuICAgICAgaWYgKHJlbGF0ZWRUYXJnZXQgJiYgZTIuY3VycmVudFRhcmdldC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihyZWxhdGVkVGFyZ2V0KSAmIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKSB7XG4gICAgICAgIG5hdmlnYXRlVG9GaXJzdEtleShcbiAgICAgICAgICBtYW5hZ2VyLmxhc3RTZWxlY3RlZEtleSgpID8/IGRlbGVnYXRlLmdldExhc3RLZXk/LigpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuYXZpZ2F0ZVRvRmlyc3RLZXkoXG4gICAgICAgICAgbWFuYWdlci5maXJzdFNlbGVjdGVkS2V5KCkgPz8gZGVsZWdhdGUuZ2V0Rmlyc3RLZXk/LigpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghYWNjZXNzKG1lcmdlZFByb3BzLmlzVmlydHVhbGl6ZWQpKSB7XG4gICAgICBjb25zdCBzY3JvbGxFbCA9IGZpbmFsU2Nyb2xsUmVmKCk7XG4gICAgICBpZiAoc2Nyb2xsRWwpIHtcbiAgICAgICAgc2Nyb2xsRWwuc2Nyb2xsVG9wID0gc2Nyb2xsUG9zLnRvcDtcbiAgICAgICAgc2Nyb2xsRWwuc2Nyb2xsTGVmdCA9IHNjcm9sbFBvcy5sZWZ0O1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gc2Nyb2xsRWwucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICBgW2RhdGEta2V5PVwiJHttYW5hZ2VyLmZvY3VzZWRLZXkoKX1cIl1gXG4gICAgICAgICk7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgZm9jdXNXaXRob3V0U2Nyb2xsaW5nKGVsZW1lbnQpO1xuICAgICAgICAgIHNjcm9sbEludG9WaWV3KHNjcm9sbEVsLCBlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25Gb2N1c091dCA9IChlMikgPT4ge1xuICAgIGNvbnN0IG1hbmFnZXIgPSBhY2Nlc3MobWVyZ2VkUHJvcHMuc2VsZWN0aW9uTWFuYWdlcik7XG4gICAgaWYgKCFlMi5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKGUyLnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICBtYW5hZ2VyLnNldEZvY3VzZWQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25Nb3VzZURvd24gPSAoZTIpID0+IHtcbiAgICBpZiAoZmluYWxTY3JvbGxSZWYoKSA9PT0gZTIudGFyZ2V0KSB7XG4gICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdHJ5QXV0b0ZvY3VzID0gKCkgPT4ge1xuICAgIGNvbnN0IGF1dG9Gb2N1cyA9IGFjY2VzcyhtZXJnZWRQcm9wcy5hdXRvRm9jdXMpO1xuICAgIGlmICghYXV0b0ZvY3VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1hbmFnZXIgPSBhY2Nlc3MobWVyZ2VkUHJvcHMuc2VsZWN0aW9uTWFuYWdlcik7XG4gICAgY29uc3QgZGVsZWdhdGUgPSBhY2Nlc3MobWVyZ2VkUHJvcHMua2V5Ym9hcmREZWxlZ2F0ZSk7XG4gICAgbGV0IGZvY3VzZWRLZXk7XG4gICAgaWYgKGF1dG9Gb2N1cyA9PT0gXCJmaXJzdFwiKSB7XG4gICAgICBmb2N1c2VkS2V5ID0gZGVsZWdhdGUuZ2V0Rmlyc3RLZXk/LigpO1xuICAgIH1cbiAgICBpZiAoYXV0b0ZvY3VzID09PSBcImxhc3RcIikge1xuICAgICAgZm9jdXNlZEtleSA9IGRlbGVnYXRlLmdldExhc3RLZXk/LigpO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3RlZEtleXMgPSBtYW5hZ2VyLnNlbGVjdGVkS2V5cygpO1xuICAgIGlmIChzZWxlY3RlZEtleXMuc2l6ZSkge1xuICAgICAgZm9jdXNlZEtleSA9IHNlbGVjdGVkS2V5cy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gICAgfVxuICAgIG1hbmFnZXIuc2V0Rm9jdXNlZCh0cnVlKTtcbiAgICBtYW5hZ2VyLnNldEZvY3VzZWRLZXkoZm9jdXNlZEtleSk7XG4gICAgY29uc3QgcmVmRWwgPSByZWYoKTtcbiAgICBpZiAocmVmRWwgJiYgZm9jdXNlZEtleSA9PSBudWxsICYmICFhY2Nlc3MobWVyZ2VkUHJvcHMuc2hvdWxkVXNlVmlydHVhbEZvY3VzKSkge1xuICAgICAgZm9jdXNXaXRob3V0U2Nyb2xsaW5nKHJlZkVsKTtcbiAgICB9XG4gIH07XG4gIG9uTW91bnQoKCkgPT4ge1xuICAgIGlmIChtZXJnZWRQcm9wcy5kZWZlckF1dG9Gb2N1cykge1xuICAgICAgc2V0VGltZW91dCh0cnlBdXRvRm9jdXMsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cnlBdXRvRm9jdXMoKTtcbiAgICB9XG4gIH0pO1xuICBjcmVhdGVFZmZlY3QoXG4gICAgb24oXG4gICAgICBbXG4gICAgICAgIGZpbmFsU2Nyb2xsUmVmLFxuICAgICAgICAoKSA9PiBhY2Nlc3MobWVyZ2VkUHJvcHMuaXNWaXJ0dWFsaXplZCksXG4gICAgICAgICgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy5zZWxlY3Rpb25NYW5hZ2VyKS5mb2N1c2VkS2V5KClcbiAgICAgIF0sXG4gICAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgW3Njcm9sbEVsLCBpc1ZpcnR1YWxpemVkLCBmb2N1c2VkS2V5XSA9IG5ld1ZhbHVlO1xuICAgICAgICBpZiAoaXNWaXJ0dWFsaXplZCkge1xuICAgICAgICAgIGZvY3VzZWRLZXkgJiYgbWVyZ2VkUHJvcHMuc2Nyb2xsVG9LZXk/Lihmb2N1c2VkS2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZm9jdXNlZEtleSAmJiBzY3JvbGxFbCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHNjcm9sbEVsLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgIGBbZGF0YS1rZXk9XCIke2ZvY3VzZWRLZXl9XCJdYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgIHNjcm9sbEludG9WaWV3KHNjcm9sbEVsLCBlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG4gICk7XG4gIGNvbnN0IHRhYkluZGV4ID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgaWYgKGFjY2VzcyhtZXJnZWRQcm9wcy5zaG91bGRVc2VWaXJ0dWFsRm9jdXMpKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdGlvbk1hbmFnZXIpLmZvY3VzZWRLZXkoKSA9PSBudWxsID8gMCA6IC0xO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0YWJJbmRleCxcbiAgICBvbktleURvd24sXG4gICAgb25Nb3VzZURvd24sXG4gICAgb25Gb2N1c0luLFxuICAgIG9uRm9jdXNPdXRcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNlbGVjdGFibGVJdGVtKHByb3BzLCByZWYpIHtcbiAgY29uc3QgbWFuYWdlciA9ICgpID0+IGFjY2Vzcyhwcm9wcy5zZWxlY3Rpb25NYW5hZ2VyKTtcbiAgY29uc3Qga2V5ID0gKCkgPT4gYWNjZXNzKHByb3BzLmtleSk7XG4gIGNvbnN0IHNob3VsZFVzZVZpcnR1YWxGb2N1cyA9ICgpID0+IGFjY2Vzcyhwcm9wcy5zaG91bGRVc2VWaXJ0dWFsRm9jdXMpO1xuICBjb25zdCBvblNlbGVjdCA9IChlMikgPT4ge1xuICAgIGlmIChtYW5hZ2VyKCkuc2VsZWN0aW9uTW9kZSgpID09PSBcIm5vbmVcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobWFuYWdlcigpLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJzaW5nbGVcIikge1xuICAgICAgaWYgKG1hbmFnZXIoKS5pc1NlbGVjdGVkKGtleSgpKSAmJiAhbWFuYWdlcigpLmRpc2FsbG93RW1wdHlTZWxlY3Rpb24oKSkge1xuICAgICAgICBtYW5hZ2VyKCkudG9nZ2xlU2VsZWN0aW9uKGtleSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hbmFnZXIoKS5yZXBsYWNlU2VsZWN0aW9uKGtleSgpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUyPy5zaGlmdEtleSkge1xuICAgICAgbWFuYWdlcigpLmV4dGVuZFNlbGVjdGlvbihrZXkoKSk7XG4gICAgfSBlbHNlIGlmIChtYW5hZ2VyKCkuc2VsZWN0aW9uQmVoYXZpb3IoKSA9PT0gXCJ0b2dnbGVcIiB8fCBpc0N0cmxLZXlQcmVzc2VkKGUyKSB8fCBcInBvaW50ZXJUeXBlXCIgaW4gZTIgJiYgZTIucG9pbnRlclR5cGUgPT09IFwidG91Y2hcIikge1xuICAgICAgbWFuYWdlcigpLnRvZ2dsZVNlbGVjdGlvbihrZXkoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hbmFnZXIoKS5yZXBsYWNlU2VsZWN0aW9uKGtleSgpKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGlzU2VsZWN0ZWQgPSAoKSA9PiBtYW5hZ2VyKCkuaXNTZWxlY3RlZChrZXkoKSk7XG4gIGNvbnN0IGlzRGlzYWJsZWQgPSAoKSA9PiBhY2Nlc3MocHJvcHMuZGlzYWJsZWQpIHx8IG1hbmFnZXIoKS5pc0Rpc2FibGVkKGtleSgpKTtcbiAgY29uc3QgYWxsb3dzU2VsZWN0aW9uID0gKCkgPT4gIWlzRGlzYWJsZWQoKSAmJiBtYW5hZ2VyKCkuY2FuU2VsZWN0SXRlbShrZXkoKSk7XG4gIGxldCBwb2ludGVyRG93blR5cGUgPSBudWxsO1xuICBjb25zdCBvblBvaW50ZXJEb3duID0gKGUyKSA9PiB7XG4gICAgaWYgKCFhbGxvd3NTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwb2ludGVyRG93blR5cGUgPSBlMi5wb2ludGVyVHlwZTtcbiAgICBpZiAoZTIucG9pbnRlclR5cGUgPT09IFwibW91c2VcIiAmJiBlMi5idXR0b24gPT09IDAgJiYgIWFjY2Vzcyhwcm9wcy5zaG91bGRTZWxlY3RPblByZXNzVXApKSB7XG4gICAgICBvblNlbGVjdChlMik7XG4gICAgfVxuICB9O1xuICBjb25zdCBvblBvaW50ZXJVcCA9IChlMikgPT4ge1xuICAgIGlmICghYWxsb3dzU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGUyLnBvaW50ZXJUeXBlID09PSBcIm1vdXNlXCIgJiYgZTIuYnV0dG9uID09PSAwICYmIGFjY2Vzcyhwcm9wcy5zaG91bGRTZWxlY3RPblByZXNzVXApICYmIGFjY2Vzcyhwcm9wcy5hbGxvd3NEaWZmZXJlbnRQcmVzc09yaWdpbikpIHtcbiAgICAgIG9uU2VsZWN0KGUyKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uQ2xpY2sgPSAoZTIpID0+IHtcbiAgICBpZiAoIWFsbG93c1NlbGVjdGlvbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY2Nlc3MocHJvcHMuc2hvdWxkU2VsZWN0T25QcmVzc1VwKSAmJiAhYWNjZXNzKHByb3BzLmFsbG93c0RpZmZlcmVudFByZXNzT3JpZ2luKSB8fCBwb2ludGVyRG93blR5cGUgIT09IFwibW91c2VcIikge1xuICAgICAgb25TZWxlY3QoZTIpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGUyKSA9PiB7XG4gICAgaWYgKCFhbGxvd3NTZWxlY3Rpb24oKSB8fCAhW1wiRW50ZXJcIiwgXCIgXCJdLmluY2x1ZGVzKGUyLmtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzTm9uQ29udGlndW91c1NlbGVjdGlvbk1vZGlmaWVyKGUyKSkge1xuICAgICAgbWFuYWdlcigpLnRvZ2dsZVNlbGVjdGlvbihrZXkoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uU2VsZWN0KGUyKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uTW91c2VEb3duID0gKGUyKSA9PiB7XG4gICAgaWYgKGlzRGlzYWJsZWQoKSkge1xuICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uRm9jdXMgPSAoZTIpID0+IHtcbiAgICBjb25zdCByZWZFbCA9IHJlZigpO1xuICAgIGlmIChzaG91bGRVc2VWaXJ0dWFsRm9jdXMoKSB8fCBpc0Rpc2FibGVkKCkgfHwgIXJlZkVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlMi50YXJnZXQgPT09IHJlZkVsKSB7XG4gICAgICBtYW5hZ2VyKCkuc2V0Rm9jdXNlZEtleShrZXkoKSk7XG4gICAgfVxuICB9O1xuICBjb25zdCB0YWJJbmRleCA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGlmIChzaG91bGRVc2VWaXJ0dWFsRm9jdXMoKSB8fCBpc0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIHJldHVybiBrZXkoKSA9PT0gbWFuYWdlcigpLmZvY3VzZWRLZXkoKSA/IDAgOiAtMTtcbiAgfSk7XG4gIGNvbnN0IGRhdGFLZXkgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWNjZXNzKHByb3BzLnZpcnR1YWxpemVkKSA/IHZvaWQgMCA6IGtleSgpO1xuICB9KTtcbiAgY3JlYXRlRWZmZWN0KFxuICAgIG9uKFxuICAgICAgW1xuICAgICAgICByZWYsXG4gICAgICAgIGtleSxcbiAgICAgICAgc2hvdWxkVXNlVmlydHVhbEZvY3VzLFxuICAgICAgICAoKSA9PiBtYW5hZ2VyKCkuZm9jdXNlZEtleSgpLFxuICAgICAgICAoKSA9PiBtYW5hZ2VyKCkuaXNGb2N1c2VkKClcbiAgICAgIF0sXG4gICAgICAoW3JlZkVsLCBrZXkyLCBzaG91bGRVc2VWaXJ0dWFsRm9jdXMyLCBmb2N1c2VkS2V5LCBpc0ZvY3VzZWRdKSA9PiB7XG4gICAgICAgIGlmIChyZWZFbCAmJiBrZXkyID09PSBmb2N1c2VkS2V5ICYmIGlzRm9jdXNlZCAmJiAhc2hvdWxkVXNlVmlydHVhbEZvY3VzMiAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSByZWZFbCkge1xuICAgICAgICAgIGlmIChwcm9wcy5mb2N1cykge1xuICAgICAgICAgICAgcHJvcHMuZm9jdXMoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9jdXNXaXRob3V0U2Nyb2xsaW5nKHJlZkVsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG4gICk7XG4gIHJldHVybiB7XG4gICAgaXNTZWxlY3RlZCxcbiAgICBpc0Rpc2FibGVkLFxuICAgIGFsbG93c1NlbGVjdGlvbixcbiAgICB0YWJJbmRleCxcbiAgICBkYXRhS2V5LFxuICAgIG9uUG9pbnRlckRvd24sXG4gICAgb25Qb2ludGVyVXAsXG4gICAgb25DbGljayxcbiAgICBvbktleURvd24sXG4gICAgb25Nb3VzZURvd24sXG4gICAgb25Gb2N1c1xuICB9O1xufVxudmFyIFNlbGVjdGlvbk1hbmFnZXIgPSBjbGFzcyB7XG4gIGNvbGxlY3Rpb247XG4gIHN0YXRlO1xuICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uLCBzdGF0ZSkge1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICB9XG4gIC8qKiBUaGUgdHlwZSBvZiBzZWxlY3Rpb24gdGhhdCBpcyBhbGxvd2VkIGluIHRoZSBjb2xsZWN0aW9uLiAqL1xuICBzZWxlY3Rpb25Nb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGlvbk1vZGUoKTtcbiAgfVxuICAvKiogV2hldGhlciB0aGUgY29sbGVjdGlvbiBhbGxvd3MgZW1wdHkgc2VsZWN0aW9uLiAqL1xuICBkaXNhbGxvd0VtcHR5U2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmRpc2FsbG93RW1wdHlTZWxlY3Rpb24oKTtcbiAgfVxuICAvKiogVGhlIHNlbGVjdGlvbiBiZWhhdmlvciBmb3IgdGhlIGNvbGxlY3Rpb24uICovXG4gIHNlbGVjdGlvbkJlaGF2aW9yKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGlvbkJlaGF2aW9yKCk7XG4gIH1cbiAgLyoqIFNldHMgdGhlIHNlbGVjdGlvbiBiZWhhdmlvciBmb3IgdGhlIGNvbGxlY3Rpb24uICovXG4gIHNldFNlbGVjdGlvbkJlaGF2aW9yKHNlbGVjdGlvbkJlaGF2aW9yKSB7XG4gICAgdGhpcy5zdGF0ZS5zZXRTZWxlY3Rpb25CZWhhdmlvcihzZWxlY3Rpb25CZWhhdmlvcik7XG4gIH1cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gaXMgY3VycmVudGx5IGZvY3VzZWQuICovXG4gIGlzRm9jdXNlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc0ZvY3VzZWQoKTtcbiAgfVxuICAvKiogU2V0cyB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGlzIGZvY3VzZWQuICovXG4gIHNldEZvY3VzZWQoaXNGb2N1c2VkKSB7XG4gICAgdGhpcy5zdGF0ZS5zZXRGb2N1c2VkKGlzRm9jdXNlZCk7XG4gIH1cbiAgLyoqIFRoZSBjdXJyZW50IGZvY3VzZWQga2V5IGluIHRoZSBjb2xsZWN0aW9uLiAqL1xuICBmb2N1c2VkS2V5KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmZvY3VzZWRLZXkoKTtcbiAgfVxuICAvKiogU2V0cyB0aGUgZm9jdXNlZCBrZXkuICovXG4gIHNldEZvY3VzZWRLZXkoa2V5KSB7XG4gICAgaWYgKGtleSA9PSBudWxsIHx8IHRoaXMuY29sbGVjdGlvbigpLmdldEl0ZW0oa2V5KSkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRGb2N1c2VkS2V5KGtleSk7XG4gICAgfVxuICB9XG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGtleXMgaW4gdGhlIGNvbGxlY3Rpb24uICovXG4gIHNlbGVjdGVkS2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZEtleXMoKTtcbiAgfVxuICAvKiogUmV0dXJucyB3aGV0aGVyIGEga2V5IGlzIHNlbGVjdGVkLiAqL1xuICBpc1NlbGVjdGVkKGtleSkge1xuICAgIGlmICh0aGlzLnN0YXRlLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJub25lXCIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgcmV0cmlldmVkS2V5ID0gdGhpcy5nZXRLZXkoa2V5KTtcbiAgICBpZiAocmV0cmlldmVkS2V5ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRLZXlzKCkuaGFzKHJldHJpZXZlZEtleSk7XG4gIH1cbiAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBlbXB0eS4gKi9cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZEtleXMoKS5zaXplID09PSAwO1xuICB9XG4gIC8qKiBXaGV0aGVyIGFsbCBpdGVtcyBpbiB0aGUgY29sbGVjdGlvbiBhcmUgc2VsZWN0ZWQuICovXG4gIGlzU2VsZWN0QWxsKCkge1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3RlZEtleXMgPSB0aGlzLnN0YXRlLnNlbGVjdGVkS2V5cygpO1xuICAgIHJldHVybiB0aGlzLmdldEFsbFNlbGVjdGFibGVLZXlzKCkuZXZlcnkoKGspID0+IHNlbGVjdGVkS2V5cy5oYXMoaykpO1xuICB9XG4gIGZpcnN0U2VsZWN0ZWRLZXkoKSB7XG4gICAgbGV0IGZpcnN0O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuc3RhdGUuc2VsZWN0ZWRLZXlzKCkpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRJdGVtKGtleSk7XG4gICAgICBjb25zdCBpc0l0ZW1CZWZvcmVGaXJzdCA9IGl0ZW0/LmluZGV4ICE9IG51bGwgJiYgZmlyc3Q/LmluZGV4ICE9IG51bGwgJiYgaXRlbS5pbmRleCA8IGZpcnN0LmluZGV4O1xuICAgICAgaWYgKCFmaXJzdCB8fCBpc0l0ZW1CZWZvcmVGaXJzdCkge1xuICAgICAgICBmaXJzdCA9IGl0ZW07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmaXJzdD8ua2V5O1xuICB9XG4gIGxhc3RTZWxlY3RlZEtleSgpIHtcbiAgICBsZXQgbGFzdDtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLnN0YXRlLnNlbGVjdGVkS2V5cygpKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbShrZXkpO1xuICAgICAgY29uc3QgaXNJdGVtQWZ0ZXJMYXN0ID0gaXRlbT8uaW5kZXggIT0gbnVsbCAmJiBsYXN0Py5pbmRleCAhPSBudWxsICYmIGl0ZW0uaW5kZXggPiBsYXN0LmluZGV4O1xuICAgICAgaWYgKCFsYXN0IHx8IGlzSXRlbUFmdGVyTGFzdCkge1xuICAgICAgICBsYXN0ID0gaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxhc3Q/LmtleTtcbiAgfVxuICAvKiogRXh0ZW5kcyB0aGUgc2VsZWN0aW9uIHRvIHRoZSBnaXZlbiBrZXkuICovXG4gIGV4dGVuZFNlbGVjdGlvbih0b0tleSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJub25lXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSgpID09PSBcInNpbmdsZVwiKSB7XG4gICAgICB0aGlzLnJlcGxhY2VTZWxlY3Rpb24odG9LZXkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXRyaWV2ZWRUb0tleSA9IHRoaXMuZ2V0S2V5KHRvS2V5KTtcbiAgICBpZiAocmV0cmlldmVkVG9LZXkgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3RlZEtleXMgPSB0aGlzLnN0YXRlLnNlbGVjdGVkS2V5cygpO1xuICAgIGNvbnN0IGFuY2hvcktleSA9IHNlbGVjdGVkS2V5cy5hbmNob3JLZXkgfHwgcmV0cmlldmVkVG9LZXk7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbihzZWxlY3RlZEtleXMsIGFuY2hvcktleSwgcmV0cmlldmVkVG9LZXkpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuZ2V0S2V5UmFuZ2UoXG4gICAgICBhbmNob3JLZXksXG4gICAgICBzZWxlY3RlZEtleXMuY3VycmVudEtleSB8fCByZXRyaWV2ZWRUb0tleVxuICAgICkpIHtcbiAgICAgIHNlbGVjdGlvbi5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5nZXRLZXlSYW5nZShyZXRyaWV2ZWRUb0tleSwgYW5jaG9yS2V5KSkge1xuICAgICAgaWYgKHRoaXMuY2FuU2VsZWN0SXRlbShrZXkpKSB7XG4gICAgICAgIHNlbGVjdGlvbi5hZGQoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zdGF0ZS5zZXRTZWxlY3RlZEtleXMoc2VsZWN0aW9uKTtcbiAgfVxuICBnZXRLZXlSYW5nZShmcm9tLCB0bykge1xuICAgIGNvbnN0IGZyb21JdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbShmcm9tKTtcbiAgICBjb25zdCB0b0l0ZW0gPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRJdGVtKHRvKTtcbiAgICBpZiAoZnJvbUl0ZW0gJiYgdG9JdGVtKSB7XG4gICAgICBpZiAoZnJvbUl0ZW0uaW5kZXggIT0gbnVsbCAmJiB0b0l0ZW0uaW5kZXggIT0gbnVsbCAmJiBmcm9tSXRlbS5pbmRleCA8PSB0b0l0ZW0uaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0S2V5UmFuZ2VJbnRlcm5hbChmcm9tLCB0byk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nZXRLZXlSYW5nZUludGVybmFsKHRvLCBmcm9tKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGdldEtleVJhbmdlSW50ZXJuYWwoZnJvbSwgdG8pIHtcbiAgICBjb25zdCBrZXlzMiA9IFtdO1xuICAgIGxldCBrZXkgPSBmcm9tO1xuICAgIHdoaWxlIChrZXkgIT0gbnVsbCkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEl0ZW0oa2V5KTtcbiAgICAgIGlmIChpdGVtICYmIGl0ZW0udHlwZSA9PT0gXCJpdGVtXCIpIHtcbiAgICAgICAga2V5czIucHVzaChrZXkpO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gdG8pIHtcbiAgICAgICAgcmV0dXJuIGtleXMyO1xuICAgICAgfVxuICAgICAga2V5ID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0S2V5QWZ0ZXIoa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGdldEtleShrZXkpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbShrZXkpO1xuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0udHlwZSAhPT0gXCJpdGVtXCIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbS5rZXk7XG4gIH1cbiAgLyoqIFRvZ2dsZXMgd2hldGhlciB0aGUgZ2l2ZW4ga2V5IGlzIHNlbGVjdGVkLiAqL1xuICB0b2dnbGVTZWxlY3Rpb24oa2V5KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSgpID09PSBcIm5vbmVcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKCkgPT09IFwic2luZ2xlXCIgJiYgIXRoaXMuaXNTZWxlY3RlZChrZXkpKSB7XG4gICAgICB0aGlzLnJlcGxhY2VTZWxlY3Rpb24oa2V5KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmV0cmlldmVkS2V5ID0gdGhpcy5nZXRLZXkoa2V5KTtcbiAgICBpZiAocmV0cmlldmVkS2V5ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qga2V5czIgPSBuZXcgU2VsZWN0aW9uKHRoaXMuc3RhdGUuc2VsZWN0ZWRLZXlzKCkpO1xuICAgIGlmIChrZXlzMi5oYXMocmV0cmlldmVkS2V5KSkge1xuICAgICAga2V5czIuZGVsZXRlKHJldHJpZXZlZEtleSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNhblNlbGVjdEl0ZW0ocmV0cmlldmVkS2V5KSkge1xuICAgICAga2V5czIuYWRkKHJldHJpZXZlZEtleSk7XG4gICAgICBrZXlzMi5hbmNob3JLZXkgPSByZXRyaWV2ZWRLZXk7XG4gICAgICBrZXlzMi5jdXJyZW50S2V5ID0gcmV0cmlldmVkS2V5O1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXNhbGxvd0VtcHR5U2VsZWN0aW9uKCkgJiYga2V5czIuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlLnNldFNlbGVjdGVkS2V5cyhrZXlzMik7XG4gIH1cbiAgLyoqIFJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gd2l0aCBvbmx5IHRoZSBnaXZlbiBrZXkuICovXG4gIHJlcGxhY2VTZWxlY3Rpb24oa2V5KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSgpID09PSBcIm5vbmVcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXRyaWV2ZWRLZXkgPSB0aGlzLmdldEtleShrZXkpO1xuICAgIGlmIChyZXRyaWV2ZWRLZXkgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmNhblNlbGVjdEl0ZW0ocmV0cmlldmVkS2V5KSA/IG5ldyBTZWxlY3Rpb24oW3JldHJpZXZlZEtleV0sIHJldHJpZXZlZEtleSwgcmV0cmlldmVkS2V5KSA6IG5ldyBTZWxlY3Rpb24oKTtcbiAgICB0aGlzLnN0YXRlLnNldFNlbGVjdGVkS2V5cyhzZWxlY3Rpb24pO1xuICB9XG4gIC8qKiBSZXBsYWNlcyB0aGUgc2VsZWN0aW9uIHdpdGggdGhlIGdpdmVuIGtleXMuICovXG4gIHNldFNlbGVjdGVkS2V5cyhrZXlzMikge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJub25lXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbigpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMyKSB7XG4gICAgICBjb25zdCByZXRyaWV2ZWRLZXkgPSB0aGlzLmdldEtleShrZXkpO1xuICAgICAgaWYgKHJldHJpZXZlZEtleSAhPSBudWxsKSB7XG4gICAgICAgIHNlbGVjdGlvbi5hZGQocmV0cmlldmVkS2V5KTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSgpID09PSBcInNpbmdsZVwiKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zdGF0ZS5zZXRTZWxlY3RlZEtleXMoc2VsZWN0aW9uKTtcbiAgfVxuICAvKiogU2VsZWN0cyBhbGwgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24uICovXG4gIHNlbGVjdEFsbCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKCkgPT09IFwibXVsdGlwbGVcIikge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRTZWxlY3RlZEtleXMobmV3IFNldCh0aGlzLmdldEFsbFNlbGVjdGFibGVLZXlzKCkpKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGtleXMgZnJvbSB0aGUgc2VsZWN0aW9uLlxuICAgKi9cbiAgY2xlYXJTZWxlY3Rpb24oKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRLZXlzID0gdGhpcy5zdGF0ZS5zZWxlY3RlZEtleXMoKTtcbiAgICBpZiAoIXRoaXMuZGlzYWxsb3dFbXB0eVNlbGVjdGlvbigpICYmIHNlbGVjdGVkS2V5cy5zaXplID4gMCkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXRTZWxlY3RlZEtleXMobmV3IFNlbGVjdGlvbigpKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFRvZ2dsZXMgYmV0d2VlbiBzZWxlY3QgYWxsIGFuZCBhbiBlbXB0eSBzZWxlY3Rpb24uXG4gICAqL1xuICB0b2dnbGVTZWxlY3RBbGwoKSB7XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RBbGwoKSkge1xuICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCgpO1xuICAgIH1cbiAgfVxuICBzZWxlY3Qoa2V5LCBlMikge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJub25lXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSgpID09PSBcInNpbmdsZVwiKSB7XG4gICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKGtleSkgJiYgIXRoaXMuZGlzYWxsb3dFbXB0eVNlbGVjdGlvbigpKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlcGxhY2VTZWxlY3Rpb24oa2V5KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uQmVoYXZpb3IoKSA9PT0gXCJ0b2dnbGVcIiB8fCBlMiAmJiBlMi5wb2ludGVyVHlwZSA9PT0gXCJ0b3VjaFwiKSB7XG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbihrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlcGxhY2VTZWxlY3Rpb24oa2V5KTtcbiAgICB9XG4gIH1cbiAgLyoqIFJldHVybnMgd2hldGhlciB0aGUgY3VycmVudCBzZWxlY3Rpb24gaXMgZXF1YWwgdG8gdGhlIGdpdmVuIHNlbGVjdGlvbi4gKi9cbiAgaXNTZWxlY3Rpb25FcXVhbChzZWxlY3Rpb24pIHtcbiAgICBpZiAoc2VsZWN0aW9uID09PSB0aGlzLnN0YXRlLnNlbGVjdGVkS2V5cygpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRLZXlzID0gdGhpcy5zZWxlY3RlZEtleXMoKTtcbiAgICBpZiAoc2VsZWN0aW9uLnNpemUgIT09IHNlbGVjdGVkS2V5cy5zaXplKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIHNlbGVjdGlvbikge1xuICAgICAgaWYgKCFzZWxlY3RlZEtleXMuaGFzKGtleSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzZWxlY3RlZEtleXMpIHtcbiAgICAgIGlmICghc2VsZWN0aW9uLmhhcyhrZXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY2FuU2VsZWN0SXRlbShrZXkpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5zZWxlY3Rpb25Nb2RlKCkgPT09IFwibm9uZVwiKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRJdGVtKGtleSk7XG4gICAgcmV0dXJuIGl0ZW0gIT0gbnVsbCAmJiAhaXRlbS5kaXNhYmxlZDtcbiAgfVxuICBpc0Rpc2FibGVkKGtleSkge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRJdGVtKGtleSk7XG4gICAgcmV0dXJuICFpdGVtIHx8IGl0ZW0uZGlzYWJsZWQ7XG4gIH1cbiAgZ2V0QWxsU2VsZWN0YWJsZUtleXMoKSB7XG4gICAgY29uc3Qga2V5czIgPSBbXTtcbiAgICBjb25zdCBhZGRLZXlzID0gKGtleSkgPT4ge1xuICAgICAgd2hpbGUgKGtleSAhPSBudWxsKSB7XG4gICAgICAgIGlmICh0aGlzLmNhblNlbGVjdEl0ZW0oa2V5KSkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRJdGVtKGtleSk7XG4gICAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJpdGVtXCIpIHtcbiAgICAgICAgICAgIGtleXMyLnB1c2goa2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAga2V5ID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0S2V5QWZ0ZXIoa2V5KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGFkZEtleXModGhpcy5jb2xsZWN0aW9uKCkuZ2V0Rmlyc3RLZXkoKSk7XG4gICAgcmV0dXJuIGtleXMyO1xuICB9XG59O1xudmFyIExpc3RDb2xsZWN0aW9uID0gY2xhc3Mge1xuICBrZXlNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBpdGVyYWJsZTtcbiAgZmlyc3RLZXk7XG4gIGxhc3RLZXk7XG4gIGNvbnN0cnVjdG9yKG5vZGVzKSB7XG4gICAgdGhpcy5pdGVyYWJsZSA9IG5vZGVzO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgdGhpcy5rZXlNYXAuc2V0KG5vZGUua2V5LCBub2RlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMua2V5TWFwLnNpemUgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGxhc3Q7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBmb3IgKGNvbnN0IFtrZXksIG5vZGVdIG9mIHRoaXMua2V5TWFwKSB7XG4gICAgICBpZiAobGFzdCkge1xuICAgICAgICBsYXN0Lm5leHRLZXkgPSBrZXk7XG4gICAgICAgIG5vZGUucHJldktleSA9IGxhc3Qua2V5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maXJzdEtleSA9IGtleTtcbiAgICAgICAgbm9kZS5wcmV2S2V5ID0gdm9pZCAwO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gXCJpdGVtXCIpIHtcbiAgICAgICAgbm9kZS5pbmRleCA9IGluZGV4Kys7XG4gICAgICB9XG4gICAgICBsYXN0ID0gbm9kZTtcbiAgICAgIGxhc3QubmV4dEtleSA9IHZvaWQgMDtcbiAgICB9XG4gICAgdGhpcy5sYXN0S2V5ID0gbGFzdC5rZXk7XG4gIH1cbiAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgIHlpZWxkKiB0aGlzLml0ZXJhYmxlO1xuICB9XG4gIGdldFNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5TWFwLnNpemU7XG4gIH1cbiAgZ2V0S2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlNYXAua2V5cygpO1xuICB9XG4gIGdldEtleUJlZm9yZShrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlNYXAuZ2V0KGtleSk/LnByZXZLZXk7XG4gIH1cbiAgZ2V0S2V5QWZ0ZXIoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMua2V5TWFwLmdldChrZXkpPy5uZXh0S2V5O1xuICB9XG4gIGdldEZpcnN0S2V5KCkge1xuICAgIHJldHVybiB0aGlzLmZpcnN0S2V5O1xuICB9XG4gIGdldExhc3RLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFzdEtleTtcbiAgfVxuICBnZXRJdGVtKGtleSkge1xuICAgIHJldHVybiB0aGlzLmtleU1hcC5nZXQoa2V5KTtcbiAgfVxuICBhdChpZHgpIHtcbiAgICBjb25zdCBrZXlzMiA9IFsuLi50aGlzLmdldEtleXMoKV07XG4gICAgcmV0dXJuIHRoaXMuZ2V0SXRlbShrZXlzMltpZHhdKTtcbiAgfVxufTtcbmZ1bmN0aW9uIGNyZWF0ZUxpc3RTdGF0ZShwcm9wcykge1xuICBjb25zdCBzZWxlY3Rpb25TdGF0ZSA9IGNyZWF0ZU11bHRpcGxlU2VsZWN0aW9uU3RhdGUocHJvcHMpO1xuICBjb25zdCBmYWN0b3J5ID0gKG5vZGVzKSA9PiB7XG4gICAgcmV0dXJuIHByb3BzLmZpbHRlciA/IG5ldyBMaXN0Q29sbGVjdGlvbihwcm9wcy5maWx0ZXIobm9kZXMpKSA6IG5ldyBMaXN0Q29sbGVjdGlvbihub2Rlcyk7XG4gIH07XG4gIGNvbnN0IGNvbGxlY3Rpb24gPSBjcmVhdGVDb2xsZWN0aW9uKFxuICAgIHtcbiAgICAgIGRhdGFTb3VyY2U6ICgpID0+IGFjY2Vzcyhwcm9wcy5kYXRhU291cmNlKSxcbiAgICAgIGdldEtleTogKCkgPT4gYWNjZXNzKHByb3BzLmdldEtleSksXG4gICAgICBnZXRUZXh0VmFsdWU6ICgpID0+IGFjY2Vzcyhwcm9wcy5nZXRUZXh0VmFsdWUpLFxuICAgICAgZ2V0RGlzYWJsZWQ6ICgpID0+IGFjY2Vzcyhwcm9wcy5nZXREaXNhYmxlZCksXG4gICAgICBnZXRTZWN0aW9uQ2hpbGRyZW46ICgpID0+IGFjY2Vzcyhwcm9wcy5nZXRTZWN0aW9uQ2hpbGRyZW4pLFxuICAgICAgZmFjdG9yeVxuICAgIH0sXG4gICAgWygpID0+IHByb3BzLmZpbHRlcl1cbiAgKTtcbiAgY29uc3Qgc2VsZWN0aW9uTWFuYWdlciA9IG5ldyBTZWxlY3Rpb25NYW5hZ2VyKGNvbGxlY3Rpb24sIHNlbGVjdGlvblN0YXRlKTtcbiAgY3JlYXRlQ29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGZvY3VzZWRLZXkgPSBzZWxlY3Rpb25TdGF0ZS5mb2N1c2VkS2V5KCk7XG4gICAgaWYgKGZvY3VzZWRLZXkgIT0gbnVsbCAmJiAhY29sbGVjdGlvbigpLmdldEl0ZW0oZm9jdXNlZEtleSkpIHtcbiAgICAgIHNlbGVjdGlvblN0YXRlLnNldEZvY3VzZWRLZXkodm9pZCAwKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNvbGxlY3Rpb24sXG4gICAgc2VsZWN0aW9uTWFuYWdlcjogKCkgPT4gc2VsZWN0aW9uTWFuYWdlclxuICB9O1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGNvcnZ1K3V0aWxzQDAuMy4yX3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9AY29ydnUvdXRpbHMvZGlzdC9jaHVuay9aVjZHMjVUVC5qc1xudmFyIGFjY2VzczIgPSAodikgPT4gdHlwZW9mIHYgPT09IFwiZnVuY3Rpb25cIiA/IHYoKSA6IHY7XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zb2xpZC1wcmVzZW5jZUAwLjEuN19zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvc29saWQtcHJlc2VuY2UvZGlzdC9pbmRleC5qc1xudmFyIGNyZWF0ZVByZXNlbmNlID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHJlZlN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhY2Nlc3MyKHByb3BzLmVsZW1lbnQpO1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuO1xuICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICB9KTtcbiAgY29uc3QgZ2V0QW5pbWF0aW9uTmFtZSA9ICgpID0+IHtcbiAgICByZXR1cm4gcmVmU3R5bGVzKCk/LmFuaW1hdGlvbk5hbWUgPz8gXCJub25lXCI7XG4gIH07XG4gIGNvbnN0IFtwcmVzZW50U3RhdGUsIHNldFByZXNlbnRTdGF0ZV0gPSBjcmVhdGVTaWduYWwoYWNjZXNzMihwcm9wcy5zaG93KSA/IFwicHJlc2VudFwiIDogXCJoaWRkZW5cIik7XG4gIGxldCBhbmltYXRpb25OYW1lID0gXCJub25lXCI7XG4gIGNyZWF0ZUVmZmVjdCgocHJldlNob3cpID0+IHtcbiAgICBjb25zdCBzaG93ID0gYWNjZXNzMihwcm9wcy5zaG93KTtcbiAgICB1bnRyYWNrKCgpID0+IHtcbiAgICAgIGlmIChwcmV2U2hvdyA9PT0gc2hvdykgcmV0dXJuIHNob3c7XG4gICAgICBjb25zdCBwcmV2QW5pbWF0aW9uTmFtZSA9IGFuaW1hdGlvbk5hbWU7XG4gICAgICBjb25zdCBjdXJyZW50QW5pbWF0aW9uTmFtZSA9IGdldEFuaW1hdGlvbk5hbWUoKTtcbiAgICAgIGlmIChzaG93KSB7XG4gICAgICAgIHNldFByZXNlbnRTdGF0ZShcInByZXNlbnRcIik7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRBbmltYXRpb25OYW1lID09PSBcIm5vbmVcIiB8fCByZWZTdHlsZXMoKT8uZGlzcGxheSA9PT0gXCJub25lXCIpIHtcbiAgICAgICAgc2V0UHJlc2VudFN0YXRlKFwiaGlkZGVuXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXNBbmltYXRpbmcgPSBwcmV2QW5pbWF0aW9uTmFtZSAhPT0gY3VycmVudEFuaW1hdGlvbk5hbWU7XG4gICAgICAgIGlmIChwcmV2U2hvdyA9PT0gdHJ1ZSAmJiBpc0FuaW1hdGluZykge1xuICAgICAgICAgIHNldFByZXNlbnRTdGF0ZShcImhpZGluZ1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRQcmVzZW50U3RhdGUoXCJoaWRkZW5cIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc2hvdztcbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFjY2VzczIocHJvcHMuZWxlbWVudCk7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm47XG4gICAgY29uc3QgaGFuZGxlQW5pbWF0aW9uU3RhcnQgPSAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC50YXJnZXQgPT09IGVsZW1lbnQpIHtcbiAgICAgICAgYW5pbWF0aW9uTmFtZSA9IGdldEFuaW1hdGlvbk5hbWUoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUFuaW1hdGlvbkVuZCA9IChldmVudCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSBnZXRBbmltYXRpb25OYW1lKCk7XG4gICAgICBjb25zdCBpc0N1cnJlbnRBbmltYXRpb24gPSBjdXJyZW50QW5pbWF0aW9uTmFtZS5pbmNsdWRlcyhcbiAgICAgICAgZXZlbnQuYW5pbWF0aW9uTmFtZVxuICAgICAgKTtcbiAgICAgIGlmIChldmVudC50YXJnZXQgPT09IGVsZW1lbnQgJiYgaXNDdXJyZW50QW5pbWF0aW9uICYmIHByZXNlbnRTdGF0ZSgpID09PSBcImhpZGluZ1wiKSB7XG4gICAgICAgIHNldFByZXNlbnRTdGF0ZShcImhpZGRlblwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImFuaW1hdGlvbnN0YXJ0XCIsIGhhbmRsZUFuaW1hdGlvblN0YXJ0KTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25jYW5jZWxcIiwgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25lbmRcIiwgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiYW5pbWF0aW9uc3RhcnRcIiwgaGFuZGxlQW5pbWF0aW9uU3RhcnQpO1xuICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiYW5pbWF0aW9uY2FuY2VsXCIsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25lbmRcIiwgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgcHJlc2VudDogKCkgPT4gcHJlc2VudFN0YXRlKCkgPT09IFwicHJlc2VudFwiIHx8IHByZXNlbnRTdGF0ZSgpID09PSBcImhpZGluZ1wiLFxuICAgIHN0YXRlOiBwcmVzZW50U3RhdGVcbiAgfTtcbn07XG52YXIgcHJlc2VuY2VfZGVmYXVsdCA9IGNyZWF0ZVByZXNlbmNlO1xudmFyIHNyY19kZWZhdWx0ID0gcHJlc2VuY2VfZGVmYXVsdDtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvWktZRERITTYuanNcbnZhciBEQVRBX1RPUF9MQVlFUl9BVFRSID0gXCJkYXRhLWtiLXRvcC1sYXllclwiO1xudmFyIG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM7XG52YXIgaGFzRGlzYWJsZWRCb2R5UG9pbnRlckV2ZW50cyA9IGZhbHNlO1xudmFyIGxheWVycyA9IFtdO1xuZnVuY3Rpb24gaW5kZXhPZihub2RlKSB7XG4gIHJldHVybiBsYXllcnMuZmluZEluZGV4KChsYXllcikgPT4gbGF5ZXIubm9kZSA9PT0gbm9kZSk7XG59XG5mdW5jdGlvbiBmaW5kKG5vZGUpIHtcbiAgcmV0dXJuIGxheWVyc1tpbmRleE9mKG5vZGUpXTtcbn1cbmZ1bmN0aW9uIGlzVG9wTW9zdExheWVyKG5vZGUpIHtcbiAgcmV0dXJuIGxheWVyc1tsYXllcnMubGVuZ3RoIC0gMV0ubm9kZSA9PT0gbm9kZTtcbn1cbmZ1bmN0aW9uIGdldFBvaW50ZXJCbG9ja2luZ0xheWVycygpIHtcbiAgcmV0dXJuIGxheWVycy5maWx0ZXIoKGxheWVyKSA9PiBsYXllci5pc1BvaW50ZXJCbG9ja2luZyk7XG59XG5mdW5jdGlvbiBnZXRUb3BNb3N0UG9pbnRlckJsb2NraW5nTGF5ZXIoKSB7XG4gIHJldHVybiBbLi4uZ2V0UG9pbnRlckJsb2NraW5nTGF5ZXJzKCldLnNsaWNlKC0xKVswXTtcbn1cbmZ1bmN0aW9uIGhhc1BvaW50ZXJCbG9ja2luZ0xheWVyKCkge1xuICByZXR1cm4gZ2V0UG9pbnRlckJsb2NraW5nTGF5ZXJzKCkubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIGlzQmVsb3dQb2ludGVyQmxvY2tpbmdMYXllcihub2RlKSB7XG4gIGNvbnN0IGhpZ2hlc3RCbG9ja2luZ0luZGV4ID0gaW5kZXhPZihnZXRUb3BNb3N0UG9pbnRlckJsb2NraW5nTGF5ZXIoKT8ubm9kZSk7XG4gIHJldHVybiBpbmRleE9mKG5vZGUpIDwgaGlnaGVzdEJsb2NraW5nSW5kZXg7XG59XG5mdW5jdGlvbiBhZGRMYXllcihsYXllcikge1xuICBsYXllcnMucHVzaChsYXllcik7XG59XG5mdW5jdGlvbiByZW1vdmVMYXllcihub2RlKSB7XG4gIGNvbnN0IGluZGV4ID0gaW5kZXhPZihub2RlKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybjtcbiAgfVxuICBsYXllcnMuc3BsaWNlKGluZGV4LCAxKTtcbn1cbmZ1bmN0aW9uIGFzc2lnblBvaW50ZXJFdmVudFRvTGF5ZXJzKCkge1xuICBmb3IgKGNvbnN0IHtcbiAgICBub2RlXG4gIH0gb2YgbGF5ZXJzKSB7XG4gICAgbm9kZS5zdHlsZS5wb2ludGVyRXZlbnRzID0gaXNCZWxvd1BvaW50ZXJCbG9ja2luZ0xheWVyKG5vZGUpID8gXCJub25lXCIgOiBcImF1dG9cIjtcbiAgfVxufVxuZnVuY3Rpb24gZGlzYWJsZUJvZHlQb2ludGVyRXZlbnRzKG5vZGUpIHtcbiAgaWYgKGhhc1BvaW50ZXJCbG9ja2luZ0xheWVyKCkgJiYgIWhhc0Rpc2FibGVkQm9keVBvaW50ZXJFdmVudHMpIHtcbiAgICBjb25zdCBvd25lckRvY3VtZW50ID0gZ2V0RG9jdW1lbnQobm9kZSk7XG4gICAgb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cyA9IGRvY3VtZW50LmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cztcbiAgICBvd25lckRvY3VtZW50LmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwibm9uZVwiO1xuICAgIGhhc0Rpc2FibGVkQm9keVBvaW50ZXJFdmVudHMgPSB0cnVlO1xuICB9XG59XG5mdW5jdGlvbiByZXN0b3JlQm9keVBvaW50ZXJFdmVudHMobm9kZSkge1xuICBpZiAoaGFzUG9pbnRlckJsb2NraW5nTGF5ZXIoKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBvd25lckRvY3VtZW50ID0gZ2V0RG9jdW1lbnQobm9kZSk7XG4gIG93bmVyRG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cztcbiAgaWYgKG93bmVyRG9jdW1lbnQuYm9keS5zdHlsZS5sZW5ndGggPT09IDApIHtcbiAgICBvd25lckRvY3VtZW50LmJvZHkucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIik7XG4gIH1cbiAgaGFzRGlzYWJsZWRCb2R5UG9pbnRlckV2ZW50cyA9IGZhbHNlO1xufVxudmFyIGxheWVyU3RhY2sgPSB7XG4gIGxheWVycyxcbiAgaXNUb3BNb3N0TGF5ZXIsXG4gIGhhc1BvaW50ZXJCbG9ja2luZ0xheWVyLFxuICBpc0JlbG93UG9pbnRlckJsb2NraW5nTGF5ZXIsXG4gIGFkZExheWVyLFxuICByZW1vdmVMYXllcixcbiAgaW5kZXhPZixcbiAgZmluZCxcbiAgYXNzaWduUG9pbnRlckV2ZW50VG9MYXllcnMsXG4gIGRpc2FibGVCb2R5UG9pbnRlckV2ZW50cyxcbiAgcmVzdG9yZUJvZHlQb2ludGVyRXZlbnRzXG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay83T1ZLWFlQVS5qc1xudmFyIGJ1dHRvbl9leHBvcnRzID0ge307XG5fX2V4cG9ydChidXR0b25fZXhwb3J0cywge1xuICBCdXR0b246ICgpID0+IEJ1dHRvbixcbiAgUm9vdDogKCkgPT4gQnV0dG9uUm9vdFxufSk7XG52YXIgQlVUVE9OX0lOUFVUX1RZUEVTID0gW1xuICBcImJ1dHRvblwiLFxuICBcImNvbG9yXCIsXG4gIFwiZmlsZVwiLFxuICBcImltYWdlXCIsXG4gIFwicmVzZXRcIixcbiAgXCJzdWJtaXRcIlxuXTtcbmZ1bmN0aW9uIGlzQnV0dG9uKGVsZW1lbnQpIHtcbiAgY29uc3QgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICBpZiAodGFnTmFtZSA9PT0gXCJidXR0b25cIikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0YWdOYW1lID09PSBcImlucHV0XCIgJiYgZWxlbWVudC50eXBlKSB7XG4gICAgcmV0dXJuIEJVVFRPTl9JTlBVVF9UWVBFUy5pbmRleE9mKGVsZW1lbnQudHlwZSkgIT09IC0xO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIEJ1dHRvblJvb3QocHJvcHMpIHtcbiAgbGV0IHJlZjtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgdHlwZTogXCJidXR0b25cIlxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcInJlZlwiLCBcInR5cGVcIiwgXCJkaXNhYmxlZFwiXSk7XG4gIGNvbnN0IHRhZ05hbWUgPSBjcmVhdGVUYWdOYW1lKCgpID0+IHJlZiwgKCkgPT4gXCJidXR0b25cIik7XG4gIGNvbnN0IGlzTmF0aXZlQnV0dG9uID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudFRhZ05hbWUgPSB0YWdOYW1lKCk7XG4gICAgaWYgKGVsZW1lbnRUYWdOYW1lID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzQnV0dG9uKHtcbiAgICAgIHRhZ05hbWU6IGVsZW1lbnRUYWdOYW1lLFxuICAgICAgdHlwZTogbG9jYWwudHlwZVxuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgaXNOYXRpdmVJbnB1dCA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0YWdOYW1lKCkgPT09IFwiaW5wdXRcIjtcbiAgfSk7XG4gIGNvbnN0IGlzTmF0aXZlTGluayA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0YWdOYW1lKCkgPT09IFwiYVwiICYmIHJlZj8uZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSAhPSBudWxsO1xuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgcmVmKHIkKSB7XG4gICAgICBjb25zdCBfcmVmJCA9IG1lcmdlUmVmcygoZWwpID0+IHJlZiA9IGVsLCBsb2NhbC5yZWYpO1xuICAgICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgJiYgX3JlZiQociQpO1xuICAgIH0sXG4gICAgZ2V0IHR5cGUoKSB7XG4gICAgICByZXR1cm4gaXNOYXRpdmVCdXR0b24oKSB8fCBpc05hdGl2ZUlucHV0KCkgPyBsb2NhbC50eXBlIDogdm9pZCAwO1xuICAgIH0sXG4gICAgZ2V0IHJvbGUoKSB7XG4gICAgICByZXR1cm4gIWlzTmF0aXZlQnV0dG9uKCkgJiYgIWlzTmF0aXZlTGluaygpID8gXCJidXR0b25cIiA6IHZvaWQgMDtcbiAgICB9LFxuICAgIGdldCB0YWJJbmRleCgpIHtcbiAgICAgIHJldHVybiAhaXNOYXRpdmVCdXR0b24oKSAmJiAhaXNOYXRpdmVMaW5rKCkgJiYgIWxvY2FsLmRpc2FibGVkID8gMCA6IHZvaWQgMDtcbiAgICB9LFxuICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiBpc05hdGl2ZUJ1dHRvbigpIHx8IGlzTmF0aXZlSW5wdXQoKSA/IGxvY2FsLmRpc2FibGVkIDogdm9pZCAwO1xuICAgIH0sXG4gICAgZ2V0IFtcImFyaWEtZGlzYWJsZWRcIl0oKSB7XG4gICAgICByZXR1cm4gIWlzTmF0aXZlQnV0dG9uKCkgJiYgIWlzTmF0aXZlSW5wdXQoKSAmJiBsb2NhbC5kaXNhYmxlZCA/IHRydWUgOiB2b2lkIDA7XG4gICAgfSxcbiAgICBnZXQgW1wiZGF0YS1kaXNhYmxlZFwiXSgpIHtcbiAgICAgIHJldHVybiBsb2NhbC5kaXNhYmxlZCA/IFwiXCIgOiB2b2lkIDA7XG4gICAgfVxuICB9LCBvdGhlcnMpKTtcbn1cbnZhciBCdXR0b24gPSBCdXR0b25Sb290O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGZsb2F0aW5nLXVpK3V0aWxzQDAuMi41L25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5tanNcbnZhciBzaWRlcyA9IFtcInRvcFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwibGVmdFwiXTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciByb3VuZCA9IE1hdGgucm91bmQ7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIGNyZWF0ZUNvb3JkcyA9ICh2KSA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbnZhciBvcHBvc2l0ZVNpZGVNYXAgPSB7XG4gIGxlZnQ6IFwicmlnaHRcIixcbiAgcmlnaHQ6IFwibGVmdFwiLFxuICBib3R0b206IFwidG9wXCIsXG4gIHRvcDogXCJib3R0b21cIlxufTtcbnZhciBvcHBvc2l0ZUFsaWdubWVudE1hcCA9IHtcbiAgc3RhcnQ6IFwiZW5kXCIsXG4gIGVuZDogXCJzdGFydFwiXG59O1xuZnVuY3Rpb24gY2xhbXAyKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gdmFsdWUocGFyYW0pIDogdmFsdWU7XG59XG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KFwiLVwiKVswXTtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdChcIi1cIilbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gXCJ4XCIgPyBcInlcIiA6IFwieFwiO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSBcInlcIiA/IFwiaGVpZ2h0XCIgOiBcIndpZHRoXCI7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFtcInRvcFwiLCBcImJvdHRvbVwiXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpID8gXCJ5XCIgOiBcInhcIjtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBnZXRPcHBvc2l0ZUF4aXMoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSk7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGxldCBtYWluQWxpZ25tZW50U2lkZSA9IGFsaWdubWVudEF4aXMgPT09IFwieFwiID8gYWxpZ25tZW50ID09PSAocnRsID8gXCJlbmRcIiA6IFwic3RhcnRcIikgPyBcInJpZ2h0XCIgOiBcImxlZnRcIiA6IGFsaWdubWVudCA9PT0gXCJzdGFydFwiID8gXCJib3R0b21cIiA6IFwidG9wXCI7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgKGFsaWdubWVudCkgPT4gb3Bwb3NpdGVBbGlnbm1lbnRNYXBbYWxpZ25tZW50XSk7XG59XG5mdW5jdGlvbiBnZXRTaWRlTGlzdChzaWRlLCBpc1N0YXJ0LCBydGwpIHtcbiAgY29uc3QgbHIgPSBbXCJsZWZ0XCIsIFwicmlnaHRcIl07XG4gIGNvbnN0IHJsID0gW1wicmlnaHRcIiwgXCJsZWZ0XCJdO1xuICBjb25zdCB0YiA9IFtcInRvcFwiLCBcImJvdHRvbVwiXTtcbiAgY29uc3QgYnQgPSBbXCJib3R0b21cIiwgXCJ0b3BcIl07XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgXCJ0b3BcIjpcbiAgICBjYXNlIFwiYm90dG9tXCI6XG4gICAgICBpZiAocnRsKSByZXR1cm4gaXNTdGFydCA/IHJsIDogbHI7XG4gICAgICByZXR1cm4gaXNTdGFydCA/IGxyIDogcmw7XG4gICAgY2FzZSBcImxlZnRcIjpcbiAgICBjYXNlIFwicmlnaHRcIjpcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gdGIgOiBidDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKHBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZGlyZWN0aW9uLCBydGwpIHtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGxldCBsaXN0ID0gZ2V0U2lkZUxpc3QoZ2V0U2lkZShwbGFjZW1lbnQpLCBkaXJlY3Rpb24gPT09IFwic3RhcnRcIiwgcnRsKTtcbiAgaWYgKGFsaWdubWVudCkge1xuICAgIGxpc3QgPSBsaXN0Lm1hcCgoc2lkZSkgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIChzaWRlKSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuZnVuY3Rpb24gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIC4uLnBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09IFwibnVtYmVyXCIgPyBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIDoge1xuICAgIHRvcDogcGFkZGluZyxcbiAgICByaWdodDogcGFkZGluZyxcbiAgICBib3R0b206IHBhZGRpbmcsXG4gICAgbGVmdDogcGFkZGluZ1xuICB9O1xufVxuZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSByZWN0O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgbGVmdDogeCxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmbG9hdGluZy11aStjb3JlQDEuNi41L25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvY29yZS9kaXN0L2Zsb2F0aW5nLXVpLmNvcmUubWpzXG5mdW5jdGlvbiBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChfcmVmLCBwbGFjZW1lbnQsIHJ0bCkge1xuICBsZXQge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9ID0gX3JlZjtcbiAgY29uc3Qgc2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbkxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBzaWRlQXhpcyA9PT0gXCJ5XCI7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgXCJ0b3BcIjpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBmbG9hdGluZy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYm90dG9tXCI6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJyaWdodFwiOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJsZWZ0XCI6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZmxvYXRpbmcud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cbiAgc3dpdGNoIChnZXRBbGlnbm1lbnQocGxhY2VtZW50KSkge1xuICAgIGNhc2UgXCJzdGFydFwiOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdIC09IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxudmFyIGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9IFwiYm90dG9tXCIsXG4gICAgc3RyYXRlZ3kgPSBcImFic29sdXRlXCIsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybTJcbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybTIuaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5pc1JUTChmbG9hdGluZykpO1xuICBsZXQgcmVjdHMgPSBhd2FpdCBwbGF0Zm9ybTIuZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkyID0gMDsgaTIgPCB2YWxpZE1pZGRsZXdhcmUubGVuZ3RoOyBpMisrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpMl07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0yLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChyZXNldC5wbGFjZW1lbnQpIHtcbiAgICAgICAgICBzdGF0ZWZ1bFBsYWNlbWVudCA9IHJlc2V0LnBsYWNlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzZXQucmVjdHMpIHtcbiAgICAgICAgICByZWN0cyA9IHJlc2V0LnJlY3RzID09PSB0cnVlID8gYXdhaXQgcGxhdGZvcm0yLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkyID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtMixcbiAgICByZWN0cyxcbiAgICBlbGVtZW50cyxcbiAgICBzdHJhdGVneVxuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHtcbiAgICBib3VuZGFyeSA9IFwiY2xpcHBpbmdBbmNlc3RvcnNcIixcbiAgICByb290Qm91bmRhcnkgPSBcInZpZXdwb3J0XCIsXG4gICAgZWxlbWVudENvbnRleHQgPSBcImZsb2F0aW5nXCIsXG4gICAgYWx0Qm91bmRhcnkgPSBmYWxzZSxcbiAgICBwYWRkaW5nID0gMFxuICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgY29uc3QgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSBcImZsb2F0aW5nXCIgPyBcInJlZmVyZW5jZVwiIDogXCJmbG9hdGluZ1wiO1xuICBjb25zdCBlbGVtZW50ID0gZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICBjb25zdCBjbGlwcGluZ0NsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KGF3YWl0IHBsYXRmb3JtMi5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtMi5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5pc0VsZW1lbnQoZWxlbWVudCkpKSAhPSBudWxsID8gX2F3YWl0JHBsYXRmb3JtJGlzRWxlIDogdHJ1ZSkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCBhd2FpdCAocGxhdGZvcm0yLmdldERvY3VtZW50RWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0yLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpLFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9KSk7XG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gXCJmbG9hdGluZ1wiID8ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aDogcmVjdHMuZmxvYXRpbmcud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0cy5mbG9hdGluZy5oZWlnaHRcbiAgfSA6IHJlY3RzLnJlZmVyZW5jZTtcbiAgY29uc3Qgb2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtMi5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSBhd2FpdCAocGxhdGZvcm0yLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0yLmlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSA/IGF3YWl0IChwbGF0Zm9ybTIuZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5nZXRTY2FsZShvZmZzZXRQYXJlbnQpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybTIuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QgPyBhd2FpdCBwbGF0Zm9ybTIuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cbnZhciBhcnJvdyA9IChvcHRpb25zKSA9PiAoe1xuICBuYW1lOiBcImFycm93XCIsXG4gIG9wdGlvbnMsXG4gIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtOiBwbGF0Zm9ybTIsXG4gICAgICBlbGVtZW50cyxcbiAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgfSA9IHN0YXRlO1xuICAgIGNvbnN0IHtcbiAgICAgIGVsZW1lbnQsXG4gICAgICBwYWRkaW5nID0gMFxuICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSkgfHwge307XG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICB4LFxuICAgICAgeVxuICAgIH07XG4gICAgY29uc3QgYXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGF4aXMpO1xuICAgIGNvbnN0IGFycm93RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtMi5nZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzWUF4aXMgPSBheGlzID09PSBcInlcIjtcbiAgICBjb25zdCBtaW5Qcm9wID0gaXNZQXhpcyA/IFwidG9wXCIgOiBcImxlZnRcIjtcbiAgICBjb25zdCBtYXhQcm9wID0gaXNZQXhpcyA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCI7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyBcImNsaWVudEhlaWdodFwiIDogXCJjbGllbnRXaWR0aFwiO1xuICAgIGNvbnN0IGVuZERpZmYgPSByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSArIHJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIGNvb3Jkc1theGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgY29uc3Qgc3RhcnREaWZmID0gY29vcmRzW2F4aXNdIC0gcmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICAgIGNvbnN0IGFycm93T2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtMi5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICFhd2FpdCAocGxhdGZvcm0yLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0yLmlzRWxlbWVudChhcnJvd09mZnNldFBhcmVudCkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG4gICAgY29uc3QgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIC0gMTtcbiAgICBjb25zdCBtaW5QYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWluUHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuICAgIGNvbnN0IG1heFBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttYXhQcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWluJDEgPSBtaW5QYWRkaW5nO1xuICAgIGNvbnN0IG1heDIgPSBjbGllbnRTaXplIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLSBtYXhQYWRkaW5nO1xuICAgIGNvbnN0IGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gICAgY29uc3Qgb2Zmc2V0MyA9IGNsYW1wMihtaW4kMSwgY2VudGVyLCBtYXgyKTtcbiAgICBjb25zdCBzaG91bGRBZGRPZmZzZXQgPSAhbWlkZGxld2FyZURhdGEuYXJyb3cgJiYgZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT09IG9mZnNldDMgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4MiA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtheGlzXTogY29vcmRzW2F4aXNdICsgYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgZGF0YToge1xuICAgICAgICBbYXhpc106IG9mZnNldDMsXG4gICAgICAgIGNlbnRlck9mZnNldDogY2VudGVyIC0gb2Zmc2V0MyAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uc2hvdWxkQWRkT2Zmc2V0ICYmIHtcbiAgICAgICAgICBhbGlnbm1lbnRPZmZzZXRcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc2V0OiBzaG91bGRBZGRPZmZzZXRcbiAgICB9O1xuICB9XG59KTtcbnZhciBmbGlwID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJmbGlwXCIsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhcnJvdywgX21pZGRsZXdhcmVEYXRhJGZsaXA7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBpbml0aWFsUGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybTogcGxhdGZvcm0yLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9IFwiYmVzdEZpdFwiLFxuICAgICAgICBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gXCJub25lXCIsXG4gICAgICAgIGZsaXBBbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBpZiAoKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGluaXRpYWxTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGluaXRpYWxQbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNCYXNlUGxhY2VtZW50ID0gZ2V0U2lkZShpbml0aWFsUGxhY2VtZW50KSA9PT0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybTIuaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSBcIm5vbmVcIjtcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uLCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHMyID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlczIgPSBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpO1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlczJbMF1dLCBvdmVyZmxvd1tzaWRlczJbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeSgoc2lkZTIpID0+IHNpZGUyIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50czJbbmV4dEluZGV4XTtcbiAgICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcigoZCkgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYTIsIGIyKSA9PiBhMi5vdmVyZmxvd3NbMV0gLSBiMi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSBcImJlc3RGaXRcIjoge1xuICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkZmlsdGVyMjtcbiAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50MiA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoKGQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoZC5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8IC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgIC8vIHJlYWRpbmcgZGlyZWN0aW9ucyBmYXZvcmluZyBncmVhdGVyIHdpZHRoLlxuICAgICAgICAgICAgICAgICAgY3VycmVudFNpZGVBeGlzID09PSBcInlcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH0pLm1hcCgoZCkgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIoKG92ZXJmbG93MikgPT4gb3ZlcmZsb3cyID4gMCkucmVkdWNlKChhY2MsIG92ZXJmbG93MikgPT4gYWNjICsgb3ZlcmZsb3cyLCAwKV0pLnNvcnQoKGEyLCBiMikgPT4gYTJbMV0gLSBiMlsxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyWzBdO1xuICAgICAgICAgICAgICBpZiAocGxhY2VtZW50Mikge1xuICAgICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gcGxhY2VtZW50MjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJpbml0aWFsUGxhY2VtZW50XCI6XG4gICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwbGFjZW1lbnQgIT09IHJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGhcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gc2lkZXMuc29tZSgoc2lkZSkgPT4gb3ZlcmZsb3dbc2lkZV0gPj0gMCk7XG59XG52YXIgaGlkZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwiaGlkZVwiLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RyYXRlZ3kgPSBcInJlZmVyZW5jZUhpZGRlblwiLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgXCJyZWZlcmVuY2VIaWRkZW5cIjoge1xuICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0OiBcInJlZmVyZW5jZVwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5yZWZlcmVuY2UpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbk9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZXNjYXBlZFwiOiB7XG4gICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLmZsb2F0aW5nKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBlc2NhcGVkT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtMixcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybTIuaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09IFwieVwiO1xuICBjb25zdCBtYWluQXhpc011bHRpID0gW1wibGVmdFwiLCBcInRvcFwiXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gIGxldCB7XG4gICAgbWFpbkF4aXMsXG4gICAgY3Jvc3NBeGlzLFxuICAgIGFsaWdubWVudEF4aXNcbiAgfSA9IHR5cGVvZiByYXdWYWx1ZSA9PT0gXCJudW1iZXJcIiA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogMCxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbCxcbiAgICAuLi5yYXdWYWx1ZVxuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSBcIm51bWJlclwiKSB7XG4gICAgY3Jvc3NBeGlzID0gYWxpZ25tZW50ID09PSBcImVuZFwiID8gYWxpZ25tZW50QXhpcyAqIC0xIDogYWxpZ25tZW50QXhpcztcbiAgfVxuICByZXR1cm4gaXNWZXJ0aWNhbCA/IHtcbiAgICB4OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aSxcbiAgICB5OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGlcbiAgfSA6IHtcbiAgICB4OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGksXG4gICAgeTogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGlcbiAgfTtcbn1cbnZhciBvZmZzZXQgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwib2Zmc2V0XCIsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJGFycm93O1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCBkaWZmQ29vcmRzID0gYXdhaXQgY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpO1xuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UucGxhY2VtZW50KSAmJiAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGlmZkNvb3Jkcy54LFxuICAgICAgICB5OiB5ICsgZGlmZkNvb3Jkcy55LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uZGlmZkNvb3JkcyxcbiAgICAgICAgICBwbGFjZW1lbnRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xudmFyIHNoaWZ0ID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJzaGlmdFwiLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiAoX3JlZikgPT4ge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgeDogeDIsXG4gICAgICAgICAgICAgIHk6IHkyXG4gICAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHg6IHgyLFxuICAgICAgICAgICAgICB5OiB5MlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSBcInlcIiA/IFwidG9wXCIgOiBcImxlZnRcIjtcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSBcInlcIiA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCI7XG4gICAgICAgIGNvbnN0IG1pbjIgPSBtYWluQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heDIgPSBtYWluQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIG1haW5BeGlzQ29vcmQgPSBjbGFtcDIobWluMiwgbWFpbkF4aXNDb29yZCwgbWF4Mik7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IGNyb3NzQXhpcyA9PT0gXCJ5XCIgPyBcInRvcFwiIDogXCJsZWZ0XCI7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBjcm9zc0F4aXMgPT09IFwieVwiID8gXCJib3R0b21cIiA6IFwicmlnaHRcIjtcbiAgICAgICAgY29uc3QgbWluMiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heDIgPSBjcm9zc0F4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGNsYW1wMihtaW4yLCBjcm9zc0F4aXNDb29yZCwgbWF4Mik7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG52YXIgc2l6ZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwic2l6ZVwiLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtMixcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc1lBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gXCJ5XCI7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSBcInRvcFwiIHx8IHNpZGUgPT09IFwiYm90dG9tXCIpIHtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IHNpZGU7XG4gICAgICAgIHdpZHRoU2lkZSA9IGFsaWdubWVudCA9PT0gKGF3YWl0IChwbGF0Zm9ybTIuaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpID8gXCJzdGFydFwiIDogXCJlbmRcIikgPyBcImxlZnRcIiA6IFwicmlnaHRcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09IFwiZW5kXCIgPyBcInRvcFwiIDogXCJib3R0b21cIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IG1pbihoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXSwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSBtaW4od2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCk7XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmIChpc1lBeGlzKSB7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVXaWR0aCwgbWF4aW11bUNsaXBwaW5nV2lkdGgpIDogbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBhbGlnbm1lbnQgfHwgbm9TaGlmdCA/IG1pbihvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KSA6IG1heGltdW1DbGlwcGluZ0hlaWdodDtcbiAgICAgIH1cbiAgICAgIGlmIChub1NoaWZ0ICYmICFhbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc3QgeE1pbiA9IG1heChvdmVyZmxvdy5sZWZ0LCAwKTtcbiAgICAgICAgY29uc3QgeE1heCA9IG1heChvdmVyZmxvdy5yaWdodCwgMCk7XG4gICAgICAgIGNvbnN0IHlNaW4gPSBtYXgob3ZlcmZsb3cudG9wLCAwKTtcbiAgICAgICAgY29uc3QgeU1heCA9IG1heChvdmVyZmxvdy5ib3R0b20sIDApO1xuICAgICAgICBpZiAoaXNZQXhpcykge1xuICAgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gd2lkdGggLSAyICogKHhNaW4gIT09IDAgfHwgeE1heCAhPT0gMCA/IHhNaW4gKyB4TWF4IDogbWF4KG92ZXJmbG93LmxlZnQsIG92ZXJmbG93LnJpZ2h0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gaGVpZ2h0IC0gMiAqICh5TWluICE9PSAwIHx8IHlNYXggIT09IDAgPyB5TWluICsgeU1heCA6IG1heChvdmVyZmxvdy50b3AsIG92ZXJmbG93LmJvdHRvbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCBhcHBseSh7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhdmFpbGFibGVXaWR0aCxcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG5leHREaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0yLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGZsb2F0aW5nLXVpK3V0aWxzQDAuMi41L25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzXG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIGlmIChpc05vZGUobm9kZSkpIHtcbiAgICByZXR1cm4gKG5vZGUubm9kZU5hbWUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgfVxuICByZXR1cm4gXCIjZG9jdW1lbnRcIjtcbn1cbmZ1bmN0aW9uIGdldFdpbmRvdzIobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIE5vZGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3cyKHZhbHVlKS5Ob2RlO1xufVxuZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3cyKHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdzIodmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgU2hhZG93Um9vdCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBTaGFkb3dSb290IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93Mih2YWx1ZSkuU2hhZG93Um9vdDtcbn1cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIG92ZXJmbG93LFxuICAgIG92ZXJmbG93WCxcbiAgICBvdmVyZmxvd1ksXG4gICAgZGlzcGxheVxuICB9ID0gZ2V0Q29tcHV0ZWRTdHlsZTIoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVtcImlubGluZVwiLCBcImNvbnRlbnRzXCJdLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gW1widGFibGVcIiwgXCJ0ZFwiLCBcInRoXCJdLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzVG9wTGF5ZXIoZWxlbWVudCkge1xuICByZXR1cm4gW1wiOnBvcG92ZXItb3BlblwiLCBcIjptb2RhbFwiXS5zb21lKChzZWxlY3RvcikgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBpc0NvbnRhaW5pbmdCbG9jayhlbGVtZW50T3JDc3MpIHtcbiAgY29uc3Qgd2Via2l0ID0gaXNXZWJLaXQoKTtcbiAgY29uc3QgY3NzID0gaXNFbGVtZW50KGVsZW1lbnRPckNzcykgPyBnZXRDb21wdXRlZFN0eWxlMihlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuICByZXR1cm4gY3NzLnRyYW5zZm9ybSAhPT0gXCJub25lXCIgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSBcIm5vbmVcIiB8fCAoY3NzLmNvbnRhaW5lclR5cGUgPyBjc3MuY29udGFpbmVyVHlwZSAhPT0gXCJub3JtYWxcIiA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuYmFja2Ryb3BGaWx0ZXIgPyBjc3MuYmFja2Ryb3BGaWx0ZXIgIT09IFwibm9uZVwiIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSBcIm5vbmVcIiA6IGZhbHNlKSB8fCBbXCJ0cmFuc2Zvcm1cIiwgXCJwZXJzcGVjdGl2ZVwiLCBcImZpbHRlclwiXS5zb21lKCh2YWx1ZSkgPT4gKGNzcy53aWxsQ2hhbmdlIHx8IFwiXCIpLmluY2x1ZGVzKHZhbHVlKSkgfHwgW1wicGFpbnRcIiwgXCJsYXlvdXRcIiwgXCJzdHJpY3RcIiwgXCJjb250ZW50XCJdLnNvbWUoKHZhbHVlKSA9PiAoY3NzLmNvbnRhaW4gfHwgXCJcIikuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoXCItd2Via2l0LWJhY2tkcm9wLWZpbHRlclwiLCBcIm5vbmVcIik7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gW1wiaHRtbFwiLCBcImJvZHlcIiwgXCIjZG9jdW1lbnRcIl0uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZTIoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93MihlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbFgsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUobm9kZSkge1xuICBpZiAoZ2V0Tm9kZU5hbWUobm9kZSkgPT09IFwiaHRtbFwiKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gKFxuICAgIC8vIFN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlLlxuICAgIG5vZGUuYXNzaWduZWRTbG90IHx8IC8vIERPTSBFbGVtZW50IGRldGVjdGVkLlxuICAgIG5vZGUucGFyZW50Tm9kZSB8fCAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICAgIGlzU2hhZG93Um9vdChub2RlKSAmJiBub2RlLmhvc3QgfHwgLy8gRmFsbGJhY2suXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpXG4gICk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdzIoc2Nyb2xsYWJsZUFuY2VzdG9yKTtcbiAgaWYgKGlzQm9keSkge1xuICAgIHJldHVybiBsaXN0LmNvbmNhdCh3aW4sIHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNPdmVyZmxvd0VsZW1lbnQoc2Nyb2xsYWJsZUFuY2VzdG9yKSA/IHNjcm9sbGFibGVBbmNlc3RvciA6IFtdLCB3aW4uZnJhbWVFbGVtZW50ICYmIHRyYXZlcnNlSWZyYW1lcyA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHdpbi5mcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGZsb2F0aW5nLXVpK2RvbUAxLjYuOC9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanNcbmZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlMihlbGVtZW50KTtcbiAgbGV0IHdpZHRoID0gcGFyc2VGbG9hdChjc3Mud2lkdGgpIHx8IDA7XG4gIGxldCBoZWlnaHQgPSBwYXJzZUZsb2F0KGNzcy5oZWlnaHQpIHx8IDA7XG4gIGNvbnN0IGhhc09mZnNldCA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IG9mZnNldFdpZHRoID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRXaWR0aCA6IHdpZHRoO1xuICBjb25zdCBvZmZzZXRIZWlnaHQgPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldEhlaWdodCA6IGhlaWdodDtcbiAgY29uc3Qgc2hvdWxkRmFsbGJhY2sgPSByb3VuZCh3aWR0aCkgIT09IG9mZnNldFdpZHRoIHx8IHJvdW5kKGhlaWdodCkgIT09IG9mZnNldEhlaWdodDtcbiAgaWYgKHNob3VsZEZhbGxiYWNrKSB7XG4gICAgd2lkdGggPSBvZmZzZXRXaWR0aDtcbiAgICBoZWlnaHQgPSBvZmZzZXRIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJDogc2hvdWxkRmFsbGJhY2tcbiAgfTtcbn1cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gIWlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgOiBlbGVtZW50O1xufVxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuICBpZiAoIXggfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkge1xuICAgIHggPSAxO1xuICB9XG4gIGlmICgheSB8fCAhTnVtYmVyLmlzRmluaXRlKHkpKSB7XG4gICAgeSA9IDE7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cbnZhciBub09mZnNldHMgPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdzIoZWxlbWVudCk7XG4gIGlmICghaXNXZWJLaXQoKSB8fCAhd2luLnZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0LFxuICAgIHk6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3BcbiAgfTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZWxlbWVudCwgaXNGaXhlZCwgZmxvYXRpbmdPZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuICBpZiAoIWZsb2F0aW5nT2Zmc2V0UGFyZW50IHx8IGlzRml4ZWQgJiYgZmxvYXRpbmdPZmZzZXRQYXJlbnQgIT09IGdldFdpbmRvdzIoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQ7XG59XG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3cyKGRvbUVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldFdpbiA9IG9mZnNldFBhcmVudCAmJiBpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSA/IGdldFdpbmRvdzIob2Zmc2V0UGFyZW50KSA6IG9mZnNldFBhcmVudDtcbiAgICBsZXQgY3VycmVudFdpbiA9IHdpbjtcbiAgICBsZXQgY3VycmVudElGcmFtZSA9IGN1cnJlbnRXaW4uZnJhbWVFbGVtZW50O1xuICAgIHdoaWxlIChjdXJyZW50SUZyYW1lICYmIG9mZnNldFBhcmVudCAmJiBvZmZzZXRXaW4gIT09IGN1cnJlbnRXaW4pIHtcbiAgICAgIGNvbnN0IGlmcmFtZVNjYWxlID0gZ2V0U2NhbGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBpZnJhbWVSZWN0ID0gY3VycmVudElGcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUyKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgbGVmdCA9IGlmcmFtZVJlY3QubGVmdCArIChjdXJyZW50SUZyYW1lLmNsaWVudExlZnQgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nTGVmdCkpICogaWZyYW1lU2NhbGUueDtcbiAgICAgIGNvbnN0IHRvcCA9IGlmcmFtZVJlY3QudG9wICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50VG9wICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ1RvcCkpICogaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIHkgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHdpZHRoICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICBoZWlnaHQgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKz0gbGVmdDtcbiAgICAgIHkgKz0gdG9wO1xuICAgICAgY3VycmVudFdpbiA9IGdldFdpbmRvdzIoY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gY3VycmVudFdpbi5mcmFtZUVsZW1lbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuZnVuY3Rpb24gY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09IFwiZml4ZWRcIjtcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSBcImJvZHlcIiB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn1cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZTIoYm9keSkuZGlyZWN0aW9uID09PSBcInJ0bFwiKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3cyKGVsZW1lbnQpO1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgbGV0IHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgbGV0IGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgY29uc3QgdmlzdWFsVmlld3BvcnRCYXNlZCA9IGlzV2ViS2l0KCk7XG4gICAgaWYgKCF2aXN1YWxWaWV3cG9ydEJhc2VkIHx8IHZpc3VhbFZpZXdwb3J0QmFzZWQgJiYgc3RyYXRlZ3kgPT09IFwiZml4ZWRcIikge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgc3RyYXRlZ3kgPT09IFwiZml4ZWRcIik7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gXCJ2aWV3cG9ydFwiKSB7XG4gICAgcmVjdCA9IGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSk7XG4gIH0gZWxzZSBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gXCJkb2N1bWVudFwiKSB7XG4gICAgcmVjdCA9IGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpO1xuICB9IGVsc2UgaWYgKGlzRWxlbWVudChjbGlwcGluZ0FuY2VzdG9yKSkge1xuICAgIHJlY3QgPSBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCk7XG4gICAgcmVjdCA9IHtcbiAgICAgIC4uLmNsaXBwaW5nQW5jZXN0b3IsXG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnlcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUyKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSBcImZpeGVkXCIgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZTIpIHtcbiAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGUyLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQsIFtdLCBmYWxzZSkuZmlsdGVyKChlbCkgPT4gaXNFbGVtZW50KGVsKSAmJiBnZXROb2RlTmFtZShlbCkgIT09IFwiYm9keVwiKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlMihlbGVtZW50KS5wb3NpdGlvbiA9PT0gXCJmaXhlZFwiO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuICB3aGlsZSAoaXNFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlMihjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSBcImZpeGVkXCIpIHtcbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgc2hvdWxkRHJvcEN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIDogIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09IFwic3RhdGljXCIgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbXCJhYnNvbHV0ZVwiLCBcImZpeGVkXCJdLmluY2x1ZGVzKGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlLnBvc2l0aW9uKSB8fCBpc092ZXJmbG93RWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBjdXJyZW50Tm9kZSk7XG4gICAgaWYgKHNob3VsZERyb3BDdXJyZW50Tm9kZSkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcigoYW5jZXN0b3IpID0+IGFuY2VzdG9yICE9PSBjdXJyZW50Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZTIuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXRDbGlwcGluZ1JlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnQsXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBlbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMgPSBib3VuZGFyeSA9PT0gXCJjbGlwcGluZ0FuY2VzdG9yc1wiID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5mdW5jdGlvbiBnZXREaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09IFwiZml4ZWRcIjtcbiAgY29uc3QgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gXCJib2R5XCIgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHggPSByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueDtcbiAgY29uc3QgeSA9IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUyKGVsZW1lbnQpLnBvc2l0aW9uID09PSBcInN0YXRpY1wiO1xufVxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgZ2V0Q29tcHV0ZWRTdHlsZTIoZWxlbWVudCkucG9zaXRpb24gPT09IFwiZml4ZWRcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChwb2x5ZmlsbCkge1xuICAgIHJldHVybiBwb2x5ZmlsbChlbGVtZW50KTtcbiAgfVxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59XG5mdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93MihlbGVtZW50KTtcbiAgaWYgKGlzVG9wTGF5ZXIoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIGxldCBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgIHdoaWxlIChzdmdPZmZzZXRQYXJlbnQgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICBpZiAoaXNFbGVtZW50KHN2Z09mZnNldFBhcmVudCkgJiYgIWlzU3RhdGljUG9zaXRpb25lZChzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHJldHVybiBzdmdPZmZzZXRQYXJlbnQ7XG4gICAgICB9XG4gICAgICBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKHN2Z09mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiB3aW47XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCwgcG9seWZpbGwpO1xuICB9XG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgaXNMYXN0VHJhdmVyc2FibGVOb2RlKG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkgJiYgIWlzQ29udGFpbmluZ0Jsb2NrKG9mZnNldFBhcmVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbjtcbn1cbnZhciBnZXRFbGVtZW50UmVjdHMgPSBhc3luYyBmdW5jdGlvbihkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5mdW5jdGlvbiBpc1JUTDIoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZTIoZWxlbWVudCkuZGlyZWN0aW9uID09PSBcInJ0bFwiO1xufVxudmFyIHBsYXRmb3JtID0ge1xuICBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCxcbiAgZ2V0RG9jdW1lbnRFbGVtZW50LFxuICBnZXRDbGlwcGluZ1JlY3QsXG4gIGdldE9mZnNldFBhcmVudCxcbiAgZ2V0RWxlbWVudFJlY3RzLFxuICBnZXRDbGllbnRSZWN0cyxcbiAgZ2V0RGltZW5zaW9ucyxcbiAgZ2V0U2NhbGUsXG4gIGlzRWxlbWVudCxcbiAgaXNSVEw6IGlzUlRMMlxufTtcbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzMikge1xuICAgICAgY29uc3QgcmF0aW8gPSBlbnRyaWVzMlswXS5pbnRlcnNlY3Rpb25SYXRpbztcbiAgICAgIGlmIChyYXRpbyAhPT0gdGhyZXNob2xkKSB7XG4gICAgICAgIGlmICghaXNGaXJzdFVwZGF0ZSkge1xuICAgICAgICAgIHJldHVybiByZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyYXRpbykge1xuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMWUzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWZyZXNoKGZhbHNlLCByYXRpbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlzRmlyc3RVcGRhdGUgPSBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLy8gSGFuZGxlIDxpZnJhbWU+c1xuICAgICAgICByb290OiByb290Lm93bmVyRG9jdW1lbnRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUyKSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaW8ub2JzZXJ2ZShlbGVtZW50KTtcbiAgfVxuICByZWZyZXNoKHRydWUpO1xuICByZXR1cm4gY2xlYW51cDtcbn1cbmZ1bmN0aW9uIGF1dG9VcGRhdGUocmVmZXJlbmNlLCBmbG9hdGluZywgdXBkYXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGFuY2VzdG9yU2Nyb2xsID0gdHJ1ZSxcbiAgICBhbmNlc3RvclJlc2l6ZSA9IHRydWUsXG4gICAgZWxlbWVudFJlc2l6ZSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gXCJmdW5jdGlvblwiLFxuICAgIGxheW91dFNoaWZ0ID0gdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyID09PSBcImZ1bmN0aW9uXCIsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLnJlZmVyZW5jZUVsID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocmVmZXJlbmNlRWwpIDogW10sIC4uLmdldE92ZXJmbG93QW5jZXN0b3JzKGZsb2F0aW5nKV0gOiBbXTtcbiAgYW5jZXN0b3JzLmZvckVhY2goKGFuY2VzdG9yKSA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB1cGRhdGUsIHtcbiAgICAgIHBhc3NpdmU6IHRydWVcbiAgICB9KTtcbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHVwZGF0ZSk7XG4gIH0pO1xuICBjb25zdCBjbGVhbnVwSW8gPSByZWZlcmVuY2VFbCAmJiBsYXlvdXRTaGlmdCA/IG9ic2VydmVNb3ZlKHJlZmVyZW5jZUVsLCB1cGRhdGUpIDogbnVsbDtcbiAgbGV0IHJlb2JzZXJ2ZUZyYW1lID0gLTE7XG4gIGxldCByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gIGlmIChlbGVtZW50UmVzaXplKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKF9yZWYpID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJlb2JzZXJ2ZUZyYW1lKTtcbiAgICAgICAgcmVvYnNlcnZlRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHZhciBfcmVzaXplT2JzZXJ2ZXI7XG4gICAgICAgICAgKF9yZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgIWFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZUVsKTtcbiAgICB9XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gIH1cbiAgbGV0IGZyYW1lSWQ7XG4gIGxldCBwcmV2UmVmUmVjdCA9IGFuaW1hdGlvbkZyYW1lID8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSkgOiBudWxsO1xuICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICBmcmFtZUxvb3AoKTtcbiAgfVxuICBmdW5jdGlvbiBmcmFtZUxvb3AoKSB7XG4gICAgY29uc3QgbmV4dFJlZlJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKTtcbiAgICBpZiAocHJldlJlZlJlY3QgJiYgKG5leHRSZWZSZWN0LnggIT09IHByZXZSZWZSZWN0LnggfHwgbmV4dFJlZlJlY3QueSAhPT0gcHJldlJlZlJlY3QueSB8fCBuZXh0UmVmUmVjdC53aWR0aCAhPT0gcHJldlJlZlJlY3Qud2lkdGggfHwgbmV4dFJlZlJlY3QuaGVpZ2h0ICE9PSBwcmV2UmVmUmVjdC5oZWlnaHQpKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gICAgcHJldlJlZlJlY3QgPSBuZXh0UmVmUmVjdDtcbiAgICBmcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lTG9vcCk7XG4gIH1cbiAgdXBkYXRlKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgdmFyIF9yZXNpemVPYnNlcnZlcjI7XG4gICAgYW5jZXN0b3JzLmZvckVhY2goKGFuY2VzdG9yKSA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHVwZGF0ZSk7XG4gICAgfSk7XG4gICAgY2xlYW51cElvID09IG51bGwgfHwgY2xlYW51cElvKCk7XG4gICAgKF9yZXNpemVPYnNlcnZlcjIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTtcbiAgICByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcbiAgICB9XG4gIH07XG59XG52YXIgb2Zmc2V0MiA9IG9mZnNldDtcbnZhciBzaGlmdDIgPSBzaGlmdDtcbnZhciBmbGlwMiA9IGZsaXA7XG52YXIgc2l6ZTIgPSBzaXplO1xudmFyIGhpZGUyID0gaGlkZTtcbnZhciBhcnJvdzIgPSBhcnJvdztcbnZhciBjb21wdXRlUG9zaXRpb24yID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgY29uc3QgY2FjaGUyID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlMlxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rLzRYMkVLVUozLmpzXG52YXIgUG9wcGVyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZVBvcHBlckNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFBvcHBlckNvbnRleHQpO1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW2tvYmFsdGVdOiBgdXNlUG9wcGVyQ29udGV4dGAgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBQb3BwZXJgIGNvbXBvbmVudFwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBfdG1wbCQgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgZGlzcGxheT1cImJsb2NrXCIgdmlld0JveD1cIjAgMCAzMCAzMFwiIHN0eWxlPVwidHJhbnNmb3JtOnNjYWxlKDEuMDIpXCI+PGc+PHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTIzLDI3LjhjMS4xLDEuMiwzLjQsMi4yLDUsMi4yaDJIMGgyYzEuNywwLDMuOS0xLDUtMi4ybDYuNi03LjJjMC43LTAuOCwyLTAuOCwyLjcsMEwyMywyNy44TDIzLDI3Ljh6XCI+PC9wYXRoPjxwYXRoIHN0cm9rZT1cIm5vbmVcIiBkPVwiTTIzLDI3LjhjMS4xLDEuMiwzLjQsMi4yLDUsMi4yaDJIMGgyYzEuNywwLDMuOS0xLDUtMi4ybDYuNi03LjJjMC43LTAuOCwyLTAuOCwyLjcsMEwyMywyNy44TDIzLDI3Ljh6XCI+YCk7XG52YXIgREVGQVVMVF9TSVpFID0gMzA7XG52YXIgSEFMRl9ERUZBVUxUX1NJWkUgPSBERUZBVUxUX1NJWkUgLyAyO1xudmFyIFJPVEFUSU9OX0RFRyA9IHtcbiAgdG9wOiAxODAsXG4gIHJpZ2h0OiAtOTAsXG4gIGJvdHRvbTogMCxcbiAgbGVmdDogOTBcbn07XG5mdW5jdGlvbiBQb3BwZXJBcnJvdyhwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlUG9wcGVyQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBzaXplOiBERUZBVUxUX1NJWkVcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJyZWZcIiwgXCJzdHlsZVwiLCBcInNpemVcIl0pO1xuICBjb25zdCBkaXIgPSAoKSA9PiBjb250ZXh0LmN1cnJlbnRQbGFjZW1lbnQoKS5zcGxpdChcIi1cIilbMF07XG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IGNyZWF0ZUNvbXB1dGVkU3R5bGUoY29udGV4dC5jb250ZW50UmVmKTtcbiAgY29uc3QgZmlsbCA9ICgpID0+IGNvbnRlbnRTdHlsZSgpPy5nZXRQcm9wZXJ0eVZhbHVlKFwiYmFja2dyb3VuZC1jb2xvclwiKSB8fCBcIm5vbmVcIjtcbiAgY29uc3Qgc3Ryb2tlID0gKCkgPT4gY29udGVudFN0eWxlKCk/LmdldFByb3BlcnR5VmFsdWUoYGJvcmRlci0ke2RpcigpfS1jb2xvcmApIHx8IFwibm9uZVwiO1xuICBjb25zdCBib3JkZXJXaWR0aCA9ICgpID0+IGNvbnRlbnRTdHlsZSgpPy5nZXRQcm9wZXJ0eVZhbHVlKGBib3JkZXItJHtkaXIoKX0td2lkdGhgKSB8fCBcIjBweFwiO1xuICBjb25zdCBzdHJva2VXaWR0aCA9ICgpID0+IHtcbiAgICByZXR1cm4gTnVtYmVyLnBhcnNlSW50KGJvcmRlcldpZHRoKCkpICogMiAqIChERUZBVUxUX1NJWkUgLyBsb2NhbC5zaXplKTtcbiAgfTtcbiAgY29uc3Qgcm90YXRlID0gKCkgPT4ge1xuICAgIHJldHVybiBgcm90YXRlKCR7Uk9UQVRJT05fREVHW2RpcigpXX0gJHtIQUxGX0RFRkFVTFRfU0laRX0gJHtIQUxGX0RFRkFVTFRfU0laRX0pIHRyYW5zbGF0ZSgwIDIpYDtcbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiZGl2XCIsXG4gICAgcmVmKHIkKSB7XG4gICAgICBjb25zdCBfcmVmJCA9IG1lcmdlUmVmcyhjb250ZXh0LnNldEFycm93UmVmLCBsb2NhbC5yZWYpO1xuICAgICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgJiYgX3JlZiQociQpO1xuICAgIH0sXG4gICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIixcbiAgICBnZXQgc3R5bGUoKSB7XG4gICAgICByZXR1cm4gY29tYmluZVN0eWxlKHtcbiAgICAgICAgLy8gc2VydmVyIHNpZGUgcmVuZGVyaW5nXG4gICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgIFwiZm9udC1zaXplXCI6IGAke2xvY2FsLnNpemV9cHhgLFxuICAgICAgICB3aWR0aDogXCIxZW1cIixcbiAgICAgICAgaGVpZ2h0OiBcIjFlbVwiLFxuICAgICAgICBcInBvaW50ZXItZXZlbnRzXCI6IFwibm9uZVwiLFxuICAgICAgICBmaWxsOiBmaWxsKCksXG4gICAgICAgIHN0cm9rZTogc3Ryb2tlKCksXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IHN0cm9rZVdpZHRoKClcbiAgICAgIH0sIGxvY2FsLnN0eWxlKTtcbiAgICB9XG4gIH0sIG90aGVycywge1xuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIGNvbnN0IF9lbCQgPSBfdG1wbCQoKSwgX2VsJDIgPSBfZWwkLmZpcnN0Q2hpbGQ7XG4gICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gc2V0QXR0cmlidXRlKF9lbCQyLCBcInRyYW5zZm9ybVwiLCByb3RhdGUoKSkpO1xuICAgICAgcmV0dXJuIF9lbCQ7XG4gICAgfVxuICB9KSk7XG59XG5mdW5jdGlvbiBjcmVhdGVDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgY29uc3QgW3N0eWxlLCBzZXRTdHlsZV0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQoKTtcbiAgICBlbCAmJiBzZXRTdHlsZShnZXRXaW5kb3coZWwpLmdldENvbXB1dGVkU3R5bGUoZWwpKTtcbiAgfSk7XG4gIHJldHVybiBzdHlsZTtcbn1cbmZ1bmN0aW9uIFBvcHBlclBvc2l0aW9uZXIocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZVBvcHBlckNvbnRleHQoKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhwcm9wcywgW1wicmVmXCIsIFwic3R5bGVcIl0pO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICBhczogXCJkaXZcIixcbiAgICByZWYociQpIHtcbiAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKGNvbnRleHQuc2V0UG9zaXRpb25lclJlZiwgbG9jYWwucmVmKTtcbiAgICAgIHR5cGVvZiBfcmVmJCA9PT0gXCJmdW5jdGlvblwiICYmIF9yZWYkKHIkKTtcbiAgICB9LFxuICAgIFwiZGF0YS1wb3BwZXItcG9zaXRpb25lclwiOiBcIlwiLFxuICAgIGdldCBzdHlsZSgpIHtcbiAgICAgIHJldHVybiBjb21iaW5lU3R5bGUoe1xuICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIFwibWluLXdpZHRoXCI6IFwibWF4LWNvbnRlbnRcIlxuICAgICAgfSwgbG9jYWwuc3R5bGUpO1xuICAgIH1cbiAgfSwgb3RoZXJzKSk7XG59XG5mdW5jdGlvbiBjcmVhdGVET01SZWN0KGFuY2hvclJlY3QpIHtcbiAgY29uc3QgeyB4ID0gMCwgeSA9IDAsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMCB9ID0gYW5jaG9yUmVjdCA/PyB7fTtcbiAgaWYgKHR5cGVvZiBET01SZWN0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gbmV3IERPTVJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7XG4gIH1cbiAgY29uc3QgcmVjdCA9IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICBsZWZ0OiB4XG4gIH07XG4gIHJldHVybiB7IC4uLnJlY3QsIHRvSlNPTjogKCkgPT4gcmVjdCB9O1xufVxuZnVuY3Rpb24gZ2V0QW5jaG9yRWxlbWVudChhbmNob3IsIGdldEFuY2hvclJlY3QpIHtcbiAgY29uc3QgY29udGV4dEVsZW1lbnQgPSBhbmNob3I7XG4gIHJldHVybiB7XG4gICAgY29udGV4dEVsZW1lbnQsXG4gICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0OiAoKSA9PiB7XG4gICAgICBjb25zdCBhbmNob3JSZWN0ID0gZ2V0QW5jaG9yUmVjdChhbmNob3IpO1xuICAgICAgaWYgKGFuY2hvclJlY3QpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZURPTVJlY3QoYW5jaG9yUmVjdCk7XG4gICAgICB9XG4gICAgICBpZiAoYW5jaG9yKSB7XG4gICAgICAgIHJldHVybiBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlRE9NUmVjdCgpO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIGlzVmFsaWRQbGFjZW1lbnQoZmxpcDIyKSB7XG4gIHJldHVybiAvXig/OnRvcHxib3R0b218bGVmdHxyaWdodCkoPzotKD86c3RhcnR8ZW5kKSk/JC8udGVzdChmbGlwMjIpO1xufVxudmFyIFJFVkVSU0VfQkFTRV9QTEFDRU1FTlQgPSB7XG4gIHRvcDogXCJib3R0b21cIixcbiAgcmlnaHQ6IFwibGVmdFwiLFxuICBib3R0b206IFwidG9wXCIsXG4gIGxlZnQ6IFwicmlnaHRcIlxufTtcbmZ1bmN0aW9uIGdldFRyYW5zZm9ybU9yaWdpbihwbGFjZW1lbnQsIHJlYWRpbmdEaXJlY3Rpb24pIHtcbiAgY29uc3QgW2Jhc2VQbGFjZW1lbnQsIGFsaWdubWVudF0gPSBwbGFjZW1lbnQuc3BsaXQoXCItXCIpO1xuICBjb25zdCByZXZlcnNlUGxhY2VtZW50ID0gUkVWRVJTRV9CQVNFX1BMQUNFTUVOVFtiYXNlUGxhY2VtZW50XTtcbiAgaWYgKCFhbGlnbm1lbnQpIHtcbiAgICByZXR1cm4gYCR7cmV2ZXJzZVBsYWNlbWVudH0gY2VudGVyYDtcbiAgfVxuICBpZiAoYmFzZVBsYWNlbWVudCA9PT0gXCJsZWZ0XCIgfHwgYmFzZVBsYWNlbWVudCA9PT0gXCJyaWdodFwiKSB7XG4gICAgcmV0dXJuIGAke3JldmVyc2VQbGFjZW1lbnR9ICR7YWxpZ25tZW50ID09PSBcInN0YXJ0XCIgPyBcInRvcFwiIDogXCJib3R0b21cIn1gO1xuICB9XG4gIGlmIChhbGlnbm1lbnQgPT09IFwic3RhcnRcIikge1xuICAgIHJldHVybiBgJHtyZXZlcnNlUGxhY2VtZW50fSAke3JlYWRpbmdEaXJlY3Rpb24gPT09IFwicnRsXCIgPyBcInJpZ2h0XCIgOiBcImxlZnRcIn1gO1xuICB9XG4gIHJldHVybiBgJHtyZXZlcnNlUGxhY2VtZW50fSAke3JlYWRpbmdEaXJlY3Rpb24gPT09IFwicnRsXCIgPyBcImxlZnRcIiA6IFwicmlnaHRcIn1gO1xufVxuZnVuY3Rpb24gUG9wcGVyUm9vdChwcm9wcykge1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBnZXRBbmNob3JSZWN0OiAoYW5jaG9yKSA9PiBhbmNob3I/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgIHBsYWNlbWVudDogXCJib3R0b21cIixcbiAgICBndXR0ZXI6IDAsXG4gICAgc2hpZnQ6IDAsXG4gICAgZmxpcDogdHJ1ZSxcbiAgICBzbGlkZTogdHJ1ZSxcbiAgICBvdmVybGFwOiBmYWxzZSxcbiAgICBzYW1lV2lkdGg6IGZhbHNlLFxuICAgIGZpdFZpZXdwb3J0OiBmYWxzZSxcbiAgICBoaWRlV2hlbkRldGFjaGVkOiBmYWxzZSxcbiAgICBkZXRhY2hlZFBhZGRpbmc6IDAsXG4gICAgYXJyb3dQYWRkaW5nOiA0LFxuICAgIG92ZXJmbG93UGFkZGluZzogOFxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtwb3NpdGlvbmVyUmVmLCBzZXRQb3NpdGlvbmVyUmVmXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbYXJyb3dSZWYsIHNldEFycm93UmVmXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbY3VycmVudFBsYWNlbWVudCwgc2V0Q3VycmVudFBsYWNlbWVudF0gPSBjcmVhdGVTaWduYWwobWVyZ2VkUHJvcHMucGxhY2VtZW50KTtcbiAgY29uc3QgYW5jaG9yUmVmID0gKCkgPT4gZ2V0QW5jaG9yRWxlbWVudChtZXJnZWRQcm9wcy5hbmNob3JSZWY/LigpLCBtZXJnZWRQcm9wcy5nZXRBbmNob3JSZWN0KTtcbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvblxuICB9ID0gdXNlTG9jYWxlKCk7XG4gIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZUVsID0gYW5jaG9yUmVmKCk7XG4gICAgY29uc3QgZmxvYXRpbmdFbCA9IHBvc2l0aW9uZXJSZWYoKTtcbiAgICBjb25zdCBhcnJvd0VsID0gYXJyb3dSZWYoKTtcbiAgICBpZiAoIXJlZmVyZW5jZUVsIHx8ICFmbG9hdGluZ0VsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFycm93T2Zmc2V0ID0gKGFycm93RWw/LmNsaWVudEhlaWdodCB8fCAwKSAvIDI7XG4gICAgY29uc3QgZmluYWxHdXR0ZXIgPSB0eXBlb2YgbWVyZ2VkUHJvcHMuZ3V0dGVyID09PSBcIm51bWJlclwiID8gbWVyZ2VkUHJvcHMuZ3V0dGVyICsgYXJyb3dPZmZzZXQgOiBtZXJnZWRQcm9wcy5ndXR0ZXIgPz8gYXJyb3dPZmZzZXQ7XG4gICAgZmxvYXRpbmdFbC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0ta2ItcG9wcGVyLWNvbnRlbnQtb3ZlcmZsb3ctcGFkZGluZ1wiLCBgJHttZXJnZWRQcm9wcy5vdmVyZmxvd1BhZGRpbmd9cHhgKTtcbiAgICByZWZlcmVuY2VFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBtaWRkbGV3YXJlID0gW1xuICAgICAgLy8gaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAgICAgIG9mZnNldDIoKHtcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0FsaWdubWVudCA9ICEhcGxhY2VtZW50LnNwbGl0KFwiLVwiKVsxXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYWluQXhpczogZmluYWxHdXR0ZXIsXG4gICAgICAgICAgY3Jvc3NBeGlzOiAhaGFzQWxpZ25tZW50ID8gbWVyZ2VkUHJvcHMuc2hpZnQgOiB2b2lkIDAsXG4gICAgICAgICAgYWxpZ25tZW50QXhpczogbWVyZ2VkUHJvcHMuc2hpZnRcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgXTtcbiAgICBpZiAobWVyZ2VkUHJvcHMuZmxpcCAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGZhbGxiYWNrUGxhY2VtZW50cyA9IHR5cGVvZiBtZXJnZWRQcm9wcy5mbGlwID09PSBcInN0cmluZ1wiID8gbWVyZ2VkUHJvcHMuZmxpcC5zcGxpdChcIiBcIikgOiB2b2lkIDA7XG4gICAgICBpZiAoZmFsbGJhY2tQbGFjZW1lbnRzICE9PSB2b2lkIDAgJiYgIWZhbGxiYWNrUGxhY2VtZW50cy5ldmVyeShpc1ZhbGlkUGxhY2VtZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJgZmxpcGAgZXhwZWN0cyBhIHNwYWNlZC1kZWxpbWl0ZWQgbGlzdCBvZiBwbGFjZW1lbnRzXCIpO1xuICAgICAgfVxuICAgICAgbWlkZGxld2FyZS5wdXNoKGZsaXAyKHtcbiAgICAgICAgcGFkZGluZzogbWVyZ2VkUHJvcHMub3ZlcmZsb3dQYWRkaW5nLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHNcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgaWYgKG1lcmdlZFByb3BzLnNsaWRlIHx8IG1lcmdlZFByb3BzLm92ZXJsYXApIHtcbiAgICAgIG1pZGRsZXdhcmUucHVzaChzaGlmdDIoe1xuICAgICAgICBtYWluQXhpczogbWVyZ2VkUHJvcHMuc2xpZGUsXG4gICAgICAgIGNyb3NzQXhpczogbWVyZ2VkUHJvcHMub3ZlcmxhcCxcbiAgICAgICAgcGFkZGluZzogbWVyZ2VkUHJvcHMub3ZlcmZsb3dQYWRkaW5nXG4gICAgICB9KSk7XG4gICAgfVxuICAgIG1pZGRsZXdhcmUucHVzaChzaXplMih7XG4gICAgICBwYWRkaW5nOiBtZXJnZWRQcm9wcy5vdmVyZmxvd1BhZGRpbmcsXG4gICAgICBhcHBseSh7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHQsXG4gICAgICAgIHJlY3RzXG4gICAgICB9KSB7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZVdpZHRoID0gTWF0aC5yb3VuZChyZWN0cy5yZWZlcmVuY2Uud2lkdGgpO1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IE1hdGguZmxvb3IoYXZhaWxhYmxlV2lkdGgpO1xuICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBNYXRoLmZsb29yKGF2YWlsYWJsZUhlaWdodCk7XG4gICAgICAgIGZsb2F0aW5nRWwuc3R5bGUuc2V0UHJvcGVydHkoXCItLWtiLXBvcHBlci1hbmNob3Itd2lkdGhcIiwgYCR7cmVmZXJlbmNlV2lkdGh9cHhgKTtcbiAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0ta2ItcG9wcGVyLWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoXCIsIGAke2F2YWlsYWJsZVdpZHRofXB4YCk7XG4gICAgICAgIGZsb2F0aW5nRWwuc3R5bGUuc2V0UHJvcGVydHkoXCItLWtiLXBvcHBlci1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRcIiwgYCR7YXZhaWxhYmxlSGVpZ2h0fXB4YCk7XG4gICAgICAgIGlmIChtZXJnZWRQcm9wcy5zYW1lV2lkdGgpIHtcbiAgICAgICAgICBmbG9hdGluZ0VsLnN0eWxlLndpZHRoID0gYCR7cmVmZXJlbmNlV2lkdGh9cHhgO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXJnZWRQcm9wcy5maXRWaWV3cG9ydCkge1xuICAgICAgICAgIGZsb2F0aW5nRWwuc3R5bGUubWF4V2lkdGggPSBgJHthdmFpbGFibGVXaWR0aH1weGA7XG4gICAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS5tYXhIZWlnaHQgPSBgJHthdmFpbGFibGVIZWlnaHR9cHhgO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuICAgIGlmIChtZXJnZWRQcm9wcy5oaWRlV2hlbkRldGFjaGVkKSB7XG4gICAgICBtaWRkbGV3YXJlLnB1c2goaGlkZTIoe1xuICAgICAgICBwYWRkaW5nOiBtZXJnZWRQcm9wcy5kZXRhY2hlZFBhZGRpbmdcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgaWYgKGFycm93RWwpIHtcbiAgICAgIG1pZGRsZXdhcmUucHVzaChhcnJvdzIoe1xuICAgICAgICBlbGVtZW50OiBhcnJvd0VsLFxuICAgICAgICBwYWRkaW5nOiBtZXJnZWRQcm9wcy5hcnJvd1BhZGRpbmdcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgcG9zID0gYXdhaXQgY29tcHV0ZVBvc2l0aW9uMihyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwge1xuICAgICAgcGxhY2VtZW50OiBtZXJnZWRQcm9wcy5wbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneTogXCJhYnNvbHV0ZVwiLFxuICAgICAgbWlkZGxld2FyZSxcbiAgICAgIHBsYXRmb3JtOiB7XG4gICAgICAgIC4uLnBsYXRmb3JtLFxuICAgICAgICBpc1JUTDogKCkgPT4gZGlyZWN0aW9uKCkgPT09IFwicnRsXCJcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRDdXJyZW50UGxhY2VtZW50KHBvcy5wbGFjZW1lbnQpO1xuICAgIG1lcmdlZFByb3BzLm9uQ3VycmVudFBsYWNlbWVudENoYW5nZT8uKHBvcy5wbGFjZW1lbnQpO1xuICAgIGlmICghZmxvYXRpbmdFbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmbG9hdGluZ0VsLnN0eWxlLnNldFByb3BlcnR5KFwiLS1rYi1wb3BwZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXCIsIGdldFRyYW5zZm9ybU9yaWdpbihwb3MucGxhY2VtZW50LCBkaXJlY3Rpb24oKSkpO1xuICAgIGNvbnN0IHggPSBNYXRoLnJvdW5kKHBvcy54KTtcbiAgICBjb25zdCB5ID0gTWF0aC5yb3VuZChwb3MueSk7XG4gICAgbGV0IHZpc2liaWxpdHk7XG4gICAgaWYgKG1lcmdlZFByb3BzLmhpZGVXaGVuRGV0YWNoZWQpIHtcbiAgICAgIHZpc2liaWxpdHkgPSBwb3MubWlkZGxld2FyZURhdGEuaGlkZT8ucmVmZXJlbmNlSGlkZGVuID8gXCJoaWRkZW5cIiA6IFwidmlzaWJsZVwiO1xuICAgIH1cbiAgICBPYmplY3QuYXNzaWduKGZsb2F0aW5nRWwuc3R5bGUsIHtcbiAgICAgIHRvcDogXCIwXCIsXG4gICAgICBsZWZ0OiBcIjBcIixcbiAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZTNkKCR7eH1weCwgJHt5fXB4LCAwKWAsXG4gICAgICB2aXNpYmlsaXR5XG4gICAgfSk7XG4gICAgaWYgKGFycm93RWwgJiYgcG9zLm1pZGRsZXdhcmVEYXRhLmFycm93KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHg6IGFycm93WCxcbiAgICAgICAgeTogYXJyb3dZXG4gICAgICB9ID0gcG9zLm1pZGRsZXdhcmVEYXRhLmFycm93O1xuICAgICAgY29uc3QgZGlyID0gcG9zLnBsYWNlbWVudC5zcGxpdChcIi1cIilbMF07XG4gICAgICBPYmplY3QuYXNzaWduKGFycm93RWwuc3R5bGUsIHtcbiAgICAgICAgbGVmdDogYXJyb3dYICE9IG51bGwgPyBgJHthcnJvd1h9cHhgIDogXCJcIixcbiAgICAgICAgdG9wOiBhcnJvd1kgIT0gbnVsbCA/IGAke2Fycm93WX1weGAgOiBcIlwiLFxuICAgICAgICBbZGlyXTogXCIxMDAlXCJcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZUVsID0gYW5jaG9yUmVmKCk7XG4gICAgY29uc3QgZmxvYXRpbmdFbCA9IHBvc2l0aW9uZXJSZWYoKTtcbiAgICBpZiAoIXJlZmVyZW5jZUVsIHx8ICFmbG9hdGluZ0VsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNsZWFudXBBdXRvVXBkYXRlID0gYXV0b1VwZGF0ZShyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwgdXBkYXRlUG9zaXRpb24sIHtcbiAgICAgIC8vIEpTRE9NIGRvZXNuJ3Qgc3VwcG9ydCBSZXNpemVPYnNlcnZlclxuICAgICAgZWxlbWVudFJlc2l6ZTogdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSBcImZ1bmN0aW9uXCJcbiAgICB9KTtcbiAgICBvbkNsZWFudXAoY2xlYW51cEF1dG9VcGRhdGUpO1xuICB9KTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwb3NpdGlvbmVyID0gcG9zaXRpb25lclJlZigpO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBtZXJnZWRQcm9wcy5jb250ZW50UmVmPy4oKTtcbiAgICBpZiAoIXBvc2l0aW9uZXIgfHwgIWNvbnRlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgcG9zaXRpb25lci5zdHlsZS56SW5kZXggPSBnZXRDb21wdXRlZFN0eWxlKGNvbnRlbnQpLnpJbmRleDtcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgY3VycmVudFBsYWNlbWVudCxcbiAgICBjb250ZW50UmVmOiAoKSA9PiBtZXJnZWRQcm9wcy5jb250ZW50UmVmPy4oKSxcbiAgICBzZXRQb3NpdGlvbmVyUmVmLFxuICAgIHNldEFycm93UmVmXG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9wcGVyQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjb250ZXh0LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBtZXJnZWRQcm9wcy5jaGlsZHJlbjtcbiAgICB9XG4gIH0pO1xufVxudmFyIFBvcHBlciA9IE9iamVjdC5hc3NpZ24oUG9wcGVyUm9vdCwge1xuICBBcnJvdzogUG9wcGVyQXJyb3csXG4gIENvbnRleHQ6IFBvcHBlckNvbnRleHQsXG4gIHVzZVBvcHBlckNvbnRleHQsXG4gIFBvc2l0aW9uZXI6IFBvcHBlclBvc2l0aW9uZXJcbn0pO1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9RRU1QTFlaWC5qc1xuZnVuY3Rpb24gY3JlYXRlRXNjYXBlS2V5RG93bihwcm9wcykge1xuICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gRXZlbnRLZXkuRXNjYXBlKSB7XG4gICAgICBwcm9wcy5vbkVzY2FwZUtleURvd24/LihldmVudCk7XG4gICAgfVxuICB9O1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWNjZXNzKHByb3BzLmlzRGlzYWJsZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRvY3VtZW50MiA9IHByb3BzLm93bmVyRG9jdW1lbnQ/LigpID8/IGdldERvY3VtZW50KCk7XG4gICAgZG9jdW1lbnQyLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICBkb2N1bWVudDIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9RR0NNWUxUQS5qc1xudmFyIFBPSU5URVJfRE9XTl9PVVRTSURFX0VWRU5UID0gXCJpbnRlcmFjdE91dHNpZGUucG9pbnRlckRvd25PdXRzaWRlXCI7XG52YXIgRk9DVVNfT1VUU0lERV9FVkVOVCA9IFwiaW50ZXJhY3RPdXRzaWRlLmZvY3VzT3V0c2lkZVwiO1xuZnVuY3Rpb24gY3JlYXRlSW50ZXJhY3RPdXRzaWRlKHByb3BzLCByZWYpIHtcbiAgbGV0IHBvaW50ZXJEb3duVGltZW91dElkO1xuICBsZXQgY2xpY2tIYW5kbGVyID0gbm9vcDM7XG4gIGNvbnN0IG93bmVyRG9jdW1lbnQgPSAoKSA9PiBnZXREb2N1bWVudChyZWYoKSk7XG4gIGNvbnN0IG9uUG9pbnRlckRvd25PdXRzaWRlID0gKGUyKSA9PiBwcm9wcy5vblBvaW50ZXJEb3duT3V0c2lkZT8uKGUyKTtcbiAgY29uc3Qgb25Gb2N1c091dHNpZGUgPSAoZTIpID0+IHByb3BzLm9uRm9jdXNPdXRzaWRlPy4oZTIpO1xuICBjb25zdCBvbkludGVyYWN0T3V0c2lkZSA9IChlMikgPT4gcHJvcHMub25JbnRlcmFjdE91dHNpZGU/LihlMik7XG4gIGNvbnN0IGlzRXZlbnRPdXRzaWRlID0gKGUyKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZTIudGFyZ2V0O1xuICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoYFske0RBVEFfVE9QX0xBWUVSX0FUVFJ9XWApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY29udGFpbnMob3duZXJEb2N1bWVudCgpLCB0YXJnZXQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChjb250YWlucyhyZWYoKSwgdGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIXByb3BzLnNob3VsZEV4Y2x1ZGVFbGVtZW50Py4odGFyZ2V0KTtcbiAgfTtcbiAgY29uc3Qgb25Qb2ludGVyRG93biA9IChlMikgPT4ge1xuICAgIGZ1bmN0aW9uIGhhbmRsZXIoKSB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSByZWYoKTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGUyLnRhcmdldDtcbiAgICAgIGlmICghY29udGFpbmVyIHx8ICF0YXJnZXQgfHwgIWlzRXZlbnRPdXRzaWRlKGUyKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBoYW5kbGVyMiA9IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtcbiAgICAgICAgb25Qb2ludGVyRG93bk91dHNpZGUsXG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlXG4gICAgICBdKTtcbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKFBPSU5URVJfRE9XTl9PVVRTSURFX0VWRU5ULCBoYW5kbGVyMiwge1xuICAgICAgICBvbmNlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHBvaW50ZXJEb3duT3V0c2lkZUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KFxuICAgICAgICBQT0lOVEVSX0RPV05fT1VUU0lERV9FVkVOVCxcbiAgICAgICAge1xuICAgICAgICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlMixcbiAgICAgICAgICAgIGlzQ29udGV4dE1lbnU6IGUyLmJ1dHRvbiA9PT0gMiB8fCBpc0N0cmxLZXkoZTIpICYmIGUyLmJ1dHRvbiA9PT0gMFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KHBvaW50ZXJEb3duT3V0c2lkZUV2ZW50KTtcbiAgICB9XG4gICAgaWYgKGUyLnBvaW50ZXJUeXBlID09PSBcInRvdWNoXCIpIHtcbiAgICAgIG93bmVyRG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlcik7XG4gICAgICBjbGlja0hhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgb3duZXJEb2N1bWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZXIoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uRm9jdXNJbiA9IChlMikgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHJlZigpO1xuICAgIGNvbnN0IHRhcmdldCA9IGUyLnRhcmdldDtcbiAgICBpZiAoIWNvbnRhaW5lciB8fCAhdGFyZ2V0IHx8ICFpc0V2ZW50T3V0c2lkZShlMikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaGFuZGxlciA9IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtcbiAgICAgIG9uRm9jdXNPdXRzaWRlLFxuICAgICAgb25JbnRlcmFjdE91dHNpZGVcbiAgICBdKTtcbiAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihGT0NVU19PVVRTSURFX0VWRU5ULCBoYW5kbGVyLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgY29uc3QgZm9jdXNPdXRzaWRlRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoRk9DVVNfT1VUU0lERV9FVkVOVCwge1xuICAgICAgYnViYmxlczogZmFsc2UsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUyLFxuICAgICAgICBpc0NvbnRleHRNZW51OiBmYWxzZVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KGZvY3VzT3V0c2lkZUV2ZW50KTtcbiAgfTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjY2Vzcyhwcm9wcy5pc0Rpc2FibGVkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwb2ludGVyRG93blRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG93bmVyRG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgb25Qb2ludGVyRG93biwgdHJ1ZSk7XG4gICAgfSwgMCk7XG4gICAgb3duZXJEb2N1bWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsIG9uRm9jdXNJbiwgdHJ1ZSk7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQocG9pbnRlckRvd25UaW1lb3V0SWQpO1xuICAgICAgb3duZXJEb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBjbGlja0hhbmRsZXIpO1xuICAgICAgb3duZXJEb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBvblBvaW50ZXJEb3duLCB0cnVlKTtcbiAgICAgIG93bmVyRG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLCBvbkZvY3VzSW4sIHRydWUpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvRzdHM1BGUkouanNcbnZhciBEaXNtaXNzYWJsZUxheWVyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZU9wdGlvbmFsRGlzbWlzc2FibGVMYXllckNvbnRleHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KERpc21pc3NhYmxlTGF5ZXJDb250ZXh0KTtcbn1cbmZ1bmN0aW9uIERpc21pc3NhYmxlTGF5ZXIocHJvcHMpIHtcbiAgbGV0IHJlZjtcbiAgY29uc3QgcGFyZW50Q29udGV4dCA9IHVzZU9wdGlvbmFsRGlzbWlzc2FibGVMYXllckNvbnRleHQoKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhwcm9wcywgW1wicmVmXCIsIFwiZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzXCIsIFwiZXhjbHVkZWRFbGVtZW50c1wiLCBcIm9uRXNjYXBlS2V5RG93blwiLCBcIm9uUG9pbnRlckRvd25PdXRzaWRlXCIsIFwib25Gb2N1c091dHNpZGVcIiwgXCJvbkludGVyYWN0T3V0c2lkZVwiLCBcIm9uRGlzbWlzc1wiLCBcImJ5cGFzc1RvcE1vc3RMYXllckNoZWNrXCJdKTtcbiAgY29uc3QgbmVzdGVkTGF5ZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW10pO1xuICBjb25zdCByZWdpc3Rlck5lc3RlZExheWVyID0gKGVsZW1lbnQpID0+IHtcbiAgICBuZXN0ZWRMYXllcnMuYWRkKGVsZW1lbnQpO1xuICAgIGNvbnN0IHBhcmVudFVucmVnaXN0ZXIgPSBwYXJlbnRDb250ZXh0Py5yZWdpc3Rlck5lc3RlZExheWVyKGVsZW1lbnQpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBuZXN0ZWRMYXllcnMuZGVsZXRlKGVsZW1lbnQpO1xuICAgICAgcGFyZW50VW5yZWdpc3Rlcj8uKCk7XG4gICAgfTtcbiAgfTtcbiAgY29uc3Qgc2hvdWxkRXhjbHVkZUVsZW1lbnQgPSAoZWxlbWVudCkgPT4ge1xuICAgIGlmICghcmVmKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBsb2NhbC5leGNsdWRlZEVsZW1lbnRzPy5zb21lKChub2RlKSA9PiBjb250YWlucyhub2RlKCksIGVsZW1lbnQpKSB8fCBbLi4ubmVzdGVkTGF5ZXJzXS5zb21lKChsYXllcikgPT4gY29udGFpbnMobGF5ZXIsIGVsZW1lbnQpKTtcbiAgfTtcbiAgY29uc3Qgb25Qb2ludGVyRG93bk91dHNpZGUgPSAoZTIpID0+IHtcbiAgICBpZiAoIXJlZiB8fCBsYXllclN0YWNrLmlzQmVsb3dQb2ludGVyQmxvY2tpbmdMYXllcihyZWYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghbG9jYWwuYnlwYXNzVG9wTW9zdExheWVyQ2hlY2sgJiYgIWxheWVyU3RhY2suaXNUb3BNb3N0TGF5ZXIocmVmKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsb2NhbC5vblBvaW50ZXJEb3duT3V0c2lkZT8uKGUyKTtcbiAgICBsb2NhbC5vbkludGVyYWN0T3V0c2lkZT8uKGUyKTtcbiAgICBpZiAoIWUyLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIGxvY2FsLm9uRGlzbWlzcz8uKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbkZvY3VzT3V0c2lkZSA9IChlMikgPT4ge1xuICAgIGxvY2FsLm9uRm9jdXNPdXRzaWRlPy4oZTIpO1xuICAgIGxvY2FsLm9uSW50ZXJhY3RPdXRzaWRlPy4oZTIpO1xuICAgIGlmICghZTIuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgbG9jYWwub25EaXNtaXNzPy4oKTtcbiAgICB9XG4gIH07XG4gIGNyZWF0ZUludGVyYWN0T3V0c2lkZSh7XG4gICAgc2hvdWxkRXhjbHVkZUVsZW1lbnQsXG4gICAgb25Qb2ludGVyRG93bk91dHNpZGUsXG4gICAgb25Gb2N1c091dHNpZGVcbiAgfSwgKCkgPT4gcmVmKTtcbiAgY3JlYXRlRXNjYXBlS2V5RG93bih7XG4gICAgb3duZXJEb2N1bWVudDogKCkgPT4gZ2V0RG9jdW1lbnQocmVmKSxcbiAgICBvbkVzY2FwZUtleURvd246IChlMikgPT4ge1xuICAgICAgaWYgKCFyZWYgfHwgIWxheWVyU3RhY2suaXNUb3BNb3N0TGF5ZXIocmVmKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsb2NhbC5vbkVzY2FwZUtleURvd24/LihlMik7XG4gICAgICBpZiAoIWUyLmRlZmF1bHRQcmV2ZW50ZWQgJiYgbG9jYWwub25EaXNtaXNzKSB7XG4gICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGxvY2FsLm9uRGlzbWlzcygpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIG9uTW91bnQoKCkgPT4ge1xuICAgIGlmICghcmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxheWVyU3RhY2suYWRkTGF5ZXIoe1xuICAgICAgbm9kZTogcmVmLFxuICAgICAgaXNQb2ludGVyQmxvY2tpbmc6IGxvY2FsLmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxcbiAgICAgIGRpc21pc3M6IGxvY2FsLm9uRGlzbWlzc1xuICAgIH0pO1xuICAgIGNvbnN0IHVucmVnaXN0ZXJGcm9tUGFyZW50TGF5ZXIgPSBwYXJlbnRDb250ZXh0Py5yZWdpc3Rlck5lc3RlZExheWVyKHJlZik7XG4gICAgbGF5ZXJTdGFjay5hc3NpZ25Qb2ludGVyRXZlbnRUb0xheWVycygpO1xuICAgIGxheWVyU3RhY2suZGlzYWJsZUJvZHlQb2ludGVyRXZlbnRzKHJlZik7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIGlmICghcmVmKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxheWVyU3RhY2sucmVtb3ZlTGF5ZXIocmVmKTtcbiAgICAgIHVucmVnaXN0ZXJGcm9tUGFyZW50TGF5ZXI/LigpO1xuICAgICAgbGF5ZXJTdGFjay5hc3NpZ25Qb2ludGVyRXZlbnRUb0xheWVycygpO1xuICAgICAgbGF5ZXJTdGFjay5yZXN0b3JlQm9keVBvaW50ZXJFdmVudHMocmVmKTtcbiAgICB9KTtcbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdChvbihbKCkgPT4gcmVmLCAoKSA9PiBsb2NhbC5kaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHNdLCAoW3JlZjIsIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50c10pID0+IHtcbiAgICBpZiAoIXJlZjIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbGF5ZXIgPSBsYXllclN0YWNrLmZpbmQocmVmMik7XG4gICAgaWYgKGxheWVyICYmIGxheWVyLmlzUG9pbnRlckJsb2NraW5nICE9PSBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMpIHtcbiAgICAgIGxheWVyLmlzUG9pbnRlckJsb2NraW5nID0gZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzO1xuICAgICAgbGF5ZXJTdGFjay5hc3NpZ25Qb2ludGVyRXZlbnRUb0xheWVycygpO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzKSB7XG4gICAgICBsYXllclN0YWNrLmRpc2FibGVCb2R5UG9pbnRlckV2ZW50cyhyZWYyKTtcbiAgICB9XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIGxheWVyU3RhY2sucmVzdG9yZUJvZHlQb2ludGVyRXZlbnRzKHJlZjIpO1xuICAgIH0pO1xuICB9LCB7XG4gICAgZGVmZXI6IHRydWVcbiAgfSkpO1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIHJlZ2lzdGVyTmVzdGVkTGF5ZXJcbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEaXNtaXNzYWJsZUxheWVyQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjb250ZXh0LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBhczogXCJkaXZcIixcbiAgICAgICAgcmVmKHIkKSB7XG4gICAgICAgICAgY29uc3QgX3JlZiQgPSBtZXJnZVJlZnMoKGVsKSA9PiByZWYgPSBlbCwgbG9jYWwucmVmKTtcbiAgICAgICAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiAmJiBfcmVmJChyJCk7XG4gICAgICAgIH1cbiAgICAgIH0sIG90aGVycykpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rLzdMQ0FOR0hELmpzXG5mdW5jdGlvbiBjcmVhdGVEaXNjbG9zdXJlU3RhdGUocHJvcHMgPSB7fSkge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gY3JlYXRlQ29udHJvbGxhYmxlQm9vbGVhblNpZ25hbCh7XG4gICAgdmFsdWU6ICgpID0+IGFjY2Vzcyhwcm9wcy5vcGVuKSxcbiAgICBkZWZhdWx0VmFsdWU6ICgpID0+ICEhYWNjZXNzKHByb3BzLmRlZmF1bHRPcGVuKSxcbiAgICBvbkNoYW5nZTogKHZhbHVlKSA9PiBwcm9wcy5vbk9wZW5DaGFuZ2U/Lih2YWx1ZSlcbiAgfSk7XG4gIGNvbnN0IG9wZW4gPSAoKSA9PiB7XG4gICAgc2V0SXNPcGVuKHRydWUpO1xuICB9O1xuICBjb25zdCBjbG9zZSA9ICgpID0+IHtcbiAgICBzZXRJc09wZW4oZmFsc2UpO1xuICB9O1xuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgaXNPcGVuKCkgPyBjbG9zZSgpIDogb3BlbigpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGlzT3BlbixcbiAgICBzZXRJc09wZW4sXG4gICAgb3BlbixcbiAgICBjbG9zZSxcbiAgICB0b2dnbGVcbiAgfTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvUTJCT0ZLN0kuanNcbnZhciByYWRpb19ncm91cF9leHBvcnRzID0ge307XG5fX2V4cG9ydChyYWRpb19ncm91cF9leHBvcnRzLCB7XG4gIERlc2NyaXB0aW9uOiAoKSA9PiBGb3JtQ29udHJvbERlc2NyaXB0aW9uLFxuICBFcnJvck1lc3NhZ2U6ICgpID0+IEZvcm1Db250cm9sRXJyb3JNZXNzYWdlLFxuICBJdGVtOiAoKSA9PiBSYWRpb0dyb3VwSXRlbSxcbiAgSXRlbUNvbnRyb2w6ICgpID0+IFJhZGlvR3JvdXBJdGVtQ29udHJvbCxcbiAgSXRlbURlc2NyaXB0aW9uOiAoKSA9PiBSYWRpb0dyb3VwSXRlbURlc2NyaXB0aW9uLFxuICBJdGVtSW5kaWNhdG9yOiAoKSA9PiBSYWRpb0dyb3VwSXRlbUluZGljYXRvcixcbiAgSXRlbUlucHV0OiAoKSA9PiBSYWRpb0dyb3VwSXRlbUlucHV0LFxuICBJdGVtTGFiZWw6ICgpID0+IFJhZGlvR3JvdXBJdGVtTGFiZWwsXG4gIExhYmVsOiAoKSA9PiBSYWRpb0dyb3VwTGFiZWwsXG4gIFJhZGlvR3JvdXA6ICgpID0+IFJhZGlvR3JvdXAsXG4gIFJvb3Q6ICgpID0+IFJhZGlvR3JvdXBSb290XG59KTtcbnZhciBSYWRpb0dyb3VwQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZVJhZGlvR3JvdXBDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChSYWRpb0dyb3VwQ29udGV4dCk7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJba29iYWx0ZV06IGB1c2VSYWRpb0dyb3VwQ29udGV4dGAgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBSYWRpb0dyb3VwYCBjb21wb25lbnRcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgUmFkaW9Hcm91cEl0ZW1Db250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xuZnVuY3Rpb24gdXNlUmFkaW9Hcm91cEl0ZW1Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChSYWRpb0dyb3VwSXRlbUNvbnRleHQpO1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW2tvYmFsdGVdOiBgdXNlUmFkaW9Hcm91cEl0ZW1Db250ZXh0YCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYFJhZGlvR3JvdXAuSXRlbWAgY29tcG9uZW50XCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gUmFkaW9Hcm91cEl0ZW0ocHJvcHMpIHtcbiAgY29uc3QgZm9ybUNvbnRyb2xDb250ZXh0ID0gdXNlRm9ybUNvbnRyb2xDb250ZXh0KCk7XG4gIGNvbnN0IHJhZGlvR3JvdXBDb250ZXh0ID0gdXNlUmFkaW9Hcm91cENvbnRleHQoKTtcbiAgY29uc3QgZGVmYXVsdElkID0gYCR7Zm9ybUNvbnRyb2xDb250ZXh0LmdlbmVyYXRlSWQoXCJpdGVtXCIpfS0ke2NyZWF0ZVVuaXF1ZUlkKCl9YDtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IGRlZmF1bHRJZFxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcInZhbHVlXCIsIFwiZGlzYWJsZWRcIiwgXCJvblBvaW50ZXJEb3duXCJdKTtcbiAgY29uc3QgW2lucHV0SWQsIHNldElucHV0SWRdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IFtsYWJlbElkLCBzZXRMYWJlbElkXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbZGVzY3JpcHRpb25JZCwgc2V0RGVzY3JpcHRpb25JZF0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgW2lucHV0UmVmLCBzZXRJbnB1dFJlZl0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgW2lzRm9jdXNlZCwgc2V0SXNGb2N1c2VkXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSk7XG4gIGNvbnN0IGlzU2VsZWN0ZWQgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcmFkaW9Hcm91cENvbnRleHQuaXNTZWxlY3RlZFZhbHVlKGxvY2FsLnZhbHVlKTtcbiAgfSk7XG4gIGNvbnN0IGlzRGlzYWJsZWQgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gbG9jYWwuZGlzYWJsZWQgfHwgZm9ybUNvbnRyb2xDb250ZXh0LmlzRGlzYWJsZWQoKSB8fCBmYWxzZTtcbiAgfSk7XG4gIGNvbnN0IG9uUG9pbnRlckRvd24gPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25Qb2ludGVyRG93bik7XG4gICAgaWYgKGlzRm9jdXNlZCgpKSB7XG4gICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZGF0YXNldCA9IGNyZWF0ZU1lbW8oKCkgPT4gKHtcbiAgICAuLi5mb3JtQ29udHJvbENvbnRleHQuZGF0YXNldCgpLFxuICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkKCkgPyBcIlwiIDogdm9pZCAwLFxuICAgIFwiZGF0YS1jaGVja2VkXCI6IGlzU2VsZWN0ZWQoKSA/IFwiXCIgOiB2b2lkIDBcbiAgfSkpO1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIHZhbHVlOiAoKSA9PiBsb2NhbC52YWx1ZSxcbiAgICBkYXRhc2V0LFxuICAgIGlzU2VsZWN0ZWQsXG4gICAgaXNEaXNhYmxlZCxcbiAgICBpbnB1dElkLFxuICAgIGxhYmVsSWQsXG4gICAgZGVzY3JpcHRpb25JZCxcbiAgICBpbnB1dFJlZixcbiAgICBzZWxlY3Q6ICgpID0+IHJhZGlvR3JvdXBDb250ZXh0LnNldFNlbGVjdGVkVmFsdWUobG9jYWwudmFsdWUpLFxuICAgIGdlbmVyYXRlSWQ6IGNyZWF0ZUdlbmVyYXRlSWQoKCkgPT4gb3RoZXJzLmlkKSxcbiAgICByZWdpc3RlcklucHV0OiBjcmVhdGVSZWdpc3RlcklkKHNldElucHV0SWQpLFxuICAgIHJlZ2lzdGVyTGFiZWw6IGNyZWF0ZVJlZ2lzdGVySWQoc2V0TGFiZWxJZCksXG4gICAgcmVnaXN0ZXJEZXNjcmlwdGlvbjogY3JlYXRlUmVnaXN0ZXJJZChzZXREZXNjcmlwdGlvbklkKSxcbiAgICBzZXRJc0ZvY3VzZWQsXG4gICAgc2V0SW5wdXRSZWZcbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChSYWRpb0dyb3VwSXRlbUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dCxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICAgICAgYXM6IFwiZGl2XCIsXG4gICAgICAgIHJvbGU6IFwiZ3JvdXBcIixcbiAgICAgICAgb25Qb2ludGVyRG93blxuICAgICAgfSwgZGF0YXNldCwgb3RoZXJzKSk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIFJhZGlvR3JvdXBJdGVtQ29udHJvbChwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlUmFkaW9Hcm91cEl0ZW1Db250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBjb250ZXh0LmdlbmVyYXRlSWQoXCJjb250cm9sXCIpXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wib25DbGlja1wiLCBcIm9uS2V5RG93blwiXSk7XG4gIGNvbnN0IG9uQ2xpY2sgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25DbGljayk7XG4gICAgY29udGV4dC5zZWxlY3QoKTtcbiAgICBjb250ZXh0LmlucHV0UmVmKCk/LmZvY3VzKCk7XG4gIH07XG4gIGNvbnN0IG9uS2V5RG93biA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vbktleURvd24pO1xuICAgIGlmIChlMi5rZXkgPT09IEV2ZW50S2V5LlNwYWNlKSB7XG4gICAgICBjb250ZXh0LnNlbGVjdCgpO1xuICAgICAgY29udGV4dC5pbnB1dFJlZigpPy5mb2N1cygpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiZGl2XCIsXG4gICAgb25DbGljayxcbiAgICBvbktleURvd25cbiAgfSwgKCkgPT4gY29udGV4dC5kYXRhc2V0KCksIG90aGVycykpO1xufVxuZnVuY3Rpb24gUmFkaW9Hcm91cEl0ZW1EZXNjcmlwdGlvbihwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlUmFkaW9Hcm91cEl0ZW1Db250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBjb250ZXh0LmdlbmVyYXRlSWQoXCJkZXNjcmlwdGlvblwiKVxuICB9LCBwcm9wcyk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiBvbkNsZWFudXAoY29udGV4dC5yZWdpc3RlckRlc2NyaXB0aW9uKG1lcmdlZFByb3BzLmlkKSkpO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICBhczogXCJkaXZcIlxuICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgbWVyZ2VkUHJvcHMpKTtcbn1cbmZ1bmN0aW9uIFJhZGlvR3JvdXBJdGVtSW5kaWNhdG9yKHByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VSYWRpb0dyb3VwSXRlbUNvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IGNvbnRleHQuZ2VuZXJhdGVJZChcImluZGljYXRvclwiKVxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcInJlZlwiLCBcImZvcmNlTW91bnRcIl0pO1xuICBjb25zdCBbcmVmLCBzZXRSZWZdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IHtcbiAgICBwcmVzZW50XG4gIH0gPSBzcmNfZGVmYXVsdCh7XG4gICAgc2hvdzogKCkgPT4gbG9jYWwuZm9yY2VNb3VudCB8fCBjb250ZXh0LmlzU2VsZWN0ZWQoKSxcbiAgICBlbGVtZW50OiAoKSA9PiByZWYoKSA/PyBudWxsXG4gIH0pO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICBnZXQgd2hlbigpIHtcbiAgICAgIHJldHVybiBwcmVzZW50KCk7XG4gICAgfSxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICAgICAgYXM6IFwiZGl2XCIsXG4gICAgICAgIHJlZihyJCkge1xuICAgICAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKHNldFJlZiwgbG9jYWwucmVmKTtcbiAgICAgICAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiAmJiBfcmVmJChyJCk7XG4gICAgICAgIH1cbiAgICAgIH0sICgpID0+IGNvbnRleHQuZGF0YXNldCgpLCBvdGhlcnMpKTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gUmFkaW9Hcm91cEl0ZW1JbnB1dChwcm9wcykge1xuICBjb25zdCBmb3JtQ29udHJvbENvbnRleHQgPSB1c2VGb3JtQ29udHJvbENvbnRleHQoKTtcbiAgY29uc3QgcmFkaW9Hcm91cENvbnRleHQgPSB1c2VSYWRpb0dyb3VwQ29udGV4dCgpO1xuICBjb25zdCByYWRpb0NvbnRleHQgPSB1c2VSYWRpb0dyb3VwSXRlbUNvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IHJhZGlvQ29udGV4dC5nZW5lcmF0ZUlkKFwiaW5wdXRcIilcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJyZWZcIiwgXCJzdHlsZVwiLCBcImFyaWEtbGFiZWxsZWRieVwiLCBcImFyaWEtZGVzY3JpYmVkYnlcIiwgXCJvbkNoYW5nZVwiLCBcIm9uRm9jdXNcIiwgXCJvbkJsdXJcIl0pO1xuICBjb25zdCBhcmlhTGFiZWxsZWRCeSA9ICgpID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAgbG9jYWxbXCJhcmlhLWxhYmVsbGVkYnlcIl0sXG4gICAgICByYWRpb0NvbnRleHQubGFiZWxJZCgpLFxuICAgICAgLy8gSWYgdGhlcmUgaXMgYm90aCBhbiBhcmlhLWxhYmVsIGFuZCBhcmlhLWxhYmVsbGVkYnksIGFkZCB0aGUgaW5wdXQgaXRzZWxmIGhhcyBhbiBhcmlhLWxhYmVsbGVkYnlcbiAgICAgIGxvY2FsW1wiYXJpYS1sYWJlbGxlZGJ5XCJdICE9IG51bGwgJiYgb3RoZXJzW1wiYXJpYS1sYWJlbFwiXSAhPSBudWxsID8gb3RoZXJzLmlkIDogdm9pZCAwXG4gICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIikgfHwgdm9pZCAwO1xuICB9O1xuICBjb25zdCBhcmlhRGVzY3JpYmVkQnkgPSAoKSA9PiB7XG4gICAgcmV0dXJuIFtsb2NhbFtcImFyaWEtZGVzY3JpYmVkYnlcIl0sIHJhZGlvQ29udGV4dC5kZXNjcmlwdGlvbklkKCksIHJhZGlvR3JvdXBDb250ZXh0LmFyaWFEZXNjcmliZWRCeSgpXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIikgfHwgdm9pZCAwO1xuICB9O1xuICBjb25zdCBbaXNJbnRlcm5hbENoYW5nZUV2ZW50LCBzZXRJc0ludGVybmFsQ2hhbmdlRXZlbnRdID0gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbiAgY29uc3Qgb25DaGFuZ2UgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25DaGFuZ2UpO1xuICAgIGUyLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghaXNJbnRlcm5hbENoYW5nZUV2ZW50KCkpIHtcbiAgICAgIHJhZGlvR3JvdXBDb250ZXh0LnNldFNlbGVjdGVkVmFsdWUocmFkaW9Db250ZXh0LnZhbHVlKCkpO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZTIudGFyZ2V0O1xuICAgICAgdGFyZ2V0LmNoZWNrZWQgPSByYWRpb0NvbnRleHQuaXNTZWxlY3RlZCgpO1xuICAgIH1cbiAgICBzZXRJc0ludGVybmFsQ2hhbmdlRXZlbnQoZmFsc2UpO1xuICB9O1xuICBjb25zdCBvbkZvY3VzID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uRm9jdXMpO1xuICAgIHJhZGlvQ29udGV4dC5zZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gIH07XG4gIGNvbnN0IG9uQmx1ciA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vbkJsdXIpO1xuICAgIHJhZGlvQ29udGV4dC5zZXRJc0ZvY3VzZWQoZmFsc2UpO1xuICB9O1xuICBjcmVhdGVFZmZlY3Qob24oWygpID0+IHJhZGlvQ29udGV4dC5pc1NlbGVjdGVkKCksICgpID0+IHJhZGlvQ29udGV4dC52YWx1ZSgpXSwgKGMyKSA9PiB7XG4gICAgaWYgKCFjMlswXSAmJiBjMlsxXSA9PT0gcmFkaW9Db250ZXh0LnZhbHVlKCkpXG4gICAgICByZXR1cm47XG4gICAgc2V0SXNJbnRlcm5hbENoYW5nZUV2ZW50KHRydWUpO1xuICAgIGNvbnN0IHJlZiA9IHJhZGlvQ29udGV4dC5pbnB1dFJlZigpO1xuICAgIHJlZj8uZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJpbnB1dFwiLCB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pKTtcbiAgICByZWY/LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwiY2hhbmdlXCIsIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgfSkpO1xuICB9LCB7XG4gICAgZGVmZXI6IHRydWVcbiAgfSkpO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4gb25DbGVhbnVwKHJhZGlvQ29udGV4dC5yZWdpc3RlcklucHV0KG90aGVycy5pZCkpKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiaW5wdXRcIixcbiAgICByZWYociQpIHtcbiAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKHJhZGlvQ29udGV4dC5zZXRJbnB1dFJlZiwgbG9jYWwucmVmKTtcbiAgICAgIHR5cGVvZiBfcmVmJCA9PT0gXCJmdW5jdGlvblwiICYmIF9yZWYkKHIkKTtcbiAgICB9LFxuICAgIHR5cGU6IFwicmFkaW9cIixcbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgIHJldHVybiBmb3JtQ29udHJvbENvbnRleHQubmFtZSgpO1xuICAgIH0sXG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgcmV0dXJuIHJhZGlvQ29udGV4dC52YWx1ZSgpO1xuICAgIH0sXG4gICAgZ2V0IGNoZWNrZWQoKSB7XG4gICAgICByZXR1cm4gcmFkaW9Db250ZXh0LmlzU2VsZWN0ZWQoKTtcbiAgICB9LFxuICAgIGdldCByZXF1aXJlZCgpIHtcbiAgICAgIHJldHVybiBmb3JtQ29udHJvbENvbnRleHQuaXNSZXF1aXJlZCgpO1xuICAgIH0sXG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIHJhZGlvQ29udGV4dC5pc0Rpc2FibGVkKCk7XG4gICAgfSxcbiAgICBnZXQgcmVhZG9ubHkoKSB7XG4gICAgICByZXR1cm4gZm9ybUNvbnRyb2xDb250ZXh0LmlzUmVhZE9ubHkoKTtcbiAgICB9LFxuICAgIGdldCBzdHlsZSgpIHtcbiAgICAgIHJldHVybiBjb21iaW5lU3R5bGUoe1xuICAgICAgICAuLi52aXN1YWxseUhpZGRlblN0eWxlc1xuICAgICAgfSwgbG9jYWwuc3R5bGUpO1xuICAgIH0sXG4gICAgZ2V0IFtcImFyaWEtbGFiZWxsZWRieVwiXSgpIHtcbiAgICAgIHJldHVybiBhcmlhTGFiZWxsZWRCeSgpO1xuICAgIH0sXG4gICAgZ2V0IFtcImFyaWEtZGVzY3JpYmVkYnlcIl0oKSB7XG4gICAgICByZXR1cm4gYXJpYURlc2NyaWJlZEJ5KCk7XG4gICAgfSxcbiAgICBvbkNoYW5nZSxcbiAgICBvbkZvY3VzLFxuICAgIG9uQmx1clxuICB9LCAoKSA9PiByYWRpb0NvbnRleHQuZGF0YXNldCgpLCBvdGhlcnMpKTtcbn1cbmZ1bmN0aW9uIFJhZGlvR3JvdXBJdGVtTGFiZWwocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZVJhZGlvR3JvdXBJdGVtQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogY29udGV4dC5nZW5lcmF0ZUlkKFwibGFiZWxcIilcbiAgfSwgcHJvcHMpO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4gb25DbGVhbnVwKGNvbnRleHQucmVnaXN0ZXJMYWJlbChtZXJnZWRQcm9wcy5pZCkpKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwibGFiZWxcIixcbiAgICBnZXQgW1wiZm9yXCJdKCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuaW5wdXRJZCgpO1xuICAgIH1cbiAgfSwgKCkgPT4gY29udGV4dC5kYXRhc2V0KCksIG1lcmdlZFByb3BzKSk7XG59XG5mdW5jdGlvbiBSYWRpb0dyb3VwTGFiZWwocHJvcHMpIHtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChGb3JtQ29udHJvbExhYmVsLCBtZXJnZVByb3BzKHtcbiAgICBhczogXCJzcGFuXCJcbiAgfSwgcHJvcHMpKTtcbn1cbmZ1bmN0aW9uIFJhZGlvR3JvdXBSb290KHByb3BzKSB7XG4gIGxldCByZWY7XG4gIGNvbnN0IGRlZmF1bHRJZCA9IGByYWRpb2dyb3VwLSR7Y3JlYXRlVW5pcXVlSWQoKX1gO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogZGVmYXVsdElkLFxuICAgIG9yaWVudGF0aW9uOiBcInZlcnRpY2FsXCJcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIGZvcm1Db250cm9sUHJvcHMsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJyZWZcIiwgXCJ2YWx1ZVwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcIm9uQ2hhbmdlXCIsIFwib3JpZW50YXRpb25cIiwgXCJhcmlhLWxhYmVsbGVkYnlcIiwgXCJhcmlhLWRlc2NyaWJlZGJ5XCJdLCBGT1JNX0NPTlRST0xfUFJPUF9OQU1FUyk7XG4gIGNvbnN0IFtzZWxlY3RlZCwgc2V0U2VsZWN0ZWRdID0gY3JlYXRlQ29udHJvbGxhYmxlU2lnbmFsKHtcbiAgICB2YWx1ZTogKCkgPT4gbG9jYWwudmFsdWUsXG4gICAgZGVmYXVsdFZhbHVlOiAoKSA9PiBsb2NhbC5kZWZhdWx0VmFsdWUsXG4gICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4gbG9jYWwub25DaGFuZ2U/Lih2YWx1ZSlcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICBmb3JtQ29udHJvbENvbnRleHRcbiAgfSA9IGNyZWF0ZUZvcm1Db250cm9sKGZvcm1Db250cm9sUHJvcHMpO1xuICBjcmVhdGVGb3JtUmVzZXRMaXN0ZW5lcigoKSA9PiByZWYsICgpID0+IHNldFNlbGVjdGVkKGxvY2FsLmRlZmF1bHRWYWx1ZSA/PyBcIlwiKSk7XG4gIGNvbnN0IGFyaWFMYWJlbGxlZEJ5ID0gKCkgPT4ge1xuICAgIHJldHVybiBmb3JtQ29udHJvbENvbnRleHQuZ2V0QXJpYUxhYmVsbGVkQnkoYWNjZXNzKGZvcm1Db250cm9sUHJvcHMuaWQpLCBvdGhlcnNbXCJhcmlhLWxhYmVsXCJdLCBsb2NhbFtcImFyaWEtbGFiZWxsZWRieVwiXSk7XG4gIH07XG4gIGNvbnN0IGFyaWFEZXNjcmliZWRCeSA9ICgpID0+IHtcbiAgICByZXR1cm4gZm9ybUNvbnRyb2xDb250ZXh0LmdldEFyaWFEZXNjcmliZWRCeShsb2NhbFtcImFyaWEtZGVzY3JpYmVkYnlcIl0pO1xuICB9O1xuICBjb25zdCBpc1NlbGVjdGVkVmFsdWUgPSAodmFsdWUpID0+IHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHNlbGVjdGVkKCk7XG4gIH07XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgYXJpYURlc2NyaWJlZEJ5LFxuICAgIGlzU2VsZWN0ZWRWYWx1ZSxcbiAgICBzZXRTZWxlY3RlZFZhbHVlOiAodmFsdWUpID0+IHtcbiAgICAgIGlmIChmb3JtQ29udHJvbENvbnRleHQuaXNSZWFkT25seSgpIHx8IGZvcm1Db250cm9sQ29udGV4dC5pc0Rpc2FibGVkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0U2VsZWN0ZWQodmFsdWUpO1xuICAgICAgaWYgKHJlZilcbiAgICAgICAgZm9yIChjb25zdCBlbCBvZiByZWYucXVlcnlTZWxlY3RvckFsbChcIlt0eXBlPSdyYWRpbyddXCIpKSB7XG4gICAgICAgICAgY29uc3QgcmFkaW8gPSBlbDtcbiAgICAgICAgICByYWRpby5jaGVja2VkID0gaXNTZWxlY3RlZFZhbHVlKHJhZGlvLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChGb3JtQ29udHJvbENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogZm9ybUNvbnRyb2xDb250ZXh0LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUmFkaW9Hcm91cENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IGNvbnRleHQsXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICAgICAgICAgIGFzOiBcImRpdlwiLFxuICAgICAgICAgICAgcmVmKHIkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKChlbCkgPT4gcmVmID0gZWwsIGxvY2FsLnJlZik7XG4gICAgICAgICAgICAgIHR5cGVvZiBfcmVmJCA9PT0gXCJmdW5jdGlvblwiICYmIF9yZWYkKHIkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb2xlOiBcInJhZGlvZ3JvdXBcIixcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjY2Vzcyhmb3JtQ29udHJvbFByb3BzLmlkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgW1wiYXJpYS1pbnZhbGlkXCJdKCkge1xuICAgICAgICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2xDb250ZXh0LnZhbGlkYXRpb25TdGF0ZSgpID09PSBcImludmFsaWRcIiB8fCB2b2lkIDA7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IFtcImFyaWEtcmVxdWlyZWRcIl0oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmb3JtQ29udHJvbENvbnRleHQuaXNSZXF1aXJlZCgpIHx8IHZvaWQgMDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgW1wiYXJpYS1kaXNhYmxlZFwiXSgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1Db250cm9sQ29udGV4dC5pc0Rpc2FibGVkKCkgfHwgdm9pZCAwO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBbXCJhcmlhLXJlYWRvbmx5XCJdKCkge1xuICAgICAgICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2xDb250ZXh0LmlzUmVhZE9ubHkoKSB8fCB2b2lkIDA7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IFtcImFyaWEtb3JpZW50YXRpb25cIl0oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBsb2NhbC5vcmllbnRhdGlvbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgW1wiYXJpYS1sYWJlbGxlZGJ5XCJdKCkge1xuICAgICAgICAgICAgICByZXR1cm4gYXJpYUxhYmVsbGVkQnkoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgW1wiYXJpYS1kZXNjcmliZWRieVwiXSgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGFyaWFEZXNjcmliZWRCeSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sICgpID0+IGZvcm1Db250cm9sQ29udGV4dC5kYXRhc2V0KCksIG90aGVycykpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xufVxudmFyIFJhZGlvR3JvdXAgPSBPYmplY3QuYXNzaWduKFJhZGlvR3JvdXBSb290LCB7XG4gIERlc2NyaXB0aW9uOiBGb3JtQ29udHJvbERlc2NyaXB0aW9uLFxuICBFcnJvck1lc3NhZ2U6IEZvcm1Db250cm9sRXJyb3JNZXNzYWdlLFxuICBJdGVtOiBSYWRpb0dyb3VwSXRlbSxcbiAgSXRlbUNvbnRyb2w6IFJhZGlvR3JvdXBJdGVtQ29udHJvbCxcbiAgSXRlbURlc2NyaXB0aW9uOiBSYWRpb0dyb3VwSXRlbURlc2NyaXB0aW9uLFxuICBJdGVtSW5kaWNhdG9yOiBSYWRpb0dyb3VwSXRlbUluZGljYXRvcixcbiAgSXRlbUlucHV0OiBSYWRpb0dyb3VwSXRlbUlucHV0LFxuICBJdGVtTGFiZWw6IFJhZGlvR3JvdXBJdGVtTGFiZWwsXG4gIExhYmVsOiBSYWRpb0dyb3VwTGFiZWxcbn0pO1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9HTEtDMlFGRi5qc1xudmFyIExpc3RLZXlib2FyZERlbGVnYXRlID0gY2xhc3Mge1xuICBjb2xsZWN0aW9uO1xuICByZWY7XG4gIGNvbGxhdG9yO1xuICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uLCByZWYsIGNvbGxhdG9yKSB7XG4gICAgdGhpcy5jb2xsZWN0aW9uID0gY29sbGVjdGlvbjtcbiAgICB0aGlzLnJlZiA9IHJlZjtcbiAgICB0aGlzLmNvbGxhdG9yID0gY29sbGF0b3I7XG4gIH1cbiAgZ2V0S2V5QmVsb3coa2V5KSB7XG4gICAgbGV0IGtleUFmdGVyID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0S2V5QWZ0ZXIoa2V5KTtcbiAgICB3aGlsZSAoa2V5QWZ0ZXIgIT0gbnVsbCkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEl0ZW0oa2V5QWZ0ZXIpO1xuICAgICAgaWYgKGl0ZW0gJiYgaXRlbS50eXBlID09PSBcIml0ZW1cIiAmJiAhaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4ga2V5QWZ0ZXI7XG4gICAgICB9XG4gICAgICBrZXlBZnRlciA9IHRoaXMuY29sbGVjdGlvbigpLmdldEtleUFmdGVyKGtleUFmdGVyKTtcbiAgICB9XG4gIH1cbiAgZ2V0S2V5QWJvdmUoa2V5KSB7XG4gICAgbGV0IGtleUJlZm9yZSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEtleUJlZm9yZShrZXkpO1xuICAgIHdoaWxlIChrZXlCZWZvcmUgIT0gbnVsbCkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEl0ZW0oa2V5QmVmb3JlKTtcbiAgICAgIGlmIChpdGVtICYmIGl0ZW0udHlwZSA9PT0gXCJpdGVtXCIgJiYgIWl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGtleUJlZm9yZTtcbiAgICAgIH1cbiAgICAgIGtleUJlZm9yZSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEtleUJlZm9yZShrZXlCZWZvcmUpO1xuICAgIH1cbiAgfVxuICBnZXRGaXJzdEtleSgpIHtcbiAgICBsZXQga2V5ID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0Rmlyc3RLZXkoKTtcbiAgICB3aGlsZSAoa2V5ICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRJdGVtKGtleSk7XG4gICAgICBpZiAoaXRlbSAmJiBpdGVtLnR5cGUgPT09IFwiaXRlbVwiICYmICFpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgICB9XG4gICAgICBrZXkgPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRLZXlBZnRlcihrZXkpO1xuICAgIH1cbiAgfVxuICBnZXRMYXN0S2V5KCkge1xuICAgIGxldCBrZXkgPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRMYXN0S2V5KCk7XG4gICAgd2hpbGUgKGtleSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbShrZXkpO1xuICAgICAgaWYgKGl0ZW0gJiYgaXRlbS50eXBlID09PSBcIml0ZW1cIiAmJiAhaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfVxuICAgICAga2V5ID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0S2V5QmVmb3JlKGtleSk7XG4gICAgfVxuICB9XG4gIGdldEl0ZW0oa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMucmVmPy4oKT8ucXVlcnlTZWxlY3RvcihgW2RhdGEta2V5PVwiJHtrZXl9XCJdYCkgPz8gbnVsbDtcbiAgfVxuICAvLyBUT0RPOiBub3Qgd29ya2luZyBjb3JyZWN0bHlcbiAgZ2V0S2V5UGFnZUFib3ZlKGtleSkge1xuICAgIGNvbnN0IG1lbnUgPSB0aGlzLnJlZj8uKCk7XG4gICAgbGV0IGl0ZW0gPSB0aGlzLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoIW1lbnUgfHwgIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGFnZVkgPSBNYXRoLm1heChcbiAgICAgIDAsXG4gICAgICBpdGVtLm9mZnNldFRvcCArIGl0ZW0ub2Zmc2V0SGVpZ2h0IC0gbWVudS5vZmZzZXRIZWlnaHRcbiAgICApO1xuICAgIGxldCBrZXlBYm92ZSA9IGtleTtcbiAgICB3aGlsZSAoa2V5QWJvdmUgJiYgaXRlbSAmJiBpdGVtLm9mZnNldFRvcCA+IHBhZ2VZKSB7XG4gICAgICBrZXlBYm92ZSA9IHRoaXMuZ2V0S2V5QWJvdmUoa2V5QWJvdmUpO1xuICAgICAgaXRlbSA9IGtleUFib3ZlICE9IG51bGwgPyB0aGlzLmdldEl0ZW0oa2V5QWJvdmUpIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGtleUFib3ZlO1xuICB9XG4gIC8vIFRPRE86IG5vdCB3b3JraW5nIGNvcnJlY3RseVxuICBnZXRLZXlQYWdlQmVsb3coa2V5KSB7XG4gICAgY29uc3QgbWVudSA9IHRoaXMucmVmPy4oKTtcbiAgICBsZXQgaXRlbSA9IHRoaXMuZ2V0SXRlbShrZXkpO1xuICAgIGlmICghbWVudSB8fCAhaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYWdlWSA9IE1hdGgubWluKFxuICAgICAgbWVudS5zY3JvbGxIZWlnaHQsXG4gICAgICBpdGVtLm9mZnNldFRvcCAtIGl0ZW0ub2Zmc2V0SGVpZ2h0ICsgbWVudS5vZmZzZXRIZWlnaHRcbiAgICApO1xuICAgIGxldCBrZXlCZWxvdyA9IGtleTtcbiAgICB3aGlsZSAoa2V5QmVsb3cgJiYgaXRlbSAmJiBpdGVtLm9mZnNldFRvcCA8IHBhZ2VZKSB7XG4gICAgICBrZXlCZWxvdyA9IHRoaXMuZ2V0S2V5QmVsb3coa2V5QmVsb3cpO1xuICAgICAgaXRlbSA9IGtleUJlbG93ICE9IG51bGwgPyB0aGlzLmdldEl0ZW0oa2V5QmVsb3cpIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGtleUJlbG93O1xuICB9XG4gIGdldEtleUZvclNlYXJjaChzZWFyY2gsIGZyb21LZXkpIHtcbiAgICBjb25zdCBjb2xsYXRvciA9IHRoaXMuY29sbGF0b3I/LigpO1xuICAgIGlmICghY29sbGF0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGtleSA9IGZyb21LZXkgIT0gbnVsbCA/IHRoaXMuZ2V0S2V5QmVsb3coZnJvbUtleSkgOiB0aGlzLmdldEZpcnN0S2V5KCk7XG4gICAgd2hpbGUgKGtleSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbShrZXkpO1xuICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgY29uc3Qgc3Vic3RyaW5nID0gaXRlbS50ZXh0VmFsdWUuc2xpY2UoMCwgc2VhcmNoLmxlbmd0aCk7XG4gICAgICAgIGlmIChpdGVtLnRleHRWYWx1ZSAmJiBjb2xsYXRvci5jb21wYXJlKHN1YnN0cmluZywgc2VhcmNoKSA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGtleSA9IHRoaXMuZ2V0S2V5QmVsb3coa2V5KTtcbiAgICB9XG4gIH1cbn07XG5mdW5jdGlvbiBjcmVhdGVTZWxlY3RhYmxlTGlzdChwcm9wcywgcmVmLCBzY3JvbGxSZWYpIHtcbiAgY29uc3QgY29sbGF0b3IgPSBjcmVhdGVDb2xsYXRvcih7IHVzYWdlOiBcInNlYXJjaFwiLCBzZW5zaXRpdml0eTogXCJiYXNlXCIgfSk7XG4gIGNvbnN0IGRlbGVnYXRlID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qga2V5Ym9hcmREZWxlZ2F0ZSA9IGFjY2Vzcyhwcm9wcy5rZXlib2FyZERlbGVnYXRlKTtcbiAgICBpZiAoa2V5Ym9hcmREZWxlZ2F0ZSkge1xuICAgICAgcmV0dXJuIGtleWJvYXJkRGVsZWdhdGU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTGlzdEtleWJvYXJkRGVsZWdhdGUocHJvcHMuY29sbGVjdGlvbiwgcmVmLCBjb2xsYXRvcik7XG4gIH0pO1xuICByZXR1cm4gY3JlYXRlU2VsZWN0YWJsZUNvbGxlY3Rpb24oXG4gICAge1xuICAgICAgc2VsZWN0aW9uTWFuYWdlcjogKCkgPT4gYWNjZXNzKHByb3BzLnNlbGVjdGlvbk1hbmFnZXIpLFxuICAgICAga2V5Ym9hcmREZWxlZ2F0ZTogZGVsZWdhdGUsXG4gICAgICBhdXRvRm9jdXM6ICgpID0+IGFjY2Vzcyhwcm9wcy5hdXRvRm9jdXMpLFxuICAgICAgZGVmZXJBdXRvRm9jdXM6ICgpID0+IGFjY2Vzcyhwcm9wcy5kZWZlckF1dG9Gb2N1cyksXG4gICAgICBzaG91bGRGb2N1c1dyYXA6ICgpID0+IGFjY2Vzcyhwcm9wcy5zaG91bGRGb2N1c1dyYXApLFxuICAgICAgZGlzYWxsb3dFbXB0eVNlbGVjdGlvbjogKCkgPT4gYWNjZXNzKHByb3BzLmRpc2FsbG93RW1wdHlTZWxlY3Rpb24pLFxuICAgICAgc2VsZWN0T25Gb2N1czogKCkgPT4gYWNjZXNzKHByb3BzLnNlbGVjdE9uRm9jdXMpLFxuICAgICAgZGlzYWxsb3dUeXBlQWhlYWQ6ICgpID0+IGFjY2Vzcyhwcm9wcy5kaXNhbGxvd1R5cGVBaGVhZCksXG4gICAgICBzaG91bGRVc2VWaXJ0dWFsRm9jdXM6ICgpID0+IGFjY2Vzcyhwcm9wcy5zaG91bGRVc2VWaXJ0dWFsRm9jdXMpLFxuICAgICAgYWxsb3dzVGFiTmF2aWdhdGlvbjogKCkgPT4gYWNjZXNzKHByb3BzLmFsbG93c1RhYk5hdmlnYXRpb24pLFxuICAgICAgaXNWaXJ0dWFsaXplZDogKCkgPT4gYWNjZXNzKHByb3BzLmlzVmlydHVhbGl6ZWQpLFxuICAgICAgc2Nyb2xsVG9LZXk6IChrZXkpID0+IGFjY2Vzcyhwcm9wcy5zY3JvbGxUb0tleSk/LihrZXkpLFxuICAgICAgb3JpZW50YXRpb246ICgpID0+IGFjY2Vzcyhwcm9wcy5vcmllbnRhdGlvbilcbiAgICB9LFxuICAgIHJlZik7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL0lTS0haTUhTLmpzXG52YXIgQVVUT0ZPQ1VTX09OX01PVU5UX0VWRU5UID0gXCJmb2N1c1Njb3BlLmF1dG9Gb2N1c09uTW91bnRcIjtcbnZhciBBVVRPRk9DVVNfT05fVU5NT1VOVF9FVkVOVCA9IFwiZm9jdXNTY29wZS5hdXRvRm9jdXNPblVubW91bnRcIjtcbnZhciBFVkVOVF9PUFRJT05TID0ge1xuICBidWJibGVzOiBmYWxzZSxcbiAgY2FuY2VsYWJsZTogdHJ1ZVxufTtcbnZhciBmb2N1c1Njb3BlU3RhY2sgPSB7XG4gIC8qKiBBIHN0YWNrIG9mIGZvY3VzIHNjb3Blcywgd2l0aCB0aGUgYWN0aXZlIG9uZSBhdCB0aGUgdG9wICovXG4gIHN0YWNrOiBbXSxcbiAgYWN0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrWzBdO1xuICB9LFxuICBhZGQoc2NvcGUpIHtcbiAgICBpZiAoc2NvcGUgIT09IHRoaXMuYWN0aXZlKCkpIHtcbiAgICAgIHRoaXMuYWN0aXZlKCk/LnBhdXNlKCk7XG4gICAgfVxuICAgIHRoaXMuc3RhY2sgPSByZW1vdmVJdGVtRnJvbUFycmF5KHRoaXMuc3RhY2ssIHNjb3BlKTtcbiAgICB0aGlzLnN0YWNrLnVuc2hpZnQoc2NvcGUpO1xuICB9LFxuICByZW1vdmUoc2NvcGUpIHtcbiAgICB0aGlzLnN0YWNrID0gcmVtb3ZlSXRlbUZyb21BcnJheSh0aGlzLnN0YWNrLCBzY29wZSk7XG4gICAgdGhpcy5hY3RpdmUoKT8ucmVzdW1lKCk7XG4gIH1cbn07XG5mdW5jdGlvbiBjcmVhdGVGb2N1c1Njb3BlKHByb3BzLCByZWYpIHtcbiAgY29uc3QgW2lzUGF1c2VkLCBzZXRJc1BhdXNlZF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpO1xuICBjb25zdCBmb2N1c1Njb3BlID0ge1xuICAgIHBhdXNlKCkge1xuICAgICAgc2V0SXNQYXVzZWQodHJ1ZSk7XG4gICAgfSxcbiAgICByZXN1bWUoKSB7XG4gICAgICBzZXRJc1BhdXNlZChmYWxzZSk7XG4gICAgfVxuICB9O1xuICBsZXQgbGFzdEZvY3VzZWRFbGVtZW50ID0gbnVsbDtcbiAgY29uc3Qgb25Nb3VudEF1dG9Gb2N1cyA9IChlMikgPT4gcHJvcHMub25Nb3VudEF1dG9Gb2N1cz8uKGUyKTtcbiAgY29uc3Qgb25Vbm1vdW50QXV0b0ZvY3VzID0gKGUyKSA9PiBwcm9wcy5vblVubW91bnRBdXRvRm9jdXM/LihlMik7XG4gIGNvbnN0IG93bmVyRG9jdW1lbnQgPSAoKSA9PiBnZXREb2N1bWVudChyZWYoKSk7XG4gIGNvbnN0IGNyZWF0ZVNlbnRpbmVsID0gKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBvd25lckRvY3VtZW50KCkuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkYXRhLWZvY3VzLXRyYXBcIiwgXCJcIik7XG4gICAgZWxlbWVudC50YWJJbmRleCA9IDA7XG4gICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCB2aXN1YWxseUhpZGRlblN0eWxlcyk7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH07XG4gIGNvbnN0IHRhYmJhYmxlcyA9ICgpID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSByZWYoKTtcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0QWxsVGFiYmFibGVJbihjb250YWluZXIsIHRydWUpLmZpbHRlcigoZWwpID0+ICFlbC5oYXNBdHRyaWJ1dGUoXCJkYXRhLWZvY3VzLXRyYXBcIikpO1xuICB9O1xuICBjb25zdCBmaXJzdFRhYmJhYmxlID0gKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGFiYmFibGVzKCk7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtc1swXSA6IG51bGw7XG4gIH07XG4gIGNvbnN0IGxhc3RUYWJiYWJsZSA9ICgpID0+IHtcbiAgICBjb25zdCBpdGVtcyA9IHRhYmJhYmxlcygpO1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwID8gaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0gOiBudWxsO1xuICB9O1xuICBjb25zdCBzaG91bGRQcmV2ZW50VW5tb3VudEF1dG9Gb2N1cyA9ICgpID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSByZWYoKTtcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gZ2V0QWN0aXZlRWxlbWVudChjb250YWluZXIpO1xuICAgIGlmICghYWN0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoY29udGFpbnMoY29udGFpbmVyLCBhY3RpdmVFbGVtZW50KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNGb2N1c2FibGUoYWN0aXZlRWxlbWVudCk7XG4gIH07XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHJlZigpO1xuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvY3VzU2NvcGVTdGFjay5hZGQoZm9jdXNTY29wZSk7XG4gICAgY29uc3QgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gZ2V0QWN0aXZlRWxlbWVudChjb250YWluZXIpO1xuICAgIGNvbnN0IGhhc0ZvY3VzZWRDYW5kaWRhdGUgPSBjb250YWlucyhjb250YWluZXIsIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCk7XG4gICAgaWYgKCFoYXNGb2N1c2VkQ2FuZGlkYXRlKSB7XG4gICAgICBjb25zdCBtb3VudEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KEFVVE9GT0NVU19PTl9NT1VOVF9FVkVOVCwgRVZFTlRfT1BUSU9OUyk7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihBVVRPRk9DVVNfT05fTU9VTlRfRVZFTlQsIG9uTW91bnRBdXRvRm9jdXMpO1xuICAgICAgY29udGFpbmVyLmRpc3BhdGNoRXZlbnQobW91bnRFdmVudCk7XG4gICAgICBpZiAoIW1vdW50RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcoZmlyc3RUYWJiYWJsZSgpKTtcbiAgICAgICAgICBpZiAoZ2V0QWN0aXZlRWxlbWVudChjb250YWluZXIpID09PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhjb250YWluZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgICB9XG4gICAgfVxuICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihBVVRPRk9DVVNfT05fTU9VTlRfRVZFTlQsIG9uTW91bnRBdXRvRm9jdXMpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVubW91bnRFdmVudCA9IG5ldyBDdXN0b21FdmVudChBVVRPRk9DVVNfT05fVU5NT1VOVF9FVkVOVCwgRVZFTlRfT1BUSU9OUyk7XG4gICAgICAgIGlmIChzaG91bGRQcmV2ZW50VW5tb3VudEF1dG9Gb2N1cygpKSB7XG4gICAgICAgICAgdW5tb3VudEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoQVVUT0ZPQ1VTX09OX1VOTU9VTlRfRVZFTlQsIG9uVW5tb3VudEF1dG9Gb2N1cyk7XG4gICAgICAgIGNvbnRhaW5lci5kaXNwYXRjaEV2ZW50KHVubW91bnRFdmVudCk7XG4gICAgICAgIGlmICghdW5tb3VudEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcocHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID8/IG93bmVyRG9jdW1lbnQoKS5ib2R5KTtcbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihBVVRPRk9DVVNfT05fVU5NT1VOVF9FVkVOVCwgb25Vbm1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgZm9jdXNTY29wZVN0YWNrLnJlbW92ZShmb2N1c1Njb3BlKTtcbiAgICAgIH0sIDApO1xuICAgIH0pO1xuICB9KTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVyID0gcmVmKCk7XG4gICAgaWYgKCFjb250YWluZXIgfHwgIWFjY2Vzcyhwcm9wcy50cmFwRm9jdXMpIHx8IGlzUGF1c2VkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb25Gb2N1c0luID0gKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICBpZiAodGFyZ2V0Py5jbG9zZXN0KGBbJHtEQVRBX1RPUF9MQVlFUl9BVFRSfV1gKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoY29udGFpbnMoY29udGFpbmVyLCB0YXJnZXQpKSB7XG4gICAgICAgIGxhc3RGb2N1c2VkRWxlbWVudCA9IHRhcmdldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhsYXN0Rm9jdXNlZEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25Gb2N1c091dCA9IChldmVudCkgPT4ge1xuICAgICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG4gICAgICBjb25zdCB0YXJnZXQgPSByZWxhdGVkVGFyZ2V0ID8/IGdldEFjdGl2ZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgIGlmICh0YXJnZXQ/LmNsb3Nlc3QoYFske0RBVEFfVE9QX0xBWUVSX0FUVFJ9XWApKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghY29udGFpbnMoY29udGFpbmVyLCB0YXJnZXQpKSB7XG4gICAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhsYXN0Rm9jdXNlZEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH07XG4gICAgb3duZXJEb2N1bWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsIG9uRm9jdXNJbik7XG4gICAgb3duZXJEb2N1bWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBvbkZvY3VzT3V0KTtcbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgb3duZXJEb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsIG9uRm9jdXNJbik7XG4gICAgICBvd25lckRvY3VtZW50KCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsIG9uRm9jdXNPdXQpO1xuICAgIH0pO1xuICB9KTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVyID0gcmVmKCk7XG4gICAgaWYgKCFjb250YWluZXIgfHwgIWFjY2Vzcyhwcm9wcy50cmFwRm9jdXMpIHx8IGlzUGF1c2VkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3RhcnRTZW50aW5lbCA9IGNyZWF0ZVNlbnRpbmVsKCk7XG4gICAgY29udGFpbmVyLmluc2VydEFkamFjZW50RWxlbWVudChcImFmdGVyYmVnaW5cIiwgc3RhcnRTZW50aW5lbCk7XG4gICAgY29uc3QgZW5kU2VudGluZWwgPSBjcmVhdGVTZW50aW5lbCgpO1xuICAgIGNvbnRhaW5lci5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJiZWZvcmVlbmRcIiwgZW5kU2VudGluZWwpO1xuICAgIGZ1bmN0aW9uIG9uRm9jdXMoZXZlbnQpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gZmlyc3RUYWJiYWJsZSgpO1xuICAgICAgY29uc3QgbGFzdCA9IGxhc3RUYWJiYWJsZSgpO1xuICAgICAgaWYgKGV2ZW50LnJlbGF0ZWRUYXJnZXQgPT09IGZpcnN0KSB7XG4gICAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhsYXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhmaXJzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHN0YXJ0U2VudGluZWwuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIiwgb25Gb2N1cyk7XG4gICAgZW5kU2VudGluZWwuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIiwgb25Gb2N1cyk7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgICBpZiAobXV0YXRpb24ucHJldmlvdXNTaWJsaW5nID09PSBlbmRTZW50aW5lbCkge1xuICAgICAgICAgIGVuZFNlbnRpbmVsLnJlbW92ZSgpO1xuICAgICAgICAgIGNvbnRhaW5lci5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJiZWZvcmVlbmRcIiwgZW5kU2VudGluZWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtdXRhdGlvbi5uZXh0U2libGluZyA9PT0gc3RhcnRTZW50aW5lbCkge1xuICAgICAgICAgIHN0YXJ0U2VudGluZWwucmVtb3ZlKCk7XG4gICAgICAgICAgY29udGFpbmVyLmluc2VydEFkamFjZW50RWxlbWVudChcImFmdGVyYmVnaW5cIiwgc3RhcnRTZW50aW5lbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lciwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogZmFsc2VcbiAgICB9KTtcbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgc3RhcnRTZW50aW5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLCBvbkZvY3VzKTtcbiAgICAgIGVuZFNlbnRpbmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsIG9uRm9jdXMpO1xuICAgICAgc3RhcnRTZW50aW5lbC5yZW1vdmUoKTtcbiAgICAgIGVuZFNlbnRpbmVsLnJlbW92ZSgpO1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvWUE3RENZTUIuanNcbnZhciBEQVRBX0xJVkVfQU5OT1VOQ0VSX0FUVFIgPSBcImRhdGEtbGl2ZS1hbm5vdW5jZXJcIjtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvVFpHRTJBUUguanNcbmZ1bmN0aW9uIGNyZWF0ZUhpZGVPdXRzaWRlKHByb3BzKSB7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFjY2Vzcyhwcm9wcy5pc0Rpc2FibGVkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvbkNsZWFudXAoYXJpYUhpZGVPdXRzaWRlKGFjY2Vzcyhwcm9wcy50YXJnZXRzKSwgYWNjZXNzKHByb3BzLnJvb3QpKSk7XG4gIH0pO1xufVxudmFyIHJlZkNvdW50TWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG52YXIgb2JzZXJ2ZXJTdGFjayA9IFtdO1xuZnVuY3Rpb24gYXJpYUhpZGVPdXRzaWRlKHRhcmdldHMsIHJvb3QgPSBkb2N1bWVudC5ib2R5KSB7XG4gIGNvbnN0IHZpc2libGVOb2RlcyA9IG5ldyBTZXQodGFyZ2V0cyk7XG4gIGNvbnN0IGhpZGRlbk5vZGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgY29uc3Qgd2FsayA9IChyb290MikgPT4ge1xuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiByb290Mi5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgYFske0RBVEFfTElWRV9BTk5PVU5DRVJfQVRUUn1dLCBbJHtEQVRBX1RPUF9MQVlFUl9BVFRSfV1gXG4gICAgKSkge1xuICAgICAgdmlzaWJsZU5vZGVzLmFkZChlbGVtZW50KTtcbiAgICB9XG4gICAgY29uc3QgYWNjZXB0Tm9kZSA9IChub2RlKSA9PiB7XG4gICAgICBpZiAodmlzaWJsZU5vZGVzLmhhcyhub2RlKSB8fCBub2RlLnBhcmVudEVsZW1lbnQgJiYgaGlkZGVuTm9kZXMuaGFzKG5vZGUucGFyZW50RWxlbWVudCkgJiYgbm9kZS5wYXJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZShcInJvbGVcIikgIT09IFwicm93XCIpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVDtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHZpc2libGVOb2Rlcykge1xuICAgICAgICBpZiAobm9kZS5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7XG4gICAgfTtcbiAgICBjb25zdCB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHJvb3QyLCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwge1xuICAgICAgYWNjZXB0Tm9kZVxuICAgIH0pO1xuICAgIGNvbnN0IGFjY2VwdFJvb3QgPSBhY2NlcHROb2RlKHJvb3QyKTtcbiAgICBpZiAoYWNjZXB0Um9vdCA9PT0gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUKSB7XG4gICAgICBoaWRlMyhyb290Mik7XG4gICAgfVxuICAgIGlmIChhY2NlcHRSb290ICE9PSBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1QpIHtcbiAgICAgIGxldCBub2RlID0gd2Fsa2VyLm5leHROb2RlKCk7XG4gICAgICB3aGlsZSAobm9kZSAhPSBudWxsKSB7XG4gICAgICAgIGhpZGUzKG5vZGUpO1xuICAgICAgICBub2RlID0gd2Fsa2VyLm5leHROb2RlKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBjb25zdCBoaWRlMyA9IChub2RlKSA9PiB7XG4gICAgY29uc3QgcmVmQ291bnQgPSByZWZDb3VudE1hcC5nZXQobm9kZSkgPz8gMDtcbiAgICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKSA9PT0gXCJ0cnVlXCIgJiYgcmVmQ291bnQgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlZkNvdW50ID09PSAwKSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIFwidHJ1ZVwiKTtcbiAgICB9XG4gICAgaGlkZGVuTm9kZXMuYWRkKG5vZGUpO1xuICAgIHJlZkNvdW50TWFwLnNldChub2RlLCByZWZDb3VudCArIDEpO1xuICB9O1xuICBpZiAob2JzZXJ2ZXJTdGFjay5sZW5ndGgpIHtcbiAgICBvYnNlcnZlclN0YWNrW29ic2VydmVyU3RhY2subGVuZ3RoIC0gMV0uZGlzY29ubmVjdCgpO1xuICB9XG4gIHdhbGsocm9vdCk7XG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGNoYW5nZXMpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBjaGFuZ2VzKSB7XG4gICAgICBpZiAoY2hhbmdlLnR5cGUgIT09IFwiY2hpbGRMaXN0XCIgfHwgY2hhbmdlLmFkZGVkTm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFbLi4udmlzaWJsZU5vZGVzLCAuLi5oaWRkZW5Ob2Rlc10uc29tZShcbiAgICAgICAgKG5vZGUpID0+IG5vZGUuY29udGFpbnMoY2hhbmdlLnRhcmdldClcbiAgICAgICkpIHtcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIGNoYW5nZS5yZW1vdmVkTm9kZXMpIHtcbiAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHZpc2libGVOb2Rlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgICBoaWRkZW5Ob2Rlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBjaGFuZ2UuYWRkZWROb2Rlcykge1xuICAgICAgICAgIGlmICgobm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50KSAmJiAobm9kZS5kYXRhc2V0LmxpdmVBbm5vdW5jZXIgPT09IFwidHJ1ZVwiIHx8IG5vZGUuZGF0YXNldC5yZWFjdEFyaWFUb3BMYXllciA9PT0gXCJ0cnVlXCIpKSB7XG4gICAgICAgICAgICB2aXNpYmxlTm9kZXMuYWRkKG5vZGUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHdhbGsobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShyb290LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgY29uc3Qgb2JzZXJ2ZXJXcmFwcGVyID0ge1xuICAgIG9ic2VydmUoKSB7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKHJvb3QsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICAgIH0sXG4gICAgZGlzY29ubmVjdCgpIHtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH07XG4gIG9ic2VydmVyU3RhY2sucHVzaChvYnNlcnZlcldyYXBwZXIpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgaGlkZGVuTm9kZXMpIHtcbiAgICAgIGNvbnN0IGNvdW50ID0gcmVmQ291bnRNYXAuZ2V0KG5vZGUpO1xuICAgICAgaWYgKGNvdW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIik7XG4gICAgICAgIHJlZkNvdW50TWFwLmRlbGV0ZShub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZkNvdW50TWFwLnNldChub2RlLCBjb3VudCAtIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2JzZXJ2ZXJXcmFwcGVyID09PSBvYnNlcnZlclN0YWNrW29ic2VydmVyU3RhY2subGVuZ3RoIC0gMV0pIHtcbiAgICAgIG9ic2VydmVyU3RhY2sucG9wKCk7XG4gICAgICBpZiAob2JzZXJ2ZXJTdGFjay5sZW5ndGgpIHtcbiAgICAgICAgb2JzZXJ2ZXJTdGFja1tvYnNlcnZlclN0YWNrLmxlbmd0aCAtIDFdLm9ic2VydmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb2JzZXJ2ZXJTdGFjay5zcGxpY2Uob2JzZXJ2ZXJTdGFjay5pbmRleE9mKG9ic2VydmVyV3JhcHBlciksIDEpO1xuICAgIH1cbiAgfTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bjb3J2dSt1dGlsc0AwLjMuMl9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGNvcnZ1L3V0aWxzL2Rpc3QvY2h1bmsvSEQ0QjdKN0EuanNcbnZhciBhY3RpdmVTdHlsZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xudmFyIGNyZWF0ZVN0eWxlID0gKHByb3BzKSA9PiB7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc3R5bGUgPSBhY2Nlc3MyKHByb3BzLnN0eWxlKSA/PyB7fTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gYWNjZXNzMihwcm9wcy5wcm9wZXJ0aWVzKSA/PyBbXTtcbiAgICBjb25zdCBvcmlnaW5hbFN0eWxlcyA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IGluIHN0eWxlKSB7XG4gICAgICBvcmlnaW5hbFN0eWxlc1trZXldID0gcHJvcHMuZWxlbWVudC5zdHlsZVtrZXldO1xuICAgIH1cbiAgICBjb25zdCBhY3RpdmVTdHlsZSA9IGFjdGl2ZVN0eWxlcy5nZXQocHJvcHMua2V5KTtcbiAgICBpZiAoYWN0aXZlU3R5bGUpIHtcbiAgICAgIGFjdGl2ZVN0eWxlLmFjdGl2ZUNvdW50Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGl2ZVN0eWxlcy5zZXQocHJvcHMua2V5LCB7XG4gICAgICAgIGFjdGl2ZUNvdW50OiAxLFxuICAgICAgICBvcmlnaW5hbFN0eWxlcyxcbiAgICAgICAgcHJvcGVydGllczogcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5rZXkpXG4gICAgICB9KTtcbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbihwcm9wcy5lbGVtZW50LnN0eWxlLCBwcm9wcy5zdHlsZSk7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICBwcm9wcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHByb3BlcnR5LmtleSwgcHJvcGVydHkudmFsdWUpO1xuICAgIH1cbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZlU3R5bGUyID0gYWN0aXZlU3R5bGVzLmdldChwcm9wcy5rZXkpO1xuICAgICAgaWYgKCFhY3RpdmVTdHlsZTIpIHJldHVybjtcbiAgICAgIGlmIChhY3RpdmVTdHlsZTIuYWN0aXZlQ291bnQgIT09IDEpIHtcbiAgICAgICAgYWN0aXZlU3R5bGUyLmFjdGl2ZUNvdW50LS07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGFjdGl2ZVN0eWxlcy5kZWxldGUocHJvcHMua2V5KTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGFjdGl2ZVN0eWxlMi5vcmlnaW5hbFN0eWxlcykpIHtcbiAgICAgICAgcHJvcHMuZWxlbWVudC5zdHlsZVtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIGFjdGl2ZVN0eWxlMi5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIHByb3BzLmVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkocHJvcGVydHkpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmVsZW1lbnQuc3R5bGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHByb3BzLmVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIik7XG4gICAgICB9XG4gICAgICBwcm9wcy5jbGVhbnVwPy4oKTtcbiAgICB9KTtcbiAgfSk7XG59O1xudmFyIHN0eWxlX2RlZmF1bHQgPSBjcmVhdGVTdHlsZTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bjb3J2dSt1dGlsc0AwLjMuMl9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGNvcnZ1L3V0aWxzL2Rpc3Qvc2Nyb2xsL2luZGV4LmpzXG52YXIgZ2V0U2Nyb2xsRGltZW5zaW9ucyA9IChlbGVtZW50LCBheGlzKSA9PiB7XG4gIHN3aXRjaCAoYXhpcykge1xuICAgIGNhc2UgXCJ4XCI6XG4gICAgICByZXR1cm4gW2VsZW1lbnQuY2xpZW50V2lkdGgsIGVsZW1lbnQuc2Nyb2xsTGVmdCwgZWxlbWVudC5zY3JvbGxXaWR0aF07XG4gICAgY2FzZSBcInlcIjpcbiAgICAgIHJldHVybiBbZWxlbWVudC5jbGllbnRIZWlnaHQsIGVsZW1lbnQuc2Nyb2xsVG9wLCBlbGVtZW50LnNjcm9sbEhlaWdodF07XG4gIH1cbn07XG52YXIgaXNTY3JvbGxDb250YWluZXIgPSAoZWxlbWVudCwgYXhpcykgPT4ge1xuICBjb25zdCBzdHlsZXMgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICBjb25zdCBvdmVyZmxvdyA9IGF4aXMgPT09IFwieFwiID8gc3R5bGVzLm92ZXJmbG93WCA6IHN0eWxlcy5vdmVyZmxvd1k7XG4gIHJldHVybiBvdmVyZmxvdyA9PT0gXCJhdXRvXCIgfHwgb3ZlcmZsb3cgPT09IFwic2Nyb2xsXCIgfHwgLy8gVGhlIEhUTUwgZWxlbWVudCBpcyBhIHNjcm9sbCBjb250YWluZXIgaWYgaXQgaGFzIG92ZXJmbG93IHZpc2libGVcbiAgZWxlbWVudC50YWdOYW1lID09PSBcIkhUTUxcIiAmJiBvdmVyZmxvdyA9PT0gXCJ2aXNpYmxlXCI7XG59O1xudmFyIGdldFNjcm9sbEF0TG9jYXRpb24gPSAobG9jYXRpb24sIGF4aXMsIHN0b3BBdCkgPT4ge1xuICBjb25zdCBkaXJlY3Rpb25GYWN0b3IgPSBheGlzID09PSBcInhcIiAmJiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShsb2NhdGlvbikuZGlyZWN0aW9uID09PSBcInJ0bFwiID8gLTEgOiAxO1xuICBsZXQgY3VycmVudEVsZW1lbnQgPSBsb2NhdGlvbjtcbiAgbGV0IGF2YWlsYWJsZVNjcm9sbCA9IDA7XG4gIGxldCBhdmFpbGFibGVTY3JvbGxUb3AgPSAwO1xuICBsZXQgd3JhcHBlclJlYWNoZWQgPSBmYWxzZTtcbiAgZG8ge1xuICAgIGNvbnN0IFtjbGllbnRTaXplLCBzY3JvbGxPZmZzZXQsIHNjcm9sbFNpemVdID0gZ2V0U2Nyb2xsRGltZW5zaW9ucyhcbiAgICAgIGN1cnJlbnRFbGVtZW50LFxuICAgICAgYXhpc1xuICAgICk7XG4gICAgY29uc3Qgc2Nyb2xsZWQgPSBzY3JvbGxTaXplIC0gY2xpZW50U2l6ZSAtIGRpcmVjdGlvbkZhY3RvciAqIHNjcm9sbE9mZnNldDtcbiAgICBpZiAoKHNjcm9sbE9mZnNldCAhPT0gMCB8fCBzY3JvbGxlZCAhPT0gMCkgJiYgaXNTY3JvbGxDb250YWluZXIoY3VycmVudEVsZW1lbnQsIGF4aXMpKSB7XG4gICAgICBhdmFpbGFibGVTY3JvbGwgKz0gc2Nyb2xsZWQ7XG4gICAgICBhdmFpbGFibGVTY3JvbGxUb3AgKz0gc2Nyb2xsT2Zmc2V0O1xuICAgIH1cbiAgICBpZiAoY3VycmVudEVsZW1lbnQgPT09IChzdG9wQXQgPz8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgd3JhcHBlclJlYWNoZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50Ll8kaG9zdCA/PyBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgfSB3aGlsZSAoY3VycmVudEVsZW1lbnQgJiYgIXdyYXBwZXJSZWFjaGVkKTtcbiAgcmV0dXJuIFthdmFpbGFibGVTY3JvbGwsIGF2YWlsYWJsZVNjcm9sbFRvcF07XG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc29saWQtcHJldmVudC1zY3JvbGxAMC4xLjlfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL3NvbGlkLXByZXZlbnQtc2Nyb2xsL2Rpc3QvaW5kZXguanNcbnZhciBbcHJldmVudFNjcm9sbFN0YWNrLCBzZXRQcmV2ZW50U2Nyb2xsU3RhY2tdID0gY3JlYXRlU2lnbmFsKFtdKTtcbnZhciBpc0FjdGl2ZSA9IChpZCkgPT4gcHJldmVudFNjcm9sbFN0YWNrKCkuaW5kZXhPZihpZCkgPT09IHByZXZlbnRTY3JvbGxTdGFjaygpLmxlbmd0aCAtIDE7XG52YXIgY3JlYXRlUHJldmVudFNjcm9sbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCBkZWZhdWx0ZWRQcm9wcyA9IG1lcmdlUHJvcHMoXG4gICAge1xuICAgICAgZWxlbWVudDogbnVsbCxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBoaWRlU2Nyb2xsYmFyOiB0cnVlLFxuICAgICAgcHJldmVudFNjcm9sbGJhclNoaWZ0OiB0cnVlLFxuICAgICAgcHJldmVudFNjcm9sbGJhclNoaWZ0TW9kZTogXCJwYWRkaW5nXCIsXG4gICAgICByZXN0b3JlU2Nyb2xsUG9zaXRpb246IHRydWUsXG4gICAgICBhbGxvd1BpbmNoWm9vbTogZmFsc2VcbiAgICB9LFxuICAgIHByb3BzXG4gICk7XG4gIGNvbnN0IHByZXZlbnRTY3JvbGxJZCA9IGNyZWF0ZVVuaXF1ZUlkKCk7XG4gIGxldCBjdXJyZW50VG91Y2hTdGFydCA9IFswLCAwXTtcbiAgbGV0IGN1cnJlbnRUb3VjaFN0YXJ0QXhpcyA9IG51bGw7XG4gIGxldCBjdXJyZW50VG91Y2hTdGFydERlbHRhID0gbnVsbDtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFjY2VzczIoZGVmYXVsdGVkUHJvcHMuZW5hYmxlZCkpIHJldHVybjtcbiAgICBzZXRQcmV2ZW50U2Nyb2xsU3RhY2soKHN0YWNrKSA9PiBbLi4uc3RhY2ssIHByZXZlbnRTY3JvbGxJZF0pO1xuICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICBzZXRQcmV2ZW50U2Nyb2xsU3RhY2soXG4gICAgICAgIChzdGFjaykgPT4gc3RhY2suZmlsdGVyKChpZCkgPT4gaWQgIT09IHByZXZlbnRTY3JvbGxJZClcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWNjZXNzMihkZWZhdWx0ZWRQcm9wcy5lbmFibGVkKSB8fCAhYWNjZXNzMihkZWZhdWx0ZWRQcm9wcy5oaWRlU2Nyb2xsYmFyKSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCB7IGJvZHkgfSA9IGRvY3VtZW50O1xuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gd2luZG93LmlubmVyV2lkdGggLSBib2R5Lm9mZnNldFdpZHRoO1xuICAgIGlmIChhY2Nlc3MyKGRlZmF1bHRlZFByb3BzLnByZXZlbnRTY3JvbGxiYXJTaGlmdCkpIHtcbiAgICAgIGNvbnN0IHN0eWxlID0geyBvdmVyZmxvdzogXCJoaWRkZW5cIiB9O1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IFtdO1xuICAgICAgaWYgKHNjcm9sbGJhcldpZHRoID4gMCkge1xuICAgICAgICBpZiAoYWNjZXNzMihkZWZhdWx0ZWRQcm9wcy5wcmV2ZW50U2Nyb2xsYmFyU2hpZnRNb2RlKSA9PT0gXCJwYWRkaW5nXCIpIHtcbiAgICAgICAgICBzdHlsZS5wYWRkaW5nUmlnaHQgPSBgY2FsYygke3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGJvZHkpLnBhZGRpbmdSaWdodH0gKyAke3Njcm9sbGJhcldpZHRofXB4KWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3R5bGUubWFyZ2luUmlnaHQgPSBgY2FsYygke3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGJvZHkpLm1hcmdpblJpZ2h0fSArICR7c2Nyb2xsYmFyV2lkdGh9cHgpYDtcbiAgICAgICAgfVxuICAgICAgICBwcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICAgIGtleTogXCItLXNjcm9sbGJhci13aWR0aFwiLFxuICAgICAgICAgIHZhbHVlOiBgJHtzY3JvbGxiYXJXaWR0aH1weGBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBvZmZzZXRUb3AgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgIGNvbnN0IG9mZnNldExlZnQgPSB3aW5kb3cuc2Nyb2xsWDtcbiAgICAgIHN0eWxlX2RlZmF1bHQoe1xuICAgICAgICBrZXk6IFwicHJldmVudC1zY3JvbGxcIixcbiAgICAgICAgZWxlbWVudDogYm9keSxcbiAgICAgICAgc3R5bGUsXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIGNsZWFudXA6ICgpID0+IHtcbiAgICAgICAgICBpZiAoYWNjZXNzMihkZWZhdWx0ZWRQcm9wcy5yZXN0b3JlU2Nyb2xsUG9zaXRpb24pICYmIHNjcm9sbGJhcldpZHRoID4gMCkge1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKG9mZnNldExlZnQsIG9mZnNldFRvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVfZGVmYXVsdCh7XG4gICAgICAgIGtleTogXCJwcmV2ZW50LXNjcm9sbFwiLFxuICAgICAgICBlbGVtZW50OiBib2R5LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0FjdGl2ZShwcmV2ZW50U2Nyb2xsSWQpIHx8ICFhY2Nlc3MyKGRlZmF1bHRlZFByb3BzLmVuYWJsZWQpKSByZXR1cm47XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIndoZWVsXCIsIG1heWJlUHJldmVudFdoZWVsLCB7XG4gICAgICBwYXNzaXZlOiBmYWxzZVxuICAgIH0pO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIGxvZ1RvdWNoU3RhcnQsIHtcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCBtYXliZVByZXZlbnRUb3VjaCwge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9KTtcbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIndoZWVsXCIsIG1heWJlUHJldmVudFdoZWVsKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIGxvZ1RvdWNoU3RhcnQpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCBtYXliZVByZXZlbnRUb3VjaCk7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBsb2dUb3VjaFN0YXJ0ID0gKGV2ZW50KSA9PiB7XG4gICAgY3VycmVudFRvdWNoU3RhcnQgPSBnZXRUb3VjaFhZKGV2ZW50KTtcbiAgICBjdXJyZW50VG91Y2hTdGFydEF4aXMgPSBudWxsO1xuICAgIGN1cnJlbnRUb3VjaFN0YXJ0RGVsdGEgPSBudWxsO1xuICB9O1xuICBjb25zdCBtYXliZVByZXZlbnRXaGVlbCA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICBjb25zdCB3cmFwcGVyID0gYWNjZXNzMihkZWZhdWx0ZWRQcm9wcy5lbGVtZW50KTtcbiAgICBjb25zdCBkZWx0YSA9IGdldERlbHRhWFkoZXZlbnQpO1xuICAgIGNvbnN0IGF4aXMgPSBNYXRoLmFicyhkZWx0YVswXSkgPiBNYXRoLmFicyhkZWx0YVsxXSkgPyBcInhcIiA6IFwieVwiO1xuICAgIGNvbnN0IGF4aXNEZWx0YSA9IGF4aXMgPT09IFwieFwiID8gZGVsdGFbMF0gOiBkZWx0YVsxXTtcbiAgICBjb25zdCByZXN1bHRzSW5TY3JvbGwgPSB3b3VsZFNjcm9sbCh0YXJnZXQsIGF4aXMsIGF4aXNEZWx0YSwgd3JhcHBlcik7XG4gICAgbGV0IHNob3VsZENhbmNlbDtcbiAgICBpZiAod3JhcHBlciAmJiBjb250YWluczIod3JhcHBlciwgdGFyZ2V0KSkge1xuICAgICAgc2hvdWxkQ2FuY2VsID0gIXJlc3VsdHNJblNjcm9sbDtcbiAgICB9IGVsc2Uge1xuICAgICAgc2hvdWxkQ2FuY2VsID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHNob3VsZENhbmNlbCAmJiBldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgbWF5YmVQcmV2ZW50VG91Y2ggPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gYWNjZXNzMihkZWZhdWx0ZWRQcm9wcy5lbGVtZW50KTtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgbGV0IHNob3VsZENhbmNlbDtcbiAgICBpZiAoZXZlbnQudG91Y2hlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHNob3VsZENhbmNlbCA9ICFhY2Nlc3MyKGRlZmF1bHRlZFByb3BzLmFsbG93UGluY2hab29tKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGN1cnJlbnRUb3VjaFN0YXJ0QXhpcyA9PSBudWxsIHx8IGN1cnJlbnRUb3VjaFN0YXJ0RGVsdGEgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZGVsdGEgPSBnZXRUb3VjaFhZKGV2ZW50KS5tYXAoXG4gICAgICAgICAgKHRvdWNoLCBpMikgPT4gY3VycmVudFRvdWNoU3RhcnRbaTJdIC0gdG91Y2hcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYXhpcyA9IE1hdGguYWJzKGRlbHRhWzBdKSA+IE1hdGguYWJzKGRlbHRhWzFdKSA/IFwieFwiIDogXCJ5XCI7XG4gICAgICAgIGN1cnJlbnRUb3VjaFN0YXJ0QXhpcyA9IGF4aXM7XG4gICAgICAgIGN1cnJlbnRUb3VjaFN0YXJ0RGVsdGEgPSBheGlzID09PSBcInhcIiA/IGRlbHRhWzBdIDogZGVsdGFbMV07XG4gICAgICB9XG4gICAgICBpZiAodGFyZ2V0LnR5cGUgPT09IFwicmFuZ2VcIikge1xuICAgICAgICBzaG91bGRDYW5jZWwgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHdvdWxkUmVzdWx0SW5TY3JvbGwgPSB3b3VsZFNjcm9sbChcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgY3VycmVudFRvdWNoU3RhcnRBeGlzLFxuICAgICAgICAgIGN1cnJlbnRUb3VjaFN0YXJ0RGVsdGEsXG4gICAgICAgICAgd3JhcHBlclxuICAgICAgICApO1xuICAgICAgICBpZiAod3JhcHBlciAmJiBjb250YWluczIod3JhcHBlciwgdGFyZ2V0KSkge1xuICAgICAgICAgIHNob3VsZENhbmNlbCA9ICF3b3VsZFJlc3VsdEluU2Nyb2xsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNob3VsZENhbmNlbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNob3VsZENhbmNlbCAmJiBldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcbn07XG52YXIgZ2V0RGVsdGFYWSA9IChldmVudCkgPT4gW1xuICBldmVudC5kZWx0YVgsXG4gIGV2ZW50LmRlbHRhWVxuXTtcbnZhciBnZXRUb3VjaFhZID0gKGV2ZW50KSA9PiBldmVudC5jaGFuZ2VkVG91Y2hlc1swXSA/IFtldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYLCBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZXSA6IFswLCAwXTtcbnZhciB3b3VsZFNjcm9sbCA9ICh0YXJnZXQsIGF4aXMsIGRlbHRhLCB3cmFwcGVyKSA9PiB7XG4gIGNvbnN0IHRhcmdldEluV3JhcHBlciA9IHdyYXBwZXIgIT09IG51bGwgJiYgY29udGFpbnMyKHdyYXBwZXIsIHRhcmdldCk7XG4gIGNvbnN0IFthdmFpbGFibGVTY3JvbGwsIGF2YWlsYWJsZVNjcm9sbFRvcF0gPSBnZXRTY3JvbGxBdExvY2F0aW9uKFxuICAgIHRhcmdldCxcbiAgICBheGlzLFxuICAgIHRhcmdldEluV3JhcHBlciA/IHdyYXBwZXIgOiB2b2lkIDBcbiAgKTtcbiAgaWYgKGRlbHRhID4gMCAmJiBNYXRoLmFicyhhdmFpbGFibGVTY3JvbGwpIDw9IDEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGRlbHRhIDwgMCAmJiBNYXRoLmFicyhhdmFpbGFibGVTY3JvbGxUb3ApIDwgMSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgY29udGFpbnMyID0gKHdyYXBwZXIsIHRhcmdldCkgPT4ge1xuICBpZiAod3JhcHBlci5jb250YWlucyh0YXJnZXQpKSByZXR1cm4gdHJ1ZTtcbiAgbGV0IGN1cnJlbnRFbGVtZW50ID0gdGFyZ2V0O1xuICB3aGlsZSAoY3VycmVudEVsZW1lbnQpIHtcbiAgICBpZiAoY3VycmVudEVsZW1lbnQgPT09IHdyYXBwZXIpIHJldHVybiB0cnVlO1xuICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQuXyRob3N0ID8/IGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbnZhciBwcmV2ZW50U2Nyb2xsX2RlZmF1bHQgPSBjcmVhdGVQcmV2ZW50U2Nyb2xsO1xudmFyIHNyY19kZWZhdWx0MiA9IHByZXZlbnRTY3JvbGxfZGVmYXVsdDtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvM0Y0QjYyUlAuanNcbnZhciBNZW51Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZU9wdGlvbmFsTWVudUNvbnRleHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KE1lbnVDb250ZXh0KTtcbn1cbmZ1bmN0aW9uIHVzZU1lbnVDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlT3B0aW9uYWxNZW51Q29udGV4dCgpO1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW2tvYmFsdGVdOiBgdXNlTWVudUNvbnRleHRgIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgTWVudWAgY29tcG9uZW50XCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIE1lbnVJdGVtQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZU1lbnVJdGVtQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTWVudUl0ZW1Db250ZXh0KTtcbiAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltrb2JhbHRlXTogYHVzZU1lbnVJdGVtQ29udGV4dGAgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBNZW51Lkl0ZW1gIGNvbXBvbmVudFwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBNZW51Um9vdENvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5mdW5jdGlvbiB1c2VNZW51Um9vdENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE1lbnVSb290Q29udGV4dCk7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJba29iYWx0ZV06IGB1c2VNZW51Um9vdENvbnRleHRgIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgTWVudVJvb3RgIGNvbXBvbmVudFwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIE1lbnVJdGVtQmFzZShwcm9wcykge1xuICBsZXQgcmVmO1xuICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dCgpO1xuICBjb25zdCBtZW51Q29udGV4dCA9IHVzZU1lbnVDb250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiByb290Q29udGV4dC5nZW5lcmF0ZUlkKGBpdGVtLSR7Y3JlYXRlVW5pcXVlSWQoKX1gKVxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcInJlZlwiLCBcInRleHRWYWx1ZVwiLCBcImRpc2FibGVkXCIsIFwiY2xvc2VPblNlbGVjdFwiLCBcImNoZWNrZWRcIiwgXCJpbmRldGVybWluYXRlXCIsIFwib25TZWxlY3RcIiwgXCJvblBvaW50ZXJNb3ZlXCIsIFwib25Qb2ludGVyTGVhdmVcIiwgXCJvblBvaW50ZXJEb3duXCIsIFwib25Qb2ludGVyVXBcIiwgXCJvbkNsaWNrXCIsIFwib25LZXlEb3duXCIsIFwib25Nb3VzZURvd25cIiwgXCJvbkZvY3VzXCJdKTtcbiAgY29uc3QgW2xhYmVsSWQsIHNldExhYmVsSWRdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IFtkZXNjcmlwdGlvbklkLCBzZXREZXNjcmlwdGlvbklkXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbbGFiZWxSZWYsIHNldExhYmVsUmVmXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBzZWxlY3Rpb25NYW5hZ2VyID0gKCkgPT4gbWVudUNvbnRleHQubGlzdFN0YXRlKCkuc2VsZWN0aW9uTWFuYWdlcigpO1xuICBjb25zdCBrZXkgPSAoKSA9PiBvdGhlcnMuaWQ7XG4gIGNvbnN0IGlzSGlnaGxpZ2h0ZWQgPSAoKSA9PiBzZWxlY3Rpb25NYW5hZ2VyKCkuZm9jdXNlZEtleSgpID09PSBrZXkoKTtcbiAgY29uc3Qgb25TZWxlY3QgPSAoKSA9PiB7XG4gICAgbG9jYWwub25TZWxlY3Q/LigpO1xuICAgIGlmIChsb2NhbC5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgbWVudUNvbnRleHQuY2xvc2UodHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIGNyZWF0ZURvbUNvbGxlY3Rpb25JdGVtKHtcbiAgICBnZXRJdGVtOiAoKSA9PiAoe1xuICAgICAgcmVmOiAoKSA9PiByZWYsXG4gICAgICB0eXBlOiBcIml0ZW1cIixcbiAgICAgIGtleToga2V5KCksXG4gICAgICB0ZXh0VmFsdWU6IGxvY2FsLnRleHRWYWx1ZSA/PyBsYWJlbFJlZigpPy50ZXh0Q29udGVudCA/PyByZWY/LnRleHRDb250ZW50ID8/IFwiXCIsXG4gICAgICBkaXNhYmxlZDogbG9jYWwuZGlzYWJsZWQgPz8gZmFsc2VcbiAgICB9KVxuICB9KTtcbiAgY29uc3Qgc2VsZWN0YWJsZUl0ZW0gPSBjcmVhdGVTZWxlY3RhYmxlSXRlbSh7XG4gICAga2V5LFxuICAgIHNlbGVjdGlvbk1hbmFnZXIsXG4gICAgc2hvdWxkU2VsZWN0T25QcmVzc1VwOiB0cnVlLFxuICAgIGFsbG93c0RpZmZlcmVudFByZXNzT3JpZ2luOiB0cnVlLFxuICAgIGRpc2FibGVkOiAoKSA9PiBsb2NhbC5kaXNhYmxlZFxuICB9LCAoKSA9PiByZWYpO1xuICBjb25zdCBvblBvaW50ZXJNb3ZlID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uUG9pbnRlck1vdmUpO1xuICAgIGlmIChlMi5wb2ludGVyVHlwZSAhPT0gXCJtb3VzZVwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChsb2NhbC5kaXNhYmxlZCkge1xuICAgICAgbWVudUNvbnRleHQub25JdGVtTGVhdmUoZTIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZW51Q29udGV4dC5vbkl0ZW1FbnRlcihlMik7XG4gICAgICBpZiAoIWUyLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgZm9jdXNXaXRob3V0U2Nyb2xsaW5nKGUyLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICBtZW51Q29udGV4dC5saXN0U3RhdGUoKS5zZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZCh0cnVlKTtcbiAgICAgICAgbWVudUNvbnRleHQubGlzdFN0YXRlKCkuc2VsZWN0aW9uTWFuYWdlcigpLnNldEZvY3VzZWRLZXkoa2V5KCkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25Qb2ludGVyTGVhdmUgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25Qb2ludGVyTGVhdmUpO1xuICAgIGlmIChlMi5wb2ludGVyVHlwZSAhPT0gXCJtb3VzZVwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG1lbnVDb250ZXh0Lm9uSXRlbUxlYXZlKGUyKTtcbiAgfTtcbiAgY29uc3Qgb25Qb2ludGVyVXAgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25Qb2ludGVyVXApO1xuICAgIGlmICghbG9jYWwuZGlzYWJsZWQgJiYgZTIuYnV0dG9uID09PSAwKSB7XG4gICAgICBvblNlbGVjdCgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uS2V5RG93bik7XG4gICAgaWYgKGUyLnJlcGVhdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobG9jYWwuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoIChlMi5rZXkpIHtcbiAgICAgIGNhc2UgXCJFbnRlclwiOlxuICAgICAgY2FzZSBcIiBcIjpcbiAgICAgICAgb25TZWxlY3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuICBjb25zdCBhcmlhQ2hlY2tlZCA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGlmIChsb2NhbC5pbmRldGVybWluYXRlKSB7XG4gICAgICByZXR1cm4gXCJtaXhlZFwiO1xuICAgIH1cbiAgICBpZiAobG9jYWwuY2hlY2tlZCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWwuY2hlY2tlZDtcbiAgfSk7XG4gIGNvbnN0IGRhdGFzZXQgPSBjcmVhdGVNZW1vKCgpID0+ICh7XG4gICAgXCJkYXRhLWluZGV0ZXJtaW5hdGVcIjogbG9jYWwuaW5kZXRlcm1pbmF0ZSA/IFwiXCIgOiB2b2lkIDAsXG4gICAgXCJkYXRhLWNoZWNrZWRcIjogbG9jYWwuY2hlY2tlZCAmJiAhbG9jYWwuaW5kZXRlcm1pbmF0ZSA/IFwiXCIgOiB2b2lkIDAsXG4gICAgXCJkYXRhLWRpc2FibGVkXCI6IGxvY2FsLmRpc2FibGVkID8gXCJcIiA6IHZvaWQgMCxcbiAgICBcImRhdGEtaGlnaGxpZ2h0ZWRcIjogaXNIaWdobGlnaHRlZCgpID8gXCJcIiA6IHZvaWQgMFxuICB9KSk7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgaXNDaGVja2VkOiAoKSA9PiBsb2NhbC5jaGVja2VkLFxuICAgIGRhdGFzZXQsXG4gICAgc2V0TGFiZWxSZWYsXG4gICAgZ2VuZXJhdGVJZDogY3JlYXRlR2VuZXJhdGVJZCgoKSA9PiBvdGhlcnMuaWQpLFxuICAgIHJlZ2lzdGVyTGFiZWw6IGNyZWF0ZVJlZ2lzdGVySWQoc2V0TGFiZWxJZCksXG4gICAgcmVnaXN0ZXJEZXNjcmlwdGlvbjogY3JlYXRlUmVnaXN0ZXJJZChzZXREZXNjcmlwdGlvbklkKVxuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnVJdGVtQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjb250ZXh0LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBhczogXCJkaXZcIixcbiAgICAgICAgcmVmKHIkKSB7XG4gICAgICAgICAgY29uc3QgX3JlZiQgPSBtZXJnZVJlZnMoKGVsKSA9PiByZWYgPSBlbCwgbG9jYWwucmVmKTtcbiAgICAgICAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiAmJiBfcmVmJChyJCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB0YWJJbmRleCgpIHtcbiAgICAgICAgICByZXR1cm4gc2VsZWN0YWJsZUl0ZW0udGFiSW5kZXgoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IFtcImFyaWEtY2hlY2tlZFwiXSgpIHtcbiAgICAgICAgICByZXR1cm4gYXJpYUNoZWNrZWQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IFtcImFyaWEtZGlzYWJsZWRcIl0oKSB7XG4gICAgICAgICAgcmV0dXJuIGxvY2FsLmRpc2FibGVkO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgW1wiYXJpYS1sYWJlbGxlZGJ5XCJdKCkge1xuICAgICAgICAgIHJldHVybiBsYWJlbElkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBbXCJhcmlhLWRlc2NyaWJlZGJ5XCJdKCkge1xuICAgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbklkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBbXCJkYXRhLWtleVwiXSgpIHtcbiAgICAgICAgICByZXR1cm4gc2VsZWN0YWJsZUl0ZW0uZGF0YUtleSgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25Qb2ludGVyRG93bigpIHtcbiAgICAgICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uUG9pbnRlckRvd24sIHNlbGVjdGFibGVJdGVtLm9uUG9pbnRlckRvd25dKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9uUG9pbnRlclVwKCkge1xuICAgICAgICAgIHJldHVybiBjb21wb3NlRXZlbnRIYW5kbGVycyhbb25Qb2ludGVyVXAsIHNlbGVjdGFibGVJdGVtLm9uUG9pbnRlclVwXSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbkNsaWNrKCkge1xuICAgICAgICAgIHJldHVybiBjb21wb3NlRXZlbnRIYW5kbGVycyhbbG9jYWwub25DbGljaywgc2VsZWN0YWJsZUl0ZW0ub25DbGlja10pO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25LZXlEb3duKCkge1xuICAgICAgICAgIHJldHVybiBjb21wb3NlRXZlbnRIYW5kbGVycyhbb25LZXlEb3duLCBzZWxlY3RhYmxlSXRlbS5vbktleURvd25dKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9uTW91c2VEb3duKCkge1xuICAgICAgICAgIHJldHVybiBjb21wb3NlRXZlbnRIYW5kbGVycyhbbG9jYWwub25Nb3VzZURvd24sIHNlbGVjdGFibGVJdGVtLm9uTW91c2VEb3duXSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbkZvY3VzKCkge1xuICAgICAgICAgIHJldHVybiBjb21wb3NlRXZlbnRIYW5kbGVycyhbbG9jYWwub25Gb2N1cywgc2VsZWN0YWJsZUl0ZW0ub25Gb2N1c10pO1xuICAgICAgICB9LFxuICAgICAgICBvblBvaW50ZXJNb3ZlLFxuICAgICAgICBvblBvaW50ZXJMZWF2ZVxuICAgICAgfSwgZGF0YXNldCwgb3RoZXJzKSk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIE1lbnVDaGVja2JveEl0ZW0ocHJvcHMpIHtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgY2xvc2VPblNlbGVjdDogZmFsc2VcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJjaGVja2VkXCIsIFwiZGVmYXVsdENoZWNrZWRcIiwgXCJvbkNoYW5nZVwiLCBcIm9uU2VsZWN0XCJdKTtcbiAgY29uc3Qgc3RhdGUgPSBjcmVhdGVUb2dnbGVTdGF0ZSh7XG4gICAgaXNTZWxlY3RlZDogKCkgPT4gbG9jYWwuY2hlY2tlZCxcbiAgICBkZWZhdWx0SXNTZWxlY3RlZDogKCkgPT4gbG9jYWwuZGVmYXVsdENoZWNrZWQsXG4gICAgb25TZWxlY3RlZENoYW5nZTogKGNoZWNrZWQpID0+IGxvY2FsLm9uQ2hhbmdlPy4oY2hlY2tlZCksXG4gICAgaXNEaXNhYmxlZDogKCkgPT4gb3RoZXJzLmRpc2FibGVkXG4gIH0pO1xuICBjb25zdCBvblNlbGVjdCA9ICgpID0+IHtcbiAgICBsb2NhbC5vblNlbGVjdD8uKCk7XG4gICAgc3RhdGUudG9nZ2xlKCk7XG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoTWVudUl0ZW1CYXNlLCBtZXJnZVByb3BzKHtcbiAgICByb2xlOiBcIm1lbnVpdGVtY2hlY2tib3hcIixcbiAgICBnZXQgY2hlY2tlZCgpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5pc1NlbGVjdGVkKCk7XG4gICAgfSxcbiAgICBvblNlbGVjdFxuICB9LCBvdGhlcnMpKTtcbn1cbnZhciBNZW51YmFyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZU9wdGlvbmFsTWVudWJhckNvbnRleHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KE1lbnViYXJDb250ZXh0KTtcbn1cbnZhciBNRU5VQkFSX0tFWVMgPSB7XG4gIG5leHQ6IChkaXIsIG9yaWVudGF0aW9uKSA9PiBkaXIgPT09IFwibHRyXCIgPyBvcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgPyBcIkFycm93UmlnaHRcIiA6IFwiQXJyb3dEb3duXCIgOiBvcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgPyBcIkFycm93TGVmdFwiIDogXCJBcnJvd1VwXCIsXG4gIHByZXZpb3VzOiAoZGlyLCBvcmllbnRhdGlvbikgPT4gTUVOVUJBUl9LRVlTLm5leHQoZGlyID09PSBcImx0clwiID8gXCJydGxcIiA6IFwibHRyXCIsIG9yaWVudGF0aW9uKVxufTtcbnZhciBNRU5VX0tFWVMgPSB7XG4gIGZpcnN0OiAob3JpZW50YXRpb24pID0+IG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IFwiQXJyb3dEb3duXCIgOiBcIkFycm93UmlnaHRcIixcbiAgbGFzdDogKG9yaWVudGF0aW9uKSA9PiBvcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgPyBcIkFycm93VXBcIiA6IFwiQXJyb3dMZWZ0XCJcbn07XG5mdW5jdGlvbiBNZW51VHJpZ2dlcihwcm9wcykge1xuICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dCgpO1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUNvbnRleHQoKTtcbiAgY29uc3Qgb3B0aW9uYWxNZW51YmFyQ29udGV4dCA9IHVzZU9wdGlvbmFsTWVudWJhckNvbnRleHQoKTtcbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvblxuICB9ID0gdXNlTG9jYWxlKCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiByb290Q29udGV4dC5nZW5lcmF0ZUlkKFwidHJpZ2dlclwiKVxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcInJlZlwiLCBcImlkXCIsIFwiZGlzYWJsZWRcIiwgXCJvblBvaW50ZXJEb3duXCIsIFwib25DbGlja1wiLCBcIm9uS2V5RG93blwiLCBcIm9uTW91c2VPdmVyXCIsIFwib25Gb2N1c1wiXSk7XG4gIGxldCBrZXkgPSAoKSA9PiByb290Q29udGV4dC52YWx1ZSgpO1xuICBpZiAob3B0aW9uYWxNZW51YmFyQ29udGV4dCAhPT0gdm9pZCAwKSB7XG4gICAga2V5ID0gKCkgPT4gcm9vdENvbnRleHQudmFsdWUoKSA/PyBsb2NhbC5pZDtcbiAgICBpZiAob3B0aW9uYWxNZW51YmFyQ29udGV4dC5sYXN0VmFsdWUoKSA9PT0gdm9pZCAwKVxuICAgICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dC5zZXRMYXN0VmFsdWUoa2V5KTtcbiAgfVxuICBjb25zdCB0YWdOYW1lID0gY3JlYXRlVGFnTmFtZSgoKSA9PiBjb250ZXh0LnRyaWdnZXJSZWYoKSwgKCkgPT4gXCJidXR0b25cIik7XG4gIGNvbnN0IGlzTmF0aXZlTGluayA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0YWdOYW1lKCkgPT09IFwiYVwiICYmIGNvbnRleHQudHJpZ2dlclJlZigpPy5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpICE9IG51bGw7XG4gIH0pO1xuICBjcmVhdGVFZmZlY3Qob24oKCkgPT4gb3B0aW9uYWxNZW51YmFyQ29udGV4dD8udmFsdWUoKSwgKHZhbHVlKSA9PiB7XG4gICAgaWYgKCFpc05hdGl2ZUxpbmsoKSlcbiAgICAgIHJldHVybjtcbiAgICBpZiAodmFsdWUgPT09IGtleSgpKVxuICAgICAgY29udGV4dC50cmlnZ2VyUmVmKCk/LmZvY3VzKCk7XG4gIH0pKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKG9wdGlvbmFsTWVudWJhckNvbnRleHQgIT09IHZvaWQgMCkge1xuICAgICAgaWYgKCFjb250ZXh0LmlzT3BlbigpKSB7XG4gICAgICAgIGlmICghb3B0aW9uYWxNZW51YmFyQ29udGV4dC5hdXRvRm9jdXNNZW51KCkpIHtcbiAgICAgICAgICBvcHRpb25hbE1lbnViYXJDb250ZXh0LnNldEF1dG9Gb2N1c01lbnUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5vcGVuKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChvcHRpb25hbE1lbnViYXJDb250ZXh0LnZhbHVlKCkgPT09IGtleSgpKVxuICAgICAgICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQuY2xvc2VNZW51KCk7XG4gICAgICB9XG4gICAgfSBlbHNlXG4gICAgICBjb250ZXh0LnRvZ2dsZSh0cnVlKTtcbiAgfTtcbiAgY29uc3Qgb25Qb2ludGVyRG93biA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vblBvaW50ZXJEb3duKTtcbiAgICBlMi5jdXJyZW50VGFyZ2V0LmRhdGFzZXQucG9pbnRlclR5cGUgPSBlMi5wb2ludGVyVHlwZTtcbiAgICBpZiAoIWxvY2FsLmRpc2FibGVkICYmIGUyLnBvaW50ZXJUeXBlICE9PSBcInRvdWNoXCIgJiYgZTIuYnV0dG9uID09PSAwKSB7XG4gICAgICBoYW5kbGVDbGljaygpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25DbGljayA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vbkNsaWNrKTtcbiAgICBpZiAoIWxvY2FsLmRpc2FibGVkKSB7XG4gICAgICBpZiAoZTIuY3VycmVudFRhcmdldC5kYXRhc2V0LnBvaW50ZXJUeXBlID09PSBcInRvdWNoXCIpXG4gICAgICAgIGhhbmRsZUNsaWNrKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbktleURvd24gPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25LZXlEb3duKTtcbiAgICBpZiAobG9jYWwuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzTmF0aXZlTGluaygpKSB7XG4gICAgICBzd2l0Y2ggKGUyLmtleSkge1xuICAgICAgICBjYXNlIFwiRW50ZXJcIjpcbiAgICAgICAgY2FzZSBcIiBcIjpcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHN3aXRjaCAoZTIua2V5KSB7XG4gICAgICBjYXNlIFwiRW50ZXJcIjpcbiAgICAgIGNhc2UgXCIgXCI6XG4gICAgICBjYXNlIE1FTlVfS0VZUy5maXJzdChyb290Q29udGV4dC5vcmllbnRhdGlvbigpKTpcbiAgICAgICAgZTIuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHNjcm9sbEludG9WaWV3cG9ydChlMi5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgY29udGV4dC5vcGVuKFwiZmlyc3RcIik7XG4gICAgICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQ/LnNldEF1dG9Gb2N1c01lbnUodHJ1ZSk7XG4gICAgICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQ/LnNldFZhbHVlKGtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNRU5VX0tFWVMubGFzdChyb290Q29udGV4dC5vcmllbnRhdGlvbigpKTpcbiAgICAgICAgZTIuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnRleHQub3BlbihcImxhc3RcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNRU5VQkFSX0tFWVMubmV4dChkaXJlY3Rpb24oKSwgcm9vdENvbnRleHQub3JpZW50YXRpb24oKSk6XG4gICAgICAgIGlmIChvcHRpb25hbE1lbnViYXJDb250ZXh0ID09PSB2b2lkIDApXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGUyLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvcHRpb25hbE1lbnViYXJDb250ZXh0Lm5leHRNZW51KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNRU5VQkFSX0tFWVMucHJldmlvdXMoZGlyZWN0aW9uKCksIHJvb3RDb250ZXh0Lm9yaWVudGF0aW9uKCkpOlxuICAgICAgICBpZiAob3B0aW9uYWxNZW51YmFyQ29udGV4dCA9PT0gdm9pZCAwKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBlMi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dC5wcmV2aW91c01lbnUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbk1vdXNlT3ZlciA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vbk1vdXNlT3Zlcik7XG4gICAgaWYgKGNvbnRleHQudHJpZ2dlclJlZigpPy5kYXRhc2V0LnBvaW50ZXJUeXBlID09PSBcInRvdWNoXCIpXG4gICAgICByZXR1cm47XG4gICAgaWYgKCFsb2NhbC5kaXNhYmxlZCAmJiBvcHRpb25hbE1lbnViYXJDb250ZXh0ICE9PSB2b2lkIDAgJiYgb3B0aW9uYWxNZW51YmFyQ29udGV4dC52YWx1ZSgpICE9PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQuc2V0VmFsdWUoa2V5KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uRm9jdXMgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25Gb2N1cyk7XG4gICAgaWYgKG9wdGlvbmFsTWVudWJhckNvbnRleHQgIT09IHZvaWQgMCAmJiBlMi5jdXJyZW50VGFyZ2V0LmRhdGFzZXQucG9pbnRlclR5cGUgIT09IFwidG91Y2hcIilcbiAgICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQuc2V0VmFsdWUoa2V5KTtcbiAgfTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IG9uQ2xlYW51cChjb250ZXh0LnJlZ2lzdGVyVHJpZ2dlcklkKGxvY2FsLmlkKSkpO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KEJ1dHRvblJvb3QsIG1lcmdlUHJvcHMoe1xuICAgIHJlZihyJCkge1xuICAgICAgY29uc3QgX3JlZiQgPSBtZXJnZVJlZnMoY29udGV4dC5zZXRUcmlnZ2VyUmVmLCBsb2NhbC5yZWYpO1xuICAgICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgJiYgX3JlZiQociQpO1xuICAgIH0sXG4gICAgZ2V0IFtcImRhdGEta2ItbWVudS12YWx1ZS10cmlnZ2VyXCJdKCkge1xuICAgICAgcmV0dXJuIHJvb3RDb250ZXh0LnZhbHVlKCk7XG4gICAgfSxcbiAgICBnZXQgaWQoKSB7XG4gICAgICByZXR1cm4gbG9jYWwuaWQ7XG4gICAgfSxcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gbG9jYWwuZGlzYWJsZWQ7XG4gICAgfSxcbiAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJ0cnVlXCIsXG4gICAgZ2V0IFtcImFyaWEtZXhwYW5kZWRcIl0oKSB7XG4gICAgICByZXR1cm4gY29udGV4dC5pc09wZW4oKTtcbiAgICB9LFxuICAgIGdldCBbXCJhcmlhLWNvbnRyb2xzXCJdKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gISFjb250ZXh0LmlzT3BlbigpKSgpID8gY29udGV4dC5jb250ZW50SWQoKSA6IHZvaWQgMDtcbiAgICB9LFxuICAgIGdldCBbXCJkYXRhLWhpZ2hsaWdodGVkXCJdKCkge1xuICAgICAgcmV0dXJuIGtleSgpICE9PSB2b2lkIDAgJiYgb3B0aW9uYWxNZW51YmFyQ29udGV4dD8udmFsdWUoKSA9PT0ga2V5KCkgPyB0cnVlIDogdm9pZCAwO1xuICAgIH0sXG4gICAgZ2V0IHRhYkluZGV4KCkge1xuICAgICAgcmV0dXJuIG9wdGlvbmFsTWVudWJhckNvbnRleHQgIT09IHZvaWQgMCA/IG9wdGlvbmFsTWVudWJhckNvbnRleHQudmFsdWUoKSA9PT0ga2V5KCkgfHwgb3B0aW9uYWxNZW51YmFyQ29udGV4dC5sYXN0VmFsdWUoKSA9PT0ga2V5KCkgPyAwIDogLTEgOiB2b2lkIDA7XG4gICAgfSxcbiAgICBvblBvaW50ZXJEb3duLFxuICAgIG9uTW91c2VPdmVyLFxuICAgIG9uQ2xpY2ssXG4gICAgb25LZXlEb3duLFxuICAgIG9uRm9jdXMsXG4gICAgcm9sZTogb3B0aW9uYWxNZW51YmFyQ29udGV4dCAhPT0gdm9pZCAwID8gXCJtZW51aXRlbVwiIDogdm9pZCAwXG4gIH0sICgpID0+IGNvbnRleHQuZGF0YXNldCgpLCBvdGhlcnMpKTtcbn1cbnZhciBOYXZpZ2F0aW9uTWVudUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5mdW5jdGlvbiB1c2VPcHRpb25hbE5hdmlnYXRpb25NZW51Q29udGV4dCgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoTmF2aWdhdGlvbk1lbnVDb250ZXh0KTtcbn1cbmZ1bmN0aW9uIE1lbnVDb250ZW50QmFzZShwcm9wcykge1xuICBsZXQgcmVmO1xuICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dCgpO1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUNvbnRleHQoKTtcbiAgY29uc3Qgb3B0aW9uYWxNZW51YmFyQ29udGV4dCA9IHVzZU9wdGlvbmFsTWVudWJhckNvbnRleHQoKTtcbiAgY29uc3Qgb3B0aW9uYWxOYXZpZ2F0aW9uTWVudUNvbnRleHQgPSB1c2VPcHRpb25hbE5hdmlnYXRpb25NZW51Q29udGV4dCgpO1xuICBjb25zdCB7XG4gICAgZGlyZWN0aW9uXG4gIH0gPSB1c2VMb2NhbGUoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IHJvb3RDb250ZXh0LmdlbmVyYXRlSWQoYGNvbnRlbnQtJHtjcmVhdGVVbmlxdWVJZCgpfWApXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wicmVmXCIsIFwiaWRcIiwgXCJzdHlsZVwiLCBcIm9uT3BlbkF1dG9Gb2N1c1wiLCBcIm9uQ2xvc2VBdXRvRm9jdXNcIiwgXCJvbkVzY2FwZUtleURvd25cIiwgXCJvbkZvY3VzT3V0c2lkZVwiLCBcIm9uUG9pbnRlckVudGVyXCIsIFwib25Qb2ludGVyTW92ZVwiLCBcIm9uS2V5RG93blwiLCBcIm9uTW91c2VEb3duXCIsIFwib25Gb2N1c0luXCIsIFwib25Gb2N1c091dFwiXSk7XG4gIGxldCBsYXN0UG9pbnRlclggPSAwO1xuICBjb25zdCBpc1Jvb3RNb2RhbENvbnRlbnQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRleHQucGFyZW50TWVudUNvbnRleHQoKSA9PSBudWxsICYmIG9wdGlvbmFsTWVudWJhckNvbnRleHQgPT09IHZvaWQgMCAmJiByb290Q29udGV4dC5pc01vZGFsKCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdGFibGVMaXN0ID0gY3JlYXRlU2VsZWN0YWJsZUxpc3Qoe1xuICAgIHNlbGVjdGlvbk1hbmFnZXI6IGNvbnRleHQubGlzdFN0YXRlKCkuc2VsZWN0aW9uTWFuYWdlcixcbiAgICBjb2xsZWN0aW9uOiBjb250ZXh0Lmxpc3RTdGF0ZSgpLmNvbGxlY3Rpb24sXG4gICAgYXV0b0ZvY3VzOiBjb250ZXh0LmF1dG9Gb2N1cyxcbiAgICBkZWZlckF1dG9Gb2N1czogdHJ1ZSxcbiAgICAvLyBlbnN1cmUgYWxsIG1lbnUgaXRlbXMgYXJlIG1vdW50ZWQgYW5kIGNvbGxlY3Rpb24gaXMgbm90IGVtcHR5IGJlZm9yZSB0cnlpbmcgdG8gYXV0b2ZvY3VzLlxuICAgIHNob3VsZEZvY3VzV3JhcDogdHJ1ZSxcbiAgICBkaXNhbGxvd1R5cGVBaGVhZDogKCkgPT4gIWNvbnRleHQubGlzdFN0YXRlKCkuc2VsZWN0aW9uTWFuYWdlcigpLmlzRm9jdXNlZCgpLFxuICAgIG9yaWVudGF0aW9uOiAoKSA9PiByb290Q29udGV4dC5vcmllbnRhdGlvbigpID09PSBcImhvcml6b250YWxcIiA/IFwidmVydGljYWxcIiA6IFwiaG9yaXpvbnRhbFwiXG4gIH0sICgpID0+IHJlZik7XG4gIGNyZWF0ZUZvY3VzU2NvcGUoe1xuICAgIHRyYXBGb2N1czogKCkgPT4gaXNSb290TW9kYWxDb250ZW50KCkgJiYgY29udGV4dC5pc09wZW4oKSxcbiAgICBvbk1vdW50QXV0b0ZvY3VzOiAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChvcHRpb25hbE1lbnViYXJDb250ZXh0ID09PSB2b2lkIDApXG4gICAgICAgIGxvY2FsLm9uT3BlbkF1dG9Gb2N1cz8uKGV2ZW50KTtcbiAgICB9LFxuICAgIG9uVW5tb3VudEF1dG9Gb2N1czogbG9jYWwub25DbG9zZUF1dG9Gb2N1c1xuICB9LCAoKSA9PiByZWYpO1xuICBjb25zdCBvbktleURvd24gPSAoZTIpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5zKGUyLmN1cnJlbnRUYXJnZXQsIGUyLnRhcmdldCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGUyLmtleSA9PT0gXCJUYWJcIiAmJiBjb250ZXh0LmlzT3BlbigpKSB7XG4gICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAob3B0aW9uYWxNZW51YmFyQ29udGV4dCAhPT0gdm9pZCAwKSB7XG4gICAgICBpZiAoZTIuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhhc3BvcHVwXCIpICE9PSBcInRydWVcIilcbiAgICAgICAgc3dpdGNoIChlMi5rZXkpIHtcbiAgICAgICAgICBjYXNlIE1FTlVCQVJfS0VZUy5uZXh0KGRpcmVjdGlvbigpLCByb290Q29udGV4dC5vcmllbnRhdGlvbigpKTpcbiAgICAgICAgICAgIGUyLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2UodHJ1ZSk7XG4gICAgICAgICAgICBvcHRpb25hbE1lbnViYXJDb250ZXh0LnNldEF1dG9Gb2N1c01lbnUodHJ1ZSk7XG4gICAgICAgICAgICBvcHRpb25hbE1lbnViYXJDb250ZXh0Lm5leHRNZW51KCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIE1FTlVCQVJfS0VZUy5wcmV2aW91cyhkaXJlY3Rpb24oKSwgcm9vdENvbnRleHQub3JpZW50YXRpb24oKSk6XG4gICAgICAgICAgICBpZiAoZTIuY3VycmVudFRhcmdldC5oYXNBdHRyaWJ1dGUoXCJkYXRhLWNsb3NlZFwiKSlcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBlMi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlKHRydWUpO1xuICAgICAgICAgICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dC5zZXRBdXRvRm9jdXNNZW51KHRydWUpO1xuICAgICAgICAgICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dC5wcmV2aW91c01lbnUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICB9O1xuICBjb25zdCBvbkVzY2FwZUtleURvd24gPSAoZTIpID0+IHtcbiAgICBsb2NhbC5vbkVzY2FwZUtleURvd24/LihlMik7XG4gICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dD8uc2V0QXV0b0ZvY3VzTWVudShmYWxzZSk7XG4gICAgY29udGV4dC5jbG9zZSh0cnVlKTtcbiAgfTtcbiAgY29uc3Qgb25Gb2N1c091dHNpZGUgPSAoZTIpID0+IHtcbiAgICBsb2NhbC5vbkZvY3VzT3V0c2lkZT8uKGUyKTtcbiAgICBpZiAocm9vdENvbnRleHQuaXNNb2RhbCgpKSB7XG4gICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25Qb2ludGVyRW50ZXIgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25Qb2ludGVyRW50ZXIpO1xuICAgIGlmICghY29udGV4dC5pc09wZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb250ZXh0LnBhcmVudE1lbnVDb250ZXh0KCk/Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKS5zZXRGb2N1c2VkKGZhbHNlKTtcbiAgICBjb250ZXh0LnBhcmVudE1lbnVDb250ZXh0KCk/Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKS5zZXRGb2N1c2VkS2V5KHZvaWQgMCk7XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlck1vdmUgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25Qb2ludGVyTW92ZSk7XG4gICAgaWYgKGUyLnBvaW50ZXJUeXBlICE9PSBcIm1vdXNlXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0ID0gZTIudGFyZ2V0O1xuICAgIGNvbnN0IHBvaW50ZXJYSGFzQ2hhbmdlZCA9IGxhc3RQb2ludGVyWCAhPT0gZTIuY2xpZW50WDtcbiAgICBpZiAoY29udGFpbnMoZTIuY3VycmVudFRhcmdldCwgdGFyZ2V0KSAmJiBwb2ludGVyWEhhc0NoYW5nZWQpIHtcbiAgICAgIGNvbnRleHQuc2V0UG9pbnRlckRpcihlMi5jbGllbnRYID4gbGFzdFBvaW50ZXJYID8gXCJyaWdodFwiIDogXCJsZWZ0XCIpO1xuICAgICAgbGFzdFBvaW50ZXJYID0gZTIuY2xpZW50WDtcbiAgICB9XG4gIH07XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiBvbkNsZWFudXAoY29udGV4dC5yZWdpc3RlckNvbnRlbnRJZChsb2NhbC5pZCkpKTtcbiAgY29uc3QgY29tbW9uQXR0cmlidXRlcyA9IHtcbiAgICByZWY6IG1lcmdlUmVmcygoZWwpID0+IHtcbiAgICAgIGNvbnRleHQuc2V0Q29udGVudFJlZihlbCk7XG4gICAgICByZWYgPSBlbDtcbiAgICB9LCBsb2NhbC5yZWYpLFxuICAgIHJvbGU6IFwibWVudVwiLFxuICAgIGdldCBpZCgpIHtcbiAgICAgIHJldHVybiBsb2NhbC5pZDtcbiAgICB9LFxuICAgIGdldCB0YWJJbmRleCgpIHtcbiAgICAgIHJldHVybiBzZWxlY3RhYmxlTGlzdC50YWJJbmRleCgpO1xuICAgIH0sXG4gICAgZ2V0IFwiYXJpYS1sYWJlbGxlZGJ5XCIoKSB7XG4gICAgICByZXR1cm4gY29udGV4dC50cmlnZ2VySWQoKTtcbiAgICB9LFxuICAgIG9uS2V5RG93bjogY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uS2V5RG93biwgc2VsZWN0YWJsZUxpc3Qub25LZXlEb3duLCBvbktleURvd25dKSxcbiAgICBvbk1vdXNlRG93bjogY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uTW91c2VEb3duLCBzZWxlY3RhYmxlTGlzdC5vbk1vdXNlRG93bl0pLFxuICAgIG9uRm9jdXNJbjogY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uRm9jdXNJbiwgc2VsZWN0YWJsZUxpc3Qub25Gb2N1c0luXSksXG4gICAgb25Gb2N1c091dDogY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uRm9jdXNPdXQsIHNlbGVjdGFibGVMaXN0Lm9uRm9jdXNPdXRdKSxcbiAgICBvblBvaW50ZXJFbnRlcixcbiAgICBvblBvaW50ZXJNb3ZlLFxuICAgIGdldCBcImRhdGEtb3JpZW50YXRpb25cIigpIHtcbiAgICAgIHJldHVybiByb290Q29udGV4dC5vcmllbnRhdGlvbigpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gY29udGV4dC5jb250ZW50UHJlc2VudCgpO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgIHJldHVybiBvcHRpb25hbE5hdmlnYXRpb25NZW51Q29udGV4dCA9PT0gdm9pZCAwIHx8IGNvbnRleHQucGFyZW50TWVudUNvbnRleHQoKSAhPSBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZmFsbGJhY2soKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgICAgICAgICBhczogXCJkaXZcIlxuICAgICAgICAgIH0sICgpID0+IGNvbnRleHQuZGF0YXNldCgpLCBjb21tb25BdHRyaWJ1dGVzLCBvdGhlcnMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9wcGVyLlBvc2l0aW9uZXIsIHtcbiAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEaXNtaXNzYWJsZUxheWVyLCBtZXJnZVByb3BzKHtcbiAgICAgICAgICAgICAgICBnZXQgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gISFpc1Jvb3RNb2RhbENvbnRlbnQoKSkoKSAmJiBjb250ZXh0LmlzT3BlbigpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0IGV4Y2x1ZGVkRWxlbWVudHMoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gW2NvbnRleHQudHJpZ2dlclJlZl07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBieXBhc3NUb3BNb3N0TGF5ZXJDaGVjazogdHJ1ZSxcbiAgICAgICAgICAgICAgICBnZXQgc3R5bGUoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZVN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgXCItLWtiLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXCI6IFwidmFyKC0ta2ItcG9wcGVyLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbilcIixcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgfSwgbG9jYWwuc3R5bGUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICAgICAgICAgIG9uRm9jdXNPdXRzaWRlLFxuICAgICAgICAgICAgICAgIGdldCBvbkRpc21pc3MoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jbG9zZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sICgpID0+IGNvbnRleHQuZGF0YXNldCgpLCBjb21tb25BdHRyaWJ1dGVzLCBvdGhlcnMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIE1lbnVDb250ZW50KHByb3BzKSB7XG4gIGxldCByZWY7XG4gIGNvbnN0IHJvb3RDb250ZXh0ID0gdXNlTWVudVJvb3RDb250ZXh0KCk7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51Q29udGV4dCgpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKHByb3BzLCBbXCJyZWZcIl0pO1xuICBzcmNfZGVmYXVsdDIoe1xuICAgIGVsZW1lbnQ6ICgpID0+IHJlZiA/PyBudWxsLFxuICAgIGVuYWJsZWQ6ICgpID0+IGNvbnRleHQuY29udGVudFByZXNlbnQoKSAmJiByb290Q29udGV4dC5wcmV2ZW50U2Nyb2xsKClcbiAgfSk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoTWVudUNvbnRlbnRCYXNlLCBtZXJnZVByb3BzKHtcbiAgICByZWYociQpIHtcbiAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKChlbCkgPT4ge1xuICAgICAgICByZWYgPSBlbDtcbiAgICAgIH0sIGxvY2FsLnJlZik7XG4gICAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiAmJiBfcmVmJChyJCk7XG4gICAgfVxuICB9LCBvdGhlcnMpKTtcbn1cbnZhciBNZW51R3JvdXBDb250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xuZnVuY3Rpb24gdXNlTWVudUdyb3VwQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTWVudUdyb3VwQ29udGV4dCk7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJba29iYWx0ZV06IGB1c2VNZW51R3JvdXBDb250ZXh0YCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYE1lbnUuR3JvdXBgIGNvbXBvbmVudFwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIE1lbnVHcm91cChwcm9wcykge1xuICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogcm9vdENvbnRleHQuZ2VuZXJhdGVJZChgZ3JvdXAtJHtjcmVhdGVVbmlxdWVJZCgpfWApXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xhYmVsSWQsIHNldExhYmVsSWRdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgZ2VuZXJhdGVJZDogY3JlYXRlR2VuZXJhdGVJZCgoKSA9PiBtZXJnZWRQcm9wcy5pZCksXG4gICAgcmVnaXN0ZXJMYWJlbElkOiBjcmVhdGVSZWdpc3RlcklkKHNldExhYmVsSWQpXG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoTWVudUdyb3VwQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjb250ZXh0LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBhczogXCJkaXZcIixcbiAgICAgICAgcm9sZTogXCJncm91cFwiLFxuICAgICAgICBnZXQgW1wiYXJpYS1sYWJlbGxlZGJ5XCJdKCkge1xuICAgICAgICAgIHJldHVybiBsYWJlbElkKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIG1lcmdlZFByb3BzKSk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIE1lbnVHcm91cExhYmVsKHByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51R3JvdXBDb250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBjb250ZXh0LmdlbmVyYXRlSWQoXCJsYWJlbFwiKVxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcImlkXCJdKTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IG9uQ2xlYW51cChjb250ZXh0LnJlZ2lzdGVyTGFiZWxJZChsb2NhbC5pZCkpKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwic3BhblwiLFxuICAgIGdldCBpZCgpIHtcbiAgICAgIHJldHVybiBsb2NhbC5pZDtcbiAgICB9LFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCJcbiAgfSwgb3RoZXJzKSk7XG59XG5mdW5jdGlvbiBNZW51SWNvbihwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUNvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgY2hpbGRyZW46IFwiXFx1MjVCQ1wiXG4gIH0sIHByb3BzKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwic3BhblwiLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCJcbiAgfSwgKCkgPT4gY29udGV4dC5kYXRhc2V0KCksIG1lcmdlZFByb3BzKSk7XG59XG5mdW5jdGlvbiBNZW51SXRlbShwcm9wcykge1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnVJdGVtQmFzZSwgbWVyZ2VQcm9wcyh7XG4gICAgcm9sZTogXCJtZW51aXRlbVwiLFxuICAgIGNsb3NlT25TZWxlY3Q6IHRydWVcbiAgfSwgcHJvcHMpKTtcbn1cbmZ1bmN0aW9uIE1lbnVJdGVtRGVzY3JpcHRpb24ocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbnVJdGVtQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogY29udGV4dC5nZW5lcmF0ZUlkKFwiZGVzY3JpcHRpb25cIilcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJpZFwiXSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiBvbkNsZWFudXAoY29udGV4dC5yZWdpc3RlckRlc2NyaXB0aW9uKGxvY2FsLmlkKSkpO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICBhczogXCJkaXZcIixcbiAgICBnZXQgaWQoKSB7XG4gICAgICByZXR1cm4gbG9jYWwuaWQ7XG4gICAgfVxuICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgb3RoZXJzKSk7XG59XG5mdW5jdGlvbiBNZW51SXRlbUluZGljYXRvcihwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUl0ZW1Db250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBjb250ZXh0LmdlbmVyYXRlSWQoXCJpbmRpY2F0b3JcIilcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJmb3JjZU1vdW50XCJdKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gbG9jYWwuZm9yY2VNb3VudCB8fCBjb250ZXh0LmlzQ2hlY2tlZCgpO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGFzOiBcImRpdlwiXG4gICAgICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgb3RoZXJzKSk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIE1lbnVJdGVtTGFiZWwocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbnVJdGVtQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogY29udGV4dC5nZW5lcmF0ZUlkKFwibGFiZWxcIilcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJyZWZcIiwgXCJpZFwiXSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiBvbkNsZWFudXAoY29udGV4dC5yZWdpc3RlckxhYmVsKGxvY2FsLmlkKSkpO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICBhczogXCJkaXZcIixcbiAgICByZWYociQpIHtcbiAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKGNvbnRleHQuc2V0TGFiZWxSZWYsIGxvY2FsLnJlZik7XG4gICAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiAmJiBfcmVmJChyJCk7XG4gICAgfSxcbiAgICBnZXQgaWQoKSB7XG4gICAgICByZXR1cm4gbG9jYWwuaWQ7XG4gICAgfVxuICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgb3RoZXJzKSk7XG59XG5mdW5jdGlvbiBNZW51UG9ydGFsKHByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51Q29udGV4dCgpO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICBnZXQgd2hlbigpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LmNvbnRlbnRQcmVzZW50KCk7XG4gICAgfSxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvcnRhbCwgcHJvcHMpO1xuICAgIH1cbiAgfSk7XG59XG52YXIgTWVudVJhZGlvR3JvdXBDb250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xuZnVuY3Rpb24gdXNlTWVudVJhZGlvR3JvdXBDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNZW51UmFkaW9Hcm91cENvbnRleHQpO1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW2tvYmFsdGVdOiBgdXNlTWVudVJhZGlvR3JvdXBDb250ZXh0YCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYE1lbnUuUmFkaW9Hcm91cGAgY29tcG9uZW50XCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gTWVudVJhZGlvR3JvdXAocHJvcHMpIHtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VNZW51Um9vdENvbnRleHQoKTtcbiAgY29uc3QgZGVmYXVsdElkID0gcm9vdENvbnRleHQuZ2VuZXJhdGVJZChgcmFkaW9ncm91cC0ke2NyZWF0ZVVuaXF1ZUlkKCl9YCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBkZWZhdWx0SWRcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJ2YWx1ZVwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcIm9uQ2hhbmdlXCIsIFwiZGlzYWJsZWRcIl0pO1xuICBjb25zdCBbc2VsZWN0ZWQsIHNldFNlbGVjdGVkXSA9IGNyZWF0ZUNvbnRyb2xsYWJsZVNpZ25hbCh7XG4gICAgdmFsdWU6ICgpID0+IGxvY2FsLnZhbHVlLFxuICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbG9jYWwuZGVmYXVsdFZhbHVlLFxuICAgIG9uQ2hhbmdlOiAodmFsdWUpID0+IGxvY2FsLm9uQ2hhbmdlPy4odmFsdWUpXG4gIH0pO1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIGlzRGlzYWJsZWQ6ICgpID0+IGxvY2FsLmRpc2FibGVkLFxuICAgIGlzU2VsZWN0ZWRWYWx1ZTogKHZhbHVlKSA9PiB2YWx1ZSA9PT0gc2VsZWN0ZWQoKSxcbiAgICBzZXRTZWxlY3RlZFZhbHVlOiBzZXRTZWxlY3RlZFxuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnVSYWRpb0dyb3VwQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjb250ZXh0LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoTWVudUdyb3VwLCBvdGhlcnMpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBNZW51UmFkaW9JdGVtKHByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51UmFkaW9Hcm91cENvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgY2xvc2VPblNlbGVjdDogZmFsc2VcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJ2YWx1ZVwiLCBcIm9uU2VsZWN0XCJdKTtcbiAgY29uc3Qgb25TZWxlY3QgPSAoKSA9PiB7XG4gICAgbG9jYWwub25TZWxlY3Q/LigpO1xuICAgIGNvbnRleHQuc2V0U2VsZWN0ZWRWYWx1ZShsb2NhbC52YWx1ZSk7XG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoTWVudUl0ZW1CYXNlLCBtZXJnZVByb3BzKHtcbiAgICByb2xlOiBcIm1lbnVpdGVtcmFkaW9cIixcbiAgICBnZXQgY2hlY2tlZCgpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LmlzU2VsZWN0ZWRWYWx1ZShsb2NhbC52YWx1ZSk7XG4gICAgfSxcbiAgICBvblNlbGVjdFxuICB9LCBvdGhlcnMpKTtcbn1cbmZ1bmN0aW9uIGdldFBvaW50ZXJHcmFjZUFyZWEocGxhY2VtZW50LCBldmVudCwgY29udGVudEVsKSB7XG4gIGNvbnN0IGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQuc3BsaXQoXCItXCIpWzBdO1xuICBjb25zdCBjb250ZW50UmVjdCA9IGNvbnRlbnRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcG9seWdvbiA9IFtdO1xuICBjb25zdCBwb2ludGVyWCA9IGV2ZW50LmNsaWVudFg7XG4gIGNvbnN0IHBvaW50ZXJZID0gZXZlbnQuY2xpZW50WTtcbiAgc3dpdGNoIChiYXNlUGxhY2VtZW50KSB7XG4gICAgY2FzZSBcInRvcFwiOlxuICAgICAgcG9seWdvbi5wdXNoKFtwb2ludGVyWCwgcG9pbnRlclkgKyA1XSk7XG4gICAgICBwb2x5Z29uLnB1c2goW2NvbnRlbnRSZWN0LmxlZnQsIGNvbnRlbnRSZWN0LmJvdHRvbV0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5sZWZ0LCBjb250ZW50UmVjdC50b3BdKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QucmlnaHQsIGNvbnRlbnRSZWN0LnRvcF0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5yaWdodCwgY29udGVudFJlY3QuYm90dG9tXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwicmlnaHRcIjpcbiAgICAgIHBvbHlnb24ucHVzaChbcG9pbnRlclggLSA1LCBwb2ludGVyWV0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5sZWZ0LCBjb250ZW50UmVjdC50b3BdKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QucmlnaHQsIGNvbnRlbnRSZWN0LnRvcF0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5yaWdodCwgY29udGVudFJlY3QuYm90dG9tXSk7XG4gICAgICBwb2x5Z29uLnB1c2goW2NvbnRlbnRSZWN0LmxlZnQsIGNvbnRlbnRSZWN0LmJvdHRvbV0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJvdHRvbVwiOlxuICAgICAgcG9seWdvbi5wdXNoKFtwb2ludGVyWCwgcG9pbnRlclkgLSA1XSk7XG4gICAgICBwb2x5Z29uLnB1c2goW2NvbnRlbnRSZWN0LnJpZ2h0LCBjb250ZW50UmVjdC50b3BdKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QucmlnaHQsIGNvbnRlbnRSZWN0LmJvdHRvbV0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5sZWZ0LCBjb250ZW50UmVjdC5ib3R0b21dKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QubGVmdCwgY29udGVudFJlY3QudG9wXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwibGVmdFwiOlxuICAgICAgcG9seWdvbi5wdXNoKFtwb2ludGVyWCArIDUsIHBvaW50ZXJZXSk7XG4gICAgICBwb2x5Z29uLnB1c2goW2NvbnRlbnRSZWN0LnJpZ2h0LCBjb250ZW50UmVjdC5ib3R0b21dKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QubGVmdCwgY29udGVudFJlY3QuYm90dG9tXSk7XG4gICAgICBwb2x5Z29uLnB1c2goW2NvbnRlbnRSZWN0LmxlZnQsIGNvbnRlbnRSZWN0LnRvcF0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5yaWdodCwgY29udGVudFJlY3QudG9wXSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gcG9seWdvbjtcbn1cbmZ1bmN0aW9uIGlzUG9pbnRlckluR3JhY2VBcmVhKGV2ZW50LCBhcmVhKSB7XG4gIGlmICghYXJlYSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNQb2ludEluUG9seWdvbihbZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WV0sIGFyZWEpO1xufVxuZnVuY3Rpb24gTWVudShwcm9wcykge1xuICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dCgpO1xuICBjb25zdCBwYXJlbnREb21Db2xsZWN0aW9uQ29udGV4dCA9IHVzZU9wdGlvbmFsRG9tQ29sbGVjdGlvbkNvbnRleHQoKTtcbiAgY29uc3QgcGFyZW50TWVudUNvbnRleHQgPSB1c2VPcHRpb25hbE1lbnVDb250ZXh0KCk7XG4gIGNvbnN0IG9wdGlvbmFsTWVudWJhckNvbnRleHQgPSB1c2VPcHRpb25hbE1lbnViYXJDb250ZXh0KCk7XG4gIGNvbnN0IG9wdGlvbmFsTmF2aWdhdGlvbk1lbnVDb250ZXh0ID0gdXNlT3B0aW9uYWxOYXZpZ2F0aW9uTWVudUNvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgcGxhY2VtZW50OiByb290Q29udGV4dC5vcmllbnRhdGlvbigpID09PSBcImhvcml6b250YWxcIiA/IFwiYm90dG9tLXN0YXJ0XCIgOiBcInJpZ2h0LXN0YXJ0XCJcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJvcGVuXCIsIFwiZGVmYXVsdE9wZW5cIiwgXCJvbk9wZW5DaGFuZ2VcIl0pO1xuICBsZXQgcG9pbnRlckdyYWNlVGltZW91dElkID0gMDtcbiAgbGV0IHBvaW50ZXJHcmFjZUludGVudCA9IG51bGw7XG4gIGxldCBwb2ludGVyRGlyID0gXCJyaWdodFwiO1xuICBjb25zdCBbdHJpZ2dlcklkLCBzZXRUcmlnZ2VySWRdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IFtjb250ZW50SWQsIHNldENvbnRlbnRJZF0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgW3RyaWdnZXJSZWYsIHNldFRyaWdnZXJSZWZdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IFtjb250ZW50UmVmLCBzZXRDb250ZW50UmVmXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbZm9jdXNTdHJhdGVneSwgc2V0Rm9jdXNTdHJhdGVneV0gPSBjcmVhdGVTaWduYWwodHJ1ZSk7XG4gIGNvbnN0IFtjdXJyZW50UGxhY2VtZW50LCBzZXRDdXJyZW50UGxhY2VtZW50XSA9IGNyZWF0ZVNpZ25hbChvdGhlcnMucGxhY2VtZW50KTtcbiAgY29uc3QgW25lc3RlZE1lbnVzLCBzZXROZXN0ZWRNZW51c10gPSBjcmVhdGVTaWduYWwoW10pO1xuICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IGNyZWF0ZVNpZ25hbChbXSk7XG4gIGNvbnN0IHtcbiAgICBEb21Db2xsZWN0aW9uUHJvdmlkZXJcbiAgfSA9IGNyZWF0ZURvbUNvbGxlY3Rpb24oe1xuICAgIGl0ZW1zLFxuICAgIG9uSXRlbXNDaGFuZ2U6IHNldEl0ZW1zXG4gIH0pO1xuICBjb25zdCBkaXNjbG9zdXJlU3RhdGUgPSBjcmVhdGVEaXNjbG9zdXJlU3RhdGUoe1xuICAgIG9wZW46ICgpID0+IGxvY2FsLm9wZW4sXG4gICAgZGVmYXVsdE9wZW46ICgpID0+IGxvY2FsLmRlZmF1bHRPcGVuLFxuICAgIG9uT3BlbkNoYW5nZTogKGlzT3BlbikgPT4gbG9jYWwub25PcGVuQ2hhbmdlPy4oaXNPcGVuKVxuICB9KTtcbiAgY29uc3Qge1xuICAgIHByZXNlbnQ6IGNvbnRlbnRQcmVzZW50XG4gIH0gPSBzcmNfZGVmYXVsdCh7XG4gICAgc2hvdzogKCkgPT4gcm9vdENvbnRleHQuZm9yY2VNb3VudCgpIHx8IGRpc2Nsb3N1cmVTdGF0ZS5pc09wZW4oKSxcbiAgICBlbGVtZW50OiAoKSA9PiBjb250ZW50UmVmKCkgPz8gbnVsbFxuICB9KTtcbiAgY29uc3QgbGlzdFN0YXRlID0gY3JlYXRlTGlzdFN0YXRlKHtcbiAgICBzZWxlY3Rpb25Nb2RlOiBcIm5vbmVcIixcbiAgICBkYXRhU291cmNlOiBpdGVtc1xuICB9KTtcbiAgY29uc3Qgb3BlbiA9IChmb2N1c1N0cmF0ZWd5MikgPT4ge1xuICAgIHNldEZvY3VzU3RyYXRlZ3koZm9jdXNTdHJhdGVneTIpO1xuICAgIGRpc2Nsb3N1cmVTdGF0ZS5vcGVuKCk7XG4gIH07XG4gIGNvbnN0IGNsb3NlID0gKHJlY3Vyc2l2ZWx5ID0gZmFsc2UpID0+IHtcbiAgICBkaXNjbG9zdXJlU3RhdGUuY2xvc2UoKTtcbiAgICBpZiAocmVjdXJzaXZlbHkgJiYgcGFyZW50TWVudUNvbnRleHQpIHtcbiAgICAgIHBhcmVudE1lbnVDb250ZXh0LmNsb3NlKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdG9nZ2xlID0gKGZvY3VzU3RyYXRlZ3kyKSA9PiB7XG4gICAgc2V0Rm9jdXNTdHJhdGVneShmb2N1c1N0cmF0ZWd5Mik7XG4gICAgZGlzY2xvc3VyZVN0YXRlLnRvZ2dsZSgpO1xuICB9O1xuICBjb25zdCBfZm9jdXNDb250ZW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBjb250ZW50UmVmKCk7XG4gICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhjb250ZW50KTtcbiAgICAgIGxpc3RTdGF0ZS5zZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZCh0cnVlKTtcbiAgICAgIGxpc3RTdGF0ZS5zZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZEtleSh2b2lkIDApO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZm9jdXNDb250ZW50ID0gKCkgPT4ge1xuICAgIGlmIChvcHRpb25hbE5hdmlnYXRpb25NZW51Q29udGV4dCAhPSBudWxsKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBfZm9jdXNDb250ZW50KCkpO1xuICAgIGVsc2VcbiAgICAgIF9mb2N1c0NvbnRlbnQoKTtcbiAgfTtcbiAgY29uc3QgcmVnaXN0ZXJOZXN0ZWRNZW51ID0gKGVsZW1lbnQpID0+IHtcbiAgICBzZXROZXN0ZWRNZW51cygocHJldikgPT4gWy4uLnByZXYsIGVsZW1lbnRdKTtcbiAgICBjb25zdCBwYXJlbnRVbnJlZ2lzdGVyID0gcGFyZW50TWVudUNvbnRleHQ/LnJlZ2lzdGVyTmVzdGVkTWVudShlbGVtZW50KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc2V0TmVzdGVkTWVudXMoKHByZXYpID0+IHJlbW92ZUl0ZW1Gcm9tQXJyYXkocHJldiwgZWxlbWVudCkpO1xuICAgICAgcGFyZW50VW5yZWdpc3Rlcj8uKCk7XG4gICAgfTtcbiAgfTtcbiAgY29uc3QgaXNQb2ludGVyTW92aW5nVG9TdWJtZW51ID0gKGUyKSA9PiB7XG4gICAgY29uc3QgaXNNb3ZpbmdUb3dhcmRzID0gcG9pbnRlckRpciA9PT0gcG9pbnRlckdyYWNlSW50ZW50Py5zaWRlO1xuICAgIHJldHVybiBpc01vdmluZ1Rvd2FyZHMgJiYgaXNQb2ludGVySW5HcmFjZUFyZWEoZTIsIHBvaW50ZXJHcmFjZUludGVudD8uYXJlYSk7XG4gIH07XG4gIGNvbnN0IG9uSXRlbUVudGVyID0gKGUyKSA9PiB7XG4gICAgaWYgKGlzUG9pbnRlck1vdmluZ1RvU3VibWVudShlMikpIHtcbiAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbkl0ZW1MZWF2ZSA9IChlMikgPT4ge1xuICAgIGlmIChpc1BvaW50ZXJNb3ZpbmdUb1N1Ym1lbnUoZTIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvY3VzQ29udGVudCgpO1xuICB9O1xuICBjb25zdCBvblRyaWdnZXJMZWF2ZSA9IChlMikgPT4ge1xuICAgIGlmIChpc1BvaW50ZXJNb3ZpbmdUb1N1Ym1lbnUoZTIpKSB7XG4gICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcbiAgY3JlYXRlSGlkZU91dHNpZGUoe1xuICAgIGlzRGlzYWJsZWQ6ICgpID0+IHtcbiAgICAgIHJldHVybiAhKHBhcmVudE1lbnVDb250ZXh0ID09IG51bGwgJiYgZGlzY2xvc3VyZVN0YXRlLmlzT3BlbigpICYmIHJvb3RDb250ZXh0LmlzTW9kYWwoKSk7XG4gICAgfSxcbiAgICB0YXJnZXRzOiAoKSA9PiBbY29udGVudFJlZigpLCAuLi5uZXN0ZWRNZW51cygpXS5maWx0ZXIoQm9vbGVhbilcbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udGVudEVsID0gY29udGVudFJlZigpO1xuICAgIGlmICghY29udGVudEVsIHx8ICFwYXJlbnRNZW51Q29udGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnRVbnJlZ2lzdGVyID0gcGFyZW50TWVudUNvbnRleHQucmVnaXN0ZXJOZXN0ZWRNZW51KGNvbnRlbnRFbCk7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIHBhcmVudFVucmVnaXN0ZXIoKTtcbiAgICB9KTtcbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHBhcmVudE1lbnVDb250ZXh0ICE9PSB2b2lkIDApXG4gICAgICByZXR1cm47XG4gICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dD8ucmVnaXN0ZXJNZW51KHJvb3RDb250ZXh0LnZhbHVlKCksIFtjb250ZW50UmVmKCksIC4uLm5lc3RlZE1lbnVzKCldKTtcbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHBhcmVudE1lbnVDb250ZXh0ICE9PSB2b2lkIDAgfHwgb3B0aW9uYWxNZW51YmFyQ29udGV4dCA9PT0gdm9pZCAwKVxuICAgICAgcmV0dXJuO1xuICAgIGlmIChvcHRpb25hbE1lbnViYXJDb250ZXh0LnZhbHVlKCkgPT09IHJvb3RDb250ZXh0LnZhbHVlKCkpIHtcbiAgICAgIHRyaWdnZXJSZWYoKT8uZm9jdXMoKTtcbiAgICAgIGlmIChvcHRpb25hbE1lbnViYXJDb250ZXh0LmF1dG9Gb2N1c01lbnUoKSlcbiAgICAgICAgb3Blbih0cnVlKTtcbiAgICB9IGVsc2VcbiAgICAgIGNsb3NlKCk7XG4gIH0pO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwYXJlbnRNZW51Q29udGV4dCAhPT0gdm9pZCAwIHx8IG9wdGlvbmFsTWVudWJhckNvbnRleHQgPT09IHZvaWQgMClcbiAgICAgIHJldHVybjtcbiAgICBpZiAoZGlzY2xvc3VyZVN0YXRlLmlzT3BlbigpKVxuICAgICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dC5zZXRWYWx1ZShyb290Q29udGV4dC52YWx1ZSgpKTtcbiAgfSk7XG4gIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgaWYgKHBhcmVudE1lbnVDb250ZXh0ICE9PSB2b2lkIDApXG4gICAgICByZXR1cm47XG4gICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dD8udW5yZWdpc3Rlck1lbnUocm9vdENvbnRleHQudmFsdWUoKSk7XG4gIH0pO1xuICBjb25zdCBkYXRhc2V0ID0gY3JlYXRlTWVtbygoKSA9PiAoe1xuICAgIFwiZGF0YS1leHBhbmRlZFwiOiBkaXNjbG9zdXJlU3RhdGUuaXNPcGVuKCkgPyBcIlwiIDogdm9pZCAwLFxuICAgIFwiZGF0YS1jbG9zZWRcIjogIWRpc2Nsb3N1cmVTdGF0ZS5pc09wZW4oKSA/IFwiXCIgOiB2b2lkIDBcbiAgfSkpO1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIGRhdGFzZXQsXG4gICAgaXNPcGVuOiBkaXNjbG9zdXJlU3RhdGUuaXNPcGVuLFxuICAgIGNvbnRlbnRQcmVzZW50LFxuICAgIG5lc3RlZE1lbnVzLFxuICAgIGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgcG9pbnRlckdyYWNlVGltZW91dElkOiAoKSA9PiBwb2ludGVyR3JhY2VUaW1lb3V0SWQsXG4gICAgYXV0b0ZvY3VzOiBmb2N1c1N0cmF0ZWd5LFxuICAgIGxpc3RTdGF0ZTogKCkgPT4gbGlzdFN0YXRlLFxuICAgIHBhcmVudE1lbnVDb250ZXh0OiAoKSA9PiBwYXJlbnRNZW51Q29udGV4dCxcbiAgICB0cmlnZ2VyUmVmLFxuICAgIGNvbnRlbnRSZWYsXG4gICAgdHJpZ2dlcklkLFxuICAgIGNvbnRlbnRJZCxcbiAgICBzZXRUcmlnZ2VyUmVmLFxuICAgIHNldENvbnRlbnRSZWYsXG4gICAgb3BlbixcbiAgICBjbG9zZSxcbiAgICB0b2dnbGUsXG4gICAgZm9jdXNDb250ZW50LFxuICAgIG9uSXRlbUVudGVyLFxuICAgIG9uSXRlbUxlYXZlLFxuICAgIG9uVHJpZ2dlckxlYXZlLFxuICAgIHNldFBvaW50ZXJEaXI6IChkaXIpID0+IHBvaW50ZXJEaXIgPSBkaXIsXG4gICAgc2V0UG9pbnRlckdyYWNlVGltZW91dElkOiAoaWQpID0+IHBvaW50ZXJHcmFjZVRpbWVvdXRJZCA9IGlkLFxuICAgIHNldFBvaW50ZXJHcmFjZUludGVudDogKGludGVudCkgPT4gcG9pbnRlckdyYWNlSW50ZW50ID0gaW50ZW50LFxuICAgIHJlZ2lzdGVyTmVzdGVkTWVudSxcbiAgICByZWdpc3Rlckl0ZW1Ub1BhcmVudERvbUNvbGxlY3Rpb246IHBhcmVudERvbUNvbGxlY3Rpb25Db250ZXh0Py5yZWdpc3Rlckl0ZW0sXG4gICAgcmVnaXN0ZXJUcmlnZ2VySWQ6IGNyZWF0ZVJlZ2lzdGVySWQoc2V0VHJpZ2dlcklkKSxcbiAgICByZWdpc3RlckNvbnRlbnRJZDogY3JlYXRlUmVnaXN0ZXJJZChzZXRDb250ZW50SWQpXG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoRG9tQ29sbGVjdGlvblByb3ZpZGVyLCB7XG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChNZW51Q29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogY29udGV4dCxcbiAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgICAgd2hlbjogb3B0aW9uYWxOYXZpZ2F0aW9uTWVudUNvbnRleHQgPT09IHZvaWQgMCxcbiAgICAgICAgICAgIGdldCBmYWxsYmFjaygpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG90aGVycy5jaGlsZHJlbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9wcGVyLCBtZXJnZVByb3BzKHtcbiAgICAgICAgICAgICAgICBhbmNob3JSZWY6IHRyaWdnZXJSZWYsXG4gICAgICAgICAgICAgICAgY29udGVudFJlZixcbiAgICAgICAgICAgICAgICBvbkN1cnJlbnRQbGFjZW1lbnRDaGFuZ2U6IHNldEN1cnJlbnRQbGFjZW1lbnRcbiAgICAgICAgICAgICAgfSwgb3RoZXJzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBNZW51U3ViKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBkaXJlY3Rpb25cbiAgfSA9IHVzZUxvY2FsZSgpO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnUsIG1lcmdlUHJvcHMoe1xuICAgIGdldCBwbGFjZW1lbnQoKSB7XG4gICAgICByZXR1cm4gZGlyZWN0aW9uKCkgPT09IFwicnRsXCIgPyBcImxlZnQtc3RhcnRcIiA6IFwicmlnaHQtc3RhcnRcIjtcbiAgICB9LFxuICAgIGZsaXA6IHRydWVcbiAgfSwgcHJvcHMpKTtcbn1cbnZhciBTVUJfQ0xPU0VfS0VZUyA9IHtcbiAgY2xvc2U6IChkaXIsIG9yaWVudGF0aW9uKSA9PiB7XG4gICAgaWYgKGRpciA9PT0gXCJsdHJcIikge1xuICAgICAgcmV0dXJuIFtvcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgPyBcIkFycm93TGVmdFwiIDogXCJBcnJvd1VwXCJdO1xuICAgIH1cbiAgICByZXR1cm4gW29yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IFwiQXJyb3dSaWdodFwiIDogXCJBcnJvd0Rvd25cIl07XG4gIH1cbn07XG5mdW5jdGlvbiBNZW51U3ViQ29udGVudChwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUNvbnRleHQoKTtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VNZW51Um9vdENvbnRleHQoKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhwcm9wcywgW1wib25Gb2N1c091dHNpZGVcIiwgXCJvbktleURvd25cIl0pO1xuICBjb25zdCB7XG4gICAgZGlyZWN0aW9uXG4gIH0gPSB1c2VMb2NhbGUoKTtcbiAgY29uc3Qgb25PcGVuQXV0b0ZvY3VzID0gKGUyKSA9PiB7XG4gICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgfTtcbiAgY29uc3Qgb25DbG9zZUF1dG9Gb2N1cyA9IChlMikgPT4ge1xuICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG4gIGNvbnN0IG9uRm9jdXNPdXRzaWRlID0gKGUyKSA9PiB7XG4gICAgbG9jYWwub25Gb2N1c091dHNpZGU/LihlMik7XG4gICAgY29uc3QgdGFyZ2V0ID0gZTIudGFyZ2V0O1xuICAgIGlmICghY29udGFpbnMoY29udGV4dC50cmlnZ2VyUmVmKCksIHRhcmdldCkpIHtcbiAgICAgIGNvbnRleHQuY2xvc2UoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uS2V5RG93biA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vbktleURvd24pO1xuICAgIGNvbnN0IGlzS2V5RG93bkluc2lkZSA9IGNvbnRhaW5zKGUyLmN1cnJlbnRUYXJnZXQsIGUyLnRhcmdldCk7XG4gICAgY29uc3QgaXNDbG9zZUtleSA9IFNVQl9DTE9TRV9LRVlTLmNsb3NlKGRpcmVjdGlvbigpLCByb290Q29udGV4dC5vcmllbnRhdGlvbigpKS5pbmNsdWRlcyhlMi5rZXkpO1xuICAgIGNvbnN0IGlzU3ViTWVudSA9IGNvbnRleHQucGFyZW50TWVudUNvbnRleHQoKSAhPSBudWxsO1xuICAgIGlmIChpc0tleURvd25JbnNpZGUgJiYgaXNDbG9zZUtleSAmJiBpc1N1Yk1lbnUpIHtcbiAgICAgIGNvbnRleHQuY2xvc2UoKTtcbiAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhjb250ZXh0LnRyaWdnZXJSZWYoKSk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnVDb250ZW50QmFzZSwgbWVyZ2VQcm9wcyh7XG4gICAgb25PcGVuQXV0b0ZvY3VzLFxuICAgIG9uQ2xvc2VBdXRvRm9jdXMsXG4gICAgb25Gb2N1c091dHNpZGUsXG4gICAgb25LZXlEb3duXG4gIH0sIG90aGVycykpO1xufVxudmFyIFNFTEVDVElPTl9LRVlTID0gW1wiRW50ZXJcIiwgXCIgXCJdO1xudmFyIFNVQl9PUEVOX0tFWVMgPSB7XG4gIG9wZW46IChkaXIsIG9yaWVudGF0aW9uKSA9PiB7XG4gICAgaWYgKGRpciA9PT0gXCJsdHJcIikge1xuICAgICAgcmV0dXJuIFsuLi5TRUxFQ1RJT05fS0VZUywgb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiID8gXCJBcnJvd1JpZ2h0XCIgOiBcIkFycm93RG93blwiXTtcbiAgICB9XG4gICAgcmV0dXJuIFsuLi5TRUxFQ1RJT05fS0VZUywgb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiID8gXCJBcnJvd0xlZnRcIiA6IFwiQXJyb3dVcFwiXTtcbiAgfVxufTtcbmZ1bmN0aW9uIE1lbnVTdWJUcmlnZ2VyKHByb3BzKSB7XG4gIGxldCByZWY7XG4gIGNvbnN0IHJvb3RDb250ZXh0ID0gdXNlTWVudVJvb3RDb250ZXh0KCk7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51Q29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogcm9vdENvbnRleHQuZ2VuZXJhdGVJZChgc3ViLXRyaWdnZXItJHtjcmVhdGVVbmlxdWVJZCgpfWApXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wicmVmXCIsIFwiaWRcIiwgXCJ0ZXh0VmFsdWVcIiwgXCJkaXNhYmxlZFwiLCBcIm9uUG9pbnRlck1vdmVcIiwgXCJvblBvaW50ZXJMZWF2ZVwiLCBcIm9uUG9pbnRlckRvd25cIiwgXCJvblBvaW50ZXJVcFwiLCBcIm9uQ2xpY2tcIiwgXCJvbktleURvd25cIiwgXCJvbk1vdXNlRG93blwiLCBcIm9uRm9jdXNcIl0pO1xuICBsZXQgb3BlblRpbWVvdXRJZCA9IG51bGw7XG4gIGNvbnN0IGNsZWFyT3BlblRpbWVvdXQgPSAoKSA9PiB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChvcGVuVGltZW91dElkKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KG9wZW5UaW1lb3V0SWQpO1xuICAgIH1cbiAgICBvcGVuVGltZW91dElkID0gbnVsbDtcbiAgfTtcbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvblxuICB9ID0gdXNlTG9jYWxlKCk7XG4gIGNvbnN0IGtleSA9ICgpID0+IGxvY2FsLmlkO1xuICBjb25zdCBwYXJlbnRTZWxlY3Rpb25NYW5hZ2VyID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmVudE1lbnVDb250ZXh0ID0gY29udGV4dC5wYXJlbnRNZW51Q29udGV4dCgpO1xuICAgIGlmIChwYXJlbnRNZW51Q29udGV4dCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJba29iYWx0ZV06IGBNZW51LlN1YlRyaWdnZXJgIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgTWVudS5TdWJgIGNvbXBvbmVudFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudE1lbnVDb250ZXh0Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKTtcbiAgfTtcbiAgY29uc3QgY29sbGVjdGlvbiA9ICgpID0+IGNvbnRleHQubGlzdFN0YXRlKCkuY29sbGVjdGlvbigpO1xuICBjb25zdCBpc0hpZ2hsaWdodGVkID0gKCkgPT4gcGFyZW50U2VsZWN0aW9uTWFuYWdlcigpLmZvY3VzZWRLZXkoKSA9PT0ga2V5KCk7XG4gIGNvbnN0IHNlbGVjdGFibGVJdGVtID0gY3JlYXRlU2VsZWN0YWJsZUl0ZW0oe1xuICAgIGtleSxcbiAgICBzZWxlY3Rpb25NYW5hZ2VyOiBwYXJlbnRTZWxlY3Rpb25NYW5hZ2VyLFxuICAgIHNob3VsZFNlbGVjdE9uUHJlc3NVcDogdHJ1ZSxcbiAgICBhbGxvd3NEaWZmZXJlbnRQcmVzc09yaWdpbjogdHJ1ZSxcbiAgICBkaXNhYmxlZDogKCkgPT4gbG9jYWwuZGlzYWJsZWRcbiAgfSwgKCkgPT4gcmVmKTtcbiAgY29uc3Qgb25DbGljayA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vbkNsaWNrKTtcbiAgICBpZiAoIWNvbnRleHQuaXNPcGVuKCkgJiYgIWxvY2FsLmRpc2FibGVkKSB7XG4gICAgICBjb250ZXh0Lm9wZW4odHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvblBvaW50ZXJNb3ZlID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uUG9pbnRlck1vdmUpO1xuICAgIGlmIChlMi5wb2ludGVyVHlwZSAhPT0gXCJtb3VzZVwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudE1lbnVDb250ZXh0ID0gY29udGV4dC5wYXJlbnRNZW51Q29udGV4dCgpO1xuICAgIHBhcmVudE1lbnVDb250ZXh0Py5vbkl0ZW1FbnRlcihlMik7XG4gICAgaWYgKGUyLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGxvY2FsLmRpc2FibGVkKSB7XG4gICAgICBwYXJlbnRNZW51Q29udGV4dD8ub25JdGVtTGVhdmUoZTIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWNvbnRleHQuaXNPcGVuKCkgJiYgIW9wZW5UaW1lb3V0SWQpIHtcbiAgICAgIGNvbnRleHQucGFyZW50TWVudUNvbnRleHQoKT8uc2V0UG9pbnRlckdyYWNlSW50ZW50KG51bGwpO1xuICAgICAgb3BlblRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29udGV4dC5vcGVuKGZhbHNlKTtcbiAgICAgICAgY2xlYXJPcGVuVGltZW91dCgpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gICAgcGFyZW50TWVudUNvbnRleHQ/Lm9uSXRlbUVudGVyKGUyKTtcbiAgICBpZiAoIWUyLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIGlmIChjb250ZXh0Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKS5pc0ZvY3VzZWQoKSkge1xuICAgICAgICBjb250ZXh0Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKS5zZXRGb2N1c2VkKGZhbHNlKTtcbiAgICAgICAgY29udGV4dC5saXN0U3RhdGUoKS5zZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZEtleSh2b2lkIDApO1xuICAgICAgfVxuICAgICAgZm9jdXNXaXRob3V0U2Nyb2xsaW5nKGUyLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgcGFyZW50TWVudUNvbnRleHQ/Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKS5zZXRGb2N1c2VkKHRydWUpO1xuICAgICAgcGFyZW50TWVudUNvbnRleHQ/Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKS5zZXRGb2N1c2VkS2V5KGtleSgpKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlckxlYXZlID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uUG9pbnRlckxlYXZlKTtcbiAgICBpZiAoZTIucG9pbnRlclR5cGUgIT09IFwibW91c2VcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjbGVhck9wZW5UaW1lb3V0KCk7XG4gICAgY29uc3QgcGFyZW50TWVudUNvbnRleHQgPSBjb250ZXh0LnBhcmVudE1lbnVDb250ZXh0KCk7XG4gICAgY29uc3QgY29udGVudEVsID0gY29udGV4dC5jb250ZW50UmVmKCk7XG4gICAgaWYgKGNvbnRlbnRFbCkge1xuICAgICAgcGFyZW50TWVudUNvbnRleHQ/LnNldFBvaW50ZXJHcmFjZUludGVudCh7XG4gICAgICAgIGFyZWE6IGdldFBvaW50ZXJHcmFjZUFyZWEoY29udGV4dC5jdXJyZW50UGxhY2VtZW50KCksIGUyLCBjb250ZW50RWwpLFxuICAgICAgICAvLyBTYWZlIGJlY2F1c2Ugc3ViIG1lbnUgYWx3YXlzIG9wZW4gXCJsZWZ0XCIgb3IgXCJyaWdodFwiLlxuICAgICAgICBzaWRlOiBjb250ZXh0LmN1cnJlbnRQbGFjZW1lbnQoKS5zcGxpdChcIi1cIilbMF1cbiAgICAgIH0pO1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dChwYXJlbnRNZW51Q29udGV4dD8ucG9pbnRlckdyYWNlVGltZW91dElkKCkpO1xuICAgICAgY29uc3QgcG9pbnRlckdyYWNlVGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBwYXJlbnRNZW51Q29udGV4dD8uc2V0UG9pbnRlckdyYWNlSW50ZW50KG51bGwpO1xuICAgICAgfSwgMzAwKTtcbiAgICAgIHBhcmVudE1lbnVDb250ZXh0Py5zZXRQb2ludGVyR3JhY2VUaW1lb3V0SWQocG9pbnRlckdyYWNlVGltZW91dElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyZW50TWVudUNvbnRleHQ/Lm9uVHJpZ2dlckxlYXZlKGUyKTtcbiAgICAgIGlmIChlMi5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHBhcmVudE1lbnVDb250ZXh0Py5zZXRQb2ludGVyR3JhY2VJbnRlbnQobnVsbCk7XG4gICAgfVxuICAgIHBhcmVudE1lbnVDb250ZXh0Py5vbkl0ZW1MZWF2ZShlMik7XG4gIH07XG4gIGNvbnN0IG9uS2V5RG93biA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vbktleURvd24pO1xuICAgIGlmIChlMi5yZXBlYXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGxvY2FsLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChTVUJfT1BFTl9LRVlTLm9wZW4oZGlyZWN0aW9uKCksIHJvb3RDb250ZXh0Lm9yaWVudGF0aW9uKCkpLmluY2x1ZGVzKGUyLmtleSkpIHtcbiAgICAgIGUyLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHBhcmVudFNlbGVjdGlvbk1hbmFnZXIoKS5zZXRGb2N1c2VkKGZhbHNlKTtcbiAgICAgIHBhcmVudFNlbGVjdGlvbk1hbmFnZXIoKS5zZXRGb2N1c2VkS2V5KHZvaWQgMCk7XG4gICAgICBpZiAoIWNvbnRleHQuaXNPcGVuKCkpIHtcbiAgICAgICAgY29udGV4dC5vcGVuKFwiZmlyc3RcIik7XG4gICAgICB9XG4gICAgICBjb250ZXh0LmZvY3VzQ29udGVudCgpO1xuICAgICAgY29udGV4dC5saXN0U3RhdGUoKS5zZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZCh0cnVlKTtcbiAgICAgIGNvbnRleHQubGlzdFN0YXRlKCkuc2VsZWN0aW9uTWFuYWdlcigpLnNldEZvY3VzZWRLZXkoY29sbGVjdGlvbigpLmdldEZpcnN0S2V5KCkpO1xuICAgIH1cbiAgfTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY29udGV4dC5yZWdpc3Rlckl0ZW1Ub1BhcmVudERvbUNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW2tvYmFsdGVdOiBgTWVudS5TdWJUcmlnZ2VyYCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYE1lbnUuU3ViYCBjb21wb25lbnRcIik7XG4gICAgfVxuICAgIGNvbnN0IHVucmVnaXN0ZXIgPSBjb250ZXh0LnJlZ2lzdGVySXRlbVRvUGFyZW50RG9tQ29sbGVjdGlvbih7XG4gICAgICByZWY6ICgpID0+IHJlZixcbiAgICAgIHR5cGU6IFwiaXRlbVwiLFxuICAgICAga2V5OiBrZXkoKSxcbiAgICAgIHRleHRWYWx1ZTogbG9jYWwudGV4dFZhbHVlID8/IHJlZj8udGV4dENvbnRlbnQgPz8gXCJcIixcbiAgICAgIGRpc2FibGVkOiBsb2NhbC5kaXNhYmxlZCA/PyBmYWxzZVxuICAgIH0pO1xuICAgIG9uQ2xlYW51cCh1bnJlZ2lzdGVyKTtcbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdChvbigoKSA9PiBjb250ZXh0LnBhcmVudE1lbnVDb250ZXh0KCk/LnBvaW50ZXJHcmFjZVRpbWVvdXRJZCgpLCAocG9pbnRlckdyYWNlVGltZXIpID0+IHtcbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dChwb2ludGVyR3JhY2VUaW1lcik7XG4gICAgICBjb250ZXh0LnBhcmVudE1lbnVDb250ZXh0KCk/LnNldFBvaW50ZXJHcmFjZUludGVudChudWxsKTtcbiAgICB9KTtcbiAgfSkpO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4gb25DbGVhbnVwKGNvbnRleHQucmVnaXN0ZXJUcmlnZ2VySWQobG9jYWwuaWQpKSk7XG4gIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgY2xlYXJPcGVuVGltZW91dCgpO1xuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiZGl2XCIsXG4gICAgcmVmKHIkKSB7XG4gICAgICBjb25zdCBfcmVmJCA9IG1lcmdlUmVmcygoZWwpID0+IHtcbiAgICAgICAgY29udGV4dC5zZXRUcmlnZ2VyUmVmKGVsKTtcbiAgICAgICAgcmVmID0gZWw7XG4gICAgICB9LCBsb2NhbC5yZWYpO1xuICAgICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgJiYgX3JlZiQociQpO1xuICAgIH0sXG4gICAgZ2V0IGlkKCkge1xuICAgICAgcmV0dXJuIGxvY2FsLmlkO1xuICAgIH0sXG4gICAgcm9sZTogXCJtZW51aXRlbVwiLFxuICAgIGdldCB0YWJJbmRleCgpIHtcbiAgICAgIHJldHVybiBzZWxlY3RhYmxlSXRlbS50YWJJbmRleCgpO1xuICAgIH0sXG4gICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwidHJ1ZVwiLFxuICAgIGdldCBbXCJhcmlhLWV4cGFuZGVkXCJdKCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuaXNPcGVuKCk7XG4gICAgfSxcbiAgICBnZXQgW1wiYXJpYS1jb250cm9sc1wiXSgpIHtcbiAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+ICEhY29udGV4dC5pc09wZW4oKSkoKSA/IGNvbnRleHQuY29udGVudElkKCkgOiB2b2lkIDA7XG4gICAgfSxcbiAgICBnZXQgW1wiYXJpYS1kaXNhYmxlZFwiXSgpIHtcbiAgICAgIHJldHVybiBsb2NhbC5kaXNhYmxlZDtcbiAgICB9LFxuICAgIGdldCBbXCJkYXRhLWtleVwiXSgpIHtcbiAgICAgIHJldHVybiBzZWxlY3RhYmxlSXRlbS5kYXRhS2V5KCk7XG4gICAgfSxcbiAgICBnZXQgW1wiZGF0YS1oaWdobGlnaHRlZFwiXSgpIHtcbiAgICAgIHJldHVybiBpc0hpZ2hsaWdodGVkKCkgPyBcIlwiIDogdm9pZCAwO1xuICAgIH0sXG4gICAgZ2V0IFtcImRhdGEtZGlzYWJsZWRcIl0oKSB7XG4gICAgICByZXR1cm4gbG9jYWwuZGlzYWJsZWQgPyBcIlwiIDogdm9pZCAwO1xuICAgIH0sXG4gICAgZ2V0IG9uUG9pbnRlckRvd24oKSB7XG4gICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uUG9pbnRlckRvd24sIHNlbGVjdGFibGVJdGVtLm9uUG9pbnRlckRvd25dKTtcbiAgICB9LFxuICAgIGdldCBvblBvaW50ZXJVcCgpIHtcbiAgICAgIHJldHVybiBjb21wb3NlRXZlbnRIYW5kbGVycyhbbG9jYWwub25Qb2ludGVyVXAsIHNlbGVjdGFibGVJdGVtLm9uUG9pbnRlclVwXSk7XG4gICAgfSxcbiAgICBnZXQgb25DbGljaygpIHtcbiAgICAgIHJldHVybiBjb21wb3NlRXZlbnRIYW5kbGVycyhbb25DbGljaywgc2VsZWN0YWJsZUl0ZW0ub25DbGlja10pO1xuICAgIH0sXG4gICAgZ2V0IG9uS2V5RG93bigpIHtcbiAgICAgIHJldHVybiBjb21wb3NlRXZlbnRIYW5kbGVycyhbb25LZXlEb3duLCBzZWxlY3RhYmxlSXRlbS5vbktleURvd25dKTtcbiAgICB9LFxuICAgIGdldCBvbk1vdXNlRG93bigpIHtcbiAgICAgIHJldHVybiBjb21wb3NlRXZlbnRIYW5kbGVycyhbbG9jYWwub25Nb3VzZURvd24sIHNlbGVjdGFibGVJdGVtLm9uTW91c2VEb3duXSk7XG4gICAgfSxcbiAgICBnZXQgb25Gb2N1cygpIHtcbiAgICAgIHJldHVybiBjb21wb3NlRXZlbnRIYW5kbGVycyhbbG9jYWwub25Gb2N1cywgc2VsZWN0YWJsZUl0ZW0ub25Gb2N1c10pO1xuICAgIH0sXG4gICAgb25Qb2ludGVyTW92ZSxcbiAgICBvblBvaW50ZXJMZWF2ZVxuICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgb3RoZXJzKSk7XG59XG5mdW5jdGlvbiBNZW51Um9vdChwcm9wcykge1xuICBjb25zdCBvcHRpb25hbE1lbnViYXJDb250ZXh0ID0gdXNlT3B0aW9uYWxNZW51YmFyQ29udGV4dCgpO1xuICBjb25zdCBkZWZhdWx0SWQgPSBgbWVudS0ke2NyZWF0ZVVuaXF1ZUlkKCl9YDtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IGRlZmF1bHRJZCxcbiAgICBtb2RhbDogdHJ1ZVxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcImlkXCIsIFwibW9kYWxcIiwgXCJwcmV2ZW50U2Nyb2xsXCIsIFwiZm9yY2VNb3VudFwiLCBcIm9wZW5cIiwgXCJkZWZhdWx0T3BlblwiLCBcIm9uT3BlbkNoYW5nZVwiLCBcInZhbHVlXCIsIFwib3JpZW50YXRpb25cIl0pO1xuICBjb25zdCBkaXNjbG9zdXJlU3RhdGUgPSBjcmVhdGVEaXNjbG9zdXJlU3RhdGUoe1xuICAgIG9wZW46ICgpID0+IGxvY2FsLm9wZW4sXG4gICAgZGVmYXVsdE9wZW46ICgpID0+IGxvY2FsLmRlZmF1bHRPcGVuLFxuICAgIG9uT3BlbkNoYW5nZTogKGlzT3BlbikgPT4gbG9jYWwub25PcGVuQ2hhbmdlPy4oaXNPcGVuKVxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBpc01vZGFsOiAoKSA9PiBsb2NhbC5tb2RhbCA/PyB0cnVlLFxuICAgIHByZXZlbnRTY3JvbGw6ICgpID0+IGxvY2FsLnByZXZlbnRTY3JvbGwgPz8gY29udGV4dC5pc01vZGFsKCksXG4gICAgZm9yY2VNb3VudDogKCkgPT4gbG9jYWwuZm9yY2VNb3VudCA/PyBmYWxzZSxcbiAgICBnZW5lcmF0ZUlkOiBjcmVhdGVHZW5lcmF0ZUlkKCgpID0+IGxvY2FsLmlkKSxcbiAgICB2YWx1ZTogKCkgPT4gbG9jYWwudmFsdWUsXG4gICAgb3JpZW50YXRpb246ICgpID0+IGxvY2FsLm9yaWVudGF0aW9uID8/IG9wdGlvbmFsTWVudWJhckNvbnRleHQ/Lm9yaWVudGF0aW9uKCkgPz8gXCJob3Jpem9udGFsXCJcbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChNZW51Um9vdENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dCxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnUsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgb3BlbigpIHtcbiAgICAgICAgICByZXR1cm4gZGlzY2xvc3VyZVN0YXRlLmlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25PcGVuQ2hhbmdlKCkge1xuICAgICAgICAgIHJldHVybiBkaXNjbG9zdXJlU3RhdGUuc2V0SXNPcGVuO1xuICAgICAgICB9XG4gICAgICB9LCBvdGhlcnMpKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9TVEdSRkpIWi5qc1xudmFyIHNlcGFyYXRvcl9leHBvcnRzID0ge307XG5fX2V4cG9ydChzZXBhcmF0b3JfZXhwb3J0cywge1xuICBSb290OiAoKSA9PiBTZXBhcmF0b3JSb290LFxuICBTZXBhcmF0b3I6ICgpID0+IFNlcGFyYXRvclxufSk7XG5mdW5jdGlvbiBTZXBhcmF0b3JSb290KHByb3BzKSB7XG4gIGxldCByZWY7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIG9yaWVudGF0aW9uOiBcImhvcml6b250YWxcIlxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcInJlZlwiLCBcIm9yaWVudGF0aW9uXCJdKTtcbiAgY29uc3QgdGFnTmFtZSA9IGNyZWF0ZVRhZ05hbWUoKCkgPT4gcmVmLCAoKSA9PiBcImhyXCIpO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICBhczogXCJoclwiLFxuICAgIHJlZihyJCkge1xuICAgICAgY29uc3QgX3JlZiQgPSBtZXJnZVJlZnMoKGVsKSA9PiByZWYgPSBlbCwgbG9jYWwucmVmKTtcbiAgICAgIHR5cGVvZiBfcmVmJCA9PT0gXCJmdW5jdGlvblwiICYmIF9yZWYkKHIkKTtcbiAgICB9LFxuICAgIGdldCByb2xlKCkge1xuICAgICAgcmV0dXJuIHRhZ05hbWUoKSAhPT0gXCJoclwiID8gXCJzZXBhcmF0b3JcIiA6IHZvaWQgMDtcbiAgICB9LFxuICAgIGdldCBbXCJhcmlhLW9yaWVudGF0aW9uXCJdKCkge1xuICAgICAgcmV0dXJuIGxvY2FsLm9yaWVudGF0aW9uID09PSBcInZlcnRpY2FsXCIgPyBcInZlcnRpY2FsXCIgOiB2b2lkIDA7XG4gICAgfSxcbiAgICBnZXQgW1wiZGF0YS1vcmllbnRhdGlvblwiXSgpIHtcbiAgICAgIHJldHVybiBsb2NhbC5vcmllbnRhdGlvbjtcbiAgICB9XG4gIH0sIG90aGVycykpO1xufVxudmFyIFNlcGFyYXRvciA9IFNlcGFyYXRvclJvb3Q7XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL1YySkJaN0JKLmpzXG52YXIgZHJvcGRvd25fbWVudV9leHBvcnRzID0ge307XG5fX2V4cG9ydChkcm9wZG93bl9tZW51X2V4cG9ydHMsIHtcbiAgQXJyb3c6ICgpID0+IFBvcHBlckFycm93LFxuICBDaGVja2JveEl0ZW06ICgpID0+IE1lbnVDaGVja2JveEl0ZW0sXG4gIENvbnRlbnQ6ICgpID0+IERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudTogKCkgPT4gRHJvcGRvd25NZW51LFxuICBHcm91cDogKCkgPT4gTWVudUdyb3VwLFxuICBHcm91cExhYmVsOiAoKSA9PiBNZW51R3JvdXBMYWJlbCxcbiAgSWNvbjogKCkgPT4gTWVudUljb24sXG4gIEl0ZW06ICgpID0+IE1lbnVJdGVtLFxuICBJdGVtRGVzY3JpcHRpb246ICgpID0+IE1lbnVJdGVtRGVzY3JpcHRpb24sXG4gIEl0ZW1JbmRpY2F0b3I6ICgpID0+IE1lbnVJdGVtSW5kaWNhdG9yLFxuICBJdGVtTGFiZWw6ICgpID0+IE1lbnVJdGVtTGFiZWwsXG4gIFBvcnRhbDogKCkgPT4gTWVudVBvcnRhbCxcbiAgUmFkaW9Hcm91cDogKCkgPT4gTWVudVJhZGlvR3JvdXAsXG4gIFJhZGlvSXRlbTogKCkgPT4gTWVudVJhZGlvSXRlbSxcbiAgUm9vdDogKCkgPT4gRHJvcGRvd25NZW51Um9vdCxcbiAgU2VwYXJhdG9yOiAoKSA9PiBTZXBhcmF0b3JSb290LFxuICBTdWI6ICgpID0+IE1lbnVTdWIsXG4gIFN1YkNvbnRlbnQ6ICgpID0+IE1lbnVTdWJDb250ZW50LFxuICBTdWJUcmlnZ2VyOiAoKSA9PiBNZW51U3ViVHJpZ2dlcixcbiAgVHJpZ2dlcjogKCkgPT4gTWVudVRyaWdnZXJcbn0pO1xuZnVuY3Rpb24gRHJvcGRvd25NZW51Q29udGVudChwcm9wcykge1xuICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dCgpO1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUNvbnRleHQoKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhwcm9wcywgW1wib25DbG9zZUF1dG9Gb2N1c1wiLCBcIm9uSW50ZXJhY3RPdXRzaWRlXCJdKTtcbiAgbGV0IGhhc0ludGVyYWN0ZWRPdXRzaWRlID0gZmFsc2U7XG4gIGNvbnN0IG9uQ2xvc2VBdXRvRm9jdXMgPSAoZTIpID0+IHtcbiAgICBsb2NhbC5vbkNsb3NlQXV0b0ZvY3VzPy4oZTIpO1xuICAgIGlmICghaGFzSW50ZXJhY3RlZE91dHNpZGUpIHtcbiAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhjb250ZXh0LnRyaWdnZXJSZWYoKSk7XG4gICAgfVxuICAgIGhhc0ludGVyYWN0ZWRPdXRzaWRlID0gZmFsc2U7XG4gICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgfTtcbiAgY29uc3Qgb25JbnRlcmFjdE91dHNpZGUgPSAoZTIpID0+IHtcbiAgICBsb2NhbC5vbkludGVyYWN0T3V0c2lkZT8uKGUyKTtcbiAgICBpZiAoIXJvb3RDb250ZXh0LmlzTW9kYWwoKSB8fCBlMi5kZXRhaWwuaXNDb250ZXh0TWVudSkge1xuICAgICAgaGFzSW50ZXJhY3RlZE91dHNpZGUgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChNZW51Q29udGVudCwgbWVyZ2VQcm9wcyh7XG4gICAgb25DbG9zZUF1dG9Gb2N1cyxcbiAgICBvbkludGVyYWN0T3V0c2lkZVxuICB9LCBvdGhlcnMpKTtcbn1cbmZ1bmN0aW9uIERyb3Bkb3duTWVudVJvb3QocHJvcHMpIHtcbiAgY29uc3QgZGVmYXVsdElkID0gYGRyb3Bkb3dubWVudS0ke2NyZWF0ZVVuaXF1ZUlkKCl9YDtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IGRlZmF1bHRJZFxuICB9LCBwcm9wcyk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoTWVudVJvb3QsIG1lcmdlZFByb3BzKTtcbn1cbnZhciBEcm9wZG93bk1lbnUgPSBPYmplY3QuYXNzaWduKERyb3Bkb3duTWVudVJvb3QsIHtcbiAgQXJyb3c6IFBvcHBlckFycm93LFxuICBDaGVja2JveEl0ZW06IE1lbnVDaGVja2JveEl0ZW0sXG4gIENvbnRlbnQ6IERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIEdyb3VwOiBNZW51R3JvdXAsXG4gIEdyb3VwTGFiZWw6IE1lbnVHcm91cExhYmVsLFxuICBJY29uOiBNZW51SWNvbixcbiAgSXRlbTogTWVudUl0ZW0sXG4gIEl0ZW1EZXNjcmlwdGlvbjogTWVudUl0ZW1EZXNjcmlwdGlvbixcbiAgSXRlbUluZGljYXRvcjogTWVudUl0ZW1JbmRpY2F0b3IsXG4gIEl0ZW1MYWJlbDogTWVudUl0ZW1MYWJlbCxcbiAgUG9ydGFsOiBNZW51UG9ydGFsLFxuICBSYWRpb0dyb3VwOiBNZW51UmFkaW9Hcm91cCxcbiAgUmFkaW9JdGVtOiBNZW51UmFkaW9JdGVtLFxuICBTZXBhcmF0b3I6IFNlcGFyYXRvclJvb3QsXG4gIFN1YjogTWVudVN1YixcbiAgU3ViQ29udGVudDogTWVudVN1YkNvbnRlbnQsXG4gIFN1YlRyaWdnZXI6IE1lbnVTdWJUcmlnZ2VyLFxuICBUcmlnZ2VyOiBNZW51VHJpZ2dlclxufSk7XG5cbi8vIHNyYy90aGVtZS50c1xudmFyIHRva2VucyA9IHtcbiAgY29sb3JzOiB7XG4gICAgaW5oZXJpdDogXCJpbmhlcml0XCIsXG4gICAgY3VycmVudDogXCJjdXJyZW50Q29sb3JcIixcbiAgICB0cmFuc3BhcmVudDogXCJ0cmFuc3BhcmVudFwiLFxuICAgIGJsYWNrOiBcIiMwMDAwMDBcIixcbiAgICB3aGl0ZTogXCIjZmZmZmZmXCIsXG4gICAgbmV1dHJhbDoge1xuICAgICAgNTA6IFwiI2Y5ZmFmYlwiLFxuICAgICAgMTAwOiBcIiNmMmY0ZjdcIixcbiAgICAgIDIwMDogXCIjZWFlY2YwXCIsXG4gICAgICAzMDA6IFwiI2QwZDVkZFwiLFxuICAgICAgNDAwOiBcIiM5OGEyYjNcIixcbiAgICAgIDUwMDogXCIjNjY3MDg1XCIsXG4gICAgICA2MDA6IFwiIzQ3NTQ2N1wiLFxuICAgICAgNzAwOiBcIiMzNDQwNTRcIixcbiAgICAgIDgwMDogXCIjMWQyOTM5XCIsXG4gICAgICA5MDA6IFwiIzEwMTgyOFwiXG4gICAgfSxcbiAgICBkYXJrR3JheToge1xuICAgICAgNTA6IFwiIzUyNWM3YVwiLFxuICAgICAgMTAwOiBcIiM0OTUzNmVcIixcbiAgICAgIDIwMDogXCIjNDE0OTYyXCIsXG4gICAgICAzMDA6IFwiIzM5NDA1NlwiLFxuICAgICAgNDAwOiBcIiMzMTM3NDlcIixcbiAgICAgIDUwMDogXCIjMjkyZTNkXCIsXG4gICAgICA2MDA6IFwiIzIxMjUzMFwiLFxuICAgICAgNzAwOiBcIiMxOTFjMjRcIixcbiAgICAgIDgwMDogXCIjMTExMzE4XCIsXG4gICAgICA5MDA6IFwiIzBiMGQxMFwiXG4gICAgfSxcbiAgICBncmF5OiB7XG4gICAgICA1MDogXCIjZjlmYWZiXCIsXG4gICAgICAxMDA6IFwiI2YyZjRmN1wiLFxuICAgICAgMjAwOiBcIiNlYWVjZjBcIixcbiAgICAgIDMwMDogXCIjZDBkNWRkXCIsXG4gICAgICA0MDA6IFwiIzk4YTJiM1wiLFxuICAgICAgNTAwOiBcIiM2NjcwODVcIixcbiAgICAgIDYwMDogXCIjNDc1NDY3XCIsXG4gICAgICA3MDA6IFwiIzM0NDA1NFwiLFxuICAgICAgODAwOiBcIiMxZDI5MzlcIixcbiAgICAgIDkwMDogXCIjMTAxODI4XCJcbiAgICB9LFxuICAgIGJsdWU6IHtcbiAgICAgIDI1OiBcIiNGNUZBRkZcIixcbiAgICAgIDUwOiBcIiNFRkY4RkZcIixcbiAgICAgIDEwMDogXCIjRDFFOUZGXCIsXG4gICAgICAyMDA6IFwiI0IyRERGRlwiLFxuICAgICAgMzAwOiBcIiM4NENBRkZcIixcbiAgICAgIDQwMDogXCIjNTNCMUZEXCIsXG4gICAgICA1MDA6IFwiIzJFOTBGQVwiLFxuICAgICAgNjAwOiBcIiMxNTcwRUZcIixcbiAgICAgIDcwMDogXCIjMTc1Q0QzXCIsXG4gICAgICA4MDA6IFwiIzE4NDlBOVwiLFxuICAgICAgOTAwOiBcIiMxOTQxODVcIlxuICAgIH0sXG4gICAgZ3JlZW46IHtcbiAgICAgIDI1OiBcIiNGNkZFRjlcIixcbiAgICAgIDUwOiBcIiNFQ0ZERjNcIixcbiAgICAgIDEwMDogXCIjRDFGQURGXCIsXG4gICAgICAyMDA6IFwiI0E2RjRDNVwiLFxuICAgICAgMzAwOiBcIiM2Q0U5QTZcIixcbiAgICAgIDQwMDogXCIjMzJENTgzXCIsXG4gICAgICA1MDA6IFwiIzEyQjc2QVwiLFxuICAgICAgNjAwOiBcIiMwMzk4NTVcIixcbiAgICAgIDcwMDogXCIjMDI3QTQ4XCIsXG4gICAgICA4MDA6IFwiIzA1NjAzQVwiLFxuICAgICAgOTAwOiBcIiMwNTRGMzFcIlxuICAgIH0sXG4gICAgcmVkOiB7XG4gICAgICA1MDogXCIjZmVmMmYyXCIsXG4gICAgICAxMDA6IFwiI2ZlZTJlMlwiLFxuICAgICAgMjAwOiBcIiNmZWNhY2FcIixcbiAgICAgIDMwMDogXCIjZmNhNWE1XCIsXG4gICAgICA0MDA6IFwiI2Y4NzE3MVwiLFxuICAgICAgNTAwOiBcIiNlZjQ0NDRcIixcbiAgICAgIDYwMDogXCIjZGMyNjI2XCIsXG4gICAgICA3MDA6IFwiI2I5MWMxY1wiLFxuICAgICAgODAwOiBcIiM5OTFiMWJcIixcbiAgICAgIDkwMDogXCIjN2YxZDFkXCIsXG4gICAgICA5NTA6IFwiIzQ1MGEwYVwiXG4gICAgfSxcbiAgICB5ZWxsb3c6IHtcbiAgICAgIDI1OiBcIiNGRkZDRjVcIixcbiAgICAgIDUwOiBcIiNGRkZBRUJcIixcbiAgICAgIDEwMDogXCIjRkVGMEM3XCIsXG4gICAgICAyMDA6IFwiI0ZFREY4OVwiLFxuICAgICAgMzAwOiBcIiNGRUM4NEJcIixcbiAgICAgIDQwMDogXCIjRkRCMDIyXCIsXG4gICAgICA1MDA6IFwiI0Y3OTAwOVwiLFxuICAgICAgNjAwOiBcIiNEQzY4MDNcIixcbiAgICAgIDcwMDogXCIjQjU0NzA4XCIsXG4gICAgICA4MDA6IFwiIzkzMzcwRFwiLFxuICAgICAgOTAwOiBcIiM3QTJFMEVcIlxuICAgIH0sXG4gICAgcHVycGxlOiB7XG4gICAgICAyNTogXCIjRkFGQUZGXCIsXG4gICAgICA1MDogXCIjRjRGM0ZGXCIsXG4gICAgICAxMDA6IFwiI0VCRTlGRVwiLFxuICAgICAgMjAwOiBcIiNEOUQ2RkVcIixcbiAgICAgIDMwMDogXCIjQkRCNEZFXCIsXG4gICAgICA0MDA6IFwiIzlCOEFGQlwiLFxuICAgICAgNTAwOiBcIiM3QTVBRjhcIixcbiAgICAgIDYwMDogXCIjNjkzOEVGXCIsXG4gICAgICA3MDA6IFwiIzU5MjVEQ1wiLFxuICAgICAgODAwOiBcIiM0QTFGQjhcIixcbiAgICAgIDkwMDogXCIjM0UxQzk2XCJcbiAgICB9LFxuICAgIHRlYWw6IHtcbiAgICAgIDI1OiBcIiNGNkZFRkNcIixcbiAgICAgIDUwOiBcIiNGMEZERjlcIixcbiAgICAgIDEwMDogXCIjQ0NGQkVGXCIsXG4gICAgICAyMDA6IFwiIzk5RjZFMFwiLFxuICAgICAgMzAwOiBcIiM1RkU5RDBcIixcbiAgICAgIDQwMDogXCIjMkVEM0I3XCIsXG4gICAgICA1MDA6IFwiIzE1Qjc5RVwiLFxuICAgICAgNjAwOiBcIiMwRTkzODRcIixcbiAgICAgIDcwMDogXCIjMTA3NTY5XCIsXG4gICAgICA4MDA6IFwiIzEyNUQ1NlwiLFxuICAgICAgOTAwOiBcIiMxMzRFNDhcIlxuICAgIH0sXG4gICAgcGluazoge1xuICAgICAgMjU6IFwiI2ZkZjJmOFwiLFxuICAgICAgNTA6IFwiI2ZjZTdmM1wiLFxuICAgICAgMTAwOiBcIiNmYmNmZThcIixcbiAgICAgIDIwMDogXCIjZjlhOGQ0XCIsXG4gICAgICAzMDA6IFwiI2Y0NzJiNlwiLFxuICAgICAgNDAwOiBcIiNlYzQ4OTlcIixcbiAgICAgIDUwMDogXCIjZGIyNzc3XCIsXG4gICAgICA2MDA6IFwiI2JlMTg1ZFwiLFxuICAgICAgNzAwOiBcIiM5ZDE3NGRcIixcbiAgICAgIDgwMDogXCIjODMxODQzXCIsXG4gICAgICA5MDA6IFwiIzUwMDcyNFwiXG4gICAgfSxcbiAgICBjeWFuOiB7XG4gICAgICAyNTogXCIjZWNmZWZmXCIsXG4gICAgICA1MDogXCIjY2ZmYWZlXCIsXG4gICAgICAxMDA6IFwiI2E1ZjNmY1wiLFxuICAgICAgMjAwOiBcIiM2N2U4ZjlcIixcbiAgICAgIDMwMDogXCIjMjJkM2VlXCIsXG4gICAgICA0MDA6IFwiIzA2YjZkNFwiLFxuICAgICAgNTAwOiBcIiMwODkxYjJcIixcbiAgICAgIDYwMDogXCIjMGU3NDkwXCIsXG4gICAgICA3MDA6IFwiIzE1NWU3NVwiLFxuICAgICAgODAwOiBcIiMxNjRlNjNcIixcbiAgICAgIDkwMDogXCIjMDgzMzQ0XCJcbiAgICB9XG4gIH0sXG4gIGFscGhhOiB7XG4gICAgMTAwOiBcImZmXCIsXG4gICAgOTA6IFwiZTVcIixcbiAgICA4MDogXCJjY1wiLFxuICAgIDcwOiBcImIzXCIsXG4gICAgNjA6IFwiOTlcIixcbiAgICA1MDogXCI4MFwiLFxuICAgIDQwOiBcIjY2XCIsXG4gICAgMzA6IFwiNGRcIixcbiAgICAyMDogXCIzM1wiLFxuICAgIDEwOiBcIjFhXCIsXG4gICAgMDogXCIwMFwiXG4gIH0sXG4gIGZvbnQ6IHtcbiAgICBzaXplOiB7XG4gICAgICBcIjJ4c1wiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMC42MjUpXCIsXG4gICAgICB4czogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuNzUpXCIsXG4gICAgICBzbTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuODc1KVwiLFxuICAgICAgbWQ6IFwidmFyKC0tdHNxZC1mb250LXNpemUpXCIsXG4gICAgICBsZzogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEuMTI1KVwiLFxuICAgICAgeGw6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxLjI1KVwiLFxuICAgICAgXCIyeGxcIjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEuNSlcIixcbiAgICAgIFwiM3hsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxLjg3NSlcIixcbiAgICAgIFwiNHhsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAyLjI1KVwiLFxuICAgICAgXCI1eGxcIjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDMpXCIsXG4gICAgICBcIjZ4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMy43NSlcIixcbiAgICAgIFwiN3hsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiA0LjUpXCIsXG4gICAgICBcIjh4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogNilcIixcbiAgICAgIFwiOXhsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiA4KVwiXG4gICAgfSxcbiAgICBsaW5lSGVpZ2h0OiB7XG4gICAgICB4czogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEpXCIsXG4gICAgICBzbTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEuMjUpXCIsXG4gICAgICBtZDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEuNSlcIixcbiAgICAgIGxnOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMS43NSlcIixcbiAgICAgIHhsOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMilcIixcbiAgICAgIFwiMnhsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAyLjI1KVwiLFxuICAgICAgXCIzeGxcIjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDIuNSlcIixcbiAgICAgIFwiNHhsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAyLjc1KVwiLFxuICAgICAgXCI1eGxcIjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDMpXCIsXG4gICAgICBcIjZ4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMy4yNSlcIixcbiAgICAgIFwiN3hsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAzLjUpXCIsXG4gICAgICBcIjh4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMy43NSlcIixcbiAgICAgIFwiOXhsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiA0KVwiXG4gICAgfSxcbiAgICB3ZWlnaHQ6IHtcbiAgICAgIHRoaW46IFwiMTAwXCIsXG4gICAgICBleHRyYWxpZ2h0OiBcIjIwMFwiLFxuICAgICAgbGlnaHQ6IFwiMzAwXCIsXG4gICAgICBub3JtYWw6IFwiNDAwXCIsXG4gICAgICBtZWRpdW06IFwiNTAwXCIsXG4gICAgICBzZW1pYm9sZDogXCI2MDBcIixcbiAgICAgIGJvbGQ6IFwiNzAwXCIsXG4gICAgICBleHRyYWJvbGQ6IFwiODAwXCIsXG4gICAgICBibGFjazogXCI5MDBcIlxuICAgIH1cbiAgfSxcbiAgYnJlYWtwb2ludHM6IHtcbiAgICB4czogXCIzMjBweFwiLFxuICAgIHNtOiBcIjY0MHB4XCIsXG4gICAgbWQ6IFwiNzY4cHhcIixcbiAgICBsZzogXCIxMDI0cHhcIixcbiAgICB4bDogXCIxMjgwcHhcIixcbiAgICBcIjJ4bFwiOiBcIjE1MzZweFwiXG4gIH0sXG4gIGJvcmRlcjoge1xuICAgIHJhZGl1czoge1xuICAgICAgbm9uZTogXCIwcHhcIixcbiAgICAgIHhzOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMC4xMjUpXCIsXG4gICAgICBzbTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuMjUpXCIsXG4gICAgICBtZDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuMzc1KVwiLFxuICAgICAgbGc6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjUpXCIsXG4gICAgICB4bDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuNzUpXCIsXG4gICAgICBcIjJ4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMSlcIixcbiAgICAgIFwiM3hsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxLjUpXCIsXG4gICAgICBmdWxsOiBcIjk5OTlweFwiXG4gICAgfVxuICB9LFxuICBzaXplOiB7XG4gICAgMDogXCIwcHhcIixcbiAgICAwLjI1OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMC4wNjI1KVwiLFxuICAgIDAuNTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuMTI1KVwiLFxuICAgIDE6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjI1KVwiLFxuICAgIDEuNTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuMzc1KVwiLFxuICAgIDI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjUpXCIsXG4gICAgMi41OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMC42MjUpXCIsXG4gICAgMzogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuNzUpXCIsXG4gICAgMy41OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMC44NzUpXCIsXG4gICAgNDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEpXCIsXG4gICAgNC41OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMS4xMjUpXCIsXG4gICAgNTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEuMjUpXCIsXG4gICAgNS41OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMS4zNzUpXCIsXG4gICAgNjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEuNSlcIixcbiAgICA2LjU6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxLjYyNSlcIixcbiAgICA3OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMS43NSlcIixcbiAgICA4OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMilcIixcbiAgICA5OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMi4yNSlcIixcbiAgICAxMDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDIuNSlcIixcbiAgICAxMTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDIuNzUpXCIsXG4gICAgMTI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAzKVwiLFxuICAgIDE0OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMy41KVwiLFxuICAgIDE2OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogNClcIixcbiAgICAyMDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDUpXCIsXG4gICAgMjQ6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiA2KVwiLFxuICAgIDI4OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogNylcIixcbiAgICAzMjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDgpXCIsXG4gICAgMzY6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiA5KVwiLFxuICAgIDQwOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMTApXCIsXG4gICAgNDQ6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxMSlcIixcbiAgICA0ODogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEyKVwiLFxuICAgIDUyOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMTMpXCIsXG4gICAgNTY6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxNClcIixcbiAgICA2MDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDE1KVwiLFxuICAgIDY0OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMTYpXCIsXG4gICAgNzI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxOClcIixcbiAgICA4MDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDIwKVwiLFxuICAgIDk2OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMjQpXCJcbiAgfSxcbiAgc2hhZG93OiB7XG4gICAgeHM6IChfID0gXCJyZ2IoMCAwIDAgLyAwLjEpXCIpID0+IGAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjA1KWAsXG4gICAgc206IChjb2xvciA9IFwicmdiKDAgMCAwIC8gMC4xKVwiKSA9PiBgMCAxcHggM3B4IDAgJHtjb2xvcn0sIDAgMXB4IDJweCAtMXB4ICR7Y29sb3J9YCxcbiAgICBtZDogKGNvbG9yID0gXCJyZ2IoMCAwIDAgLyAwLjEpXCIpID0+IGAwIDRweCA2cHggLTFweCAke2NvbG9yfSwgMCAycHggNHB4IC0ycHggJHtjb2xvcn1gLFxuICAgIGxnOiAoY29sb3IgPSBcInJnYigwIDAgMCAvIDAuMSlcIikgPT4gYDAgMTBweCAxNXB4IC0zcHggJHtjb2xvcn0sIDAgNHB4IDZweCAtNHB4ICR7Y29sb3J9YCxcbiAgICB4bDogKGNvbG9yID0gXCJyZ2IoMCAwIDAgLyAwLjEpXCIpID0+IGAwIDIwcHggMjVweCAtNXB4ICR7Y29sb3J9LCAwIDhweCAxMHB4IC02cHggJHtjb2xvcn1gLFxuICAgIFwiMnhsXCI6IChjb2xvciA9IFwicmdiKDAgMCAwIC8gMC4yNSlcIikgPT4gYDAgMjVweCA1MHB4IC0xMnB4ICR7Y29sb3J9YCxcbiAgICBpbm5lcjogKGNvbG9yID0gXCJyZ2IoMCAwIDAgLyAwLjA1KVwiKSA9PiBgaW5zZXQgMCAycHggNHB4IDAgJHtjb2xvcn1gLFxuICAgIG5vbmU6ICgpID0+IGBub25lYFxuICB9LFxuICB6SW5kaWNlczoge1xuICAgIGhpZGU6IC0xLFxuICAgIGF1dG86IFwiYXV0b1wiLFxuICAgIGJhc2U6IDAsXG4gICAgZG9ja2VkOiAxMCxcbiAgICBkcm9wZG93bjogMWUzLFxuICAgIHN0aWNreTogMTEwMCxcbiAgICBiYW5uZXI6IDEyMDAsXG4gICAgb3ZlcmxheTogMTMwMCxcbiAgICBtb2RhbDogMTQwMCxcbiAgICBwb3BvdmVyOiAxNTAwLFxuICAgIHNraXBMaW5rOiAxNjAwLFxuICAgIHRvYXN0OiAxNzAwLFxuICAgIHRvb2x0aXA6IDE4MDBcbiAgfVxufTtcblxuLy8gc3JjL2ljb25zL2luZGV4LnRzeFxudmFyIF90bXBsJDIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MTQgaGVpZ2h0PTE0IHZpZXdCb3g9XCIwIDAgMTQgMTRcImZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTEzIDEzTDkuMDAwMDcgOU0xMC4zMzMzIDUuNjY2NjdDMTAuMzMzMyA4LjI0NCA4LjI0NCAxMC4zMzMzIDUuNjY2NjcgMTAuMzMzM0MzLjA4OTM0IDEwLjMzMzMgMSA4LjI0NCAxIDUuNjY2NjdDMSAzLjA4OTM0IDMuMDg5MzQgMSA1LjY2NjY3IDFDOC4yNDQgMSAxMC4zMzMzIDMuMDg5MzQgMTAuMzMzMyA1LjY2NjY3Wlwic3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MS42NjY2NyBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkMjIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MjQgaGVpZ2h0PTI0IHZpZXdCb3g9XCIwIDAgMjQgMjRcImZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTkgM0gxNU0zIDZIMjFNMTkgNkwxOC4yOTg3IDE2LjUxOTNDMTguMTkzNSAxOC4wOTc1IDE4LjE0MDkgMTguODg2NyAxNy44IDE5LjQ4NUMxNy40OTk5IDIwLjAxMTggMTcuMDQ3MiAyMC40MzUzIDE2LjUwMTcgMjAuNjk5N0MxNS44ODIgMjEgMTUuMDkxMSAyMSAxMy41MDkzIDIxSDEwLjQ5MDdDOC45MDg5MSAyMSA4LjExODAzIDIxIDcuNDk4MzQgMjAuNjk5N0M2Ljk1Mjc2IDIwLjQzNTMgNi41MDAwOSAyMC4wMTE4IDYuMTk5OTggMTkuNDg1QzUuODU5MTEgMTguODg2NyA1LjgwNjUgMTguMDk3NSA1LjcwMTI5IDE2LjUxOTNMNSA2TTEwIDEwLjVWMTUuNU0xNCAxMC41VjE1LjVcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTIgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MTAgaGVpZ2h0PTYgdmlld0JveD1cIjAgMCAxMCA2XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk0xIDFMNSA1TDkgMVwic3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MS42NjY2NyBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkNCA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB3aWR0aD0xMiBoZWlnaHQ9MTIgdmlld0JveD1cIjAgMCAxNiAxNlwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNOCAxMy4zMzMzVjIuNjY2NjdNOCAyLjY2NjY3TDQgNi42NjY2N004IDIuNjY2NjdMMTIgNi42NjY2N1wic3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MS42NjY2NyBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkNSA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB3aWR0aD0xMiBoZWlnaHQ9MTIgdmlld0JveD1cIjAgMCAxNiAxNlwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNOCAyLjY2NjY3VjEzLjMzMzNNOCAxMy4zMzMzTDQgOS4zMzMzM004IDEzLjMzMzNMMTIgOS4zMzMzM1wic3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MS42NjY2NyBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkNiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCJoZWlnaHQ9MTIgd2lkdGg9MTIgZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNMTIgMnYybTAgMTZ2Mk00IDEySDJtNC4zMTQtNS42ODZMNC45IDQuOW0xMi43ODYgMS40MTRMMTkuMSA0LjlNNi4zMTQgMTcuNjkgNC45IDE5LjEwNG0xMi43ODYtMS40MTQgMS40MTQgMS40MTRNMjIgMTJoLTJtLTMgMGE1IDUgMCAxIDEtMTAgMCA1IDUgMCAwIDEgMTAgMFpcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTIgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDcgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiaGVpZ2h0PTEyIHdpZHRoPTEyIGZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTIyIDE1Ljg0NGExMC40MjQgMTAuNDI0IDAgMCAxLTQuMzA2LjkyNWMtNS43NzkgMC0xMC40NjMtNC42ODQtMTAuNDYzLTEwLjQ2MiAwLTEuNTM2LjMzLTIuOTk0LjkyNS00LjMwN0ExMC40NjQgMTAuNDY0IDAgMCAwIDIgMTEuNTM4QzIgMTcuMzE2IDYuNjg0IDIyIDEyLjQ2MiAyMmM0LjI0MyAwIDcuODk2LTIuNTI2IDkuNTM4LTYuMTU2Wlwic3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkOCA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCJoZWlnaHQ9MTIgd2lkdGg9MTIgZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNOCAyMWg4bS00LTR2NG0tNS4yLTRoMTAuNGMxLjY4IDAgMi41MiAwIDMuMTYyLS4zMjdhMyAzIDAgMCAwIDEuMzExLTEuMzExQzIyIDE0LjcyIDIyIDEzLjg4IDIyIDEyLjJWNy44YzAtMS42OCAwLTIuNTItLjMyNy0zLjE2MmEzIDMgMCAwIDAtMS4zMTEtMS4zMTFDMTkuNzIgMyAxOC44OCAzIDE3LjIgM0g2LjhjLTEuNjggMC0yLjUyIDAtMy4xNjIuMzI3YTMgMyAwIDAgMC0xLjMxMSAxLjMxMUMyIDUuMjggMiA2LjEyIDIgNy44djQuNGMwIDEuNjggMCAyLjUyLjMyNyAzLjE2MmEzIDMgMCAwIDAgMS4zMTEgMS4zMTFDNC4yOCAxNyA1LjEyIDE3IDYuOCAxN1pcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTIgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDkgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgc3Ryb2tlPWN1cnJlbnRDb2xvciBmaWxsPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJoZWlnaHQ9MWVtIHdpZHRoPTFlbSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBmaWxsPW5vbmUgZD1cIk0wIDBoMjR2MjRIMHpcIj48L3BhdGg+PHBhdGggZD1cIk0xIDlsMiAyYzQuOTctNC45NyAxMy4wMy00Ljk3IDE4IDBsMi0yQzE2LjkzIDIuOTMgNy4wOCAyLjkzIDEgOXptOCA4bDMgMyAzLTNhNC4yMzcgNC4yMzcgMCAwMC02IDB6bS00LTRsMiAyYTcuMDc0IDcuMDc0IDAgMDExMCAwbDItMkMxNS4xNCA5LjE0IDguODcgOS4xNCA1IDEzelwiPmApO1xudmFyIF90bXBsJDEwID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHN0cm9rZS13aWR0aD0wIHZpZXdCb3g9XCIwIDAgMjQgMjRcImhlaWdodD0xZW0gd2lkdGg9MWVtIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGZpbGw9bm9uZSBkPVwiTTI0IC4wMWMwLS4wMSAwLS4wMSAwIDBMMCAwdjI0aDI0Vi4wMXpNMCAwaDI0djI0SDBWMHptMCAwaDI0djI0SDBWMHpcIj48L3BhdGg+PHBhdGggZD1cIk0yMi45OSA5QzE5LjE1IDUuMTYgMTMuOCAzLjc2IDguODQgNC43OGwyLjUyIDIuNTJjMy40Ny0uMTcgNi45OSAxLjA1IDkuNjMgMy43bDItMnptLTQgNGE5Ljc5MyA5Ljc5MyAwIDAwLTQuNDktMi41NmwzLjUzIDMuNTMuOTYtLjk3ek0yIDMuMDVMNS4wNyA2LjFDMy42IDYuODIgMi4yMiA3Ljc4IDEgOWwxLjk5IDJjMS4yNC0xLjI0IDIuNjctMi4xNiA0LjItMi43N2wyLjI0IDIuMjRBOS42ODQgOS42ODQgMCAwMDUgMTN2LjAxTDYuOTkgMTVhNy4wNDIgNy4wNDIgMCAwMTQuOTItMi4wNkwxOC45OCAyMGwxLjI3LTEuMjZMMy4yOSAxLjc5IDIgMy4wNXpNOSAxN2wzIDMgMy0zYTQuMjM3IDQuMjM3IDAgMDAtNiAwelwiPmApO1xudmFyIF90bXBsJDExID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTI0IGhlaWdodD0yNCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk05LjM5NTEgMTkuMzcxMUw5Ljk3OTU1IDIwLjY4NTZDMTAuMTUzMyAyMS4wNzY4IDEwLjQzNjggMjEuNDA5MyAxMC43OTU4IDIxLjY0MjZDMTEuMTU0NyAyMS44NzU5IDExLjU3MzcgMjIuMDAwMSAxMi4wMDE4IDIyQzEyLjQyOTkgMjIuMDAwMSAxMi44NDg4IDIxLjg3NTkgMTMuMjA3OCAyMS42NDI2QzEzLjU2NjcgMjEuNDA5MyAxMy44NTAzIDIxLjA3NjggMTQuMDI0IDIwLjY4NTZMMTQuNjA4NCAxOS4zNzExQzE0LjgxNjUgMTguOTA0NyAxNS4xNjY0IDE4LjUxNTkgMTUuNjA4NCAxOC4yNkMxNi4wNTMyIDE4LjAwMzQgMTYuNTY3OCAxNy44OTQxIDE3LjA3ODQgMTcuOTQ3OEwxOC41MDg0IDE4LjFDMTguOTM0MSAxOC4xNDUgMTkuMzYzNyAxOC4wNjU2IDE5Ljc0NTEgMTcuODcxM0MyMC4xMjY1IDE3LjY3NzEgMjAuNDQzNCAxNy4zNzYzIDIwLjY1NzMgMTcuMDA1NkMyMC44NzE1IDE2LjYzNSAyMC45NzM1IDE2LjIxMDMgMjAuOTUxMSAxNS43ODI5QzIwLjkyODYgMTUuMzU1NSAyMC43ODI1IDE0Ljk0MzggMjAuNTMwNyAxNC41OTc4TDE5LjY4NCAxMy40MzQ0QzE5LjM4MjUgMTMuMDE3MSAxOS4yMjE0IDEyLjUxNDggMTkuMjI0IDEyQzE5LjIyMzkgMTEuNDg2NiAxOS4zODY1IDEwLjk4NjQgMTkuNjg4NCAxMC41NzExTDIwLjUzNTEgOS40MDc3OEMyMC43ODcgOS4wNjE3NSAyMC45MzMgOC42NTAwNyAyMC45NTU1IDguMjIyNjdDMjAuOTc4IDcuNzk1MjggMjAuODc1OSA3LjM3MDU0IDIwLjY2MTggN0MyMC40NDc5IDYuNjI5MjMgMjAuMTMxIDYuMzI4NDkgMTkuNzQ5NiA2LjEzNDIzQzE5LjM2ODEgNS45Mzk5NyAxOC45Mzg2IDUuODYwNTMgMTguNTEyOSA1LjkwNTU2TDE3LjA4MjkgNi4wNTc3OEMxNi41NzIyIDYuMTExNDEgMTYuMDU3NyA2LjAwMjEyIDE1LjYxMjkgNS43NDU1NkMxNS4xNyA1LjQ4ODI1IDE0LjgyIDUuMDk3MzYgMTQuNjEyOSA0LjYyODg5TDE0LjAyNCAzLjMxNDQ0QzEzLjg1MDMgMi45MjMxNyAxMy41NjY3IDIuNTkwNzIgMTMuMjA3OCAyLjM1NzRDMTIuODQ4OCAyLjEyNDA4IDEyLjQyOTkgMS45OTk5MyAxMi4wMDE4IDJDMTEuNTczNyAxLjk5OTkzIDExLjE1NDcgMi4xMjQwOCAxMC43OTU4IDIuMzU3NEMxMC40MzY4IDIuNTkwNzIgMTAuMTUzMyAyLjkyMzE3IDkuOTc5NTUgMy4zMTQ0NEw5LjM5NTEgNC42Mjg4OUM5LjE4ODAzIDUuMDk3MzYgOC44Mzc5OCA1LjQ4ODI1IDguMzk1MSA1Ljc0NTU2QzcuOTUwMzIgNi4wMDIxMiA3LjQzNTc3IDYuMTExNDEgNi45MjUxIDYuMDU3NzhMNS40OTA2NiA1LjkwNTU2QzUuMDY0OTkgNS44NjA1MyA0LjYzNTQgNS45Mzk5NyA0LjI1Mzk3IDYuMTM0MjNDMy44NzI1NSA2LjMyODQ5IDMuNTU1NjcgNi42MjkyMyAzLjM0MTc3IDdDMy4xMjc1OSA3LjM3MDU0IDMuMDI1NTUgNy43OTUyOCAzLjA0ODA0IDguMjIyNjdDMy4wNzA1MiA4LjY1MDA3IDMuMjE2NTYgOS4wNjE3NSAzLjQ2ODQ0IDkuNDA3NzhMNC4zMTUxIDEwLjU3MTFDNC42MTcwNCAxMC45ODY0IDQuNzc5NjQgMTEuNDg2NiA0Ljc3OTU1IDEyQzQuNzc5NjQgMTIuNTEzNCA0LjYxNzA0IDEzLjAxMzcgNC4zMTUxIDEzLjQyODlMMy40Njg0NCAxNC41OTIyQzMuMjE2NTYgMTQuOTM4MiAzLjA3MDUyIDE1LjM0OTkgMy4wNDgwNCAxNS43NzczQzMuMDI1NTUgMTYuMjA0NyAzLjEyNzU5IDE2LjYyOTUgMy4zNDE3NyAxN0MzLjU1NTg5IDE3LjM3MDYgMy44NzI4IDE3LjY3MTIgNC4yNTQxNyAxNy44NjU0QzQuNjM1NTQgMTguMDU5NiA1LjA2NTAyIDE4LjEzOTIgNS40OTA2NiAxOC4wOTQ0TDYuOTIwNjYgMTcuOTQyMkM3LjQzMTMzIDE3Ljg4ODYgNy45NDU4NyAxNy45OTc5IDguMzkwNjYgMTguMjU0NEM4LjgzNTE5IDE4LjUxMSA5LjE4Njg3IDE4LjkwMiA5LjM5NTEgMTkuMzcxMVpcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTIgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPjwvcGF0aD48cGF0aCBkPVwiTTEyIDE1QzEzLjY1NjggMTUgMTUgMTMuNjU2OSAxNSAxMkMxNSAxMC4zNDMxIDEzLjY1NjggOSAxMiA5QzEwLjM0MzEgOSA4Ljk5OTk4IDEwLjM0MzEgOC45OTk5OCAxMkM4Ljk5OTk4IDEzLjY1NjkgMTAuMzQzMSAxNSAxMiAxNVpcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTIgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDEyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTI0IGhlaWdodD0yNCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk0xNiAyMUgxNi4yQzE3Ljg4MDIgMjEgMTguNzIwMiAyMSAxOS4zNjIgMjAuNjczQzE5LjkyNjUgMjAuMzg1NCAyMC4zODU0IDE5LjkyNjUgMjAuNjczIDE5LjM2MkMyMSAxOC43MjAyIDIxIDE3Ljg4MDIgMjEgMTYuMlY3LjhDMjEgNi4xMTk4NCAyMSA1LjI3OTc2IDIwLjY3MyA0LjYzODAzQzIwLjM4NTQgNC4wNzM1NCAxOS45MjY1IDMuNjE0NiAxOS4zNjIgMy4zMjY5OEMxOC43MjAyIDMgMTcuODgwMiAzIDE2LjIgM0g3LjhDNi4xMTk4NCAzIDUuMjc5NzYgMyA0LjYzODAzIDMuMzI2OThDNC4wNzM1NCAzLjYxNDYgMy42MTQ2IDQuMDczNTQgMy4zMjY5OCA0LjYzODAzQzMgNS4yNzk3NiAzIDYuMTE5ODQgMyA3LjhWOE0xMS41IDEyLjVMMTcgN00xNyA3SDEyTTE3IDdWMTJNNi4yIDIxSDguOEM5LjkyMDEgMjEgMTAuNDgwMiAyMSAxMC45MDggMjAuNzgyQzExLjI4NDMgMjAuNTkwMyAxMS41OTAzIDIwLjI4NDMgMTEuNzgyIDE5LjkwOEMxMiAxOS40ODAyIDEyIDE4LjkyMDEgMTIgMTcuOFYxNS4yQzEyIDE0LjA3OTkgMTIgMTMuNTE5OCAxMS43ODIgMTMuMDkyQzExLjU5MDMgMTIuNzE1NyAxMS4yODQzIDEyLjQwOTcgMTAuOTA4IDEyLjIxOEMxMC40ODAyIDEyIDkuOTIwMTEgMTIgOC44IDEySDYuMkM1LjA3OTkgMTIgNC41MTk4NCAxMiA0LjA5MjAyIDEyLjIxOEMzLjcxNTY5IDEyLjQwOTcgMy40MDk3MyAxMi43MTU3IDMuMjE3OTkgMTMuMDkyQzMgMTMuNTE5OCAzIDE0LjA3OTkgMyAxNS4yVjE3LjhDMyAxOC45MjAxIDMgMTkuNDgwMiAzLjIxNzk5IDE5LjkwOEMzLjQwOTczIDIwLjI4NDMgMy43MTU2OSAyMC41OTAzIDQuMDkyMDIgMjAuNzgyQzQuNTE5ODQgMjEgNS4wNzk4OSAyMSA2LjIgMjFaXCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQxMyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB3aWR0aD0yNCBoZWlnaHQ9MjQgdmlld0JveD1cIjAgMCAyNCAyNFwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGNsYXNzPWNvcGllciBkPVwiTTggOFY1LjJDOCA0LjA3OTkgOCAzLjUxOTg0IDguMjE3OTkgMy4wOTIwMkM4LjQwOTczIDIuNzE1NjkgOC43MTU2OSAyLjQwOTczIDkuMDkyMDIgMi4yMTc5OUM5LjUxOTg0IDIgMTAuMDc5OSAyIDExLjIgMkgxOC44QzE5LjkyMDEgMiAyMC40ODAyIDIgMjAuOTA4IDIuMjE3OTlDMjEuMjg0MyAyLjQwOTczIDIxLjU5MDMgMi43MTU2OSAyMS43ODIgMy4wOTIwMkMyMiAzLjUxOTg0IDIyIDQuMDc5OSAyMiA1LjJWMTIuOEMyMiAxMy45MjAxIDIyIDE0LjQ4MDIgMjEuNzgyIDE0LjkwOEMyMS41OTAzIDE1LjI4NDMgMjEuMjg0MyAxNS41OTAzIDIwLjkwOCAxNS43ODJDMjAuNDgwMiAxNiAxOS45MjAxIDE2IDE4LjggMTZIMTZNNS4yIDIySDEyLjhDMTMuOTIwMSAyMiAxNC40ODAyIDIyIDE0LjkwOCAyMS43ODJDMTUuMjg0MyAyMS41OTAzIDE1LjU5MDMgMjEuMjg0MyAxNS43ODIgMjAuOTA4QzE2IDIwLjQ4MDIgMTYgMTkuOTIwMSAxNiAxOC44VjExLjJDMTYgMTAuMDc5OSAxNiA5LjUxOTg0IDE1Ljc4MiA5LjA5MjAyQzE1LjU5MDMgOC43MTU2OSAxNS4yODQzIDguNDA5NzMgMTQuOTA4IDguMjE3OTlDMTQuNDgwMiA4IDEzLjkyMDEgOCAxMi44IDhINS4yQzQuMDc5OSA4IDMuNTE5ODQgOCAzLjA5MjAyIDguMjE3OTlDMi43MTU2OSA4LjQwOTczIDIuNDA5NzMgOC43MTU2OSAyLjIxNzk5IDkuMDkyMDJDMiA5LjUxOTg0IDIgMTAuMDc5OSAyIDExLjJWMTguOEMyIDE5LjkyMDEgMiAyMC40ODAyIDIuMjE3OTkgMjAuOTA4QzIuNDA5NzMgMjEuMjg0MyAyLjcxNTY5IDIxLjU5MDMgMy4wOTIwMiAyMS43ODJDMy41MTk4NCAyMiA0LjA3OTg5IDIyIDUuMiAyMlpcInN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZCBzdHJva2U9Y3VycmVudENvbG9yPmApO1xudmFyIF90bXBsJDE0ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTI0IGhlaWdodD0yNCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk0yLjUgMjEuNDk5OEw4LjA0OTI3IDE5LjM2NTVDOC40MDQyMSAxOS4yMjkgOC41ODE2OCAxOS4xNjA3IDguNzQ3NzIgMTkuMDcxNkM4Ljg5NTIgMTguOTkyNCA5LjAzNTggMTguOTAxIDkuMTY4MDQgMTguNzk4NEM5LjMxNjkyIDE4LjY4MjkgOS40NTEzNyAxOC41NDg0IDkuNzIwMjggMTguMjc5NUwyMSA2Ljk5OTgyQzIyLjEwNDYgNS44OTUyNSAyMi4xMDQ2IDQuMTA0MzggMjEgMi45OTk4MUMxOS44OTU1IDEuODk1MjUgMTguMTA0NiAxLjg5NTI0IDE3IDIuOTk5ODFMNS43MjAyOCAxNC4yNzk1QzUuNDUxMzggMTQuNTQ4NCA1LjMxNjkyIDE0LjY4MjkgNS4yMDEzOSAxNC44MzE4QzUuMDk4NzcgMTQuOTY0IDUuMDA3NCAxNS4xMDQ2IDQuOTI4MjMgMTUuMjUyMUM0LjgzOTExIDE1LjQxODEgNC43NzA4NSAxNS41OTU2IDQuNjM0MzMgMTUuOTUwNkwyLjUgMjEuNDk5OFpNMi41IDIxLjQ5OThMNC41NTgxMiAxNi4xNDg4QzQuNzA1NCAxNS43NjU5IDQuNzc5MDMgMTUuNTc0NCA0LjkwNTM0IDE1LjQ4NjdDNS4wMTU3MiAxNS40MTAxIDUuMTUyMyAxNS4zODExIDUuMjg0MyAxNS40MDYzQzUuNDM1MzMgMTUuNDM1MSA1LjU4MDM4IDE1LjU4MDIgNS44NzA0OCAxNS44NzAzTDguMTI5NTcgMTguMTI5NEM4LjQxOTY3IDE4LjQxOTUgOC41NjQ3MiAxOC41NjQ1IDguNTkzNTYgMTguNzE1NUM4LjYxODc3IDE4Ljg0NzUgOC41ODk3OSAxOC45ODQxIDguNTEzMTQgMTkuMDk0NUM4LjQyNTQ1IDE5LjIyMDggOC4yMzM5OSAxOS4yOTQ0IDcuODUxMDcgMTkuNDQxN0wyLjUgMjEuNDk5OFpcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTIgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDE1ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTI0IGhlaWdodD0yNCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk03LjUgMTJMMTAuNSAxNUwxNi41IDlNNy44IDIxSDE2LjJDMTcuODgwMiAyMSAxOC43MjAyIDIxIDE5LjM2MiAyMC42NzNDMTkuOTI2NSAyMC4zODU0IDIwLjM4NTQgMTkuOTI2NSAyMC42NzMgMTkuMzYyQzIxIDE4LjcyMDIgMjEgMTcuODgwMiAyMSAxNi4yVjcuOEMyMSA2LjExOTg0IDIxIDUuMjc5NzYgMjAuNjczIDQuNjM4MDNDMjAuMzg1NCA0LjA3MzU0IDE5LjkyNjUgMy42MTQ2IDE5LjM2MiAzLjMyNjk4QzE4LjcyMDIgMyAxNy44ODAyIDMgMTYuMiAzSDcuOEM2LjExOTg0IDMgNS4yNzk3NiAzIDQuNjM4MDMgMy4zMjY5OEM0LjA3MzU0IDMuNjE0NiAzLjYxNDYgNC4wNzM1NCAzLjMyNjk4IDQuNjM4MDNDMyA1LjI3OTc2IDMgNi4xMTk4NCAzIDcuOFYxNi4yQzMgMTcuODgwMiAzIDE4LjcyMDIgMy4zMjY5OCAxOS4zNjJDMy42MTQ2IDE5LjkyNjUgNC4wNzM1NCAyMC4zODU0IDQuNjM4MDMgMjAuNjczQzUuMjc5NzYgMjEgNi4xMTk4NCAyMSA3LjggMjFaXCJzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkMTYgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MjQgaGVpZ2h0PTI0IHZpZXdCb3g9XCIwIDAgMjQgMjRcImZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTkgOUwxNSAxNU0xNSA5TDkgMTVNNy44IDIxSDE2LjJDMTcuODgwMiAyMSAxOC43MjAyIDIxIDE5LjM2MiAyMC42NzNDMTkuOTI2NSAyMC4zODU0IDIwLjM4NTQgMTkuOTI2NSAyMC42NzMgMTkuMzYyQzIxIDE4LjcyMDIgMjEgMTcuODgwMiAyMSAxNi4yVjcuOEMyMSA2LjExOTg0IDIxIDUuMjc5NzYgMjAuNjczIDQuNjM4MDNDMjAuMzg1NCA0LjA3MzU0IDE5LjkyNjUgMy42MTQ2IDE5LjM2MiAzLjMyNjk4QzE4LjcyMDIgMyAxNy44ODAyIDMgMTYuMiAzSDcuOEM2LjExOTg0IDMgNS4yNzk3NiAzIDQuNjM4MDMgMy4zMjY5OEM0LjA3MzU0IDMuNjE0NiAzLjYxNDYgNC4wNzM1NCAzLjMyNjk4IDQuNjM4MDNDMyA1LjI3OTc2IDMgNi4xMTk4NCAzIDcuOFYxNi4yQzMgMTcuODgwMiAzIDE4LjcyMDIgMy4zMjY5OCAxOS4zNjJDMy42MTQ2IDE5LjkyNjUgNC4wNzM1NCAyMC4zODU0IDQuNjM4MDMgMjAuNjczQzUuMjc5NzYgMjEgNi4xMTk4NCAyMSA3LjggMjFaXCJzdHJva2U9I0YwNDQzOCBzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkMTcgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MjQgaGVpZ2h0PTI0IHZpZXdCb3g9XCIwIDAgMjQgMjRcImZpbGw9bm9uZSBzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxyZWN0IGNsYXNzPWxpc3Qgd2lkdGg9MjAgaGVpZ2h0PTIwIHk9MiB4PTIgcng9Mj48L3JlY3Q+PGxpbmUgY2xhc3M9bGlzdC1pdGVtIHkxPTcgeTI9NyB4MT02IHgyPTE4PjwvbGluZT48bGluZSBjbGFzcz1saXN0LWl0ZW0geTI9MTIgeTE9MTIgeDE9NiB4Mj0xOD48L2xpbmU+PGxpbmUgY2xhc3M9bGlzdC1pdGVtIHkxPTE3IHkyPTE3IHgxPTYgeDI9MTg+YCk7XG52YXIgX3RtcGwkMTggPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiaGVpZ2h0PTIwIHdpZHRoPTIwIGZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTMgNy44YzAtMS42OCAwLTIuNTIuMzI3LTMuMTYyYTMgMyAwIDAgMSAxLjMxMS0xLjMxMUM1LjI4IDMgNi4xMiAzIDcuOCAzaDguNGMxLjY4IDAgMi41MiAwIDMuMTYyLjMyN2EzIDMgMCAwIDEgMS4zMTEgMS4zMTFDMjEgNS4yOCAyMSA2LjEyIDIxIDcuOHY4LjRjMCAxLjY4IDAgMi41Mi0uMzI3IDMuMTYyYTMgMyAwIDAgMS0xLjMxMSAxLjMxMUMxOC43MiAyMSAxNy44OCAyMSAxNi4yIDIxSDcuOGMtMS42OCAwLTIuNTIgMC0zLjE2Mi0uMzI3YTMgMyAwIDAgMS0xLjMxMS0xLjMxMUMzIDE4LjcyIDMgMTcuODggMyAxNi4yVjcuOFpcInN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQxOSA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB3aWR0aD0xNCBoZWlnaHQ9MTQgdmlld0JveD1cIjAgMCAyNCAyNFwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNNy41IDEyTDEwLjUgMTVMMTYuNSA5TTIyIDEyQzIyIDE3LjUyMjggMTcuNTIyOCAyMiAxMiAyMkM2LjQ3NzE1IDIyIDIgMTcuNTIyOCAyIDEyQzIgNi40NzcxNSA2LjQ3NzE1IDIgMTIgMkMxNy41MjI4IDIgMjIgNi40NzcxNSAyMiAxMlpcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTIgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDIwID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTE0IGhlaWdodD0xNCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk0xMiAyVjZNMTIgMThWMjJNNiAxMkgyTTIyIDEySDE4TTE5LjA3ODQgMTkuMDc4NEwxNi4yNSAxNi4yNU0xOS4wNzg0IDQuOTk5OTRMMTYuMjUgNy44MjgzN000LjkyMTU3IDE5LjA3ODRMNy43NSAxNi4yNU00LjkyMTU3IDQuOTk5OTRMNy43NSA3LjgyODM3XCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD48L3BhdGg+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT10cmFuc2Zvcm0gYXR0cmlidXRlVHlwZT1YTUwgdHlwZT1yb3RhdGUgZnJvbT0wIHRvPTM2MCBkdXI9MnMgcmVwZWF0Q291bnQ9aW5kZWZpbml0ZT5gKTtcbnZhciBfdG1wbCQyMSA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB3aWR0aD0xNCBoZWlnaHQ9MTQgdmlld0JveD1cIjAgMCAyNCAyNFwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNMTUgOUw5IDE1TTkgOUwxNSAxNU0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQyMjIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MTQgaGVpZ2h0PTE0IHZpZXdCb3g9XCIwIDAgMjQgMjRcImZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTkuNSAxNVY5TTE0LjUgMTVWOU0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQyMyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB2ZXJzaW9uPTEuMCB2aWV3Qm94PVwiMCAwIDYzMyA2MzNcIj48bGluZWFyR3JhZGllbnQgeDE9LTY2Ni40NSB4Mj0tNjY2LjQ1IHkxPTE2My4yOCB5Mj0xNjMuOTkgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNjMzIDAgMCA2MzMgNDIyMTc3IC0xMDMzNTgpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9IzZCREFGRiBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jRjlGRkI1IG9mZnNldD0uMzI+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9I0ZGQTc3MCBvZmZzZXQ9LjcxPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSNGRjczNzMgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PGNpcmNsZSBjeD0zMTYuNSBjeT0zMTYuNSByPTMxNi41PjwvY2lyY2xlPjxkZWZzPjxmaWx0ZXIgeD0tMTM3LjUgeT00MTIgd2lkdGg9NDU0IGhlaWdodD0zOTYuOSBmaWx0ZXJVbml0cz11c2VyU3BhY2VPblVzZT48ZmVDb2xvck1hdHJpeCB2YWx1ZXM9XCIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDBcIj48L2ZlQ29sb3JNYXRyaXg+PC9maWx0ZXI+PC9kZWZzPjxtYXNrIHg9LTEzNy41IHk9NDEyIHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgbWFza1VuaXRzPXVzZXJTcGFjZU9uVXNlPjxnPjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNSBmaWxsPSNmZmY+PC9jaXJjbGU+PC9nPjwvbWFzaz48Zz48ZWxsaXBzZSBjeD04OS41IGN5PTYxMC41IHJ4PTIxNC41IHJ5PTE4NiBmaWxsPSMwMTUwNjQgc3Ryb2tlPSMwMENGRTIgc3Ryb2tlLXdpZHRoPTI1PjwvZWxsaXBzZT48L2c+PGRlZnM+PGZpbHRlciB4PTMxNi41IHk9NDEyIHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgZmlsdGVyVW5pdHM9dXNlclNwYWNlT25Vc2U+PGZlQ29sb3JNYXRyaXggdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMSAwXCI+PC9mZUNvbG9yTWF0cml4PjwvZmlsdGVyPjwvZGVmcz48bWFzayB4PTMxNi41IHk9NDEyIHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgbWFza1VuaXRzPXVzZXJTcGFjZU9uVXNlPjxnPjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNSBmaWxsPSNmZmY+PC9jaXJjbGU+PC9nPjwvbWFzaz48Zz48ZWxsaXBzZSBjeD01NDMuNSBjeT02MTAuNSByeD0yMTQuNSByeT0xODYgZmlsbD0jMDE1MDY0IHN0cm9rZT0jMDBDRkUyIHN0cm9rZS13aWR0aD0yNT48L2VsbGlwc2U+PC9nPjxkZWZzPjxmaWx0ZXIgeD0tMTM3LjUgeT00NTAgd2lkdGg9NDU0IGhlaWdodD0zOTYuOSBmaWx0ZXJVbml0cz11c2VyU3BhY2VPblVzZT48ZmVDb2xvck1hdHJpeCB2YWx1ZXM9XCIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDBcIj48L2ZlQ29sb3JNYXRyaXg+PC9maWx0ZXI+PC9kZWZzPjxtYXNrIHg9LTEzNy41IHk9NDUwIHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgbWFza1VuaXRzPXVzZXJTcGFjZU9uVXNlPjxnPjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNSBmaWxsPSNmZmY+PC9jaXJjbGU+PC9nPjwvbWFzaz48Zz48ZWxsaXBzZSBjeD04OS41IGN5PTY0OC41IHJ4PTIxNC41IHJ5PTE4NiBmaWxsPSMwMTUwNjQgc3Ryb2tlPSMwMEE4Qjggc3Ryb2tlLXdpZHRoPTI1PjwvZWxsaXBzZT48L2c+PGRlZnM+PGZpbHRlciB4PTMxNi41IHk9NDUwIHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgZmlsdGVyVW5pdHM9dXNlclNwYWNlT25Vc2U+PGZlQ29sb3JNYXRyaXggdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMSAwXCI+PC9mZUNvbG9yTWF0cml4PjwvZmlsdGVyPjwvZGVmcz48bWFzayB4PTMxNi41IHk9NDUwIHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgbWFza1VuaXRzPXVzZXJTcGFjZU9uVXNlPjxnPjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNSBmaWxsPSNmZmY+PC9jaXJjbGU+PC9nPjwvbWFzaz48Zz48ZWxsaXBzZSBjeD01NDMuNSBjeT02NDguNSByeD0yMTQuNSByeT0xODYgZmlsbD0jMDE1MDY0IHN0cm9rZT0jMDBBOEI4IHN0cm9rZS13aWR0aD0yNT48L2VsbGlwc2U+PC9nPjxkZWZzPjxmaWx0ZXIgeD0tMTM3LjUgeT00ODYgd2lkdGg9NDU0IGhlaWdodD0zOTYuOSBmaWx0ZXJVbml0cz11c2VyU3BhY2VPblVzZT48ZmVDb2xvck1hdHJpeCB2YWx1ZXM9XCIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDBcIj48L2ZlQ29sb3JNYXRyaXg+PC9maWx0ZXI+PC9kZWZzPjxtYXNrIHg9LTEzNy41IHk9NDg2IHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgbWFza1VuaXRzPXVzZXJTcGFjZU9uVXNlPjxnPjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNSBmaWxsPSNmZmY+PC9jaXJjbGU+PC9nPjwvbWFzaz48Zz48ZWxsaXBzZSBjeD04OS41IGN5PTY4NC41IHJ4PTIxNC41IHJ5PTE4NiBmaWxsPSMwMTUwNjQgc3Ryb2tlPSMwMDc3ODIgc3Ryb2tlLXdpZHRoPTI1PjwvZWxsaXBzZT48L2c+PGRlZnM+PGZpbHRlciB4PTMxNi41IHk9NDg2IHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgZmlsdGVyVW5pdHM9dXNlclNwYWNlT25Vc2U+PGZlQ29sb3JNYXRyaXggdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMSAwXCI+PC9mZUNvbG9yTWF0cml4PjwvZmlsdGVyPjwvZGVmcz48bWFzayB4PTMxNi41IHk9NDg2IHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgbWFza1VuaXRzPXVzZXJTcGFjZU9uVXNlPjxnPjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNSBmaWxsPSNmZmY+PC9jaXJjbGU+PC9nPjwvbWFzaz48Zz48ZWxsaXBzZSBjeD01NDMuNSBjeT02ODQuNSByeD0yMTQuNSByeT0xODYgZmlsbD0jMDE1MDY0IHN0cm9rZT0jMDA3NzgyIHN0cm9rZS13aWR0aD0yNT48L2VsbGlwc2U+PC9nPjxkZWZzPjxmaWx0ZXIgeD0yNzIuMiB5PTMwOCB3aWR0aD0xNzYuOSBoZWlnaHQ9MTI5LjMgZmlsdGVyVW5pdHM9dXNlclNwYWNlT25Vc2U+PGZlQ29sb3JNYXRyaXggdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMSAwXCI+PC9mZUNvbG9yTWF0cml4PjwvZmlsdGVyPjwvZGVmcz48bWFzayB4PTI3Mi4yIHk9MzA4IHdpZHRoPTE3Ni45IGhlaWdodD0xMjkuMyBtYXNrVW5pdHM9dXNlclNwYWNlT25Vc2U+PGc+PGNpcmNsZSBjeD0zMTYuNSBjeT0zMTYuNSByPTMxNi41IGZpbGw9I2ZmZj48L2NpcmNsZT48L2c+PC9tYXNrPjxnPjxsaW5lIHgxPTQzNiB4Mj00MzEgeTE9NDAzLjIgeTI9NDMxLjggZmlsbD1ub25lIHN0cm9rZT0jMDAwIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1iZXZlbCBzdHJva2Utd2lkdGg9MTE+PC9saW5lPjxsaW5lIHgxPTI5MSB4Mj0yODAgeTE9MzQxLjUgeTI9NDAzLjUgZmlsbD1ub25lIHN0cm9rZT0jMDAwIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1iZXZlbCBzdHJva2Utd2lkdGg9MTE+PC9saW5lPjxsaW5lIHgxPTMzMi45IHgyPTMyOC42IHkxPTM4NC4xIHkyPTQxMS4yIGZpbGw9bm9uZSBzdHJva2U9IzAwMCBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTExPjwvbGluZT48bGluZWFyR3JhZGllbnQgeDE9LTY3MC43NSB4Mj0tNjcxLjU5IHkxPTE2NC40IHkyPTE2NC40OSBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMTg0LjE2IC0zMi40NzIgLTExLjQ2MSA2NC45OTcgLTEyMTM1OSAtMzIxMjYpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9I0VFMjcwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jRkYwMDhFIG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9XCJtMzQ0LjEgMzYzIDk3LjcgMTcuMmM1LjggMi4xIDguMiA2LjEgNy4xIDEyLjFzLTQuNyA5LjItMTEgOS45bC0xMDYtMTguNy01Ny41LTU5LjJjLTMuMi00LjgtMi45LTkuMSAwLjgtMTIuOHM4LjMtNC40IDEzLjctMi4xbDU1LjIgNTMuNnpcImNsaXAtcnVsZT1ldmVub2RkIGZpbGwtcnVsZT1ldmVub2RkPjwvcGF0aD48bGluZSB4MT00MjguMiB4Mj00MjkuMSB5MT0zODQuNSB5Mj0zNzggZmlsbD1ub25lIHN0cm9rZT0jZmZmIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1iZXZlbCBzdHJva2Utd2lkdGg9Nz48L2xpbmU+PGxpbmUgeDE9Mzk1LjIgeDI9Mzk2LjEgeTE9Mzc5LjUgeTI9MzczIGZpbGw9bm9uZSBzdHJva2U9I2ZmZiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTc+PC9saW5lPjxsaW5lIHgxPTM2Mi4yIHgyPTM2My4xIHkxPTM3My41IHkyPTM2Ny40IGZpbGw9bm9uZSBzdHJva2U9I2ZmZiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTc+PC9saW5lPjxsaW5lIHgxPTMyNC4yIHgyPTMyOC40IHkxPTM1MS4zIHkyPTM0Ny40IGZpbGw9bm9uZSBzdHJva2U9I2ZmZiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTc+PC9saW5lPjxsaW5lIHgxPTMwMy4yIHgyPTMwNy40IHkxPTMzMS4zIHkyPTMyNy40IGZpbGw9bm9uZSBzdHJva2U9I2ZmZiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTc+PC9saW5lPjwvZz48ZGVmcz48ZmlsdGVyIHg9NzMuMiB5PTExMy44IHdpZHRoPTI4MC42IGhlaWdodD0zMTcuNCBmaWx0ZXJVbml0cz11c2VyU3BhY2VPblVzZT48ZmVDb2xvck1hdHJpeCB2YWx1ZXM9XCIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDBcIj48L2ZlQ29sb3JNYXRyaXg+PC9maWx0ZXI+PC9kZWZzPjxtYXNrIHg9NzMuMiB5PTExMy44IHdpZHRoPTI4MC42IGhlaWdodD0zMTcuNCBtYXNrVW5pdHM9dXNlclNwYWNlT25Vc2U+PGc+PGNpcmNsZSBjeD0zMTYuNSBjeT0zMTYuNSByPTMxNi41IGZpbGw9I2ZmZj48L2NpcmNsZT48L2c+PC9tYXNrPjxnPjxsaW5lYXJHcmFkaWVudCB4MT0tNjcyLjE2IHgyPS02NzIuMTYgeTE9MTY1LjAzIHkyPTE2Ni4wMyBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMTAwLjE4IDQ4Ljg2MSA5Ny45NzYgMjAwLjg4IC04MzM0MiAtOTMuMDU5KVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSNBMTc1MDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9IzVEMjEwMCBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPVwibTE5Mi4zIDIwM2M4LjEgMzcuMyAxNCA3My42IDE3LjggMTA5LjEgMy44IDM1LjQgMi44IDc1LjEtMyAxMTkuMmw2MS4yLTE2LjdjLTE1LjYtNTktMjUuMi05Ny45LTI4LjYtMTE2LjZzLTEwLjgtNTEuOS0yMi4xLTk5LjZsLTI1LjMgNC42XCJjbGlwLXJ1bGU9ZXZlbm9kZCBmaWxsLXJ1bGU9ZXZlbm9kZD48L3BhdGg+PGcgc3Ryb2tlPSMyRjhBMDA+PGxpbmVhckdyYWRpZW50IHgxPS02NjAuMjMgeDI9LTY2MC4yMyB5MT0xNjYuNzIgeTI9MTY3LjcyIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDkyLjY4MyA0Ljg1NzMgLTIuMDI1OSAzOC42NTcgNjE2ODAgLTMwODguNilcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jMkY4QTAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSM5MEZGNTcgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD1cIm0xOTUgMTgzLjlzLTEyLjYtMjIuMS0zNi41LTI5LjljLTE1LjktNS4yLTM0LjQtMS41LTU1LjUgMTEuMSAxNS45IDE0LjMgMjkuNSAyMi42IDQwLjcgMjQuOSAxNi44IDMuNiA1MS4zLTYuMSA1MS4zLTYuMXpcImNsaXAtcnVsZT1ldmVub2RkIGZpbGwtcnVsZT1ldmVub2RkIHN0cm9rZS13aWR0aD0xMz48L3BhdGg+PGxpbmVhckdyYWRpZW50IHgxPS02NjEuMzYgeDI9LTY2MS4zNiB5MT0xNjQuMTggeTI9MTY1LjE4IGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDExMCA1Ljc2NDggLTYuMzU5OSAxMjEuMzUgNzM5MzMgLTE1OTMzKVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSMyRjhBMDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9IzkwRkY1NyBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPVwibTE5NC45IDE4NC41cy00Ny41LTguNS04My4yIDE1LjdjLTIzLjggMTYuMi0zNC4zIDQ5LjMtMzEuNiA5OS40IDMwLjMtMjcuOCA1Mi4xLTQ4LjUgNjUuMi02MS45IDE5LjgtMjAuMiA0OS42LTUzLjIgNDkuNi01My4yelwiY2xpcC1ydWxlPWV2ZW5vZGQgZmlsbC1ydWxlPWV2ZW5vZGQgc3Ryb2tlLXdpZHRoPTEzPjwvcGF0aD48bGluZWFyR3JhZGllbnQgeDE9LTY1Ni43OSB4Mj0tNjU2Ljc5IHkxPTE2NS4xNSB5Mj0xNjYuMTUgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNjIuOTU0IDMuMjk5MyAtMy41MDIzIDY2LjgyOCA0MjE1NiAtODc1NC4xKVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSMyRjhBMDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9IzkwRkY1NyBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPVwibTE5NSAxODMuOWMtMC44LTIxLjkgNi0zOCAyMC42LTQ4LjJzMjkuOC0xNS40IDQ1LjUtMTUuM2MtNi4xIDIxLjQtMTQuNSAzNS44LTI1LjIgNDMuNHMtMjQuNCAxNC4yLTQwLjkgMjAuMXpcImNsaXAtcnVsZT1ldmVub2RkIGZpbGwtcnVsZT1ldmVub2RkIHN0cm9rZS13aWR0aD0xMz48L3BhdGg+PGxpbmVhckdyYWRpZW50IHgxPS02NjMuMDcgeDI9LTY2My4wNyB5MT0xNjUuNDQgeTI9MTY2LjQ0IGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE1Mi40NyA3Ljk5MDcgLTMuMDkzNiA1OS4wMjkgMTAxODg0IC00MzE4LjcpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9IzJGOEEwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jOTBGRjU3IG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9XCJtMTk0LjkgMTg0LjVjMzEuOS0zMCA2NC4xLTM5LjcgOTYuNy0yOXM1MC44IDMwLjQgNTQuNiA1OS4xYy0zNS4yLTUuNS02MC40LTkuNi03NS44LTEyLjEtMTUuMy0yLjYtNDAuNS04LjYtNzUuNS0xOHpcImNsaXAtcnVsZT1ldmVub2RkIGZpbGwtcnVsZT1ldmVub2RkIHN0cm9rZS13aWR0aD0xMz48L3BhdGg+PGxpbmVhckdyYWRpZW50IHgxPS02NjIuNTcgeDI9LTY2Mi41NyB5MT0xNjQuNDQgeTI9MTY1LjQ0IGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEzNi40NiA3LjE1MTcgLTUuMjE2MyA5OS41MzMgOTE1MzYgLTExNDQyKVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSMyRjhBMDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9IzkwRkY1NyBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPVwibTE5NC45IDE4NC41YzM1LjgtNy42IDY1LjYtMC4yIDg5LjIgMjJzMzcuNyA0OSA0Mi4zIDgwLjNjLTM5LjgtOS43LTY4LjMtMjMuOC04NS41LTQyLjRzLTMyLjUtMzguNS00Ni01OS45elwiY2xpcC1ydWxlPWV2ZW5vZGQgZmlsbC1ydWxlPWV2ZW5vZGQgc3Ryb2tlLXdpZHRoPTEzPjwvcGF0aD48bGluZWFyR3JhZGllbnQgeDE9LTY1Ni40MyB4Mj0tNjU2LjQzIHkxPTE2My44NiB5Mj0xNjQuODYgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNjAuODY2IDMuMTg5OSAtOC43NzczIDE2Ny40OCA0MTU2MCAtMjUxNjgpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9IzJGOEEwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jOTBGRjU3IG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9XCJtMTk0LjkgMTg0LjVjLTMzLjYgMTMuOC01My42IDM1LjctNjAuMSA2NS42cy0zLjYgNjMuMSA4LjcgOTkuNmMyNy40LTQwLjMgNDMuMi02OS42IDQ3LjQtODhzNS42LTQ0LjEgNC03Ny4yelwiY2xpcC1ydWxlPWV2ZW5vZGQgZmlsbC1ydWxlPWV2ZW5vZGQgc3Ryb2tlLXdpZHRoPTEzPjwvcGF0aD48cGF0aCBkPVwibTE5Ni41IDE4Mi4zYy0xNC44IDIxLjYtMjUuMSA0MS40LTMwLjggNTkuNHMtOS41IDMzLTExLjEgNDUuMVwiZmlsbD1ub25lIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS13aWR0aD04PjwvcGF0aD48cGF0aCBkPVwibTE5NC45IDE4NS43Yy0yNC40IDEuNy00My44IDktNTguMSAyMS44cy0yNC43IDI1LjQtMzEuMyAzNy44XCJmaWxsPW5vbmUgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLXdpZHRoPTg+PC9wYXRoPjxwYXRoIGQ9XCJtMjA0LjUgMTc2LjRjMjkuNy02LjcgNTItOC40IDY3LTUuMXMyNi45IDguNiAzNS44IDE1LjlcImZpbGw9bm9uZSBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2Utd2lkdGg9OD48L3BhdGg+PHBhdGggZD1cIm0xOTYuNSAxODEuNGMyMC4zIDkuOSAzOC4yIDIwLjUgNTMuOSAzMS45czI3LjQgMjIuMSAzNS4xIDMyXCJmaWxsPW5vbmUgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLXdpZHRoPTg+PC9wYXRoPjwvZz48L2c+PGRlZnM+PGZpbHRlciB4PTUwLjUgeT0zOTkgd2lkdGg9NTMyIGhlaWdodD02MzMgZmlsdGVyVW5pdHM9dXNlclNwYWNlT25Vc2U+PGZlQ29sb3JNYXRyaXggdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMSAwXCI+PC9mZUNvbG9yTWF0cml4PjwvZmlsdGVyPjwvZGVmcz48bWFzayB4PTUwLjUgeT0zOTkgd2lkdGg9NTMyIGhlaWdodD02MzMgbWFza1VuaXRzPXVzZXJTcGFjZU9uVXNlPjxnPjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNSBmaWxsPSNmZmY+PC9jaXJjbGU+PC9nPjwvbWFzaz48Zz48bGluZWFyR3JhZGllbnQgeDE9LTY2Ni4wNiB4Mj0tNjY2LjIzIHkxPTE2My4zNiB5Mj0xNjMuNzUgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNTMyIDAgMCA2MzMgMzU0NzYwIC0xMDI5NTkpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9I0ZGRjQwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jM0M4NzAwIG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxlbGxpcHNlIGN4PTMxNi41IGN5PTcxNS41IHJ4PTI2NiByeT0zMTYuNT48L2VsbGlwc2U+PC9nPjxkZWZzPjxmaWx0ZXIgeD0zOTEgeT0tMjQgd2lkdGg9Mjg4IGhlaWdodD0yODMgZmlsdGVyVW5pdHM9dXNlclNwYWNlT25Vc2U+PGZlQ29sb3JNYXRyaXggdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMSAwXCI+PC9mZUNvbG9yTWF0cml4PjwvZmlsdGVyPjwvZGVmcz48bWFzayB4PTM5MSB5PS0yNCB3aWR0aD0yODggaGVpZ2h0PTI4MyBtYXNrVW5pdHM9dXNlclNwYWNlT25Vc2U+PGc+PGNpcmNsZSBjeD0zMTYuNSBjeT0zMTYuNSByPTMxNi41IGZpbGw9I2ZmZj48L2NpcmNsZT48L2c+PC9tYXNrPjxnPjxsaW5lYXJHcmFkaWVudCB4MT0tNjY0LjU2IHgyPS02NjQuNTYgeTE9MTYzLjc5IHkyPTE2NC43OSBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgyMjcgMCAwIDIyNyAxNTE0MjEgLTM3MjA0KVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSNGRkRGMDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9I0ZGOUQwMCBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48Y2lyY2xlIGN4PTU2NS41IGN5PTg5LjUgcj0xMTMuNT48L2NpcmNsZT48bGluZWFyR3JhZGllbnQgeDE9LTY0NC41IHgyPS02NDUuNzcgeTE9MzQyIHkyPTM0MiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgzMCAwIDAgMSAxOTc3MCAtMjUzKVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSNGRkE0MDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9I0ZGNUUwMCBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48bGluZSB4MT00MjcgeDI9Mzk3IHkxPTg5IHkyPTg5IGZpbGw9bm9uZSBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTEyPjwvbGluZT48bGluZWFyR3JhZGllbnQgeDE9LTY0MS41NiB4Mj0tNjQyLjgzIHkxPTE5Ni4wMiB5Mj0xOTYuMDcgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMjYuNSAwIDAgNS41IDE3NDM5IC0xMDI1LjUpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9I0ZGQTQwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jRkY1RTAwIG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxsaW5lIHgxPTQzMC41IHgyPTQwNCB5MT01NS41IHkyPTUwIGZpbGw9bm9uZSBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTEyPjwvbGluZT48bGluZWFyR3JhZGllbnQgeDE9LTY0My43MyB4Mj0tNjQ1IHkxPTE4NS44MyB5Mj0xODUuOSBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgyOSAwIDAgOCAxOTEwNyAtMTM2MSlcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jRkZBNDAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSNGRjVFMDAgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PGxpbmUgeDE9NDMxIHgyPTQwMiB5MT0xMjIgeTI9MTMwIGZpbGw9bm9uZSBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTEyPjwvbGluZT48bGluZWFyR3JhZGllbnQgeDE9LTYzOC45NCB4Mj0tNjQwLjIyIHkxPTE3Ny4wOSB5Mj0xNzcuMzkgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMjQgMCAwIDEzIDE1NzgzIC0yMTQ1KVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSNGRkE0MDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9I0ZGNUUwMCBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48bGluZSB4MT00NDIgeDI9NDE4IHkxPTE1MyB5Mj0xNjYgZmlsbD1ub25lIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1iZXZlbCBzdHJva2Utd2lkdGg9MTI+PC9saW5lPjxsaW5lYXJHcmFkaWVudCB4MT0tNjMzLjQyIHgyPS02MzQuNyB5MT0xNzIuNDEgeTI9MTczLjMxIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDIwIDAgMCAxOSAxMzEzNyAtMzA5NilcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jRkZBNDAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSNGRjVFMDAgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PGxpbmUgeDE9NDY0IHgyPTQ0NCB5MT0xODAgeTI9MTk5IGZpbGw9bm9uZSBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTEyPjwvbGluZT48bGluZWFyR3JhZGllbnQgeDE9LTYxOS4wNSB4Mj0tNjE5LjUyIHkxPTE3MC44MiB5Mj0xNzEuODIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTMuODMgMCAwIDIyLjg1IDkwNTAgLTM3MDMuNClcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jRkZBNDAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSNGRjVFMDAgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PGxpbmUgeDE9NDkxLjQgeDI9NDc3LjUgeTE9MjAzIHkyPTIyNS45IGZpbGw9bm9uZSBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTEyPjwvbGluZT48bGluZWFyR3JhZGllbnQgeDE9LTU3OC41IHgyPS01NzguNjMgeTE9MTcwLjMxIHkyPTE3MS4zMSBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg3LjUgMCAwIDI0LjUgNDg2MCAtMzk1MylcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jRkZBNDAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSNGRjVFMDAgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PGxpbmUgeDE9NTI0LjUgeDI9NTE3IHkxPTIxOS41IHkyPTI0NCBmaWxsPW5vbmUgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD0xMj48L2xpbmU+PGxpbmVhckdyYWRpZW50IHgxPTY2Ni41IHgyPTY2Ni41IHkxPTE3MC4zMSB5Mj0xNzEuMzEgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoLjUgMCAwIDI0LjUgMjMxLjUgLTM5NDQpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9I0ZGQTQwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jRkY1RTAwIG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxsaW5lIHgxPTU2NC41IHgyPTU2NSB5MT0yMjguNSB5Mj0yNTMgZmlsbD1ub25lIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1iZXZlbCBzdHJva2Utd2lkdGg9MTI+YCk7XG5mdW5jdGlvbiBTZWFyY2goKSB7XG4gIHJldHVybiBfdG1wbCQyKCk7XG59XG5mdW5jdGlvbiBUcmFzaCgpIHtcbiAgcmV0dXJuIF90bXBsJDIyKCk7XG59XG5mdW5jdGlvbiBDaGV2cm9uRG93bigpIHtcbiAgcmV0dXJuIF90bXBsJDMoKTtcbn1cbmZ1bmN0aW9uIEFycm93VXAoKSB7XG4gIHJldHVybiBfdG1wbCQ0KCk7XG59XG5mdW5jdGlvbiBBcnJvd0Rvd24oKSB7XG4gIHJldHVybiBfdG1wbCQ1KCk7XG59XG5mdW5jdGlvbiBBcnJvd0xlZnQoKSB7XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkNiA9IF90bXBsJDUoKTtcbiAgICBfZWwkNi5zdHlsZS5zZXRQcm9wZXJ0eShcInRyYW5zZm9ybVwiLCBcInJvdGF0ZSg5MGRlZylcIik7XG4gICAgcmV0dXJuIF9lbCQ2O1xuICB9KSgpO1xufVxuZnVuY3Rpb24gQXJyb3dSaWdodCgpIHtcbiAgcmV0dXJuICgoKSA9PiB7XG4gICAgdmFyIF9lbCQ3ID0gX3RtcGwkNSgpO1xuICAgIF9lbCQ3LnN0eWxlLnNldFByb3BlcnR5KFwidHJhbnNmb3JtXCIsIFwicm90YXRlKC05MGRlZylcIik7XG4gICAgcmV0dXJuIF9lbCQ3O1xuICB9KSgpO1xufVxuZnVuY3Rpb24gU3VuKCkge1xuICByZXR1cm4gX3RtcGwkNigpO1xufVxuZnVuY3Rpb24gTW9vbigpIHtcbiAgcmV0dXJuIF90bXBsJDcoKTtcbn1cbmZ1bmN0aW9uIE1vbml0b3IoKSB7XG4gIHJldHVybiBfdG1wbCQ4KCk7XG59XG5mdW5jdGlvbiBXaWZpKCkge1xuICByZXR1cm4gX3RtcGwkOSgpO1xufVxuZnVuY3Rpb24gT2ZmbGluZSgpIHtcbiAgcmV0dXJuIF90bXBsJDEwKCk7XG59XG5mdW5jdGlvbiBTZXR0aW5ncygpIHtcbiAgcmV0dXJuIF90bXBsJDExKCk7XG59XG5mdW5jdGlvbiBQaVBJY29uKCkge1xuICByZXR1cm4gX3RtcGwkMTIoKTtcbn1cbmZ1bmN0aW9uIENvcGllcigpIHtcbiAgcmV0dXJuIF90bXBsJDEzKCk7XG59XG5mdW5jdGlvbiBQZW5jaWwoKSB7XG4gIHJldHVybiBfdG1wbCQxNCgpO1xufVxuZnVuY3Rpb24gQ29waWVkQ29waWVyKHByb3BzKSB7XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkMTcgPSBfdG1wbCQxNSgpLCBfZWwkMTggPSBfZWwkMTcuZmlyc3RDaGlsZDtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gc2V0QXR0cmlidXRlKF9lbCQxOCwgXCJzdHJva2VcIiwgcHJvcHMudGhlbWUgPT09IFwiZGFya1wiID8gXCIjMTJCNzZBXCIgOiBcIiMwMjdBNDhcIikpO1xuICAgIHJldHVybiBfZWwkMTc7XG4gIH0pKCk7XG59XG5mdW5jdGlvbiBFcnJvckNvcGllcigpIHtcbiAgcmV0dXJuIF90bXBsJDE2KCk7XG59XG5mdW5jdGlvbiBMaXN0KCkge1xuICByZXR1cm4gX3RtcGwkMTcoKTtcbn1cbmZ1bmN0aW9uIENoZWNrKHByb3BzKSB7XG4gIHJldHVybiBbY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICBnZXQgd2hlbigpIHtcbiAgICAgIHJldHVybiBwcm9wcy5jaGVja2VkO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgdmFyIF9lbCQyMSA9IF90bXBsJDE1KCksIF9lbCQyMiA9IF9lbCQyMS5maXJzdENoaWxkO1xuICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IHNldEF0dHJpYnV0ZShfZWwkMjIsIFwic3Ryb2tlXCIsIHByb3BzLnRoZW1lID09PSBcImRhcmtcIiA/IFwiIzlCOEFGQlwiIDogXCIjNjkzOEVGXCIpKTtcbiAgICAgIHJldHVybiBfZWwkMjE7XG4gICAgfVxuICB9KSwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICBnZXQgd2hlbigpIHtcbiAgICAgIHJldHVybiAhcHJvcHMuY2hlY2tlZDtcbiAgICB9LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHZhciBfZWwkMjMgPSBfdG1wbCQxOCgpLCBfZWwkMjQgPSBfZWwkMjMuZmlyc3RDaGlsZDtcbiAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBzZXRBdHRyaWJ1dGUoX2VsJDI0LCBcInN0cm9rZVwiLCBwcm9wcy50aGVtZSA9PT0gXCJkYXJrXCIgPyBcIiM5QjhBRkJcIiA6IFwiIzY5MzhFRlwiKSk7XG4gICAgICByZXR1cm4gX2VsJDIzO1xuICAgIH1cbiAgfSldO1xufVxuZnVuY3Rpb24gQ2hlY2tDaXJjbGUoKSB7XG4gIHJldHVybiBfdG1wbCQxOSgpO1xufVxuZnVuY3Rpb24gTG9hZGluZ0NpcmNsZSgpIHtcbiAgcmV0dXJuIF90bXBsJDIwKCk7XG59XG5mdW5jdGlvbiBYQ2lyY2xlKCkge1xuICByZXR1cm4gX3RtcGwkMjEoKTtcbn1cbmZ1bmN0aW9uIFBhdXNlQ2lyY2xlKCkge1xuICByZXR1cm4gX3RtcGwkMjIyKCk7XG59XG5mdW5jdGlvbiBUYW5zdGFja0xvZ28oKSB7XG4gIGNvbnN0IGlkID0gY3JlYXRlVW5pcXVlSWQoKTtcbiAgcmV0dXJuICgoKSA9PiB7XG4gICAgdmFyIF9lbCQyOSA9IF90bXBsJDIzKCksIF9lbCQzMCA9IF9lbCQyOS5maXJzdENoaWxkLCBfZWwkMzEgPSBfZWwkMzAubmV4dFNpYmxpbmcsIF9lbCQzMiA9IF9lbCQzMS5uZXh0U2libGluZywgX2VsJDMzID0gX2VsJDMyLmZpcnN0Q2hpbGQsIF9lbCQzNCA9IF9lbCQzMi5uZXh0U2libGluZywgX2VsJDM1ID0gX2VsJDM0LmZpcnN0Q2hpbGQsIF9lbCQzNiA9IF9lbCQzNC5uZXh0U2libGluZywgX2VsJDM3ID0gX2VsJDM2Lm5leHRTaWJsaW5nLCBfZWwkMzggPSBfZWwkMzcuZmlyc3RDaGlsZCwgX2VsJDM5ID0gX2VsJDM3Lm5leHRTaWJsaW5nLCBfZWwkNDAgPSBfZWwkMzkuZmlyc3RDaGlsZCwgX2VsJDQxID0gX2VsJDM5Lm5leHRTaWJsaW5nLCBfZWwkNDIgPSBfZWwkNDEubmV4dFNpYmxpbmcsIF9lbCQ0MyA9IF9lbCQ0Mi5maXJzdENoaWxkLCBfZWwkNDQgPSBfZWwkNDIubmV4dFNpYmxpbmcsIF9lbCQ0NSA9IF9lbCQ0NC5maXJzdENoaWxkLCBfZWwkNDYgPSBfZWwkNDQubmV4dFNpYmxpbmcsIF9lbCQ0NyA9IF9lbCQ0Ni5uZXh0U2libGluZywgX2VsJDQ4ID0gX2VsJDQ3LmZpcnN0Q2hpbGQsIF9lbCQ0OSA9IF9lbCQ0Ny5uZXh0U2libGluZywgX2VsJDUwID0gX2VsJDQ5LmZpcnN0Q2hpbGQsIF9lbCQ1MSA9IF9lbCQ0OS5uZXh0U2libGluZywgX2VsJDUyID0gX2VsJDUxLm5leHRTaWJsaW5nLCBfZWwkNTMgPSBfZWwkNTIuZmlyc3RDaGlsZCwgX2VsJDU0ID0gX2VsJDUyLm5leHRTaWJsaW5nLCBfZWwkNTUgPSBfZWwkNTQuZmlyc3RDaGlsZCwgX2VsJDU2ID0gX2VsJDU0Lm5leHRTaWJsaW5nLCBfZWwkNTcgPSBfZWwkNTYubmV4dFNpYmxpbmcsIF9lbCQ1OCA9IF9lbCQ1Ny5maXJzdENoaWxkLCBfZWwkNTkgPSBfZWwkNTcubmV4dFNpYmxpbmcsIF9lbCQ2MCA9IF9lbCQ1OS5maXJzdENoaWxkLCBfZWwkNjEgPSBfZWwkNTkubmV4dFNpYmxpbmcsIF9lbCQ2MiA9IF9lbCQ2MS5uZXh0U2libGluZywgX2VsJDYzID0gX2VsJDYyLmZpcnN0Q2hpbGQsIF9lbCQ2NCA9IF9lbCQ2Mi5uZXh0U2libGluZywgX2VsJDY1ID0gX2VsJDY0LmZpcnN0Q2hpbGQsIF9lbCQ2NiA9IF9lbCQ2NC5uZXh0U2libGluZywgX2VsJDY3ID0gX2VsJDY2LmZpcnN0Q2hpbGQsIF9lbCQ2OCA9IF9lbCQ2Ny5uZXh0U2libGluZywgX2VsJDY5ID0gX2VsJDY4Lm5leHRTaWJsaW5nLCBfZWwkNzAgPSBfZWwkNjkubmV4dFNpYmxpbmcsIF9lbCQ3MSA9IF9lbCQ3MC5uZXh0U2libGluZywgX2VsJDcyID0gX2VsJDY2Lm5leHRTaWJsaW5nLCBfZWwkNzMgPSBfZWwkNzIuZmlyc3RDaGlsZCwgX2VsJDc0ID0gX2VsJDcyLm5leHRTaWJsaW5nLCBfZWwkNzUgPSBfZWwkNzQuZmlyc3RDaGlsZCwgX2VsJDc2ID0gX2VsJDc0Lm5leHRTaWJsaW5nLCBfZWwkNzcgPSBfZWwkNzYuZmlyc3RDaGlsZCwgX2VsJDc4ID0gX2VsJDc3Lm5leHRTaWJsaW5nLCBfZWwkNzkgPSBfZWwkNzgubmV4dFNpYmxpbmcsIF9lbCQ4MCA9IF9lbCQ3OS5maXJzdENoaWxkLCBfZWwkODEgPSBfZWwkODAubmV4dFNpYmxpbmcsIF9lbCQ4MiA9IF9lbCQ4MS5uZXh0U2libGluZywgX2VsJDgzID0gX2VsJDgyLm5leHRTaWJsaW5nLCBfZWwkODQgPSBfZWwkODMubmV4dFNpYmxpbmcsIF9lbCQ4NSA9IF9lbCQ4NC5uZXh0U2libGluZywgX2VsJDg2ID0gX2VsJDg1Lm5leHRTaWJsaW5nLCBfZWwkODcgPSBfZWwkODYubmV4dFNpYmxpbmcsIF9lbCQ4OCA9IF9lbCQ4Ny5uZXh0U2libGluZywgX2VsJDg5ID0gX2VsJDg4Lm5leHRTaWJsaW5nLCBfZWwkOTAgPSBfZWwkODkubmV4dFNpYmxpbmcsIF9lbCQ5MSA9IF9lbCQ5MC5uZXh0U2libGluZywgX2VsJDkyID0gX2VsJDc2Lm5leHRTaWJsaW5nLCBfZWwkOTMgPSBfZWwkOTIuZmlyc3RDaGlsZCwgX2VsJDk0ID0gX2VsJDkyLm5leHRTaWJsaW5nLCBfZWwkOTUgPSBfZWwkOTQuZmlyc3RDaGlsZCwgX2VsJDk2ID0gX2VsJDk0Lm5leHRTaWJsaW5nLCBfZWwkOTcgPSBfZWwkOTYuZmlyc3RDaGlsZCwgX2VsJDk4ID0gX2VsJDk3Lm5leHRTaWJsaW5nLCBfZWwkOTkgPSBfZWwkOTYubmV4dFNpYmxpbmcsIF9lbCQxMDAgPSBfZWwkOTkuZmlyc3RDaGlsZCwgX2VsJDEwMSA9IF9lbCQ5OS5uZXh0U2libGluZywgX2VsJDEwMiA9IF9lbCQxMDEuZmlyc3RDaGlsZCwgX2VsJDEwMyA9IF9lbCQxMDEubmV4dFNpYmxpbmcsIF9lbCQxMDQgPSBfZWwkMTAzLmZpcnN0Q2hpbGQsIF9lbCQxMDUgPSBfZWwkMTA0Lm5leHRTaWJsaW5nLCBfZWwkMTA2ID0gX2VsJDEwNS5uZXh0U2libGluZywgX2VsJDEwNyA9IF9lbCQxMDYubmV4dFNpYmxpbmcsIF9lbCQxMDggPSBfZWwkMTA3Lm5leHRTaWJsaW5nLCBfZWwkMTA5ID0gX2VsJDEwOC5uZXh0U2libGluZywgX2VsJDExMCA9IF9lbCQxMDkubmV4dFNpYmxpbmcsIF9lbCQxMTEgPSBfZWwkMTEwLm5leHRTaWJsaW5nLCBfZWwkMTEyID0gX2VsJDExMS5uZXh0U2libGluZywgX2VsJDExMyA9IF9lbCQxMTIubmV4dFNpYmxpbmcsIF9lbCQxMTQgPSBfZWwkMTEzLm5leHRTaWJsaW5nLCBfZWwkMTE1ID0gX2VsJDExNC5uZXh0U2libGluZywgX2VsJDExNiA9IF9lbCQxMTUubmV4dFNpYmxpbmcsIF9lbCQxMTcgPSBfZWwkMTE2Lm5leHRTaWJsaW5nLCBfZWwkMTE4ID0gX2VsJDExNy5uZXh0U2libGluZywgX2VsJDExOSA9IF9lbCQxMTgubmV4dFNpYmxpbmcsIF9lbCQxMjAgPSBfZWwkMTE5Lm5leHRTaWJsaW5nLCBfZWwkMTIxID0gX2VsJDEyMC5uZXh0U2libGluZztcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDMwLCBcImlkXCIsIGBhLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQzMSwgXCJmaWxsXCIsIGB1cmwoI2EtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQzMywgXCJpZFwiLCBgYW0tJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDM0LCBcImlkXCIsIGBiLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQzNSwgXCJmaWx0ZXJcIiwgYHVybCgjYW0tJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQzNiwgXCJtYXNrXCIsIGB1cmwoI2ItJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQzOCwgXCJpZFwiLCBgYWgtJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDM5LCBcImlkXCIsIGBrLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ0MCwgXCJmaWx0ZXJcIiwgYHVybCgjYWgtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ0MSwgXCJtYXNrXCIsIGB1cmwoI2stJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ0MywgXCJpZFwiLCBgYWUtJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDQ0LCBcImlkXCIsIGBqLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ0NSwgXCJmaWx0ZXJcIiwgYHVybCgjYWUtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ0NiwgXCJtYXNrXCIsIGB1cmwoI2otJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ0OCwgXCJpZFwiLCBgYWktJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDQ5LCBcImlkXCIsIGBpLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ1MCwgXCJmaWx0ZXJcIiwgYHVybCgjYWktJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ1MSwgXCJtYXNrXCIsIGB1cmwoI2ktJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ1MywgXCJpZFwiLCBgYWotJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDU0LCBcImlkXCIsIGBoLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ1NSwgXCJmaWx0ZXJcIiwgYHVybCgjYWotJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ1NiwgXCJtYXNrXCIsIGB1cmwoI2gtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ1OCwgXCJpZFwiLCBgYWctJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDU5LCBcImlkXCIsIGBnLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ2MCwgXCJmaWx0ZXJcIiwgYHVybCgjYWctJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ2MSwgXCJtYXNrXCIsIGB1cmwoI2ctJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ2MywgXCJpZFwiLCBgYWYtJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDY0LCBcImlkXCIsIGBmLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ2NSwgXCJmaWx0ZXJcIiwgYHVybCgjYWYtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ2NiwgXCJtYXNrXCIsIGB1cmwoI2YtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ3MCwgXCJpZFwiLCBgbS0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNzEsIFwiZmlsbFwiLCBgdXJsKCNtLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNzMsIFwiaWRcIiwgYGFrLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ3NCwgXCJpZFwiLCBgZS0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNzUsIFwiZmlsdGVyXCIsIGB1cmwoI2FrLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNzYsIFwibWFza1wiLCBgdXJsKCNlLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNzcsIFwiaWRcIiwgYG4tJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDc4LCBcImZpbGxcIiwgYHVybCgjbi0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDgwLCBcImlkXCIsIGByLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ4MSwgXCJmaWxsXCIsIGB1cmwoI3ItJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ4MiwgXCJpZFwiLCBgcy0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkODMsIFwiZmlsbFwiLCBgdXJsKCNzLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkODQsIFwiaWRcIiwgYHEtJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDg1LCBcImZpbGxcIiwgYHVybCgjcS0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDg2LCBcImlkXCIsIGBwLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ4NywgXCJmaWxsXCIsIGB1cmwoI3AtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ4OCwgXCJpZFwiLCBgby0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkODksIFwiZmlsbFwiLCBgdXJsKCNvLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkOTAsIFwiaWRcIiwgYGwtJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDkxLCBcImZpbGxcIiwgYHVybCgjbC0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDkzLCBcImlkXCIsIGBhbC0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkOTQsIFwiaWRcIiwgYGQtJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDk1LCBcImZpbHRlclwiLCBgdXJsKCNhbC0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDk2LCBcIm1hc2tcIiwgYHVybCgjZC0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDk3LCBcImlkXCIsIGB1LSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ5OCwgXCJmaWxsXCIsIGB1cmwoI3UtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMDAsIFwiaWRcIiwgYGFkLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMDEsIFwiaWRcIiwgYGMtJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDEwMiwgXCJmaWx0ZXJcIiwgYHVybCgjYWQtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMDMsIFwibWFza1wiLCBgdXJsKCNjLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTA0LCBcImlkXCIsIGB0LSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMDUsIFwiZmlsbFwiLCBgdXJsKCN0LSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTA2LCBcImlkXCIsIGB2LSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMDcsIFwic3Ryb2tlXCIsIGB1cmwoI3YtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMDgsIFwiaWRcIiwgYGFhLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMDksIFwic3Ryb2tlXCIsIGB1cmwoI2FhLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTEwLCBcImlkXCIsIGB3LSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMTEsIFwic3Ryb2tlXCIsIGB1cmwoI3ctJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMTIsIFwiaWRcIiwgYGFjLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMTMsIFwic3Ryb2tlXCIsIGB1cmwoI2FjLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTE0LCBcImlkXCIsIGBhYi0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTE1LCBcInN0cm9rZVwiLCBgdXJsKCNhYi0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDExNiwgXCJpZFwiLCBgeS0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTE3LCBcInN0cm9rZVwiLCBgdXJsKCN5LSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTE4LCBcImlkXCIsIGB4LSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMTksIFwic3Ryb2tlXCIsIGB1cmwoI3gtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMjAsIFwiaWRcIiwgYHotJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDEyMSwgXCJzdHJva2VcIiwgYHVybCgjei0ke2lkfSlgKTtcbiAgICByZXR1cm4gX2VsJDI5O1xuICB9KSgpO1xufVxuXG4vLyBzcmMvRXhwbG9yZXIudHN4XG52YXIgX3RtcGwkMjQgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzcGFuPjxzdmcgd2lkdGg9MTYgaGVpZ2h0PTE2IHZpZXdCb3g9XCIwIDAgMTYgMTZcImZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTYgMTJMMTAgOEw2IDRcInN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQyNSA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGJ1dHRvbiB0aXRsZT1cIkNvcHkgb2JqZWN0IHRvIGNsaXBib2FyZFwiPmApO1xudmFyIF90bXBsJDMyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8YnV0dG9uIHRpdGxlPVwiUmVtb3ZlIGFsbCBpdGVtc1wiYXJpYS1sYWJlbD1cIlJlbW92ZSBhbGwgaXRlbXNcIj5gKTtcbnZhciBfdG1wbCQ0MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGJ1dHRvbiB0aXRsZT1cIkRlbGV0ZSBpdGVtXCJhcmlhLWxhYmVsPVwiRGVsZXRlIGl0ZW1cIj5gKTtcbnZhciBfdG1wbCQ1MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGJ1dHRvbiB0aXRsZT1cIlRvZ2dsZSB2YWx1ZVwiYXJpYS1sYWJlbD1cIlRvZ2dsZSB2YWx1ZVwiPmApO1xudmFyIF90bXBsJDYyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8YnV0dG9uIHRpdGxlPVwiQnVsayBFZGl0IERhdGFcImFyaWEtbGFiZWw9XCJCdWxrIEVkaXQgRGF0YVwiPmApO1xudmFyIF90bXBsJDcyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8ZGl2PmApO1xudmFyIF90bXBsJDgyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8ZGl2PjxidXR0b24+IDxzcGFuPjwvc3Bhbj4gPHNwYW4+IGApO1xudmFyIF90bXBsJDkyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8aW5wdXQ+YCk7XG52YXIgX3RtcGwkMTAyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3Bhbj5gKTtcbnZhciBfdG1wbCQxMTIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXY+PHNwYW4+OmApO1xudmFyIF90bXBsJDEyMiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdj48ZGl2PjxidXR0b24+IFs8IT4uLi48IT5dYCk7XG5mdW5jdGlvbiBjaHVua0FycmF5KGFycmF5LCBzaXplMykge1xuICBsZXQgaTIgPSAwO1xuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKGkyIDwgYXJyYXkubGVuZ3RoKSB7XG4gICAgcmVzdWx0LnB1c2goYXJyYXkuc2xpY2UoaTIsIGkyICsgc2l6ZTMpKTtcbiAgICBpMiA9IGkyICsgc2l6ZTM7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbnZhciBFeHBhbmRlciA9IChwcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGNzcyA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0ID8gdS5iaW5kKHtcbiAgICB0YXJnZXQ6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0XG4gIH0pIDogdTtcbiAgY29uc3Qgc3R5bGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFya1N0eWxlcyhjc3MpIDogbGlnaHRTdHlsZXMoY3NzKTtcbiAgfSk7XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkID0gX3RtcGwkMjQoKTtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQsIGNsc3goc3R5bGVzKCkuZXhwYW5kZXIsIGNzc2BcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgke3Byb3BzLmV4cGFuZGVkID8gOTAgOiAwfWRlZyk7XG4gICAgICAgIGAsIHByb3BzLmV4cGFuZGVkICYmIGNzc2BcbiAgICAgICAgICAgICYgc3ZnIHtcbiAgICAgICAgICAgICAgdG9wOiAtMXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGApKSk7XG4gICAgcmV0dXJuIF9lbCQ7XG4gIH0pKCk7XG59O1xudmFyIENvcHlCdXR0b24gPSAocHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMoY3NzKSA6IGxpZ2h0U3R5bGVzKGNzcyk7XG4gIH0pO1xuICBjb25zdCBbY29weVN0YXRlLCBzZXRDb3B5U3RhdGVdID0gY3JlYXRlU2lnbmFsKFwiTm9Db3B5XCIpO1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJDIgPSBfdG1wbCQyNSgpO1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoX2VsJDIsIFwiY2xpY2tcIiwgY29weVN0YXRlKCkgPT09IFwiTm9Db3B5XCIgPyAoKSA9PiB7XG4gICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChzdHJpbmdpZnkocHJvcHMudmFsdWUpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0Q29weVN0YXRlKFwiU3VjY2Vzc0NvcHlcIik7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldENvcHlTdGF0ZShcIk5vQ29weVwiKTtcbiAgICAgICAgfSwgMTUwMCk7XG4gICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIHNldENvcHlTdGF0ZShcIkVycm9yQ29weVwiKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0Q29weVN0YXRlKFwiTm9Db3B5XCIpO1xuICAgICAgICB9LCAxNTAwKTtcbiAgICAgIH0pO1xuICAgIH0gOiB2b2lkIDAsIHRydWUpO1xuICAgIGluc2VydChfZWwkMiwgY3JlYXRlQ29tcG9uZW50KFN3aXRjaCwge1xuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICByZXR1cm4gW2NyZWF0ZUNvbXBvbmVudChNYXRjaCwge1xuICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvcHlTdGF0ZSgpID09PSBcIk5vQ29weVwiO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChDb3BpZXIsIHt9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQoTWF0Y2gsIHtcbiAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjb3B5U3RhdGUoKSA9PT0gXCJTdWNjZXNzQ29weVwiO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChDb3BpZWRDb3BpZXIsIHtcbiAgICAgICAgICAgICAgZ2V0IHRoZW1lKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGVtZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQoTWF0Y2gsIHtcbiAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjb3B5U3RhdGUoKSA9PT0gXCJFcnJvckNvcHlcIjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRXJyb3JDb3BpZXIsIHt9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXTtcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgIHZhciBfdiQgPSBzdHlsZXMoKS5hY3Rpb25CdXR0b24sIF92JDIgPSBgJHtjb3B5U3RhdGUoKSA9PT0gXCJOb0NvcHlcIiA/IFwiQ29weSBvYmplY3QgdG8gY2xpcGJvYXJkXCIgOiBjb3B5U3RhdGUoKSA9PT0gXCJTdWNjZXNzQ29weVwiID8gXCJPYmplY3QgY29waWVkIHRvIGNsaXBib2FyZFwiIDogXCJFcnJvciBjb3B5aW5nIG9iamVjdCB0byBjbGlwYm9hcmRcIn1gO1xuICAgICAgX3YkICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDIsIF9wJC5lID0gX3YkKTtcbiAgICAgIF92JDIgIT09IF9wJC50ICYmIHNldEF0dHJpYnV0ZShfZWwkMiwgXCJhcmlhLWxhYmVsXCIsIF9wJC50ID0gX3YkMik7XG4gICAgICByZXR1cm4gX3AkO1xuICAgIH0sIHtcbiAgICAgIGU6IHZvaWQgMCxcbiAgICAgIHQ6IHZvaWQgMFxuICAgIH0pO1xuICAgIHJldHVybiBfZWwkMjtcbiAgfSkoKTtcbn07XG52YXIgQ2xlYXJBcnJheUJ1dHRvbiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGNzcyA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0ID8gdS5iaW5kKHtcbiAgICB0YXJnZXQ6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0XG4gIH0pIDogdTtcbiAgY29uc3Qgc3R5bGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFya1N0eWxlcyhjc3MpIDogbGlnaHRTdHlsZXMoY3NzKTtcbiAgfSk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5jbGllbnQ7XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkMyA9IF90bXBsJDMyKCk7XG4gICAgX2VsJDMuJCRjbGljayA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG9sZERhdGEgPSBwcm9wcy5hY3RpdmVRdWVyeS5zdGF0ZS5kYXRhO1xuICAgICAgY29uc3QgbmV3RGF0YSA9IHVwZGF0ZU5lc3RlZERhdGFCeVBhdGgob2xkRGF0YSwgcHJvcHMuZGF0YVBhdGgsIFtdKTtcbiAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJ5RGF0YShwcm9wcy5hY3RpdmVRdWVyeS5xdWVyeUtleSwgbmV3RGF0YSk7XG4gICAgfTtcbiAgICBpbnNlcnQoX2VsJDMsIGNyZWF0ZUNvbXBvbmVudChMaXN0LCB7fSkpO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDMsIHN0eWxlcygpLmFjdGlvbkJ1dHRvbikpO1xuICAgIHJldHVybiBfZWwkMztcbiAgfSkoKTtcbn07XG52YXIgRGVsZXRlSXRlbUJ1dHRvbiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGNzcyA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0ID8gdS5iaW5kKHtcbiAgICB0YXJnZXQ6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0XG4gIH0pIDogdTtcbiAgY29uc3Qgc3R5bGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFya1N0eWxlcyhjc3MpIDogbGlnaHRTdHlsZXMoY3NzKTtcbiAgfSk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5jbGllbnQ7XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkNCA9IF90bXBsJDQyKCk7XG4gICAgX2VsJDQuJCRjbGljayA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG9sZERhdGEgPSBwcm9wcy5hY3RpdmVRdWVyeS5zdGF0ZS5kYXRhO1xuICAgICAgY29uc3QgbmV3RGF0YSA9IGRlbGV0ZU5lc3RlZERhdGFCeVBhdGgob2xkRGF0YSwgcHJvcHMuZGF0YVBhdGgpO1xuICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcnlEYXRhKHByb3BzLmFjdGl2ZVF1ZXJ5LnF1ZXJ5S2V5LCBuZXdEYXRhKTtcbiAgICB9O1xuICAgIGluc2VydChfZWwkNCwgY3JlYXRlQ29tcG9uZW50KFRyYXNoLCB7fSkpO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDQsIGNsc3goc3R5bGVzKCkuYWN0aW9uQnV0dG9uKSkpO1xuICAgIHJldHVybiBfZWwkNDtcbiAgfSkoKTtcbn07XG52YXIgVG9nZ2xlVmFsdWVCdXR0b24gPSAocHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMoY3NzKSA6IGxpZ2h0U3R5bGVzKGNzcyk7XG4gIH0pO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuY2xpZW50O1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJDUgPSBfdG1wbCQ1MigpO1xuICAgIF9lbCQ1LiQkY2xpY2sgPSAoKSA9PiB7XG4gICAgICBjb25zdCBvbGREYXRhID0gcHJvcHMuYWN0aXZlUXVlcnkuc3RhdGUuZGF0YTtcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSB1cGRhdGVOZXN0ZWREYXRhQnlQYXRoKG9sZERhdGEsIHByb3BzLmRhdGFQYXRoLCAhcHJvcHMudmFsdWUpO1xuICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcnlEYXRhKHByb3BzLmFjdGl2ZVF1ZXJ5LnF1ZXJ5S2V5LCBuZXdEYXRhKTtcbiAgICB9O1xuICAgIGluc2VydChfZWwkNSwgY3JlYXRlQ29tcG9uZW50KENoZWNrLCB7XG4gICAgICBnZXQgdGhlbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGVtZSgpO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGVja2VkKCkge1xuICAgICAgICByZXR1cm4gcHJvcHMudmFsdWU7XG4gICAgICB9XG4gICAgfSkpO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDUsIGNsc3goc3R5bGVzKCkuYWN0aW9uQnV0dG9uLCBjc3NgXG4gICAgICAgICAgd2lkdGg6ICR7dG9rZW5zLnNpemVbMy41XX07XG4gICAgICAgICAgaGVpZ2h0OiAke3Rva2Vucy5zaXplWzMuNV19O1xuICAgICAgICBgKSkpO1xuICAgIHJldHVybiBfZWwkNTtcbiAgfSkoKTtcbn07XG5mdW5jdGlvbiBpc0l0ZXJhYmxlKHgpIHtcbiAgcmV0dXJuIFN5bWJvbC5pdGVyYXRvciBpbiB4O1xufVxuZnVuY3Rpb24gRXhwbG9yZXIocHJvcHMpIHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMoY3NzKSA6IGxpZ2h0U3R5bGVzKGNzcyk7XG4gIH0pO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuY2xpZW50O1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IGNyZWF0ZVNpZ25hbCgocHJvcHMuZGVmYXVsdEV4cGFuZGVkIHx8IFtdKS5pbmNsdWRlcyhwcm9wcy5sYWJlbCkpO1xuICBjb25zdCB0b2dnbGVFeHBhbmRlZCA9ICgpID0+IHNldEV4cGFuZGVkKChvbGQpID0+ICFvbGQpO1xuICBjb25zdCBbZXhwYW5kZWRQYWdlcywgc2V0RXhwYW5kZWRQYWdlc10gPSBjcmVhdGVTaWduYWwoW10pO1xuICBjb25zdCBzdWJFbnRyaWVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMudmFsdWUpKSB7XG4gICAgICByZXR1cm4gcHJvcHMudmFsdWUubWFwKChkLCBpMikgPT4gKHtcbiAgICAgICAgbGFiZWw6IGkyLnRvU3RyaW5nKCksXG4gICAgICAgIHZhbHVlOiBkXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy52YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgcHJvcHMudmFsdWUgPT09IFwib2JqZWN0XCIgJiYgaXNJdGVyYWJsZShwcm9wcy52YWx1ZSkgJiYgdHlwZW9mIHByb3BzLnZhbHVlW1N5bWJvbC5pdGVyYXRvcl0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgaWYgKHByb3BzLnZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHByb3BzLnZhbHVlLCAoW2tleSwgdmFsXSkgPT4gKHtcbiAgICAgICAgICBsYWJlbDoga2V5LFxuICAgICAgICAgIHZhbHVlOiB2YWxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEFycmF5LmZyb20ocHJvcHMudmFsdWUsICh2YWwsIGkyKSA9PiAoe1xuICAgICAgICBsYWJlbDogaTIudG9TdHJpbmcoKSxcbiAgICAgICAgdmFsdWU6IHZhbFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLnZhbHVlID09PSBcIm9iamVjdFwiICYmIHByb3BzLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocHJvcHMudmFsdWUpLm1hcCgoW2tleSwgdmFsXSkgPT4gKHtcbiAgICAgICAgbGFiZWw6IGtleSxcbiAgICAgICAgdmFsdWU6IHZhbFxuICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH0pO1xuICBjb25zdCB0eXBlID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMudmFsdWUpKSB7XG4gICAgICByZXR1cm4gXCJhcnJheVwiO1xuICAgIH0gZWxzZSBpZiAocHJvcHMudmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHByb3BzLnZhbHVlID09PSBcIm9iamVjdFwiICYmIGlzSXRlcmFibGUocHJvcHMudmFsdWUpICYmIHR5cGVvZiBwcm9wcy52YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBcIkl0ZXJhYmxlXCI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcHMudmFsdWUgPT09IFwib2JqZWN0XCIgJiYgcHJvcHMudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBcIm9iamVjdFwiO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIHByb3BzLnZhbHVlO1xuICB9KTtcbiAgY29uc3Qgc3ViRW50cnlQYWdlcyA9IGNyZWF0ZU1lbW8oKCkgPT4gY2h1bmtBcnJheShzdWJFbnRyaWVzKCksIDEwMCkpO1xuICBjb25zdCBjdXJyZW50RGF0YVBhdGggPSBwcm9wcy5kYXRhUGF0aCA/PyBbXTtcbiAgcmV0dXJuICgoKSA9PiB7XG4gICAgdmFyIF9lbCQ2ID0gX3RtcGwkNzIoKTtcbiAgICBpbnNlcnQoX2VsJDYsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgcmV0dXJuIHN1YkVudHJ5UGFnZXMoKS5sZW5ndGg7XG4gICAgICB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICByZXR1cm4gWygoKSA9PiB7XG4gICAgICAgICAgdmFyIF9lbCQ3ID0gX3RtcGwkODIoKSwgX2VsJDggPSBfZWwkNy5maXJzdENoaWxkLCBfZWwkOSA9IF9lbCQ4LmZpcnN0Q2hpbGQsIF9lbCQxMCA9IF9lbCQ5Lm5leHRTaWJsaW5nLCBfZWwkMTEgPSBfZWwkMTAubmV4dFNpYmxpbmcsIF9lbCQxMiA9IF9lbCQxMS5uZXh0U2libGluZywgX2VsJDEzID0gX2VsJDEyLmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgX2VsJDguJCRjbGljayA9ICgpID0+IHRvZ2dsZUV4cGFuZGVkKCk7XG4gICAgICAgICAgaW5zZXJ0KF9lbCQ4LCBjcmVhdGVDb21wb25lbnQoRXhwYW5kZXIsIHtcbiAgICAgICAgICAgIGdldCBleHBhbmRlZCgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGV4cGFuZGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksIF9lbCQ5KTtcbiAgICAgICAgICBpbnNlcnQoX2VsJDEwLCAoKSA9PiBwcm9wcy5sYWJlbCk7XG4gICAgICAgICAgaW5zZXJ0KF9lbCQxMiwgKCkgPT4gU3RyaW5nKHR5cGUoKSkudG9Mb3dlckNhc2UoKSA9PT0gXCJpdGVyYWJsZVwiID8gXCIoSXRlcmFibGUpIFwiIDogXCJcIiwgX2VsJDEzKTtcbiAgICAgICAgICBpbnNlcnQoX2VsJDEyLCAoKSA9PiBzdWJFbnRyaWVzKCkubGVuZ3RoLCBfZWwkMTMpO1xuICAgICAgICAgIGluc2VydChfZWwkMTIsICgpID0+IHN1YkVudHJpZXMoKS5sZW5ndGggPiAxID8gYGl0ZW1zYCA6IGBpdGVtYCwgbnVsbCk7XG4gICAgICAgICAgaW5zZXJ0KF9lbCQ3LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBwcm9wcy5lZGl0YWJsZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgIHZhciBfZWwkMTQgPSBfdG1wbCQ3MigpO1xuICAgICAgICAgICAgICBpbnNlcnQoX2VsJDE0LCBjcmVhdGVDb21wb25lbnQoQ29weUJ1dHRvbiwge1xuICAgICAgICAgICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLCBudWxsKTtcbiAgICAgICAgICAgICAgaW5zZXJ0KF9lbCQxNCwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5pdGVtc0RlbGV0YWJsZSAmJiBwcm9wcy5hY3RpdmVRdWVyeSAhPT0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEZWxldGVJdGVtQnV0dG9uLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldCBhY3RpdmVRdWVyeSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZlUXVlcnk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRhdGFQYXRoOiBjdXJyZW50RGF0YVBhdGhcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksIG51bGwpO1xuICAgICAgICAgICAgICBpbnNlcnQoX2VsJDE0LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PT0gXCJhcnJheVwiICYmIHByb3BzLmFjdGl2ZVF1ZXJ5ICE9PSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KENsZWFyQXJyYXlCdXR0b24sIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0IGFjdGl2ZVF1ZXJ5KCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3RpdmVRdWVyeTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVBhdGg6IGN1cnJlbnREYXRhUGF0aFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSwgbnVsbCk7XG4gICAgICAgICAgICAgIGluc2VydChfZWwkMTQsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiAhISEhcHJvcHMub25FZGl0KSgpICYmICFzZXJpYWxpemUocHJvcHMudmFsdWUpLm1ldGE7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgX2VsJDE1ID0gX3RtcGwkNjIoKTtcbiAgICAgICAgICAgICAgICAgIF9lbCQxNS4kJGNsaWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vbkVkaXQ/LigpO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIGluc2VydChfZWwkMTUsIGNyZWF0ZUNvbXBvbmVudChQZW5jaWwsIHt9KSk7XG4gICAgICAgICAgICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQxNSwgc3R5bGVzKCkuYWN0aW9uQnV0dG9uKSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX2VsJDE1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksIG51bGwpO1xuICAgICAgICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQxNCwgc3R5bGVzKCkuYWN0aW9ucykpO1xuICAgICAgICAgICAgICByZXR1cm4gX2VsJDE0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLCBudWxsKTtcbiAgICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKF9wJCkgPT4ge1xuICAgICAgICAgICAgdmFyIF92JDMgPSBzdHlsZXMoKS5leHBhbmRlckJ1dHRvbkNvbnRhaW5lciwgX3YkNCA9IHN0eWxlcygpLmV4cGFuZGVyQnV0dG9uLCBfdiQ1ID0gc3R5bGVzKCkuaW5mbztcbiAgICAgICAgICAgIF92JDMgIT09IF9wJC5lICYmIGNsYXNzTmFtZShfZWwkNywgX3AkLmUgPSBfdiQzKTtcbiAgICAgICAgICAgIF92JDQgIT09IF9wJC50ICYmIGNsYXNzTmFtZShfZWwkOCwgX3AkLnQgPSBfdiQ0KTtcbiAgICAgICAgICAgIF92JDUgIT09IF9wJC5hICYmIGNsYXNzTmFtZShfZWwkMTIsIF9wJC5hID0gX3YkNSk7XG4gICAgICAgICAgICByZXR1cm4gX3AkO1xuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgIGU6IHZvaWQgMCxcbiAgICAgICAgICAgIHQ6IHZvaWQgMCxcbiAgICAgICAgICAgIGE6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBfZWwkNztcbiAgICAgICAgfSkoKSwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBleHBhbmRlZCgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIFtjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ViRW50cnlQYWdlcygpLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgIHZhciBfZWwkMTYgPSBfdG1wbCQ3MigpO1xuICAgICAgICAgICAgICAgIGluc2VydChfZWwkMTYsIGNyZWF0ZUNvbXBvbmVudChLZXksIHtcbiAgICAgICAgICAgICAgICAgIGdldCBlYWNoKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ViRW50cmllcygpO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGJ5OiAoaXRlbSkgPT4gaXRlbS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAoZW50cnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChFeHBsb3Jlciwge1xuICAgICAgICAgICAgICAgICAgICAgIGdldCBkZWZhdWx0RXhwYW5kZWQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuZGVmYXVsdEV4cGFuZGVkO1xuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IGxhYmVsKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5KCkubGFiZWw7XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkoKS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGdldCBlZGl0YWJsZSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5lZGl0YWJsZTtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGdldCBkYXRhUGF0aCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY3VycmVudERhdGFQYXRoLCBlbnRyeSgpLmxhYmVsXTtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGdldCBhY3RpdmVRdWVyeSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3RpdmVRdWVyeTtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGdldCBpdGVtc0RlbGV0YWJsZSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKCkgPT09IFwiYXJyYXlcIiB8fCB0eXBlKCkgPT09IFwiSXRlcmFibGVcIiB8fCB0eXBlKCkgPT09IFwib2JqZWN0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkMTYsIHN0eWxlcygpLnN1YkVudHJ5KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9lbCQxNjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWJFbnRyeVBhZ2VzKCkubGVuZ3RoID4gMTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgIHZhciBfZWwkMTcgPSBfdG1wbCQ3MigpO1xuICAgICAgICAgICAgICAgIGluc2VydChfZWwkMTcsIGNyZWF0ZUNvbXBvbmVudChJbmRleCwge1xuICAgICAgICAgICAgICAgICAgZ2V0IGVhY2goKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJFbnRyeVBhZ2VzKCk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IChlbnRyaWVzMiwgaW5kZXgpID0+ICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZWwkMjMgPSBfdG1wbCQxMjIoKSwgX2VsJDI0ID0gX2VsJDIzLmZpcnN0Q2hpbGQsIF9lbCQyNSA9IF9lbCQyNC5maXJzdENoaWxkLCBfZWwkMjYgPSBfZWwkMjUuZmlyc3RDaGlsZCwgX2VsJDMwID0gX2VsJDI2Lm5leHRTaWJsaW5nLCBfZWwkMjggPSBfZWwkMzAubmV4dFNpYmxpbmcsIF9lbCQzMSA9IF9lbCQyOC5uZXh0U2libGluZzsgX2VsJDMxLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICBfZWwkMjUuJCRjbGljayA9ICgpID0+IHNldEV4cGFuZGVkUGFnZXMoKG9sZCkgPT4gb2xkLmluY2x1ZGVzKGluZGV4KSA/IG9sZC5maWx0ZXIoKGQpID0+IGQgIT09IGluZGV4KSA6IFsuLi5vbGQsIGluZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydChfZWwkMjUsIGNyZWF0ZUNvbXBvbmVudChFeHBhbmRlciwge1xuICAgICAgICAgICAgICAgICAgICAgIGdldCBleHBhbmRlZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBhbmRlZFBhZ2VzKCkuaW5jbHVkZXMoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksIF9lbCQyNik7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydChfZWwkMjUsIGluZGV4ICogMTAwLCBfZWwkMzApO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnQoX2VsJDI1LCBpbmRleCAqIDEwMCArIDEwMCAtIDEsIF9lbCQzMSk7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydChfZWwkMjQsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwYW5kZWRQYWdlcygpLmluY2x1ZGVzKGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfZWwkMzIgPSBfdG1wbCQ3MigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0KF9lbCQzMiwgY3JlYXRlQ29tcG9uZW50KEtleSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgZWFjaCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cmllczIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnk6IChlbnRyeSkgPT4gZW50cnkubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAoZW50cnkpID0+IGNyZWF0ZUNvbXBvbmVudChFeHBsb3Jlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBkZWZhdWx0RXhwYW5kZWQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuZGVmYXVsdEV4cGFuZGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGxhYmVsKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5KCkubGFiZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkoKS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBlZGl0YWJsZSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5lZGl0YWJsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBkYXRhUGF0aCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY3VycmVudERhdGFQYXRoLCBlbnRyeSgpLmxhYmVsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBhY3RpdmVRdWVyeSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3RpdmVRdWVyeTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQzMiwgc3R5bGVzKCkuc3ViRW50cnkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfZWwkMzI7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIF92JDEwID0gc3R5bGVzKCkuZW50cnksIF92JDExID0gc3R5bGVzKCkuZXhwYW5kZXJCdXR0b247XG4gICAgICAgICAgICAgICAgICAgICAgX3YkMTAgIT09IF9wJC5lICYmIGNsYXNzTmFtZShfZWwkMjQsIF9wJC5lID0gX3YkMTApO1xuICAgICAgICAgICAgICAgICAgICAgIF92JDExICE9PSBfcCQudCAmJiBjbGFzc05hbWUoX2VsJDI1LCBfcCQudCA9IF92JDExKTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3AkO1xuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgZTogdm9pZCAwLFxuICAgICAgICAgICAgICAgICAgICAgIHQ6IHZvaWQgMFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lbCQyMztcbiAgICAgICAgICAgICAgICAgIH0pKClcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkMTcsIHN0eWxlcygpLnN1YkVudHJ5KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9lbCQxNztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSldO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDYsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgcmV0dXJuIHN1YkVudHJ5UGFnZXMoKS5sZW5ndGggPT09IDA7XG4gICAgICB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICB2YXIgX2VsJDE4ID0gX3RtcGwkMTEyKCksIF9lbCQxOSA9IF9lbCQxOC5maXJzdENoaWxkLCBfZWwkMjAgPSBfZWwkMTkuZmlyc3RDaGlsZDtcbiAgICAgICAgaW5zZXJ0KF9lbCQxOSwgKCkgPT4gcHJvcHMubGFiZWwsIF9lbCQyMCk7XG4gICAgICAgIGluc2VydChfZWwkMTgsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiAhIShwcm9wcy5lZGl0YWJsZSAmJiBwcm9wcy5hY3RpdmVRdWVyeSAhPT0gdm9pZCAwKSkoKSAmJiAodHlwZSgpID09PSBcInN0cmluZ1wiIHx8IHR5cGUoKSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlKCkgPT09IFwiYm9vbGVhblwiKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldCBmYWxsYmFjaygpIHtcbiAgICAgICAgICAgIHJldHVybiAoKCkgPT4ge1xuICAgICAgICAgICAgICB2YXIgX2VsJDMzID0gX3RtcGwkMTAyKCk7XG4gICAgICAgICAgICAgIGluc2VydChfZWwkMzMsICgpID0+IGRpc3BsYXlWYWx1ZShwcm9wcy52YWx1ZSkpO1xuICAgICAgICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQzMywgc3R5bGVzKCkudmFsdWUpKTtcbiAgICAgICAgICAgICAgcmV0dXJuIF9lbCQzMztcbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gW2NyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+ICEhKHByb3BzLmVkaXRhYmxlICYmIHByb3BzLmFjdGl2ZVF1ZXJ5ICE9PSB2b2lkIDApKSgpICYmICh0eXBlKCkgPT09IFwic3RyaW5nXCIgfHwgdHlwZSgpID09PSBcIm51bWJlclwiKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgIHZhciBfZWwkMjEgPSBfdG1wbCQ5MigpO1xuICAgICAgICAgICAgICAgIF9lbCQyMS5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIChjaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkRGF0YSA9IHByb3BzLmFjdGl2ZVF1ZXJ5LnN0YXRlLmRhdGE7XG4gICAgICAgICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gdXBkYXRlTmVzdGVkRGF0YUJ5UGF0aChvbGREYXRhLCBjdXJyZW50RGF0YVBhdGgsIHR5cGUoKSA9PT0gXCJudW1iZXJcIiA/IGNoYW5nZUV2ZW50LnRhcmdldC52YWx1ZUFzTnVtYmVyIDogY2hhbmdlRXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJ5RGF0YShwcm9wcy5hY3RpdmVRdWVyeS5xdWVyeUtleSwgbmV3RGF0YSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgICAgICAgICAgICAgIHZhciBfdiQ2ID0gdHlwZSgpID09PSBcIm51bWJlclwiID8gXCJudW1iZXJcIiA6IFwidGV4dFwiLCBfdiQ3ID0gY2xzeChzdHlsZXMoKS52YWx1ZSwgc3R5bGVzKCkuZWRpdGFibGVJbnB1dCk7XG4gICAgICAgICAgICAgICAgICBfdiQ2ICE9PSBfcCQuZSAmJiBzZXRBdHRyaWJ1dGUoX2VsJDIxLCBcInR5cGVcIiwgX3AkLmUgPSBfdiQ2KTtcbiAgICAgICAgICAgICAgICAgIF92JDcgIT09IF9wJC50ICYmIGNsYXNzTmFtZShfZWwkMjEsIF9wJC50ID0gX3YkNyk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3AkO1xuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgIGU6IHZvaWQgMCxcbiAgICAgICAgICAgICAgICAgIHQ6IHZvaWQgMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBfZWwkMjEudmFsdWUgPSBwcm9wcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9lbCQyMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKCkgPT09IFwiYm9vbGVhblwiO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9lbCQyMiA9IF90bXBsJDEwMigpO1xuICAgICAgICAgICAgICAgIGluc2VydChfZWwkMjIsIGNyZWF0ZUNvbXBvbmVudChUb2dnbGVWYWx1ZUJ1dHRvbiwge1xuICAgICAgICAgICAgICAgICAgZ2V0IGFjdGl2ZVF1ZXJ5KCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZlUXVlcnk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZGF0YVBhdGg6IGN1cnJlbnREYXRhUGF0aCxcbiAgICAgICAgICAgICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLCBudWxsKTtcbiAgICAgICAgICAgICAgICBpbnNlcnQoX2VsJDIyLCAoKSA9PiBkaXNwbGF5VmFsdWUocHJvcHMudmFsdWUpLCBudWxsKTtcbiAgICAgICAgICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQyMiwgY2xzeChzdHlsZXMoKS52YWx1ZSwgc3R5bGVzKCkuYWN0aW9ucywgc3R5bGVzKCkuZWRpdGFibGVJbnB1dCkpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2VsJDIyO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KV07XG4gICAgICAgICAgfVxuICAgICAgICB9KSwgbnVsbCk7XG4gICAgICAgIGluc2VydChfZWwkMTgsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvcHMuZWRpdGFibGUgJiYgcHJvcHMuaXRlbXNEZWxldGFibGUgJiYgcHJvcHMuYWN0aXZlUXVlcnkgIT09IHZvaWQgMDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGVsZXRlSXRlbUJ1dHRvbiwge1xuICAgICAgICAgICAgICBnZXQgYWN0aXZlUXVlcnkoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmFjdGl2ZVF1ZXJ5O1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkYXRhUGF0aDogY3VycmVudERhdGFQYXRoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLCBudWxsKTtcbiAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgICAgICB2YXIgX3YkOCA9IHN0eWxlcygpLnJvdywgX3YkOSA9IHN0eWxlcygpLmxhYmVsO1xuICAgICAgICAgIF92JDggIT09IF9wJC5lICYmIGNsYXNzTmFtZShfZWwkMTgsIF9wJC5lID0gX3YkOCk7XG4gICAgICAgICAgX3YkOSAhPT0gX3AkLnQgJiYgY2xhc3NOYW1lKF9lbCQxOSwgX3AkLnQgPSBfdiQ5KTtcbiAgICAgICAgICByZXR1cm4gX3AkO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgZTogdm9pZCAwLFxuICAgICAgICAgIHQ6IHZvaWQgMFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9lbCQxODtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkNiwgc3R5bGVzKCkuZW50cnkpKTtcbiAgICByZXR1cm4gX2VsJDY7XG4gIH0pKCk7XG59XG52YXIgc3R5bGVzRmFjdG9yeSA9ICh0aGVtZSwgY3NzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcnMsXG4gICAgZm9udCxcbiAgICBzaXplOiBzaXplMyxcbiAgICBib3JkZXJcbiAgfSA9IHRva2VucztcbiAgY29uc3QgdDIgPSAobGlnaHQsIGRhcmspID0+IHRoZW1lID09PSBcImxpZ2h0XCIgPyBsaWdodCA6IGRhcms7XG4gIHJldHVybiB7XG4gICAgZW50cnk6IGNzc2BcbiAgICAgICYgKiB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsXG4gICAgICAgICAgJ0xpYmVyYXRpb24gTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgICAgIH1cbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgIGAsXG4gICAgc3ViRW50cnk6IGNzc2BcbiAgICAgIG1hcmdpbjogMCAwIDAgMC41ZW07XG4gICAgICBwYWRkaW5nLWxlZnQ6IDAuNzVlbTtcbiAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZGFya0dyYXlbNDAwXSl9O1xuICAgICAgLyogb3V0bGluZTogMXB4IHNvbGlkICR7Y29sb3JzLnRlYWxbNDAwXX07ICovXG4gICAgYCxcbiAgICBleHBhbmRlcjogY3NzYFxuICAgICAgJiBwYXRoIHtcbiAgICAgICAgc3Ryb2tlOiAke2NvbG9ycy5ncmF5WzQwMF19O1xuICAgICAgfVxuICAgICAgJiBzdmcge1xuICAgICAgICB3aWR0aDogJHtzaXplM1szXX07XG4gICAgICAgIGhlaWdodDogJHtzaXplM1szXX07XG4gICAgICB9XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xcyBlYXNlO1xuICAgICAgLyogb3V0bGluZTogMXB4IHNvbGlkICR7Y29sb3JzLmJsdWVbNDAwXX07ICovXG4gICAgYCxcbiAgICBleHBhbmRlckJ1dHRvbkNvbnRhaW5lcjogY3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBsaW5lLWhlaWdodDogJHtzaXplM1s0XX07XG4gICAgICBtaW4taGVpZ2h0OiAke3NpemUzWzRdfTtcbiAgICAgIGdhcDogJHtzaXplM1syXX07XG4gICAgYCxcbiAgICBleHBhbmRlckJ1dHRvbjogY3NzYFxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICBmb250OiBpbmhlcml0O1xuICAgICAgb3V0bGluZTogaW5oZXJpdDtcbiAgICAgIGhlaWdodDogJHtzaXplM1s1XX07XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6ICR7c2l6ZTNbMV19O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgLyogb3V0bGluZTogMXB4IHNvbGlkICR7Y29sb3JzLmdyZWVuWzQwMF19OyAqL1xuXG4gICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMueHN9O1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs4MDBdfTtcbiAgICAgIH1cblxuICAgICAgJiBzdmcge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGxlZnQ6IDFweDtcbiAgICAgIH1cbiAgICBgLFxuICAgIGluZm86IGNzc2BcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwMF0sIGNvbG9ycy5ncmF5WzUwMF0pfTtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgbWFyZ2luLWxlZnQ6ICR7c2l6ZTNbMV19O1xuICAgICAgLyogb3V0bGluZTogMXB4IHNvbGlkICR7Y29sb3JzLnllbGxvd1s0MDBdfTsgKi9cbiAgICBgLFxuICAgIGxhYmVsOiBjc3NgXG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs3MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGAsXG4gICAgdmFsdWU6IGNzc2BcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5wdXJwbGVbNjAwXSwgY29sb3JzLnB1cnBsZVs0MDBdKX07XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgYCxcbiAgICBhY3Rpb25zOiBjc3NgXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGdhcDogJHtzaXplM1syXX07XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGAsXG4gICAgcm93OiBjc3NgXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGdhcDogJHtzaXplM1syXX07XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbjogJHtzaXplM1swLjI1XX0gMHB4O1xuICAgICAgbGluZS1oZWlnaHQ6ICR7c2l6ZTNbNC41XX07XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGAsXG4gICAgZWRpdGFibGVJbnB1dDogY3NzYFxuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgcGFkZGluZzogJHtzaXplM1swLjVdfSAke3NpemUzWzFdfSAke3NpemUzWzAuNV19ICR7c2l6ZTNbMS41XX07XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMueHN9O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbNTAwXSl9O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZGFya0dyYXlbNjAwXSl9O1xuICAgICAgfVxuICAgIGAsXG4gICAgYWN0aW9uQnV0dG9uOiBjc3NgXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwMF0sIGNvbG9ycy5ncmF5WzUwMF0pfTtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgd2lkdGg6ICR7c2l6ZTNbM119O1xuICAgICAgaGVpZ2h0OiAke3NpemUzWzNdfTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHotaW5kZXg6IDE7XG5cbiAgICAgICY6aG92ZXIgc3ZnIHtcbiAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNjAwXSwgY29sb3JzLmdyYXlbNDAwXSl9O1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMueHN9O1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs4MDBdfTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICAgIH1cbiAgICBgXG4gIH07XG59O1xudmFyIGxpZ2h0U3R5bGVzID0gKGNzcykgPT4gc3R5bGVzRmFjdG9yeShcImxpZ2h0XCIsIGNzcyk7XG52YXIgZGFya1N0eWxlcyA9IChjc3MpID0+IHN0eWxlc0ZhY3RvcnkoXCJkYXJrXCIsIGNzcyk7XG5kZWxlZ2F0ZUV2ZW50cyhbXCJjbGlja1wiXSk7XG5cbi8vIHNyYy9EZXZ0b29scy50c3hcbnZhciBfdG1wbCQyNiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdj48ZGl2IGFyaWEtaGlkZGVuPXRydWU+PC9kaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbiBhcmlhLWxhYmVsPVwiT3BlbiBUYW5zdGFjayBxdWVyeSBkZXZ0b29sc1wiY2xhc3M9dHNxZC1vcGVuLWJ0bj5gKTtcbnZhciBfdG1wbCQyNyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdj5gKTtcbnZhciBfdG1wbCQzMyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGFzaWRlIGFyaWEtbGFiZWw9XCJUYW5zdGFjayBxdWVyeSBkZXZ0b29sc1wiPjxkaXY+PC9kaXY+PGJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xvc2UgdGFuc3RhY2sgcXVlcnkgZGV2dG9vbHNcIj5gKTtcbnZhciBfdG1wbCQ0MyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNlbGVjdCBuYW1lPXRzcWQtcXVlcmllcy1maWx0ZXItc29ydD5gKTtcbnZhciBfdG1wbCQ1MyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNlbGVjdCBuYW1lPXRzcWQtbXV0YXRpb25zLWZpbHRlci1zb3J0PmApO1xudmFyIF90bXBsJDYzID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3Bhbj5Bc2NgKTtcbnZhciBfdG1wbCQ3MyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNwYW4+RGVzY2ApO1xudmFyIF90bXBsJDgzID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8YnV0dG9uIGFyaWEtbGFiZWw9XCJPcGVuIGluIHBpY3R1cmUtaW4tcGljdHVyZSBtb2RlXCJ0aXRsZT1cIk9wZW4gaW4gcGljdHVyZS1pbi1waWN0dXJlIG1vZGVcIj5gKTtcbnZhciBfdG1wbCQ5MyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdj5TZXR0aW5nc2ApO1xudmFyIF90bXBsJDEwMyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNwYW4+UG9zaXRpb25gKTtcbnZhciBfdG1wbCQxMTMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzcGFuPlRvcGApO1xudmFyIF90bXBsJDEyMyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNwYW4+Qm90dG9tYCk7XG52YXIgX3RtcGwkMTMyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3Bhbj5MZWZ0YCk7XG52YXIgX3RtcGwkMTQyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3Bhbj5SaWdodGApO1xudmFyIF90bXBsJDE1MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNwYW4+VGhlbWVgKTtcbnZhciBfdG1wbCQxNjIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzcGFuPkxpZ2h0YCk7XG52YXIgX3RtcGwkMTcyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3Bhbj5EYXJrYCk7XG52YXIgX3RtcGwkMTgyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3Bhbj5TeXN0ZW1gKTtcbnZhciBfdG1wbCQxOTIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXY+PGRpdiBjbGFzcz10c3FkLXF1ZXJpZXMtY29udGFpbmVyPmApO1xudmFyIF90bXBsJDIwMiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdj48ZGl2IGNsYXNzPXRzcWQtbXV0YXRpb25zLWNvbnRhaW5lcj5gKTtcbnZhciBfdG1wbCQyMTIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXY+PGRpdj48ZGl2PjxidXR0b24gYXJpYS1sYWJlbD1cIkNsb3NlIFRhbnN0YWNrIHF1ZXJ5IGRldnRvb2xzXCI+PHNwYW4+VEFOU1RBQ0s8L3NwYW4+PHNwYW4+IHY8L3NwYW4+PC9idXR0b24+PC9kaXY+PC9kaXY+PGRpdj48ZGl2PjxkaXY+PGlucHV0IGFyaWEtbGFiZWw9XCJGaWx0ZXIgcXVlcmllcyBieSBxdWVyeSBrZXlcInR5cGU9dGV4dCBwbGFjZWhvbGRlcj1GaWx0ZXIgbmFtZT10c3FkLXF1ZXJ5LWZpbHRlci1pbnB1dD48L2Rpdj48ZGl2PjwvZGl2PjxidXR0b24gY2xhc3M9dHNxZC1xdWVyeS1maWx0ZXItc29ydC1vcmRlci1idG4+PC9idXR0b24+PC9kaXY+PGRpdj48YnV0dG9uIGFyaWEtbGFiZWw9XCJDbGVhciBxdWVyeSBjYWNoZVwiPjwvYnV0dG9uPjxidXR0b24+YCk7XG52YXIgX3RtcGwkMjIzID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8b3B0aW9uPlNvcnQgYnkgYCk7XG52YXIgX3RtcGwkMjMyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8ZGl2IGNsYXNzPXRzcWQtcXVlcnktZGlzYWJsZWQtaW5kaWNhdG9yPmRpc2FibGVkYCk7XG52YXIgX3RtcGwkMjQyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8YnV0dG9uPjxkaXY+PC9kaXY+PGNvZGUgY2xhc3M9dHNxZC1xdWVyeS1oYXNoPmApO1xudmFyIF90bXBsJDI1MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdiByb2xlPXRvb2x0aXAgaWQ9dHNxZC1zdGF0dXMtdG9vbHRpcD5gKTtcbnZhciBfdG1wbCQyNjIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzcGFuPmApO1xudmFyIF90bXBsJDI3MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGJ1dHRvbj48c3Bhbj48L3NwYW4+PHNwYW4+YCk7XG52YXIgX3RtcGwkMjggPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxidXR0b24+PHNwYW4+PC9zcGFuPiBFcnJvcmApO1xudmFyIF90bXBsJDI5ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8ZGl2PjxzcGFuPjwvc3Bhbj5UcmlnZ2VyIEVycm9yPHNlbGVjdD48b3B0aW9uIHZhbHVlPVwiXCJkaXNhYmxlZCBzZWxlY3RlZD5gKTtcbnZhciBfdG1wbCQzMCA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdiBjbGFzcz1cInRzcWQtcXVlcnktZGV0YWlscy1leHBsb3Jlci1jb250YWluZXIgdHNxZC1xdWVyeS1kZXRhaWxzLWRhdGEtZXhwbG9yZXJcIj5gKTtcbnZhciBfdG1wbCQzMSA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGZvcm0+PHRleHRhcmVhIG5hbWU9ZGF0YT48L3RleHRhcmVhPjxkaXY+PHNwYW4+PC9zcGFuPjxkaXY+PGJ1dHRvbiB0eXBlPWJ1dHRvbj5DYW5jZWw8L2J1dHRvbj48YnV0dG9uPlNhdmVgKTtcbnZhciBfdG1wbCQzMjIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXY+PGRpdj5RdWVyeSBEZXRhaWxzPC9kaXY+PGRpdj48ZGl2IGNsYXNzPXRzcWQtcXVlcnktZGV0YWlscy1zdW1tYXJ5PjxwcmU+PGNvZGU+PC9jb2RlPjwvcHJlPjxzcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPXRzcWQtcXVlcnktZGV0YWlscy1vYnNlcnZlcnMtY291bnQ+PHNwYW4+T2JzZXJ2ZXJzOjwvc3Bhbj48c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz10c3FkLXF1ZXJ5LWRldGFpbHMtbGFzdC11cGRhdGVkPjxzcGFuPkxhc3QgVXBkYXRlZDo8L3NwYW4+PHNwYW4+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXY+QWN0aW9uczwvZGl2PjxkaXY+PGJ1dHRvbj48c3Bhbj48L3NwYW4+UmVmZXRjaDwvYnV0dG9uPjxidXR0b24+PHNwYW4+PC9zcGFuPkludmFsaWRhdGU8L2J1dHRvbj48YnV0dG9uPjxzcGFuPjwvc3Bhbj5SZXNldDwvYnV0dG9uPjxidXR0b24+PHNwYW4+PC9zcGFuPlJlbW92ZTwvYnV0dG9uPjxidXR0b24+PHNwYW4+PC9zcGFuPiBMb2FkaW5nPC9idXR0b24+PC9kaXY+PGRpdj5EYXRhIDwvZGl2PjxkaXY+UXVlcnkgRXhwbG9yZXI8L2Rpdj48ZGl2IGNsYXNzPVwidHNxZC1xdWVyeS1kZXRhaWxzLWV4cGxvcmVyLWNvbnRhaW5lciB0c3FkLXF1ZXJ5LWRldGFpbHMtcXVlcnktZXhwbG9yZXJcIj5gKTtcbnZhciBfdG1wbCQzMzIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxvcHRpb24+YCk7XG52YXIgX3RtcGwkMzQgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXY+PGRpdj5NdXRhdGlvbiBEZXRhaWxzPC9kaXY+PGRpdj48ZGl2IGNsYXNzPXRzcWQtcXVlcnktZGV0YWlscy1zdW1tYXJ5PjxwcmU+PGNvZGU+PC9jb2RlPjwvcHJlPjxzcGFuPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPXRzcWQtcXVlcnktZGV0YWlscy1sYXN0LXVwZGF0ZWQ+PHNwYW4+U3VibWl0dGVkIEF0Ojwvc3Bhbj48c3Bhbj48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdj5WYXJpYWJsZXMgRGV0YWlsczwvZGl2PjxkaXYgY2xhc3M9XCJ0c3FkLXF1ZXJ5LWRldGFpbHMtZXhwbG9yZXItY29udGFpbmVyIHRzcWQtcXVlcnktZGV0YWlscy1xdWVyeS1leHBsb3JlclwiPjwvZGl2PjxkaXY+Q29udGV4dCBEZXRhaWxzPC9kaXY+PGRpdiBjbGFzcz1cInRzcWQtcXVlcnktZGV0YWlscy1leHBsb3Jlci1jb250YWluZXIgdHNxZC1xdWVyeS1kZXRhaWxzLXF1ZXJ5LWV4cGxvcmVyXCI+PC9kaXY+PGRpdj5EYXRhIEV4cGxvcmVyPC9kaXY+PGRpdiBjbGFzcz1cInRzcWQtcXVlcnktZGV0YWlscy1leHBsb3Jlci1jb250YWluZXIgdHNxZC1xdWVyeS1kZXRhaWxzLXF1ZXJ5LWV4cGxvcmVyXCI+PC9kaXY+PGRpdj5NdXRhdGlvbnMgRXhwbG9yZXI8L2Rpdj48ZGl2IGNsYXNzPVwidHNxZC1xdWVyeS1kZXRhaWxzLWV4cGxvcmVyLWNvbnRhaW5lciB0c3FkLXF1ZXJ5LWRldGFpbHMtcXVlcnktZXhwbG9yZXJcIj5gKTtcbnZhciBbc2VsZWN0ZWRRdWVyeUhhc2gsIHNldFNlbGVjdGVkUXVlcnlIYXNoXSA9IGNyZWF0ZVNpZ25hbChudWxsKTtcbnZhciBbc2VsZWN0ZWRNdXRhdGlvbklkLCBzZXRTZWxlY3RlZE11dGF0aW9uSWRdID0gY3JlYXRlU2lnbmFsKG51bGwpO1xudmFyIFtwYW5lbFdpZHRoLCBzZXRQYW5lbFdpZHRoXSA9IGNyZWF0ZVNpZ25hbCgwKTtcbnZhciBbb2ZmbGluZSwgc2V0T2ZmbGluZV0gPSBjcmVhdGVTaWduYWwoZmFsc2UpO1xudmFyIERldnRvb2xzID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzMihjc3MpIDogbGlnaHRTdHlsZXMyKGNzcyk7XG4gIH0pO1xuICBjb25zdCBwaXAgPSB1c2VQaVBXaW5kb3coKTtcbiAgY29uc3QgYnV0dG9uUG9zaXRpb24gPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5idXR0b25Qb3NpdGlvbiB8fCBCVVRUT05fUE9TSVRJT047XG4gIH0pO1xuICBjb25zdCBpc09wZW4gPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMubG9jYWxTdG9yZS5vcGVuID09PSBcInRydWVcIiA/IHRydWUgOiBwcm9wcy5sb2NhbFN0b3JlLm9wZW4gPT09IFwiZmFsc2VcIiA/IGZhbHNlIDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5pbml0aWFsSXNPcGVuIHx8IElOSVRJQUxfSVNfT1BFTjtcbiAgfSk7XG4gIGNvbnN0IHBvc2l0aW9uID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHByb3BzLmxvY2FsU3RvcmUucG9zaXRpb24gfHwgdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5wb3NpdGlvbiB8fCBQT1NJVElPTjtcbiAgfSk7XG4gIGxldCB0cmFuc2l0aW9uc0NvbnRhaW5lclJlZjtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCByb290ID0gdHJhbnNpdGlvbnNDb250YWluZXJSZWYucGFyZW50RWxlbWVudDtcbiAgICBjb25zdCBoZWlnaHQgPSBwcm9wcy5sb2NhbFN0b3JlLmhlaWdodCB8fCBERUZBVUxUX0hFSUdIVDtcbiAgICBjb25zdCB3aWR0aCA9IHByb3BzLmxvY2FsU3RvcmUud2lkdGggfHwgREVGQVVMVF9XSURUSDtcbiAgICBjb25zdCBwYW5lbFBvc2l0aW9uID0gcG9zaXRpb24oKTtcbiAgICByb290LnN0eWxlLnNldFByb3BlcnR5KFwiLS10c3FkLXBhbmVsLWhlaWdodFwiLCBgJHtwYW5lbFBvc2l0aW9uID09PSBcInRvcFwiID8gXCItXCIgOiBcIlwifSR7aGVpZ2h0fXB4YCk7XG4gICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdHNxZC1wYW5lbC13aWR0aFwiLCBgJHtwYW5lbFBvc2l0aW9uID09PSBcImxlZnRcIiA/IFwiLVwiIDogXCJcIn0ke3dpZHRofXB4YCk7XG4gIH0pO1xuICBvbk1vdW50KCgpID0+IHtcbiAgICBjb25zdCBvbkZvY3VzID0gKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdCA9IHRyYW5zaXRpb25zQ29udGFpbmVyUmVmLnBhcmVudEVsZW1lbnQ7XG4gICAgICBjb25zdCBmb250U2l6ZSA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZm9udFNpemU7XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KFwiLS10c3FkLWZvbnQtc2l6ZVwiLCBmb250U2l6ZSk7XG4gICAgfTtcbiAgICBvbkZvY3VzKCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCBvbkZvY3VzKTtcbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCBvbkZvY3VzKTtcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IHBpcF9vcGVuID0gY3JlYXRlTWVtbygoKSA9PiBwcm9wcy5sb2NhbFN0b3JlLnBpcF9vcGVuID8/IFwiZmFsc2VcIik7XG4gIHJldHVybiBbY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICBnZXQgd2hlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+ICEhcGlwKCkucGlwV2luZG93KSgpICYmIHBpcF9vcGVuKCkgPT0gXCJ0cnVlXCI7XG4gICAgfSxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvcnRhbCwge1xuICAgICAgICBnZXQgbW91bnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHBpcCgpLnBpcFdpbmRvdz8uZG9jdW1lbnQuYm9keTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUGlQUGFuZWwsIHtcbiAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChDb250ZW50VmlldywgcHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCAoKCkgPT4ge1xuICAgIHZhciBfZWwkID0gX3RtcGwkMjcoKTtcbiAgICB2YXIgX3JlZiQgPSB0cmFuc2l0aW9uc0NvbnRhaW5lclJlZjtcbiAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiA/IHVzZShfcmVmJCwgX2VsJCkgOiB0cmFuc2l0aW9uc0NvbnRhaW5lclJlZiA9IF9lbCQ7XG4gICAgaW5zZXJ0KF9lbCQsIGNyZWF0ZUNvbXBvbmVudChUcmFuc2l0aW9uR3JvdXAsIHtcbiAgICAgIG5hbWU6IFwidHNxZC1wYW5lbC10cmFuc2l0aW9uXCIsXG4gICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gISEoaXNPcGVuKCkgJiYgIXBpcCgpLnBpcFdpbmRvdykpKCkgJiYgcGlwX29wZW4oKSA9PSBcImZhbHNlXCI7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERyYWdnYWJsZVBhbmVsLCB7XG4gICAgICAgICAgICAgIGdldCBsb2NhbFN0b3JlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5sb2NhbFN0b3JlO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBnZXQgc2V0TG9jYWxTdG9yZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuc2V0TG9jYWxTdG9yZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQsIGNyZWF0ZUNvbXBvbmVudChUcmFuc2l0aW9uR3JvdXAsIHtcbiAgICAgIG5hbWU6IFwidHNxZC1idXR0b24tdHJhbnNpdGlvblwiLFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgIHJldHVybiAhaXNPcGVuKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICB2YXIgX2VsJDIgPSBfdG1wbCQyNigpLCBfZWwkMyA9IF9lbCQyLmZpcnN0Q2hpbGQsIF9lbCQ0ID0gX2VsJDMubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICBpbnNlcnQoX2VsJDMsIGNyZWF0ZUNvbXBvbmVudChUYW5zdGFja0xvZ28sIHt9KSk7XG4gICAgICAgICAgICBfZWwkNC4kJGNsaWNrID0gKCkgPT4gcHJvcHMuc2V0TG9jYWxTdG9yZShcIm9wZW5cIiwgXCJ0cnVlXCIpO1xuICAgICAgICAgICAgaW5zZXJ0KF9lbCQ0LCBjcmVhdGVDb21wb25lbnQoVGFuc3RhY2tMb2dvLCB7fSkpO1xuICAgICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkMiwgY2xzeChzdHlsZXMoKS5kZXZ0b29sc0J0biwgc3R5bGVzKClbYGRldnRvb2xzQnRuLXBvc2l0aW9uLSR7YnV0dG9uUG9zaXRpb24oKX1gXSwgXCJ0c3FkLW9wZW4tYnRuLWNvbnRhaW5lclwiKSkpO1xuICAgICAgICAgICAgcmV0dXJuIF9lbCQyO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJCwgY2xzeChjc3NgXG4gICAgICAgICAgICAmIC50c3FkLXBhbmVsLXRyYW5zaXRpb24tZXhpdC1hY3RpdmUsXG4gICAgICAgICAgICAmIC50c3FkLXBhbmVsLXRyYW5zaXRpb24tZW50ZXItYWN0aXZlIHtcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICAgICAgICBvcGFjaXR5IDAuM3MsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtIDAuM3M7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYgLnRzcWQtcGFuZWwtdHJhbnNpdGlvbi1leGl0LXRvLFxuICAgICAgICAgICAgJiAudHNxZC1wYW5lbC10cmFuc2l0aW9uLWVudGVyIHtcbiAgICAgICAgICAgICAgJHtwb3NpdGlvbigpID09PSBcInRvcFwiIHx8IHBvc2l0aW9uKCkgPT09IFwiYm90dG9tXCIgPyBgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLXRzcWQtcGFuZWwtaGVpZ2h0KSk7YCA6IGB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tdHNxZC1wYW5lbC13aWR0aCkpO2B9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYgLnRzcWQtYnV0dG9uLXRyYW5zaXRpb24tZXhpdC1hY3RpdmUsXG4gICAgICAgICAgICAmIC50c3FkLWJ1dHRvbi10cmFuc2l0aW9uLWVudGVyLWFjdGl2ZSB7XG4gICAgICAgICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgICAgICAgb3BhY2l0eSAwLjNzLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAwLjNzO1xuICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmIC50c3FkLWJ1dHRvbi10cmFuc2l0aW9uLWV4aXQtdG8sXG4gICAgICAgICAgICAmIC50c3FkLWJ1dHRvbi10cmFuc2l0aW9uLWVudGVyIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiAke2J1dHRvblBvc2l0aW9uKCkgPT09IFwicmVsYXRpdmVcIiA/IGBub25lO2AgOiBidXR0b25Qb3NpdGlvbigpID09PSBcInRvcC1sZWZ0XCIgPyBgdHJhbnNsYXRlWCgtNzJweCk7YCA6IGJ1dHRvblBvc2l0aW9uKCkgPT09IFwidG9wLXJpZ2h0XCIgPyBgdHJhbnNsYXRlWCg3MnB4KTtgIDogYHRyYW5zbGF0ZVkoNzJweCk7YH07XG4gICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYCwgXCJ0c3FkLXRyYW5zaXRpb25zLWNvbnRhaW5lclwiKSkpO1xuICAgIHJldHVybiBfZWwkO1xuICB9KSgpXTtcbn07XG52YXIgUGlQUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgcGlwID0gdXNlUGlQV2luZG93KCk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzMihjc3MpIDogbGlnaHRTdHlsZXMyKGNzcyk7XG4gIH0pO1xuICBjb25zdCBnZXRQYW5lbER5bmFtaWNTdHlsZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgY29sb3JzXG4gICAgfSA9IHRva2VucztcbiAgICBjb25zdCB0MiA9IChsaWdodCwgZGFyaykgPT4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrIDogbGlnaHQ7XG4gICAgaWYgKHBhbmVsV2lkdGgoKSA8IHNlY29uZEJyZWFrcG9pbnQpIHtcbiAgICAgIHJldHVybiBjc3NgXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmdyYXlbNjAwXSl9O1xuICAgICAgYDtcbiAgICB9XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs5MDBdKX07XG4gICAgYDtcbiAgfTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB3aW4gPSBwaXAoKS5waXBXaW5kb3c7XG4gICAgY29uc3QgcmVzaXplQ0IgPSAoKSA9PiB7XG4gICAgICBpZiAoIXdpbikgcmV0dXJuO1xuICAgICAgc2V0UGFuZWxXaWR0aCh3aW4uaW5uZXJXaWR0aCk7XG4gICAgfTtcbiAgICBpZiAod2luKSB7XG4gICAgICB3aW4uYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCByZXNpemVDQik7XG4gICAgICByZXNpemVDQigpO1xuICAgIH1cbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgaWYgKHdpbikge1xuICAgICAgICB3aW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCByZXNpemVDQik7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJDUgPSBfdG1wbCQyNygpO1xuICAgIF9lbCQ1LnN0eWxlLnNldFByb3BlcnR5KFwiLS10c3FkLWZvbnQtc2l6ZVwiLCBcIjE2cHhcIik7XG4gICAgX2VsJDUuc3R5bGUuc2V0UHJvcGVydHkoXCJtYXgtaGVpZ2h0XCIsIFwiMTAwdmhcIik7XG4gICAgX2VsJDUuc3R5bGUuc2V0UHJvcGVydHkoXCJoZWlnaHRcIiwgXCIxMDB2aFwiKTtcbiAgICBfZWwkNS5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIFwiMTAwdndcIik7XG4gICAgaW5zZXJ0KF9lbCQ1LCAoKSA9PiBwcm9wcy5jaGlsZHJlbik7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkNSwgY2xzeChzdHlsZXMoKS5wYW5lbCwgZ2V0UGFuZWxEeW5hbWljU3R5bGVzKCksIHtcbiAgICAgIFtjc3NgXG4gICAgICAgICAgICBtaW4td2lkdGg6IG1pbi1jb250ZW50O1xuICAgICAgICAgIGBdOiBwYW5lbFdpZHRoKCkgPCB0aGlyZEJyZWFrcG9pbnRcbiAgICB9LCBcInRzcWQtbWFpbi1wYW5lbFwiKSkpO1xuICAgIHJldHVybiBfZWwkNTtcbiAgfSkoKTtcbn07XG52YXIgUGFyZW50UGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMyKGNzcykgOiBsaWdodFN0eWxlczIoY3NzKTtcbiAgfSk7XG4gIGxldCBwYW5lbFJlZjtcbiAgb25Nb3VudCgoKSA9PiB7XG4gICAgY3JlYXRlUmVzaXplT2JzZXJ2ZXIocGFuZWxSZWYsICh7XG4gICAgICB3aWR0aFxuICAgIH0sIGVsKSA9PiB7XG4gICAgICBpZiAoZWwgPT09IHBhbmVsUmVmKSB7XG4gICAgICAgIHNldFBhbmVsV2lkdGgod2lkdGgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgZ2V0UGFuZWxEeW5hbWljU3R5bGVzID0gKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGNvbG9yc1xuICAgIH0gPSB0b2tlbnM7XG4gICAgY29uc3QgdDIgPSAobGlnaHQsIGRhcmspID0+IHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFyayA6IGxpZ2h0O1xuICAgIGlmIChwYW5lbFdpZHRoKCkgPCBzZWNvbmRCcmVha3BvaW50KSB7XG4gICAgICByZXR1cm4gY3NzYFxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5ncmF5WzYwMF0pfTtcbiAgICAgIGA7XG4gICAgfVxuICAgIHJldHVybiBjc3NgXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbOTAwXSl9O1xuICAgIGA7XG4gIH07XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkNiA9IF90bXBsJDI3KCk7XG4gICAgdmFyIF9yZWYkMiA9IHBhbmVsUmVmO1xuICAgIHR5cGVvZiBfcmVmJDIgPT09IFwiZnVuY3Rpb25cIiA/IHVzZShfcmVmJDIsIF9lbCQ2KSA6IHBhbmVsUmVmID0gX2VsJDY7XG4gICAgX2VsJDYuc3R5bGUuc2V0UHJvcGVydHkoXCItLXRzcWQtZm9udC1zaXplXCIsIFwiMTZweFwiKTtcbiAgICBpbnNlcnQoX2VsJDYsICgpID0+IHByb3BzLmNoaWxkcmVuKTtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQ2LCBjbHN4KHN0eWxlcygpLnBhcmVudFBhbmVsLCBnZXRQYW5lbER5bmFtaWNTdHlsZXMoKSwge1xuICAgICAgW2Nzc2BcbiAgICAgICAgICAgIG1pbi13aWR0aDogbWluLWNvbnRlbnQ7XG4gICAgICAgICAgYF06IHBhbmVsV2lkdGgoKSA8IHRoaXJkQnJlYWtwb2ludFxuICAgIH0sIFwidHNxZC1tYWluLXBhbmVsXCIpKSk7XG4gICAgcmV0dXJuIF9lbCQ2O1xuICB9KSgpO1xufTtcbnZhciBEcmFnZ2FibGVQYW5lbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGNzcyA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0ID8gdS5iaW5kKHtcbiAgICB0YXJnZXQ6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0XG4gIH0pIDogdTtcbiAgY29uc3Qgc3R5bGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFya1N0eWxlczIoY3NzKSA6IGxpZ2h0U3R5bGVzMihjc3MpO1xuICB9KTtcbiAgY29uc3QgW2lzUmVzaXppbmcsIHNldElzUmVzaXppbmddID0gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbiAgY29uc3QgcG9zaXRpb24gPSBjcmVhdGVNZW1vKCgpID0+IHByb3BzLmxvY2FsU3RvcmUucG9zaXRpb24gfHwgdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5wb3NpdGlvbiB8fCBQT1NJVElPTik7XG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHBhbmVsRWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudDtcbiAgICBpZiAoIXBhbmVsRWxlbWVudCkgcmV0dXJuO1xuICAgIHNldElzUmVzaXppbmcodHJ1ZSk7XG4gICAgY29uc3Qge1xuICAgICAgaGVpZ2h0LFxuICAgICAgd2lkdGhcbiAgICB9ID0gcGFuZWxFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgY29uc3Qgc3RhcnRZID0gZXZlbnQuY2xpZW50WTtcbiAgICBsZXQgbmV3U2l6ZSA9IDA7XG4gICAgY29uc3QgbWluSGVpZ2h0ID0gY29udmVydFJlbVRvUGl4ZWxzKDMuNSk7XG4gICAgY29uc3QgbWluV2lkdGggPSBjb252ZXJ0UmVtVG9QaXhlbHMoMTIpO1xuICAgIGNvbnN0IHJ1bkRyYWcgPSAobW92ZUV2ZW50KSA9PiB7XG4gICAgICBtb3ZlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChwb3NpdGlvbigpID09PSBcImxlZnRcIiB8fCBwb3NpdGlvbigpID09PSBcInJpZ2h0XCIpIHtcbiAgICAgICAgY29uc3QgdmFsVG9BZGQgPSBwb3NpdGlvbigpID09PSBcInJpZ2h0XCIgPyBzdGFydFggLSBtb3ZlRXZlbnQuY2xpZW50WCA6IG1vdmVFdmVudC5jbGllbnRYIC0gc3RhcnRYO1xuICAgICAgICBuZXdTaXplID0gTWF0aC5yb3VuZCh3aWR0aCArIHZhbFRvQWRkKTtcbiAgICAgICAgaWYgKG5ld1NpemUgPCBtaW5XaWR0aCkge1xuICAgICAgICAgIG5ld1NpemUgPSBtaW5XaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBwcm9wcy5zZXRMb2NhbFN0b3JlKFwid2lkdGhcIiwgU3RyaW5nKE1hdGgucm91bmQobmV3U2l6ZSkpKTtcbiAgICAgICAgY29uc3QgbmV3V2lkdGggPSBwYW5lbEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGlmIChOdW1iZXIocHJvcHMubG9jYWxTdG9yZS53aWR0aCkgPCBuZXdXaWR0aCkge1xuICAgICAgICAgIHByb3BzLnNldExvY2FsU3RvcmUoXCJ3aWR0aFwiLCBTdHJpbmcobmV3V2lkdGgpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsVG9BZGQgPSBwb3NpdGlvbigpID09PSBcImJvdHRvbVwiID8gc3RhcnRZIC0gbW92ZUV2ZW50LmNsaWVudFkgOiBtb3ZlRXZlbnQuY2xpZW50WSAtIHN0YXJ0WTtcbiAgICAgICAgbmV3U2l6ZSA9IE1hdGgucm91bmQoaGVpZ2h0ICsgdmFsVG9BZGQpO1xuICAgICAgICBpZiAobmV3U2l6ZSA8IG1pbkhlaWdodCkge1xuICAgICAgICAgIG5ld1NpemUgPSBtaW5IZWlnaHQ7XG4gICAgICAgICAgc2V0U2VsZWN0ZWRRdWVyeUhhc2gobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcImhlaWdodFwiLCBTdHJpbmcoTWF0aC5yb3VuZChuZXdTaXplKSkpO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSAoKSA9PiB7XG4gICAgICBpZiAoaXNSZXNpemluZygpKSB7XG4gICAgICAgIHNldElzUmVzaXppbmcoZmFsc2UpO1xuICAgICAgfVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBydW5EcmFnLCBmYWxzZSk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2VVcFwiLCB1bnN1YnNjcmliZSwgZmFsc2UpO1xuICAgIH07XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBydW5EcmFnLCBmYWxzZSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdW5zdWJzY3JpYmUsIGZhbHNlKTtcbiAgfTtcbiAgbGV0IHBhbmVsUmVmO1xuICBvbk1vdW50KCgpID0+IHtcbiAgICBjcmVhdGVSZXNpemVPYnNlcnZlcihwYW5lbFJlZiwgKHtcbiAgICAgIHdpZHRoXG4gICAgfSwgZWwpID0+IHtcbiAgICAgIGlmIChlbCA9PT0gcGFuZWxSZWYpIHtcbiAgICAgICAgc2V0UGFuZWxXaWR0aCh3aWR0aCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJvb3RDb250YWluZXIgPSBwYW5lbFJlZi5wYXJlbnRFbGVtZW50Py5wYXJlbnRFbGVtZW50Py5wYXJlbnRFbGVtZW50O1xuICAgIGlmICghcm9vdENvbnRhaW5lcikgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnRQb3NpdGlvbiA9IHByb3BzLmxvY2FsU3RvcmUucG9zaXRpb24gfHwgUE9TSVRJT047XG4gICAgY29uc3Qgc3R5bGVQcm9wID0gZ2V0U2lkZWRQcm9wKFwicGFkZGluZ1wiLCBjdXJyZW50UG9zaXRpb24pO1xuICAgIGNvbnN0IGlzVmVydGljYWwgPSBwcm9wcy5sb2NhbFN0b3JlLnBvc2l0aW9uID09PSBcImxlZnRcIiB8fCBwcm9wcy5sb2NhbFN0b3JlLnBvc2l0aW9uID09PSBcInJpZ2h0XCI7XG4gICAgY29uc3QgcHJldmlvdXNQYWRkaW5ncyA9ICgoe1xuICAgICAgcGFkZGluZyxcbiAgICAgIHBhZGRpbmdUb3AsXG4gICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICBwYWRkaW5nUmlnaHRcbiAgICB9KSA9PiAoe1xuICAgICAgcGFkZGluZyxcbiAgICAgIHBhZGRpbmdUb3AsXG4gICAgICBwYWRkaW5nQm90dG9tLFxuICAgICAgcGFkZGluZ0xlZnQsXG4gICAgICBwYWRkaW5nUmlnaHRcbiAgICB9KSkocm9vdENvbnRhaW5lci5zdHlsZSk7XG4gICAgcm9vdENvbnRhaW5lci5zdHlsZVtzdHlsZVByb3BdID0gYCR7aXNWZXJ0aWNhbCA/IHByb3BzLmxvY2FsU3RvcmUud2lkdGggOiBwcm9wcy5sb2NhbFN0b3JlLmhlaWdodH1weGA7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHByZXZpb3VzUGFkZGluZ3MpLmZvckVhY2goKFtwcm9wZXJ0eSwgcHJldmlvdXNWYWx1ZV0pID0+IHtcbiAgICAgICAgcm9vdENvbnRhaW5lci5zdHlsZVtwcm9wZXJ0eV0gPSBwcmV2aW91c1ZhbHVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBnZXRQYW5lbER5bmFtaWNTdHlsZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgY29sb3JzXG4gICAgfSA9IHRva2VucztcbiAgICBjb25zdCB0MiA9IChsaWdodCwgZGFyaykgPT4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrIDogbGlnaHQ7XG4gICAgaWYgKHBhbmVsV2lkdGgoKSA8IHNlY29uZEJyZWFrcG9pbnQpIHtcbiAgICAgIHJldHVybiBjc3NgXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmdyYXlbNjAwXSl9O1xuICAgICAgYDtcbiAgICB9XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs5MDBdKX07XG4gICAgYDtcbiAgfTtcbiAgcmV0dXJuICgoKSA9PiB7XG4gICAgdmFyIF9lbCQ3ID0gX3RtcGwkMzMoKSwgX2VsJDggPSBfZWwkNy5maXJzdENoaWxkLCBfZWwkOSA9IF9lbCQ4Lm5leHRTaWJsaW5nO1xuICAgIHZhciBfcmVmJDMgPSBwYW5lbFJlZjtcbiAgICB0eXBlb2YgX3JlZiQzID09PSBcImZ1bmN0aW9uXCIgPyB1c2UoX3JlZiQzLCBfZWwkNykgOiBwYW5lbFJlZiA9IF9lbCQ3O1xuICAgIF9lbCQ4LiQkbW91c2Vkb3duID0gaGFuZGxlRHJhZ1N0YXJ0O1xuICAgIF9lbCQ5LiQkY2xpY2sgPSAoKSA9PiBwcm9wcy5zZXRMb2NhbFN0b3JlKFwib3BlblwiLCBcImZhbHNlXCIpO1xuICAgIGluc2VydChfZWwkOSwgY3JlYXRlQ29tcG9uZW50KENoZXZyb25Eb3duLCB7fSkpO1xuICAgIGluc2VydChfZWwkNywgY3JlYXRlQ29tcG9uZW50KENvbnRlbnRWaWV3LCBwcm9wcyksIG51bGwpO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICB2YXIgX3YkID0gY2xzeChzdHlsZXMoKS5wYW5lbCwgc3R5bGVzKClbYHBhbmVsLXBvc2l0aW9uLSR7cG9zaXRpb24oKX1gXSwgZ2V0UGFuZWxEeW5hbWljU3R5bGVzKCksIHtcbiAgICAgICAgW2Nzc2BcbiAgICAgICAgICAgIG1pbi13aWR0aDogbWluLWNvbnRlbnQ7XG4gICAgICAgICAgYF06IHBhbmVsV2lkdGgoKSA8IHRoaXJkQnJlYWtwb2ludCAmJiAocG9zaXRpb24oKSA9PT0gXCJyaWdodFwiIHx8IHBvc2l0aW9uKCkgPT09IFwibGVmdFwiKVxuICAgICAgfSwgXCJ0c3FkLW1haW4tcGFuZWxcIiksIF92JDIgPSBwb3NpdGlvbigpID09PSBcImJvdHRvbVwiIHx8IHBvc2l0aW9uKCkgPT09IFwidG9wXCIgPyBgJHtwcm9wcy5sb2NhbFN0b3JlLmhlaWdodCB8fCBERUZBVUxUX0hFSUdIVH1weGAgOiBcImF1dG9cIiwgX3YkMyA9IHBvc2l0aW9uKCkgPT09IFwicmlnaHRcIiB8fCBwb3NpdGlvbigpID09PSBcImxlZnRcIiA/IGAke3Byb3BzLmxvY2FsU3RvcmUud2lkdGggfHwgREVGQVVMVF9XSURUSH1weGAgOiBcImF1dG9cIiwgX3YkNCA9IGNsc3goc3R5bGVzKCkuZHJhZ0hhbmRsZSwgc3R5bGVzKClbYGRyYWdIYW5kbGUtcG9zaXRpb24tJHtwb3NpdGlvbigpfWBdLCBcInRzcWQtZHJhZy1oYW5kbGVcIiksIF92JDUgPSBjbHN4KHN0eWxlcygpLmNsb3NlQnRuLCBzdHlsZXMoKVtgY2xvc2VCdG4tcG9zaXRpb24tJHtwb3NpdGlvbigpfWBdLCBcInRzcWQtbWluaW1pemUtYnRuXCIpO1xuICAgICAgX3YkICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDcsIF9wJC5lID0gX3YkKTtcbiAgICAgIF92JDIgIT09IF9wJC50ICYmICgoX3AkLnQgPSBfdiQyKSAhPSBudWxsID8gX2VsJDcuc3R5bGUuc2V0UHJvcGVydHkoXCJoZWlnaHRcIiwgX3YkMikgOiBfZWwkNy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcImhlaWdodFwiKSk7XG4gICAgICBfdiQzICE9PSBfcCQuYSAmJiAoKF9wJC5hID0gX3YkMykgIT0gbnVsbCA/IF9lbCQ3LnN0eWxlLnNldFByb3BlcnR5KFwid2lkdGhcIiwgX3YkMykgOiBfZWwkNy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcIndpZHRoXCIpKTtcbiAgICAgIF92JDQgIT09IF9wJC5vICYmIGNsYXNzTmFtZShfZWwkOCwgX3AkLm8gPSBfdiQ0KTtcbiAgICAgIF92JDUgIT09IF9wJC5pICYmIGNsYXNzTmFtZShfZWwkOSwgX3AkLmkgPSBfdiQ1KTtcbiAgICAgIHJldHVybiBfcCQ7XG4gICAgfSwge1xuICAgICAgZTogdm9pZCAwLFxuICAgICAgdDogdm9pZCAwLFxuICAgICAgYTogdm9pZCAwLFxuICAgICAgbzogdm9pZCAwLFxuICAgICAgaTogdm9pZCAwXG4gICAgfSk7XG4gICAgcmV0dXJuIF9lbCQ3O1xuICB9KSgpO1xufTtcbnZhciBDb250ZW50VmlldyA9IChwcm9wcykgPT4ge1xuICBzZXR1cFF1ZXJ5Q2FjaGVTdWJzY3JpcHRpb24oKTtcbiAgc2V0dXBNdXRhdGlvbkNhY2hlU3Vic2NyaXB0aW9uKCk7XG4gIGxldCBjb250YWluZXJSZWY7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzMihjc3MpIDogbGlnaHRTdHlsZXMyKGNzcyk7XG4gIH0pO1xuICBjb25zdCBwaXAgPSB1c2VQaVBXaW5kb3coKTtcbiAgY29uc3QgW3NlbGVjdGVkVmlldywgc2V0U2VsZWN0ZWRWaWV3XSA9IGNyZWF0ZVNpZ25hbChcInF1ZXJpZXNcIik7XG4gIGNvbnN0IHNvcnQgPSBjcmVhdGVNZW1vKCgpID0+IHByb3BzLmxvY2FsU3RvcmUuc29ydCB8fCBERUZBVUxUX1NPUlRfRk5fTkFNRSk7XG4gIGNvbnN0IHNvcnRPcmRlciA9IGNyZWF0ZU1lbW8oKCkgPT4gTnVtYmVyKHByb3BzLmxvY2FsU3RvcmUuc29ydE9yZGVyKSB8fCBERUZBVUxUX1NPUlRfT1JERVIpO1xuICBjb25zdCBtdXRhdGlvblNvcnQgPSBjcmVhdGVNZW1vKCgpID0+IHByb3BzLmxvY2FsU3RvcmUubXV0YXRpb25Tb3J0IHx8IERFRkFVTFRfTVVUQVRJT05fU09SVF9GTl9OQU1FKTtcbiAgY29uc3QgbXV0YXRpb25Tb3J0T3JkZXIgPSBjcmVhdGVNZW1vKCgpID0+IE51bWJlcihwcm9wcy5sb2NhbFN0b3JlLm11dGF0aW9uU29ydE9yZGVyKSB8fCBERUZBVUxUX1NPUlRfT1JERVIpO1xuICBjb25zdCBzb3J0Rm4gPSBjcmVhdGVNZW1vKCgpID0+IHNvcnRGbnNbc29ydCgpXSk7XG4gIGNvbnN0IG11dGF0aW9uU29ydEZuID0gY3JlYXRlTWVtbygoKSA9PiBtdXRhdGlvblNvcnRGbnNbbXV0YXRpb25Tb3J0KCldKTtcbiAgY29uc3Qgb25saW5lTWFuYWdlciA9IGNyZWF0ZU1lbW8oKCkgPT4gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5vbmxpbmVNYW5hZ2VyKTtcbiAgY29uc3QgcXVlcnlfY2FjaGUgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5jbGllbnQuZ2V0UXVlcnlDYWNoZSgpO1xuICB9KTtcbiAgY29uc3QgbXV0YXRpb25fY2FjaGUgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5jbGllbnQuZ2V0TXV0YXRpb25DYWNoZSgpO1xuICB9KTtcbiAgY29uc3QgcXVlcnlDb3VudCA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHtcbiAgICByZXR1cm4gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmxlbmd0aDtcbiAgfSwgZmFsc2UpO1xuICBjb25zdCBxdWVyaWVzID0gY3JlYXRlTWVtbyhvbigoKSA9PiBbcXVlcnlDb3VudCgpLCBwcm9wcy5sb2NhbFN0b3JlLmZpbHRlciwgc29ydCgpLCBzb3J0T3JkZXIoKV0sICgpID0+IHtcbiAgICBjb25zdCBjdXJyID0gcXVlcnlfY2FjaGUoKS5nZXRBbGwoKTtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IHByb3BzLmxvY2FsU3RvcmUuZmlsdGVyID8gY3Vyci5maWx0ZXIoKGl0ZW0pID0+IHJhbmtJdGVtKGl0ZW0ucXVlcnlIYXNoLCBwcm9wcy5sb2NhbFN0b3JlLmZpbHRlciB8fCBcIlwiKS5wYXNzZWQpIDogWy4uLmN1cnJdO1xuICAgIGNvbnN0IHNvcnRlZCA9IHNvcnRGbigpID8gZmlsdGVyZWQuc29ydCgoYTIsIGIyKSA9PiBzb3J0Rm4oKShhMiwgYjIpICogc29ydE9yZGVyKCkpIDogZmlsdGVyZWQ7XG4gICAgcmV0dXJuIHNvcnRlZDtcbiAgfSkpO1xuICBjb25zdCBtdXRhdGlvbkNvdW50ID0gY3JlYXRlU3Vic2NyaWJlVG9NdXRhdGlvbkNhY2hlQmF0Y2hlcigobXV0YXRpb25DYWNoZSkgPT4ge1xuICAgIHJldHVybiBtdXRhdGlvbkNhY2hlKCkuZ2V0QWxsKCkubGVuZ3RoO1xuICB9LCBmYWxzZSk7XG4gIGNvbnN0IG11dGF0aW9ucyA9IGNyZWF0ZU1lbW8ob24oKCkgPT4gW211dGF0aW9uQ291bnQoKSwgcHJvcHMubG9jYWxTdG9yZS5tdXRhdGlvbkZpbHRlciwgbXV0YXRpb25Tb3J0KCksIG11dGF0aW9uU29ydE9yZGVyKCldLCAoKSA9PiB7XG4gICAgY29uc3QgY3VyciA9IG11dGF0aW9uX2NhY2hlKCkuZ2V0QWxsKCk7XG4gICAgY29uc3QgZmlsdGVyZWQgPSBwcm9wcy5sb2NhbFN0b3JlLm11dGF0aW9uRmlsdGVyID8gY3Vyci5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYCR7aXRlbS5vcHRpb25zLm11dGF0aW9uS2V5ID8gSlNPTi5zdHJpbmdpZnkoaXRlbS5vcHRpb25zLm11dGF0aW9uS2V5KSArIFwiIC0gXCIgOiBcIlwifSR7bmV3IERhdGUoaXRlbS5zdGF0ZS5zdWJtaXR0ZWRBdCkudG9Mb2NhbGVTdHJpbmcoKX1gO1xuICAgICAgcmV0dXJuIHJhbmtJdGVtKHZhbHVlLCBwcm9wcy5sb2NhbFN0b3JlLm11dGF0aW9uRmlsdGVyIHx8IFwiXCIpLnBhc3NlZDtcbiAgICB9KSA6IFsuLi5jdXJyXTtcbiAgICBjb25zdCBzb3J0ZWQgPSBtdXRhdGlvblNvcnRGbigpID8gZmlsdGVyZWQuc29ydCgoYTIsIGIyKSA9PiBtdXRhdGlvblNvcnRGbigpKGEyLCBiMikgKiBtdXRhdGlvblNvcnRPcmRlcigpKSA6IGZpbHRlcmVkO1xuICAgIHJldHVybiBzb3J0ZWQ7XG4gIH0pKTtcbiAgY29uc3Qgc2V0RGV2dG9vbHNQb3NpdGlvbiA9IChwb3MpID0+IHtcbiAgICBwcm9wcy5zZXRMb2NhbFN0b3JlKFwicG9zaXRpb25cIiwgcG9zKTtcbiAgfTtcbiAgY29uc3Qgc2V0Q29tcHV0ZWRWYXJpYWJsZXMgPSAoZWwpID0+IHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXJSZWYpO1xuICAgIGNvbnN0IHZhcmlhYmxlID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS10c3FkLWZvbnQtc2l6ZVwiKTtcbiAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdHNxZC1mb250LXNpemVcIiwgdmFyaWFibGUpO1xuICB9O1xuICByZXR1cm4gWygoKSA9PiB7XG4gICAgdmFyIF9lbCQxMCA9IF90bXBsJDIxMigpLCBfZWwkMTEgPSBfZWwkMTAuZmlyc3RDaGlsZCwgX2VsJDEyID0gX2VsJDExLmZpcnN0Q2hpbGQsIF9lbCQxMyA9IF9lbCQxMi5maXJzdENoaWxkLCBfZWwkMTQgPSBfZWwkMTMuZmlyc3RDaGlsZCwgX2VsJDE1ID0gX2VsJDE0Lm5leHRTaWJsaW5nLCBfZWwkMTYgPSBfZWwkMTUuZmlyc3RDaGlsZCwgX2VsJDE3ID0gX2VsJDExLm5leHRTaWJsaW5nLCBfZWwkMTggPSBfZWwkMTcuZmlyc3RDaGlsZCwgX2VsJDE5ID0gX2VsJDE4LmZpcnN0Q2hpbGQsIF9lbCQyMCA9IF9lbCQxOS5maXJzdENoaWxkLCBfZWwkMjEgPSBfZWwkMTkubmV4dFNpYmxpbmcsIF9lbCQyNCA9IF9lbCQyMS5uZXh0U2libGluZywgX2VsJDI3ID0gX2VsJDE4Lm5leHRTaWJsaW5nLCBfZWwkMjggPSBfZWwkMjcuZmlyc3RDaGlsZCwgX2VsJDI5ID0gX2VsJDI4Lm5leHRTaWJsaW5nO1xuICAgIHZhciBfcmVmJDQgPSBjb250YWluZXJSZWY7XG4gICAgdHlwZW9mIF9yZWYkNCA9PT0gXCJmdW5jdGlvblwiID8gdXNlKF9yZWYkNCwgX2VsJDEwKSA6IGNvbnRhaW5lclJlZiA9IF9lbCQxMDtcbiAgICBfZWwkMTMuJCRjbGljayA9ICgpID0+IHtcbiAgICAgIGlmICghcGlwKCkucGlwV2luZG93ICYmICFwcm9wcy5zaG93UGFuZWxWaWV3T25seSkge1xuICAgICAgICBwcm9wcy5zZXRMb2NhbFN0b3JlKFwib3BlblwiLCBcImZhbHNlXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMub25DbG9zZSkge1xuICAgICAgICBwcm9wcy5vbkNsb3NlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBpbnNlcnQoX2VsJDE1LCAoKSA9PiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnF1ZXJ5Rmxhdm9yLCBfZWwkMTYpO1xuICAgIGluc2VydChfZWwkMTUsICgpID0+IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkudmVyc2lvbiwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQxMiwgY3JlYXRlQ29tcG9uZW50KHJhZGlvX2dyb3VwX2V4cG9ydHMuUm9vdCwge1xuICAgICAgZ2V0IFtcImNsYXNzXCJdKCkge1xuICAgICAgICByZXR1cm4gY2xzeChzdHlsZXMoKS52aWV3VG9nZ2xlKTtcbiAgICAgIH0sXG4gICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFZpZXcoKTtcbiAgICAgIH0sXG4gICAgICBvbkNoYW5nZTogKHZhbHVlKSA9PiB7XG4gICAgICAgIHNldFNlbGVjdGVkVmlldyh2YWx1ZSk7XG4gICAgICAgIHNldFNlbGVjdGVkUXVlcnlIYXNoKG51bGwpO1xuICAgICAgICBzZXRTZWxlY3RlZE11dGF0aW9uSWQobnVsbCk7XG4gICAgICB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICByZXR1cm4gW2NyZWF0ZUNvbXBvbmVudChyYWRpb19ncm91cF9leHBvcnRzLkl0ZW0sIHtcbiAgICAgICAgICB2YWx1ZTogXCJxdWVyaWVzXCIsXG4gICAgICAgICAgXCJjbGFzc1wiOiBcInRzcWQtcmFkaW8tdG9nZ2xlXCIsXG4gICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIFtjcmVhdGVDb21wb25lbnQocmFkaW9fZ3JvdXBfZXhwb3J0cy5JdGVtSW5wdXQsIHt9KSwgY3JlYXRlQ29tcG9uZW50KHJhZGlvX2dyb3VwX2V4cG9ydHMuSXRlbUNvbnRyb2wsIHtcbiAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQocmFkaW9fZ3JvdXBfZXhwb3J0cy5JdGVtSW5kaWNhdG9yLCB7fSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQocmFkaW9fZ3JvdXBfZXhwb3J0cy5JdGVtTGFiZWwsIHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiVG9nZ2xlIFF1ZXJpZXMgVmlld1wiLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogXCJRdWVyaWVzXCJcbiAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQocmFkaW9fZ3JvdXBfZXhwb3J0cy5JdGVtLCB7XG4gICAgICAgICAgdmFsdWU6IFwibXV0YXRpb25zXCIsXG4gICAgICAgICAgXCJjbGFzc1wiOiBcInRzcWQtcmFkaW8tdG9nZ2xlXCIsXG4gICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIFtjcmVhdGVDb21wb25lbnQocmFkaW9fZ3JvdXBfZXhwb3J0cy5JdGVtSW5wdXQsIHt9KSwgY3JlYXRlQ29tcG9uZW50KHJhZGlvX2dyb3VwX2V4cG9ydHMuSXRlbUNvbnRyb2wsIHtcbiAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQocmFkaW9fZ3JvdXBfZXhwb3J0cy5JdGVtSW5kaWNhdG9yLCB7fSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQocmFkaW9fZ3JvdXBfZXhwb3J0cy5JdGVtTGFiZWwsIHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiVG9nZ2xlIE11dGF0aW9ucyBWaWV3XCIsXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBcIk11dGF0aW9uc1wiXG4gICAgICAgICAgICB9KV07XG4gICAgICAgICAgfVxuICAgICAgICB9KV07XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkMTEsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkVmlldygpID09PSBcInF1ZXJpZXNcIjtcbiAgICAgIH0sXG4gICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUXVlcnlTdGF0dXNDb3VudCwge30pO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDExLCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFZpZXcoKSA9PT0gXCJtdXRhdGlvbnNcIjtcbiAgICAgIH0sXG4gICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoTXV0YXRpb25TdGF0dXNDb3VudCwge30pO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDE5LCBjcmVhdGVDb21wb25lbnQoU2VhcmNoLCB7fSksIF9lbCQyMCk7XG4gICAgX2VsJDIwLiQkaW5wdXQgPSAoZTIpID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCIpIHtcbiAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcImZpbHRlclwiLCBlMi5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3BzLnNldExvY2FsU3RvcmUoXCJtdXRhdGlvbkZpbHRlclwiLCBlMi5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGluc2VydChfZWwkMjEsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkVmlldygpID09PSBcInF1ZXJpZXNcIjtcbiAgICAgIH0sXG4gICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgIHZhciBfZWwkMjIgPSBfdG1wbCQ0MygpO1xuICAgICAgICBfZWwkMjIuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoZTIpID0+IHtcbiAgICAgICAgICBwcm9wcy5zZXRMb2NhbFN0b3JlKFwic29ydFwiLCBlMi5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGluc2VydChfZWwkMjIsICgpID0+IE9iamVjdC5rZXlzKHNvcnRGbnMpLm1hcCgoa2V5KSA9PiAoKCkgPT4ge1xuICAgICAgICAgIHZhciBfZWwkNDUgPSBfdG1wbCQyMjMoKTsgX2VsJDQ1LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgX2VsJDQ1LnZhbHVlID0ga2V5O1xuICAgICAgICAgIGluc2VydChfZWwkNDUsIGtleSwgbnVsbCk7XG4gICAgICAgICAgcmV0dXJuIF9lbCQ0NTtcbiAgICAgICAgfSkoKSkpO1xuICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gX2VsJDIyLnZhbHVlID0gc29ydCgpKTtcbiAgICAgICAgcmV0dXJuIF9lbCQyMjtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQyMSwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRWaWV3KCkgPT09IFwibXV0YXRpb25zXCI7XG4gICAgICB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICB2YXIgX2VsJDIzID0gX3RtcGwkNTMoKTtcbiAgICAgICAgX2VsJDIzLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgKGUyKSA9PiB7XG4gICAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcIm11dGF0aW9uU29ydFwiLCBlMi5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGluc2VydChfZWwkMjMsICgpID0+IE9iamVjdC5rZXlzKG11dGF0aW9uU29ydEZucykubWFwKChrZXkpID0+ICgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9lbCQ0NyA9IF90bXBsJDIyMygpOyBfZWwkNDcuZmlyc3RDaGlsZDtcbiAgICAgICAgICBfZWwkNDcudmFsdWUgPSBrZXk7XG4gICAgICAgICAgaW5zZXJ0KF9lbCQ0Nywga2V5LCBudWxsKTtcbiAgICAgICAgICByZXR1cm4gX2VsJDQ3O1xuICAgICAgICB9KSgpKSk7XG4gICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBfZWwkMjMudmFsdWUgPSBtdXRhdGlvblNvcnQoKSk7XG4gICAgICAgIHJldHVybiBfZWwkMjM7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkMjEsIGNyZWF0ZUNvbXBvbmVudChDaGV2cm9uRG93biwge30pLCBudWxsKTtcbiAgICBfZWwkMjQuJCRjbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCIpIHtcbiAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcInNvcnRPcmRlclwiLCBTdHJpbmcoc29ydE9yZGVyKCkgKiAtMSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcIm11dGF0aW9uU29ydE9yZGVyXCIsIFN0cmluZyhtdXRhdGlvblNvcnRPcmRlcigpICogLTEpKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGluc2VydChfZWwkMjQsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgcmV0dXJuIChzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCIgPyBzb3J0T3JkZXIoKSA6IG11dGF0aW9uU29ydE9yZGVyKCkpID09PSAxO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgcmV0dXJuIFtfdG1wbCQ2MygpLCBjcmVhdGVDb21wb25lbnQoQXJyb3dVcCwge30pXTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQyNCwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICByZXR1cm4gKHNlbGVjdGVkVmlldygpID09PSBcInF1ZXJpZXNcIiA/IHNvcnRPcmRlcigpIDogbXV0YXRpb25Tb3J0T3JkZXIoKSkgPT09IC0xO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgcmV0dXJuIFtfdG1wbCQ3MygpLCBjcmVhdGVDb21wb25lbnQoQXJyb3dEb3duLCB7fSldO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBfZWwkMjguJCRjbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCIpIHtcbiAgICAgICAgcXVlcnlfY2FjaGUoKS5jbGVhcigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXV0YXRpb25fY2FjaGUoKS5jbGVhcigpO1xuICAgICAgfVxuICAgIH07XG4gICAgaW5zZXJ0KF9lbCQyOCwgY3JlYXRlQ29tcG9uZW50KFRyYXNoLCB7fSkpO1xuICAgIF9lbCQyOS4kJGNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKG9mZmxpbmUoKSkge1xuICAgICAgICBvbmxpbmVNYW5hZ2VyKCkuc2V0T25saW5lKHRydWUpO1xuICAgICAgICBzZXRPZmZsaW5lKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9ubGluZU1hbmFnZXIoKS5zZXRPbmxpbmUoZmFsc2UpO1xuICAgICAgICBzZXRPZmZsaW5lKHRydWUpO1xuICAgICAgfVxuICAgIH07XG4gICAgaW5zZXJ0KF9lbCQyOSwgKCgpID0+IHtcbiAgICAgIHZhciBfYyQgPSBjcmVhdGVNZW1vKCgpID0+ICEhb2ZmbGluZSgpKTtcbiAgICAgIHJldHVybiAoKSA9PiBfYyQoKSA/IGNyZWF0ZUNvbXBvbmVudChPZmZsaW5lLCB7fSkgOiBjcmVhdGVDb21wb25lbnQoV2lmaSwge30pO1xuICAgIH0pKCkpO1xuICAgIGluc2VydChfZWwkMjcsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gISEhcGlwKCkucGlwV2luZG93KSgpICYmICFwaXAoKS5kaXNhYmxlZDtcbiAgICAgIH0sXG4gICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgIHZhciBfZWwkMzAgPSBfdG1wbCQ4MygpO1xuICAgICAgICBfZWwkMzAuJCRjbGljayA9ICgpID0+IHtcbiAgICAgICAgICBwaXAoKS5yZXF1ZXN0UGlwV2luZG93KE51bWJlcih3aW5kb3cuaW5uZXJXaWR0aCksIE51bWJlcihwcm9wcy5sb2NhbFN0b3JlLmhlaWdodCA/PyA1MDApKTtcbiAgICAgICAgfTtcbiAgICAgICAgaW5zZXJ0KF9lbCQzMCwgY3JlYXRlQ29tcG9uZW50KFBpUEljb24sIHt9KSk7XG4gICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDMwLCBjbHN4KHN0eWxlcygpLmFjdGlvbnNCdG4sIFwidHNxZC1hY3Rpb25zLWJ0blwiLCBcInRzcWQtYWN0aW9uLW9wZW4tcGlwXCIpKSk7XG4gICAgICAgIHJldHVybiBfZWwkMzA7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkMjcsIGNyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuUm9vdCwge1xuICAgICAgZ3V0dGVyOiA0LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICByZXR1cm4gW2NyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuVHJpZ2dlciwge1xuICAgICAgICAgIGdldCBbXCJjbGFzc1wiXSgpIHtcbiAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLmFjdGlvbnNCdG4sIFwidHNxZC1hY3Rpb25zLWJ0blwiLCBcInRzcWQtYWN0aW9uLXNldHRpbmdzXCIpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTZXR0aW5ncywge30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksIGNyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuUG9ydGFsLCB7XG4gICAgICAgICAgcmVmOiAoZWwpID0+IHNldENvbXB1dGVkVmFyaWFibGVzKGVsKSxcbiAgICAgICAgICBnZXQgbW91bnQoKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiAhIXBpcCgpLnBpcFdpbmRvdykoKSA/IHBpcCgpLnBpcFdpbmRvdy5kb2N1bWVudC5ib2R5IDogZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLkNvbnRlbnQsIHtcbiAgICAgICAgICAgICAgZ2V0IFtcImNsYXNzXCJdKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnNldHRpbmdzTWVudSwgXCJ0c3FkLXNldHRpbmdzLW1lbnVcIik7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB2YXIgX2VsJDMxID0gX3RtcGwkOTMoKTtcbiAgICAgICAgICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDMxLCBjbHN4KHN0eWxlcygpLnNldHRpbmdzTWVudUhlYWRlciwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtaGVhZGVyXCIpKSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX2VsJDMxO1xuICAgICAgICAgICAgICAgIH0pKCksIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFwcm9wcy5zaG93UGFuZWxWaWV3T25seTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlN1Yiwge1xuICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXA6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgZ3V0dGVyOiA4LFxuICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0OiAtNCxcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2NyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuU3ViVHJpZ2dlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsc3goc3R5bGVzKCkuc2V0dGluZ3NTdWJUcmlnZ2VyLCBcInRzcWQtc2V0dGluZ3MtbWVudS1zdWItdHJpZ2dlclwiLCBcInRzcWQtc2V0dGluZ3MtbWVudS1zdWItdHJpZ2dlci1wb3NpdGlvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbX3RtcGwkMTAzKCksIGNyZWF0ZUNvbXBvbmVudChDaGV2cm9uRG93biwge30pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksIGNyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuUG9ydGFsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogKGVsKSA9PiBzZXRDb21wdXRlZFZhcmlhYmxlcyhlbCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBtb3VudCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiAhIXBpcCgpLnBpcFdpbmRvdykoKSA/IHBpcCgpLnBpcFdpbmRvdy5kb2N1bWVudC5ib2R5IDogZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlN1YkNvbnRlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBbXCJjbGFzc1wiXSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsc3goc3R5bGVzKCkuc2V0dGluZ3NNZW51LCBcInRzcWQtc2V0dGluZ3Mtc3VibWVudVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5JdGVtLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERldnRvb2xzUG9zaXRpb24oXCJ0b3BcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xzeChzdHlsZXMoKS5zZXR0aW5nc1N1YkJ1dHRvbiwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtcG9zaXRpb24tYnRuXCIsIFwidHNxZC1zZXR0aW5ncy1tZW51LXBvc2l0aW9uLWJ0bi10b3BcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW190bXBsJDExMygpLCBjcmVhdGVDb21wb25lbnQoQXJyb3dVcCwge30pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLkl0ZW0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGV2dG9vbHNQb3NpdGlvbihcImJvdHRvbVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBbXCJjbGFzc1wiXSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnNldHRpbmdzU3ViQnV0dG9uLCBcInRzcWQtc2V0dGluZ3MtbWVudS1wb3NpdGlvbi1idG5cIiwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtcG9zaXRpb24tYnRuLWJvdHRvbVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbX3RtcGwkMTIzKCksIGNyZWF0ZUNvbXBvbmVudChBcnJvd0Rvd24sIHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5JdGVtLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERldnRvb2xzUG9zaXRpb24oXCJsZWZ0XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IFtcImNsYXNzXCJdKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsc3goc3R5bGVzKCkuc2V0dGluZ3NTdWJCdXR0b24sIFwidHNxZC1zZXR0aW5ncy1tZW51LXBvc2l0aW9uLWJ0blwiLCBcInRzcWQtc2V0dGluZ3MtbWVudS1wb3NpdGlvbi1idG4tbGVmdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbX3RtcGwkMTMyKCksIGNyZWF0ZUNvbXBvbmVudChBcnJvd0xlZnQsIHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5JdGVtLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERldnRvb2xzUG9zaXRpb24oXCJyaWdodFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBbXCJjbGFzc1wiXSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnNldHRpbmdzU3ViQnV0dG9uLCBcInRzcWQtc2V0dGluZ3MtbWVudS1wb3NpdGlvbi1idG5cIiwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtcG9zaXRpb24tYnRuLXJpZ2h0XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtfdG1wbCQxNDIoKSwgY3JlYXRlQ29tcG9uZW50KEFycm93UmlnaHQsIHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlN1Yiwge1xuICAgICAgICAgICAgICAgICAgb3ZlcmxhcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGd1dHRlcjogOCxcbiAgICAgICAgICAgICAgICAgIHNoaWZ0OiAtNCxcbiAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlN1YlRyaWdnZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xzeChzdHlsZXMoKS5zZXR0aW5nc1N1YlRyaWdnZXIsIFwidHNxZC1zZXR0aW5ncy1tZW51LXN1Yi10cmlnZ2VyXCIsIFwidHNxZC1zZXR0aW5ncy1tZW51LXN1Yi10cmlnZ2VyLXBvc2l0aW9uXCIpO1xuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtfdG1wbCQxNTIoKSwgY3JlYXRlQ29tcG9uZW50KENoZXZyb25Eb3duLCB7fSldO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksIGNyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuUG9ydGFsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVmOiAoZWwpID0+IHNldENvbXB1dGVkVmFyaWFibGVzKGVsKSxcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgbW91bnQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiAhIXBpcCgpLnBpcFdpbmRvdykoKSA/IHBpcCgpLnBpcFdpbmRvdy5kb2N1bWVudC5ib2R5IDogZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlN1YkNvbnRlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IFtcImNsYXNzXCJdKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnNldHRpbmdzTWVudSwgXCJ0c3FkLXNldHRpbmdzLXN1Ym1lbnVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2NyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuSXRlbSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcInRoZW1lX3ByZWZlcmVuY2VcIiwgXCJsaWdodFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBbXCJjbGFzc1wiXSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsc3goc3R5bGVzKCkuc2V0dGluZ3NTdWJCdXR0b24sIHByb3BzLmxvY2FsU3RvcmUudGhlbWVfcHJlZmVyZW5jZSA9PT0gXCJsaWdodFwiICYmIHN0eWxlcygpLnRoZW1lU2VsZWN0ZWRCdXR0b24sIFwidHNxZC1zZXR0aW5ncy1tZW51LXBvc2l0aW9uLWJ0blwiLCBcInRzcWQtc2V0dGluZ3MtbWVudS1wb3NpdGlvbi1idG4tdG9wXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtfdG1wbCQxNjIoKSwgY3JlYXRlQ29tcG9uZW50KFN1biwge30pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5JdGVtLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5zZXRMb2NhbFN0b3JlKFwidGhlbWVfcHJlZmVyZW5jZVwiLCBcImRhcmtcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnNldHRpbmdzU3ViQnV0dG9uLCBwcm9wcy5sb2NhbFN0b3JlLnRoZW1lX3ByZWZlcmVuY2UgPT09IFwiZGFya1wiICYmIHN0eWxlcygpLnRoZW1lU2VsZWN0ZWRCdXR0b24sIFwidHNxZC1zZXR0aW5ncy1tZW51LXBvc2l0aW9uLWJ0blwiLCBcInRzcWQtc2V0dGluZ3MtbWVudS1wb3NpdGlvbi1idG4tYm90dG9tXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtfdG1wbCQxNzIoKSwgY3JlYXRlQ29tcG9uZW50KE1vb24sIHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGNyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuSXRlbSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcInRoZW1lX3ByZWZlcmVuY2VcIiwgXCJzeXN0ZW1cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnNldHRpbmdzU3ViQnV0dG9uLCBwcm9wcy5sb2NhbFN0b3JlLnRoZW1lX3ByZWZlcmVuY2UgPT09IFwic3lzdGVtXCIgJiYgc3R5bGVzKCkudGhlbWVTZWxlY3RlZEJ1dHRvbiwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtcG9zaXRpb24tYnRuXCIsIFwidHNxZC1zZXR0aW5ncy1tZW51LXBvc2l0aW9uLWJ0bi1sZWZ0XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtfdG1wbCQxODIoKSwgY3JlYXRlQ29tcG9uZW50KE1vbml0b3IsIHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSldO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDEwLCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCI7XG4gICAgICB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICB2YXIgX2VsJDQxID0gX3RtcGwkMTkyKCksIF9lbCQ0MiA9IF9lbCQ0MS5maXJzdENoaWxkO1xuICAgICAgICBpbnNlcnQoX2VsJDQyLCBjcmVhdGVDb21wb25lbnQoS2V5LCB7XG4gICAgICAgICAgYnk6IChxKSA9PiBxLnF1ZXJ5SGFzaCxcbiAgICAgICAgICBnZXQgZWFjaCgpIHtcbiAgICAgICAgICAgIHJldHVybiBxdWVyaWVzKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGlsZHJlbjogKHF1ZXJ5KSA9PiBjcmVhdGVDb21wb25lbnQoUXVlcnlSb3csIHtcbiAgICAgICAgICAgIGdldCBxdWVyeSgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSkpO1xuICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQ0MSwgY2xzeChzdHlsZXMoKS5vdmVyZmxvd1F1ZXJ5Q29udGFpbmVyLCBcInRzcWQtcXVlcmllcy1vdmVyZmxvdy1jb250YWluZXJcIikpKTtcbiAgICAgICAgcmV0dXJuIF9lbCQ0MTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQxMCwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRWaWV3KCkgPT09IFwibXV0YXRpb25zXCI7XG4gICAgICB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICB2YXIgX2VsJDQzID0gX3RtcGwkMjAyKCksIF9lbCQ0NCA9IF9lbCQ0My5maXJzdENoaWxkO1xuICAgICAgICBpbnNlcnQoX2VsJDQ0LCBjcmVhdGVDb21wb25lbnQoS2V5LCB7XG4gICAgICAgICAgYnk6IChtKSA9PiBtLm11dGF0aW9uSWQsXG4gICAgICAgICAgZ2V0IGVhY2goKSB7XG4gICAgICAgICAgICByZXR1cm4gbXV0YXRpb25zKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGlsZHJlbjogKG11dGF0aW9uKSA9PiBjcmVhdGVDb21wb25lbnQoTXV0YXRpb25Sb3csIHtcbiAgICAgICAgICAgIGdldCBtdXRhdGlvbigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG11dGF0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSkpO1xuICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQ0MywgY2xzeChzdHlsZXMoKS5vdmVyZmxvd1F1ZXJ5Q29udGFpbmVyLCBcInRzcWQtbXV0YXRpb25zLW92ZXJmbG93LWNvbnRhaW5lclwiKSkpO1xuICAgICAgICByZXR1cm4gX2VsJDQzO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKF9wJCkgPT4ge1xuICAgICAgdmFyIF92JDYgPSBjbHN4KHN0eWxlcygpLnF1ZXJpZXNDb250YWluZXIsIHBhbmVsV2lkdGgoKSA8IHNlY29uZEJyZWFrcG9pbnQgJiYgKHNlbGVjdGVkUXVlcnlIYXNoKCkgfHwgc2VsZWN0ZWRNdXRhdGlvbklkKCkpICYmIGNzc2BcbiAgICAgICAgICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDUwJTtcbiAgICAgICAgICAgIGAsIHBhbmVsV2lkdGgoKSA8IHNlY29uZEJyZWFrcG9pbnQgJiYgIShzZWxlY3RlZFF1ZXJ5SGFzaCgpIHx8IHNlbGVjdGVkTXV0YXRpb25JZCgpKSAmJiBjc3NgXG4gICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIGAsIFwidHNxZC1xdWVyaWVzLWNvbnRhaW5lclwiKSwgX3YkNyA9IGNsc3goc3R5bGVzKCkucm93LCBcInRzcWQtaGVhZGVyXCIpLCBfdiQ4ID0gc3R5bGVzKCkubG9nb0FuZFRvZ2dsZUNvbnRhaW5lciwgX3YkOSA9IGNsc3goc3R5bGVzKCkubG9nbywgXCJ0c3FkLXRleHQtbG9nby1jb250YWluZXJcIiksIF92JDEwID0gY2xzeChzdHlsZXMoKS50YW5zdGFja0xvZ28sIFwidHNxZC10ZXh0LWxvZ28tdGFuc3RhY2tcIiksIF92JDExID0gY2xzeChzdHlsZXMoKS5xdWVyeUZsYXZvckxvZ28sIFwidHNxZC10ZXh0LWxvZ28tcXVlcnktZmxhdm9yXCIpLCBfdiQxMiA9IGNsc3goc3R5bGVzKCkucm93LCBcInRzcWQtZmlsdGVycy1hY3Rpb25zLWNvbnRhaW5lclwiKSwgX3YkMTMgPSBjbHN4KHN0eWxlcygpLmZpbHRlcnNDb250YWluZXIsIFwidHNxZC1maWx0ZXJzLWNvbnRhaW5lclwiKSwgX3YkMTQgPSBjbHN4KHN0eWxlcygpLmZpbHRlcklucHV0LCBcInRzcWQtcXVlcnktZmlsdGVyLXRleHRmaWVsZC1jb250YWluZXJcIiksIF92JDE1ID0gY2xzeChcInRzcWQtcXVlcnktZmlsdGVyLXRleHRmaWVsZFwiKSwgX3YkMTYgPSBjbHN4KHN0eWxlcygpLmZpbHRlclNlbGVjdCwgXCJ0c3FkLXF1ZXJ5LWZpbHRlci1zb3J0LWNvbnRhaW5lclwiKSwgX3YkMTcgPSBgU29ydCBvcmRlciAkeyhzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCIgPyBzb3J0T3JkZXIoKSA6IG11dGF0aW9uU29ydE9yZGVyKCkpID09PSAtMSA/IFwiZGVzY2VuZGluZ1wiIDogXCJhc2NlbmRpbmdcIn1gLCBfdiQxOCA9IChzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCIgPyBzb3J0T3JkZXIoKSA6IG11dGF0aW9uU29ydE9yZGVyKCkpID09PSAtMSwgX3YkMTkgPSBjbHN4KHN0eWxlcygpLmFjdGlvbnNDb250YWluZXIsIFwidHNxZC1hY3Rpb25zLWNvbnRhaW5lclwiKSwgX3YkMjAgPSBjbHN4KHN0eWxlcygpLmFjdGlvbnNCdG4sIFwidHNxZC1hY3Rpb25zLWJ0blwiLCBcInRzcWQtYWN0aW9uLWNsZWFyLWNhY2hlXCIpLCBfdiQyMSA9IGBDbGVhciAke3NlbGVjdGVkVmlldygpfSBjYWNoZWAsIF92JDIyID0gY2xzeChzdHlsZXMoKS5hY3Rpb25zQnRuLCBvZmZsaW5lKCkgJiYgc3R5bGVzKCkuYWN0aW9uc0J0bk9mZmxpbmUsIFwidHNxZC1hY3Rpb25zLWJ0blwiLCBcInRzcWQtYWN0aW9uLW1vY2stb2ZmbGluZS1iZWhhdmlvclwiKSwgX3YkMjMgPSBgJHtvZmZsaW5lKCkgPyBcIlVuc2V0IG9mZmxpbmUgbW9ja2luZyBiZWhhdmlvclwiIDogXCJNb2NrIG9mZmxpbmUgYmVoYXZpb3JcIn1gLCBfdiQyNCA9IG9mZmxpbmUoKSwgX3YkMjUgPSBgJHtvZmZsaW5lKCkgPyBcIlVuc2V0IG9mZmxpbmUgbW9ja2luZyBiZWhhdmlvclwiIDogXCJNb2NrIG9mZmxpbmUgYmVoYXZpb3JcIn1gO1xuICAgICAgX3YkNiAhPT0gX3AkLmUgJiYgY2xhc3NOYW1lKF9lbCQxMCwgX3AkLmUgPSBfdiQ2KTtcbiAgICAgIF92JDcgIT09IF9wJC50ICYmIGNsYXNzTmFtZShfZWwkMTEsIF9wJC50ID0gX3YkNyk7XG4gICAgICBfdiQ4ICE9PSBfcCQuYSAmJiBjbGFzc05hbWUoX2VsJDEyLCBfcCQuYSA9IF92JDgpO1xuICAgICAgX3YkOSAhPT0gX3AkLm8gJiYgY2xhc3NOYW1lKF9lbCQxMywgX3AkLm8gPSBfdiQ5KTtcbiAgICAgIF92JDEwICE9PSBfcCQuaSAmJiBjbGFzc05hbWUoX2VsJDE0LCBfcCQuaSA9IF92JDEwKTtcbiAgICAgIF92JDExICE9PSBfcCQubiAmJiBjbGFzc05hbWUoX2VsJDE1LCBfcCQubiA9IF92JDExKTtcbiAgICAgIF92JDEyICE9PSBfcCQucyAmJiBjbGFzc05hbWUoX2VsJDE3LCBfcCQucyA9IF92JDEyKTtcbiAgICAgIF92JDEzICE9PSBfcCQuaCAmJiBjbGFzc05hbWUoX2VsJDE4LCBfcCQuaCA9IF92JDEzKTtcbiAgICAgIF92JDE0ICE9PSBfcCQuciAmJiBjbGFzc05hbWUoX2VsJDE5LCBfcCQuciA9IF92JDE0KTtcbiAgICAgIF92JDE1ICE9PSBfcCQuZCAmJiBjbGFzc05hbWUoX2VsJDIwLCBfcCQuZCA9IF92JDE1KTtcbiAgICAgIF92JDE2ICE9PSBfcCQubCAmJiBjbGFzc05hbWUoX2VsJDIxLCBfcCQubCA9IF92JDE2KTtcbiAgICAgIF92JDE3ICE9PSBfcCQudSAmJiBzZXRBdHRyaWJ1dGUoX2VsJDI0LCBcImFyaWEtbGFiZWxcIiwgX3AkLnUgPSBfdiQxNyk7XG4gICAgICBfdiQxOCAhPT0gX3AkLmMgJiYgc2V0QXR0cmlidXRlKF9lbCQyNCwgXCJhcmlhLXByZXNzZWRcIiwgX3AkLmMgPSBfdiQxOCk7XG4gICAgICBfdiQxOSAhPT0gX3AkLncgJiYgY2xhc3NOYW1lKF9lbCQyNywgX3AkLncgPSBfdiQxOSk7XG4gICAgICBfdiQyMCAhPT0gX3AkLm0gJiYgY2xhc3NOYW1lKF9lbCQyOCwgX3AkLm0gPSBfdiQyMCk7XG4gICAgICBfdiQyMSAhPT0gX3AkLmYgJiYgc2V0QXR0cmlidXRlKF9lbCQyOCwgXCJ0aXRsZVwiLCBfcCQuZiA9IF92JDIxKTtcbiAgICAgIF92JDIyICE9PSBfcCQueSAmJiBjbGFzc05hbWUoX2VsJDI5LCBfcCQueSA9IF92JDIyKTtcbiAgICAgIF92JDIzICE9PSBfcCQuZyAmJiBzZXRBdHRyaWJ1dGUoX2VsJDI5LCBcImFyaWEtbGFiZWxcIiwgX3AkLmcgPSBfdiQyMyk7XG4gICAgICBfdiQyNCAhPT0gX3AkLnAgJiYgc2V0QXR0cmlidXRlKF9lbCQyOSwgXCJhcmlhLXByZXNzZWRcIiwgX3AkLnAgPSBfdiQyNCk7XG4gICAgICBfdiQyNSAhPT0gX3AkLmIgJiYgc2V0QXR0cmlidXRlKF9lbCQyOSwgXCJ0aXRsZVwiLCBfcCQuYiA9IF92JDI1KTtcbiAgICAgIHJldHVybiBfcCQ7XG4gICAgfSwge1xuICAgICAgZTogdm9pZCAwLFxuICAgICAgdDogdm9pZCAwLFxuICAgICAgYTogdm9pZCAwLFxuICAgICAgbzogdm9pZCAwLFxuICAgICAgaTogdm9pZCAwLFxuICAgICAgbjogdm9pZCAwLFxuICAgICAgczogdm9pZCAwLFxuICAgICAgaDogdm9pZCAwLFxuICAgICAgcjogdm9pZCAwLFxuICAgICAgZDogdm9pZCAwLFxuICAgICAgbDogdm9pZCAwLFxuICAgICAgdTogdm9pZCAwLFxuICAgICAgYzogdm9pZCAwLFxuICAgICAgdzogdm9pZCAwLFxuICAgICAgbTogdm9pZCAwLFxuICAgICAgZjogdm9pZCAwLFxuICAgICAgeTogdm9pZCAwLFxuICAgICAgZzogdm9pZCAwLFxuICAgICAgcDogdm9pZCAwLFxuICAgICAgYjogdm9pZCAwXG4gICAgfSk7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IF9lbCQyMC52YWx1ZSA9IHNlbGVjdGVkVmlldygpID09PSBcInF1ZXJpZXNcIiA/IHByb3BzLmxvY2FsU3RvcmUuZmlsdGVyIHx8IFwiXCIgOiBwcm9wcy5sb2NhbFN0b3JlLm11dGF0aW9uRmlsdGVyIHx8IFwiXCIpO1xuICAgIHJldHVybiBfZWwkMTA7XG4gIH0pKCksIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiBzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCIpKCkgJiYgc2VsZWN0ZWRRdWVyeUhhc2goKTtcbiAgICB9LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUXVlcnlEZXRhaWxzLCB7fSk7XG4gICAgfVxuICB9KSwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICBnZXQgd2hlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+IHNlbGVjdGVkVmlldygpID09PSBcIm11dGF0aW9uc1wiKSgpICYmIHNlbGVjdGVkTXV0YXRpb25JZCgpO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChNdXRhdGlvbkRldGFpbHMsIHt9KTtcbiAgICB9XG4gIH0pXTtcbn07XG52YXIgUXVlcnlSb3cgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMyKGNzcykgOiBsaWdodFN0eWxlczIoY3NzKTtcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICBjb2xvcnMsXG4gICAgYWxwaGFcbiAgfSA9IHRva2VucztcbiAgY29uc3QgdDIgPSAobGlnaHQsIGRhcmspID0+IHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFyayA6IGxpZ2h0O1xuICBjb25zdCBxdWVyeVN0YXRlID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4gcXVlcnlDYWNoZSgpLmZpbmQoe1xuICAgIHF1ZXJ5S2V5OiBwcm9wcy5xdWVyeS5xdWVyeUtleVxuICB9KT8uc3RhdGUsIHRydWUsIChlMikgPT4gZTIucXVlcnkucXVlcnlIYXNoID09PSBwcm9wcy5xdWVyeS5xdWVyeUhhc2gpO1xuICBjb25zdCBpc0Rpc2FibGVkID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4gcXVlcnlDYWNoZSgpLmZpbmQoe1xuICAgIHF1ZXJ5S2V5OiBwcm9wcy5xdWVyeS5xdWVyeUtleVxuICB9KT8uaXNEaXNhYmxlZCgpID8/IGZhbHNlLCB0cnVlLCAoZTIpID0+IGUyLnF1ZXJ5LnF1ZXJ5SGFzaCA9PT0gcHJvcHMucXVlcnkucXVlcnlIYXNoKTtcbiAgY29uc3QgaXNTdGFsZSA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHF1ZXJ5Q2FjaGUoKS5maW5kKHtcbiAgICBxdWVyeUtleTogcHJvcHMucXVlcnkucXVlcnlLZXlcbiAgfSk/LmlzU3RhbGUoKSA/PyBmYWxzZSwgdHJ1ZSwgKGUyKSA9PiBlMi5xdWVyeS5xdWVyeUhhc2ggPT09IHByb3BzLnF1ZXJ5LnF1ZXJ5SGFzaCk7XG4gIGNvbnN0IG9ic2VydmVycyA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHF1ZXJ5Q2FjaGUoKS5maW5kKHtcbiAgICBxdWVyeUtleTogcHJvcHMucXVlcnkucXVlcnlLZXlcbiAgfSk/LmdldE9ic2VydmVyc0NvdW50KCkgPz8gMCwgdHJ1ZSwgKGUyKSA9PiBlMi5xdWVyeS5xdWVyeUhhc2ggPT09IHByb3BzLnF1ZXJ5LnF1ZXJ5SGFzaCk7XG4gIGNvbnN0IGNvbG9yID0gY3JlYXRlTWVtbygoKSA9PiBnZXRRdWVyeVN0YXR1c0NvbG9yKHtcbiAgICBxdWVyeVN0YXRlOiBxdWVyeVN0YXRlKCksXG4gICAgb2JzZXJ2ZXJDb3VudDogb2JzZXJ2ZXJzKCksXG4gICAgaXNTdGFsZTogaXNTdGFsZSgpXG4gIH0pKTtcbiAgY29uc3QgZ2V0T2JzZXJ2ZXJDb3VudENvbG9yU3R5bGVzID0gKCkgPT4ge1xuICAgIGlmIChjb2xvcigpID09PSBcImdyYXlcIikge1xuICAgICAgcmV0dXJuIGNzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bMjAwXSwgY29sb3JzW2NvbG9yKCldWzcwMF0pfTtcbiAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzcwMF0sIGNvbG9yc1tjb2xvcigpXVszMDBdKX07XG4gICAgICBgO1xuICAgIH1cbiAgICByZXR1cm4gY3NzYFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bMjAwXSArIGFscGhhWzgwXSwgY29sb3JzW2NvbG9yKCldWzkwMF0pfTtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVs4MDBdLCBjb2xvcnNbY29sb3IoKV1bMzAwXSl9O1xuICAgIGA7XG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgIGdldCB3aGVuKCkge1xuICAgICAgcmV0dXJuIHF1ZXJ5U3RhdGUoKTtcbiAgICB9LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHZhciBfZWwkNDkgPSBfdG1wbCQyNDIoKSwgX2VsJDUwID0gX2VsJDQ5LmZpcnN0Q2hpbGQsIF9lbCQ1MSA9IF9lbCQ1MC5uZXh0U2libGluZztcbiAgICAgIF9lbCQ0OS4kJGNsaWNrID0gKCkgPT4gc2V0U2VsZWN0ZWRRdWVyeUhhc2gocHJvcHMucXVlcnkucXVlcnlIYXNoID09PSBzZWxlY3RlZFF1ZXJ5SGFzaCgpID8gbnVsbCA6IHByb3BzLnF1ZXJ5LnF1ZXJ5SGFzaCk7XG4gICAgICBpbnNlcnQoX2VsJDUwLCBvYnNlcnZlcnMpO1xuICAgICAgaW5zZXJ0KF9lbCQ1MSwgKCkgPT4gcHJvcHMucXVlcnkucXVlcnlIYXNoKTtcbiAgICAgIGluc2VydChfZWwkNDksIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgIHJldHVybiBpc0Rpc2FibGVkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gX3RtcGwkMjMyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pLCBudWxsKTtcbiAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICAgIHZhciBfdiQyNiA9IGNsc3goc3R5bGVzKCkucXVlcnlSb3csIHNlbGVjdGVkUXVlcnlIYXNoKCkgPT09IHByb3BzLnF1ZXJ5LnF1ZXJ5SGFzaCAmJiBzdHlsZXMoKS5zZWxlY3RlZFF1ZXJ5Um93LCBcInRzcWQtcXVlcnktcm93XCIpLCBfdiQyNyA9IGBRdWVyeSBrZXkgJHtwcm9wcy5xdWVyeS5xdWVyeUhhc2h9YCwgX3YkMjggPSBjbHN4KGdldE9ic2VydmVyQ291bnRDb2xvclN0eWxlcygpLCBcInRzcWQtcXVlcnktb2JzZXJ2ZXItY291bnRcIik7XG4gICAgICAgIF92JDI2ICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDQ5LCBfcCQuZSA9IF92JDI2KTtcbiAgICAgICAgX3YkMjcgIT09IF9wJC50ICYmIHNldEF0dHJpYnV0ZShfZWwkNDksIFwiYXJpYS1sYWJlbFwiLCBfcCQudCA9IF92JDI3KTtcbiAgICAgICAgX3YkMjggIT09IF9wJC5hICYmIGNsYXNzTmFtZShfZWwkNTAsIF9wJC5hID0gX3YkMjgpO1xuICAgICAgICByZXR1cm4gX3AkO1xuICAgICAgfSwge1xuICAgICAgICBlOiB2b2lkIDAsXG4gICAgICAgIHQ6IHZvaWQgMCxcbiAgICAgICAgYTogdm9pZCAwXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBfZWwkNDk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgTXV0YXRpb25Sb3cgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMyKGNzcykgOiBsaWdodFN0eWxlczIoY3NzKTtcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICBjb2xvcnMsXG4gICAgYWxwaGFcbiAgfSA9IHRva2VucztcbiAgY29uc3QgdDIgPSAobGlnaHQsIGRhcmspID0+IHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFyayA6IGxpZ2h0O1xuICBjb25zdCBtdXRhdGlvblN0YXRlID0gY3JlYXRlU3Vic2NyaWJlVG9NdXRhdGlvbkNhY2hlQmF0Y2hlcigobXV0YXRpb25DYWNoZSkgPT4ge1xuICAgIGNvbnN0IG11dGF0aW9ucyA9IG11dGF0aW9uQ2FjaGUoKS5nZXRBbGwoKTtcbiAgICBjb25zdCBtdXRhdGlvbiA9IG11dGF0aW9ucy5maW5kKChtKSA9PiBtLm11dGF0aW9uSWQgPT09IHByb3BzLm11dGF0aW9uLm11dGF0aW9uSWQpO1xuICAgIHJldHVybiBtdXRhdGlvbj8uc3RhdGU7XG4gIH0pO1xuICBjb25zdCBpc1BhdXNlZCA9IGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIoKG11dGF0aW9uQ2FjaGUpID0+IHtcbiAgICBjb25zdCBtdXRhdGlvbnMgPSBtdXRhdGlvbkNhY2hlKCkuZ2V0QWxsKCk7XG4gICAgY29uc3QgbXV0YXRpb24gPSBtdXRhdGlvbnMuZmluZCgobSkgPT4gbS5tdXRhdGlvbklkID09PSBwcm9wcy5tdXRhdGlvbi5tdXRhdGlvbklkKTtcbiAgICBpZiAoIW11dGF0aW9uKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIG11dGF0aW9uLnN0YXRlLmlzUGF1c2VkO1xuICB9KTtcbiAgY29uc3Qgc3RhdHVzID0gY3JlYXRlU3Vic2NyaWJlVG9NdXRhdGlvbkNhY2hlQmF0Y2hlcigobXV0YXRpb25DYWNoZSkgPT4ge1xuICAgIGNvbnN0IG11dGF0aW9ucyA9IG11dGF0aW9uQ2FjaGUoKS5nZXRBbGwoKTtcbiAgICBjb25zdCBtdXRhdGlvbiA9IG11dGF0aW9ucy5maW5kKChtKSA9PiBtLm11dGF0aW9uSWQgPT09IHByb3BzLm11dGF0aW9uLm11dGF0aW9uSWQpO1xuICAgIGlmICghbXV0YXRpb24pIHJldHVybiBcImlkbGVcIjtcbiAgICByZXR1cm4gbXV0YXRpb24uc3RhdGUuc3RhdHVzO1xuICB9KTtcbiAgY29uc3QgY29sb3IgPSBjcmVhdGVNZW1vKCgpID0+IGdldE11dGF0aW9uU3RhdHVzQ29sb3Ioe1xuICAgIGlzUGF1c2VkOiBpc1BhdXNlZCgpLFxuICAgIHN0YXR1czogc3RhdHVzKClcbiAgfSkpO1xuICBjb25zdCBnZXRPYnNlcnZlckNvdW50Q29sb3JTdHlsZXMgPSAoKSA9PiB7XG4gICAgaWYgKGNvbG9yKCkgPT09IFwiZ3JheVwiKSB7XG4gICAgICByZXR1cm4gY3NzYFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVsyMDBdLCBjb2xvcnNbY29sb3IoKV1bNzAwXSl9O1xuICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bNzAwXSwgY29sb3JzW2NvbG9yKCldWzMwMF0pfTtcbiAgICAgIGA7XG4gICAgfVxuICAgIHJldHVybiBjc3NgXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVsyMDBdICsgYWxwaGFbODBdLCBjb2xvcnNbY29sb3IoKV1bOTAwXSl9O1xuICAgICAgY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzgwMF0sIGNvbG9yc1tjb2xvcigpXVszMDBdKX07XG4gICAgYDtcbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gbXV0YXRpb25TdGF0ZSgpO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgdmFyIF9lbCQ1MyA9IF90bXBsJDI0MigpLCBfZWwkNTQgPSBfZWwkNTMuZmlyc3RDaGlsZCwgX2VsJDU1ID0gX2VsJDU0Lm5leHRTaWJsaW5nO1xuICAgICAgX2VsJDUzLiQkY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIHNldFNlbGVjdGVkTXV0YXRpb25JZChwcm9wcy5tdXRhdGlvbi5tdXRhdGlvbklkID09PSBzZWxlY3RlZE11dGF0aW9uSWQoKSA/IG51bGwgOiBwcm9wcy5tdXRhdGlvbi5tdXRhdGlvbklkKTtcbiAgICAgIH07XG4gICAgICBpbnNlcnQoX2VsJDU0LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICByZXR1cm4gY29sb3IoKSA9PT0gXCJwdXJwbGVcIjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUGF1c2VDaXJjbGUsIHt9KTtcbiAgICAgICAgfVxuICAgICAgfSksIG51bGwpO1xuICAgICAgaW5zZXJ0KF9lbCQ1NCwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbG9yKCkgPT09IFwiZ3JlZW5cIjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoQ2hlY2tDaXJjbGUsIHt9KTtcbiAgICAgICAgfVxuICAgICAgfSksIG51bGwpO1xuICAgICAgaW5zZXJ0KF9lbCQ1NCwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbG9yKCkgPT09IFwicmVkXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFhDaXJjbGUsIHt9KTtcbiAgICAgICAgfVxuICAgICAgfSksIG51bGwpO1xuICAgICAgaW5zZXJ0KF9lbCQ1NCwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbG9yKCkgPT09IFwieWVsbG93XCI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KExvYWRpbmdDaXJjbGUsIHt9KTtcbiAgICAgICAgfVxuICAgICAgfSksIG51bGwpO1xuICAgICAgaW5zZXJ0KF9lbCQ1NSwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BzLm11dGF0aW9uLm9wdGlvbnMubXV0YXRpb25LZXk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gW2NyZWF0ZU1lbW8oKCkgPT4gSlNPTi5zdHJpbmdpZnkocHJvcHMubXV0YXRpb24ub3B0aW9ucy5tdXRhdGlvbktleSkpLCBcIiAtXCIsIFwiIFwiXTtcbiAgICAgICAgfVxuICAgICAgfSksIG51bGwpO1xuICAgICAgaW5zZXJ0KF9lbCQ1NSwgKCkgPT4gbmV3IERhdGUocHJvcHMubXV0YXRpb24uc3RhdGUuc3VibWl0dGVkQXQpLnRvTG9jYWxlU3RyaW5nKCksIG51bGwpO1xuICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgICAgdmFyIF92JDI5ID0gY2xzeChzdHlsZXMoKS5xdWVyeVJvdywgc2VsZWN0ZWRNdXRhdGlvbklkKCkgPT09IHByb3BzLm11dGF0aW9uLm11dGF0aW9uSWQgJiYgc3R5bGVzKCkuc2VsZWN0ZWRRdWVyeVJvdywgXCJ0c3FkLXF1ZXJ5LXJvd1wiKSwgX3YkMzAgPSBgTXV0YXRpb24gc3VibWl0dGVkIGF0ICR7bmV3IERhdGUocHJvcHMubXV0YXRpb24uc3RhdGUuc3VibWl0dGVkQXQpLnRvTG9jYWxlU3RyaW5nKCl9YCwgX3YkMzEgPSBjbHN4KGdldE9ic2VydmVyQ291bnRDb2xvclN0eWxlcygpLCBcInRzcWQtcXVlcnktb2JzZXJ2ZXItY291bnRcIik7XG4gICAgICAgIF92JDI5ICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDUzLCBfcCQuZSA9IF92JDI5KTtcbiAgICAgICAgX3YkMzAgIT09IF9wJC50ICYmIHNldEF0dHJpYnV0ZShfZWwkNTMsIFwiYXJpYS1sYWJlbFwiLCBfcCQudCA9IF92JDMwKTtcbiAgICAgICAgX3YkMzEgIT09IF9wJC5hICYmIGNsYXNzTmFtZShfZWwkNTQsIF9wJC5hID0gX3YkMzEpO1xuICAgICAgICByZXR1cm4gX3AkO1xuICAgICAgfSwge1xuICAgICAgICBlOiB2b2lkIDAsXG4gICAgICAgIHQ6IHZvaWQgMCxcbiAgICAgICAgYTogdm9pZCAwXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBfZWwkNTM7XG4gICAgfVxuICB9KTtcbn07XG52YXIgUXVlcnlTdGF0dXNDb3VudCA9ICgpID0+IHtcbiAgY29uc3Qgc3RhbGUgPSBjcmVhdGVTdWJzY3JpYmVUb1F1ZXJ5Q2FjaGVCYXRjaGVyKChxdWVyeUNhY2hlKSA9PiBxdWVyeUNhY2hlKCkuZ2V0QWxsKCkuZmlsdGVyKChxKSA9PiBnZXRRdWVyeVN0YXR1c0xhYmVsKHEpID09PSBcInN0YWxlXCIpLmxlbmd0aCk7XG4gIGNvbnN0IGZyZXNoID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmZpbHRlcigocSkgPT4gZ2V0UXVlcnlTdGF0dXNMYWJlbChxKSA9PT0gXCJmcmVzaFwiKS5sZW5ndGgpO1xuICBjb25zdCBmZXRjaGluZyA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHF1ZXJ5Q2FjaGUoKS5nZXRBbGwoKS5maWx0ZXIoKHEpID0+IGdldFF1ZXJ5U3RhdHVzTGFiZWwocSkgPT09IFwiZmV0Y2hpbmdcIikubGVuZ3RoKTtcbiAgY29uc3QgcGF1c2VkID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmZpbHRlcigocSkgPT4gZ2V0UXVlcnlTdGF0dXNMYWJlbChxKSA9PT0gXCJwYXVzZWRcIikubGVuZ3RoKTtcbiAgY29uc3QgaW5hY3RpdmUgPSBjcmVhdGVTdWJzY3JpYmVUb1F1ZXJ5Q2FjaGVCYXRjaGVyKChxdWVyeUNhY2hlKSA9PiBxdWVyeUNhY2hlKCkuZ2V0QWxsKCkuZmlsdGVyKChxKSA9PiBnZXRRdWVyeVN0YXR1c0xhYmVsKHEpID09PSBcImluYWN0aXZlXCIpLmxlbmd0aCk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzMihjc3MpIDogbGlnaHRTdHlsZXMyKGNzcyk7XG4gIH0pO1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJDU2ID0gX3RtcGwkMjcoKTtcbiAgICBpbnNlcnQoX2VsJDU2LCBjcmVhdGVDb21wb25lbnQoUXVlcnlTdGF0dXMsIHtcbiAgICAgIGxhYmVsOiBcIkZyZXNoXCIsXG4gICAgICBjb2xvcjogXCJncmVlblwiLFxuICAgICAgZ2V0IGNvdW50KCkge1xuICAgICAgICByZXR1cm4gZnJlc2goKTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQ1NiwgY3JlYXRlQ29tcG9uZW50KFF1ZXJ5U3RhdHVzLCB7XG4gICAgICBsYWJlbDogXCJGZXRjaGluZ1wiLFxuICAgICAgY29sb3I6IFwiYmx1ZVwiLFxuICAgICAgZ2V0IGNvdW50KCkge1xuICAgICAgICByZXR1cm4gZmV0Y2hpbmcoKTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQ1NiwgY3JlYXRlQ29tcG9uZW50KFF1ZXJ5U3RhdHVzLCB7XG4gICAgICBsYWJlbDogXCJQYXVzZWRcIixcbiAgICAgIGNvbG9yOiBcInB1cnBsZVwiLFxuICAgICAgZ2V0IGNvdW50KCkge1xuICAgICAgICByZXR1cm4gcGF1c2VkKCk7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkNTYsIGNyZWF0ZUNvbXBvbmVudChRdWVyeVN0YXR1cywge1xuICAgICAgbGFiZWw6IFwiU3RhbGVcIixcbiAgICAgIGNvbG9yOiBcInllbGxvd1wiLFxuICAgICAgZ2V0IGNvdW50KCkge1xuICAgICAgICByZXR1cm4gc3RhbGUoKTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQ1NiwgY3JlYXRlQ29tcG9uZW50KFF1ZXJ5U3RhdHVzLCB7XG4gICAgICBsYWJlbDogXCJJbmFjdGl2ZVwiLFxuICAgICAgY29sb3I6IFwiZ3JheVwiLFxuICAgICAgZ2V0IGNvdW50KCkge1xuICAgICAgICByZXR1cm4gaW5hY3RpdmUoKTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkNTYsIGNsc3goc3R5bGVzKCkucXVlcnlTdGF0dXNDb250YWluZXIsIFwidHNxZC1xdWVyeS1zdGF0dXMtY29udGFpbmVyXCIpKSk7XG4gICAgcmV0dXJuIF9lbCQ1NjtcbiAgfSkoKTtcbn07XG52YXIgTXV0YXRpb25TdGF0dXNDb3VudCA9ICgpID0+IHtcbiAgY29uc3Qgc3VjY2VzcyA9IGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIoKG11dGF0aW9uQ2FjaGUpID0+IG11dGF0aW9uQ2FjaGUoKS5nZXRBbGwoKS5maWx0ZXIoKG0pID0+IGdldE11dGF0aW9uU3RhdHVzQ29sb3Ioe1xuICAgIGlzUGF1c2VkOiBtLnN0YXRlLmlzUGF1c2VkLFxuICAgIHN0YXR1czogbS5zdGF0ZS5zdGF0dXNcbiAgfSkgPT09IFwiZ3JlZW5cIikubGVuZ3RoKTtcbiAgY29uc3QgcGVuZGluZyA9IGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIoKG11dGF0aW9uQ2FjaGUpID0+IG11dGF0aW9uQ2FjaGUoKS5nZXRBbGwoKS5maWx0ZXIoKG0pID0+IGdldE11dGF0aW9uU3RhdHVzQ29sb3Ioe1xuICAgIGlzUGF1c2VkOiBtLnN0YXRlLmlzUGF1c2VkLFxuICAgIHN0YXR1czogbS5zdGF0ZS5zdGF0dXNcbiAgfSkgPT09IFwieWVsbG93XCIpLmxlbmd0aCk7XG4gIGNvbnN0IHBhdXNlZCA9IGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIoKG11dGF0aW9uQ2FjaGUpID0+IG11dGF0aW9uQ2FjaGUoKS5nZXRBbGwoKS5maWx0ZXIoKG0pID0+IGdldE11dGF0aW9uU3RhdHVzQ29sb3Ioe1xuICAgIGlzUGF1c2VkOiBtLnN0YXRlLmlzUGF1c2VkLFxuICAgIHN0YXR1czogbS5zdGF0ZS5zdGF0dXNcbiAgfSkgPT09IFwicHVycGxlXCIpLmxlbmd0aCk7XG4gIGNvbnN0IGVycm9yID0gY3JlYXRlU3Vic2NyaWJlVG9NdXRhdGlvbkNhY2hlQmF0Y2hlcigobXV0YXRpb25DYWNoZSkgPT4gbXV0YXRpb25DYWNoZSgpLmdldEFsbCgpLmZpbHRlcigobSkgPT4gZ2V0TXV0YXRpb25TdGF0dXNDb2xvcih7XG4gICAgaXNQYXVzZWQ6IG0uc3RhdGUuaXNQYXVzZWQsXG4gICAgc3RhdHVzOiBtLnN0YXRlLnN0YXR1c1xuICB9KSA9PT0gXCJyZWRcIikubGVuZ3RoKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMyKGNzcykgOiBsaWdodFN0eWxlczIoY3NzKTtcbiAgfSk7XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkNTcgPSBfdG1wbCQyNygpO1xuICAgIGluc2VydChfZWwkNTcsIGNyZWF0ZUNvbXBvbmVudChRdWVyeVN0YXR1cywge1xuICAgICAgbGFiZWw6IFwiUGF1c2VkXCIsXG4gICAgICBjb2xvcjogXCJwdXJwbGVcIixcbiAgICAgIGdldCBjb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHBhdXNlZCgpO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDU3LCBjcmVhdGVDb21wb25lbnQoUXVlcnlTdGF0dXMsIHtcbiAgICAgIGxhYmVsOiBcIlBlbmRpbmdcIixcbiAgICAgIGNvbG9yOiBcInllbGxvd1wiLFxuICAgICAgZ2V0IGNvdW50KCkge1xuICAgICAgICByZXR1cm4gcGVuZGluZygpO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDU3LCBjcmVhdGVDb21wb25lbnQoUXVlcnlTdGF0dXMsIHtcbiAgICAgIGxhYmVsOiBcIlN1Y2Nlc3NcIixcbiAgICAgIGNvbG9yOiBcImdyZWVuXCIsXG4gICAgICBnZXQgY291bnQoKSB7XG4gICAgICAgIHJldHVybiBzdWNjZXNzKCk7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkNTcsIGNyZWF0ZUNvbXBvbmVudChRdWVyeVN0YXR1cywge1xuICAgICAgbGFiZWw6IFwiRXJyb3JcIixcbiAgICAgIGNvbG9yOiBcInJlZFwiLFxuICAgICAgZ2V0IGNvdW50KCkge1xuICAgICAgICByZXR1cm4gZXJyb3IoKTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkNTcsIGNsc3goc3R5bGVzKCkucXVlcnlTdGF0dXNDb250YWluZXIsIFwidHNxZC1xdWVyeS1zdGF0dXMtY29udGFpbmVyXCIpKSk7XG4gICAgcmV0dXJuIF9lbCQ1NztcbiAgfSkoKTtcbn07XG52YXIgUXVlcnlTdGF0dXMgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMyKGNzcykgOiBsaWdodFN0eWxlczIoY3NzKTtcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICBjb2xvcnMsXG4gICAgYWxwaGFcbiAgfSA9IHRva2VucztcbiAgY29uc3QgdDIgPSAobGlnaHQsIGRhcmspID0+IHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFyayA6IGxpZ2h0O1xuICBsZXQgdGFnUmVmO1xuICBjb25zdCBbbW91c2VPdmVyLCBzZXRNb3VzZU92ZXJdID0gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbiAgY29uc3QgW2ZvY3VzZWQsIHNldEZvY3VzZWRdID0gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbiAgY29uc3Qgc2hvd0xhYmVsID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkUXVlcnlIYXNoKCkpIHtcbiAgICAgIGlmIChwYW5lbFdpZHRoKCkgPCBmaXJzdEJyZWFrcG9pbnQgJiYgcGFuZWxXaWR0aCgpID4gc2Vjb25kQnJlYWtwb2ludCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwYW5lbFdpZHRoKCkgPCBzZWNvbmRCcmVha3BvaW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbiAgcmV0dXJuICgoKSA9PiB7XG4gICAgdmFyIF9lbCQ1OCA9IF90bXBsJDI3MigpLCBfZWwkNjAgPSBfZWwkNTguZmlyc3RDaGlsZCwgX2VsJDYyID0gX2VsJDYwLm5leHRTaWJsaW5nO1xuICAgIHZhciBfcmVmJDUgPSB0YWdSZWY7XG4gICAgdHlwZW9mIF9yZWYkNSA9PT0gXCJmdW5jdGlvblwiID8gdXNlKF9yZWYkNSwgX2VsJDU4KSA6IHRhZ1JlZiA9IF9lbCQ1ODtcbiAgICBfZWwkNTguYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIiwgKCkgPT4ge1xuICAgICAgc2V0TW91c2VPdmVyKGZhbHNlKTtcbiAgICAgIHNldEZvY3VzZWQoZmFsc2UpO1xuICAgIH0pO1xuICAgIF9lbCQ1OC5hZGRFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLCAoKSA9PiBzZXRNb3VzZU92ZXIodHJ1ZSkpO1xuICAgIF9lbCQ1OC5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCAoKSA9PiBzZXRGb2N1c2VkKGZhbHNlKSk7XG4gICAgX2VsJDU4LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCAoKSA9PiBzZXRGb2N1c2VkKHRydWUpKTtcbiAgICBzcHJlYWQoX2VsJDU4LCBtZXJnZVByb3BzKHtcbiAgICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHNob3dMYWJlbCgpO1xuICAgICAgfSxcbiAgICAgIGdldCBbXCJjbGFzc1wiXSgpIHtcbiAgICAgICAgcmV0dXJuIGNsc3goc3R5bGVzKCkucXVlcnlTdGF0dXNUYWcsICFzaG93TGFiZWwoKSAmJiBjc3NgXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbNDAwXSl9JHthbHBoYVs4MF19O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGAsIFwidHNxZC1xdWVyeS1zdGF0dXMtdGFnXCIsIGB0c3FkLXF1ZXJ5LXN0YXR1cy10YWctJHtwcm9wcy5sYWJlbC50b0xvd2VyQ2FzZSgpfWApO1xuICAgICAgfVxuICAgIH0sICgpID0+IG1vdXNlT3ZlcigpIHx8IGZvY3VzZWQoKSA/IHtcbiAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiBcInRzcWQtc3RhdHVzLXRvb2x0aXBcIlxuICAgIH0gOiB7fSksIGZhbHNlLCB0cnVlKTtcbiAgICBpbnNlcnQoX2VsJDU4LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+ICEhIXNob3dMYWJlbCgpKSgpICYmIChtb3VzZU92ZXIoKSB8fCBmb2N1c2VkKCkpO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgdmFyIF9lbCQ1OSA9IF90bXBsJDI1MigpO1xuICAgICAgICBpbnNlcnQoX2VsJDU5LCAoKSA9PiBwcm9wcy5sYWJlbCk7XG4gICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDU5LCBjbHN4KHN0eWxlcygpLnN0YXR1c1Rvb2x0aXAsIFwidHNxZC1xdWVyeS1zdGF0dXMtdG9vbHRpcFwiKSkpO1xuICAgICAgICByZXR1cm4gX2VsJDU5O1xuICAgICAgfVxuICAgIH0pLCBfZWwkNjApO1xuICAgIGluc2VydChfZWwkNTgsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgcmV0dXJuIHNob3dMYWJlbCgpO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgdmFyIF9lbCQ2MSA9IF90bXBsJDI2MigpO1xuICAgICAgICBpbnNlcnQoX2VsJDYxLCAoKSA9PiBwcm9wcy5sYWJlbCk7XG4gICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDYxLCBjbHN4KHN0eWxlcygpLnF1ZXJ5U3RhdHVzVGFnTGFiZWwsIFwidHNxZC1xdWVyeS1zdGF0dXMtdGFnLWxhYmVsXCIpKSk7XG4gICAgICAgIHJldHVybiBfZWwkNjE7XG4gICAgICB9XG4gICAgfSksIF9lbCQ2Mik7XG4gICAgaW5zZXJ0KF9lbCQ2MiwgKCkgPT4gcHJvcHMuY291bnQpO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICB2YXIgX3YkMzIgPSBjbHN4KGNzc2BcbiAgICAgICAgICAgIHdpZHRoOiAke3Rva2Vucy5zaXplWzEuNV19O1xuICAgICAgICAgICAgaGVpZ2h0OiAke3Rva2Vucy5zaXplWzEuNV19O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJHt0b2tlbnMuYm9yZGVyLnJhZGl1cy5mdWxsfTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dG9rZW5zLmNvbG9yc1twcm9wcy5jb2xvcl1bNTAwXX07XG4gICAgICAgICAgYCwgXCJ0c3FkLXF1ZXJ5LXN0YXR1cy10YWctZG90XCIpLCBfdiQzMyA9IGNsc3goc3R5bGVzKCkucXVlcnlTdGF0dXNDb3VudCwgcHJvcHMuY291bnQgPiAwICYmIHByb3BzLmNvbG9yICE9PSBcImdyYXlcIiAmJiBjc3NgXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzW3Byb3BzLmNvbG9yXVsxMDBdLCBjb2xvcnNbcHJvcHMuY29sb3JdWzkwMF0pfTtcbiAgICAgICAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzW3Byb3BzLmNvbG9yXVs3MDBdLCBjb2xvcnNbcHJvcHMuY29sb3JdWzMwMF0pfTtcbiAgICAgICAgICAgIGAsIFwidHNxZC1xdWVyeS1zdGF0dXMtdGFnLWNvdW50XCIpO1xuICAgICAgX3YkMzIgIT09IF9wJC5lICYmIGNsYXNzTmFtZShfZWwkNjAsIF9wJC5lID0gX3YkMzIpO1xuICAgICAgX3YkMzMgIT09IF9wJC50ICYmIGNsYXNzTmFtZShfZWwkNjIsIF9wJC50ID0gX3YkMzMpO1xuICAgICAgcmV0dXJuIF9wJDtcbiAgICB9LCB7XG4gICAgICBlOiB2b2lkIDAsXG4gICAgICB0OiB2b2lkIDBcbiAgICB9KTtcbiAgICByZXR1cm4gX2VsJDU4O1xuICB9KSgpO1xufTtcbnZhciBRdWVyeURldGFpbHMgPSAoKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzMihjc3MpIDogbGlnaHRTdHlsZXMyKGNzcyk7XG4gIH0pO1xuICBjb25zdCB7XG4gICAgY29sb3JzXG4gIH0gPSB0b2tlbnM7XG4gIGNvbnN0IHQyID0gKGxpZ2h0LCBkYXJrKSA9PiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmsgOiBsaWdodDtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLmNsaWVudDtcbiAgY29uc3QgW3Jlc3RvcmluZ0xvYWRpbmcsIHNldFJlc3RvcmluZ0xvYWRpbmddID0gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbiAgY29uc3QgW2RhdGFNb2RlLCBzZXREYXRhTW9kZV0gPSBjcmVhdGVTaWduYWwoXCJ2aWV3XCIpO1xuICBjb25zdCBbZGF0YUVkaXRFcnJvciwgc2V0RGF0YUVkaXRFcnJvcl0gPSBjcmVhdGVTaWduYWwoZmFsc2UpO1xuICBjb25zdCBlcnJvclR5cGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuZXJyb3JUeXBlcyB8fCBbXTtcbiAgfSk7XG4gIGNvbnN0IGFjdGl2ZVF1ZXJ5ID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmZpbmQoKHF1ZXJ5KSA9PiBxdWVyeS5xdWVyeUhhc2ggPT09IHNlbGVjdGVkUXVlcnlIYXNoKCkpLCBmYWxzZSk7XG4gIGNvbnN0IGFjdGl2ZVF1ZXJ5RnJlc2ggPSBjcmVhdGVTdWJzY3JpYmVUb1F1ZXJ5Q2FjaGVCYXRjaGVyKChxdWVyeUNhY2hlKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5Q2FjaGUoKS5nZXRBbGwoKS5maW5kKChxdWVyeSkgPT4gcXVlcnkucXVlcnlIYXNoID09PSBzZWxlY3RlZFF1ZXJ5SGFzaCgpKTtcbiAgfSwgZmFsc2UpO1xuICBjb25zdCBhY3RpdmVRdWVyeVN0YXRlID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmZpbmQoKHF1ZXJ5KSA9PiBxdWVyeS5xdWVyeUhhc2ggPT09IHNlbGVjdGVkUXVlcnlIYXNoKCkpPy5zdGF0ZSwgZmFsc2UpO1xuICBjb25zdCBhY3RpdmVRdWVyeVN0YXRlRGF0YSA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHtcbiAgICByZXR1cm4gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmZpbmQoKHF1ZXJ5KSA9PiBxdWVyeS5xdWVyeUhhc2ggPT09IHNlbGVjdGVkUXVlcnlIYXNoKCkpPy5zdGF0ZS5kYXRhO1xuICB9LCBmYWxzZSk7XG4gIGNvbnN0IHN0YXR1c0xhYmVsID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmZpbmQoKHEpID0+IHEucXVlcnlIYXNoID09PSBzZWxlY3RlZFF1ZXJ5SGFzaCgpKTtcbiAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gXCJpbmFjdGl2ZVwiO1xuICAgIHJldHVybiBnZXRRdWVyeVN0YXR1c0xhYmVsKHF1ZXJ5KTtcbiAgfSk7XG4gIGNvbnN0IHF1ZXJ5U3RhdHVzID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5ID0gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmZpbmQoKHEpID0+IHEucXVlcnlIYXNoID09PSBzZWxlY3RlZFF1ZXJ5SGFzaCgpKTtcbiAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gXCJwZW5kaW5nXCI7XG4gICAgcmV0dXJuIHF1ZXJ5LnN0YXRlLnN0YXR1cztcbiAgfSk7XG4gIGNvbnN0IG9ic2VydmVyQ291bnQgPSBjcmVhdGVTdWJzY3JpYmVUb1F1ZXJ5Q2FjaGVCYXRjaGVyKChxdWVyeUNhY2hlKSA9PiBxdWVyeUNhY2hlKCkuZ2V0QWxsKCkuZmluZCgocXVlcnkpID0+IHF1ZXJ5LnF1ZXJ5SGFzaCA9PT0gc2VsZWN0ZWRRdWVyeUhhc2goKSk/LmdldE9ic2VydmVyc0NvdW50KCkgPz8gMCk7XG4gIGNvbnN0IGNvbG9yID0gY3JlYXRlTWVtbygoKSA9PiBnZXRRdWVyeVN0YXR1c0NvbG9yQnlMYWJlbChzdGF0dXNMYWJlbCgpKSk7XG4gIGNvbnN0IGhhbmRsZVJlZmV0Y2ggPSAoKSA9PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IGFjdGl2ZVF1ZXJ5KCk/LmZldGNoKCk7XG4gICAgcHJvbWlzZT8uY2F0Y2goKCkgPT4ge1xuICAgIH0pO1xuICB9O1xuICBjb25zdCB0cmlnZ2VyRXJyb3IgPSAoZXJyb3JUeXBlKSA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBlcnJvclR5cGU/LmluaXRpYWxpemVyKGFjdGl2ZVF1ZXJ5KCkpID8/IG5ldyBFcnJvcihcIlVua25vd24gZXJyb3IgZnJvbSBkZXZ0b29sc1wiKTtcbiAgICBjb25zdCBfX3ByZXZpb3VzUXVlcnlPcHRpb25zID0gYWN0aXZlUXVlcnkoKS5vcHRpb25zO1xuICAgIGFjdGl2ZVF1ZXJ5KCkuc2V0U3RhdGUoe1xuICAgICAgc3RhdHVzOiBcImVycm9yXCIsXG4gICAgICBlcnJvcixcbiAgICAgIGZldGNoTWV0YToge1xuICAgICAgICAuLi5hY3RpdmVRdWVyeSgpLnN0YXRlLmZldGNoTWV0YSxcbiAgICAgICAgX19wcmV2aW91c1F1ZXJ5T3B0aW9uc1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICBjb25zdCByZXN0b3JlUXVlcnlBZnRlckxvYWRpbmdPckVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IGFjdGl2ZVF1ZXJ5VmFsID0gYWN0aXZlUXVlcnkoKTtcbiAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gYWN0aXZlUXVlcnlWYWwuc3RhdGU7XG4gICAgY29uc3QgcHJldmlvdXNPcHRpb25zID0gYWN0aXZlUXVlcnlWYWwuc3RhdGUuZmV0Y2hNZXRhID8gYWN0aXZlUXVlcnlWYWwuc3RhdGUuZmV0Y2hNZXRhLl9fcHJldmlvdXNRdWVyeU9wdGlvbnMgOiBudWxsO1xuICAgIGFjdGl2ZVF1ZXJ5VmFsLmNhbmNlbCh7XG4gICAgICBzaWxlbnQ6IHRydWVcbiAgICB9KTtcbiAgICBhY3RpdmVRdWVyeVZhbC5zZXRTdGF0ZSh7XG4gICAgICAuLi5wcmV2aW91c1N0YXRlLFxuICAgICAgZmV0Y2hTdGF0dXM6IFwiaWRsZVwiLFxuICAgICAgZmV0Y2hNZXRhOiBudWxsXG4gICAgfSk7XG4gICAgaWYgKHByZXZpb3VzT3B0aW9ucykge1xuICAgICAgYWN0aXZlUXVlcnlWYWwuZmV0Y2gocHJldmlvdXNPcHRpb25zKTtcbiAgICB9XG4gIH07XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXR1c0xhYmVsKCkgIT09IFwiZmV0Y2hpbmdcIikge1xuICAgICAgc2V0UmVzdG9yaW5nTG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgZ2V0UXVlcnlTdGF0dXNDb2xvcnMgPSAoKSA9PiB7XG4gICAgaWYgKGNvbG9yKCkgPT09IFwiZ3JheVwiKSB7XG4gICAgICByZXR1cm4gY3NzYFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVsyMDBdLCBjb2xvcnNbY29sb3IoKV1bNzAwXSl9O1xuICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bNzAwXSwgY29sb3JzW2NvbG9yKCldWzMwMF0pfTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVs0MDBdLCBjb2xvcnNbY29sb3IoKV1bNjAwXSl9O1xuICAgICAgYDtcbiAgICB9XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzEwMF0sIGNvbG9yc1tjb2xvcigpXVs5MDBdKX07XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bNzAwXSwgY29sb3JzW2NvbG9yKCldWzMwMF0pfTtcbiAgICAgIGJvcmRlci1jb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bNDAwXSwgY29sb3JzW2NvbG9yKCldWzYwMF0pfTtcbiAgICBgO1xuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICBnZXQgd2hlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+ICEhYWN0aXZlUXVlcnkoKSkoKSAmJiBhY3RpdmVRdWVyeVN0YXRlKCk7XG4gICAgfSxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICB2YXIgX2VsJDYzID0gX3RtcGwkMzIyKCksIF9lbCQ2NCA9IF9lbCQ2My5maXJzdENoaWxkLCBfZWwkNjUgPSBfZWwkNjQubmV4dFNpYmxpbmcsIF9lbCQ2NiA9IF9lbCQ2NS5maXJzdENoaWxkLCBfZWwkNjcgPSBfZWwkNjYuZmlyc3RDaGlsZCwgX2VsJDY4ID0gX2VsJDY3LmZpcnN0Q2hpbGQsIF9lbCQ2OSA9IF9lbCQ2Ny5uZXh0U2libGluZywgX2VsJDcwID0gX2VsJDY2Lm5leHRTaWJsaW5nLCBfZWwkNzEgPSBfZWwkNzAuZmlyc3RDaGlsZCwgX2VsJDcyID0gX2VsJDcxLm5leHRTaWJsaW5nLCBfZWwkNzMgPSBfZWwkNzAubmV4dFNpYmxpbmcsIF9lbCQ3NCA9IF9lbCQ3My5maXJzdENoaWxkLCBfZWwkNzUgPSBfZWwkNzQubmV4dFNpYmxpbmcsIF9lbCQ3NiA9IF9lbCQ2NS5uZXh0U2libGluZywgX2VsJDc3ID0gX2VsJDc2Lm5leHRTaWJsaW5nLCBfZWwkNzggPSBfZWwkNzcuZmlyc3RDaGlsZCwgX2VsJDc5ID0gX2VsJDc4LmZpcnN0Q2hpbGQsIF9lbCQ4MCA9IF9lbCQ3OC5uZXh0U2libGluZywgX2VsJDgxID0gX2VsJDgwLmZpcnN0Q2hpbGQsIF9lbCQ4MiA9IF9lbCQ4MC5uZXh0U2libGluZywgX2VsJDgzID0gX2VsJDgyLmZpcnN0Q2hpbGQsIF9lbCQ4NCA9IF9lbCQ4Mi5uZXh0U2libGluZywgX2VsJDg1ID0gX2VsJDg0LmZpcnN0Q2hpbGQsIF9lbCQ4NiA9IF9lbCQ4NC5uZXh0U2libGluZywgX2VsJDg3ID0gX2VsJDg2LmZpcnN0Q2hpbGQsIF9lbCQ4OCA9IF9lbCQ4Ny5uZXh0U2libGluZywgX2VsJDk3ID0gX2VsJDc3Lm5leHRTaWJsaW5nOyBfZWwkOTcuZmlyc3RDaGlsZDsgdmFyIF9lbCQxMDcgPSBfZWwkOTcubmV4dFNpYmxpbmcsIF9lbCQxMDggPSBfZWwkMTA3Lm5leHRTaWJsaW5nO1xuICAgICAgaW5zZXJ0KF9lbCQ2OCwgKCkgPT4gZGlzcGxheVZhbHVlKGFjdGl2ZVF1ZXJ5KCkucXVlcnlLZXksIHRydWUpKTtcbiAgICAgIGluc2VydChfZWwkNjksIHN0YXR1c0xhYmVsKTtcbiAgICAgIGluc2VydChfZWwkNzIsIG9ic2VydmVyQ291bnQpO1xuICAgICAgaW5zZXJ0KF9lbCQ3NSwgKCkgPT4gbmV3IERhdGUoYWN0aXZlUXVlcnlTdGF0ZSgpLmRhdGFVcGRhdGVkQXQpLnRvTG9jYWxlVGltZVN0cmluZygpKTtcbiAgICAgIF9lbCQ3OC4kJGNsaWNrID0gaGFuZGxlUmVmZXRjaDtcbiAgICAgIF9lbCQ4MC4kJGNsaWNrID0gKCkgPT4gcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoYWN0aXZlUXVlcnkoKSk7XG4gICAgICBfZWwkODIuJCRjbGljayA9ICgpID0+IHF1ZXJ5Q2xpZW50LnJlc2V0UXVlcmllcyhhY3RpdmVRdWVyeSgpKTtcbiAgICAgIF9lbCQ4NC4kJGNsaWNrID0gKCkgPT4ge1xuICAgICAgICBxdWVyeUNsaWVudC5yZW1vdmVRdWVyaWVzKGFjdGl2ZVF1ZXJ5KCkpO1xuICAgICAgICBzZXRTZWxlY3RlZFF1ZXJ5SGFzaChudWxsKTtcbiAgICAgIH07XG4gICAgICBfZWwkODYuJCRjbGljayA9ICgpID0+IHtcbiAgICAgICAgaWYgKGFjdGl2ZVF1ZXJ5KCk/LnN0YXRlLmRhdGEgPT09IHZvaWQgMCkge1xuICAgICAgICAgIHNldFJlc3RvcmluZ0xvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgcmVzdG9yZVF1ZXJ5QWZ0ZXJMb2FkaW5nT3JFcnJvcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZVF1ZXJ5VmFsID0gYWN0aXZlUXVlcnkoKTtcbiAgICAgICAgICBpZiAoIWFjdGl2ZVF1ZXJ5VmFsKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgX19wcmV2aW91c1F1ZXJ5T3B0aW9ucyA9IGFjdGl2ZVF1ZXJ5VmFsLm9wdGlvbnM7XG4gICAgICAgICAgYWN0aXZlUXVlcnlWYWwuZmV0Y2goe1xuICAgICAgICAgICAgLi4uX19wcmV2aW91c1F1ZXJ5T3B0aW9ucyxcbiAgICAgICAgICAgIHF1ZXJ5Rm46ICgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpID0+IHtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2NUaW1lOiAtMVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFjdGl2ZVF1ZXJ5VmFsLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGRhdGE6IHZvaWQgMCxcbiAgICAgICAgICAgIHN0YXR1czogXCJwZW5kaW5nXCIsXG4gICAgICAgICAgICBmZXRjaE1ldGE6IHtcbiAgICAgICAgICAgICAgLi4uYWN0aXZlUXVlcnlWYWwuc3RhdGUuZmV0Y2hNZXRhLFxuICAgICAgICAgICAgICBfX3ByZXZpb3VzUXVlcnlPcHRpb25zXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBpbnNlcnQoX2VsJDg2LCAoKSA9PiBxdWVyeVN0YXR1cygpID09PSBcInBlbmRpbmdcIiA/IFwiUmVzdG9yZVwiIDogXCJUcmlnZ2VyXCIsIF9lbCQ4OCk7XG4gICAgICBpbnNlcnQoX2VsJDc3LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JUeXBlcygpLmxlbmd0aCA9PT0gMCB8fCBxdWVyeVN0YXR1cygpID09PSBcImVycm9yXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICB2YXIgX2VsJDg5ID0gX3RtcGwkMjgoKSwgX2VsJDkwID0gX2VsJDg5LmZpcnN0Q2hpbGQsIF9lbCQ5MSA9IF9lbCQ5MC5uZXh0U2libGluZztcbiAgICAgICAgICBfZWwkODkuJCRjbGljayA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghYWN0aXZlUXVlcnkoKS5zdGF0ZS5lcnJvcikge1xuICAgICAgICAgICAgICB0cmlnZ2VyRXJyb3IoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHF1ZXJ5Q2xpZW50LnJlc2V0UXVlcmllcyhhY3RpdmVRdWVyeSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGluc2VydChfZWwkODksICgpID0+IHF1ZXJ5U3RhdHVzKCkgPT09IFwiZXJyb3JcIiA/IFwiUmVzdG9yZVwiIDogXCJUcmlnZ2VyXCIsIF9lbCQ5MSk7XG4gICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgICAgICAgIHZhciBfdiQzNCA9IGNsc3goY3NzYFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLnJlZFs1MDBdLCBjb2xvcnMucmVkWzQwMF0pfTtcbiAgICAgICAgICAgICAgICBgLCBcInRzcWQtcXVlcnktZGV0YWlscy1hY3Rpb25zLWJ0blwiLCBcInRzcWQtcXVlcnktZGV0YWlscy1hY3Rpb24tZXJyb3JcIiksIF92JDM1ID0gcXVlcnlTdGF0dXMoKSA9PT0gXCJwZW5kaW5nXCIsIF92JDM2ID0gY3NzYFxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMucmVkWzUwMF0sIGNvbG9ycy5yZWRbNDAwXSl9O1xuICAgICAgICAgICAgICAgIGA7XG4gICAgICAgICAgICBfdiQzNCAhPT0gX3AkLmUgJiYgY2xhc3NOYW1lKF9lbCQ4OSwgX3AkLmUgPSBfdiQzNCk7XG4gICAgICAgICAgICBfdiQzNSAhPT0gX3AkLnQgJiYgKF9lbCQ4OS5kaXNhYmxlZCA9IF9wJC50ID0gX3YkMzUpO1xuICAgICAgICAgICAgX3YkMzYgIT09IF9wJC5hICYmIGNsYXNzTmFtZShfZWwkOTAsIF9wJC5hID0gX3YkMzYpO1xuICAgICAgICAgICAgcmV0dXJuIF9wJDtcbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICBlOiB2b2lkIDAsXG4gICAgICAgICAgICB0OiB2b2lkIDAsXG4gICAgICAgICAgICBhOiB2b2lkIDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gX2VsJDg5O1xuICAgICAgICB9XG4gICAgICB9KSwgbnVsbCk7XG4gICAgICBpbnNlcnQoX2VsJDc3LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICByZXR1cm4gIShlcnJvclR5cGVzKCkubGVuZ3RoID09PSAwIHx8IHF1ZXJ5U3RhdHVzKCkgPT09IFwiZXJyb3JcIik7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICB2YXIgX2VsJDkyID0gX3RtcGwkMjkoKSwgX2VsJDkzID0gX2VsJDkyLmZpcnN0Q2hpbGQsIF9lbCQ5NCA9IF9lbCQ5My5uZXh0U2libGluZywgX2VsJDk1ID0gX2VsJDk0Lm5leHRTaWJsaW5nOyBfZWwkOTUuZmlyc3RDaGlsZDtcbiAgICAgICAgICBfZWwkOTUuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoZTIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yVHlwZSA9IGVycm9yVHlwZXMoKS5maW5kKChldCkgPT4gZXQubmFtZSA9PT0gZTIuY3VycmVudFRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICB0cmlnZ2VyRXJyb3IoZXJyb3JUeXBlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpbnNlcnQoX2VsJDk1LCBjcmVhdGVDb21wb25lbnQoRm9yLCB7XG4gICAgICAgICAgICBnZXQgZWFjaCgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGVycm9yVHlwZXMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGlsZHJlbjogKGVycm9yVHlwZSkgPT4gKCgpID0+IHtcbiAgICAgICAgICAgICAgdmFyIF9lbCQxMDkgPSBfdG1wbCQzMzIoKTtcbiAgICAgICAgICAgICAgaW5zZXJ0KF9lbCQxMDksICgpID0+IGVycm9yVHlwZS5uYW1lKTtcbiAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IF9lbCQxMDkudmFsdWUgPSBlcnJvclR5cGUubmFtZSk7XG4gICAgICAgICAgICAgIHJldHVybiBfZWwkMTA5O1xuICAgICAgICAgICAgfSkoKVxuICAgICAgICAgIH0pLCBudWxsKTtcbiAgICAgICAgICBpbnNlcnQoX2VsJDkyLCBjcmVhdGVDb21wb25lbnQoQ2hldnJvbkRvd24sIHt9KSwgbnVsbCk7XG4gICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgICAgICAgIHZhciBfdiQzNyA9IGNsc3goc3R5bGVzKCkuYWN0aW9uc1NlbGVjdCwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtYWN0aW9ucy1idG5cIiwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtYWN0aW9uLWVycm9yLW11bHRpcGxlXCIpLCBfdiQzOCA9IGNzc2BcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dG9rZW5zLmNvbG9ycy5yZWRbNDAwXX07XG4gICAgICAgICAgICAgICAgYCwgX3YkMzkgPSBxdWVyeVN0YXR1cygpID09PSBcInBlbmRpbmdcIjtcbiAgICAgICAgICAgIF92JDM3ICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDkyLCBfcCQuZSA9IF92JDM3KTtcbiAgICAgICAgICAgIF92JDM4ICE9PSBfcCQudCAmJiBjbGFzc05hbWUoX2VsJDkzLCBfcCQudCA9IF92JDM4KTtcbiAgICAgICAgICAgIF92JDM5ICE9PSBfcCQuYSAmJiAoX2VsJDk1LmRpc2FibGVkID0gX3AkLmEgPSBfdiQzOSk7XG4gICAgICAgICAgICByZXR1cm4gX3AkO1xuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgIGU6IHZvaWQgMCxcbiAgICAgICAgICAgIHQ6IHZvaWQgMCxcbiAgICAgICAgICAgIGE6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBfZWwkOTI7XG4gICAgICAgIH1cbiAgICAgIH0pLCBudWxsKTtcbiAgICAgIGluc2VydChfZWwkOTcsICgpID0+IGRhdGFNb2RlKCkgPT09IFwidmlld1wiID8gXCJFeHBsb3JlclwiIDogXCJFZGl0b3JcIiwgbnVsbCk7XG4gICAgICBpbnNlcnQoX2VsJDYzLCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YU1vZGUoKSA9PT0gXCJ2aWV3XCI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICB2YXIgX2VsJDk5ID0gX3RtcGwkMzAoKTtcbiAgICAgICAgICBpbnNlcnQoX2VsJDk5LCBjcmVhdGVDb21wb25lbnQoRXhwbG9yZXIsIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIkRhdGFcIixcbiAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZDogW1wiRGF0YVwiXSxcbiAgICAgICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZVF1ZXJ5U3RhdGVEYXRhKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICBvbkVkaXQ6ICgpID0+IHNldERhdGFNb2RlKFwiZWRpdFwiKSxcbiAgICAgICAgICAgIGdldCBhY3RpdmVRdWVyeSgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZVF1ZXJ5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoXyRwKSA9PiAoXyRwID0gdG9rZW5zLnNpemVbMl0pICE9IG51bGwgPyBfZWwkOTkuc3R5bGUuc2V0UHJvcGVydHkoXCJwYWRkaW5nXCIsIF8kcCkgOiBfZWwkOTkuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJwYWRkaW5nXCIpKTtcbiAgICAgICAgICByZXR1cm4gX2VsJDk5O1xuICAgICAgICB9XG4gICAgICB9KSwgX2VsJDEwNyk7XG4gICAgICBpbnNlcnQoX2VsJDYzLCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YU1vZGUoKSA9PT0gXCJlZGl0XCI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICB2YXIgX2VsJDEwMCA9IF90bXBsJDMxKCksIF9lbCQxMDEgPSBfZWwkMTAwLmZpcnN0Q2hpbGQsIF9lbCQxMDIgPSBfZWwkMTAxLm5leHRTaWJsaW5nLCBfZWwkMTAzID0gX2VsJDEwMi5maXJzdENoaWxkLCBfZWwkMTA0ID0gX2VsJDEwMy5uZXh0U2libGluZywgX2VsJDEwNSA9IF9lbCQxMDQuZmlyc3RDaGlsZCwgX2VsJDEwNiA9IF9lbCQxMDUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgX2VsJDEwMC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIChlMikgPT4ge1xuICAgICAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKGUyLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGZvcm1EYXRhLmdldChcImRhdGFcIik7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBwYXJzZWREYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICAgICAgYWN0aXZlUXVlcnkoKS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgLi4uYWN0aXZlUXVlcnkoKS5zdGF0ZSxcbiAgICAgICAgICAgICAgICBkYXRhOiBwYXJzZWREYXRhXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBzZXREYXRhTW9kZShcInZpZXdcIik7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBzZXREYXRhRWRpdEVycm9yKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9lbCQxMDEuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsICgpID0+IHNldERhdGFFZGl0RXJyb3IoZmFsc2UpKTtcbiAgICAgICAgICBpbnNlcnQoX2VsJDEwMywgKCkgPT4gZGF0YUVkaXRFcnJvcigpID8gXCJJbnZhbGlkIFZhbHVlXCIgOiBcIlwiKTtcbiAgICAgICAgICBfZWwkMTA1LiQkY2xpY2sgPSAoKSA9PiBzZXREYXRhTW9kZShcInZpZXdcIik7XG4gICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgICAgICAgIHZhciBfdiQ0MCA9IGNsc3goc3R5bGVzKCkuZGV2dG9vbHNFZGl0Rm9ybSwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtZGF0YS1lZGl0b3JcIiksIF92JDQxID0gc3R5bGVzKCkuZGV2dG9vbHNFZGl0VGV4dGFyZWEsIF92JDQyID0gZGF0YUVkaXRFcnJvcigpLCBfdiQ0MyA9IHN0eWxlcygpLmRldnRvb2xzRWRpdEZvcm1BY3Rpb25zLCBfdiQ0NCA9IHN0eWxlcygpLmRldnRvb2xzRWRpdEZvcm1FcnJvciwgX3YkNDUgPSBzdHlsZXMoKS5kZXZ0b29sc0VkaXRGb3JtQWN0aW9uQ29udGFpbmVyLCBfdiQ0NiA9IGNsc3goc3R5bGVzKCkuZGV2dG9vbHNFZGl0Rm9ybUFjdGlvbiwgY3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzYwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgICAgICAgICAgICAgICAgYCksIF92JDQ3ID0gY2xzeChzdHlsZXMoKS5kZXZ0b29sc0VkaXRGb3JtQWN0aW9uLCBjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmJsdWVbNjAwXSwgY29sb3JzLmJsdWVbNDAwXSl9O1xuICAgICAgICAgICAgICAgICAgICBgKTtcbiAgICAgICAgICAgIF92JDQwICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDEwMCwgX3AkLmUgPSBfdiQ0MCk7XG4gICAgICAgICAgICBfdiQ0MSAhPT0gX3AkLnQgJiYgY2xhc3NOYW1lKF9lbCQxMDEsIF9wJC50ID0gX3YkNDEpO1xuICAgICAgICAgICAgX3YkNDIgIT09IF9wJC5hICYmIHNldEF0dHJpYnV0ZShfZWwkMTAxLCBcImRhdGEtZXJyb3JcIiwgX3AkLmEgPSBfdiQ0Mik7XG4gICAgICAgICAgICBfdiQ0MyAhPT0gX3AkLm8gJiYgY2xhc3NOYW1lKF9lbCQxMDIsIF9wJC5vID0gX3YkNDMpO1xuICAgICAgICAgICAgX3YkNDQgIT09IF9wJC5pICYmIGNsYXNzTmFtZShfZWwkMTAzLCBfcCQuaSA9IF92JDQ0KTtcbiAgICAgICAgICAgIF92JDQ1ICE9PSBfcCQubiAmJiBjbGFzc05hbWUoX2VsJDEwNCwgX3AkLm4gPSBfdiQ0NSk7XG4gICAgICAgICAgICBfdiQ0NiAhPT0gX3AkLnMgJiYgY2xhc3NOYW1lKF9lbCQxMDUsIF9wJC5zID0gX3YkNDYpO1xuICAgICAgICAgICAgX3YkNDcgIT09IF9wJC5oICYmIGNsYXNzTmFtZShfZWwkMTA2LCBfcCQuaCA9IF92JDQ3KTtcbiAgICAgICAgICAgIHJldHVybiBfcCQ7XG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgZTogdm9pZCAwLFxuICAgICAgICAgICAgdDogdm9pZCAwLFxuICAgICAgICAgICAgYTogdm9pZCAwLFxuICAgICAgICAgICAgbzogdm9pZCAwLFxuICAgICAgICAgICAgaTogdm9pZCAwLFxuICAgICAgICAgICAgbjogdm9pZCAwLFxuICAgICAgICAgICAgczogdm9pZCAwLFxuICAgICAgICAgICAgaDogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IF9lbCQxMDEudmFsdWUgPSBKU09OLnN0cmluZ2lmeShhY3RpdmVRdWVyeVN0YXRlRGF0YSgpLCBudWxsLCAyKSk7XG4gICAgICAgICAgcmV0dXJuIF9lbCQxMDA7XG4gICAgICAgIH1cbiAgICAgIH0pLCBfZWwkMTA3KTtcbiAgICAgIGluc2VydChfZWwkMTA4LCBjcmVhdGVDb21wb25lbnQoRXhwbG9yZXIsIHtcbiAgICAgICAgbGFiZWw6IFwiUXVlcnlcIixcbiAgICAgICAgZGVmYXVsdEV4cGFuZGVkOiBbXCJRdWVyeVwiLCBcInF1ZXJ5S2V5XCJdLFxuICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZVF1ZXJ5RnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgICAgdmFyIF92JDQ4ID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzQ29udGFpbmVyLCBcInRzcWQtcXVlcnktZGV0YWlscy1jb250YWluZXJcIiksIF92JDQ5ID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzSGVhZGVyLCBcInRzcWQtcXVlcnktZGV0YWlscy1oZWFkZXJcIiksIF92JDUwID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzQm9keSwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtc3VtbWFyeS1jb250YWluZXJcIiksIF92JDUxID0gY2xzeChzdHlsZXMoKS5xdWVyeURldGFpbHNTdGF0dXMsIGdldFF1ZXJ5U3RhdHVzQ29sb3JzKCkpLCBfdiQ1MiA9IGNsc3goc3R5bGVzKCkuZGV0YWlsc0hlYWRlciwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtaGVhZGVyXCIpLCBfdiQ1MyA9IGNsc3goc3R5bGVzKCkuYWN0aW9uc0JvZHksIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbnMtY29udGFpbmVyXCIpLCBfdiQ1NCA9IGNsc3goY3NzYFxuICAgICAgICAgICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ibHVlWzYwMF0sIGNvbG9ycy5ibHVlWzQwMF0pfTtcbiAgICAgICAgICAgICAgYCwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtYWN0aW9ucy1idG5cIiwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtYWN0aW9uLXJlZmV0Y2hcIiksIF92JDU1ID0gc3RhdHVzTGFiZWwoKSA9PT0gXCJmZXRjaGluZ1wiLCBfdiQ1NiA9IGNzc2BcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ibHVlWzYwMF0sIGNvbG9ycy5ibHVlWzQwMF0pfTtcbiAgICAgICAgICAgICAgYCwgX3YkNTcgPSBjbHN4KGNzc2BcbiAgICAgICAgICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMueWVsbG93WzYwMF0sIGNvbG9ycy55ZWxsb3dbNDAwXSl9O1xuICAgICAgICAgICAgICBgLCBcInRzcWQtcXVlcnktZGV0YWlscy1hY3Rpb25zLWJ0blwiLCBcInRzcWQtcXVlcnktZGV0YWlscy1hY3Rpb24taW52YWxpZGF0ZVwiKSwgX3YkNTggPSBxdWVyeVN0YXR1cygpID09PSBcInBlbmRpbmdcIiwgX3YkNTkgPSBjc3NgXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMueWVsbG93WzYwMF0sIGNvbG9ycy55ZWxsb3dbNDAwXSl9O1xuICAgICAgICAgICAgICBgLCBfdiQ2MCA9IGNsc3goY3NzYFxuICAgICAgICAgICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzYwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgICAgICAgICAgYCwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtYWN0aW9ucy1idG5cIiwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtYWN0aW9uLXJlc2V0XCIpLCBfdiQ2MSA9IHF1ZXJ5U3RhdHVzKCkgPT09IFwicGVuZGluZ1wiLCBfdiQ2MiA9IGNzc2BcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzYwMF0sIGNvbG9ycy5ncmF5WzQwMF0pfTtcbiAgICAgICAgICAgICAgYCwgX3YkNjMgPSBjbHN4KGNzc2BcbiAgICAgICAgICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMucGlua1s1MDBdLCBjb2xvcnMucGlua1s0MDBdKX07XG4gICAgICAgICAgICAgIGAsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbnMtYnRuXCIsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbi1yZW1vdmVcIiksIF92JDY0ID0gc3RhdHVzTGFiZWwoKSA9PT0gXCJmZXRjaGluZ1wiLCBfdiQ2NSA9IGNzc2BcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5waW5rWzUwMF0sIGNvbG9ycy5waW5rWzQwMF0pfTtcbiAgICAgICAgICAgICAgYCwgX3YkNjYgPSBjbHN4KGNzc2BcbiAgICAgICAgICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMuY3lhbls1MDBdLCBjb2xvcnMuY3lhbls0MDBdKX07XG4gICAgICAgICAgICAgIGAsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbnMtYnRuXCIsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbi1sb2FkaW5nXCIpLCBfdiQ2NyA9IHJlc3RvcmluZ0xvYWRpbmcoKSwgX3YkNjggPSBjc3NgXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuY3lhbls1MDBdLCBjb2xvcnMuY3lhbls0MDBdKX07XG4gICAgICAgICAgICAgIGAsIF92JDY5ID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzSGVhZGVyLCBcInRzcWQtcXVlcnktZGV0YWlscy1oZWFkZXJcIiksIF92JDcwID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzSGVhZGVyLCBcInRzcWQtcXVlcnktZGV0YWlscy1oZWFkZXJcIiksIF92JDcxID0gdG9rZW5zLnNpemVbMl07XG4gICAgICAgIF92JDQ4ICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDYzLCBfcCQuZSA9IF92JDQ4KTtcbiAgICAgICAgX3YkNDkgIT09IF9wJC50ICYmIGNsYXNzTmFtZShfZWwkNjQsIF9wJC50ID0gX3YkNDkpO1xuICAgICAgICBfdiQ1MCAhPT0gX3AkLmEgJiYgY2xhc3NOYW1lKF9lbCQ2NSwgX3AkLmEgPSBfdiQ1MCk7XG4gICAgICAgIF92JDUxICE9PSBfcCQubyAmJiBjbGFzc05hbWUoX2VsJDY5LCBfcCQubyA9IF92JDUxKTtcbiAgICAgICAgX3YkNTIgIT09IF9wJC5pICYmIGNsYXNzTmFtZShfZWwkNzYsIF9wJC5pID0gX3YkNTIpO1xuICAgICAgICBfdiQ1MyAhPT0gX3AkLm4gJiYgY2xhc3NOYW1lKF9lbCQ3NywgX3AkLm4gPSBfdiQ1Myk7XG4gICAgICAgIF92JDU0ICE9PSBfcCQucyAmJiBjbGFzc05hbWUoX2VsJDc4LCBfcCQucyA9IF92JDU0KTtcbiAgICAgICAgX3YkNTUgIT09IF9wJC5oICYmIChfZWwkNzguZGlzYWJsZWQgPSBfcCQuaCA9IF92JDU1KTtcbiAgICAgICAgX3YkNTYgIT09IF9wJC5yICYmIGNsYXNzTmFtZShfZWwkNzksIF9wJC5yID0gX3YkNTYpO1xuICAgICAgICBfdiQ1NyAhPT0gX3AkLmQgJiYgY2xhc3NOYW1lKF9lbCQ4MCwgX3AkLmQgPSBfdiQ1Nyk7XG4gICAgICAgIF92JDU4ICE9PSBfcCQubCAmJiAoX2VsJDgwLmRpc2FibGVkID0gX3AkLmwgPSBfdiQ1OCk7XG4gICAgICAgIF92JDU5ICE9PSBfcCQudSAmJiBjbGFzc05hbWUoX2VsJDgxLCBfcCQudSA9IF92JDU5KTtcbiAgICAgICAgX3YkNjAgIT09IF9wJC5jICYmIGNsYXNzTmFtZShfZWwkODIsIF9wJC5jID0gX3YkNjApO1xuICAgICAgICBfdiQ2MSAhPT0gX3AkLncgJiYgKF9lbCQ4Mi5kaXNhYmxlZCA9IF9wJC53ID0gX3YkNjEpO1xuICAgICAgICBfdiQ2MiAhPT0gX3AkLm0gJiYgY2xhc3NOYW1lKF9lbCQ4MywgX3AkLm0gPSBfdiQ2Mik7XG4gICAgICAgIF92JDYzICE9PSBfcCQuZiAmJiBjbGFzc05hbWUoX2VsJDg0LCBfcCQuZiA9IF92JDYzKTtcbiAgICAgICAgX3YkNjQgIT09IF9wJC55ICYmIChfZWwkODQuZGlzYWJsZWQgPSBfcCQueSA9IF92JDY0KTtcbiAgICAgICAgX3YkNjUgIT09IF9wJC5nICYmIGNsYXNzTmFtZShfZWwkODUsIF9wJC5nID0gX3YkNjUpO1xuICAgICAgICBfdiQ2NiAhPT0gX3AkLnAgJiYgY2xhc3NOYW1lKF9lbCQ4NiwgX3AkLnAgPSBfdiQ2Nik7XG4gICAgICAgIF92JDY3ICE9PSBfcCQuYiAmJiAoX2VsJDg2LmRpc2FibGVkID0gX3AkLmIgPSBfdiQ2Nyk7XG4gICAgICAgIF92JDY4ICE9PSBfcCQuVCAmJiBjbGFzc05hbWUoX2VsJDg3LCBfcCQuVCA9IF92JDY4KTtcbiAgICAgICAgX3YkNjkgIT09IF9wJC5BICYmIGNsYXNzTmFtZShfZWwkOTcsIF9wJC5BID0gX3YkNjkpO1xuICAgICAgICBfdiQ3MCAhPT0gX3AkLk8gJiYgY2xhc3NOYW1lKF9lbCQxMDcsIF9wJC5PID0gX3YkNzApO1xuICAgICAgICBfdiQ3MSAhPT0gX3AkLkkgJiYgKChfcCQuSSA9IF92JDcxKSAhPSBudWxsID8gX2VsJDEwOC5zdHlsZS5zZXRQcm9wZXJ0eShcInBhZGRpbmdcIiwgX3YkNzEpIDogX2VsJDEwOC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInBhZGRpbmdcIikpO1xuICAgICAgICByZXR1cm4gX3AkO1xuICAgICAgfSwge1xuICAgICAgICBlOiB2b2lkIDAsXG4gICAgICAgIHQ6IHZvaWQgMCxcbiAgICAgICAgYTogdm9pZCAwLFxuICAgICAgICBvOiB2b2lkIDAsXG4gICAgICAgIGk6IHZvaWQgMCxcbiAgICAgICAgbjogdm9pZCAwLFxuICAgICAgICBzOiB2b2lkIDAsXG4gICAgICAgIGg6IHZvaWQgMCxcbiAgICAgICAgcjogdm9pZCAwLFxuICAgICAgICBkOiB2b2lkIDAsXG4gICAgICAgIGw6IHZvaWQgMCxcbiAgICAgICAgdTogdm9pZCAwLFxuICAgICAgICBjOiB2b2lkIDAsXG4gICAgICAgIHc6IHZvaWQgMCxcbiAgICAgICAgbTogdm9pZCAwLFxuICAgICAgICBmOiB2b2lkIDAsXG4gICAgICAgIHk6IHZvaWQgMCxcbiAgICAgICAgZzogdm9pZCAwLFxuICAgICAgICBwOiB2b2lkIDAsXG4gICAgICAgIGI6IHZvaWQgMCxcbiAgICAgICAgVDogdm9pZCAwLFxuICAgICAgICBBOiB2b2lkIDAsXG4gICAgICAgIE86IHZvaWQgMCxcbiAgICAgICAgSTogdm9pZCAwXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBfZWwkNjM7XG4gICAgfVxuICB9KTtcbn07XG52YXIgTXV0YXRpb25EZXRhaWxzID0gKCkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGNzcyA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0ID8gdS5iaW5kKHtcbiAgICB0YXJnZXQ6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0XG4gIH0pIDogdTtcbiAgY29uc3Qgc3R5bGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFya1N0eWxlczIoY3NzKSA6IGxpZ2h0U3R5bGVzMihjc3MpO1xuICB9KTtcbiAgY29uc3Qge1xuICAgIGNvbG9yc1xuICB9ID0gdG9rZW5zO1xuICBjb25zdCB0MiA9IChsaWdodCwgZGFyaykgPT4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrIDogbGlnaHQ7XG4gIGNvbnN0IGlzUGF1c2VkID0gY3JlYXRlU3Vic2NyaWJlVG9NdXRhdGlvbkNhY2hlQmF0Y2hlcigobXV0YXRpb25DYWNoZSkgPT4ge1xuICAgIGNvbnN0IG11dGF0aW9ucyA9IG11dGF0aW9uQ2FjaGUoKS5nZXRBbGwoKTtcbiAgICBjb25zdCBtdXRhdGlvbiA9IG11dGF0aW9ucy5maW5kKChtKSA9PiBtLm11dGF0aW9uSWQgPT09IHNlbGVjdGVkTXV0YXRpb25JZCgpKTtcbiAgICBpZiAoIW11dGF0aW9uKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIG11dGF0aW9uLnN0YXRlLmlzUGF1c2VkO1xuICB9KTtcbiAgY29uc3Qgc3RhdHVzID0gY3JlYXRlU3Vic2NyaWJlVG9NdXRhdGlvbkNhY2hlQmF0Y2hlcigobXV0YXRpb25DYWNoZSkgPT4ge1xuICAgIGNvbnN0IG11dGF0aW9ucyA9IG11dGF0aW9uQ2FjaGUoKS5nZXRBbGwoKTtcbiAgICBjb25zdCBtdXRhdGlvbiA9IG11dGF0aW9ucy5maW5kKChtKSA9PiBtLm11dGF0aW9uSWQgPT09IHNlbGVjdGVkTXV0YXRpb25JZCgpKTtcbiAgICBpZiAoIW11dGF0aW9uKSByZXR1cm4gXCJpZGxlXCI7XG4gICAgcmV0dXJuIG11dGF0aW9uLnN0YXRlLnN0YXR1cztcbiAgfSk7XG4gIGNvbnN0IGNvbG9yID0gY3JlYXRlTWVtbygoKSA9PiBnZXRNdXRhdGlvblN0YXR1c0NvbG9yKHtcbiAgICBpc1BhdXNlZDogaXNQYXVzZWQoKSxcbiAgICBzdGF0dXM6IHN0YXR1cygpXG4gIH0pKTtcbiAgY29uc3QgYWN0aXZlTXV0YXRpb24gPSBjcmVhdGVTdWJzY3JpYmVUb011dGF0aW9uQ2FjaGVCYXRjaGVyKChtdXRhdGlvbkNhY2hlKSA9PiBtdXRhdGlvbkNhY2hlKCkuZ2V0QWxsKCkuZmluZCgobXV0YXRpb24pID0+IG11dGF0aW9uLm11dGF0aW9uSWQgPT09IHNlbGVjdGVkTXV0YXRpb25JZCgpKSwgZmFsc2UpO1xuICBjb25zdCBnZXRRdWVyeVN0YXR1c0NvbG9ycyA9ICgpID0+IHtcbiAgICBpZiAoY29sb3IoKSA9PT0gXCJncmF5XCIpIHtcbiAgICAgIHJldHVybiBjc3NgXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzIwMF0sIGNvbG9yc1tjb2xvcigpXVs3MDBdKX07XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVs3MDBdLCBjb2xvcnNbY29sb3IoKV1bMzAwXSl9O1xuICAgICAgICBib3JkZXItY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzQwMF0sIGNvbG9yc1tjb2xvcigpXVs2MDBdKX07XG4gICAgICBgO1xuICAgIH1cbiAgICByZXR1cm4gY3NzYFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bMTAwXSwgY29sb3JzW2NvbG9yKCldWzkwMF0pfTtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVs3MDBdLCBjb2xvcnNbY29sb3IoKV1bMzAwXSl9O1xuICAgICAgYm9yZGVyLWNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVs0MDBdLCBjb2xvcnNbY29sb3IoKV1bNjAwXSl9O1xuICAgIGA7XG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgIGdldCB3aGVuKCkge1xuICAgICAgcmV0dXJuIGFjdGl2ZU11dGF0aW9uKCk7XG4gICAgfSxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICB2YXIgX2VsJDExMCA9IF90bXBsJDM0KCksIF9lbCQxMTEgPSBfZWwkMTEwLmZpcnN0Q2hpbGQsIF9lbCQxMTIgPSBfZWwkMTExLm5leHRTaWJsaW5nLCBfZWwkMTEzID0gX2VsJDExMi5maXJzdENoaWxkLCBfZWwkMTE0ID0gX2VsJDExMy5maXJzdENoaWxkLCBfZWwkMTE1ID0gX2VsJDExNC5maXJzdENoaWxkLCBfZWwkMTE2ID0gX2VsJDExNC5uZXh0U2libGluZywgX2VsJDExNyA9IF9lbCQxMTMubmV4dFNpYmxpbmcsIF9lbCQxMTggPSBfZWwkMTE3LmZpcnN0Q2hpbGQsIF9lbCQxMTkgPSBfZWwkMTE4Lm5leHRTaWJsaW5nLCBfZWwkMTIwID0gX2VsJDExMi5uZXh0U2libGluZywgX2VsJDEyMSA9IF9lbCQxMjAubmV4dFNpYmxpbmcsIF9lbCQxMjIgPSBfZWwkMTIxLm5leHRTaWJsaW5nLCBfZWwkMTIzID0gX2VsJDEyMi5uZXh0U2libGluZywgX2VsJDEyNCA9IF9lbCQxMjMubmV4dFNpYmxpbmcsIF9lbCQxMjUgPSBfZWwkMTI0Lm5leHRTaWJsaW5nLCBfZWwkMTI2ID0gX2VsJDEyNS5uZXh0U2libGluZywgX2VsJDEyNyA9IF9lbCQxMjYubmV4dFNpYmxpbmc7XG4gICAgICBpbnNlcnQoX2VsJDExNSwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZU11dGF0aW9uKCkub3B0aW9ucy5tdXRhdGlvbktleTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFsbGJhY2s6IFwiTm8gbXV0YXRpb25LZXkgZm91bmRcIixcbiAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgIHJldHVybiBkaXNwbGF5VmFsdWUoYWN0aXZlTXV0YXRpb24oKS5vcHRpb25zLm11dGF0aW9uS2V5LCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgICAgaW5zZXJ0KF9lbCQxMTYsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgIHJldHVybiBjb2xvcigpID09PSBcInB1cnBsZVwiO1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogXCJwZW5kaW5nXCJcbiAgICAgIH0pLCBudWxsKTtcbiAgICAgIGluc2VydChfZWwkMTE2LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICByZXR1cm4gY29sb3IoKSAhPT0gXCJwdXJwbGVcIjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgIHJldHVybiBzdGF0dXMoKTtcbiAgICAgICAgfVxuICAgICAgfSksIG51bGwpO1xuICAgICAgaW5zZXJ0KF9lbCQxMTksICgpID0+IG5ldyBEYXRlKGFjdGl2ZU11dGF0aW9uKCkuc3RhdGUuc3VibWl0dGVkQXQpLnRvTG9jYWxlVGltZVN0cmluZygpKTtcbiAgICAgIGluc2VydChfZWwkMTIxLCBjcmVhdGVDb21wb25lbnQoRXhwbG9yZXIsIHtcbiAgICAgICAgbGFiZWw6IFwiVmFyaWFibGVzXCIsXG4gICAgICAgIGRlZmF1bHRFeHBhbmRlZDogW1wiVmFyaWFibGVzXCJdLFxuICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZU11dGF0aW9uKCkuc3RhdGUudmFyaWFibGVzO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgICBpbnNlcnQoX2VsJDEyMywgY3JlYXRlQ29tcG9uZW50KEV4cGxvcmVyLCB7XG4gICAgICAgIGxhYmVsOiBcIkNvbnRleHRcIixcbiAgICAgICAgZGVmYXVsdEV4cGFuZGVkOiBbXCJDb250ZXh0XCJdLFxuICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZU11dGF0aW9uKCkuc3RhdGUuY29udGV4dDtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgICAgaW5zZXJ0KF9lbCQxMjUsIGNyZWF0ZUNvbXBvbmVudChFeHBsb3Jlciwge1xuICAgICAgICBsYWJlbDogXCJEYXRhXCIsXG4gICAgICAgIGRlZmF1bHRFeHBhbmRlZDogW1wiRGF0YVwiXSxcbiAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgIHJldHVybiBhY3RpdmVNdXRhdGlvbigpLnN0YXRlLmRhdGE7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICAgIGluc2VydChfZWwkMTI3LCBjcmVhdGVDb21wb25lbnQoRXhwbG9yZXIsIHtcbiAgICAgICAgbGFiZWw6IFwiTXV0YXRpb25cIixcbiAgICAgICAgZGVmYXVsdEV4cGFuZGVkOiBbXCJNdXRhdGlvblwiXSxcbiAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgIHJldHVybiBhY3RpdmVNdXRhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKF9wJCkgPT4ge1xuICAgICAgICB2YXIgX3YkNzIgPSBjbHN4KHN0eWxlcygpLmRldGFpbHNDb250YWluZXIsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWNvbnRhaW5lclwiKSwgX3YkNzMgPSBjbHN4KHN0eWxlcygpLmRldGFpbHNIZWFkZXIsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWhlYWRlclwiKSwgX3YkNzQgPSBjbHN4KHN0eWxlcygpLmRldGFpbHNCb2R5LCBcInRzcWQtcXVlcnktZGV0YWlscy1zdW1tYXJ5LWNvbnRhaW5lclwiKSwgX3YkNzUgPSBjbHN4KHN0eWxlcygpLnF1ZXJ5RGV0YWlsc1N0YXR1cywgZ2V0UXVlcnlTdGF0dXNDb2xvcnMoKSksIF92JDc2ID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzSGVhZGVyLCBcInRzcWQtcXVlcnktZGV0YWlscy1oZWFkZXJcIiksIF92JDc3ID0gdG9rZW5zLnNpemVbMl0sIF92JDc4ID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzSGVhZGVyLCBcInRzcWQtcXVlcnktZGV0YWlscy1oZWFkZXJcIiksIF92JDc5ID0gdG9rZW5zLnNpemVbMl0sIF92JDgwID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzSGVhZGVyLCBcInRzcWQtcXVlcnktZGV0YWlscy1oZWFkZXJcIiksIF92JDgxID0gdG9rZW5zLnNpemVbMl0sIF92JDgyID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzSGVhZGVyLCBcInRzcWQtcXVlcnktZGV0YWlscy1oZWFkZXJcIiksIF92JDgzID0gdG9rZW5zLnNpemVbMl07XG4gICAgICAgIF92JDcyICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDExMCwgX3AkLmUgPSBfdiQ3Mik7XG4gICAgICAgIF92JDczICE9PSBfcCQudCAmJiBjbGFzc05hbWUoX2VsJDExMSwgX3AkLnQgPSBfdiQ3Myk7XG4gICAgICAgIF92JDc0ICE9PSBfcCQuYSAmJiBjbGFzc05hbWUoX2VsJDExMiwgX3AkLmEgPSBfdiQ3NCk7XG4gICAgICAgIF92JDc1ICE9PSBfcCQubyAmJiBjbGFzc05hbWUoX2VsJDExNiwgX3AkLm8gPSBfdiQ3NSk7XG4gICAgICAgIF92JDc2ICE9PSBfcCQuaSAmJiBjbGFzc05hbWUoX2VsJDEyMCwgX3AkLmkgPSBfdiQ3Nik7XG4gICAgICAgIF92JDc3ICE9PSBfcCQubiAmJiAoKF9wJC5uID0gX3YkNzcpICE9IG51bGwgPyBfZWwkMTIxLnN0eWxlLnNldFByb3BlcnR5KFwicGFkZGluZ1wiLCBfdiQ3NykgOiBfZWwkMTIxLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwicGFkZGluZ1wiKSk7XG4gICAgICAgIF92JDc4ICE9PSBfcCQucyAmJiBjbGFzc05hbWUoX2VsJDEyMiwgX3AkLnMgPSBfdiQ3OCk7XG4gICAgICAgIF92JDc5ICE9PSBfcCQuaCAmJiAoKF9wJC5oID0gX3YkNzkpICE9IG51bGwgPyBfZWwkMTIzLnN0eWxlLnNldFByb3BlcnR5KFwicGFkZGluZ1wiLCBfdiQ3OSkgOiBfZWwkMTIzLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwicGFkZGluZ1wiKSk7XG4gICAgICAgIF92JDgwICE9PSBfcCQuciAmJiBjbGFzc05hbWUoX2VsJDEyNCwgX3AkLnIgPSBfdiQ4MCk7XG4gICAgICAgIF92JDgxICE9PSBfcCQuZCAmJiAoKF9wJC5kID0gX3YkODEpICE9IG51bGwgPyBfZWwkMTI1LnN0eWxlLnNldFByb3BlcnR5KFwicGFkZGluZ1wiLCBfdiQ4MSkgOiBfZWwkMTI1LnN0eWxlLnJlbW92ZVByb3BlcnR5KFwicGFkZGluZ1wiKSk7XG4gICAgICAgIF92JDgyICE9PSBfcCQubCAmJiBjbGFzc05hbWUoX2VsJDEyNiwgX3AkLmwgPSBfdiQ4Mik7XG4gICAgICAgIF92JDgzICE9PSBfcCQudSAmJiAoKF9wJC51ID0gX3YkODMpICE9IG51bGwgPyBfZWwkMTI3LnN0eWxlLnNldFByb3BlcnR5KFwicGFkZGluZ1wiLCBfdiQ4MykgOiBfZWwkMTI3LnN0eWxlLnJlbW92ZVByb3BlcnR5KFwicGFkZGluZ1wiKSk7XG4gICAgICAgIHJldHVybiBfcCQ7XG4gICAgICB9LCB7XG4gICAgICAgIGU6IHZvaWQgMCxcbiAgICAgICAgdDogdm9pZCAwLFxuICAgICAgICBhOiB2b2lkIDAsXG4gICAgICAgIG86IHZvaWQgMCxcbiAgICAgICAgaTogdm9pZCAwLFxuICAgICAgICBuOiB2b2lkIDAsXG4gICAgICAgIHM6IHZvaWQgMCxcbiAgICAgICAgaDogdm9pZCAwLFxuICAgICAgICByOiB2b2lkIDAsXG4gICAgICAgIGQ6IHZvaWQgMCxcbiAgICAgICAgbDogdm9pZCAwLFxuICAgICAgICB1OiB2b2lkIDBcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIF9lbCQxMTA7XG4gICAgfVxuICB9KTtcbn07XG52YXIgcXVlcnlDYWNoZU1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG52YXIgc2V0dXBRdWVyeUNhY2hlU3Vic2NyaXB0aW9uID0gKCkgPT4ge1xuICBjb25zdCBxdWVyeUNhY2hlID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5jbGllbnQ7XG4gICAgcmV0dXJuIGNsaWVudC5nZXRRdWVyeUNhY2hlKCk7XG4gIH0pO1xuICBjb25zdCB1bnN1YnNjcmliZSA9IHF1ZXJ5Q2FjaGUoKS5zdWJzY3JpYmUoKHEpID0+IHtcbiAgICBiYXRjaCgoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IFtjYWxsYmFjaywgdmFsdWVdIG9mIHF1ZXJ5Q2FjaGVNYXAuZW50cmllcygpKSB7XG4gICAgICAgIGlmICghdmFsdWUuc2hvdWxkVXBkYXRlKHEpKSBjb250aW51ZTtcbiAgICAgICAgdmFsdWUuc2V0dGVyKGNhbGxiYWNrKHF1ZXJ5Q2FjaGUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgcXVlcnlDYWNoZU1hcC5jbGVhcigpO1xuICAgIHVuc3Vic2NyaWJlKCk7XG4gIH0pO1xuICByZXR1cm4gdW5zdWJzY3JpYmU7XG59O1xudmFyIGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIgPSAoY2FsbGJhY2ssIGVxdWFsaXR5Q2hlY2sgPSB0cnVlLCBzaG91bGRVcGRhdGUgPSAoKSA9PiB0cnVlKSA9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2FjaGUgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBjb25zdCBjbGllbnQgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLmNsaWVudDtcbiAgICByZXR1cm4gY2xpZW50LmdldFF1ZXJ5Q2FjaGUoKTtcbiAgfSk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gY3JlYXRlU2lnbmFsKGNhbGxiYWNrKHF1ZXJ5Q2FjaGUpLCAhZXF1YWxpdHlDaGVjayA/IHtcbiAgICBlcXVhbHM6IGZhbHNlXG4gIH0gOiB2b2lkIDApO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIHNldFZhbHVlKGNhbGxiYWNrKHF1ZXJ5Q2FjaGUpKTtcbiAgfSk7XG4gIHF1ZXJ5Q2FjaGVNYXAuc2V0KGNhbGxiYWNrLCB7XG4gICAgc2V0dGVyOiBzZXRWYWx1ZSxcbiAgICBzaG91bGRVcGRhdGVcbiAgfSk7XG4gIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgcXVlcnlDYWNoZU1hcC5kZWxldGUoY2FsbGJhY2spO1xuICB9KTtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbnZhciBtdXRhdGlvbkNhY2hlTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbnZhciBzZXR1cE11dGF0aW9uQ2FjaGVTdWJzY3JpcHRpb24gPSAoKSA9PiB7XG4gIGNvbnN0IG11dGF0aW9uQ2FjaGUgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBjb25zdCBjbGllbnQgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLmNsaWVudDtcbiAgICByZXR1cm4gY2xpZW50LmdldE11dGF0aW9uQ2FjaGUoKTtcbiAgfSk7XG4gIGNvbnN0IHVuc3Vic2NyaWJlID0gbXV0YXRpb25DYWNoZSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgZm9yIChjb25zdCBbY2FsbGJhY2ssIHNldHRlcl0gb2YgbXV0YXRpb25DYWNoZU1hcC5lbnRyaWVzKCkpIHtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgc2V0dGVyKGNhbGxiYWNrKG11dGF0aW9uQ2FjaGUpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgbXV0YXRpb25DYWNoZU1hcC5jbGVhcigpO1xuICAgIHVuc3Vic2NyaWJlKCk7XG4gIH0pO1xuICByZXR1cm4gdW5zdWJzY3JpYmU7XG59O1xudmFyIGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIgPSAoY2FsbGJhY2ssIGVxdWFsaXR5Q2hlY2sgPSB0cnVlKSA9PiB7XG4gIGNvbnN0IG11dGF0aW9uQ2FjaGUgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBjb25zdCBjbGllbnQgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLmNsaWVudDtcbiAgICByZXR1cm4gY2xpZW50LmdldE11dGF0aW9uQ2FjaGUoKTtcbiAgfSk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gY3JlYXRlU2lnbmFsKGNhbGxiYWNrKG11dGF0aW9uQ2FjaGUpLCAhZXF1YWxpdHlDaGVjayA/IHtcbiAgICBlcXVhbHM6IGZhbHNlXG4gIH0gOiB2b2lkIDApO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIHNldFZhbHVlKGNhbGxiYWNrKG11dGF0aW9uQ2FjaGUpKTtcbiAgfSk7XG4gIG11dGF0aW9uQ2FjaGVNYXAuc2V0KGNhbGxiYWNrLCBzZXRWYWx1ZSk7XG4gIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgbXV0YXRpb25DYWNoZU1hcC5kZWxldGUoY2FsbGJhY2spO1xuICB9KTtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbnZhciBzdHlsZXNGYWN0b3J5MiA9ICh0aGVtZSwgY3NzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcnMsXG4gICAgZm9udCxcbiAgICBzaXplOiBzaXplMyxcbiAgICBhbHBoYSxcbiAgICBzaGFkb3csXG4gICAgYm9yZGVyXG4gIH0gPSB0b2tlbnM7XG4gIGNvbnN0IHQyID0gKGxpZ2h0LCBkYXJrKSA9PiB0aGVtZSA9PT0gXCJsaWdodFwiID8gbGlnaHQgOiBkYXJrO1xuICByZXR1cm4ge1xuICAgIGRldnRvb2xzQnRuOiBjc3NgXG4gICAgICB6LWluZGV4OiAxMDAwMDA7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICAgICAgYm94LXNoYWRvdzogJHtzaGFkb3cubWQoKX07XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAmIGRpdiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtOHB4O1xuICAgICAgICBsZWZ0OiAtOHB4O1xuICAgICAgICByaWdodDogLThweDtcbiAgICAgICAgYm90dG9tOiAtOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG5cbiAgICAgICAgJiBzdmcge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgZmlsdGVyOiBibHVyKDZweCkgc2F0dXJhdGUoMS4yKSBjb250cmFzdCgxLjEpO1xuICAgICAgfVxuXG4gICAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgIG91dGxpbmU6IDNweCBzb2xpZCAke2NvbG9ycy5ncmVlbls2MDBdfTtcbiAgICAgIH1cblxuICAgICAgJiBidXR0b24ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAmIHN2ZyB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gICAgcGFuZWw6IGNzc2BcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHotaW5kZXg6IDk5OTk7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzAuNV19O1xuICAgICAgJiAqIHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICB9XG5cbiAgICAgICYgKjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICB3aWR0aDogN3B4O1xuICAgICAgfVxuXG4gICAgICAmICo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgICYgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVsyMDBdKX07XG4gICAgICB9XG5cbiAgICAgICYgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX07XG4gICAgICB9XG4gICAgYCxcbiAgICBwYXJlbnRQYW5lbDogY3NzYFxuICAgICAgei1pbmRleDogOTk5OTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMC41XX07XG4gICAgICAmICoge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgJiAqOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiA3cHg7XG4gICAgICB9XG5cbiAgICAgICYgKjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgJiAqOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzIwMF0pfTtcbiAgICAgIH1cblxuICAgICAgJiAqOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIFwiZGV2dG9vbHNCdG4tcG9zaXRpb24tYm90dG9tLXJpZ2h0XCI6IGNzc2BcbiAgICAgIGJvdHRvbTogMTJweDtcbiAgICAgIHJpZ2h0OiAxMnB4O1xuICAgIGAsXG4gICAgXCJkZXZ0b29sc0J0bi1wb3NpdGlvbi1ib3R0b20tbGVmdFwiOiBjc3NgXG4gICAgICBib3R0b206IDEycHg7XG4gICAgICBsZWZ0OiAxMnB4O1xuICAgIGAsXG4gICAgXCJkZXZ0b29sc0J0bi1wb3NpdGlvbi10b3AtbGVmdFwiOiBjc3NgXG4gICAgICB0b3A6IDEycHg7XG4gICAgICBsZWZ0OiAxMnB4O1xuICAgIGAsXG4gICAgXCJkZXZ0b29sc0J0bi1wb3NpdGlvbi10b3AtcmlnaHRcIjogY3NzYFxuICAgICAgdG9wOiAxMnB4O1xuICAgICAgcmlnaHQ6IDEycHg7XG4gICAgYCxcbiAgICBcImRldnRvb2xzQnRuLXBvc2l0aW9uLXJlbGF0aXZlXCI6IGNzc2BcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBgLFxuICAgIFwicGFuZWwtcG9zaXRpb24tdG9wXCI6IGNzc2BcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIG1heC1oZWlnaHQ6IDkwJTtcbiAgICAgIG1pbi1oZWlnaHQ6ICR7c2l6ZTNbMTRdfTtcbiAgICAgIGJvcmRlci1ib3R0b206ICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfSAxcHggc29saWQ7XG4gICAgYCxcbiAgICBcInBhbmVsLXBvc2l0aW9uLWJvdHRvbVwiOiBjc3NgXG4gICAgICBib3R0b206IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBtYXgtaGVpZ2h0OiA5MCU7XG4gICAgICBtaW4taGVpZ2h0OiAke3NpemUzWzE0XX07XG4gICAgICBib3JkZXItdG9wOiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgIGAsXG4gICAgXCJwYW5lbC1wb3NpdGlvbi1yaWdodFwiOiBjc3NgXG4gICAgICBib3R0b206IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJvcmRlci1sZWZ0OiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgYCxcbiAgICBcInBhbmVsLXBvc2l0aW9uLWxlZnRcIjogY3NzYFxuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJvcmRlci1yaWdodDogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICAgIG1heC13aWR0aDogOTAlO1xuICAgIGAsXG4gICAgY2xvc2VCdG46IGNzc2BcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHotaW5kZXg6IDU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNTBdLCBjb2xvcnMuZGFya0dyYXlbNzAwXSl9O1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzUwMF0pfTtcbiAgICAgIH1cbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2NvbG9ycy5ibHVlWzYwMF19O1xuICAgICAgfVxuICAgICAgJiBzdmcge1xuICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs2MDBdLCBjb2xvcnMuZ3JheVs0MDBdKX07XG4gICAgICAgIHdpZHRoOiAke3NpemUzWzJdfTtcbiAgICAgICAgaGVpZ2h0OiAke3NpemUzWzJdfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIFwiY2xvc2VCdG4tcG9zaXRpb24tdG9wXCI6IGNzc2BcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIHJpZ2h0OiAke3NpemUzWzJdfTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDEwMCUpO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgICAgYm9yZGVyLWxlZnQ6ICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfSAxcHggc29saWQ7XG4gICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDBweCAwcHggJHtib3JkZXIucmFkaXVzLnNtfSAke2JvcmRlci5yYWRpdXMuc219O1xuICAgICAgcGFkZGluZzogJHtzaXplM1swLjVdfSAke3NpemUzWzEuNV19ICR7c2l6ZTNbMV19ICR7c2l6ZTNbMS41XX07XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMTAwJTtcbiAgICAgICAgbGVmdDogLSR7c2l6ZTNbMi41XX07XG4gICAgICAgIGhlaWdodDogJHtzaXplM1sxLjVdfTtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArICR7c2l6ZTNbNV19KTtcbiAgICAgIH1cblxuICAgICAgJiBzdmcge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgfVxuICAgIGAsXG4gICAgXCJjbG9zZUJ0bi1wb3NpdGlvbi1ib3R0b21cIjogY3NzYFxuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6ICR7c2l6ZTNbMl19O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTEwMCUpO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgICAgYm9yZGVyLWxlZnQ6ICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfSAxcHggc29saWQ7XG4gICAgICBib3JkZXItdG9wOiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy5zbX0gJHtib3JkZXIucmFkaXVzLnNtfSAwcHggMHB4O1xuICAgICAgcGFkZGluZzogJHtzaXplM1sxXX0gJHtzaXplM1sxLjVdfSAke3NpemUzWzAuNV19ICR7c2l6ZTNbMS41XX07XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgbGVmdDogLSR7c2l6ZTNbMi41XX07XG4gICAgICAgIGhlaWdodDogJHtzaXplM1sxLjVdfTtcbiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArICR7c2l6ZTNbNV19KTtcbiAgICAgIH1cbiAgICBgLFxuICAgIFwiY2xvc2VCdG4tcG9zaXRpb24tcmlnaHRcIjogY3NzYFxuICAgICAgYm90dG9tOiAke3NpemUzWzJdfTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwJSwgMCk7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICBib3JkZXItbGVmdDogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICAgIGJvcmRlci10b3A6ICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfSAxcHggc29saWQ7XG4gICAgICBib3JkZXItYm90dG9tOiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnNtfSAwcHggMHB4ICR7Ym9yZGVyLnJhZGl1cy5zbX07XG4gICAgICBwYWRkaW5nOiAke3NpemUzWzEuNV19ICR7c2l6ZTNbMC41XX0gJHtzaXplM1sxLjVdfSAke3NpemUzWzFdfTtcblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnICc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAke3NpemUzWzVdfSk7XG4gICAgICAgIHdpZHRoOiAke3NpemUzWzEuNV19O1xuICAgICAgfVxuXG4gICAgICAmIHN2ZyB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG4gICAgICB9XG4gICAgYCxcbiAgICBcImNsb3NlQnRuLXBvc2l0aW9uLWxlZnRcIjogY3NzYFxuICAgICAgYm90dG9tOiAke3NpemUzWzJdfTtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwJSwgMCk7XG4gICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgIGJvcmRlci1yaWdodDogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICAgIGJvcmRlci10b3A6ICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfSAxcHggc29saWQ7XG4gICAgICBib3JkZXItYm90dG9tOiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgICAgYm9yZGVyLXJhZGl1czogMHB4ICR7Ym9yZGVyLnJhZGl1cy5zbX0gJHtib3JkZXIucmFkaXVzLnNtfSAwcHg7XG4gICAgICBwYWRkaW5nOiAke3NpemUzWzEuNV19ICR7c2l6ZTNbMV19ICR7c2l6ZTNbMS41XX0gJHtzaXplM1swLjVdfTtcblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnICc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlICsgJHtzaXplM1s1XX0pO1xuICAgICAgICB3aWR0aDogJHtzaXplM1sxLjVdfTtcbiAgICAgIH1cblxuICAgICAgJiBzdmcge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgICB9XG4gICAgYCxcbiAgICBxdWVyaWVzQ29udGFpbmVyOiBjc3NgXG4gICAgICBmbGV4OiAxIDEgNzAwcHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwXSwgY29sb3JzLmRhcmtHcmF5WzcwMF0pfTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgJiAqIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IHVpLXNhbnMtc2VyaWYsIEludGVyLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWYsIHNhbnMtc2VyaWY7XG4gICAgICB9XG4gICAgYCxcbiAgICBkcmFnSGFuZGxlOiBjc3NgXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTI1cyBlYXNlO1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7Y29sb3JzLnB1cnBsZVs0MDBdfSR7dDIoXCJcIiwgYWxwaGFbOTBdKX07XG4gICAgICB9XG4gICAgICB6LWluZGV4OiA0O1xuICAgIGAsXG4gICAgXCJkcmFnSGFuZGxlLXBvc2l0aW9uLXRvcFwiOiBjc3NgXG4gICAgICBib3R0b206IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogM3B4O1xuICAgICAgY3Vyc29yOiBucy1yZXNpemU7XG4gICAgYCxcbiAgICBcImRyYWdIYW5kbGUtcG9zaXRpb24tYm90dG9tXCI6IGNzc2BcbiAgICAgIHRvcDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAzcHg7XG4gICAgICBjdXJzb3I6IG5zLXJlc2l6ZTtcbiAgICBgLFxuICAgIFwiZHJhZ0hhbmRsZS1wb3NpdGlvbi1yaWdodFwiOiBjc3NgXG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDNweDtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGN1cnNvcjogZXctcmVzaXplO1xuICAgIGAsXG4gICAgXCJkcmFnSGFuZGxlLXBvc2l0aW9uLWxlZnRcIjogY3NzYFxuICAgICAgcmlnaHQ6IDA7XG4gICAgICB3aWR0aDogM3B4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgY3Vyc29yOiBldy1yZXNpemU7XG4gICAgYCxcbiAgICByb3c6IGNzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgcGFkZGluZzogJHt0b2tlbnMuc2l6ZVsyXX0gJHt0b2tlbnMuc2l6ZVsyLjVdfTtcbiAgICAgIGdhcDogJHt0b2tlbnMuc2l6ZVsyLjVdfTtcbiAgICAgIGJvcmRlci1ib3R0b206ICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzUwMF0pfSAxcHggc29saWQ7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgJiA+IGJ1dHRvbiB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogJHtzaXplM1swLjVdfTtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIH1cbiAgICBgLFxuICAgIGxvZ29BbmRUb2dnbGVDb250YWluZXI6IGNzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbM119O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBgLFxuICAgIGxvZ286IGNzc2BcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMC41XX07XG4gICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgfVxuICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICB9XG4gICAgYCxcbiAgICB0YW5zdGFja0xvZ286IGNzc2BcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUubWR9O1xuICAgICAgZm9udC13ZWlnaHQ6ICR7Zm9udC53ZWlnaHQuYm9sZH07XG4gICAgICBsaW5lLWhlaWdodDogJHtmb250LmxpbmVIZWlnaHQueHN9O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzYwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICBgLFxuICAgIHF1ZXJ5Rmxhdm9yTG9nbzogY3NzYFxuICAgICAgZm9udC13ZWlnaHQ6ICR7Zm9udC53ZWlnaHQuc2VtaWJvbGR9O1xuICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgIHRvIHJpZ2h0LFxuICAgICAgICAke3QyKFwiI2VhNDAzNywgI2ZmOWIxMVwiLCBcIiNkZDUyNGIsICNlOWEwM2JcIil9XG4gICAgICApO1xuICAgICAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYCxcbiAgICBxdWVyeVN0YXR1c0NvbnRhaW5lcjogY3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGdhcDogJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICBoZWlnaHQ6IG1pbi1jb250ZW50O1xuICAgIGAsXG4gICAgcXVlcnlTdGF0dXNUYWc6IGNzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMS41XX07XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgaGVpZ2h0OiAke3Rva2Vucy5zaXplWzYuNV19O1xuICAgICAgYmFja2dyb3VuZDogJHt0Mihjb2xvcnMuZ3JheVs1MF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX07XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs3MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUuc219O1xuICAgICAgcGFkZGluZzogJHt0b2tlbnMuc2l6ZVsxXX07XG4gICAgICBwYWRkaW5nLWxlZnQ6ICR7dG9rZW5zLnNpemVbMS41XX07XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZm9udC13ZWlnaHQ6ICR7Zm9udC53ZWlnaHQubWVkaXVtfTtcbiAgICAgIGJvcmRlcjogJHt0MihcIjFweCBzb2xpZCBcIiArIGNvbG9ycy5ncmF5WzMwMF0sIFwiMXB4IHNvbGlkIHRyYW5zcGFyZW50XCIpfTtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICB9XG4gICAgYCxcbiAgICBxdWVyeVN0YXR1c1RhZ0xhYmVsOiBjc3NgXG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICBgLFxuICAgIHF1ZXJ5U3RhdHVzQ291bnQ6IGNzc2BcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgcGFkZGluZzogMCA1cHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNTAwXSwgY29sb3JzLmdyYXlbNDAwXSl9O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9O1xuICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgIGhlaWdodDogJHt0b2tlbnMuc2l6ZVs0LjVdfTtcbiAgICBgLFxuICAgIHN0YXR1c1Rvb2x0aXA6IGNzc2BcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwXSwgY29sb3JzLmRhcmtHcmF5WzUwMF0pfTtcbiAgICAgIHRvcDogMTAwJTtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIGNhbGMoJHt0b2tlbnMuc2l6ZVsyXX0pKTtcbiAgICAgIHBhZGRpbmc6ICR7dG9rZW5zLnNpemVbMC41XX0gJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZ3JheVs2MDBdKX07XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnNbXCJncmF5XCJdWzYwMF0sIGNvbG9yc1tcImdyYXlcIl1bMzAwXSl9O1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICB0b3A6IDBweDtcbiAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtMTAwJSk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudFxuICAgICAgICAgICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmdyYXlbNjAwXSl9IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICBib3JkZXItd2lkdGg6IDdweDtcbiAgICAgICAgLyogdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgKi9cbiAgICAgIH1cblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICB0b3A6IDBweDtcbiAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCBjYWxjKC0xMDAlICsgMnB4KSk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudFxuICAgICAgICAgICR7dDIoY29sb3JzLmdyYXlbMTAwXSwgY29sb3JzLmRhcmtHcmF5WzUwMF0pfSB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiA3cHg7XG4gICAgICB9XG4gICAgYCxcbiAgICBmaWx0ZXJzQ29udGFpbmVyOiBjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgICYgPiBidXR0b24ge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHBhZGRpbmc6ICR7dG9rZW5zLnNpemVbMC41XX0gJHt0b2tlbnMuc2l6ZVsxLjVdfSAke3Rva2Vucy5zaXplWzAuNV19XG4gICAgICAgICAgJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7dG9rZW5zLmJvcmRlci5yYWRpdXMuc219O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs0MDBdKX07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzIwMF0pfTtcbiAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNzAwXSwgY29sb3JzLmdyYXlbMzAwXSl9O1xuICAgICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICR7Zm9udC5saW5lSGVpZ2h0LnNtfTtcbiAgICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzEuNV19O1xuICAgICAgICBtYXgtd2lkdGg6IDE2MHB4O1xuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs4MDBdfTtcbiAgICAgICAgfVxuICAgICAgICAmIHN2ZyB7XG4gICAgICAgICAgd2lkdGg6ICR7dG9rZW5zLnNpemVbM119O1xuICAgICAgICAgIGhlaWdodDogJHt0b2tlbnMuc2l6ZVszXX07XG4gICAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNTAwXSwgY29sb3JzLmdyYXlbNDAwXSl9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgICBmaWx0ZXJJbnB1dDogY3NzYFxuICAgICAgcGFkZGluZzogJHtzaXplM1swLjVdfSAke3NpemUzWzJdfTtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7dG9rZW5zLmJvcmRlci5yYWRpdXMuc219O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsxMDBdLCBjb2xvcnMuZGFya0dyYXlbNDAwXSl9O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogJHt0b2tlbnMuc2l6ZVsxLjVdfTtcbiAgICAgIG1heC13aWR0aDogMTYwcHg7XG4gICAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZGFya0dyYXlbMjAwXSl9O1xuICAgICAgaGVpZ2h0OiBtaW4tY29udGVudDtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzYwMF0sIGNvbG9ycy5ncmF5WzQwMF0pfTtcbiAgICAgICYgPiBzdmcge1xuICAgICAgICB3aWR0aDogJHtzaXplM1szXX07XG4gICAgICAgIGhlaWdodDogJHtzaXplM1szXX07XG4gICAgICB9XG4gICAgICAmIGlucHV0IHtcbiAgICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs0MDBdKX07XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICR7Zm9udC5saW5lSGVpZ2h0LnNtfTtcbiAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNzAwXSwgY29sb3JzLmdyYXlbMzAwXSl9O1xuICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNzAwXSwgY29sb3JzLmdyYXlbMzAwXSl9O1xuICAgICAgICB9XG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMueHN9O1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs4MDBdfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIGZpbHRlclNlbGVjdDogY3NzYFxuICAgICAgcGFkZGluZzogJHt0b2tlbnMuc2l6ZVswLjVdfSAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7dG9rZW5zLmJvcmRlci5yYWRpdXMuc219O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsxMDBdLCBjb2xvcnMuZGFya0dyYXlbNDAwXSl9O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMS41XX07XG4gICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAgIG1heC13aWR0aDogMTYwcHg7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVsyMDBdKX07XG4gICAgICBoZWlnaHQ6IG1pbi1jb250ZW50O1xuICAgICAgJiA+IHN2ZyB7XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzYwMF0sIGNvbG9ycy5ncmF5WzQwMF0pfTtcbiAgICAgICAgd2lkdGg6ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgICBoZWlnaHQ6ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgfVxuICAgICAgJiA+IHNlbGVjdCB7XG4gICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzcwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgICAgbWluLXdpZHRoOiAxMDBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICR7Zm9udC5saW5lSGVpZ2h0LnNtfTtcbiAgICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMTAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy54c307XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2NvbG9ycy5ibHVlWzgwMF19O1xuICAgICAgfVxuICAgIGAsXG4gICAgYWN0aW9uc0NvbnRhaW5lcjogY3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGdhcDogJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgYCxcbiAgICBhY3Rpb25zQnRuOiBjc3NgXG4gICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMTAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzIwMF0pfTtcbiAgICAgIHdpZHRoOiAke3Rva2Vucy5zaXplWzYuNV19O1xuICAgICAgaGVpZ2h0OiAke3Rva2Vucy5zaXplWzYuNV19O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogJHt0b2tlbnMuc2l6ZVsxLjVdfTtcbiAgICAgIG1heC13aWR0aDogMTYwcHg7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzUwMF0pfTtcbiAgICAgIH1cbiAgICAgICYgc3ZnIHtcbiAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNzAwXSwgY29sb3JzLmdyYXlbMzAwXSl9O1xuICAgICAgICB3aWR0aDogJHt0b2tlbnMuc2l6ZVszXX07XG4gICAgICAgIGhlaWdodDogJHt0b2tlbnMuc2l6ZVszXX07XG4gICAgICB9XG4gICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMueHN9O1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs4MDBdfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIGFjdGlvbnNCdG5PZmZsaW5lOiBjc3NgXG4gICAgICAmIHN2ZyB7XG4gICAgICAgIHN0cm9rZTogJHt0Mihjb2xvcnMueWVsbG93WzcwMF0sIGNvbG9ycy55ZWxsb3dbNTAwXSl9O1xuICAgICAgICBmaWxsOiAke3QyKGNvbG9ycy55ZWxsb3dbNzAwXSwgY29sb3JzLnllbGxvd1s1MDBdKX07XG4gICAgICB9XG4gICAgYCxcbiAgICBvdmVyZmxvd1F1ZXJ5Q29udGFpbmVyOiBjc3NgXG4gICAgICBmbGV4OiAxO1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICYgPiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuICAgIGAsXG4gICAgcXVlcnlSb3c6IGNzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzcwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNTBdLCBjb2xvcnMuZGFya0dyYXlbNzAwXSl9O1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIH1cbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMueHN9O1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs4MDBdfTtcbiAgICAgIH1cbiAgICAgICY6aG92ZXIgLnRzcWQtcXVlcnktaGFzaCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzYwMF0pfTtcbiAgICAgIH1cblxuICAgICAgJiAudHNxZC1xdWVyeS1vYnNlcnZlci1jb3VudCB7XG4gICAgICAgIHBhZGRpbmc6IDAgJHt0b2tlbnMuc2l6ZVsxXX07XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICBtaW4td2lkdGg6ICR7dG9rZW5zLnNpemVbNi41XX07XG4gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICR7Zm9udC53ZWlnaHQubWVkaXVtfTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xuICAgICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzcwMF0pfTtcbiAgICAgIH1cbiAgICAgICYgLnRzcWQtcXVlcnktaGFzaCB7XG4gICAgICAgIHVzZXItc2VsZWN0OiB0ZXh0O1xuICAgICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWluLWhlaWdodDogJHt0b2tlbnMuc2l6ZVs2XX07XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIHBhZGRpbmc6ICR7dG9rZW5zLnNpemVbMV19ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsXG4gICAgICAgICAgJ0xpYmVyYXRpb24gTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgIH1cblxuICAgICAgJiAudHNxZC1xdWVyeS1kaXNhYmxlZC1pbmRpY2F0b3Ige1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs4MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzYwMF0pfTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICB9XG4gICAgYCxcbiAgICBzZWxlY3RlZFF1ZXJ5Um93OiBjc3NgXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX07XG4gICAgYCxcbiAgICBkZXRhaWxzQ29udGFpbmVyOiBjc3NgXG4gICAgICBmbGV4OiAxIDEgNzAwcHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwXSwgY29sb3JzLmRhcmtHcmF5WzcwMF0pfTtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzcwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgIGZvbnQtZmFtaWx5OiB1aS1zYW5zLXNlcmlmLCBJbnRlciwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgYCxcbiAgICBkZXRhaWxzSGVhZGVyOiBjc3NgXG4gICAgICBmb250LWZhbWlseTogdWktc2Fucy1zZXJpZiwgSW50ZXIsIHN5c3RlbS11aSwgc2Fucy1zZXJpZiwgc2Fucy1zZXJpZjtcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICB0b3A6IDA7XG4gICAgICB6LWluZGV4OiAyO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbNjAwXSl9O1xuICAgICAgcGFkZGluZzogJHt0b2tlbnMuc2l6ZVsxLjVdfSAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke2ZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAke2ZvbnQubGluZUhlaWdodC54c307XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGAsXG4gICAgZGV0YWlsc0JvZHk6IGNzc2BcbiAgICAgIG1hcmdpbjogJHt0b2tlbnMuc2l6ZVsxLjVdfSAwcHggJHt0b2tlbnMuc2l6ZVsyXX0gMHB4O1xuICAgICAgJiA+IGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBwYWRkaW5nOiAwICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgICBsaW5lLWhlaWdodDogJHtmb250LmxpbmVIZWlnaHQuc219O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICYgPiBzcGFuIHtcbiAgICAgICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgICAgfVxuICAgICAgICAmID4gc3BhbjpudGgtY2hpbGQoMikge1xuICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJiA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR7dG9rZW5zLnNpemVbMS41XX07XG4gICAgICB9XG5cbiAgICAgICYgY29kZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcyxcbiAgICAgICAgICAnTGliZXJhdGlvbiBNb25vJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgICBsaW5lLWhlaWdodDogJHtmb250LmxpbmVIZWlnaHQueHN9O1xuICAgICAgfVxuXG4gICAgICAmIHByZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIH1cbiAgICBgLFxuICAgIHF1ZXJ5RGV0YWlsc1N0YXR1czogY3NzYFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtjb2xvcnMuZGFya0dyYXlbMjAwXX07XG4gICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke2ZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgICBwYWRkaW5nOiAke3Rva2Vucy5zaXplWzFdfSAke3Rva2Vucy5zaXplWzIuNV19O1xuICAgIGAsXG4gICAgYWN0aW9uc0JvZHk6IGNzc2BcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIG1hcmdpbjogJHt0b2tlbnMuc2l6ZVsyXX0gMHB4ICR7dG9rZW5zLnNpemVbMl19IDBweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgcGFkZGluZzogMHB4ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgJiA+IGJ1dHRvbiB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB1aS1zYW5zLXNlcmlmLCBJbnRlciwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgICAgcGFkZGluZzogJHt0b2tlbnMuc2l6ZVsxXX0gJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7dG9rZW5zLmJvcmRlci5yYWRpdXMuc219O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs2MDBdKX07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICR7Zm9udC53ZWlnaHQubWVkaXVtfTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICR7Zm9udC5saW5lSGVpZ2h0LnhzfTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs4MDBdfTtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX07XG4gICAgICAgIH1cblxuICAgICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgfVxuXG4gICAgICAgICYgPiBzcGFuIHtcbiAgICAgICAgICB3aWR0aDogJHtzaXplM1sxLjVdfTtcbiAgICAgICAgICBoZWlnaHQ6ICR7c2l6ZTNbMS41XX07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogJHt0b2tlbnMuYm9yZGVyLnJhZGl1cy5mdWxsfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gICAgYWN0aW9uc1NlbGVjdDogY3NzYFxuICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICBwYWRkaW5nOiAke3Rva2Vucy5zaXplWzAuNV19ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7dG9rZW5zLmJvcmRlci5yYWRpdXMuc219O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMTAwXSwgY29sb3JzLmRhcmtHcmF5WzYwMF0pfTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgZm9udC13ZWlnaHQ6ICR7Zm9udC53ZWlnaHQubWVkaXVtfTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAke2ZvbnQubGluZUhlaWdodC5zbX07XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMucmVkWzUwMF0sIGNvbG9ycy5yZWRbNDAwXSl9O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzUwMF0pfTtcbiAgICAgIH1cbiAgICAgICYgPiBzcGFuIHtcbiAgICAgICAgd2lkdGg6ICR7c2l6ZTNbMS41XX07XG4gICAgICAgIGhlaWdodDogJHtzaXplM1sxLjVdfTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHt0b2tlbnMuYm9yZGVyLnJhZGl1cy5mdWxsfTtcbiAgICAgIH1cbiAgICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICB9XG4gICAgICAmIHNlbGVjdCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgICYgc3ZnIHBhdGgge1xuICAgICAgICBzdHJva2U6ICR7dG9rZW5zLmNvbG9ycy5yZWRbNDAwXX07XG4gICAgICB9XG4gICAgICAmIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgICAgaGVpZ2h0OiAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIHNldHRpbmdzTWVudTogY3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICYgKiB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB1aS1zYW5zLXNlcmlmLCBJbnRlciwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmO1xuICAgICAgfVxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGdhcDogJHtzaXplM1swLjVdfTtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7dG9rZW5zLmJvcmRlci5yYWRpdXMuc219O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZ3JheVs3MDBdKX07XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwXSwgY29sb3JzLmRhcmtHcmF5WzYwMF0pfTtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNzAwXSwgY29sb3JzLmdyYXlbMzAwXSl9O1xuICAgICAgei1pbmRleDogOTk5OTk7XG4gICAgICBtaW4td2lkdGg6IDEyMHB4O1xuICAgICAgcGFkZGluZzogJHtzaXplM1swLjVdfTtcbiAgICBgLFxuICAgIHNldHRpbmdzU3ViVHJpZ2dlcjogY3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgIHBhZGRpbmc6ICR7dG9rZW5zLnNpemVbMV19ICR7dG9rZW5zLnNpemVbMV19O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs3MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgICAmIHN2ZyB7XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzYwMF0sIGNvbG9ycy5ncmF5WzQwMF0pfTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcbiAgICAgICAgd2lkdGg6ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgICBoZWlnaHQ6ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgfVxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzUwMF0pfTtcbiAgICAgIH1cbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2NvbG9ycy5ibHVlWzgwMF19O1xuICAgICAgfVxuICAgICAgJi5kYXRhLWRpc2FibGVkIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgfVxuICAgIGAsXG4gICAgc2V0dGluZ3NNZW51SGVhZGVyOiBjc3NgXG4gICAgICBwYWRkaW5nOiAke3Rva2Vucy5zaXplWzFdfSAke3Rva2Vucy5zaXplWzFdfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke2ZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZGFya0dyYXlbNDAwXSl9O1xuICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNTAwXSwgY29sb3JzLmdyYXlbNDAwXSl9O1xuICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZVtcInhzXCJdfTtcbiAgICBgLFxuICAgIHNldHRpbmdzU3ViQnV0dG9uOiBjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzcwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemVbXCJ4c1wiXX07XG4gICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgIHBhZGRpbmc6ICR7dG9rZW5zLnNpemVbMV19ICR7dG9rZW5zLnNpemVbMV19O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAmIHN2ZyB7XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzYwMF0sIGNvbG9ycy5ncmF5WzQwMF0pfTtcbiAgICAgIH1cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX07XG4gICAgICB9XG4gICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs4MDBdfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIHRoZW1lU2VsZWN0ZWRCdXR0b246IGNzc2BcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLnB1cnBsZVsxMDBdLCBjb2xvcnMucHVycGxlWzkwMF0pfTtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5wdXJwbGVbNzAwXSwgY29sb3JzLnB1cnBsZVszMDBdKX07XG4gICAgICAmIHN2ZyB7XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5wdXJwbGVbNzAwXSwgY29sb3JzLnB1cnBsZVszMDBdKX07XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMucHVycGxlWzEwMF0sIGNvbG9ycy5wdXJwbGVbOTAwXSl9O1xuICAgICAgfVxuICAgIGAsXG4gICAgdmlld1RvZ2dsZTogY3NzYFxuICAgICAgYm9yZGVyLXJhZGl1czogJHt0b2tlbnMuYm9yZGVyLnJhZGl1cy5zbX07XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs2MDBdKX07XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVsyMDBdKX07XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNzAwXSwgY29sb3JzLmdyYXlbMzAwXSl9O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgJjpoYXMoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICB9XG5cbiAgICAgICYgLnRzcWQtcmFkaW8tdG9nZ2xlIHtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAmIGxhYmVsIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAke2ZvbnQubGluZUhlaWdodC5tZH07XG4gICAgICAgIH1cblxuICAgICAgICAmIGxhYmVsOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJiA+IFtkYXRhLWNoZWNrZWRdIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsxMDBdLCBjb2xvcnMuZGFya0dyYXlbNDAwXSl9O1xuICAgICAgICAmIGxhYmVsOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs0MDBdKX07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJiAudHNxZC1yYWRpby10b2dnbGU6Zmlyc3QtY2hpbGQge1xuICAgICAgICAmIGxhYmVsIHtcbiAgICAgICAgICBwYWRkaW5nOiAwICR7dG9rZW5zLnNpemVbMS41XX0gMCAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgICAgfVxuICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVsyMDBdKX07XG4gICAgICB9XG5cbiAgICAgICYgLnRzcWQtcmFkaW8tdG9nZ2xlOm50aC1jaGlsZCgyKSB7XG4gICAgICAgICYgbGFiZWwge1xuICAgICAgICAgIHBhZGRpbmc6IDAgJHt0b2tlbnMuc2l6ZVsyXX0gMCAke3Rva2Vucy5zaXplWzEuNV19O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgICBkZXZ0b29sc0VkaXRGb3JtOiBjc3NgXG4gICAgICBwYWRkaW5nOiAke3NpemUzWzJdfTtcbiAgICAgICYgPiBbZGF0YS1lcnJvcj0ndHJ1ZSddIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7dDIoY29sb3JzLnJlZFsyMDBdLCBjb2xvcnMucmVkWzgwMF0pfTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIGRldnRvb2xzRWRpdFRleHRhcmVhOiBjc3NgXG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xuICAgICAgZm9udC1mYW1pbHk6ICdGaXJhIENvZGUnLCBtb25vc3BhY2U7XG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy5zbX07XG4gICAgICBmaWVsZC1zaXppbmc6IGNvbnRlbnQ7XG4gICAgICBwYWRkaW5nOiAke3NpemUzWzJdfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMTAwXSwgY29sb3JzLmRhcmtHcmF5WzgwMF0pfTtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzkwMF0sIGNvbG9ycy5ncmF5WzEwMF0pfTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmdyYXlbNzAwXSl9O1xuICAgICAgcmVzaXplOiBub25lO1xuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy54c307XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke3QyKGNvbG9ycy5ibHVlWzIwMF0sIGNvbG9ycy5ibHVlWzgwMF0pfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIGRldnRvb2xzRWRpdEZvcm1BY3Rpb25zOiBjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgZ2FwOiAke3NpemUzWzJdfTtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nLXRvcDogJHtzaXplM1sxXX07XG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICBgLFxuICAgIGRldnRvb2xzRWRpdEZvcm1FcnJvcjogY3NzYFxuICAgICAgY29sb3I6ICR7dDIoY29sb3JzLnJlZFs3MDBdLCBjb2xvcnMucmVkWzUwMF0pfTtcbiAgICBgLFxuICAgIGRldnRvb2xzRWRpdEZvcm1BY3Rpb25Db250YWluZXI6IGNzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBnYXA6ICR7c2l6ZTNbMl19O1xuICAgIGAsXG4gICAgZGV2dG9vbHNFZGl0Rm9ybUFjdGlvbjogY3NzYFxuICAgICAgZm9udC1mYW1pbHk6IHVpLXNhbnMtc2VyaWYsIEludGVyLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWYsIHNhbnMtc2VyaWY7XG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgIHBhZGRpbmc6ICR7c2l6ZTNbMV19ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy5zbX07XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs2MDBdKX07XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVs0MDBdKX07XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiAke3NpemUzWzJdfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke2ZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgICBsaW5lLWhlaWdodDogJHtmb250LmxpbmVIZWlnaHQueHN9O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbNTAwXSl9O1xuICAgICAgfVxuXG4gICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgfVxuICAgIGBcbiAgfTtcbn07XG52YXIgbGlnaHRTdHlsZXMyID0gKGNzcykgPT4gc3R5bGVzRmFjdG9yeTIoXCJsaWdodFwiLCBjc3MpO1xudmFyIGRhcmtTdHlsZXMyID0gKGNzcykgPT4gc3R5bGVzRmFjdG9yeTIoXCJkYXJrXCIsIGNzcyk7XG5kZWxlZ2F0ZUV2ZW50cyhbXCJjbGlja1wiLCBcIm1vdXNlZG93blwiLCBcImlucHV0XCJdKTtcbi8qISBCdW5kbGVkIGxpY2Vuc2UgaW5mb3JtYXRpb246XG5cbkB0YW5zdGFjay9tYXRjaC1zb3J0ZXItdXRpbHMvYnVpbGQvbGliL2luZGV4Lm1qczpcbiAgKCoqXG4gICAgICogbWF0Y2gtc29ydGVyLXV0aWxzXG4gICAgICpcbiAgICAgKiBDb3B5cmlnaHQgKGMpIFRhblN0YWNrXG4gICAgICpcbiAgICAgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAgICAgKiBMSUNFTlNFLm1kIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gICAgICpcbiAgICAgKiBAbGljZW5zZSBNSVRcbiAgICAgKilcbiAgKCoqXG4gICAqIEBuYW1lIG1hdGNoLXNvcnRlclxuICAgKiBAbGljZW5zZSBNSVQgbGljZW5zZS5cbiAgICogQGNvcHlyaWdodCAoYykgMjA5OSBLZW50IEMuIERvZGRzXG4gICAqIEBhdXRob3IgS2VudCBDLiBEb2RkcyA8bWVAa2VudGNkb2Rkcy5jb20+IChodHRwczovL2tlbnRjZG9kZHMuY29tKVxuICAgKilcblxuQGtvYmFsdGUvdXRpbHMvZGlzdC9pbmRleC5qczpcbiAgKCohXG4gICAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgYmFzZWQgb24gY29kZSBmcm9tIGFyaWFraXQuXG4gICAqIE1JVCBMaWNlbnNlZCwgQ29weXJpZ2h0IChjKSBEaWVnbyBIYXouXG4gICAqXG4gICAqIENyZWRpdHMgdG8gdGhlIEFyaWFraXQgdGVhbTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2FyaWFraXQvYXJpYWtpdC9ibG9iL2RhMTQyNjcyZWRkZWZhOTkzNjU3NzNjZWQ3MjE3MWZhY2MwNmZkY2IvcGFja2FnZXMvYXJpYWtpdC11dGlscy9zcmMvYXJyYXkudHNcbiAgICopXG4gICgqIVxuICAgKiBPcmlnaW5hbCBjb2RlIGJ5IENoYWtyYSBVSVxuICAgKiBNSVQgTGljZW5zZWQsIENvcHlyaWdodCAoYykgMjAxOSBTZWd1biBBZGViYXlvLlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBDaGFrcmEgVUkgdGVhbTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2NoYWtyYS11aS9jaGFrcmEtdWkvYmxvYi9tYWluL3BhY2thZ2VzL3V0aWxzL3NyYy9hc3NlcnRpb24udHNcbiAgICopXG4gICgqIVxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSByZWFjdC1zcGVjdHJ1bS5cbiAgICogQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIENvcHlyaWdodCAyMDIwIEFkb2JlLlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBSZWFjdCBTcGVjdHJ1bSB0ZWFtOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vc29saWRqcy1jb21tdW5pdHkvc29saWQtYXJpYS9ibG9iLzJjNWY1NGZlYjVjZmVhNTE0YjFlZTBhNTJkMDQxNjg3OGY4ODIzNTEvcGFja2FnZXMvdXRpbHMvc3JjL2NyZWF0ZUdsb2JhbExpc3RlbmVycy50c1xuICAgKilcbiAgKCohXG4gICAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgYmFzZWQgb24gY29kZSBmcm9tIGFyaWFraXQuXG4gICAqIE1JVCBMaWNlbnNlZCwgQ29weXJpZ2h0IChjKSBEaWVnbyBIYXouXG4gICAqXG4gICAqIENyZWRpdHMgdG8gdGhlIEFyaWFraXQgdGVhbTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2FyaWFraXQvYXJpYWtpdC9ibG9iLzIzMmJjNzkwMThlYzIwOTY3ZmVjMWUwOTdhOTQ3NGFiYTNiYjViZTcvcGFja2FnZXMvYXJpYWtpdC11dGlscy9zcmMvZG9tLnRzXG4gICAqKVxuICAoKiFcbiAgICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBiYXNlZCBvbiBjb2RlIGZyb20gcmVhY3Qtc3BlY3RydW0uXG4gICAqIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBDb3B5cmlnaHQgMjAyMCBBZG9iZS5cbiAgICpcbiAgICogQ3JlZGl0cyB0byB0aGUgUmVhY3QgU3BlY3RydW0gdGVhbTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2Fkb2JlL3JlYWN0LXNwZWN0cnVtL2Jsb2IvY2Y5YWIyNGYzMjU1YmUxNTMwZDBmNTg0MDYxYTAxYWExZTgxODBlNi9wYWNrYWdlcy9AcmVhY3QtYXJpYS91dGlscy9zcmMvcGxhdGZvcm0udHNcbiAgICopXG4gICgqIVxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSByZWFjdC1zcGVjdHJ1bS5cbiAgICogQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIENvcHlyaWdodCAyMDIwIEFkb2JlLlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBSZWFjdCBTcGVjdHJ1bSB0ZWFtOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi9hOWRlYThhMzY3MjE3OWU2YzM4YWFmZDE0MjlkYWY0NGM3ZWEyZmY2L3BhY2thZ2VzL0ByZWFjdC1hcmlhL3V0aWxzL3NyYy9mb2N1c1dpdGhvdXRTY3JvbGxpbmcudHNcbiAgICopXG4gICgqIVxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSBhcmlha2l0LlxuICAgKiBNSVQgTGljZW5zZWQsIENvcHlyaWdodCAoYykgRGllZ28gSGF6LlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBBcmlha2l0IHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmlha2l0L2FyaWFraXQvYmxvYi9tYWluL3BhY2thZ2VzL2FyaWFraXQtdXRpbHMvc3JjL2ZvY3VzLnRzXG4gICAqXG4gICAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgYmFzZWQgb24gY29kZSBmcm9tIHJlYWN0LXNwZWN0cnVtLlxuICAgKiBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgQ29weXJpZ2h0IDIwMjAgQWRvYmUuXG4gICAqXG4gICAqIENyZWRpdHMgdG8gdGhlIFJlYWN0IFNwZWN0cnVtIHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9ibG9iL21haW4vcGFja2FnZXMvJTQwcmVhY3QtYXJpYS9mb2N1cy9zcmMvaXNFbGVtZW50VmlzaWJsZS50c1xuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi84ZjJmMmFjYjNkNTg1MDM4MmViZTYzMWYwNTVmODhjNzA0YWE3ZDE3L3BhY2thZ2VzL0ByZWFjdC1hcmlhL2ZvY3VzL3NyYy9Gb2N1c1Njb3BlLnRzeFxuICAgKilcbiAgKCohXG4gICAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgYmFzZWQgb24gY29kZSBmcm9tIHJlYWN0LXNwZWN0cnVtLlxuICAgKiBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgQ29weXJpZ2h0IDIwMjAgQWRvYmUuXG4gICAqXG4gICAqIENyZWRpdHMgdG8gdGhlIFJlYWN0IFNwZWN0cnVtIHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9ibG9iL2Y2ZTY4NmZlOWQzYjk4M2Q0ODY1MDk4MGMxZWNmZGRlMzIwYmM2MmYvcGFja2FnZXMvQHJlYWN0LWFyaWEvZm9jdXMvc3JjL0ZvY3VzU2NvcGUudHN4XG4gICAqKVxuICAoKiFcbiAgICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBiYXNlZCBvbiBjb2RlIGZyb20gcmVhY3Qtc3BlY3RydW0uXG4gICAqIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBDb3B5cmlnaHQgMjAyMCBBZG9iZS5cbiAgICpcbiAgICogQ3JlZGl0cyB0byB0aGUgUmVhY3QgU3BlY3RydW0gdGVhbTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2Fkb2JlL3JlYWN0LXNwZWN0cnVtL2Jsb2IvYTlkZWE4YTM2NzIxNzllNmMzOGFhZmQxNDI5ZGFmNDRjN2VhMmZmNi9wYWNrYWdlcy9AcmVhY3QtYXJpYS91dGlscy9zcmMvZ2V0U2Nyb2xsUGFyZW50LnRzXG4gICAqKVxuICAoKiFcbiAgICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBiYXNlZCBvbiBjb2RlIGZyb20gcmVhY3Qtc3BlY3RydW0uXG4gICAqIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBDb3B5cmlnaHQgMjAyMCBBZG9iZS5cbiAgICpcbiAgICogQ3JlZGl0cyB0byB0aGUgUmVhY3QgU3BlY3RydW0gdGVhbTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2Fkb2JlL3JlYWN0LXNwZWN0cnVtL2Jsb2IvYTlkZWE4YTM2NzIxNzllNmMzOGFhZmQxNDI5ZGFmNDRjN2VhMmZmNi9wYWNrYWdlcy9AcmVhY3QtYXJpYS91dGlscy9zcmMvaXNWaXJ0dWFsRXZlbnQudHNcbiAgICopXG4gICgqIVxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSByZWFjdC1zcGVjdHJ1bS5cbiAgICogQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIENvcHlyaWdodCAyMDIwIEFkb2JlLlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBSZWFjdCBTcGVjdHJ1bSB0ZWFtOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi9mZjNlNjkwZmZmYzZjNTQzNjdiODA1N2UyOGEwZTViOTIxMWYzN2I1L3BhY2thZ2VzL0ByZWFjdC1zdGF0ZWx5L3V0aWxzL3NyYy9udW1iZXIudHNcbiAgICopXG4gICgqIVxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSBhcmlha2l0LlxuICAgKiBNSVQgTGljZW5zZWQsIENvcHlyaWdodCAoYykgRGllZ28gSGF6LlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBBcmlha2l0IHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmlha2l0L2FyaWFraXQvYmxvYi84NGU5Nzk0M2FkNjM3YTU4MmMwMWM5YjU2ZDg4MGNkOTVmNTk1NzM3L3BhY2thZ2VzL2FyaWFraXQvc3JjL2hvdmVyY2FyZC9fX3V0aWxzL3BvbHlnb24udHNcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2FyaWFraXQvYXJpYWtpdC9ibG9iL2YyYTk2OTczZGU1MjNkNjdlNDFlZWM5ODMyNjM5MzZjNDg5ZWYzZTIvcGFja2FnZXMvYXJpYWtpdC9zcmMvaG92ZXJjYXJkL19fdXRpbHMvZGVidWctcG9seWdvbi50c1xuICAgKilcbiAgKCohXG4gICAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgYmFzZWQgb24gY29kZSBmcm9tIHJlYWN0LXNwZWN0cnVtLlxuICAgKiBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgQ29weXJpZ2h0IDIwMjAgQWRvYmUuXG4gICAqXG4gICAqIENyZWRpdHMgdG8gdGhlIFJlYWN0IFNwZWN0cnVtIHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9ibG9iL2E5ZGVhOGEzNjcyMTc5ZTZjMzhhYWZkMTQyOWRhZjQ0YzdlYTJmZjYvcGFja2FnZXMvQHJlYWN0LWFyaWEvdXRpbHMvc3JjL3J1bkFmdGVyVHJhbnNpdGlvbi50c1xuICAgKilcbiAgKCohXG4gICAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgYmFzZWQgb24gY29kZSBmcm9tIHJlYWN0LXNwZWN0cnVtLlxuICAgKiBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgQ29weXJpZ2h0IDIwMjAgQWRvYmUuXG4gICAqXG4gICAqIENyZWRpdHMgdG8gdGhlIFJlYWN0IFNwZWN0cnVtIHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9ibG9iLzhmMmYyYWNiM2Q1ODUwMzgyZWJlNjMxZjA1NWY4OGM3MDRhYTdkMTcvcGFja2FnZXMvQHJlYWN0LWFyaWEvdXRpbHMvc3JjL3Njcm9sbEludG9WaWV3LnRzXG4gICAqKVxuKi9cblxuZXhwb3J0IHsgQ29udGVudFZpZXcsIERldnRvb2xzLCBQYXJlbnRQYW5lbCwgUGlQUHJvdmlkZXIsIFF1ZXJ5RGV2dG9vbHNDb250ZXh0LCBUSEVNRV9QUkVGRVJFTkNFLCBUaGVtZUNvbnRleHQsIGNyZWF0ZUxvY2FsU3RvcmFnZSB9O1xuIl0sCiAgIm1hcHBpbmdzIjogInlDQUFBQSxLQUNBLElBQUlDLEVBQWUsQ0FDakIsUUFBUyxPQUNULFNBQVUsT0FDVixRQUFTLE9BQ1QsS0FBTSxHQUNOLGNBQWUsQ0FDYixPQUFPQyxHQUFhLEtBQUssUUFBUSxLQUFLLENBQ3hDLEVBQ0Esa0JBQW1CLENBQ2pCLE9BQU9BLEdBQWEsS0FBSyxRQUFRLE9BQU8sQ0FDMUMsQ0FDRixFQUNBLFNBQVNBLEdBQWFDLEVBQU8sQ0FDM0IsSUFBTUMsRUFBTSxPQUFPRCxDQUFLLEVBQUdFLEVBQU1ELEVBQUksT0FBUyxFQUM5QyxPQUFPSCxFQUFhLFFBQVEsSUFB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SUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxLQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxLQUNSLE9BQVEsS0FDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixRQUFTLElBQ1QsUUFBUyxJQUNULE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLFFBQVMsSUFDVCxRQUFTLElBQ1QsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLFFBQVMsSUFDVCxRQUFTLElBQ1QsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxLQUNSLE9BQVEsS0FDUixRQUFTLElBQ1QsUUFBUyxJQUNULE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLFFBQVMsSUFDVCxRQUFTLElBQ1QsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixRQUFTLElBQ1QsUUFBUyxJQUNULE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixRQUFTLElBQ1QsUUFBUyxJQUNULE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLEtBQ1IsT0FBUSxLQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxLQUNSLE9BQVEsS0FDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxPQUFRLFNBQ1IsT0FBUSxTQUNSLE9BQVEsU0FDUixPQUFRLFNBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxhQUFjLElBQ2QsYUFBYyxJQUNkLGFBQWMsSUFDZCxhQUFjLElBQ2QsUUFBUyxJQUNULFFBQVMsSUFDVCxPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsUUFBUyxJQUNULE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLFFBQVMsSUFDVCxRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsUUFBUyxJQUNULGFBQWMsSUFDZCxhQUFjLElBQ2QsT0FBUSxJQUNSLE9BQVEsSUFDUixRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsSUFDVCxPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsYUFBYyxJQUNkLGFBQWMsSUFDZCxPQUFRLElBQ1IsT0FBUSxJQUNSLFFBQVMsSUFDVCxRQUFTLElBQ1QsYUFBYyxJQUNkLGFBQWMsSUFDZCxRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsR0FDWCxFQUNJQyxHQUFRLE9BQU8sS0FBS0QsRUFBWSxFQUFFLEtBQUssR0FBRyxFQUMxQ0UsR0FBYSxJQUFJLE9BQU9ELEdBQU8sR0FBRyxFQUN0QyxTQUFTRSxHQUFjQyxFQUFLLENBQzFCLE9BQU9BLEVBQUksUUFBUUYsR0FBYUcsR0FDdkJMLEdBQWFLLENBQUssQ0FDMUIsQ0FDSCxDQUNBLElBQUlDLEdBQVcsQ0FDYixxQkFBc0IsRUFDdEIsTUFBTyxFQUNQLFlBQWEsRUFDYixpQkFBa0IsRUFDbEIsU0FBVSxFQUNWLFFBQVMsRUFDVCxRQUFTLEVBQ1QsU0FBVSxDQUNaLEVBQ0EsU0FBU0MsR0FBU0MsRUFBTWxILEVBQU9rQyxFQUFTLENBQ3RDLElBQUlpRixFQUdKLEdBRkFqRixFQUFVQSxHQUFXLENBQUMsRUFDdEJBLEVBQVEsV0FBYWlGLEVBQXFCakYsRUFBUSxZQUFjLEtBQU9pRixFQUFxQkgsR0FBUyxRQUNqRyxDQUFDOUUsRUFBUSxVQUFXLENBQ3RCLElBQU1rRixFQUFPQyxHQUFnQkgsRUFBTWxILEVBQU9rQyxDQUFPLEVBQ2pELE1BQU8sQ0FFTCxZQUFhZ0YsRUFDYixLQUFBRSxFQUNBLGNBQWUsR0FDZixrQkFBbUJsRixFQUFRLFVBQzNCLE9BQVFrRixHQUFRbEYsRUFBUSxTQUMxQixDQUNGLENBQ0EsSUFBTW9GLEVBQWVDLEdBQW1CTCxFQUFNaEYsRUFBUSxTQUFTLEVBQ3pEc0YsRUFBYyxDQUNsQixZQUFhTixFQUNiLEtBQU1GLEdBQVMsU0FDZixjQUFlLEdBQ2Ysa0JBQW1COUUsRUFBUSxVQUMzQixPQUFRLEVBQ1YsRUFDQSxRQUFTNUMsRUFBSyxFQUFHQSxFQUFLZ0ksRUFBYSxPQUFRaEksSUFBTSxDQUMvQyxJQUFNbUksRUFBWUgsRUFBYWhJLENBQUUsRUFDN0JvSSxFQUFVTCxHQUFnQkksRUFBVSxVQUFXekgsRUFBT2tDLENBQU8sRUFDM0QsQ0FDSixXQUFBeUYsRUFDQSxXQUFBQyxFQUNBLFVBQUFDLEVBQVkzRixFQUFRLFNBQ3RCLEVBQUl1RixFQUFVLFdBQ1ZDLEVBQVVDLEdBQWNELEdBQVdWLEdBQVMsUUFDOUNVLEVBQVVDLEVBQ0RELEVBQVVFLElBQ25CRixFQUFVRSxHQUVaRixFQUFVLEtBQUssSUFBSUEsRUFBU0UsQ0FBVSxFQUNsQ0YsR0FBV0csR0FBYUgsRUFBVUYsRUFBWSxPQUNoREEsRUFBWSxLQUFPRSxFQUNuQkYsRUFBWSxPQUFTLEdBQ3JCQSxFQUFZLGNBQWdCbEksRUFDNUJrSSxFQUFZLGtCQUFvQkssRUFDaENMLEVBQVksWUFBY0MsRUFBVSxVQUV4QyxDQUNBLE9BQU9ELENBQ1QsQ0FDQSxTQUFTSCxHQUFnQlMsRUFBWUMsRUFBYzdGLEVBQVMsQ0FHMUQsT0FGQTRGLEVBQWFFLEdBQTBCRixFQUFZNUYsQ0FBTyxFQUMxRDZGLEVBQWVDLEdBQTBCRCxFQUFjN0YsQ0FBTyxFQUMxRDZGLEVBQWEsT0FBU0QsRUFBVyxPQUM1QmQsR0FBUyxTQUVkYyxJQUFlQyxFQUNWZixHQUFTLHNCQUVsQmMsRUFBYUEsRUFBVyxZQUFZLEVBQ3BDQyxFQUFlQSxFQUFhLFlBQVksRUFDcENELElBQWVDLEVBQ1ZmLEdBQVMsTUFFZGMsRUFBVyxXQUFXQyxDQUFZLEVBQzdCZixHQUFTLFlBRWRjLEVBQVcsU0FBUyxJQUFJQyxDQUFZLEVBQUUsRUFDakNmLEdBQVMsaUJBRWRjLEVBQVcsU0FBU0MsQ0FBWSxFQUMzQmYsR0FBUyxTQUNQZSxFQUFhLFNBQVcsRUFDMUJmLEdBQVMsU0FFZGlCLEdBQVdILENBQVUsRUFBRSxTQUFTQyxDQUFZLEVBQ3ZDZixHQUFTLFFBRVhrQixHQUFvQkosRUFBWUMsQ0FBWSxFQUNyRCxDQUNBLFNBQVNFLEdBQVdFLEVBQVEsQ0FDMUIsSUFBSUMsRUFBVSxHQUVkLE9BRHNCRCxFQUFPLE1BQU0sR0FBRyxFQUN4QixRQUFTRSxHQUFpQixDQUNYQSxFQUFhLE1BQU0sR0FBRyxFQUM5QixRQUFTQyxHQUFzQixDQUNoREYsR0FBV0UsRUFBa0IsT0FBTyxFQUFHLENBQUMsQ0FDMUMsQ0FBQyxDQUNILENBQUMsRUFDTUYsQ0FDVCxDQUNBLFNBQVNGLEdBQW9CSixFQUFZQyxFQUFjLENBQ3JELElBQUlRLEVBQTJCLEVBQzNCQyxFQUFhLEVBQ2pCLFNBQVNDLEVBQXNCQyxFQUFXUCxFQUFRekYsRUFBTyxDQUN2RCxRQUFTaUcsRUFBSWpHLEVBQU9rRyxFQUFJVCxFQUFPLE9BQVFRLEVBQUlDLEVBQUdELElBRTVDLEdBRG1CUixFQUFPUSxDQUFDLElBQ1JELEVBQ2pCLE9BQUFILEdBQTRCLEVBQ3JCSSxFQUFJLEVBR2YsTUFBTyxFQUNULENBQ0EsU0FBU0UsRUFBV0MsRUFBUyxDQUMzQixJQUFNQyxFQUFtQixFQUFJRCxFQUN2QkUsRUFBb0JULEVBQTJCUixFQUFhLE9BRWxFLE9BRGdCZixHQUFTLFFBQVVnQyxFQUFvQkQsQ0FFekQsQ0FDQSxJQUFNRSxFQUFhUixFQUFzQlYsRUFBYSxDQUFDLEVBQUdELEVBQVksQ0FBQyxFQUN2RSxHQUFJbUIsRUFBYSxFQUNmLE9BQU9qQyxHQUFTLFNBRWxCd0IsRUFBYVMsRUFDYixRQUFTM0osRUFBSyxFQUFHNEosRUFBSW5CLEVBQWEsT0FBUXpJLEVBQUs0SixFQUFHNUosSUFBTSxDQUN0RCxJQUFNb0osRUFBWVgsRUFBYXpJLENBQUUsRUFHakMsR0FGQWtKLEVBQWFDLEVBQXNCQyxFQUFXWixFQUFZVSxDQUFVLEVBRWhFLEVBRFVBLEVBQWEsSUFFekIsT0FBT3hCLEdBQVMsUUFFcEIsQ0FDQSxJQUFNbUMsRUFBVVgsRUFBYVMsRUFDN0IsT0FBT0osRUFBV00sQ0FBTyxDQUMzQixDQUNBLFNBQVNuQixHQUEwQmhJLEVBQU9vSixFQUFNLENBQzlDLEdBQUksQ0FDRixlQUFBQyxDQUNGLEVBQUlELEVBQ0osT0FBQXBKLEVBQVEsR0FBR0EsQ0FBSyxHQUNYcUosSUFDSHJKLEVBQVE2RyxHQUFjN0csQ0FBSyxHQUV0QkEsQ0FDVCxDQUNBLFNBQVNzSixHQUFjcEMsRUFBTXFDLEVBQVUsQ0FDckMsSUFBSUMsRUFBYUQsRUFDYixPQUFPQSxHQUFhLFdBQ3RCQyxFQUFhRCxFQUFTLFVBRXhCLElBQU12SixFQUFRd0osRUFBV3RDLENBQUksRUFDN0IsT0FBSWxILEdBQVMsS0FDSixDQUFDLEVBRU4sTUFBTSxRQUFRQSxDQUFLLEVBQ2RBLEVBRUYsQ0FBQyxPQUFPQSxDQUFLLENBQUMsQ0FDdkIsQ0FDQSxTQUFTdUgsR0FBbUJMLEVBQU11QyxFQUFXLENBQzNDLElBQU1DLEVBQVksQ0FBQyxFQUNuQixRQUFTZixFQUFJLEVBQUdDLEVBQUlhLEVBQVUsT0FBUWQsRUFBSUMsRUFBR0QsSUFBSyxDQUNoRCxJQUFNWSxFQUFXRSxFQUFVZCxDQUFDLEVBQ3RCZ0IsRUFBYUMsR0FBc0JMLENBQVEsRUFDM0NNLEVBQWFQLEdBQWNwQyxFQUFNcUMsQ0FBUSxFQUMvQyxRQUFTakssRUFBSyxFQUFHNEosRUFBSVcsRUFBVyxPQUFRdkssRUFBSzRKLEVBQUc1SixJQUM5Q29LLEVBQVUsS0FBSyxDQUNiLFVBQVdHLEVBQVd2SyxDQUFFLEVBQ3hCLFdBQUFxSyxDQUNGLENBQUMsQ0FFTCxDQUNBLE9BQU9ELENBQ1QsQ0FDQSxJQUFJSSxHQUF1QixDQUN6QixXQUFZLElBQ1osV0FBWSxJQUNkLEVBQ0EsU0FBU0YsR0FBc0JMLEVBQVUsQ0FDdkMsT0FBSSxPQUFPQSxHQUFhLFdBQ2ZPLEdBRUYsQ0FDTCxHQUFHQSxHQUNILEdBQUdQLENBQ0wsQ0FDRixDQUdBLElBQUlRLEdBQUksQ0FBRSxLQUFNLEVBQUcsRUFDZkMsR0FBS0MsR0FBbUIsT0FBTyxRQUFuQixXQUE4QkEsRUFBS0EsRUFBRyxjQUFjLFVBQVUsRUFBSSxPQUFPLFVBQVksT0FBTyxRQUFRQSxHQUFNLFNBQVMsTUFBTSxZQUFZLFNBQVMsY0FBYyxPQUFPLENBQUMsRUFBRyxDQUFFLFVBQVcsSUFBSyxHQUFJLFNBQVUsQ0FBQyxHQUFHLFdBQWFBLEdBQU1GLEdBQzFPRyxHQUFJLG9FQUNKQyxHQUFJLHFCQUNKQyxHQUFJLE9BQ0pDLEdBQUksQ0FBQ0MsRUFBSUwsSUFBTyxDQUNsQixJQUFJTSxFQUFLLEdBQUlDLEVBQUssR0FBSUMsRUFBSyxHQUMzQixRQUFTQyxLQUFNSixFQUFJLENBQ2pCLElBQUlLLEVBQUtMLEVBQUdJLENBQUUsRUFDUEEsRUFBRyxDQUFDLEdBQVgsSUFBc0JBLEVBQUcsQ0FBQyxHQUFYLElBQWVILEVBQUtHLEVBQUssSUFBTUMsRUFBSyxJQUFNSCxHQUFhRSxFQUFHLENBQUMsR0FBWCxJQUFlTCxHQUFFTSxFQUFJRCxDQUFFLEVBQUlBLEVBQUssSUFBTUwsR0FBRU0sRUFBV0QsRUFBRyxDQUFDLEdBQVgsSUFBZSxHQUFLVCxDQUFFLEVBQUksSUFBa0IsT0FBT1UsR0FBbkIsU0FBd0JILEdBQU1ILEdBQUVNLEVBQUlWLEVBQUtBLEVBQUcsUUFBUSxXQUFhVyxHQUFPRixFQUFHLFFBQVEsZ0NBQWtDRyxHQUFPLElBQUksS0FBS0EsQ0FBRSxFQUFJQSxFQUFHLFFBQVEsS0FBTUQsQ0FBRSxFQUFJQSxFQUFLQSxFQUFLLElBQU1DLEVBQUtBLENBQUUsQ0FBQyxFQUFJSCxDQUFFLEVBQVlDLEdBQVIsT0FBZUQsRUFBSyxNQUFNLEtBQUtBLENBQUUsRUFBSUEsRUFBS0EsRUFBRyxRQUFRLFNBQVUsS0FBSyxFQUFFLFlBQVksRUFBR0QsR0FBTUosR0FBRSxFQUFJQSxHQUFFLEVBQUVLLEVBQUlDLENBQUUsRUFBSUQsRUFBSyxJQUFNQyxFQUFLLElBQ2hkLENBQ0EsT0FBT0osR0FBTU4sR0FBTVEsRUFBS1IsRUFBSyxJQUFNUSxFQUFLLElBQU1BLEdBQU1ELENBQ3RELEVBQ0lNLEdBQUksQ0FBQyxFQUNMQyxHQUFLVCxHQUFPLENBQ2QsR0FBZ0IsT0FBT0EsR0FBbkIsU0FBdUIsQ0FDekIsSUFBSUwsRUFBSyxHQUNULFFBQVNNLEtBQU1ELEVBQUlMLEdBQU1NLEVBQUtRLEdBQUVULEVBQUdDLENBQUUsQ0FBQyxFQUN0QyxPQUFPTixDQUNULENBQ0EsT0FBT0ssQ0FDVCxFQUNJVSxHQUFJLENBQUNWLEVBQUlMLEVBQUlNLEVBQUlqTCxFQUFJMkwsSUFBTyxDQUM5QixJQUFJQyxFQUFLSCxHQUFFVCxDQUFFLEVBQUdhLEVBQUlMLEdBQUVJLENBQUUsSUFBTUosR0FBRUksQ0FBRSxHQUFNTixHQUFPLENBQzdDLElBQUlDLEVBQUssRUFBR08sRUFBSyxHQUNqQixLQUFPUCxFQUFLRCxFQUFHLFFBQVVRLEVBQUssSUFBTUEsRUFBS1IsRUFBRyxXQUFXQyxHQUFJLElBQU0sRUFDakUsTUFBTyxLQUFPTyxDQUNoQixHQUFHRixDQUFFLEdBQ0wsR0FBSSxDQUFDSixHQUFFSyxDQUFDLEVBQUcsQ0FDVCxJQUFJTixFQUFLSyxJQUFPWixFQUFLQSxHQUFPTSxHQUFPLENBQ2pDLElBQUlTLEVBQUlELEVBQUlFLEVBQUssQ0FBQyxDQUFDLENBQUMsRUFDcEIsS0FBT0QsRUFBS25CLEdBQUUsS0FBS1UsRUFBRyxRQUFRVCxHQUFHLEVBQUUsQ0FBQyxHQUFLa0IsRUFBRyxDQUFDLEVBQUlDLEVBQUcsTUFBTSxFQUFJRCxFQUFHLENBQUMsR0FBS0QsRUFBS0MsRUFBRyxDQUFDLEVBQUUsUUFBUWpCLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBR2tCLEVBQUcsUUFBUUEsRUFBRyxDQUFDLEVBQUVGLENBQUUsRUFBSUUsRUFBRyxDQUFDLEVBQUVGLENBQUUsR0FBSyxDQUFDLENBQUMsR0FBS0UsRUFBRyxDQUFDLEVBQUVELEVBQUcsQ0FBQyxDQUFDLEVBQUlBLEVBQUcsQ0FBQyxFQUFFLFFBQVFqQixHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQy9MLE9BQU9rQixFQUFHLENBQUMsQ0FDYixHQUFHaEIsQ0FBRSxFQUNMUSxHQUFFSyxDQUFDLEVBQUlkLEdBQUVZLEVBQUssQ0FBRSxDQUFDLGNBQWdCRSxDQUFDLEVBQUdOLENBQUcsRUFBSUEsRUFBSU4sRUFBSyxHQUFLLElBQU1ZLENBQUMsQ0FDbkUsQ0FDQSxJQUFJSSxFQUFJaEIsR0FBTU8sR0FBRSxFQUFJQSxHQUFFLEVBQUksS0FDMUIsT0FBT1AsSUFBT08sR0FBRSxFQUFJQSxHQUFFSyxDQUFDLElBQUssQ0FBQ1AsRUFBSUMsRUFBSU8sRUFBSVosSUFBTyxDQUM5Q0EsRUFBS0ssRUFBRyxLQUFPQSxFQUFHLEtBQUssUUFBUUwsRUFBSUksQ0FBRSxFQUFXQyxFQUFHLEtBQUssUUFBUUQsQ0FBRSxJQUF6QixLQUErQkMsRUFBRyxLQUFPTyxFQUFLUixFQUFLQyxFQUFHLEtBQU9BLEVBQUcsS0FBT0QsRUFDbEgsR0FBR0UsR0FBRUssQ0FBQyxFQUFHbEIsRUFBSTNLLEVBQUlpTSxDQUFDLEVBQUdKLENBQ3ZCLEVBQ0lLLEdBQUksQ0FBQ2xCLEVBQUlMLEVBQUlNLElBQU9ELEVBQUcsT0FBTyxDQUFDTSxFQUFJSixFQUFJQyxJQUFPLENBQ2hELElBQUlDLEVBQUtULEVBQUdRLENBQUUsRUFDZCxHQUFJQyxHQUFNQSxFQUFHLEtBQU0sQ0FDakIsSUFBSWUsRUFBS2YsRUFBR0gsQ0FBRSxFQUFHTSxFQUFLWSxHQUFNQSxFQUFHLE9BQVNBLEVBQUcsTUFBTSxXQUFhLE1BQU0sS0FBS0EsQ0FBRSxHQUFLQSxFQUNoRmYsRUFBS0csRUFBSyxJQUFNQSxFQUFLWSxHQUFrQixPQUFPQSxHQUFuQixTQUF3QkEsRUFBRyxNQUFRLEdBQUtwQixHQUFFb0IsRUFBSSxFQUFFLEVBQWNBLElBQVYsR0FBZSxHQUFLQSxDQUNyRyxDQUNBLE9BQU9iLEVBQUtKLEdBQWNFLEdBQUssR0FDakMsRUFBRyxFQUFFLEVBQ0wsU0FBU2dCLEVBQUVwQixFQUFJLENBQ2IsSUFBSUMsRUFBSyxNQUFRLENBQUMsRUFBR0MsRUFBS0YsRUFBRyxLQUFPQSxFQUFHQyxFQUFHLENBQUMsRUFBSUQsRUFDL0MsT0FBT1UsR0FBRVIsRUFBRyxRQUFVQSxFQUFHLElBQU1nQixHQUFFaEIsRUFBSSxDQUFDLEVBQUUsTUFBTSxLQUFLLFVBQVcsQ0FBQyxFQUFHRCxFQUFHLENBQUMsRUFBSUMsRUFBRyxPQUFPLENBQUNJLEVBQUlYLElBQU8sT0FBTyxPQUFPVyxFQUFJWCxHQUFNQSxFQUFHLEtBQU9BLEVBQUdNLEVBQUcsQ0FBQyxFQUFJTixDQUFFLEVBQUcsQ0FBQyxDQUFDLEVBQUlPLEVBQUlSLEdBQUVPLEVBQUcsTUFBTSxFQUFHQSxFQUFHLEVBQUdBLEVBQUcsRUFBR0EsRUFBRyxDQUFDLENBQzVMLENBQ0FtQixFQUFFLEtBQUssQ0FBRSxFQUFHLENBQUUsQ0FBQyxFQUNmQSxFQUFFLEtBQUssQ0FBRSxFQUFHLENBQUUsQ0FBQyxFQUdmLFNBQVNDLEdBQUVyQixFQUFJLENBQ2IsSUFBSUwsRUFBSXNCLEVBQUdiLEVBQUssR0FDaEIsR0FBZ0IsT0FBT0osR0FBbkIsVUFBcUMsT0FBT0EsR0FBbkIsU0FBdUJJLEdBQU1KLFVBQ3JDLE9BQU9BLEdBQW5CLFNBQXVCLEdBQUksTUFBTSxRQUFRQSxDQUFFLEVBQUcsQ0FDckQsSUFBSWdCLEVBQUtoQixFQUFHLE9BQ1osSUFBS0wsRUFBSyxFQUFHQSxFQUFLcUIsRUFBSXJCLElBQU1LLEVBQUdMLENBQUUsSUFBTXNCLEVBQUlJLEdBQUVyQixFQUFHTCxDQUFFLENBQUMsS0FBT1MsSUFBT0EsR0FBTSxLQUFNQSxHQUFNYSxFQUNyRixLQUFPLEtBQUtBLEtBQUtqQixFQUFJQSxFQUFHaUIsQ0FBQyxJQUFNYixJQUFPQSxHQUFNLEtBQU1BLEdBQU1hLEdBQ3hELE9BQU9iLENBQ1QsQ0FDQSxTQUFTa0IsR0FBTyxDQUNkLFFBQVN0QixFQUFJTCxFQUFJc0IsRUFBSSxFQUFHYixFQUFLLEdBQUlZLEVBQUssVUFBVSxPQUFRQyxFQUFJRCxFQUFJQyxLQUFNakIsRUFBSyxVQUFVaUIsQ0FBQyxLQUFPdEIsRUFBSzBCLEdBQUVyQixDQUFFLEtBQU9JLElBQU9BLEdBQU0sS0FBTUEsR0FBTVQsR0FDdEksT0FBT1MsQ0FDVCxDQUNBLFNBQVNtQixHQUFxQkMsRUFBUTVKLEVBQVMsQ0FDN0MsSUFBTTZKLEVBQWFDLEdBQVFGLENBQU0sRUFDakMsR0FBSTdNLEdBQVUsQ0FDWixJQUFNZ04sRUFBT0YsRUFBVyxNQUFNLEVBQzlCLE1BQU8sSUFBTUUsQ0FDZixDQUNBLEdBQU0sQ0FBRSxTQUFBQyxDQUFTLEVBQUloSyxFQUNqQmlLLEVBQVUsSUFBSSxJQUFJakssRUFBUSxPQUFTLE9BQVM2SixDQUFVLEVBQ3BESyxFQUEwQixJQUFJLFFBQzlCLENBQUNDLEVBQVVDLENBQVcsRUFBSWxMLEVBQWEsQ0FBQyxFQUFHLENBQUUsT0FBUSxFQUFNLENBQUMsRUFDNUQsQ0FBQ21MLENBQW1CLEVBQUlDLEdBQWMsRUFDdENDLEVBQWlCQyxHQUFRLENBQzdCSixFQUFhckIsSUFBUUEsRUFBRyxLQUFLLE1BQU1BLEVBQUl5QixDQUFHLEVBQUd6QixFQUFHLEVBQ2hELFFBQVcwQixLQUFNRCxFQUNmTixFQUFRLE9BQU9PLENBQUUsQ0FDckIsRUFDTWhNLEVBQWdCLENBQUMrTCxFQUFLQyxFQUFJck4sSUFBT29OLEVBQUksT0FBT3BOLEVBQUksRUFBR3FOLENBQUUsRUFDM0QsT0FBT3ZHLEVBQ0ozRixHQUFTLENBQ1IsSUFBTW1NLEVBQWNQLEVBQVMsRUFDdkJRLEVBQWFmLEVBQU8sRUFFMUIsR0FEQWUsRUFBV0MsRUFBTSxFQUNiZCxHQUFRTyxDQUFtQixFQUM3QixPQUFBQSxFQUFvQixFQUNiOUwsRUFFVCxHQUFJbU0sRUFBWSxPQUFRLENBQ3RCLElBQU1HLEVBQU90TSxFQUFLLE9BQVE2SixHQUFPLENBQUNzQyxFQUFZLFNBQVN0QyxDQUFFLENBQUMsRUFDMUQsT0FBQXNDLEVBQVksT0FBUyxFQUNyQlYsRUFBUyxDQUFFLEtBQU1hLEVBQU0sTUFBTyxDQUFDLEVBQUcsUUFBUyxDQUFDLEVBQUcsVUFBV0EsRUFBTSxjQUFBTixDQUFjLENBQUMsRUFDeEVNLENBQ1QsQ0FDQSxPQUFPZixHQUFRLElBQU0sQ0FDbkIsSUFBTWdCLEVBQVUsSUFBSSxJQUFJSCxDQUFVLEVBQzVCRSxFQUFPRixFQUFXLE1BQU0sRUFDeEJJLEVBQVEsQ0FBQyxFQUNUQyxFQUFVLENBQUMsRUFDWEMsRUFBWSxDQUFDLEVBQ25CLFFBQVdSLEtBQU1FLEdBQ2RWLEVBQVEsSUFBSVEsQ0FBRSxFQUFJUSxFQUFZRixHQUFPLEtBQUtOLENBQUUsRUFFL0MsSUFBSVMsRUFBaUIsQ0FBQ0gsRUFBTSxPQUM1QixRQUFTM04sRUFBSyxFQUFHQSxFQUFLbUIsRUFBSyxPQUFRbkIsSUFBTSxDQUN2QyxJQUFNcU4sRUFBS2xNLEVBQUtuQixDQUFFLEVBQ2IwTixFQUFRLElBQUlMLENBQUUsSUFDWlAsRUFBUSxJQUFJTyxDQUFFLElBQ2pCTyxFQUFRLEtBQUtQLENBQUUsRUFDZlAsRUFBUSxJQUFJTyxDQUFFLEdBRWhCaE0sRUFBY29NLEVBQU1KLEVBQUlyTixDQUFFLEdBRXhCOE4sR0FBa0JULElBQU9JLEVBQUt6TixDQUFFLElBQ2xDOE4sRUFBaUIsR0FDckIsQ0FDQSxNQUFJLENBQUNGLEVBQVEsUUFBVUUsRUFDZDNNLEdBQ1R5TCxFQUFTLENBQUUsS0FBTWEsRUFBTSxNQUFBRSxFQUFPLFFBQUFDLEVBQVMsVUFBQUMsRUFBVyxjQUFBVixDQUFjLENBQUMsRUFDakVOLEVBQVVhLEVBQ0hELEVBQ1QsQ0FBQyxDQUNILEVBQ0E3SyxFQUFRLE9BQVMsQ0FBQyxFQUFJNkosRUFBVyxNQUFNLENBQ3pDLENBQ0YsQ0FHQSxTQUFTc0IsTUFBYUMsRUFBTSxDQUMxQixPQUFPN04sR0FBTTZOLENBQUksQ0FDbkIsQ0FDQSxJQUFJQyxHQUEwQnRPLEdBQVlpSSxHQUFTQSxHQUFRLE1BQVEsT0FBT0EsR0FBUyxVQUFZLE1BQU9BLEVBQVFBLEdBQVNBLGFBQWdCLFFBQ3ZJLFNBQVNzRyxHQUFvQnhOLEVBQU95TixFQUFXLENBQzdDLEdBQUlBLEVBQVV6TixDQUFLLEVBQ2pCLE9BQU9BLEVBQ1QsR0FBSSxPQUFPQSxHQUFVLFlBQWMsQ0FBQ0EsRUFBTSxPQUN4QyxPQUFPd04sR0FBb0J4TixFQUFNLEVBQUd5TixDQUFTLEVBQy9DLEdBQUksTUFBTSxRQUFRek4sQ0FBSyxFQUFHLENBQ3hCLElBQU0wTixFQUFVLENBQUMsRUFDakIsUUFBV3hHLEtBQVFsSCxFQUFPLENBQ3hCLElBQU0rQixFQUFTeUwsR0FBb0J0RyxFQUFNdUcsQ0FBUyxFQUM5QzFMLElBQ0YsTUFBTSxRQUFRQSxDQUFNLEVBQUkyTCxFQUFRLEtBQUssTUFBTUEsRUFBUzNMLENBQU0sRUFBSTJMLEVBQVEsS0FBSzNMLENBQU0sRUFDckYsQ0FDQSxPQUFPMkwsRUFBUSxPQUFTQSxFQUFVLElBQ3BDLENBQ0EsT0FBTyxJQUNULENBQ0EsU0FBU0MsR0FBZ0J2TixFQUFJcU4sRUFBWUYsR0FBeUJLLEVBQWtCTCxHQUF5QixDQUMzRyxJQUFNTSxFQUFZekgsRUFBV2hHLENBQUUsRUFDekIrQyxFQUFPaUQsRUFDWCxJQUFNb0gsR0FBb0JLLEVBQVUsRUFBRzVPLEdBQVcyTyxFQUFrQkgsQ0FBUyxDQUMvRSxFQUNBLE9BQUF0SyxFQUFLLFFBQVUsSUFBTSxDQUNuQixJQUFNbkQsRUFBUW1ELEVBQUssRUFDbkIsT0FBTyxNQUFNLFFBQVFuRCxDQUFLLEVBQUlBLEVBQVFBLEVBQVEsQ0FBQ0EsQ0FBSyxFQUFJLENBQUMsQ0FDM0QsRUFDT21ELENBQ1QsQ0FHQSxTQUFTMkssR0FBaUI3TSxFQUFPLENBQy9CLE9BQU9tRixFQUFXLElBQU0sQ0FDdEIsSUFBTTJILEVBQU85TSxFQUFNLE1BQVEsSUFDM0IsTUFBTyxDQUNMLGFBQWNBLEVBQU0sa0JBQW9COE0sRUFBTyxpQkFBaUIsTUFBTSxHQUFHLEVBQ3pFLE9BQVE5TSxFQUFNLFlBQWM4TSxFQUFPLFVBQVUsTUFBTSxHQUFHLEVBQ3RELFNBQVU5TSxFQUFNLGNBQWdCOE0sRUFBTyxhQUFhLE1BQU0sR0FBRyxFQUM3RCxZQUFhOU0sRUFBTSxpQkFBbUI4TSxFQUFPLGdCQUFnQixNQUFNLEdBQUcsRUFDdEUsTUFBTzlNLEVBQU0sV0FBYThNLEVBQU8sU0FBUyxNQUFNLEdBQUcsRUFDbkQsUUFBUzlNLEVBQU0sYUFBZThNLEVBQU8sWUFBWSxNQUFNLEdBQUcsRUFDMUQsTUFBTzlNLEVBQU0sV0FBYThNLEVBQU8sU0FBUyxNQUFNLEdBQUcsQ0FDckQsQ0FDRixDQUFDLENBQ0gsQ0FDQSxTQUFTQyxHQUFVNU4sRUFBSSxDQUNyQixzQkFBc0IsSUFBTSxzQkFBc0JBLENBQUUsQ0FBQyxDQUN2RCxDQUNBLFNBQVM2TixHQUFnQkMsRUFBU0MsRUFBUXhCLEVBQUl5QixFQUFNLENBQ2xELEdBQU0sQ0FBRSxjQUFBQyxFQUFlLFFBQUFDLEVBQVMsYUFBQUMsQ0FBYSxFQUFJSixFQUNqREUsSUFBZ0IxQixDQUFFLEVBQ2xCQSxFQUFHLFVBQVUsSUFBSSxHQUFHdUIsRUFBUSxLQUFLLEVBQ2pDdkIsRUFBRyxVQUFVLElBQUksR0FBR3VCLEVBQVEsV0FBVyxFQUN2QyxlQUFlLElBQU0sQ0FDbkIsR0FBSSxDQUFDdkIsRUFBRyxXQUNOLE9BQU95QixJQUFPLEVBQ2hCRSxJQUFVM0IsRUFBSSxJQUFNNkIsRUFBYyxDQUFDLENBQ3JDLENBQUMsRUFDRFIsR0FBVSxJQUFNLENBQ2RyQixFQUFHLFVBQVUsT0FBTyxHQUFHdUIsRUFBUSxLQUFLLEVBQ3BDdkIsRUFBRyxVQUFVLElBQUksR0FBR3VCLEVBQVEsT0FBTyxHQUMvQixDQUFDSSxHQUFXQSxFQUFRLE9BQVMsS0FDL0IzQixFQUFHLGlCQUFpQixnQkFBaUI2QixDQUFhLEVBQ2xEN0IsRUFBRyxpQkFBaUIsZUFBZ0I2QixDQUFhLEVBRXJELENBQUMsRUFDRCxTQUFTQSxFQUFjbEUsRUFBSSxFQUNyQixDQUFDQSxHQUFNQSxFQUFHLFNBQVdxQyxLQUN2QkEsRUFBRyxvQkFBb0IsZ0JBQWlCNkIsQ0FBYSxFQUNyRDdCLEVBQUcsb0JBQW9CLGVBQWdCNkIsQ0FBYSxFQUNwRDdCLEVBQUcsVUFBVSxPQUFPLEdBQUd1QixFQUFRLFdBQVcsRUFDMUN2QixFQUFHLFVBQVUsT0FBTyxHQUFHdUIsRUFBUSxPQUFPLEVBQ3RDSyxJQUFlNUIsQ0FBRSxFQUVyQixDQUNGLENBQ0EsU0FBUzhCLEdBQWVQLEVBQVNDLEVBQVF4QixFQUFJeUIsRUFBTSxDQUNqRCxHQUFNLENBQUUsYUFBQU0sRUFBYyxPQUFBQyxFQUFRLFlBQUFDLENBQVksRUFBSVQsRUFDOUMsR0FBSSxDQUFDeEIsRUFBRyxXQUNOLE9BQU95QixJQUFPLEVBQ2hCTSxJQUFlL0IsQ0FBRSxFQUNqQkEsRUFBRyxVQUFVLElBQUksR0FBR3VCLEVBQVEsSUFBSSxFQUNoQ3ZCLEVBQUcsVUFBVSxJQUFJLEdBQUd1QixFQUFRLFVBQVUsRUFDdENTLElBQVNoQyxFQUFJLElBQU02QixFQUFjLENBQUMsRUFDbENSLEdBQVUsSUFBTSxDQUNkckIsRUFBRyxVQUFVLE9BQU8sR0FBR3VCLEVBQVEsSUFBSSxFQUNuQ3ZCLEVBQUcsVUFBVSxJQUFJLEdBQUd1QixFQUFRLE1BQU0sR0FDOUIsQ0FBQ1MsR0FBVUEsRUFBTyxPQUFTLEtBQzdCaEMsRUFBRyxpQkFBaUIsZ0JBQWlCNkIsQ0FBYSxFQUNsRDdCLEVBQUcsaUJBQWlCLGVBQWdCNkIsQ0FBYSxFQUVyRCxDQUFDLEVBQ0QsU0FBU0EsRUFBY2xFLEVBQUksRUFDckIsQ0FBQ0EsR0FBTUEsRUFBRyxTQUFXcUMsS0FDdkJ5QixJQUFPLEVBQ1B6QixFQUFHLG9CQUFvQixnQkFBaUI2QixDQUFhLEVBQ3JEN0IsRUFBRyxvQkFBb0IsZUFBZ0I2QixDQUFhLEVBQ3BEN0IsRUFBRyxVQUFVLE9BQU8sR0FBR3VCLEVBQVEsVUFBVSxFQUN6Q3ZCLEVBQUcsVUFBVSxPQUFPLEdBQUd1QixFQUFRLE1BQU0sRUFDckNVLElBQWNqQyxDQUFFLEVBRXBCLENBQ0YsQ0FDQSxJQUFJa0MsR0FBbUI1TixHQUFVLENBQy9CLElBQU02TixFQUFhaEIsR0FBaUI3TSxDQUFLLEVBQ3pDLE9BQU80SyxHQUFxQjhCLEdBQWdCLElBQU0xTSxFQUFNLFFBQVEsRUFBRSxRQUFTLENBQ3pFLE9BQVFBLEVBQU0sT0FDZCxTQUFTLENBQUUsTUFBQWdNLEVBQU8sUUFBQUMsRUFBUyxjQUFBVCxFQUFlLEtBQUFzQyxDQUFLLEVBQUcsQ0FDaEQsSUFBTWIsRUFBVVksRUFBVyxFQUMzQixRQUFXbkMsS0FBTU0sRUFDZmdCLEdBQWdCQyxFQUFTak4sRUFBTzBMLENBQUUsRUFFcEMsSUFBTXFDLEVBQVMsQ0FBQyxFQUNoQixRQUFXckMsS0FBTW9DLEVBQ1hwQyxFQUFHLGNBQWdCQSxhQUFjLGFBQWVBLGFBQWMsYUFDaEVxQyxFQUFPLEtBQUssQ0FBRSxHQUFBckMsRUFBSSxLQUFNQSxFQUFHLHNCQUFzQixDQUFFLENBQUMsRUFHeEQsZUFBZSxJQUFNLENBQ25CLElBQU1zQyxFQUFRLENBQUMsRUFDZixPQUFXLENBQUUsR0FBQXRDLEVBQUksS0FBQXVDLENBQUssSUFBS0YsRUFDekIsR0FBSXJDLEVBQUcsWUFBYSxDQUNsQixJQUFNd0MsRUFBVXhDLEVBQUcsc0JBQXNCLEVBQUd5QyxFQUFLRixFQUFLLEtBQU9DLEVBQVEsS0FBTUUsRUFBS0gsRUFBSyxJQUFNQyxFQUFRLEtBQy9GQyxHQUFNQyxLQUNSMUMsRUFBRyxNQUFNLFVBQVksYUFBYXlDLENBQUUsT0FBT0MsQ0FBRSxNQUM3QzFDLEVBQUcsTUFBTSxtQkFBcUIsS0FDOUJzQyxFQUFNLEtBQUt0QyxDQUFFLEVBRWpCLENBRUYsU0FBUyxLQUFLLGFBQ2QsUUFBV0EsS0FBTXNDLEVBQU8sQ0FDdEIsSUFBSUssRUFBaUIsU0FBU2hGLEVBQUksRUFDNUJBLEVBQUcsU0FBV3FDLEdBQU0sYUFBYSxLQUFLckMsRUFBRyxZQUFZLEtBQ3ZEcUMsRUFBRyxvQkFBb0IsZ0JBQWlCMkMsQ0FBYyxFQUN0RDNDLEVBQUcsVUFBVSxPQUFPLEdBQUd1QixFQUFRLElBQUksRUFFdkMsRUFDQXZCLEVBQUcsVUFBVSxJQUFJLEdBQUd1QixFQUFRLElBQUksRUFDaEN2QixFQUFHLE1BQU0sVUFBWUEsRUFBRyxNQUFNLG1CQUFxQixHQUNuREEsRUFBRyxpQkFBaUIsZ0JBQWlCMkMsQ0FBYyxDQUNyRCxDQUNGLENBQUMsRUFDRCxRQUFXM0MsS0FBTU8sRUFDZnVCLEdBQWVQLEVBQVNqTixFQUFPMEwsRUFBSSxJQUFNRixFQUFjLENBQUNFLENBQUUsQ0FBQyxDQUFDLENBRWhFLENBQ0YsQ0FBQyxDQUNILEVBR0k0QyxHQUFXLE9BQU8sVUFBVSxFQUNoQyxTQUFTQyxHQUFRVCxFQUFNLENBQ3JCLFFBQVd6RCxLQUFNeUQsRUFDZnpELEVBQUcsUUFBUSxDQUNmLENBQ0EsU0FBU21FLEdBQVNDLEVBQU9DLEVBQU9DLEVBQU8xTixFQUFVLENBQUMsRUFBRyxDQUNuRCxHQUFJakQsR0FBVSxDQUNaLElBQU00USxFQUFXSCxFQUFNLEVBQ25CSSxFQUFLLENBQUMsRUFDVixHQUFJRCxHQUFZQSxFQUFTLE9BQ3ZCLFFBQVN2USxFQUFLLEVBQUd5USxFQUFNRixFQUFTLE9BQVF2USxFQUFLeVEsRUFBS3pRLElBQ2hEd1EsRUFBRyxLQUNERixFQUNFLElBQU1DLEVBQVN2USxDQUFFLEVBQ2pCLElBQU1BLENBQ1IsQ0FDRixPQUNPNEMsRUFBUSxXQUNqQjROLEVBQUssQ0FBQzVOLEVBQVEsU0FBUyxDQUFDLEdBQzFCLE1BQU8sSUFBTTROLENBQ2YsQ0FDQSxJQUFNclAsRUFBdUIsSUFBSSxJQUNqQyxPQUFBSCxFQUFVLElBQU1rUCxHQUFRL08sRUFBSyxPQUFPLENBQUMsQ0FBQyxFQUMvQixJQUFNLENBQ1gsSUFBTXNPLEVBQU9XLEVBQU0sR0FBSyxDQUFDLEVBQ3pCLE9BQUFYLEVBQUtqQyxFQUFNLEVBQ0pkLEdBQVEsSUFBTSxDQUNuQixHQUFJLENBQUMrQyxFQUFLLE9BR1IsT0FGQVMsR0FBUS9PLEVBQUssT0FBTyxDQUFDLEVBQ3JCQSxFQUFLLE1BQU0sRUFDTnlCLEVBQVEsU0FNTixDQUpLOE4sR0FBWUMsSUFDdEJ4UCxFQUFLLElBQUk4TyxHQUFVLENBQUUsUUFBU1UsQ0FBUyxDQUFDLEVBQ2pDL04sRUFBUSxTQUFTLEVBQ3pCLENBQ1UsRUFMRixDQUFDLEVBT1osSUFBTUgsRUFBUyxJQUFJLE1BQU1nTixFQUFLLE1BQU0sRUFDOUJtQixFQUFLelAsRUFBSyxJQUFJOE8sRUFBUSxFQUM1QixHQUFJLENBQUM5TyxFQUFLLE1BQVF5UCxFQUFJLENBQ3BCQSxHQUFJLFFBQVEsRUFDWnpQLEVBQUssT0FBTzhPLEVBQVEsRUFDcEIsUUFBU2pRLEVBQUssRUFBR0EsRUFBS3lQLEVBQUssT0FBUXpQLElBQU0sQ0FDdkMsSUFBTTRILEVBQU82SCxFQUFLelAsQ0FBRSxFQUNkdUMsRUFBTThOLEVBQU16SSxFQUFNNUgsQ0FBRSxFQUMxQjZRLEVBQVdwTyxFQUFRbUYsRUFBTTVILEVBQUl1QyxDQUFHLENBQ2xDLENBQ0EsT0FBT0UsQ0FDVCxDQUNBLElBQU1xTyxFQUFXLElBQUksSUFBSTNQLEVBQUssS0FBSyxDQUFDLEVBQ3BDLFFBQVNuQixFQUFLLEVBQUdBLEVBQUt5UCxFQUFLLE9BQVF6UCxJQUFNLENBQ3ZDLElBQU00SCxFQUFPNkgsRUFBS3pQLENBQUUsRUFDZHVDLEVBQU04TixFQUFNekksRUFBTTVILENBQUUsRUFDMUI4USxFQUFTLE9BQU92TyxDQUFHLEVBQ25CLElBQU13TyxFQUFTNVAsRUFBSyxJQUFJb0IsQ0FBRyxFQUN2QndPLEdBQ0Z0TyxFQUFPekMsQ0FBRSxFQUFJK1EsRUFBTyxPQUNwQkEsRUFBTyxXQUFXL1EsQ0FBRSxFQUNwQitRLEVBQU8sUUFBUSxJQUFNbkosQ0FBSSxHQUV6QmlKLEVBQVdwTyxFQUFRbUYsRUFBTTVILEVBQUl1QyxDQUFHLENBQ3BDLENBQ0EsUUFBV0EsS0FBT3VPLEVBQ2hCM1AsRUFBSyxJQUFJb0IsQ0FBRyxHQUFHLFFBQVEsRUFDdkJwQixFQUFLLE9BQU9vQixDQUFHLEVBRWpCLE9BQU9FLENBQ1QsQ0FBQyxDQUNILEVBQ0EsU0FBU29PLEVBQVdwQixFQUFNN0gsRUFBTTVILEVBQUl1QyxFQUFLLENBQ3ZDbU8sR0FBWUMsR0FBYSxDQUN2QixHQUFNLENBQUNLLEVBQVNDLENBQU8sRUFBSW5QLEVBQWE4RixDQUFJLEVBQ3RDc0osRUFBTyxDQUFFLFFBQUFELEVBQVMsUUFBU04sQ0FBUyxFQUMxQyxHQUFJTCxFQUFNLE9BQVMsRUFBRyxDQUNwQixHQUFNLENBQUNsTixFQUFPK04sQ0FBUSxFQUFJclAsRUFBYTlCLENBQUUsRUFDekNrUixFQUFLLFNBQVdDLEVBQ2hCRCxFQUFLLE9BQVNaLEVBQU1VLEVBQVM1TixDQUFLLENBQ3BDLE1BQ0U4TixFQUFLLE9BQVNaLEVBQU1VLENBQU8sRUFDN0I3UCxFQUFLLElBQUlvQixFQUFLMk8sQ0FBSSxFQUNsQnpCLEVBQUt6UCxDQUFFLEVBQUlrUixFQUFLLE1BQ2xCLENBQUMsQ0FDSCxDQUNGLENBQ0EsU0FBU0UsR0FBSXpQLEVBQU8sQ0FDbEIsR0FBTSxDQUFFLEdBQUEwUCxDQUFHLEVBQUkxUCxFQUNmLE9BQU9tRixFQUNMcUosR0FDRSxJQUFNeE8sRUFBTSxLQUNaLE9BQU8wUCxHQUFPLFdBQWFBLEVBQU03USxHQUFNQSxFQUFFNlEsQ0FBRSxFQUMzQzFQLEVBQU0sU0FDTixhQUFjQSxFQUFRLENBQUUsU0FBVSxJQUFNQSxFQUFNLFFBQVMsRUFBSSxNQUM3RCxDQUNGLENBQ0YsQ0FHQSxTQUFTMlAsR0FBa0JDLEVBQVFDLEVBQU1DLEVBQVM3TyxFQUFTLENBQ3pELE9BQUEyTyxFQUFPLGlCQUFpQkMsRUFBTUMsRUFBUzdPLENBQU8sRUFDdkMvQixHQUFhMFEsRUFBTyxvQkFBb0IsS0FBS0EsRUFBUUMsRUFBTUMsRUFBUzdPLENBQU8sQ0FBQyxDQUNyRixDQUNBLFNBQVM4TyxHQUFvQkMsRUFBU0gsRUFBTUMsRUFBUzdPLEVBQVMsQ0FDNUQsR0FBSWpELEdBQ0YsT0FDRixJQUFNaVMsRUFBa0IsSUFBTSxDQUM1Qm5SLEdBQVFGLEVBQU9vUixDQUFPLENBQUMsRUFBRSxRQUFTdEUsR0FBTyxDQUNuQ0EsR0FDRjVNLEdBQVFGLEVBQU9pUixDQUFJLENBQUMsRUFBRSxRQUFTSyxHQUFVUCxHQUFrQmpFLEVBQUl3RSxFQUFPSixFQUFTN08sQ0FBTyxDQUFDLENBQzNGLENBQUMsQ0FDSCxFQUNJLE9BQU8rTyxHQUFZLFdBQ3JCakwsRUFBYWtMLENBQWUsRUFFNUJFLEVBQW1CRixDQUFlLENBQ3RDLENBR0EsU0FBU0csR0FBbUJ6UixFQUFVc0MsRUFBUyxDQUM3QyxHQUFJakQsR0FDRixNQUFPLENBQUUsUUFBU0csR0FBTSxVQUFXQSxFQUFLLEVBRTFDLElBQU04RyxFQUFXLElBQUksZUFBZXRHLENBQVEsRUFDNUMsT0FBQVUsRUFBVTRGLEVBQVMsV0FBVyxLQUFLQSxDQUFRLENBQUMsRUFDckMsQ0FDTCxRQUFVb0wsR0FBUXBMLEVBQVMsUUFBUW9MLEVBQUtwUCxDQUFPLEVBQy9DLFVBQVdnRSxFQUFTLFVBQVUsS0FBS0EsQ0FBUSxDQUM3QyxDQUNGLENBQ0EsU0FBU3FMLEdBQXFCTixFQUFTTyxFQUFVdFAsRUFBUyxDQUN4RCxHQUFJakQsR0FDRixPQUNGLElBQU13UyxFQUE4QixJQUFJLFFBQVcsQ0FBRSxRQUFBQyxFQUFTLFVBQUFDLENBQVUsRUFBSU4sR0FBb0JPLEdBQWEsQ0FDM0csUUFBV0MsS0FBU0QsRUFBVSxDQUM1QixHQUFNLENBQUUsWUFBQUUsRUFBYSxPQUFBakIsQ0FBTyxFQUFJZ0IsRUFBT3pNLEVBQVEsS0FBSyxNQUFNME0sRUFBWSxLQUFLLEVBQUd6TSxFQUFTLEtBQUssTUFBTXlNLEVBQVksTUFBTSxFQUFHQyxFQUFXTixFQUFZLElBQUlaLENBQU0sR0FDcEosQ0FBQ2tCLEdBQVlBLEVBQVMsUUFBVTNNLEdBQVMyTSxFQUFTLFNBQVcxTSxLQUMvRG1NLEVBQVNNLEVBQWFqQixFQUFRZ0IsQ0FBSyxFQUNuQ0osRUFBWSxJQUFJWixFQUFRLENBQUUsTUFBQXpMLEVBQU8sT0FBQUMsQ0FBTyxDQUFDLEVBRTdDLENBQ0YsRUFBR25ELENBQU8sRUFDVjhELEVBQWN2RixHQUFTLENBQ3JCLElBQU02TSxFQUFPL04sR0FBa0JRLEdBQVFGLEVBQU9vUixDQUFPLENBQUMsQ0FBQyxFQUN2RCxPQUFBMVEsR0FBZ0IrTSxFQUFNN00sRUFBTWlSLEVBQVNDLENBQVMsRUFDdkNyRSxDQUNULEVBQUcsQ0FBQyxDQUFDLENBQ1AsQ0FHQSxJQUFJMEUsR0FBa0IscUNBQ3RCLFNBQVNDLEdBQW9CdE0sRUFBTyxDQUNsQyxJQUFNdU0sRUFBUyxDQUFDLEVBQ1puTCxFQUNKLEtBQU9BLEVBQVFpTCxHQUFnQixLQUFLck0sQ0FBSyxHQUN2Q3VNLEVBQU9uTCxFQUFNLENBQUMsQ0FBQyxFQUFJQSxFQUFNLENBQUMsRUFFNUIsT0FBT21MLENBQ1QsQ0FDQSxTQUFTQyxHQUFhMUgsRUFBSTJILEVBQUksQ0FDNUIsR0FBSSxPQUFPM0gsR0FBTyxTQUFVLENBQzFCLEdBQUksT0FBTzJILEdBQU8sU0FDaEIsTUFBTyxHQUFHM0gsQ0FBRSxJQUFJMkgsQ0FBRSxHQUNwQjNILEVBQUt3SCxHQUFvQnhILENBQUUsQ0FDN0IsTUFBVyxPQUFPMkgsR0FBTyxXQUN2QkEsRUFBS0gsR0FBb0JHLENBQUUsR0FFN0IsTUFBTyxDQUFFLEdBQUczSCxFQUFJLEdBQUcySCxDQUFHLENBQ3hCLENBR0EsU0FBU0MsR0FBZUMsRUFBT3BMLEVBQU14RSxFQUFRLEdBQUksQ0FDL0MsT0FBTUEsS0FBUzRQLEVBR1IsQ0FBQyxHQUFHQSxFQUFNLE1BQU0sRUFBRzVQLENBQUssRUFBR3dFLEVBQU0sR0FBR29MLEVBQU0sTUFBTTVQLENBQUssQ0FBQyxFQUZwRCxDQUFDLEdBQUc0UCxFQUFPcEwsQ0FBSSxDQUcxQixDQUNBLFNBQVNxTCxHQUFvQkQsRUFBT3BMLEVBQU0sQ0FDeEMsSUFBTXNMLEVBQWUsQ0FBQyxHQUFHRixDQUFLLEVBQ3hCNVAsRUFBUThQLEVBQWEsUUFBUXRMLENBQUksRUFDdkMsT0FBSXhFLElBQVUsSUFDWjhQLEVBQWEsT0FBTzlQLEVBQU8sQ0FBQyxFQUV2QjhQLENBQ1QsQ0FDQSxTQUFTQyxHQUFTelMsRUFBTyxDQUN2QixPQUFPLE9BQU9BLEdBQVUsUUFDMUIsQ0FDQSxTQUFTMFMsR0FBUzFTLEVBQU8sQ0FDdkIsT0FBTyxPQUFPLFVBQVUsU0FBUyxLQUFLQSxDQUFLLElBQU0saUJBQ25ELENBQ0EsU0FBUzJTLEdBQVczUyxFQUFPLENBQ3pCLE9BQU8sT0FBT0EsR0FBVSxVQUMxQixDQUNBLFNBQVM0UyxHQUFpQkMsRUFBUSxDQUNoQyxPQUFRQyxHQUFXLEdBQUdELEVBQU8sQ0FBQyxJQUFJQyxDQUFNLEVBQzFDLENBQ0EsU0FBU0MsR0FBU0MsRUFBUUMsRUFBTyxDQUMvQixPQUFLRCxFQUdFQSxJQUFXQyxHQUFTRCxFQUFPLFNBQVNDLENBQUssRUFGdkMsRUFHWCxDQUNBLFNBQVNDLEdBQWlCcFIsRUFBTXFSLEVBQW1CLEdBQU8sQ0FDeEQsR0FBTSxDQUFFLGNBQUFDLENBQWMsRUFBSUMsR0FBWXZSLENBQUksRUFDMUMsR0FBSSxDQUFDc1IsR0FBZSxTQUNsQixPQUFPLEtBRVQsR0FBSUUsR0FBUUYsQ0FBYSxHQUFLQSxFQUFjLGdCQUMxQyxPQUFPRixHQUFpQkUsRUFBYyxnQkFBZ0IsS0FBTUQsQ0FBZ0IsRUFFOUUsR0FBSUEsRUFBa0IsQ0FDcEIsSUFBTUksRUFBS0gsRUFBYyxhQUFhLHVCQUF1QixFQUM3RCxHQUFJRyxFQUFJLENBQ04sSUFBTUMsRUFBVUgsR0FBWUQsQ0FBYSxFQUFFLGVBQWVHLENBQUUsRUFDNUQsR0FBSUMsRUFDRixPQUFPQSxDQUVYLENBQ0YsQ0FDQSxPQUFPSixDQUNULENBQ0EsU0FBU0ssR0FBVTNSLEVBQU0sQ0FDdkIsT0FBT3VSLEdBQVl2UixDQUFJLEVBQUUsYUFBZSxNQUMxQyxDQUNBLFNBQVN1UixHQUFZdlIsRUFBTSxDQUN6QixPQUFPQSxFQUFPQSxFQUFLLGVBQWlCQSxFQUFPLFFBQzdDLENBQ0EsU0FBU3dSLEdBQVFFLEVBQVMsQ0FDeEIsT0FBT0EsRUFBUSxVQUFZLFFBQzdCLENBQ0EsSUFBSUUsSUFBNkJDLElBQy9CQSxFQUFVLE9BQVksU0FDdEJBLEVBQVUsTUFBVyxRQUNyQkEsRUFBVSxJQUFTLE1BQ25CQSxFQUFVLE1BQVcsSUFDckJBLEVBQVUsVUFBZSxZQUN6QkEsRUFBVSxVQUFlLFlBQ3pCQSxFQUFVLFdBQWdCLGFBQzFCQSxFQUFVLFFBQWEsVUFDdkJBLEVBQVUsSUFBUyxNQUNuQkEsRUFBVSxLQUFVLE9BQ3BCQSxFQUFVLFNBQWMsV0FDeEJBLEVBQVUsT0FBWSxTQUNmQSxJQUNORCxJQUFZLENBQUMsQ0FBQyxFQUNqQixTQUFTRSxHQUFhQyxFQUFJLENBQ3hCLE9BQU8sT0FBTyxPQUFXLEtBQWUsT0FBTyxXQUFhLEtBRTFEQSxFQUFHLEtBQUssT0FBTyxVQUFVLGVBQWtCLFVBQVksT0FBTyxVQUFVLFFBQVEsRUFDOUUsRUFDTixDQUNBLFNBQVNDLElBQVEsQ0FDZixPQUFPRixHQUFhLE9BQU8sQ0FDN0IsQ0FDQSxTQUFTRyxJQUFXLENBQ2xCLE9BQU9ILEdBQWEsVUFBVSxDQUNoQyxDQUNBLFNBQVNJLElBQVMsQ0FDaEIsT0FBT0osR0FBYSxRQUFRLEdBQzVCRSxHQUFNLEdBQUssVUFBVSxlQUFpQixDQUN4QyxDQUNBLFNBQVNHLElBQVEsQ0FDZixPQUFPRixHQUFTLEdBQUtDLEdBQU8sQ0FDOUIsQ0FDQSxTQUFTRSxJQUFnQixDQUN2QixPQUFPSixHQUFNLEdBQUtHLEdBQU0sQ0FDMUIsQ0FDQSxTQUFTRSxHQUFZQyxFQUFPckQsRUFBUyxDQUNuQyxPQUFJQSxJQUNFNEIsR0FBVzVCLENBQU8sRUFDcEJBLEVBQVFxRCxDQUFLLEVBRWJyRCxFQUFRLENBQUMsRUFBRUEsRUFBUSxDQUFDLEVBQUdxRCxDQUFLLEdBR3pCQSxHQUFPLGdCQUNoQixDQUNBLFNBQVNDLEdBQXFCQyxFQUFVLENBQ3RDLE9BQVFGLEdBQVUsQ0FDaEIsUUFBV3JELEtBQVd1RCxFQUNwQkgsR0FBWUMsRUFBT3JELENBQU8sQ0FFOUIsQ0FDRixDQUNBLFNBQVN3RCxHQUFVakssRUFBSSxDQUNyQixPQUFJd0osR0FBTSxFQUNEeEosRUFBRyxTQUFXLENBQUNBLEVBQUcsUUFFcEJBLEVBQUcsU0FBVyxDQUFDQSxFQUFHLE9BQzNCLENBQ0EsU0FBU2tLLEdBQXNCaEIsRUFBUyxDQUN0QyxHQUFLQSxFQUdMLEdBQUlpQixHQUFzQixFQUN4QmpCLEVBQVEsTUFBTSxDQUFFLGNBQWUsRUFBSyxDQUFDLE1BQ2hDLENBQ0wsSUFBTWtCLEVBQXFCQyxHQUFzQm5CLENBQU8sRUFDeERBLEVBQVEsTUFBTSxFQUNkb0IsR0FBc0JGLENBQWtCLENBQzFDLENBQ0YsQ0FDQSxJQUFJRyxHQUE4QixLQUNsQyxTQUFTSixJQUF3QixDQUMvQixHQUFJSSxJQUErQixLQUFNLENBQ3ZDQSxHQUE4QixHQUM5QixHQUFJLENBQ2dCLFNBQVMsY0FBYyxLQUFLLEVBQ3BDLE1BQU0sQ0FDZCxJQUFJLGVBQWdCLENBQ2xCLE9BQUFBLEdBQThCLEdBQ3ZCLEVBQ1QsQ0FDRixDQUFDLENBQ0gsTUFBYSxDQUNiLENBQ0YsQ0FDQSxPQUFPQSxFQUNULENBQ0EsU0FBU0YsR0FBc0JuQixFQUFTLENBQ3RDLElBQUlSLEVBQVNRLEVBQVEsV0FDZmtCLEVBQXFCLENBQUMsRUFDdEJJLEVBQXVCLFNBQVMsa0JBQW9CLFNBQVMsZ0JBQ25FLEtBQU85QixhQUFrQixhQUFlQSxJQUFXOEIsSUFDN0M5QixFQUFPLGFBQWVBLEVBQU8sY0FBZ0JBLEVBQU8sWUFBY0EsRUFBTyxjQUMzRTBCLEVBQW1CLEtBQUssQ0FDdEIsUUFBUzFCLEVBQ1QsVUFBV0EsRUFBTyxVQUNsQixXQUFZQSxFQUFPLFVBQ3JCLENBQUMsRUFFSEEsRUFBU0EsRUFBTyxXQUVsQixPQUFJOEIsYUFBZ0MsYUFDbENKLEVBQW1CLEtBQUssQ0FDdEIsUUFBU0ksRUFDVCxVQUFXQSxFQUFxQixVQUNoQyxXQUFZQSxFQUFxQixVQUNuQyxDQUFDLEVBRUlKLENBQ1QsQ0FDQSxTQUFTRSxHQUFzQkYsRUFBb0IsQ0FDakQsT0FBVyxDQUFFLFFBQUFsQixFQUFTLFVBQUF1QixFQUFXLFdBQUFDLENBQVcsSUFBS04sRUFDL0NsQixFQUFRLFVBQVl1QixFQUNwQnZCLEVBQVEsV0FBYXdCLENBRXpCLENBQ0EsSUFBSUMsR0FBb0IsQ0FDdEIsNkNBQ0EseUJBQ0EsMkJBQ0EseUJBQ0EsVUFDQSxhQUNBLGFBQ0EsU0FDQSxTQUNBLFFBQ0Esa0JBQ0Esa0JBQ0Esa0RBQ0YsRUFDSUMsR0FBbUIsQ0FBQyxHQUFHRCxHQUFtQixpREFBaUQsRUFDM0ZFLEdBQTZCRixHQUFrQixLQUFLLGlCQUFpQixFQUFJLDRDQUN6RUcsR0FBNEJGLEdBQWlCLEtBQy9DLHNDQUNGLEVBQ0EsU0FBU0csR0FBaUJDLEVBQVdDLEVBQWtCLENBRXJELElBQU1DLEVBRFcsTUFBTSxLQUFLRixFQUFVLGlCQUFpQkgsRUFBMEIsQ0FBQyxFQUMvQyxPQUFPTSxFQUFVLEVBQ3BELE9BQUlGLEdBQW9CRSxHQUFXSCxDQUFTLEdBQzFDRSxFQUFrQixRQUFRRixDQUFTLEVBRXJDRSxFQUFrQixRQUFRLENBQUNoQyxFQUFTbFUsSUFBTyxDQUN6QyxHQUFJZ1UsR0FBUUUsQ0FBTyxHQUFLQSxFQUFRLGdCQUFpQixDQUMvQyxJQUFNa0MsRUFBWWxDLEVBQVEsZ0JBQWdCLEtBQ3BDbUMsRUFBbUJOLEdBQWlCSyxFQUFXLEVBQUssRUFDMURGLEVBQWtCLE9BQU9sVyxFQUFJLEVBQUcsR0FBR3FXLENBQWdCLENBQ3JELENBQ0YsQ0FBQyxFQUNNSCxDQUNULENBQ0EsU0FBU0MsR0FBV2pDLEVBQVMsQ0FDM0IsT0FBT29DLEdBQVlwQyxDQUFPLEdBQUssQ0FBQ3FDLEdBQW9CckMsQ0FBTyxDQUM3RCxDQUNBLFNBQVNvQyxHQUFZcEMsRUFBUyxDQUM1QixPQUFPQSxFQUFRLFFBQVEyQixFQUEwQixHQUFLVyxHQUFpQnRDLENBQU8sQ0FDaEYsQ0FDQSxTQUFTcUMsR0FBb0JyQyxFQUFTLENBRXBDLE9BRGlCLFNBQVNBLEVBQVEsYUFBYSxVQUFVLEdBQUssSUFBSyxFQUFFLEVBQ25ELENBQ3BCLENBQ0EsU0FBU3NDLEdBQWlCdEMsRUFBU3VDLEVBQWMsQ0FDL0MsT0FBT3ZDLEVBQVEsV0FBYSxZQUFjd0MsR0FBZXhDLENBQU8sR0FBS3lDLEdBQW1CekMsRUFBU3VDLENBQVksSUFBTSxDQUFDdkMsRUFBUSxlQUFpQnNDLEdBQWlCdEMsRUFBUSxjQUFlQSxDQUFPLEVBQzlMLENBQ0EsU0FBU3dDLEdBQWV4QyxFQUFTLENBQy9CLEdBQUksRUFBRUEsYUFBbUIsY0FBZ0IsRUFBRUEsYUFBbUIsWUFDNUQsTUFBTyxHQUVULEdBQU0sQ0FBRSxRQUFBMEMsRUFBUyxXQUFBQyxDQUFXLEVBQUkzQyxFQUFRLE1BQ3BDNEMsRUFBWUYsSUFBWSxRQUFVQyxJQUFlLFVBQVlBLElBQWUsV0FDaEYsR0FBSUMsRUFBVyxDQUNiLEdBQUksQ0FBQzVDLEVBQVEsY0FBYyxZQUN6QixPQUFPNEMsRUFFVCxHQUFNLENBQUUsaUJBQWtCQyxDQUFrQixFQUFJN0MsRUFBUSxjQUFjLFlBQ2hFLENBQUUsUUFBUzhDLEVBQWlCLFdBQVlDLENBQW1CLEVBQUlGLEVBQWtCN0MsQ0FBTyxFQUM5RjRDLEVBQVlFLElBQW9CLFFBQVVDLElBQXVCLFVBQVlBLElBQXVCLFVBQ3RHLENBQ0EsT0FBT0gsQ0FDVCxDQUNBLFNBQVNILEdBQW1CekMsRUFBU3VDLEVBQWMsQ0FDakQsTUFBTyxDQUFDdkMsRUFBUSxhQUFhLFFBQVEsSUFBTUEsRUFBUSxXQUFhLFdBQWF1QyxHQUFnQkEsRUFBYSxXQUFhLFVBQVl2QyxFQUFRLGFBQWEsTUFBTSxFQUFJLEdBQ3BLLENBQ0EsU0FBU2dELEdBQXVCQyxFQUFNQyxFQUFNQyxFQUFPLENBQ2pELElBQU1DLEVBQVdGLEdBQU0sU0FBV3RCLEdBQTRCRCxHQUN4RDBCLEVBQVMsU0FBUyxpQkFBaUJKLEVBQU0sV0FBVyxhQUFjLENBQ3RFLFdBQVczVSxFQUFNLENBQ2YsT0FBSTRVLEdBQU0sTUFBTSxTQUFTNVUsQ0FBSSxFQUNwQixXQUFXLGNBRWhCQSxFQUFLLFFBQVE4VSxDQUFRLEdBQUtkLEdBQWlCaFUsQ0FBSSxJQUFnQixDQUFDNFUsR0FBTSxRQUFVQSxFQUFLLE9BQU81VSxDQUFJLEdBQzNGLFdBQVcsY0FFYixXQUFXLFdBQ3BCLENBQ0YsQ0FBQyxFQUNELE9BQUk0VSxHQUFNLE9BQ1JHLEVBQU8sWUFBY0gsRUFBSyxNQUVyQkcsQ0FDVCxDQUNBLFNBQVNDLEdBQWdCaFYsRUFBTSxDQUM3QixLQUFPQSxHQUFRLENBQUNpVixHQUFhalYsQ0FBSSxHQUMvQkEsRUFBT0EsRUFBSyxjQUVkLE9BQU9BLEdBQVEsU0FBUyxrQkFBb0IsU0FBUyxlQUN2RCxDQUNBLFNBQVNpVixHQUFhalYsRUFBTSxDQUMxQixJQUFNNkQsRUFBUSxPQUFPLGlCQUFpQjdELENBQUksRUFDMUMsTUFBTyxnQkFBZ0IsS0FBSzZELEVBQU0sU0FBV0EsRUFBTSxVQUFZQSxFQUFNLFNBQVMsQ0FDaEYsQ0FDQSxTQUFTcVIsSUFBUSxDQUVqQixDQUNBLFNBQVNDLEdBQWlCQyxFQUFPQyxFQUFTLENBQ3hDLEdBQU0sQ0FBQ0MsRUFBR0MsQ0FBQyxFQUFJSCxFQUNYSSxFQUFTLEdBQ1A3VCxFQUFTMFQsRUFBUSxPQUN2QixRQUFTM00sRUFBSy9HLEVBQVFuRSxFQUFLLEVBQUdxSixFQUFJNkIsRUFBSyxFQUFHbEwsRUFBS2tMLEVBQUk3QixFQUFJckosSUFBTSxDQUMzRCxHQUFNLENBQUNpWSxFQUFJQyxDQUFFLEVBQUlMLEVBQVE3WCxDQUFFLEVBQ3JCLENBQUNtWSxFQUFJQyxDQUFFLEVBQUlQLEVBQVF4TyxDQUFDLEVBQ3BCLENBQUMsQ0FBRWdQLENBQUUsRUFBSVIsRUFBUXhPLElBQU0sRUFBSTZCLEVBQUssRUFBSTdCLEVBQUksQ0FBQyxHQUFLLENBQUMsRUFBRyxDQUFDLEVBQ25EaVAsR0FBU0osRUFBS0UsSUFBT04sRUFBSUcsSUFBT0EsRUFBS0UsSUFBT0osRUFBSUcsR0FDdEQsR0FBSUUsRUFBS0YsR0FDUCxHQUFJSCxHQUFLSyxHQUFNTCxFQUFJRyxFQUFJLENBQ3JCLEdBQUlJLElBQVUsRUFDWixNQUFPLEdBQ0xBLEVBQVEsSUFDTlAsSUFBTUssRUFDSkwsRUFBSU0sSUFDTkwsRUFBUyxDQUFDQSxHQUdaQSxFQUFTLENBQUNBLEVBR2hCLFVBQ1NFLEVBQUtFLEdBQ2QsR0FBSUwsRUFBSUcsR0FBTUgsR0FBS0ssRUFBSSxDQUNyQixHQUFJRSxJQUFVLEVBQ1osTUFBTyxHQUNMQSxFQUFRLElBQ05QLElBQU1LLEVBQ0pMLEVBQUlNLElBQ05MLEVBQVMsQ0FBQ0EsR0FHWkEsRUFBUyxDQUFDQSxFQUdoQixVQUNTRCxHQUFLRyxJQUFPSixHQUFLSyxHQUFNTCxHQUFLRyxHQUFNSCxHQUFLRyxHQUFNSCxHQUFLSyxHQUMzRCxNQUFPLEVBRVgsQ0FDQSxPQUFPSCxDQUNULENBQ0EsU0FBU08sRUFBa0JDLEVBQWM3VyxFQUFPLENBQzlDLE9BQU84VyxFQUFXRCxFQUFjN1csQ0FBSyxDQUN2QyxDQUNBLElBQUkrVyxHQUF1QyxJQUFJLElBQzNDQyxHQUFzQyxJQUFJLElBQzlDLFNBQVNDLElBQW9CLENBQzNCLEdBQUksT0FBTyxPQUFXLElBQ3BCLE9BRUYsSUFBTUMsRUFBcUI3TixHQUFPLENBQ2hDLEdBQUksQ0FBQ0EsRUFBRyxPQUNOLE9BRUYsSUFBSThOLEVBQWNKLEdBQXFCLElBQUkxTixFQUFHLE1BQU0sRUFDL0M4TixJQUNIQSxFQUE4QixJQUFJLElBQ2xDSixHQUFxQixJQUFJMU4sRUFBRyxPQUFROE4sQ0FBVyxFQUMvQzlOLEVBQUcsT0FBTyxpQkFBaUIsbUJBQW9CK04sQ0FBZSxHQUVoRUQsRUFBWSxJQUFJOU4sRUFBRyxZQUFZLENBQ2pDLEVBQ00rTixFQUFtQi9OLEdBQU8sQ0FDOUIsR0FBSSxDQUFDQSxFQUFHLE9BQ04sT0FFRixJQUFNZ08sRUFBYU4sR0FBcUIsSUFBSTFOLEVBQUcsTUFBTSxFQUNyRCxHQUFLZ08sSUFHTEEsRUFBVyxPQUFPaE8sRUFBRyxZQUFZLEVBQzdCZ08sRUFBVyxPQUFTLElBQ3RCaE8sRUFBRyxPQUFPLG9CQUFvQixtQkFBb0IrTixDQUFlLEVBQ2pFTCxHQUFxQixPQUFPMU4sRUFBRyxNQUFNLEdBRW5DME4sR0FBcUIsT0FBUyxHQUFHLENBQ25DLFFBQVdPLEtBQU1OLEdBQ2ZNLEVBQUcsRUFFTE4sR0FBb0IsTUFBTSxDQUM1QixDQUNGLEVBQ0EsU0FBUyxLQUFLLGlCQUFpQixnQkFBaUJFLENBQWlCLEVBQ2pFLFNBQVMsS0FBSyxpQkFBaUIsZ0JBQWlCRSxDQUFlLENBQ2pFLENBQ0ksT0FBTyxTQUFhLE1BQ2xCLFNBQVMsYUFBZSxVQUMxQkgsR0FBa0IsRUFFbEIsU0FBUyxpQkFBaUIsbUJBQW9CQSxFQUFpQixHQUduRSxTQUFTTSxHQUFlQyxFQUFZakYsRUFBUyxDQUMzQyxJQUFNa0YsRUFBVUMsR0FBZUYsRUFBWWpGLEVBQVMsTUFBTSxFQUNwRG9GLEVBQVVELEdBQWVGLEVBQVlqRixFQUFTLEtBQUssRUFDbkRwTyxFQUFRb08sRUFBUSxZQUNoQm5PLEVBQVNtTyxFQUFRLGFBQ25CNEQsRUFBSXFCLEVBQVcsV0FDZnBCLEVBQUlvQixFQUFXLFVBQ2JJLEVBQU96QixFQUFJcUIsRUFBVyxZQUN0QkssRUFBT3pCLEVBQUlvQixFQUFXLGFBQ3hCQyxHQUFXdEIsRUFDYkEsRUFBSXNCLEVBQ0tBLEVBQVV0VCxFQUFReVQsSUFDM0J6QixHQUFLc0IsRUFBVXRULEVBQVF5VCxHQUVyQkQsR0FBV3ZCLEVBQ2JBLEVBQUl1QixFQUNLQSxFQUFVdlQsRUFBU3lULElBQzVCekIsR0FBS3VCLEVBQVV2VCxFQUFTeVQsR0FFMUJMLEVBQVcsV0FBYXJCLEVBQ3hCcUIsRUFBVyxVQUFZcEIsQ0FDekIsQ0FDQSxTQUFTc0IsR0FBZUksRUFBVTlGLEVBQU8rRixFQUFNLENBQzdDLElBQU1DLEVBQU9ELElBQVMsT0FBUyxhQUFlLFlBQzFDRSxFQUFNLEVBQ1YsS0FBT2pHLEVBQU0sZUFDWGlHLEdBQU9qRyxFQUFNZ0csQ0FBSSxFQUNiaEcsRUFBTSxlQUFpQjhGLElBRkYsQ0FJbEIsR0FBSTlGLEVBQU0sYUFBYSxTQUFTOEYsQ0FBUSxFQUFHLENBQ2hERyxHQUFPSCxFQUFTRSxDQUFJLEVBQ3BCLEtBQ0YsQ0FDQWhHLEVBQVFBLEVBQU0sWUFDaEIsQ0FDQSxPQUFPaUcsQ0FDVCxDQUNBLFNBQVNDLEdBQW1CQyxFQUFlMUMsRUFBTSxDQUMvQyxHQUFJLFNBQVMsU0FBUzBDLENBQWEsRUFBRyxDQUNwQyxJQUFNM0MsRUFBTyxTQUFTLGtCQUFvQixTQUFTLGdCQUVuRCxHQUQwQixPQUFPLGlCQUFpQkEsQ0FBSSxFQUFFLFdBQWEsU0FROUQsQ0FDTCxJQUFJNEMsRUFBZXZDLEdBQWdCc0MsQ0FBYSxFQUNoRCxLQUFPQSxHQUFpQkMsR0FBZ0JELElBQWtCM0MsR0FBUTRDLElBQWlCNUMsR0FDakYrQixHQUFlYSxFQUFjRCxDQUFhLEVBQzFDQSxFQUFnQkMsRUFDaEJBLEVBQWV2QyxHQUFnQnNDLENBQWEsQ0FFaEQsS0Fkd0IsQ0FDdEIsR0FBTSxDQUFFLEtBQU1FLEVBQWMsSUFBS0MsQ0FBWSxFQUFJSCxFQUFjLHNCQUFzQixFQUNyRkEsR0FBZSxpQkFBaUIsQ0FBRSxNQUFPLFNBQVUsQ0FBQyxFQUNwRCxHQUFNLENBQUUsS0FBTUksRUFBUyxJQUFLQyxDQUFPLEVBQUlMLEVBQWMsc0JBQXNCLEdBQ3ZFLEtBQUssSUFBSUUsRUFBZUUsQ0FBTyxFQUFJLEdBQUssS0FBSyxJQUFJRCxFQUFjRSxDQUFNLEVBQUksSUFDM0VMLEVBQWMsaUJBQWlCLENBQUUsTUFBTyxTQUFVLENBQUMsQ0FFdkQsQ0FRRixDQUNGLENBQ0EsSUFBSU0sR0FBdUIsQ0FDekIsT0FBUSxJQUNSLEtBQU0sZ0JBQ04sWUFBYSxhQUNiLE9BQVEsTUFDUixPQUFRLGdCQUNSLFNBQVUsU0FDVixRQUFTLElBQ1QsU0FBVSxXQUNWLE1BQU8sTUFDUCxjQUFlLFFBQ2pCLEVBR0EsU0FBU0MsR0FBaUIxWCxFQUFRLENBQ2hDLE9BQVFzUixJQUNOdFIsRUFBT3NSLENBQUUsRUFDRixJQUFNdFIsRUFBTyxNQUFNLEVBRTlCLENBR0EsU0FBUzJYLEdBQWN0SSxFQUFLL1AsRUFBVSxDQUNwQyxHQUFNLENBQUNzWSxFQUFTQyxDQUFVLEVBQUkxWSxFQUFhMlksR0FBa0J4WSxJQUFXLENBQUMsQ0FBQyxFQUMxRSxPQUFBeUUsRUFBYSxJQUFNLENBQ2pCOFQsRUFBV3hJLEVBQUksR0FBRyxRQUFRLFlBQVksR0FBS3lJLEdBQWtCeFksSUFBVyxDQUFDLENBQUMsQ0FDNUUsQ0FBQyxFQUNNc1ksQ0FDVCxDQUNBLFNBQVNFLEdBQWtCL1osRUFBTyxDQUNoQyxPQUFPMFMsR0FBUzFTLENBQUssRUFBSUEsRUFBUSxNQUNuQyxDQUdBLFNBQVNnYSxHQUFZL1ksRUFBTyxDQUMxQixHQUFNLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdsWixFQUFPLENBQUMsSUFBSSxDQUFDLEVBQ2hELEdBQUksQ0FBQ2daLEVBQU0sR0FDVCxNQUFNLElBQUksTUFBTSwyREFBMkQsRUFFN0UsT0FFRTVULEVBQWdCK1QsR0FBU3JDLEVBQVdtQyxFQUFRLENBQzFDLElBQUksV0FBWSxDQUNkLE9BQU9ELEVBQU0sRUFDZixDQUNGLENBQUMsQ0FBQyxDQUVOLENBR0EsSUFBSUksR0FBMEIsQ0FBQyxLQUFNLE9BQVEsa0JBQW1CLFdBQVksV0FBWSxVQUFVLEVBQ2xHLFNBQVNDLEdBQWtCclosRUFBTyxDQUNoQyxJQUFNc1osRUFBWSxnQkFBZ0JDLEdBQWUsQ0FBQyxHQUM1Q0MsRUFBYzVDLEVBQWtCLENBQ3BDLEdBQUkwQyxDQUNOLEVBQUd0WixDQUFLLEVBQ0YsQ0FBQ3laLEVBQVNDLENBQVUsRUFBSXZaLEVBQWEsRUFDckMsQ0FBQ3daLEVBQVNDLENBQVUsRUFBSXpaLEVBQWEsRUFDckMsQ0FBQzBaLEVBQWVDLENBQWdCLEVBQUkzWixFQUFhLEVBQ2pELENBQUM0WixFQUFnQkMsQ0FBaUIsRUFBSTdaLEVBQWEsRUFDbkQ4WixFQUFvQixDQUFDQyxFQUFVQyxFQUFnQkMsSUFBd0IsQ0FDM0UsSUFBTUMsRUFBb0JELEdBQXVCLE1BQVFYLEVBQVEsR0FBSyxLQUN0RSxNQUFPLENBQ0xXLEVBQ0FYLEVBQVEsRUFFUlksR0FBcUJGLEdBQWtCLEtBQU9ELEVBQVcsTUFDM0QsRUFBRSxPQUFPLE9BQU8sRUFBRSxLQUFLLEdBQUcsR0FBSyxNQUNqQyxFQUNNSSxFQUFzQkMsR0FDbkIsQ0FDTFYsRUFBYyxFQUdkRSxFQUFlLEVBQ2ZRLENBQ0YsRUFBRSxPQUFPLE9BQU8sRUFBRSxLQUFLLEdBQUcsR0FBSyxPQUUzQkMsRUFBVXJWLEVBQVcsS0FBTyxDQUNoQyxhQUFjdkcsRUFBTzRhLEVBQVksZUFBZSxJQUFNLFFBQVUsR0FBSyxPQUNyRSxlQUFnQjVhLEVBQU80YSxFQUFZLGVBQWUsSUFBTSxVQUFZLEdBQUssT0FDekUsZ0JBQWlCNWEsRUFBTzRhLEVBQVksUUFBUSxFQUFJLEdBQUssT0FDckQsZ0JBQWlCNWEsRUFBTzRhLEVBQVksUUFBUSxFQUFJLEdBQUssT0FDckQsZ0JBQWlCNWEsRUFBTzRhLEVBQVksUUFBUSxFQUFJLEdBQUssTUFDdkQsRUFBRSxFQW9CRixNQUFPLENBQ0wsbUJBcEJ5QixDQUN6QixLQUFNLElBQU01YSxFQUFPNGEsRUFBWSxJQUFJLEdBQUs1YSxFQUFPNGEsRUFBWSxFQUFFLEVBQzdELFFBQUFnQixFQUNBLGdCQUFpQixJQUFNNWIsRUFBTzRhLEVBQVksZUFBZSxFQUN6RCxXQUFZLElBQU01YSxFQUFPNGEsRUFBWSxRQUFRLEVBQzdDLFdBQVksSUFBTTVhLEVBQU80YSxFQUFZLFFBQVEsRUFDN0MsV0FBWSxJQUFNNWEsRUFBTzRhLEVBQVksUUFBUSxFQUM3QyxRQUFBQyxFQUNBLFFBQUFFLEVBQ0EsY0FBQUUsRUFDQSxlQUFBRSxFQUNBLGtCQUFBRSxFQUNBLG1CQUFBSyxFQUNBLFdBQVkzSSxHQUFpQixJQUFNL1MsRUFBTzRhLEVBQVksRUFBRSxDQUFDLEVBQ3pELGNBQWVkLEdBQWlCZ0IsQ0FBVSxFQUMxQyxjQUFlaEIsR0FBaUJrQixDQUFVLEVBQzFDLG9CQUFxQmxCLEdBQWlCb0IsQ0FBZ0IsRUFDdEQscUJBQXNCcEIsR0FBaUJzQixDQUFpQixDQUMxRCxDQUdBLENBQ0YsQ0FDQSxJQUFJUyxHQUFxQmhYLEdBQWMsRUFDdkMsU0FBU2lYLElBQXdCLENBQy9CLElBQU1DLEVBQVVoWCxHQUFXOFcsRUFBa0IsRUFDN0MsR0FBSUUsSUFBWSxPQUNkLE1BQU0sSUFBSSxNQUFNLGtHQUFrRyxFQUVwSCxPQUFPQSxDQUNULENBQ0EsU0FBU0MsR0FBdUI1YSxFQUFPLENBQ3JDLElBQU0yYSxFQUFVRCxHQUFzQixFQUNoQ2xCLEVBQWM1QyxFQUFrQixDQUNwQyxHQUFJK0QsRUFBUSxXQUFXLGFBQWEsQ0FDdEMsRUFBRzNhLENBQUssRUFDUixPQUFBK0UsRUFBYSxJQUFNMUYsRUFBVXNiLEVBQVEsb0JBQW9CbkIsRUFBWSxFQUFFLENBQUMsQ0FBQyxFQUNsRXBVLEVBQWdCMlQsR0FBYWpDLEVBQVcsQ0FDN0MsR0FBSSxLQUNOLEVBQUcsSUFBTTZELEVBQVEsUUFBUSxFQUFHbkIsQ0FBVyxDQUFDLENBQzFDLENBQ0EsU0FBU3FCLEdBQXdCN2EsRUFBTyxDQUN0QyxJQUFNMmEsRUFBVUQsR0FBc0IsRUFDaENsQixFQUFjNUMsRUFBa0IsQ0FDcEMsR0FBSStELEVBQVEsV0FBVyxlQUFlLENBQ3hDLEVBQUczYSxDQUFLLEVBQ0YsQ0FBQ2daLEVBQU9DLENBQU0sRUFBSUMsR0FBV00sRUFBYSxDQUFDLFlBQVksQ0FBQyxFQUN4RHNCLEVBQVksSUFBTUgsRUFBUSxnQkFBZ0IsSUFBTSxVQUN0RCxPQUFBNVYsRUFBYSxJQUFNLENBQ1orVixFQUFVLEdBR2Z6YixFQUFVc2IsRUFBUSxxQkFBcUIxQixFQUFPLEVBQUUsQ0FBQyxDQUNuRCxDQUFDLEVBQ003VCxFQUFnQjJWLEVBQU0sQ0FDM0IsSUFBSSxNQUFPLENBQ1QsT0FBTy9CLEVBQU0sWUFBYzhCLEVBQVUsQ0FDdkMsRUFDQSxJQUFJLFVBQVcsQ0FDYixPQUFPMVYsRUFBZ0IyVCxHQUFhakMsRUFBVyxDQUM3QyxHQUFJLEtBQ04sRUFBRyxJQUFNNkQsRUFBUSxRQUFRLEVBQUcxQixDQUFNLENBQUMsQ0FDckMsQ0FDRixDQUFDLENBQ0gsQ0FDQSxTQUFTK0IsR0FBaUJoYixFQUFPLENBQy9CLElBQUlxUSxFQUNFc0ssRUFBVUQsR0FBc0IsRUFDaENsQixFQUFjNUMsRUFBa0IsQ0FDcEMsR0FBSStELEVBQVEsV0FBVyxPQUFPLENBQ2hDLEVBQUczYSxDQUFLLEVBQ0YsQ0FBQ2daLEVBQU9DLENBQU0sRUFBSUMsR0FBV00sRUFBYSxDQUFDLEtBQUssQ0FBQyxFQUNqRFosRUFBVUQsR0FBYyxJQUFNdEksRUFBSyxJQUFNLE9BQU8sRUFDdEQsT0FBQXRMLEVBQWEsSUFBTTFGLEVBQVVzYixFQUFRLGNBQWMxQixFQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZEN1QsRUFBZ0IyVCxHQUFhakMsRUFBVyxDQUM3QyxHQUFJLFFBQ0osSUFBSW1FLEVBQUksQ0FDTixJQUFNQyxFQUFROU8sR0FBV1YsR0FBTzJFLEVBQU0zRSxFQUFJc04sRUFBTSxHQUFHLEVBQ25ELE9BQU9rQyxHQUFVLFlBQWNBLEVBQU1ELENBQUUsQ0FDekMsRUFDQSxJQUFLLEtBQVMsQ0FDWixPQUFPOVYsRUFBVyxJQUFNeVQsRUFBUSxJQUFNLE9BQU8sRUFBRSxFQUFJK0IsRUFBUSxRQUFRLEVBQUksTUFDekUsQ0FDRixFQUFHLElBQU1BLEVBQVEsUUFBUSxFQUFHMUIsQ0FBTSxDQUFDLENBQ3JDLENBR0EsU0FBU2tDLEdBQXdCNUksRUFBU3pDLEVBQVMsQ0FDakQvSyxFQUNFcVcsR0FBRzdJLEVBQVU4SSxHQUFhLENBQ3hCLEdBQUlBLEdBQVksS0FDZCxPQUVGLElBQU1DLEVBQU9DLEdBQWVGLENBQVEsRUFDaENDLEdBQVEsT0FHWkEsRUFBSyxpQkFBaUIsUUFBU3hMLEVBQVMsQ0FBRSxRQUFTLEVBQUssQ0FBQyxFQUN6RHpRLEVBQVUsSUFBTSxDQUNkaWMsRUFBSyxvQkFBb0IsUUFBU3hMLENBQU8sQ0FDM0MsQ0FBQyxFQUNILENBQUMsQ0FDSCxDQUNGLENBQ0EsU0FBU3lMLEdBQWVoSixFQUFTLENBQy9CLE9BQU9pSixHQUFjakosQ0FBTyxFQUFJQSxFQUFRLEtBQU9BLEVBQVEsUUFBUSxNQUFNLENBQ3ZFLENBQ0EsU0FBU2lKLEdBQWNqSixFQUFTLENBQzlCLE9BQU9BLEVBQVEsUUFBUSxpQ0FBaUMsQ0FDMUQsQ0FHQSxTQUFTa0osR0FBeUJ6YixFQUFPLENBQ3ZDLEdBQU0sQ0FBQzBiLEVBQVFDLENBQVMsRUFBSXhiLEVBQWFILEVBQU0sZUFBZSxDQUFDLEVBQ3pENGIsRUFBZXpXLEVBQVcsSUFBTW5GLEVBQU0sUUFBUSxJQUFNLE1BQU0sRUFDMURqQixFQUFRb0csRUFBVyxJQUFNeVcsRUFBYSxFQUFJNWIsRUFBTSxRQUFRLEVBQUkwYixFQUFPLENBQUMsRUFhMUUsTUFBTyxDQUFDM2MsRUFaVStNLEdBQVMsQ0FDekJmLEdBQVEsSUFBTSxDQUNaLElBQU04USxFQUFZN2MsR0FBVzhNLEVBQU0vTSxFQUFNLENBQUMsRUFDMUMsT0FBSyxPQUFPLEdBQUc4YyxFQUFXOWMsRUFBTSxDQUFDLElBQzFCNmMsRUFBYSxHQUNoQkQsRUFBVUUsQ0FBUyxFQUVyQjdiLEVBQU0sV0FBVzZiLENBQVMsR0FFckJBLENBQ1QsQ0FBQyxDQUNILENBQ3VCLENBQ3pCLENBQ0EsU0FBU0MsR0FBZ0M5YixFQUFPLENBQzlDLEdBQU0sQ0FBQzBiLEVBQVFLLENBQVEsRUFBSU4sR0FBeUJ6YixDQUFLLEVBRXpELE1BQU8sQ0FETyxJQUFNMGIsRUFBTyxHQUFLLEdBQ2pCSyxDQUFRLENBQ3pCLENBQ0EsU0FBU0MsR0FBOEJoYyxFQUFPLENBQzVDLEdBQU0sQ0FBQzBiLEVBQVFLLENBQVEsRUFBSU4sR0FBeUJ6YixDQUFLLEVBRXpELE1BQU8sQ0FETyxJQUFNMGIsRUFBTyxHQUFLLENBQUMsRUFDbEJLLENBQVEsQ0FDekIsQ0FHQSxTQUFTRSxHQUFrQmpjLEVBQVEsQ0FBQyxFQUFHLENBQ3JDLEdBQU0sQ0FBQ2tjLEVBQVlDLENBQWMsRUFBSUwsR0FBZ0MsQ0FDbkUsTUFBTyxJQUFNbGQsRUFBT29CLEVBQU0sVUFBVSxFQUNwQyxhQUFjLElBQU0sQ0FBQyxDQUFDcEIsRUFBT29CLEVBQU0saUJBQWlCLEVBQ3BELFNBQVdqQixHQUFVaUIsRUFBTSxtQkFBbUJqQixDQUFLLENBQ3JELENBQUMsRUFXRCxNQUFPLENBQ0wsV0FBQW1kLEVBQ0EsY0FacUJuZCxHQUFVLENBQzNCLENBQUNILEVBQU9vQixFQUFNLFVBQVUsR0FBSyxDQUFDcEIsRUFBT29CLEVBQU0sVUFBVSxHQUN2RG1jLEVBQWVwZCxDQUFLLENBRXhCLEVBU0UsT0FSYSxJQUFNLENBQ2YsQ0FBQ0gsRUFBT29CLEVBQU0sVUFBVSxHQUFLLENBQUNwQixFQUFPb0IsRUFBTSxVQUFVLEdBQ3ZEbWMsRUFBZSxDQUFDRCxFQUFXLENBQUMsQ0FFaEMsQ0FLQSxDQUNGLENBR0EsSUFBSUUsR0FBWSxPQUFPLGVBQ25CQyxHQUFXLENBQUN6TSxFQUFRME0sSUFBUSxDQUM5QixRQUFTeFAsS0FBUXdQLEVBQ2ZGLEdBQVV4TSxFQUFROUMsRUFBTSxDQUFFLElBQUt3UCxFQUFJeFAsQ0FBSSxFQUFHLFdBQVksRUFBSyxDQUFDLENBQ2hFLEVBR0l5UCxHQUF1QjlZLEdBQWMsRUFDekMsU0FBUytZLElBQWtDLENBQ3pDLE9BQU83WSxHQUFXNFksRUFBb0IsQ0FDeEMsQ0FDQSxTQUFTRSxJQUEwQixDQUNqQyxJQUFNOUIsRUFBVTZCLEdBQWdDLEVBQ2hELEdBQUk3QixJQUFZLE9BQ2QsTUFBTSxJQUFJLE1BQ1IsOEZBQ0YsRUFFRixPQUFPQSxDQUNULENBQ0EsU0FBUytCLEdBQW1CbFQsRUFBSTJILEVBQUksQ0FDbEMsTUFBTyxHQUNMQSxFQUFHLHdCQUF3QjNILENBQUUsRUFBSSxLQUFLLDRCQUUxQyxDQUNBLFNBQVNtVCxHQUFhbE8sRUFBT3hJLEVBQU0sQ0FDakMsSUFBTTJXLEVBQVMzVyxFQUFLLElBQUksRUFDeEIsR0FBSSxDQUFDMlcsRUFDSCxNQUFPLEdBRVQsSUFBSXBhLEVBQVNpTSxFQUFNLE9BQ25CLEdBQUksQ0FBQ2pNLEVBQ0gsTUFBTyxHQUVULEtBQU9BLEtBQVUsQ0FDZixJQUFNcWEsRUFBZ0JwTyxFQUFNak0sQ0FBTSxHQUFHLElBQUksRUFDekMsR0FBS3FhLEdBR0RILEdBQW1CRyxFQUFlRCxDQUFNLEVBQzFDLE9BQU9wYSxFQUFTLENBRXBCLENBQ0EsTUFBTyxFQUNULENBQ0EsU0FBU3NhLEdBQXVCck8sRUFBTyxDQUNyQyxJQUFNc08sRUFBUXRPLEVBQU0sSUFBSSxDQUFDeEksRUFBTXhFLElBQVUsQ0FBQ0EsRUFBT3dFLENBQUksQ0FBQyxFQUNsRCtXLEVBQW1CLEdBcUJ2QixPQXBCQUQsRUFBTSxLQUFLLENBQUMsQ0FBQ0UsRUFBUXpULENBQUUsRUFBRyxDQUFDMFQsRUFBUS9MLENBQUUsSUFBTSxDQUN6QyxJQUFNZ00sRUFBVzNULEVBQUcsSUFBSSxFQUNsQjRULEVBQVdqTSxFQUFHLElBQUksRUFJeEIsT0FISWdNLElBQWFDLEdBR2IsQ0FBQ0QsR0FBWSxDQUFDQyxFQUNULEVBRUxWLEdBQW1CUyxFQUFVQyxDQUFRLEdBQ25DSCxFQUFTQyxJQUNYRixFQUFtQixJQUVkLEtBRUxDLEVBQVNDLElBQ1hGLEVBQW1CLElBRWQsRUFDVCxDQUFDLEVBQ0dBLEVBQ0tELEVBQU0sSUFBSSxDQUFDLENBQUNwYyxFQUFHc0YsQ0FBSSxJQUFNQSxDQUFJLEVBRS9Cd0ksQ0FDVCxDQUNBLFNBQVM0TyxHQUEyQjVPLEVBQU82TyxFQUFVLENBQ25ELElBQU1DLEVBQWNULEdBQXVCck8sQ0FBSyxFQUM1Q0EsSUFBVThPLEdBQ1pELEVBQVNDLENBQVcsQ0FFeEIsQ0FDQSxTQUFTQyxHQUFnQi9PLEVBQU8sQ0FDOUIsSUFBTWdQLEVBQVloUCxFQUFNLENBQUMsRUFDbkJpUCxFQUFhalAsRUFBTUEsRUFBTSxPQUFTLENBQUMsR0FBRyxJQUFJLEVBQzVDa1AsRUFBV0YsR0FBVyxJQUFJLEdBQUcsY0FDakMsS0FBT0UsR0FBVSxDQUNmLEdBQUlELEdBQWNDLEVBQVMsU0FBU0QsQ0FBVSxFQUM1QyxPQUFPQyxFQUVUQSxFQUFXQSxFQUFTLGFBQ3RCLENBQ0EsT0FBT3ZMLEdBQVl1TCxDQUFRLEVBQUUsSUFDL0IsQ0FDQSxTQUFTQyxHQUFzQm5QLEVBQU82TyxFQUFVLENBQzlDdlksRUFBYSxJQUFNLENBQ2pCLElBQU04WSxFQUFVLFdBQVcsSUFBTSxDQUMvQlIsR0FBMkI1TyxFQUFNLEVBQUc2TyxDQUFRLENBQzlDLENBQUMsRUFDRGplLEVBQVUsSUFBTSxhQUFhd2UsQ0FBTyxDQUFDLENBQ3ZDLENBQUMsQ0FDSCxDQUNBLFNBQVNDLEdBQTZCclAsRUFBTzZPLEVBQVUsQ0FDckQsR0FBSSxPQUFPLHNCQUF5QixXQUFZLENBQzlDTSxHQUFzQm5QLEVBQU82TyxDQUFRLEVBQ3JDLE1BQ0YsQ0FDQSxJQUFJUyxFQUFnQixDQUFDLEVBQ3JCaFosRUFBYSxJQUFNLENBQ2pCLElBQU1wRyxFQUFXLElBQU0sQ0FDckIsSUFBTXFmLEVBQW1CLENBQUMsQ0FBQ0QsRUFBYyxPQUN6Q0EsRUFBZ0J0UCxFQUFNLEVBQ2pCdVAsR0FHTFgsR0FBMkI1TyxFQUFNLEVBQUc2TyxDQUFRLENBQzlDLEVBQ005SCxFQUFPZ0ksR0FBZ0IvTyxFQUFNLENBQUMsRUFDOUJ4SixFQUFXLElBQUkscUJBQXFCdEcsRUFBVSxDQUFFLEtBQUE2VyxDQUFLLENBQUMsRUFDNUQsUUFBV3ZQLEtBQVF3SSxFQUFNLEVBQUcsQ0FDMUIsSUFBTW1PLEVBQVMzVyxFQUFLLElBQUksRUFDcEIyVyxHQUNGM1gsRUFBUyxRQUFRMlgsQ0FBTSxDQUUzQixDQUNBdmQsRUFBVSxJQUFNNEYsRUFBUyxXQUFXLENBQUMsQ0FDdkMsQ0FBQyxDQUNILENBQ0EsU0FBU2daLEdBQW9CamUsRUFBUSxDQUFDLEVBQUcsQ0FDdkMsR0FBTSxDQUFDeU8sRUFBTzZPLENBQVEsRUFBSXRCLEdBQThCLENBQ3RELE1BQU8sSUFBTXBkLEVBQU9vQixFQUFNLEtBQUssRUFDL0IsU0FBV2pCLEdBQVVpQixFQUFNLGdCQUFnQmpCLENBQUssQ0FDbEQsQ0FBQyxFQUNEK2UsR0FBNkJyUCxFQUFPNk8sQ0FBUSxFQUM1QyxJQUFNWSxFQUFnQmpZLElBQ3BCcVgsRUFBVWEsR0FBYyxDQUN0QixJQUFNMWMsRUFBUWtiLEdBQWF3QixFQUFXbFksQ0FBSSxFQUMxQyxPQUFPbUwsR0FBZStNLEVBQVdsWSxFQUFNeEUsQ0FBSyxDQUM5QyxDQUFDLEVBQ00sSUFBTSxDQUNYNmIsRUFBVWEsR0FBYyxDQUN0QixJQUFNQyxFQUFZRCxFQUFVLE9BQ3pCRSxHQUFhQSxFQUFTLElBQUksSUFBTXBZLEVBQUssSUFBSSxDQUM1QyxFQUNBLE9BQUlrWSxFQUFVLFNBQVdDLEVBQVUsT0FDMUJELEVBRUZDLENBQ1QsQ0FBQyxDQUNILEdBVUYsTUFBTyxDQUFFLHNCQVJzQkUsR0FDdEJsWixFQUFnQm1YLEdBQXFCLFNBQVUsQ0FDcEQsTUFBTyxDQUFFLGFBQUEyQixDQUFhLEVBQ3RCLElBQUksVUFBVyxDQUNiLE9BQU9JLEVBQU8sUUFDaEIsQ0FDRixDQUFDLENBRTRCLENBQ2pDLENBQ0EsU0FBU0MsR0FBd0J2ZSxFQUFPLENBQ3RDLElBQU0yYSxFQUFVOEIsR0FBd0IsRUFDbENqRCxFQUFjNUMsRUFBa0IsQ0FBRSxtQkFBb0IsRUFBSyxFQUFHNVcsQ0FBSyxFQUN6RStFLEVBQWEsSUFBTSxDQUNqQixHQUFJLENBQUN5VSxFQUFZLG1CQUNmLE9BRUYsSUFBTWdGLEVBQWE3RCxFQUFRLGFBQWFuQixFQUFZLFFBQVEsQ0FBQyxFQUM3RG5hLEVBQVVtZixDQUFVLENBQ3RCLENBQUMsQ0FDSCxDQUdBLFNBQVNDLEdBQVdDLEVBQVEsQ0FDMUIsSUFBSWpkLEVBQVFpZCxFQUFPLFlBQWMsRUFDM0JDLEVBQVFELEVBQU8sWUFBYyxFQUM3QkUsRUFBUSxDQUFDLEVBQ1RDLEVBQVVDLEdBQVMsQ0FDdkIsR0FBSUEsR0FBUSxLQUNWLE1BQU8sR0FFVCxJQUFNQyxFQUFVTCxFQUFPLFFBQVUsTUFDM0JNLEVBQVV2TixHQUFTc04sQ0FBTyxFQUFJRCxFQUFLQyxDQUFPLEVBQUlBLEVBQVFELENBQUksRUFDaEUsT0FBT0UsR0FBVyxLQUFPLE9BQU9BLENBQU8sRUFBSSxFQUM3QyxFQUNNQyxFQUFnQkgsR0FBUyxDQUM3QixHQUFJQSxHQUFRLEtBQ1YsTUFBTyxHQUVULElBQU1JLEVBQWdCUixFQUFPLGNBQWdCLFlBQ3ZDUyxFQUFnQjFOLEdBQVN5TixDQUFhLEVBQUlKLEVBQUtJLENBQWEsRUFBSUEsRUFBY0osQ0FBSSxFQUN4RixPQUFPSyxHQUFpQixLQUFPLE9BQU9BLENBQWEsRUFBSSxFQUN6RCxFQUNNQyxFQUFlTixHQUFTLENBQzVCLEdBQUlBLEdBQVEsS0FDVixNQUFPLEdBRVQsSUFBTU8sRUFBZVgsRUFBTyxhQUFlLFdBQzNDLE9BQVFqTixHQUFTNE4sQ0FBWSxFQUFJUCxFQUFLTyxDQUFZLEVBQUlBLEVBQWFQLENBQUksSUFBTSxFQUMvRSxFQUNNUSxFQUFzQlIsR0FBUyxDQUNuQyxHQUFJQSxHQUFRLEtBR1osT0FBSXJOLEdBQVNpTixFQUFPLGtCQUFrQixFQUM3QkksRUFBS0osRUFBTyxrQkFBa0IsRUFFaENBLEVBQU8scUJBQXFCSSxDQUFJLENBQ3pDLEVBQ0EsUUFBV0EsS0FBUUosRUFBTyxXQUFZLENBQ3BDLEdBQUlqTixHQUFTcU4sQ0FBSSxHQUFLdE4sR0FBU3NOLENBQUksRUFBRyxDQUNwQ0YsRUFBTSxLQUFLLENBQ1QsS0FBTSxPQUNOLFNBQVVFLEVBQ1YsSUFBSyxPQUFPQSxDQUFJLEVBQ2hCLFVBQVcsT0FBT0EsQ0FBSSxFQUN0QixTQUFVTSxFQUFZTixDQUFJLEVBQzFCLE1BQUFILEVBQ0EsTUFBQWxkLENBQ0YsQ0FBQyxFQUNEQSxJQUNBLFFBQ0YsQ0FDQSxHQUFJNmQsRUFBbUJSLENBQUksR0FBSyxLQUFNLENBQ3BDRixFQUFNLEtBQUssQ0FDVCxLQUFNLFVBQ04sU0FBVUUsRUFDVixJQUFLLEdBRUwsVUFBVyxHQUVYLFNBQVUsR0FFVixNQUFBSCxFQUNBLE1BQUFsZCxDQUNGLENBQUMsRUFDREEsSUFDQSxJQUFNOGQsRUFBa0JELEVBQW1CUixDQUFJLEdBQUssQ0FBQyxFQUNyRCxHQUFJUyxFQUFnQixPQUFTLEVBQUcsQ0FDOUIsSUFBTUMsRUFBYWYsR0FBVyxDQUM1QixXQUFZYyxFQUNaLE9BQVFiLEVBQU8sT0FDZixhQUFjQSxFQUFPLGFBQ3JCLFlBQWFBLEVBQU8sWUFDcEIsbUJBQW9CQSxFQUFPLG1CQUMzQixXQUFZamQsRUFDWixXQUFZa2QsRUFBUSxDQUN0QixDQUFDLEVBQ0RDLEVBQU0sS0FBSyxHQUFHWSxDQUFVLEVBQ3hCL2QsR0FBUytkLEVBQVcsTUFDdEIsQ0FDRixNQUNFWixFQUFNLEtBQUssQ0FDVCxLQUFNLE9BQ04sU0FBVUUsRUFDVixJQUFLRCxFQUFPQyxDQUFJLEVBQ2hCLFVBQVdHLEVBQWFILENBQUksRUFDNUIsU0FBVU0sRUFBWU4sQ0FBSSxFQUMxQixNQUFBSCxFQUNBLE1BQUFsZCxDQUNGLENBQUMsRUFDREEsR0FFSixDQUNBLE9BQU9tZCxDQUNULENBQ0EsU0FBU2EsR0FBaUJ6ZixFQUFPMGYsRUFBTyxDQUFDLEVBQUcsQ0FDMUMsT0FBT3ZhLEVBQVcsSUFBTSxDQUN0QixJQUFNeVosRUFBUUgsR0FBVyxDQUN2QixXQUFZN2YsRUFBT29CLEVBQU0sVUFBVSxFQUNuQyxPQUFRcEIsRUFBT29CLEVBQU0sTUFBTSxFQUMzQixhQUFjcEIsRUFBT29CLEVBQU0sWUFBWSxFQUN2QyxZQUFhcEIsRUFBT29CLEVBQU0sV0FBVyxFQUNyQyxtQkFBb0JwQixFQUFPb0IsRUFBTSxrQkFBa0IsQ0FDckQsQ0FBQyxFQUNELFFBQVMzQixFQUFLLEVBQUdBLEVBQUtxaEIsRUFBSyxPQUFRcmhCLElBQ2pDcWhCLEVBQUtyaEIsQ0FBRSxFQUFFLEVBQ1gsT0FBTzJCLEVBQU0sUUFBUTRlLENBQUssQ0FDNUIsQ0FBQyxDQUNILENBR0EsSUFBSWUsR0FBOEIsSUFBSSxJQUFJLENBQ3hDLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxPQUNBLE9BQ0EsT0FDQSxNQUNGLENBQUMsRUFDR0MsR0FBNEIsSUFBSSxJQUFJLENBQ3RDLEtBQ0EsS0FDQSxNQUNBLE1BQ0EsTUFDQSxNQUNBLEtBQ0EsS0FDQSxNQUNBLEtBQ0EsS0FDQSxNQUNBLE1BQ0EsTUFDQSxLQUNBLEtBQ0EsS0FDQSxLQUNBLElBQ0YsQ0FBQyxFQUNELFNBQVNDLEdBQU1DLEVBQVEsQ0FDckIsR0FBSSxLQUFLLE9BQVEsQ0FDZixJQUFNQyxFQUFTLElBQUksS0FBSyxPQUFPRCxDQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVUsR0FDNUQsT0FBT0gsR0FBWSxJQUFJSSxDQUFNLENBQy9CLENBQ0EsSUFBTUMsRUFBT0YsRUFBTyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQ2hDLE9BQU9GLEdBQVUsSUFBSUksQ0FBSSxDQUMzQixDQUNBLFNBQVNDLEdBQW9CSCxFQUFRLENBQ25DLE9BQU9ELEdBQU1DLENBQU0sRUFBSSxNQUFRLEtBQ2pDLENBQ0EsU0FBU0ksSUFBbUIsQ0FDMUIsSUFBSUosRUFBUyxPQUFPLFVBQWMsTUFDakMsVUFBVSxVQUFZLFVBQVUsZUFBaUIsUUFDbEQsTUFBTyxDQUNMLE9BQUFBLEVBQ0EsVUFBV0csR0FBb0JILENBQU0sQ0FDdkMsQ0FDRixDQUNBLElBQUlLLEdBQWdCRCxHQUFpQixFQUNqQ0UsR0FBNEIsSUFBSSxJQUNwQyxTQUFTQyxJQUFlLENBQ3RCRixHQUFnQkQsR0FBaUIsRUFDakMsUUFBV3ZlLEtBQVl5ZSxHQUNyQnplLEVBQVN3ZSxFQUFhLENBRTFCLENBQ0EsU0FBU0csSUFBc0IsQ0FDN0IsSUFBTUMsRUFBbUIsQ0FDdkIsT0FBUSxRQUNSLFVBQVcsS0FDYixFQUNNLENBQUNDLEVBQXFCQyxDQUFzQixFQUFJdGdCLEVBQWFnZ0IsRUFBYSxFQUMxRU8sRUFBZ0J2YixFQUNwQixJQUFNbkgsR0FBV3VpQixFQUFtQkMsRUFBb0IsQ0FDMUQsRUFDQSxPQUFBOWUsR0FBUSxJQUFNLENBQ1IwZSxHQUFVLE9BQVMsR0FDckIsT0FBTyxpQkFBaUIsaUJBQWtCQyxFQUFZLEVBRXhERCxHQUFVLElBQUlLLENBQXNCLEVBQ3BDcGhCLEVBQVUsSUFBTSxDQUNkK2dCLEdBQVUsT0FBT0ssQ0FBc0IsRUFDbkNMLEdBQVUsT0FBUyxHQUNyQixPQUFPLG9CQUFvQixpQkFBa0JDLEVBQVksQ0FFN0QsQ0FBQyxDQUNILENBQUMsRUFDTSxDQUNMLE9BQVEsSUFBTUssRUFBYyxFQUFFLE9BQzlCLFVBQVcsSUFBTUEsRUFBYyxFQUFFLFNBQ25DLENBQ0YsQ0FDQSxJQUFJQyxHQUFjbGQsR0FBYyxFQUNoQyxTQUFTbWQsSUFBWSxDQUNuQixJQUFNRixFQUFnQkosR0FBb0IsRUFFMUMsT0FEZ0IzYyxHQUFXZ2QsRUFBVyxHQUNwQkQsQ0FDcEIsQ0FDQSxJQUFJRyxHQUF3QixJQUFJLElBQ2hDLFNBQVNDLEdBQWU3ZixFQUFTLENBQy9CLEdBQU0sQ0FBRSxPQUFBNmUsQ0FBTyxFQUFJYyxHQUFVLEVBQ3ZCRyxFQUFXNWIsRUFBVyxJQUNuQjJhLEVBQU8sR0FBSzdlLEVBQVUsT0FBTyxRQUFRQSxDQUFPLEVBQUUsS0FBSyxDQUFDdUksRUFBSTJILElBQU8zSCxFQUFHLENBQUMsRUFBSTJILEVBQUcsQ0FBQyxFQUFJLEdBQUssQ0FBQyxFQUFFLEtBQUssRUFBSSxHQUN4RyxFQUNELE9BQU9oTSxFQUFXLElBQU0sQ0FDdEIsSUFBTXZFLEVBQU1tZ0IsRUFBUyxFQUNqQkMsRUFDSixPQUFJSCxHQUFNLElBQUlqZ0IsQ0FBRyxJQUNmb2dCLEVBQVdILEdBQU0sSUFBSWpnQixDQUFHLEdBRXJCb2dCLElBQ0hBLEVBQVcsSUFBSSxLQUFLLFNBQVNsQixFQUFPLEVBQUc3ZSxDQUFPLEVBQzlDNGYsR0FBTSxJQUFJamdCLEVBQUtvZ0IsQ0FBUSxHQUVsQkEsQ0FDVCxDQUFDLENBQ0gsQ0FHQSxJQUFJQyxHQUFZLE1BQU1DLFdBQW1CLEdBQUksQ0FDM0MsVUFDQSxXQUNBLFlBQVlDLEVBQU9DLEVBQVdDLEVBQVksQ0FDeEMsTUFBTUYsQ0FBSyxFQUNQQSxhQUFpQkQsSUFDbkIsS0FBSyxVQUFZRSxHQUFhRCxFQUFNLFVBQ3BDLEtBQUssV0FBYUUsR0FBY0YsRUFBTSxhQUV0QyxLQUFLLFVBQVlDLEVBQ2pCLEtBQUssV0FBYUMsRUFFdEIsQ0FDRixFQUNBLFNBQVNDLEdBQWtDdGhCLEVBQU8sQ0FDaEQsR0FBTSxDQUFDMGIsRUFBUUssQ0FBUSxFQUFJTixHQUF5QnpiLENBQUssRUFFekQsTUFBTyxDQURPLElBQU0wYixFQUFPLEdBQUssSUFBSXVGLEdBQ3JCbEYsQ0FBUSxDQUN6QixDQUNBLFNBQVN3RixHQUFpQ2xZLEVBQUksQ0FDNUMsT0FBTzRKLEdBQWMsRUFBSTVKLEVBQUcsT0FBU0EsRUFBRyxPQUMxQyxDQUNBLFNBQVNtWSxHQUFpQm5ZLEVBQUksQ0FDNUIsT0FBSXdKLEdBQU0sRUFDRHhKLEVBQUcsUUFFTEEsRUFBRyxPQUNaLENBQ0EsU0FBU29ZLEdBQWlCQyxFQUFXLENBQ25DLE9BQU8sSUFBSVQsR0FBVVMsQ0FBUyxDQUNoQyxDQUNBLFNBQVNDLEdBQWdCQyxFQUFNQyxFQUFNLENBQ25DLEdBQUlELEVBQUssT0FBU0MsRUFBSyxLQUNyQixNQUFPLEdBRVQsUUFBVzViLEtBQVEyYixFQUNqQixHQUFJLENBQUNDLEVBQUssSUFBSTViLENBQUksRUFDaEIsTUFBTyxHQUdYLE1BQU8sRUFDVCxDQUNBLFNBQVM2YixHQUE2QjloQixFQUFPLENBQzNDLElBQU13WixFQUFjNUMsRUFDbEIsQ0FDRSxjQUFlLE9BQ2Ysa0JBQW1CLFFBQ3JCLEVBQ0E1VyxDQUNGLEVBQ00sQ0FBQytoQixFQUFXQyxDQUFVLEVBQUk3aEIsRUFBYSxFQUFLLEVBQzVDLENBQUM4aEIsRUFBWUMsQ0FBYSxFQUFJL2hCLEVBQWEsRUFDM0NnaUIsRUFBbUJoZCxFQUFXLElBQU0sQ0FDeEMsSUFBTXVjLEVBQVk5aUIsRUFBTzRhLEVBQVksWUFBWSxFQUNqRCxPQUFJa0ksR0FBYSxLQUNSRCxHQUFpQkMsQ0FBUyxFQUU1QkEsQ0FDVCxDQUFDLEVBQ0tVLEVBQXNCamQsRUFBVyxJQUFNLENBQzNDLElBQU1rZCxFQUFtQnpqQixFQUFPNGEsRUFBWSxtQkFBbUIsRUFDL0QsT0FBSTZJLEdBQW9CLEtBQ2ZaLEdBQWlCWSxDQUFnQixFQUVuQyxJQUFJcEIsRUFDYixDQUFDLEVBQ0ssQ0FBQ3FCLEVBQWNDLENBQWdCLEVBQUlqQixHQUFrQyxDQUN6RSxNQUFPYSxFQUNQLGFBQWNDLEVBQ2QsU0FBV3JqQixHQUFVeWEsRUFBWSxvQkFBb0J6YSxDQUFLLENBQzVELENBQUMsRUFDSyxDQUFDeWpCLEVBQW1CQyxDQUFvQixFQUFJdGlCLEVBQWF2QixFQUFPNGEsRUFBWSxpQkFBaUIsQ0FBQyxFQUM5RmtKLEVBQWdCLElBQU05akIsRUFBTzRhLEVBQVksYUFBYSxFQUN0RG1KLEVBQXlCLElBQU0vakIsRUFBTzRhLEVBQVksc0JBQXNCLEdBQUssR0FDN0VvSixFQUFtQnpCLEdBQVUsRUFDN0J2aUIsRUFBTzRhLEVBQVksNkJBQTZCLEdBQUssQ0FBQ21JLEdBQWdCUixFQUFPbUIsRUFBYSxDQUFDLElBQzdGQyxFQUFpQnBCLENBQUssQ0FFMUIsRUFDQSxPQUFBcGMsRUFBYSxJQUFNLENBQ2pCLElBQU0yYyxFQUFZWSxFQUFhLEVBQzNCMWpCLEVBQU80YSxFQUFZLGlCQUFpQixJQUFNLFdBQWFnSixFQUFrQixJQUFNLFVBQVksT0FBT2QsR0FBYyxVQUFZQSxFQUFVLE9BQVMsR0FDakplLEVBQXFCLFNBQVMsQ0FFbEMsQ0FBQyxFQUNEMWQsRUFBYSxJQUFNLENBQ2pCMGQsRUFBcUI3akIsRUFBTzRhLEVBQVksaUJBQWlCLEdBQUssUUFBUSxDQUN4RSxDQUFDLEVBQ00sQ0FDTCxjQUFBa0osRUFDQSx1QkFBQUMsRUFDQSxrQkFBQUgsRUFDQSxxQkFBQUMsRUFDQSxVQUFBVixFQUNBLFdBQUFDLEVBQ0EsV0FBQUMsRUFDQSxjQUFBQyxFQUNBLGFBQUFJLEVBQ0EsZ0JBQUFNLENBQ0YsQ0FDRixDQUNBLFNBQVNDLEdBQWlCN2lCLEVBQU8sQ0FDL0IsR0FBTSxDQUFDOGlCLEVBQVFDLENBQVMsRUFBSTVpQixFQUFhLEVBQUUsRUFDckMsQ0FBQzZpQixFQUFXQyxDQUFZLEVBQUk5aUIsRUFBYSxFQUFFLEVBK0JqRCxNQUFPLENBQ0wsbUJBQW9CLENBQ2xCLFVBaENla0osR0FBTyxDQUN4QixHQUFJekssRUFBT29CLEVBQU0sVUFBVSxFQUN6QixPQUVGLElBQU1rakIsRUFBV3RrQixFQUFPb0IsRUFBTSxnQkFBZ0IsRUFDeENtakIsRUFBVXZrQixFQUFPb0IsRUFBTSxnQkFBZ0IsRUFDN0MsR0FBSSxDQUFDa2pCLEVBQVMsZ0JBQ1osT0FFRixJQUFNRSxFQUFZQyxHQUFnQmhhLEVBQUcsR0FBRyxFQUN4QyxHQUFJLENBQUMrWixHQUFhL1osRUFBRyxTQUFXQSxFQUFHLFFBQ2pDLE9BRUUrWixJQUFjLEtBQU9OLEVBQU8sRUFBRSxLQUFLLEVBQUUsT0FBUyxJQUNoRHpaLEVBQUcsZUFBZSxFQUNsQkEsRUFBRyxnQkFBZ0IsR0FFckIsSUFBSWlhLEVBQVlQLEVBQVd2akIsR0FBU0EsRUFBTzRqQixDQUFTLEVBQ2hEeGlCLEVBQU1zaUIsRUFBUyxnQkFBZ0JJLEVBQVdILEVBQVEsV0FBVyxDQUFDLEdBQUtELEVBQVMsZ0JBQWdCSSxDQUFTLEVBQ3JHMWlCLEdBQU8sTUFBUTJpQixHQUFnQkQsQ0FBUyxJQUMxQ0EsRUFBWUEsRUFBVSxDQUFDLEVBQ3ZCMWlCLEVBQU1zaUIsRUFBUyxnQkFBZ0JJLEVBQVdILEVBQVEsV0FBVyxDQUFDLEdBQUtELEVBQVMsZ0JBQWdCSSxDQUFTLEdBRW5HMWlCLEdBQU8sT0FDVHVpQixFQUFRLGNBQWN2aUIsQ0FBRyxFQUN6QlosRUFBTSxlQUFlWSxDQUFHLEdBRTFCLGFBQWFvaUIsRUFBVSxDQUFDLEVBQ3hCQyxFQUFhLE9BQU8sV0FBVyxJQUFNRixFQUFVLEVBQUUsRUFBRyxHQUFHLENBQUMsQ0FDMUQsQ0FJRSxDQUNGLENBQ0YsQ0FDQSxTQUFTTSxHQUFnQnppQixFQUFLLENBQzVCLE9BQUlBLEVBQUksU0FBVyxHQUFLLENBQUMsVUFBVSxLQUFLQSxDQUFHLEVBQ2xDQSxFQUVGLEVBQ1QsQ0FDQSxTQUFTMmlCLEdBQWdCVCxFQUFRLENBQy9CLE9BQU9BLEVBQU8sTUFBTSxFQUFFLEVBQUUsTUFBT1UsR0FBV0EsSUFBV1YsRUFBTyxDQUFDLENBQUMsQ0FDaEUsQ0FDQSxTQUFTVyxHQUEyQnpqQixFQUFPcVEsRUFBS3FULEVBQVcsQ0FJekQsSUFBTWxLLEVBQWMxQyxFQUhDLENBQ25CLGNBQWUsSUFBTWxZLEVBQU9vQixFQUFNLGdCQUFnQixFQUFFLGtCQUFrQixJQUFNLFNBQzlFLEVBQzZDQSxDQUFLLEVBQzVDMmpCLEVBQWlCLElBQU10VCxFQUFJLEVBQzNCLENBQUUsVUFBQXVULENBQVUsRUFBSWhELEdBQVUsRUFDNUJpRCxFQUFZLENBQUUsSUFBSyxFQUFHLEtBQU0sQ0FBRSxFQUNsQzlULEdBQ0UsSUFBT25SLEVBQU80YSxFQUFZLGFBQWEsRUFBdUIsT0FBbkJtSyxFQUFlLEVBQzFELFNBQ0EsSUFBTSxDQUNKLElBQU1HLEVBQVdILEVBQWUsRUFDM0JHLElBR0xELEVBQVksQ0FDVixJQUFLQyxFQUFTLFVBQ2QsS0FBTUEsRUFBUyxVQUNqQixFQUNGLENBQ0YsRUFDQSxHQUFNLENBQUUsbUJBQUFDLENBQW1CLEVBQUlsQixHQUFpQixDQUM5QyxXQUFZLElBQU1qa0IsRUFBTzRhLEVBQVksaUJBQWlCLEVBQ3RELGlCQUFrQixJQUFNNWEsRUFBTzRhLEVBQVksZ0JBQWdCLEVBQzNELGlCQUFrQixJQUFNNWEsRUFBTzRhLEVBQVksZ0JBQWdCLENBQzdELENBQUMsRUFDS3dLLEVBQWMsSUFBTXBsQixFQUFPNGEsRUFBWSxXQUFXLEdBQUssV0FDdkR5SyxFQUFhNWEsR0FBTyxDQUN4QjZKLEdBQVk3SixFQUFJMGEsRUFBbUIsU0FBUyxFQUN4QzFhLEVBQUcsUUFBVUEsRUFBRyxNQUFRLE9BQzFCQSxFQUFHLGVBQWUsRUFFcEIsSUFBTTZhLEVBQVE3VCxFQUFJLEVBQ2xCLEdBQUksQ0FBQzZULEdBQU8sU0FBUzdhLEVBQUcsTUFBTSxFQUM1QixPQUVGLElBQU04WixFQUFVdmtCLEVBQU80YSxFQUFZLGdCQUFnQixFQUM3QzJLLEVBQWdCdmxCLEVBQU80YSxFQUFZLGFBQWEsRUFDaEQ0SyxFQUFpQnhqQixHQUFRLENBQ3pCQSxHQUFPLE9BQ1R1aUIsRUFBUSxjQUFjdmlCLENBQUcsRUFDckJ5SSxFQUFHLFVBQVk4WixFQUFRLGNBQWMsSUFBTSxXQUM3Q0EsRUFBUSxnQkFBZ0J2aUIsQ0FBRyxFQUNsQnVqQixHQUFpQixDQUFDNUMsR0FBaUNsWSxDQUFFLEdBQzlEOFosRUFBUSxpQkFBaUJ2aUIsQ0FBRyxFQUdsQyxFQUNNc2lCLEVBQVd0a0IsRUFBTzRhLEVBQVksZ0JBQWdCLEVBQzlDNkssRUFBa0J6bEIsRUFBTzRhLEVBQVksZUFBZSxFQUNwRHlJLEVBQWFrQixFQUFRLFdBQVcsRUFDdEMsT0FBUTlaLEVBQUcsSUFBSyxDQUNkLEtBQU0yYSxFQUFZLElBQU0sV0FBYSxZQUFjLGNBQWUsQ0FDaEUsR0FBSWQsRUFBUyxZQUFhLENBQ3hCN1osRUFBRyxlQUFlLEVBQ2xCLElBQUlpYixFQUNBckMsR0FBYyxLQUNoQnFDLEVBQVVwQixFQUFTLFlBQVlqQixDQUFVLEVBRXpDcUMsRUFBVXBCLEVBQVMsY0FBYyxFQUUvQm9CLEdBQVcsTUFBUUQsSUFDckJDLEVBQVVwQixFQUFTLGNBQWNqQixDQUFVLEdBRTdDbUMsRUFBY0UsQ0FBTyxDQUN2QixDQUNBLEtBQ0YsQ0FDQSxLQUFNTixFQUFZLElBQU0sV0FBYSxVQUFZLGFBQWMsQ0FDN0QsR0FBSWQsRUFBUyxZQUFhLENBQ3hCN1osRUFBRyxlQUFlLEVBQ2xCLElBQUlpYixFQUNBckMsR0FBYyxLQUNoQnFDLEVBQVVwQixFQUFTLFlBQVlqQixDQUFVLEVBRXpDcUMsRUFBVXBCLEVBQVMsYUFBYSxFQUU5Qm9CLEdBQVcsTUFBUUQsSUFDckJDLEVBQVVwQixFQUFTLGFBQWFqQixDQUFVLEdBRTVDbUMsRUFBY0UsQ0FBTyxDQUN2QixDQUNBLEtBQ0YsQ0FDQSxLQUFNTixFQUFZLElBQU0sV0FBYSxZQUFjLFdBQVksQ0FDN0QsR0FBSWQsRUFBUyxhQUFjLENBQ3pCN1osRUFBRyxlQUFlLEVBQ2xCLElBQU1rYixFQUFTWCxFQUFVLElBQU0sTUFDM0JVLEVBQ0FyQyxHQUFjLEtBQ2hCcUMsRUFBVXBCLEVBQVMsYUFBYWpCLENBQVUsRUFFMUNxQyxFQUFVQyxFQUFTckIsRUFBUyxjQUFjLEVBQUlBLEVBQVMsYUFBYSxFQUV0RWtCLEVBQWNFLENBQU8sQ0FDdkIsQ0FDQSxLQUNGLENBQ0EsS0FBTU4sRUFBWSxJQUFNLFdBQWEsYUFBZSxhQUFjLENBQ2hFLEdBQUlkLEVBQVMsY0FBZSxDQUMxQjdaLEVBQUcsZUFBZSxFQUNsQixJQUFNa2IsRUFBU1gsRUFBVSxJQUFNLE1BQzNCVSxFQUNBckMsR0FBYyxLQUNoQnFDLEVBQVVwQixFQUFTLGNBQWNqQixDQUFVLEVBRTNDcUMsRUFBVUMsRUFBU3JCLEVBQVMsYUFBYSxFQUFJQSxFQUFTLGNBQWMsRUFFdEVrQixFQUFjRSxDQUFPLENBQ3ZCLENBQ0EsS0FDRixDQUNBLElBQUssT0FDSCxHQUFJcEIsRUFBUyxZQUFhLENBQ3hCN1osRUFBRyxlQUFlLEVBQ2xCLElBQU1tYixFQUFXdEIsRUFBUyxZQUN4QmpCLEVBQ0FULEdBQWlCblksQ0FBRSxDQUNyQixFQUNJbWIsR0FBWSxPQUNkckIsRUFBUSxjQUFjcUIsQ0FBUSxFQUMxQmhELEdBQWlCblksQ0FBRSxHQUFLQSxFQUFHLFVBQVk4WixFQUFRLGNBQWMsSUFBTSxXQUNyRUEsRUFBUSxnQkFBZ0JxQixDQUFRLEVBQ3ZCTCxHQUNUaEIsRUFBUSxpQkFBaUJxQixDQUFRLEVBR3ZDLENBQ0EsTUFDRixJQUFLLE1BQ0gsR0FBSXRCLEVBQVMsV0FBWSxDQUN2QjdaLEVBQUcsZUFBZSxFQUNsQixJQUFNb2IsRUFBVXZCLEVBQVMsV0FBV2pCLEVBQVlULEdBQWlCblksQ0FBRSxDQUFDLEVBQ2hFb2IsR0FBVyxPQUNidEIsRUFBUSxjQUFjc0IsQ0FBTyxFQUN6QmpELEdBQWlCblksQ0FBRSxHQUFLQSxFQUFHLFVBQVk4WixFQUFRLGNBQWMsSUFBTSxXQUNyRUEsRUFBUSxnQkFBZ0JzQixDQUFPLEVBQ3RCTixHQUNUaEIsRUFBUSxpQkFBaUJzQixDQUFPLEVBR3RDLENBQ0EsTUFDRixJQUFLLFdBQ0gsR0FBSXZCLEVBQVMsaUJBQW1CakIsR0FBYyxLQUFNLENBQ2xENVksRUFBRyxlQUFlLEVBQ2xCLElBQU1pYixFQUFVcEIsRUFBUyxnQkFBZ0JqQixDQUFVLEVBQ25EbUMsRUFBY0UsQ0FBTyxDQUN2QixDQUNBLE1BQ0YsSUFBSyxTQUNILEdBQUlwQixFQUFTLGlCQUFtQmpCLEdBQWMsS0FBTSxDQUNsRDVZLEVBQUcsZUFBZSxFQUNsQixJQUFNaWIsRUFBVXBCLEVBQVMsZ0JBQWdCakIsQ0FBVSxFQUNuRG1DLEVBQWNFLENBQU8sQ0FDdkIsQ0FDQSxNQUNGLElBQUssSUFDQzlDLEdBQWlCblksQ0FBRSxHQUFLOFosRUFBUSxjQUFjLElBQU0sWUFBY3ZrQixFQUFPNGEsRUFBWSxpQkFBaUIsSUFBTSxLQUM5R25RLEVBQUcsZUFBZSxFQUNsQjhaLEVBQVEsVUFBVSxHQUVwQixNQUNGLElBQUssU0FDRTlaLEVBQUcsbUJBQ05BLEVBQUcsZUFBZSxFQUNiekssRUFBTzRhLEVBQVksc0JBQXNCLEdBQzVDMkosRUFBUSxlQUFlLEdBRzNCLE1BQ0YsSUFBSyxNQUNILEdBQUksQ0FBQ3ZrQixFQUFPNGEsRUFBWSxtQkFBbUIsRUFBRyxDQUM1QyxHQUFJblEsRUFBRyxTQUNMNmEsRUFBTSxNQUFNLE1BQ1AsQ0FDTCxJQUFNdE8sRUFBU0wsR0FBdUIyTyxFQUFPLENBQUUsU0FBVSxFQUFLLENBQUMsRUFDM0RwWSxFQUNBNFksRUFDSixHQUNFQSxFQUFPOU8sRUFBTyxVQUFVLEVBQ3BCOE8sSUFDRjVZLEVBQU80WSxTQUVGQSxHQUNMNVksR0FBUSxDQUFDQSxFQUFLLFNBQVMsU0FBUyxhQUFhLEdBQy9DeUgsR0FBc0J6SCxDQUFJLENBRTlCLENBQ0EsS0FDRixDQUVKLENBQ0YsRUFDTTZZLEVBQWF0YixHQUFPLENBQ3hCLElBQU04WixFQUFVdmtCLEVBQU80YSxFQUFZLGdCQUFnQixFQUM3QzBKLEVBQVd0a0IsRUFBTzRhLEVBQVksZ0JBQWdCLEVBQzlDMkssRUFBZ0J2bEIsRUFBTzRhLEVBQVksYUFBYSxFQUN0RCxHQUFJMkosRUFBUSxVQUFVLEVBQUcsQ0FDbEI5WixFQUFHLGNBQWMsU0FBU0EsRUFBRyxNQUFNLEdBQ3RDOFosRUFBUSxXQUFXLEVBQUssRUFFMUIsTUFDRixDQUNBLEdBQUs5WixFQUFHLGNBQWMsU0FBU0EsRUFBRyxNQUFNLEdBSXhDLEdBREE4WixFQUFRLFdBQVcsRUFBSSxFQUNuQkEsRUFBUSxXQUFXLEdBQUssS0FBTSxDQUNoQyxJQUFNeUIsRUFBc0Joa0IsR0FBUSxDQUM5QkEsR0FBTyxPQUdYdWlCLEVBQVEsY0FBY3ZpQixDQUFHLEVBQ3JCdWpCLEdBQ0ZoQixFQUFRLGlCQUFpQnZpQixDQUFHLEVBRWhDLEVBQ01pa0IsRUFBZ0J4YixFQUFHLGNBQ3JCd2IsR0FBaUJ4YixFQUFHLGNBQWMsd0JBQXdCd2IsQ0FBYSxFQUFJLEtBQUssNEJBQ2xGRCxFQUNFekIsRUFBUSxnQkFBZ0IsR0FBS0QsRUFBUyxhQUFhLENBQ3JELEVBRUEwQixFQUNFekIsRUFBUSxpQkFBaUIsR0FBS0QsRUFBUyxjQUFjLENBQ3ZELENBRUosU0FBVyxDQUFDdGtCLEVBQU80YSxFQUFZLGFBQWEsRUFBRyxDQUM3QyxJQUFNc0ssRUFBV0gsRUFBZSxFQUNoQyxHQUFJRyxFQUFVLENBQ1pBLEVBQVMsVUFBWUQsRUFBVSxJQUMvQkMsRUFBUyxXQUFhRCxFQUFVLEtBQ2hDLElBQU10UixFQUFVdVIsRUFBUyxjQUN2QixjQUFjWCxFQUFRLFdBQVcsQ0FBQyxJQUNwQyxFQUNJNVEsSUFDRmdCLEdBQXNCaEIsQ0FBTyxFQUM3QmdGLEdBQWV1TSxFQUFVdlIsQ0FBTyxFQUVwQyxDQUNGLEVBQ0YsRUFDTXVTLEVBQWN6YixHQUFPLENBQ3pCLElBQU04WixFQUFVdmtCLEVBQU80YSxFQUFZLGdCQUFnQixFQUM5Q25RLEVBQUcsY0FBYyxTQUFTQSxFQUFHLGFBQWEsR0FDN0M4WixFQUFRLFdBQVcsRUFBSyxDQUU1QixFQUNNNEIsRUFBZTFiLEdBQU8sQ0FDdEJzYSxFQUFlLElBQU10YSxFQUFHLFFBQzFCQSxFQUFHLGVBQWUsQ0FFdEIsRUFDTTJiLEVBQWUsSUFBTSxDQUN6QixJQUFNQyxFQUFZcm1CLEVBQU80YSxFQUFZLFNBQVMsRUFDOUMsR0FBSSxDQUFDeUwsRUFDSCxPQUVGLElBQU05QixFQUFVdmtCLEVBQU80YSxFQUFZLGdCQUFnQixFQUM3QzBKLEVBQVd0a0IsRUFBTzRhLEVBQVksZ0JBQWdCLEVBQ2hEeUksRUFDQWdELElBQWMsVUFDaEJoRCxFQUFhaUIsRUFBUyxjQUFjLEdBRWxDK0IsSUFBYyxTQUNoQmhELEVBQWFpQixFQUFTLGFBQWEsR0FFckMsSUFBTVosRUFBZWEsRUFBUSxhQUFhLEVBQ3RDYixFQUFhLE9BQ2ZMLEVBQWFLLEVBQWEsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUU1Q2EsRUFBUSxXQUFXLEVBQUksRUFDdkJBLEVBQVEsY0FBY2xCLENBQVUsRUFDaEMsSUFBTWlDLEVBQVE3VCxFQUFJLEVBQ2Q2VCxHQUFTakMsR0FBYyxNQUFRLENBQUNyakIsRUFBTzRhLEVBQVkscUJBQXFCLEdBQzFFakcsR0FBc0IyUSxDQUFLLENBRS9CLEVBQ0EsT0FBQXhpQixHQUFRLElBQU0sQ0FDUjhYLEVBQVksZUFDZCxXQUFXd0wsRUFBYyxDQUFDLEVBRTFCQSxFQUFhLENBRWpCLENBQUMsRUFDRGpnQixFQUNFcVcsR0FDRSxDQUNFdUksRUFDQSxJQUFNL2tCLEVBQU80YSxFQUFZLGFBQWEsRUFDdEMsSUFBTTVhLEVBQU80YSxFQUFZLGdCQUFnQixFQUFFLFdBQVcsQ0FDeEQsRUFDQzBMLEdBQWEsQ0FDWixHQUFNLENBQUNwQixFQUFVcUIsRUFBZWxELENBQVUsRUFBSWlELEVBQzlDLEdBQUlDLEVBQ0ZsRCxHQUFjekksRUFBWSxjQUFjeUksQ0FBVSxVQUU5Q0EsR0FBYzZCLEVBQVUsQ0FDMUIsSUFBTXZSLEVBQVV1UixFQUFTLGNBQ3ZCLGNBQWM3QixDQUFVLElBQzFCLEVBQ0kxUCxHQUNGZ0YsR0FBZXVNLEVBQVV2UixDQUFPLENBRXBDLENBRUosQ0FDRixDQUNGLEVBT08sQ0FDTCxTQVBlcE4sRUFBVyxJQUFNLENBQ2hDLEdBQUksQ0FBQXZHLEVBQU80YSxFQUFZLHFCQUFxQixFQUc1QyxPQUFPNWEsRUFBTzRhLEVBQVksZ0JBQWdCLEVBQUUsV0FBVyxHQUFLLEtBQU8sRUFBSSxFQUN6RSxDQUFDLEVBR0MsVUFBQXlLLEVBQ0EsWUFBQWMsRUFDQSxVQUFBSixFQUNBLFdBQUFHLENBQ0YsQ0FDRixDQUNBLFNBQVNNLEdBQXFCcGxCLEVBQU9xUSxFQUFLLENBQ3hDLElBQU04UyxFQUFVLElBQU12a0IsRUFBT29CLEVBQU0sZ0JBQWdCLEVBQzdDWSxFQUFNLElBQU1oQyxFQUFPb0IsRUFBTSxHQUFHLEVBQzVCcWxCLEVBQXdCLElBQU16bUIsRUFBT29CLEVBQU0scUJBQXFCLEVBQ2hFc2xCLEVBQVlqYyxHQUFPLENBQ25COFosRUFBUSxFQUFFLGNBQWMsSUFBTSxTQUc5QkEsRUFBUSxFQUFFLGNBQWMsSUFBTSxTQUM1QkEsRUFBUSxFQUFFLFdBQVd2aUIsRUFBSSxDQUFDLEdBQUssQ0FBQ3VpQixFQUFRLEVBQUUsdUJBQXVCLEVBQ25FQSxFQUFRLEVBQUUsZ0JBQWdCdmlCLEVBQUksQ0FBQyxFQUUvQnVpQixFQUFRLEVBQUUsaUJBQWlCdmlCLEVBQUksQ0FBQyxFQUV6QnlJLEdBQUksU0FDYjhaLEVBQVEsRUFBRSxnQkFBZ0J2aUIsRUFBSSxDQUFDLEVBQ3RCdWlCLEVBQVEsRUFBRSxrQkFBa0IsSUFBTSxVQUFZM0IsR0FBaUJuWSxDQUFFLEdBQUssZ0JBQWlCQSxHQUFNQSxFQUFHLGNBQWdCLFFBQ3pIOFosRUFBUSxFQUFFLGdCQUFnQnZpQixFQUFJLENBQUMsRUFFL0J1aUIsRUFBUSxFQUFFLGlCQUFpQnZpQixFQUFJLENBQUMsRUFFcEMsRUFDTXNiLEVBQWEsSUFBTWlILEVBQVEsRUFBRSxXQUFXdmlCLEVBQUksQ0FBQyxFQUM3QzJrQixFQUFhLElBQU0zbUIsRUFBT29CLEVBQU0sUUFBUSxHQUFLbWpCLEVBQVEsRUFBRSxXQUFXdmlCLEVBQUksQ0FBQyxFQUN2RTRrQixFQUFrQixJQUFNLENBQUNELEVBQVcsR0FBS3BDLEVBQVEsRUFBRSxjQUFjdmlCLEVBQUksQ0FBQyxFQUN4RTZrQixFQUFrQixLQUNoQkMsRUFBaUJyYyxHQUFPLENBQ3ZCbWMsRUFBZ0IsSUFHckJDLEVBQWtCcGMsRUFBRyxZQUNqQkEsRUFBRyxjQUFnQixTQUFXQSxFQUFHLFNBQVcsR0FBSyxDQUFDekssRUFBT29CLEVBQU0scUJBQXFCLEdBQ3RGc2xCLEVBQVNqYyxDQUFFLEVBRWYsRUFDTXNjLEVBQWV0YyxHQUFPLENBQ3JCbWMsRUFBZ0IsR0FHakJuYyxFQUFHLGNBQWdCLFNBQVdBLEVBQUcsU0FBVyxHQUFLekssRUFBT29CLEVBQU0scUJBQXFCLEdBQUtwQixFQUFPb0IsRUFBTSwwQkFBMEIsR0FDaklzbEIsRUFBU2pjLENBQUUsQ0FFZixFQUNNdWMsRUFBV3ZjLEdBQU8sQ0FDakJtYyxFQUFnQixJQUdqQjVtQixFQUFPb0IsRUFBTSxxQkFBcUIsR0FBSyxDQUFDcEIsRUFBT29CLEVBQU0sMEJBQTBCLEdBQUt5bEIsSUFBb0IsVUFDMUdILEVBQVNqYyxDQUFFLENBRWYsRUFDTTRhLEVBQWE1YSxHQUFPLENBQ3BCLENBQUNtYyxFQUFnQixHQUFLLENBQUMsQ0FBQyxRQUFTLEdBQUcsRUFBRSxTQUFTbmMsRUFBRyxHQUFHLElBR3JEa1ksR0FBaUNsWSxDQUFFLEVBQ3JDOFosRUFBUSxFQUFFLGdCQUFnQnZpQixFQUFJLENBQUMsRUFFL0Iwa0IsRUFBU2pjLENBQUUsRUFFZixFQUNNMGIsRUFBZTFiLEdBQU8sQ0FDdEJrYyxFQUFXLEdBQ2JsYyxFQUFHLGVBQWUsQ0FFdEIsRUFDTXdjLEVBQVd4YyxHQUFPLENBQ3RCLElBQU02YSxFQUFRN1QsRUFBSSxFQUNkZ1YsRUFBc0IsR0FBS0UsRUFBVyxHQUFLLENBQUNyQixHQUc1QzdhLEVBQUcsU0FBVzZhLEdBQ2hCZixFQUFRLEVBQUUsY0FBY3ZpQixFQUFJLENBQUMsQ0FFakMsRUFDTWtsQixFQUFXM2dCLEVBQVcsSUFBTSxDQUNoQyxHQUFJLEVBQUFrZ0IsRUFBc0IsR0FBS0UsRUFBVyxHQUcxQyxPQUFPM2tCLEVBQUksSUFBTXVpQixFQUFRLEVBQUUsV0FBVyxFQUFJLEVBQUksRUFDaEQsQ0FBQyxFQUNLbkUsRUFBVTdaLEVBQVcsSUFDbEJ2RyxFQUFPb0IsRUFBTSxXQUFXLEVBQUksT0FBU1ksRUFBSSxDQUNqRCxFQUNELE9BQUFtRSxFQUNFcVcsR0FDRSxDQUNFL0ssRUFDQXpQLEVBQ0F5a0IsRUFDQSxJQUFNbEMsRUFBUSxFQUFFLFdBQVcsRUFDM0IsSUFBTUEsRUFBUSxFQUFFLFVBQVUsQ0FDNUIsRUFDQSxDQUFDLENBQUNlLEVBQU82QixFQUFNQyxFQUF3Qi9ELEVBQVlGLENBQVMsSUFBTSxDQUM1RG1DLEdBQVM2QixJQUFTOUQsR0FBY0YsR0FBYSxDQUFDaUUsR0FBMEIsU0FBUyxnQkFBa0I5QixJQUNqR2xrQixFQUFNLE1BQ1JBLEVBQU0sTUFBTSxFQUVadVQsR0FBc0IyUSxDQUFLLEVBR2pDLENBQ0YsQ0FDRixFQUNPLENBQ0wsV0FBQWhJLEVBQ0EsV0FBQXFKLEVBQ0EsZ0JBQUFDLEVBQ0EsU0FBQU0sRUFDQSxRQUFBOUcsRUFDQSxjQUFBMEcsRUFDQSxZQUFBQyxFQUNBLFFBQUFDLEVBQ0EsVUFBQTNCLEVBQ0EsWUFBQWMsRUFDQSxRQUFBYyxDQUNGLENBQ0YsQ0FDQSxJQUFJSSxHQUFtQixLQUFNLENBQzNCLFdBQ0EsTUFDQSxZQUFZQyxFQUFZQyxFQUFPLENBQzdCLEtBQUssV0FBYUQsRUFDbEIsS0FBSyxNQUFRQyxDQUNmLENBRUEsZUFBZ0IsQ0FDZCxPQUFPLEtBQUssTUFBTSxjQUFjLENBQ2xDLENBRUEsd0JBQXlCLENBQ3ZCLE9BQU8sS0FBSyxNQUFNLHVCQUF1QixDQUMzQyxDQUVBLG1CQUFvQixDQUNsQixPQUFPLEtBQUssTUFBTSxrQkFBa0IsQ0FDdEMsQ0FFQSxxQkFBcUIzRCxFQUFtQixDQUN0QyxLQUFLLE1BQU0scUJBQXFCQSxDQUFpQixDQUNuRCxDQUVBLFdBQVksQ0FDVixPQUFPLEtBQUssTUFBTSxVQUFVLENBQzlCLENBRUEsV0FBV1QsRUFBVyxDQUNwQixLQUFLLE1BQU0sV0FBV0EsQ0FBUyxDQUNqQyxDQUVBLFlBQWEsQ0FDWCxPQUFPLEtBQUssTUFBTSxXQUFXLENBQy9CLENBRUEsY0FBY25oQixFQUFLLEVBQ2JBLEdBQU8sTUFBUSxLQUFLLFdBQVcsRUFBRSxRQUFRQSxDQUFHLElBQzlDLEtBQUssTUFBTSxjQUFjQSxDQUFHLENBRWhDLENBRUEsY0FBZSxDQUNiLE9BQU8sS0FBSyxNQUFNLGFBQWEsQ0FDakMsQ0FFQSxXQUFXQSxFQUFLLENBQ2QsR0FBSSxLQUFLLE1BQU0sY0FBYyxJQUFNLE9BQ2pDLE1BQU8sR0FFVCxJQUFNd2xCLEVBQWUsS0FBSyxPQUFPeGxCLENBQUcsRUFDcEMsT0FBSXdsQixHQUFnQixLQUNYLEdBRUYsS0FBSyxNQUFNLGFBQWEsRUFBRSxJQUFJQSxDQUFZLENBQ25ELENBRUEsU0FBVSxDQUNSLE9BQU8sS0FBSyxNQUFNLGFBQWEsRUFBRSxPQUFTLENBQzVDLENBRUEsYUFBYyxDQUNaLEdBQUksS0FBSyxRQUFRLEVBQ2YsTUFBTyxHQUVULElBQU05RCxFQUFlLEtBQUssTUFBTSxhQUFhLEVBQzdDLE9BQU8sS0FBSyxxQkFBcUIsRUFBRSxNQUFPK0QsR0FBTS9ELEVBQWEsSUFBSStELENBQUMsQ0FBQyxDQUNyRSxDQUNBLGtCQUFtQixDQUNqQixJQUFJQyxFQUNKLFFBQVcxbEIsS0FBTyxLQUFLLE1BQU0sYUFBYSxFQUFHLENBQzNDLElBQU1xRixFQUFPLEtBQUssV0FBVyxFQUFFLFFBQVFyRixDQUFHLEVBQ3BDMmxCLEVBQW9CdGdCLEdBQU0sT0FBUyxNQUFRcWdCLEdBQU8sT0FBUyxNQUFRcmdCLEVBQUssTUFBUXFnQixFQUFNLE9BQ3hGLENBQUNBLEdBQVNDLEtBQ1pELEVBQVFyZ0IsRUFFWixDQUNBLE9BQU9xZ0IsR0FBTyxHQUNoQixDQUNBLGlCQUFrQixDQUNoQixJQUFJNUIsRUFDSixRQUFXOWpCLEtBQU8sS0FBSyxNQUFNLGFBQWEsRUFBRyxDQUMzQyxJQUFNcUYsRUFBTyxLQUFLLFdBQVcsRUFBRSxRQUFRckYsQ0FBRyxFQUNwQzRsQixFQUFrQnZnQixHQUFNLE9BQVMsTUFBUXllLEdBQU0sT0FBUyxNQUFRemUsRUFBSyxNQUFReWUsRUFBSyxPQUNwRixDQUFDQSxHQUFROEIsS0FDWDlCLEVBQU96ZSxFQUVYLENBQ0EsT0FBT3llLEdBQU0sR0FDZixDQUVBLGdCQUFnQitCLEVBQU8sQ0FDckIsR0FBSSxLQUFLLGNBQWMsSUFBTSxPQUMzQixPQUVGLEdBQUksS0FBSyxjQUFjLElBQU0sU0FBVSxDQUNyQyxLQUFLLGlCQUFpQkEsQ0FBSyxFQUMzQixNQUNGLENBQ0EsSUFBTUMsRUFBaUIsS0FBSyxPQUFPRCxDQUFLLEVBQ3hDLEdBQUlDLEdBQWtCLEtBQ3BCLE9BRUYsSUFBTXBFLEVBQWUsS0FBSyxNQUFNLGFBQWEsRUFDdkNsQixFQUFZa0IsRUFBYSxXQUFhb0UsRUFDdENoRixFQUFZLElBQUlULEdBQVVxQixFQUFjbEIsRUFBV3NGLENBQWMsRUFDdkUsUUFBVzlsQixLQUFPLEtBQUssWUFDckJ3Z0IsRUFDQWtCLEVBQWEsWUFBY29FLENBQzdCLEVBQ0VoRixFQUFVLE9BQU85Z0IsQ0FBRyxFQUV0QixRQUFXQSxLQUFPLEtBQUssWUFBWThsQixFQUFnQnRGLENBQVMsRUFDdEQsS0FBSyxjQUFjeGdCLENBQUcsR0FDeEI4Z0IsRUFBVSxJQUFJOWdCLENBQUcsRUFHckIsS0FBSyxNQUFNLGdCQUFnQjhnQixDQUFTLENBQ3RDLENBQ0EsWUFBWWlGLEVBQU1DLEVBQUksQ0FDcEIsSUFBTUMsRUFBVyxLQUFLLFdBQVcsRUFBRSxRQUFRRixDQUFJLEVBQ3pDRyxFQUFTLEtBQUssV0FBVyxFQUFFLFFBQVFGLENBQUUsRUFDM0MsT0FBSUMsR0FBWUMsRUFDVkQsRUFBUyxPQUFTLE1BQVFDLEVBQU8sT0FBUyxNQUFRRCxFQUFTLE9BQVNDLEVBQU8sTUFDdEUsS0FBSyxvQkFBb0JILEVBQU1DLENBQUUsRUFFbkMsS0FBSyxvQkFBb0JBLEVBQUlELENBQUksRUFFbkMsQ0FBQyxDQUNWLENBQ0Esb0JBQW9CQSxFQUFNQyxFQUFJLENBQzVCLElBQU16RixFQUFRLENBQUMsRUFDWHZnQixFQUFNK2xCLEVBQ1YsS0FBTy9sQixHQUFPLE1BQU0sQ0FDbEIsSUFBTXFGLEVBQU8sS0FBSyxXQUFXLEVBQUUsUUFBUXJGLENBQUcsRUFJMUMsR0FISXFGLEdBQVFBLEVBQUssT0FBUyxRQUN4QmtiLEVBQU0sS0FBS3ZnQixDQUFHLEVBRVpBLElBQVFnbUIsRUFDVixPQUFPekYsRUFFVHZnQixFQUFNLEtBQUssV0FBVyxFQUFFLFlBQVlBLENBQUcsQ0FDekMsQ0FDQSxNQUFPLENBQUMsQ0FDVixDQUNBLE9BQU9BLEVBQUssQ0FDVixJQUFNcUYsRUFBTyxLQUFLLFdBQVcsRUFBRSxRQUFRckYsQ0FBRyxFQUMxQyxPQUFLcUYsRUFHRCxDQUFDQSxHQUFRQSxFQUFLLE9BQVMsT0FDbEIsS0FFRkEsRUFBSyxJQUxIckYsQ0FNWCxDQUVBLGdCQUFnQkEsRUFBSyxDQUNuQixHQUFJLEtBQUssY0FBYyxJQUFNLE9BQzNCLE9BRUYsR0FBSSxLQUFLLGNBQWMsSUFBTSxVQUFZLENBQUMsS0FBSyxXQUFXQSxDQUFHLEVBQUcsQ0FDOUQsS0FBSyxpQkFBaUJBLENBQUcsRUFDekIsTUFDRixDQUNBLElBQU13bEIsRUFBZSxLQUFLLE9BQU94bEIsQ0FBRyxFQUNwQyxHQUFJd2xCLEdBQWdCLEtBQ2xCLE9BRUYsSUFBTWpGLEVBQVEsSUFBSUYsR0FBVSxLQUFLLE1BQU0sYUFBYSxDQUFDLEVBQ2pERSxFQUFNLElBQUlpRixDQUFZLEVBQ3hCakYsRUFBTSxPQUFPaUYsQ0FBWSxFQUNoQixLQUFLLGNBQWNBLENBQVksSUFDeENqRixFQUFNLElBQUlpRixDQUFZLEVBQ3RCakYsRUFBTSxVQUFZaUYsRUFDbEJqRixFQUFNLFdBQWFpRixHQUVqQixPQUFLLHVCQUF1QixHQUFLakYsRUFBTSxPQUFTLElBR3BELEtBQUssTUFBTSxnQkFBZ0JBLENBQUssQ0FDbEMsQ0FFQSxpQkFBaUJ2Z0IsRUFBSyxDQUNwQixHQUFJLEtBQUssY0FBYyxJQUFNLE9BQzNCLE9BRUYsSUFBTXdsQixFQUFlLEtBQUssT0FBT3hsQixDQUFHLEVBQ3BDLEdBQUl3bEIsR0FBZ0IsS0FDbEIsT0FFRixJQUFNMUUsRUFBWSxLQUFLLGNBQWMwRSxDQUFZLEVBQUksSUFBSW5GLEdBQVUsQ0FBQ21GLENBQVksRUFBR0EsRUFBY0EsQ0FBWSxFQUFJLElBQUluRixHQUNySCxLQUFLLE1BQU0sZ0JBQWdCUyxDQUFTLENBQ3RDLENBRUEsZ0JBQWdCUCxFQUFPLENBQ3JCLEdBQUksS0FBSyxjQUFjLElBQU0sT0FDM0IsT0FFRixJQUFNTyxFQUFZLElBQUlULEdBQ3RCLFFBQVdyZ0IsS0FBT3VnQixFQUFPLENBQ3ZCLElBQU1pRixFQUFlLEtBQUssT0FBT3hsQixDQUFHLEVBQ3BDLEdBQUl3bEIsR0FBZ0IsT0FDbEIxRSxFQUFVLElBQUkwRSxDQUFZLEVBQ3RCLEtBQUssY0FBYyxJQUFNLFVBQzNCLEtBR04sQ0FDQSxLQUFLLE1BQU0sZ0JBQWdCMUUsQ0FBUyxDQUN0QyxDQUVBLFdBQVksQ0FDTixLQUFLLGNBQWMsSUFBTSxZQUMzQixLQUFLLE1BQU0sZ0JBQWdCLElBQUksSUFBSSxLQUFLLHFCQUFxQixDQUFDLENBQUMsQ0FFbkUsQ0FJQSxnQkFBaUIsQ0FDZixJQUFNWSxFQUFlLEtBQUssTUFBTSxhQUFhLEVBQ3pDLENBQUMsS0FBSyx1QkFBdUIsR0FBS0EsRUFBYSxLQUFPLEdBQ3hELEtBQUssTUFBTSxnQkFBZ0IsSUFBSXJCLEVBQVcsQ0FFOUMsQ0FJQSxpQkFBa0IsQ0FDWixLQUFLLFlBQVksRUFDbkIsS0FBSyxlQUFlLEVBRXBCLEtBQUssVUFBVSxDQUVuQixDQUNBLE9BQU9yZ0IsRUFBS3lJLEVBQUksQ0FDVixLQUFLLGNBQWMsSUFBTSxTQUd6QixLQUFLLGNBQWMsSUFBTSxTQUN2QixLQUFLLFdBQVd6SSxDQUFHLEdBQUssQ0FBQyxLQUFLLHVCQUF1QixFQUN2RCxLQUFLLGdCQUFnQkEsQ0FBRyxFQUV4QixLQUFLLGlCQUFpQkEsQ0FBRyxFQUVsQixLQUFLLGtCQUFrQixJQUFNLFVBQVl5SSxHQUFNQSxFQUFHLGNBQWdCLFFBQzNFLEtBQUssZ0JBQWdCekksQ0FBRyxFQUV4QixLQUFLLGlCQUFpQkEsQ0FBRyxFQUU3QixDQUVBLGlCQUFpQjhnQixFQUFXLENBQzFCLEdBQUlBLElBQWMsS0FBSyxNQUFNLGFBQWEsRUFDeEMsTUFBTyxHQUVULElBQU1ZLEVBQWUsS0FBSyxhQUFhLEVBQ3ZDLEdBQUlaLEVBQVUsT0FBU1ksRUFBYSxLQUNsQyxNQUFPLEdBRVQsUUFBVzFoQixLQUFPOGdCLEVBQ2hCLEdBQUksQ0FBQ1ksRUFBYSxJQUFJMWhCLENBQUcsRUFDdkIsTUFBTyxHQUdYLFFBQVdBLEtBQU8waEIsRUFDaEIsR0FBSSxDQUFDWixFQUFVLElBQUk5Z0IsQ0FBRyxFQUNwQixNQUFPLEdBR1gsTUFBTyxFQUNULENBQ0EsY0FBY0EsRUFBSyxDQUNqQixHQUFJLEtBQUssTUFBTSxjQUFjLElBQU0sT0FDakMsTUFBTyxHQUVULElBQU1xRixFQUFPLEtBQUssV0FBVyxFQUFFLFFBQVFyRixDQUFHLEVBQzFDLE9BQU9xRixHQUFRLE1BQVEsQ0FBQ0EsRUFBSyxRQUMvQixDQUNBLFdBQVdyRixFQUFLLENBQ2QsSUFBTXFGLEVBQU8sS0FBSyxXQUFXLEVBQUUsUUFBUXJGLENBQUcsRUFDMUMsTUFBTyxDQUFDcUYsR0FBUUEsRUFBSyxRQUN2QixDQUNBLHNCQUF1QixDQUNyQixJQUFNa2IsRUFBUSxDQUFDLEVBZWYsT0FkaUJ2Z0IsR0FBUSxDQUN2QixLQUFPQSxHQUFPLE1BQU0sQ0FDbEIsR0FBSSxLQUFLLGNBQWNBLENBQUcsRUFBRyxDQUMzQixJQUFNcUYsRUFBTyxLQUFLLFdBQVcsRUFBRSxRQUFRckYsQ0FBRyxFQUMxQyxHQUFJLENBQUNxRixFQUNILFNBRUVBLEVBQUssT0FBUyxRQUNoQmtiLEVBQU0sS0FBS3ZnQixDQUFHLENBRWxCLENBQ0FBLEVBQU0sS0FBSyxXQUFXLEVBQUUsWUFBWUEsQ0FBRyxDQUN6QyxDQUNGLEdBQ1EsS0FBSyxXQUFXLEVBQUUsWUFBWSxDQUFDLEVBQ2hDdWdCLENBQ1QsQ0FDRixFQUNJNEYsR0FBaUIsS0FBTSxDQUN6QixPQUF5QixJQUFJLElBQzdCLFNBQ0EsU0FDQSxRQUNBLFlBQVluSSxFQUFPLENBQ2pCLEtBQUssU0FBV0EsRUFDaEIsUUFBVy9kLEtBQVErZCxFQUNqQixLQUFLLE9BQU8sSUFBSS9kLEVBQUssSUFBS0EsQ0FBSSxFQUVoQyxHQUFJLEtBQUssT0FBTyxPQUFTLEVBQ3ZCLE9BRUYsSUFBSTZqQixFQUNBampCLEVBQVEsRUFDWixPQUFXLENBQUNiLEVBQUtDLENBQUksSUFBSyxLQUFLLE9BQ3pCNmpCLEdBQ0ZBLEVBQUssUUFBVTlqQixFQUNmQyxFQUFLLFFBQVU2akIsRUFBSyxNQUVwQixLQUFLLFNBQVc5akIsRUFDaEJDLEVBQUssUUFBVSxRQUViQSxFQUFLLE9BQVMsU0FDaEJBLEVBQUssTUFBUVksS0FFZmlqQixFQUFPN2pCLEVBQ1A2akIsRUFBSyxRQUFVLE9BRWpCLEtBQUssUUFBVUEsRUFBSyxHQUN0QixDQUNBLEVBQUUsT0FBTyxRQUFRLEdBQUksQ0FDbkIsTUFBTyxLQUFLLFFBQ2QsQ0FDQSxTQUFVLENBQ1IsT0FBTyxLQUFLLE9BQU8sSUFDckIsQ0FDQSxTQUFVLENBQ1IsT0FBTyxLQUFLLE9BQU8sS0FBSyxDQUMxQixDQUNBLGFBQWE5akIsRUFBSyxDQUNoQixPQUFPLEtBQUssT0FBTyxJQUFJQSxDQUFHLEdBQUcsT0FDL0IsQ0FDQSxZQUFZQSxFQUFLLENBQ2YsT0FBTyxLQUFLLE9BQU8sSUFBSUEsQ0FBRyxHQUFHLE9BQy9CLENBQ0EsYUFBYyxDQUNaLE9BQU8sS0FBSyxRQUNkLENBQ0EsWUFBYSxDQUNYLE9BQU8sS0FBSyxPQUNkLENBQ0EsUUFBUUEsRUFBSyxDQUNYLE9BQU8sS0FBSyxPQUFPLElBQUlBLENBQUcsQ0FDNUIsQ0FDQSxHQUFHb21CLEVBQUssQ0FDTixJQUFNN0YsRUFBUSxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsRUFDaEMsT0FBTyxLQUFLLFFBQVFBLEVBQU02RixDQUFHLENBQUMsQ0FDaEMsQ0FDRixFQUNBLFNBQVNDLEdBQWdCam5CLEVBQU8sQ0FDOUIsSUFBTWtuQixFQUFpQnBGLEdBQTZCOWhCLENBQUssRUFJbkRrbUIsRUFBYXpHLEdBQ2pCLENBQ0UsV0FBWSxJQUFNN2dCLEVBQU9vQixFQUFNLFVBQVUsRUFDekMsT0FBUSxJQUFNcEIsRUFBT29CLEVBQU0sTUFBTSxFQUNqQyxhQUFjLElBQU1wQixFQUFPb0IsRUFBTSxZQUFZLEVBQzdDLFlBQWEsSUFBTXBCLEVBQU9vQixFQUFNLFdBQVcsRUFDM0MsbUJBQW9CLElBQU1wQixFQUFPb0IsRUFBTSxrQkFBa0IsRUFDekQsUUFWYTRlLEdBQ1I1ZSxFQUFNLE9BQVMsSUFBSSttQixHQUFlL21CLEVBQU0sT0FBTzRlLENBQUssQ0FBQyxFQUFJLElBQUltSSxHQUFlbkksQ0FBSyxDQVV4RixFQUNBLENBQUMsSUFBTTVlLEVBQU0sTUFBTSxDQUNyQixFQUNNbW5CLEVBQW1CLElBQUlsQixHQUFpQkMsRUFBWWdCLENBQWMsRUFDeEUsT0FBQUUsR0FBZSxJQUFNLENBQ25CLElBQU1uRixFQUFhaUYsRUFBZSxXQUFXLEVBQ3pDakYsR0FBYyxNQUFRLENBQUNpRSxFQUFXLEVBQUUsUUFBUWpFLENBQVUsR0FDeERpRixFQUFlLGNBQWMsTUFBTSxDQUV2QyxDQUFDLEVBQ00sQ0FDTCxXQUFBaEIsRUFDQSxpQkFBa0IsSUFBTWlCLENBQzFCLENBQ0YsQ0FHQSxJQUFJRSxHQUFXeG9CLEdBQU0sT0FBT0EsR0FBTSxXQUFhQSxFQUFFLEVBQUlBLEVBR2pEeW9CLEdBQWtCdG5CLEdBQVUsQ0FDOUIsSUFBTXVuQixFQUFZcGlCLEVBQVcsSUFBTSxDQUNqQyxJQUFNb04sRUFBVThVLEdBQVFybkIsRUFBTSxPQUFPLEVBQ3JDLEdBQUt1UyxFQUNMLE9BQU8saUJBQWlCQSxDQUFPLENBQ2pDLENBQUMsRUFDS2lWLEVBQW1CLElBQ2hCRCxFQUFVLEdBQUcsZUFBaUIsT0FFakMsQ0FBQ0UsRUFBY0MsQ0FBZSxFQUFJdm5CLEVBQWFrbkIsR0FBUXJuQixFQUFNLElBQUksRUFBSSxVQUFZLFFBQVEsRUFDM0YybkIsRUFBZ0IsT0FDcEIsT0FBQTVpQixFQUFjNmlCLEdBQWEsQ0FDekIsSUFBTUMsRUFBT1IsR0FBUXJuQixFQUFNLElBQUksRUFDL0IsT0FBQStLLEdBQVEsSUFBTSxDQUNaLEdBQUk2YyxJQUFhQyxFQUFNLE9BQU9BLEVBQzlCLElBQU1DLEVBQW9CSCxFQUNwQkksRUFBdUJQLEVBQWlCLEVBQzFDSyxFQUNGSCxFQUFnQixTQUFTLEVBQ2hCSyxJQUF5QixRQUFVUixFQUFVLEdBQUcsVUFBWSxPQUNyRUcsRUFBZ0IsUUFBUSxFQUl0QkEsRUFERUUsSUFBYSxJQURHRSxJQUFzQkMsRUFFeEIsU0FFQSxRQUZRLENBSzlCLENBQUMsRUFDTUYsQ0FDVCxDQUFDLEVBQ0Q5aUIsRUFBYSxJQUFNLENBQ2pCLElBQU13TixFQUFVOFUsR0FBUXJuQixFQUFNLE9BQU8sRUFDckMsR0FBSSxDQUFDdVMsRUFBUyxPQUNkLElBQU15VixFQUF3QjdVLEdBQVUsQ0FDbENBLEVBQU0sU0FBV1osSUFDbkJvVixFQUFnQkgsRUFBaUIsRUFFckMsRUFDTVMsRUFBc0I5VSxHQUFVLENBRXBDLElBQU0rVSxFQUR1QlYsRUFBaUIsRUFDRSxTQUM5Q3JVLEVBQU0sYUFDUixFQUNJQSxFQUFNLFNBQVdaLEdBQVcyVixHQUFzQlQsRUFBYSxJQUFNLFVBQ3ZFQyxFQUFnQixRQUFRLENBRTVCLEVBQ0FuVixFQUFRLGlCQUFpQixpQkFBa0J5VixDQUFvQixFQUMvRHpWLEVBQVEsaUJBQWlCLGtCQUFtQjBWLENBQWtCLEVBQzlEMVYsRUFBUSxpQkFBaUIsZUFBZ0IwVixDQUFrQixFQUMzRDVvQixFQUFVLElBQU0sQ0FDZGtULEVBQVEsb0JBQW9CLGlCQUFrQnlWLENBQW9CLEVBQ2xFelYsRUFBUSxvQkFBb0Isa0JBQW1CMFYsQ0FBa0IsRUFDakUxVixFQUFRLG9CQUFvQixlQUFnQjBWLENBQWtCLENBQ2hFLENBQUMsQ0FDSCxDQUFDLEVBQ00sQ0FDTCxRQUFTLElBQU1SLEVBQWEsSUFBTSxXQUFhQSxFQUFhLElBQU0sU0FDbEUsTUFBT0EsQ0FDVCxDQUNGLEVBQ0lVLEdBQW1CYixHQUNuQmMsR0FBY0QsR0FHZEUsR0FBc0Isb0JBQ3RCQyxHQUNBQyxHQUErQixHQUMvQkMsR0FBUyxDQUFDLEVBQ2QsU0FBU0MsR0FBUTVuQixFQUFNLENBQ3JCLE9BQU8ybkIsR0FBTyxVQUFXRSxHQUFVQSxFQUFNLE9BQVM3bkIsQ0FBSSxDQUN4RCxDQUNBLFNBQVM4bkIsR0FBSzluQixFQUFNLENBQ2xCLE9BQU8ybkIsR0FBT0MsR0FBUTVuQixDQUFJLENBQUMsQ0FDN0IsQ0FDQSxTQUFTK25CLEdBQWUvbkIsRUFBTSxDQUM1QixPQUFPMm5CLEdBQU9BLEdBQU8sT0FBUyxDQUFDLEVBQUUsT0FBUzNuQixDQUM1QyxDQUNBLFNBQVNnb0IsSUFBMkIsQ0FDbEMsT0FBT0wsR0FBTyxPQUFRRSxHQUFVQSxFQUFNLGlCQUFpQixDQUN6RCxDQUNBLFNBQVNJLElBQWlDLENBQ3hDLE1BQU8sQ0FBQyxHQUFHRCxHQUF5QixDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUNwRCxDQUNBLFNBQVNFLElBQTBCLENBQ2pDLE9BQU9GLEdBQXlCLEVBQUUsT0FBUyxDQUM3QyxDQUNBLFNBQVNHLEdBQTRCbm9CLEVBQU0sQ0FDekMsSUFBTW9vQixFQUF1QlIsR0FBUUssR0FBK0IsR0FBRyxJQUFJLEVBQzNFLE9BQU9MLEdBQVE1bkIsQ0FBSSxFQUFJb29CLENBQ3pCLENBQ0EsU0FBU0MsR0FBU1IsRUFBTyxDQUN2QkYsR0FBTyxLQUFLRSxDQUFLLENBQ25CLENBQ0EsU0FBU1MsR0FBWXRvQixFQUFNLENBQ3pCLElBQU1ZLEVBQVFnbkIsR0FBUTVuQixDQUFJLEVBQ3RCWSxFQUFRLEdBR1orbUIsR0FBTyxPQUFPL21CLEVBQU8sQ0FBQyxDQUN4QixDQUNBLFNBQVMybkIsSUFBNkIsQ0FDcEMsT0FBVyxDQUNULEtBQUF2b0IsQ0FDRixJQUFLMm5CLEdBQ0gzbkIsRUFBSyxNQUFNLGNBQWdCbW9CLEdBQTRCbm9CLENBQUksRUFBSSxPQUFTLE1BRTVFLENBQ0EsU0FBU3dvQixHQUF5QnhvQixFQUFNLENBQ3RDLEdBQUlrb0IsR0FBd0IsR0FBSyxDQUFDUixHQUE4QixDQUM5RCxJQUFNZSxFQUFnQmxYLEdBQVl2UixDQUFJLEVBQ3RDeW5CLEdBQTRCLFNBQVMsS0FBSyxNQUFNLGNBQ2hEZ0IsRUFBYyxLQUFLLE1BQU0sY0FBZ0IsT0FDekNmLEdBQStCLEVBQ2pDLENBQ0YsQ0FDQSxTQUFTZ0IsR0FBeUIxb0IsRUFBTSxDQUN0QyxHQUFJa29CLEdBQXdCLEVBQzFCLE9BRUYsSUFBTU8sRUFBZ0JsWCxHQUFZdlIsQ0FBSSxFQUN0Q3lvQixFQUFjLEtBQUssTUFBTSxjQUFnQmhCLEdBQ3JDZ0IsRUFBYyxLQUFLLE1BQU0sU0FBVyxHQUN0Q0EsRUFBYyxLQUFLLGdCQUFnQixPQUFPLEVBRTVDZixHQUErQixFQUNqQyxDQUNBLElBQUlpQixHQUFhLENBQ2YsT0FBQWhCLEdBQ0EsZUFBQUksR0FDQSx3QkFBQUcsR0FDQSw0QkFBQUMsR0FDQSxTQUFBRSxHQUNBLFlBQUFDLEdBQ0EsUUFBQVYsR0FDQSxLQUFBRSxHQUNBLDJCQUFBUyxHQUNBLHlCQUFBQyxHQUNBLHlCQUFBRSxFQUNGLEVBR0lFLEdBQWlCLENBQUMsRUFDdEJwTixHQUFTb04sR0FBZ0IsQ0FDdkIsT0FBUSxJQUFNQyxHQUNkLEtBQU0sSUFBTUMsRUFDZCxDQUFDLEVBQ0QsSUFBSUMsR0FBcUIsQ0FDdkIsU0FDQSxRQUNBLE9BQ0EsUUFDQSxRQUNBLFFBQ0YsRUFDQSxTQUFTQyxHQUFTdFgsRUFBUyxDQUN6QixJQUFNcUcsRUFBVXJHLEVBQVEsUUFBUSxZQUFZLEVBQzVDLE9BQUlxRyxJQUFZLFNBQ1AsR0FFTEEsSUFBWSxTQUFXckcsRUFBUSxLQUMxQnFYLEdBQW1CLFFBQVFyWCxFQUFRLElBQUksSUFBTSxHQUUvQyxFQUNULENBQ0EsU0FBU29YLEdBQVczcEIsRUFBTyxDQUN6QixJQUFJcVEsRUFDRW1KLEVBQWM1QyxFQUFrQixDQUNwQyxLQUFNLFFBQ1IsRUFBRzVXLENBQUssRUFDRixDQUFDZ1osRUFBT0MsQ0FBTSxFQUFJQyxHQUFXTSxFQUFhLENBQUMsTUFBTyxPQUFRLFVBQVUsQ0FBQyxFQUNyRVosRUFBVUQsR0FBYyxJQUFNdEksRUFBSyxJQUFNLFFBQVEsRUFDakR5WixFQUFpQjNrQixFQUFXLElBQU0sQ0FDdEMsSUFBTTRrQixFQUFpQm5SLEVBQVEsRUFDL0IsT0FBSW1SLEdBQWtCLEtBQ2IsR0FFRkYsR0FBUyxDQUNkLFFBQVNFLEVBQ1QsS0FBTS9RLEVBQU0sSUFDZCxDQUFDLENBQ0gsQ0FBQyxFQUNLZ1IsRUFBZ0I3a0IsRUFBVyxJQUN4QnlULEVBQVEsSUFBTSxPQUN0QixFQUNLcVIsRUFBZTlrQixFQUFXLElBQ3ZCeVQsRUFBUSxJQUFNLEtBQU92SSxHQUFLLGFBQWEsTUFBTSxHQUFLLElBQzFELEVBQ0QsT0FBT2pMLEVBQWdCMlQsR0FBYWpDLEVBQVcsQ0FDN0MsR0FBSSxTQUNKLElBQUltRSxFQUFJLENBQ04sSUFBTUMsRUFBUTlPLEdBQVdWLEdBQU8yRSxFQUFNM0UsRUFBSXNOLEVBQU0sR0FBRyxFQUNuRCxPQUFPa0MsR0FBVSxZQUFjQSxFQUFNRCxDQUFFLENBQ3pDLEVBQ0EsSUFBSSxNQUFPLENBQ1QsT0FBTzZPLEVBQWUsR0FBS0UsRUFBYyxFQUFJaFIsRUFBTSxLQUFPLE1BQzVELEVBQ0EsSUFBSSxNQUFPLENBQ1QsTUFBTyxDQUFDOFEsRUFBZSxHQUFLLENBQUNHLEVBQWEsRUFBSSxTQUFXLE1BQzNELEVBQ0EsSUFBSSxVQUFXLENBQ2IsTUFBTyxDQUFDSCxFQUFlLEdBQUssQ0FBQ0csRUFBYSxHQUFLLENBQUNqUixFQUFNLFNBQVcsRUFBSSxNQUN2RSxFQUNBLElBQUksVUFBVyxDQUNiLE9BQU84USxFQUFlLEdBQUtFLEVBQWMsRUFBSWhSLEVBQU0sU0FBVyxNQUNoRSxFQUNBLEdBQUssaUJBQW1CLENBQ3RCLE1BQU8sQ0FBQzhRLEVBQWUsR0FBSyxDQUFDRSxFQUFjLEdBQUtoUixFQUFNLFNBQVcsR0FBTyxNQUMxRSxFQUNBLEdBQUssaUJBQW1CLENBQ3RCLE9BQU9BLEVBQU0sU0FBVyxHQUFLLE1BQy9CLENBQ0YsRUFBR0MsQ0FBTSxDQUFDLENBQ1osQ0FDQSxJQUFJeVEsR0FBU0MsR0FHVE8sR0FBUSxDQUFDLE1BQU8sUUFBUyxTQUFVLE1BQU0sRUFDekNDLEdBQU0sS0FBSyxJQUNYQyxHQUFNLEtBQUssSUFDWEMsR0FBUSxLQUFLLE1BQ2JDLEdBQVEsS0FBSyxNQUNiQyxHQUFnQjFyQixJQUFPLENBQ3pCLEVBQUdBLEVBQ0gsRUFBR0EsQ0FDTCxHQUNJMnJCLEdBQWtCLENBQ3BCLEtBQU0sUUFDTixNQUFPLE9BQ1AsT0FBUSxNQUNSLElBQUssUUFDUCxFQUNJQyxHQUF1QixDQUN6QixNQUFPLE1BQ1AsSUFBSyxPQUNQLEVBQ0EsU0FBU0MsR0FBT0MsRUFBTzVyQixFQUFPNnJCLEVBQUssQ0FDakMsT0FBT1IsR0FBSU8sRUFBT1IsR0FBSXByQixFQUFPNnJCLENBQUcsQ0FBQyxDQUNuQyxDQUNBLFNBQVNDLEdBQVM5ckIsRUFBTytyQixFQUFPLENBQzlCLE9BQU8sT0FBTy9yQixHQUFVLFdBQWFBLEVBQU0rckIsQ0FBSyxFQUFJL3JCLENBQ3RELENBQ0EsU0FBU2dzQixHQUFRQyxFQUFXLENBQzFCLE9BQU9BLEVBQVUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUMvQixDQUNBLFNBQVNDLEdBQWFELEVBQVcsQ0FDL0IsT0FBT0EsRUFBVSxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQy9CLENBQ0EsU0FBU0UsR0FBZ0JuVCxFQUFNLENBQzdCLE9BQU9BLElBQVMsSUFBTSxJQUFNLEdBQzlCLENBQ0EsU0FBU29ULEdBQWNwVCxFQUFNLENBQzNCLE9BQU9BLElBQVMsSUFBTSxTQUFXLE9BQ25DLENBQ0EsU0FBU3FULEdBQVlKLEVBQVcsQ0FDOUIsTUFBTyxDQUFDLE1BQU8sUUFBUSxFQUFFLFNBQVNELEdBQVFDLENBQVMsQ0FBQyxFQUFJLElBQU0sR0FDaEUsQ0FDQSxTQUFTSyxHQUFpQkwsRUFBVyxDQUNuQyxPQUFPRSxHQUFnQkUsR0FBWUosQ0FBUyxDQUFDLENBQy9DLENBQ0EsU0FBU00sR0FBa0JOLEVBQVdPLEVBQU9DLEVBQUssQ0FDNUNBLElBQVEsU0FDVkEsRUFBTSxJQUVSLElBQU1DLEVBQVlSLEdBQWFELENBQVMsRUFDbENVLEVBQWdCTCxHQUFpQkwsQ0FBUyxFQUMxQ3hvQixFQUFTMm9CLEdBQWNPLENBQWEsRUFDdENDLEVBQW9CRCxJQUFrQixJQUFNRCxLQUFlRCxFQUFNLE1BQVEsU0FBVyxRQUFVLE9BQVNDLElBQWMsUUFBVSxTQUFXLE1BQzlJLE9BQUlGLEVBQU0sVUFBVS9vQixDQUFNLEVBQUkrb0IsRUFBTSxTQUFTL29CLENBQU0sSUFDakRtcEIsRUFBb0JDLEdBQXFCRCxDQUFpQixHQUVyRCxDQUFDQSxFQUFtQkMsR0FBcUJELENBQWlCLENBQUMsQ0FDcEUsQ0FDQSxTQUFTRSxHQUFzQmIsRUFBVyxDQUN4QyxJQUFNYyxFQUFvQkYsR0FBcUJaLENBQVMsRUFDeEQsTUFBTyxDQUFDZSxHQUE4QmYsQ0FBUyxFQUFHYyxFQUFtQkMsR0FBOEJELENBQWlCLENBQUMsQ0FDdkgsQ0FDQSxTQUFTQyxHQUE4QmYsRUFBVyxDQUNoRCxPQUFPQSxFQUFVLFFBQVEsYUFBZVMsR0FBY2hCLEdBQXFCZ0IsQ0FBUyxDQUFDLENBQ3ZGLENBQ0EsU0FBU08sR0FBWUMsRUFBTUMsRUFBU1YsRUFBSyxDQUN2QyxJQUFNVyxFQUFLLENBQUMsT0FBUSxPQUFPLEVBQ3JCQyxFQUFLLENBQUMsUUFBUyxNQUFNLEVBQ3JCQyxFQUFLLENBQUMsTUFBTyxRQUFRLEVBQ3JCQyxFQUFLLENBQUMsU0FBVSxLQUFLLEVBQzNCLE9BQVFMLEVBQU0sQ0FDWixJQUFLLE1BQ0wsSUFBSyxTQUNILE9BQUlULEVBQVlVLEVBQVVFLEVBQUtELEVBQ3hCRCxFQUFVQyxFQUFLQyxFQUN4QixJQUFLLE9BQ0wsSUFBSyxRQUNILE9BQU9GLEVBQVVHLEVBQUtDLEVBQ3hCLFFBQ0UsTUFBTyxDQUFDLENBQ1osQ0FDRixDQUNBLFNBQVNDLEdBQTBCdkIsRUFBV3dCLEVBQWU1SSxFQUFXNEgsRUFBSyxDQUMzRSxJQUFNQyxFQUFZUixHQUFhRCxDQUFTLEVBQ3BDbGQsRUFBT2tlLEdBQVlqQixHQUFRQyxDQUFTLEVBQUdwSCxJQUFjLFFBQVM0SCxDQUFHLEVBQ3JFLE9BQUlDLElBQ0YzZCxFQUFPQSxFQUFLLElBQUttZSxHQUFTQSxFQUFPLElBQU1SLENBQVMsRUFDNUNlLElBQ0YxZSxFQUFPQSxFQUFLLE9BQU9BLEVBQUssSUFBSWllLEVBQTZCLENBQUMsSUFHdkRqZSxDQUNULENBQ0EsU0FBUzhkLEdBQXFCWixFQUFXLENBQ3ZDLE9BQU9BLEVBQVUsUUFBUSx5QkFBMkJpQixHQUFTekIsR0FBZ0J5QixDQUFJLENBQUMsQ0FDcEYsQ0FDQSxTQUFTUSxHQUFvQkMsRUFBUyxDQUNwQyxNQUFPLENBQ0wsSUFBSyxFQUNMLE1BQU8sRUFDUCxPQUFRLEVBQ1IsS0FBTSxFQUNOLEdBQUdBLENBQ0wsQ0FDRixDQUNBLFNBQVNDLEdBQWlCRCxFQUFTLENBQ2pDLE9BQU8sT0FBT0EsR0FBWSxTQUFXRCxHQUFvQkMsQ0FBTyxFQUFJLENBQ2xFLElBQUtBLEVBQ0wsTUFBT0EsRUFDUCxPQUFRQSxFQUNSLEtBQU1BLENBQ1IsQ0FDRixDQUNBLFNBQVNFLEdBQWlCM2UsRUFBTSxDQUM5QixHQUFNLENBQ0osRUFBQWtJLEVBQ0EsRUFBQUMsRUFDQSxNQUFBalMsRUFDQSxPQUFBQyxDQUNGLEVBQUk2SixFQUNKLE1BQU8sQ0FDTCxNQUFBOUosRUFDQSxPQUFBQyxFQUNBLElBQUtnUyxFQUNMLEtBQU1ELEVBQ04sTUFBT0EsRUFBSWhTLEVBQ1gsT0FBUWlTLEVBQUloUyxFQUNaLEVBQUErUixFQUNBLEVBQUFDLENBQ0YsQ0FDRixDQUdBLFNBQVN5VyxHQUEyQjFrQixFQUFNNmlCLEVBQVdRLEVBQUssQ0FDeEQsR0FBSSxDQUNGLFVBQUFzQixFQUNBLFNBQUFDLENBQ0YsRUFBSTVrQixFQUNFNmtCLEVBQVc1QixHQUFZSixDQUFTLEVBQ2hDVSxFQUFnQkwsR0FBaUJMLENBQVMsRUFDMUNpQyxFQUFjOUIsR0FBY08sQ0FBYSxFQUN6Q08sRUFBT2xCLEdBQVFDLENBQVMsRUFDeEJrQyxFQUFhRixJQUFhLElBQzFCRyxFQUFVTCxFQUFVLEVBQUlBLEVBQVUsTUFBUSxFQUFJQyxFQUFTLE1BQVEsRUFDL0RLLEVBQVVOLEVBQVUsRUFBSUEsRUFBVSxPQUFTLEVBQUlDLEVBQVMsT0FBUyxFQUNqRU0sRUFBY1AsRUFBVUcsQ0FBVyxFQUFJLEVBQUlGLEVBQVNFLENBQVcsRUFBSSxFQUNyRUssRUFDSixPQUFRckIsRUFBTSxDQUNaLElBQUssTUFDSHFCLEVBQVMsQ0FDUCxFQUFHSCxFQUNILEVBQUdMLEVBQVUsRUFBSUMsRUFBUyxNQUM1QixFQUNBLE1BQ0YsSUFBSyxTQUNITyxFQUFTLENBQ1AsRUFBR0gsRUFDSCxFQUFHTCxFQUFVLEVBQUlBLEVBQVUsTUFDN0IsRUFDQSxNQUNGLElBQUssUUFDSFEsRUFBUyxDQUNQLEVBQUdSLEVBQVUsRUFBSUEsRUFBVSxNQUMzQixFQUFHTSxDQUNMLEVBQ0EsTUFDRixJQUFLLE9BQ0hFLEVBQVMsQ0FDUCxFQUFHUixFQUFVLEVBQUlDLEVBQVMsTUFDMUIsRUFBR0ssQ0FDTCxFQUNBLE1BQ0YsUUFDRUUsRUFBUyxDQUNQLEVBQUdSLEVBQVUsRUFDYixFQUFHQSxFQUFVLENBQ2YsQ0FDSixDQUNBLE9BQVE3QixHQUFhRCxDQUFTLEVBQUcsQ0FDL0IsSUFBSyxRQUNIc0MsRUFBTzVCLENBQWEsR0FBSzJCLEdBQWU3QixHQUFPMEIsRUFBYSxHQUFLLEdBQ2pFLE1BQ0YsSUFBSyxNQUNISSxFQUFPNUIsQ0FBYSxHQUFLMkIsR0FBZTdCLEdBQU8wQixFQUFhLEdBQUssR0FDakUsS0FDSixDQUNBLE9BQU9JLENBQ1QsQ0FDQSxJQUFJQyxHQUFrQixNQUFPVCxFQUFXQyxFQUFVUyxJQUFXLENBQzNELEdBQU0sQ0FDSixVQUFBeEMsRUFBWSxTQUNaLFNBQUF5QyxFQUFXLFdBQ1gsV0FBQUMsRUFBYSxDQUFDLEVBQ2QsU0FBVUMsQ0FDWixFQUFJSCxFQUNFSSxFQUFrQkYsRUFBVyxPQUFPLE9BQU8sRUFDM0NsQyxFQUFNLE1BQU9tQyxFQUFVLE9BQVMsS0FBTyxPQUFTQSxFQUFVLE1BQU1aLENBQVEsR0FDMUV4QixFQUFRLE1BQU1vQyxFQUFVLGdCQUFnQixDQUMxQyxVQUFBYixFQUNBLFNBQUFDLEVBQ0EsU0FBQVUsQ0FDRixDQUFDLEVBQ0csQ0FDRixFQUFBdFgsRUFDQSxFQUFBQyxDQUNGLEVBQUl5VyxHQUEyQnRCLEVBQU9QLEVBQVdRLENBQUcsRUFDaERxQyxFQUFvQjdDLEVBQ3BCOEMsRUFBaUIsQ0FBQyxFQUNsQkMsRUFBYSxFQUNqQixRQUFTMXZCLEVBQUssRUFBR0EsRUFBS3V2QixFQUFnQixPQUFRdnZCLElBQU0sQ0FDbEQsR0FBTSxDQUNKLEtBQUF5TyxFQUNBLEdBQUEzTixDQUNGLEVBQUl5dUIsRUFBZ0J2dkIsQ0FBRSxFQUNoQixDQUNKLEVBQUcydkIsRUFDSCxFQUFHQyxFQUNILEtBQUFuUCxFQUNBLE1BQUFvUCxDQUNGLEVBQUksTUFBTS91QixFQUFHLENBQ1gsRUFBQWdYLEVBQ0EsRUFBQUMsRUFDQSxpQkFBa0I0VSxFQUNsQixVQUFXNkMsRUFDWCxTQUFBSixFQUNBLGVBQUFLLEVBQ0EsTUFBQXZDLEVBQ0EsU0FBVW9DLEVBQ1YsU0FBVSxDQUNSLFVBQUFiLEVBQ0EsU0FBQUMsQ0FDRixDQUNGLENBQUMsRUFDRDVXLEVBQUk2WCxHQUF3QjdYLEVBQzVCQyxFQUFJNlgsR0FBd0I3WCxFQUM1QjBYLEVBQWlCLENBQ2YsR0FBR0EsRUFDSCxDQUFDaGhCLENBQUksRUFBRyxDQUNOLEdBQUdnaEIsRUFBZWhoQixDQUFJLEVBQ3RCLEdBQUdnUyxDQUNMLENBQ0YsRUFDSW9QLEdBQVNILEdBQWMsS0FDekJBLElBQ0ksT0FBT0csR0FBVSxXQUNmQSxFQUFNLFlBQ1JMLEVBQW9CSyxFQUFNLFdBRXhCQSxFQUFNLFFBQ1IzQyxFQUFRMkMsRUFBTSxRQUFVLEdBQU8sTUFBTVAsRUFBVSxnQkFBZ0IsQ0FDN0QsVUFBQWIsRUFDQSxTQUFBQyxFQUNBLFNBQUFVLENBQ0YsQ0FBQyxFQUFJUyxFQUFNLE9BRVosQ0FDQyxFQUFBL1gsRUFDQSxFQUFBQyxDQUNGLEVBQUl5VyxHQUEyQnRCLEVBQU9zQyxFQUFtQnJDLENBQUcsR0FFOURudEIsRUFBSyxHQUVULENBQ0EsTUFBTyxDQUNMLEVBQUE4WCxFQUNBLEVBQUFDLEVBQ0EsVUFBV3lYLEVBQ1gsU0FBQUosRUFDQSxlQUFBSyxDQUNGLENBQ0YsRUFDQSxlQUFlSyxHQUFlaEksRUFBT2xsQixFQUFTLENBQzVDLElBQUltdEIsRUFDQW50QixJQUFZLFNBQ2RBLEVBQVUsQ0FBQyxHQUViLEdBQU0sQ0FDSixFQUFBa1YsRUFDQSxFQUFBQyxFQUNBLFNBQVV1WCxFQUNWLE1BQUFwQyxFQUNBLFNBQUE4QyxFQUNBLFNBQUFaLENBQ0YsRUFBSXRILEVBQ0UsQ0FDSixTQUFBbUksRUFBVyxvQkFDWCxhQUFBQyxFQUFlLFdBQ2YsZUFBQUMsRUFBaUIsV0FDakIsWUFBQUMsRUFBYyxHQUNkLFFBQUEvQixFQUFVLENBQ1osRUFBSTdCLEdBQVM1cEIsRUFBU2tsQixDQUFLLEVBQ3JCdUksRUFBZ0IvQixHQUFpQkQsQ0FBTyxFQUV4Q25hLEVBQVU4YixFQUFTSSxFQURORCxJQUFtQixXQUFhLFlBQWMsV0FDYkEsQ0FBYyxFQUM1REcsRUFBcUIvQixHQUFpQixNQUFNZSxFQUFVLGdCQUFnQixDQUMxRSxTQUFXUyxFQUF3QixNQUFPVCxFQUFVLFdBQWEsS0FBTyxPQUFTQSxFQUFVLFVBQVVwYixDQUFPLEtBQU8sTUFBTzZiLEVBQWdDN2IsRUFBVUEsRUFBUSxnQkFBa0IsTUFBT29iLEVBQVUsb0JBQXNCLEtBQU8sT0FBU0EsRUFBVSxtQkFBbUJVLEVBQVMsUUFBUSxHQUNuUyxTQUFBQyxFQUNBLGFBQUFDLEVBQ0EsU0FBQWQsQ0FDRixDQUFDLENBQUMsRUFDSXhmLEVBQU91Z0IsSUFBbUIsV0FBYSxDQUMzQyxFQUFBclksRUFDQSxFQUFBQyxFQUNBLE1BQU9tVixFQUFNLFNBQVMsTUFDdEIsT0FBUUEsRUFBTSxTQUFTLE1BQ3pCLEVBQUlBLEVBQU0sVUFDSnFELEVBQWUsTUFBT2pCLEVBQVUsaUJBQW1CLEtBQU8sT0FBU0EsRUFBVSxnQkFBZ0JVLEVBQVMsUUFBUSxHQUM5R1EsRUFBYyxNQUFPbEIsRUFBVSxXQUFhLEtBQU8sT0FBU0EsRUFBVSxVQUFVaUIsQ0FBWSxHQUFLLE1BQU9qQixFQUFVLFVBQVksS0FBTyxPQUFTQSxFQUFVLFNBQVNpQixDQUFZLElBQU0sQ0FDdkwsRUFBRyxFQUNILEVBQUcsQ0FDTCxFQUFJLENBQ0YsRUFBRyxFQUNILEVBQUcsQ0FDTCxFQUNNRSxFQUFvQmxDLEdBQWlCZSxFQUFVLHNEQUF3RCxNQUFNQSxFQUFVLHNEQUFzRCxDQUNqTCxTQUFBVSxFQUNBLEtBQUFwZ0IsRUFDQSxhQUFBMmdCLEVBQ0EsU0FBQW5CLENBQ0YsQ0FBQyxFQUFJeGYsQ0FBSSxFQUNULE1BQU8sQ0FDTCxLQUFNMGdCLEVBQW1CLElBQU1HLEVBQWtCLElBQU1KLEVBQWMsS0FBT0csRUFBWSxFQUN4RixRQUFTQyxFQUFrQixPQUFTSCxFQUFtQixPQUFTRCxFQUFjLFFBQVVHLEVBQVksRUFDcEcsTUFBT0YsRUFBbUIsS0FBT0csRUFBa0IsS0FBT0osRUFBYyxNQUFRRyxFQUFZLEVBQzVGLE9BQVFDLEVBQWtCLE1BQVFILEVBQW1CLE1BQVFELEVBQWMsT0FBU0csRUFBWSxDQUNsRyxDQUNGLENBQ0EsSUFBSUUsR0FBUzl0QixJQUFhLENBQ3hCLEtBQU0sUUFDTixRQUFBQSxFQUNBLE1BQU0sR0FBR2tsQixFQUFPLENBQ2QsR0FBTSxDQUNKLEVBQUFoUSxFQUNBLEVBQUFDLEVBQ0EsVUFBQTRVLEVBQ0EsTUFBQU8sRUFDQSxTQUFVb0MsRUFDVixTQUFBVSxFQUNBLGVBQUFQLENBQ0YsRUFBSTNILEVBQ0UsQ0FDSixRQUFBNVQsRUFDQSxRQUFBbWEsRUFBVSxDQUNaLEVBQUk3QixHQUFTNXBCLEVBQVNrbEIsQ0FBSyxHQUFLLENBQUMsRUFDakMsR0FBSTVULEdBQVcsS0FDYixNQUFPLENBQUMsRUFFVixJQUFNbWMsRUFBZ0IvQixHQUFpQkQsQ0FBTyxFQUN4Q1ksRUFBUyxDQUNiLEVBQUFuWCxFQUNBLEVBQUFDLENBQ0YsRUFDTTJCLEVBQU9zVCxHQUFpQkwsQ0FBUyxFQUNqQ3hvQixFQUFTMm9CLEdBQWNwVCxDQUFJLEVBQzNCaVgsRUFBa0IsTUFBTXJCLEVBQVUsY0FBY3BiLENBQU8sRUFDdkQwYyxFQUFVbFgsSUFBUyxJQUNuQm1YLEVBQVVELEVBQVUsTUFBUSxPQUM1QkUsRUFBVUYsRUFBVSxTQUFXLFFBQy9CRyxFQUFhSCxFQUFVLGVBQWlCLGNBQ3hDSSxFQUFVOUQsRUFBTSxVQUFVL29CLENBQU0sRUFBSStvQixFQUFNLFVBQVV4VCxDQUFJLEVBQUl1VixFQUFPdlYsQ0FBSSxFQUFJd1QsRUFBTSxTQUFTL29CLENBQU0sRUFDaEc4c0IsRUFBWWhDLEVBQU92VixDQUFJLEVBQUl3VCxFQUFNLFVBQVV4VCxDQUFJLEVBQy9Dd1gsRUFBb0IsTUFBTzVCLEVBQVUsaUJBQW1CLEtBQU8sT0FBU0EsRUFBVSxnQkFBZ0JwYixDQUFPLEdBQzNHaWQsRUFBYUQsRUFBb0JBLEVBQWtCSCxDQUFVLEVBQUksR0FDakUsQ0FBQ0ksR0FBYyxDQUFDLE1BQU83QixFQUFVLFdBQWEsS0FBTyxPQUFTQSxFQUFVLFVBQVU0QixDQUFpQixNQUNyR0MsRUFBYW5CLEVBQVMsU0FBU2UsQ0FBVSxHQUFLN0QsRUFBTSxTQUFTL29CLENBQU0sR0FFckUsSUFBTWl0QixFQUFvQkosRUFBVSxFQUFJQyxFQUFZLEVBQzlDSSxFQUF5QkYsRUFBYSxFQUFJUixFQUFnQnhzQixDQUFNLEVBQUksRUFBSSxFQUN4RW10QixFQUFheEYsR0FBSXVFLEVBQWNRLENBQU8sRUFBR1EsQ0FBc0IsRUFDL0RFLEVBQWF6RixHQUFJdUUsRUFBY1MsQ0FBTyxFQUFHTyxDQUFzQixFQUMvREcsRUFBUUYsRUFDUkcsR0FBT04sRUFBYVIsRUFBZ0J4c0IsQ0FBTSxFQUFJb3RCLEVBQzlDRyxHQUFTUCxFQUFhLEVBQUlSLEVBQWdCeHNCLENBQU0sRUFBSSxFQUFJaXRCLEVBQ3hETyxHQUFVdEYsR0FBT21GLEVBQU9FLEdBQVFELEVBQUksRUFDcENHLEdBQWtCLENBQUNuQyxFQUFlLE9BQVM3QyxHQUFhRCxDQUFTLEdBQUssTUFBUStFLEtBQVdDLElBQVd6RSxFQUFNLFVBQVUvb0IsQ0FBTSxFQUFJLEdBQUt1dEIsR0FBU0YsRUFBUUYsRUFBYUMsR0FBY1osRUFBZ0J4c0IsQ0FBTSxFQUFJLEVBQUksRUFDN00wdEIsR0FBa0JELEdBQWtCRixHQUFTRixFQUFRRSxHQUFTRixFQUFRRSxHQUFTRCxHQUFPLEVBQzVGLE1BQU8sQ0FDTCxDQUFDL1gsQ0FBSSxFQUFHdVYsRUFBT3ZWLENBQUksRUFBSW1ZLEdBQ3ZCLEtBQU0sQ0FDSixDQUFDblksQ0FBSSxFQUFHaVksR0FDUixhQUFjRCxHQUFTQyxHQUFVRSxHQUNqQyxHQUFHRCxJQUFtQixDQUNwQixnQkFBQUMsRUFDRixDQUNGLEVBQ0EsTUFBT0QsRUFDVCxDQUNGLENBQ0YsR0FDSUUsR0FBTyxTQUFTbHZCLEVBQVMsQ0FDM0IsT0FBSUEsSUFBWSxTQUNkQSxFQUFVLENBQUMsR0FFTixDQUNMLEtBQU0sT0FDTixRQUFBQSxFQUNBLE1BQU0sR0FBR2tsQixFQUFPLENBQ2QsSUFBSWlLLEVBQXVCQyxFQUMzQixHQUFNLENBQ0osVUFBQXJGLEVBQ0EsZUFBQThDLEVBQ0EsTUFBQXZDLEVBQ0EsaUJBQUErRSxFQUNBLFNBQVUzQyxFQUNWLFNBQUFVLENBQ0YsRUFBSWxJLEVBQ0UsQ0FDSixTQUFVb0ssRUFBZ0IsR0FDMUIsVUFBV0MsRUFBaUIsR0FDNUIsbUJBQW9CQyxFQUNwQixpQkFBQUMsRUFBbUIsVUFDbkIsMEJBQUFDLEVBQTRCLE9BQzVCLGNBQUFuRSxFQUFnQixHQUNoQixHQUFHb0UsQ0FDTCxFQUFJL0YsR0FBUzVwQixFQUFTa2xCLENBQUssRUFDM0IsSUFBS2lLLEVBQXdCdEMsRUFBZSxRQUFVLE1BQVFzQyxFQUFzQixnQkFDbEYsTUFBTyxDQUFDLEVBRVYsSUFBTW5FLEVBQU9sQixHQUFRQyxDQUFTLEVBQ3hCNkYsRUFBa0J6RixHQUFZa0YsQ0FBZ0IsRUFDOUNRLEVBQWtCL0YsR0FBUXVGLENBQWdCLElBQU1BLEVBQ2hEOUUsRUFBTSxNQUFPbUMsRUFBVSxPQUFTLEtBQU8sT0FBU0EsRUFBVSxNQUFNVSxFQUFTLFFBQVEsR0FDakYwQyxFQUFxQk4sSUFBZ0NLLEdBQW1CLENBQUN0RSxFQUFnQixDQUFDWixHQUFxQjBFLENBQWdCLENBQUMsRUFBSXpFLEdBQXNCeUUsQ0FBZ0IsR0FDMUtVLEVBQStCTCxJQUE4QixPQUMvRCxDQUFDRixHQUErQk8sR0FDbENELEVBQW1CLEtBQUssR0FBR3hFLEdBQTBCK0QsRUFBa0I5RCxFQUFlbUUsRUFBMkJuRixDQUFHLENBQUMsRUFFdkgsSUFBTXlGLEVBQWMsQ0FBQ1gsRUFBa0IsR0FBR1MsQ0FBa0IsRUFDdERHLEVBQVcsTUFBTS9DLEdBQWVoSSxFQUFPeUssQ0FBcUIsRUFDNURPLEVBQVksQ0FBQyxFQUNmQyxJQUFrQmYsRUFBdUJ2QyxFQUFlLE9BQVMsS0FBTyxPQUFTdUMsRUFBcUIsWUFBYyxDQUFDLEVBSXpILEdBSElFLEdBQ0ZZLEVBQVUsS0FBS0QsRUFBU2pGLENBQUksQ0FBQyxFQUUzQnVFLEVBQWdCLENBQ2xCLElBQU1hLEdBQVMvRixHQUFrQk4sRUFBV08sRUFBT0MsQ0FBRyxFQUN0RDJGLEVBQVUsS0FBS0QsRUFBU0csR0FBTyxDQUFDLENBQUMsRUFBR0gsRUFBU0csR0FBTyxDQUFDLENBQUMsQ0FBQyxDQUN6RCxDQUtBLEdBSkFELEVBQWdCLENBQUMsR0FBR0EsRUFBZSxDQUNqQyxVQUFBcEcsRUFDQSxVQUFBbUcsQ0FDRixDQUFDLEVBQ0csQ0FBQ0EsRUFBVSxNQUFPRyxJQUFVQSxJQUFTLENBQUMsRUFBRyxDQUMzQyxJQUFJQyxFQUF1QkMsRUFDM0IsSUFBTUMsTUFBZUYsRUFBd0J6RCxFQUFlLE9BQVMsS0FBTyxPQUFTeUQsRUFBc0IsUUFBVSxHQUFLLEVBQ3BIRyxHQUFnQlQsRUFBWVEsRUFBUyxFQUMzQyxHQUFJQyxHQUNGLE1BQU8sQ0FDTCxLQUFNLENBQ0osTUFBT0QsR0FDUCxVQUFXTCxDQUNiLEVBQ0EsTUFBTyxDQUNMLFVBQVdNLEVBQ2IsQ0FDRixFQUVGLElBQUlDLElBQWtCSCxFQUF3QkosRUFBYyxPQUFRbG5CLElBQU1BLEdBQUUsVUFBVSxDQUFDLEdBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQ1YsR0FBSTJILEtBQU8zSCxHQUFHLFVBQVUsQ0FBQyxFQUFJMkgsR0FBRyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBTSxLQUFPLE9BQVNxZ0IsRUFBc0IsVUFDaE0sR0FBSSxDQUFDRyxHQUNILE9BQVFqQixFQUFrQixDQUN4QixJQUFLLFVBQVcsQ0FDZCxJQUFJa0IsR0FDSixJQUFNQyxJQUFjRCxHQUF5QlIsRUFBYyxPQUFRbG5CLElBQU0sQ0FDdkUsR0FBSThtQixFQUE4QixDQUNoQyxJQUFNYyxHQUFrQjFHLEdBQVlsaEIsR0FBRSxTQUFTLEVBQy9DLE9BQU80bkIsS0FBb0JqQixHQUUzQmlCLEtBQW9CLEdBQ3RCLENBQ0EsTUFBTyxFQUNULENBQUMsRUFBRSxJQUFLNW5CLElBQU0sQ0FBQ0EsR0FBRSxVQUFXQSxHQUFFLFVBQVUsT0FBUTZuQixJQUFjQSxHQUFZLENBQUMsRUFBRSxPQUFPLENBQUNDLEdBQUtELEtBQWNDLEdBQU1ELEdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUN2b0IsR0FBSTJILEtBQU8zSCxHQUFHLENBQUMsRUFBSTJILEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFNLEtBQU8sT0FBU3lnQixHQUF1QixDQUFDLEVBQ3pNQyxLQUNGRixHQUFpQkUsSUFFbkIsS0FDRixDQUNBLElBQUssbUJBQ0hGLEdBQWlCckIsRUFDakIsS0FDSixDQUVGLEdBQUl0RixJQUFjMkcsR0FDaEIsTUFBTyxDQUNMLE1BQU8sQ0FDTCxVQUFXQSxFQUNiLENBQ0YsQ0FFSixDQUNBLE1BQU8sQ0FBQyxDQUNWLENBQ0YsQ0FDRixFQUNBLFNBQVNNLEdBQWVmLEVBQVVqakIsRUFBTSxDQUN0QyxNQUFPLENBQ0wsSUFBS2lqQixFQUFTLElBQU1qakIsRUFBSyxPQUN6QixNQUFPaWpCLEVBQVMsTUFBUWpqQixFQUFLLE1BQzdCLE9BQVFpakIsRUFBUyxPQUFTampCLEVBQUssT0FDL0IsS0FBTWlqQixFQUFTLEtBQU9qakIsRUFBSyxLQUM3QixDQUNGLENBQ0EsU0FBU2lrQixHQUFzQmhCLEVBQVUsQ0FDdkMsT0FBT2hILEdBQU0sS0FBTStCLEdBQVNpRixFQUFTakYsQ0FBSSxHQUFLLENBQUMsQ0FDakQsQ0FDQSxJQUFJa0csR0FBTyxTQUFTbHhCLEVBQVMsQ0FDM0IsT0FBSUEsSUFBWSxTQUNkQSxFQUFVLENBQUMsR0FFTixDQUNMLEtBQU0sT0FDTixRQUFBQSxFQUNBLE1BQU0sR0FBR2tsQixFQUFPLENBQ2QsR0FBTSxDQUNKLE1BQUFvRixDQUNGLEVBQUlwRixFQUNFLENBQ0osU0FBQXNILEVBQVcsa0JBQ1gsR0FBR21ELENBQ0wsRUFBSS9GLEdBQVM1cEIsRUFBU2tsQixDQUFLLEVBQzNCLE9BQVFzSCxFQUFVLENBQ2hCLElBQUssa0JBQW1CLENBQ3RCLElBQU15RCxFQUFXLE1BQU0vQyxHQUFlaEksRUFBTyxDQUMzQyxHQUFHeUssRUFDSCxlQUFnQixXQUNsQixDQUFDLEVBQ0t3QixFQUFVSCxHQUFlZixFQUFVM0YsRUFBTSxTQUFTLEVBQ3hELE1BQU8sQ0FDTCxLQUFNLENBQ0osdUJBQXdCNkcsRUFDeEIsZ0JBQWlCRixHQUFzQkUsQ0FBTyxDQUNoRCxDQUNGLENBQ0YsQ0FDQSxJQUFLLFVBQVcsQ0FDZCxJQUFNbEIsRUFBVyxNQUFNL0MsR0FBZWhJLEVBQU8sQ0FDM0MsR0FBR3lLLEVBQ0gsWUFBYSxFQUNmLENBQUMsRUFDS3dCLEVBQVVILEdBQWVmLEVBQVUzRixFQUFNLFFBQVEsRUFDdkQsTUFBTyxDQUNMLEtBQU0sQ0FDSixlQUFnQjZHLEVBQ2hCLFFBQVNGLEdBQXNCRSxDQUFPLENBQ3hDLENBQ0YsQ0FDRixDQUNBLFFBQ0UsTUFBTyxDQUFDLENBRVosQ0FDRixDQUNGLENBQ0YsRUFDQSxlQUFlQyxHQUFxQmxNLEVBQU9sbEIsRUFBUyxDQUNsRCxHQUFNLENBQ0osVUFBQStwQixFQUNBLFNBQVUyQyxFQUNWLFNBQUFVLENBQ0YsRUFBSWxJLEVBQ0VxRixFQUFNLE1BQU9tQyxFQUFVLE9BQVMsS0FBTyxPQUFTQSxFQUFVLE1BQU1VLEVBQVMsUUFBUSxHQUNqRnBDLEVBQU9sQixHQUFRQyxDQUFTLEVBQ3hCUyxFQUFZUixHQUFhRCxDQUFTLEVBQ2xDa0MsRUFBYTlCLEdBQVlKLENBQVMsSUFBTSxJQUN4Q3NILEVBQWdCLENBQUMsT0FBUSxLQUFLLEVBQUUsU0FBU3JHLENBQUksRUFBSSxHQUFLLEVBQ3REc0csRUFBaUIvRyxHQUFPMEIsRUFBYSxHQUFLLEVBQzFDc0YsRUFBVzNILEdBQVM1cEIsRUFBU2tsQixDQUFLLEVBQ3BDLENBQ0YsU0FBQXNNLEVBQ0EsVUFBQUMsRUFDQSxjQUFBaEgsQ0FDRixFQUFJLE9BQU84RyxHQUFhLFNBQVcsQ0FDakMsU0FBVUEsRUFDVixVQUFXLEVBQ1gsY0FBZSxJQUNqQixFQUFJLENBQ0YsU0FBVSxFQUNWLFVBQVcsRUFDWCxjQUFlLEtBQ2YsR0FBR0EsQ0FDTCxFQUNBLE9BQUkvRyxHQUFhLE9BQU9DLEdBQWtCLFdBQ3hDZ0gsRUFBWWpILElBQWMsTUFBUUMsRUFBZ0IsR0FBS0EsR0FFbER3QixFQUFhLENBQ2xCLEVBQUd3RixFQUFZSCxFQUNmLEVBQUdFLEVBQVdILENBQ2hCLEVBQUksQ0FDRixFQUFHRyxFQUFXSCxFQUNkLEVBQUdJLEVBQVlILENBQ2pCLENBQ0YsQ0FDQSxJQUFJSSxHQUFTLFNBQVMxeEIsRUFBUyxDQUM3QixPQUFJQSxJQUFZLFNBQ2RBLEVBQVUsR0FFTCxDQUNMLEtBQU0sU0FDTixRQUFBQSxFQUNBLE1BQU0sR0FBR2tsQixFQUFPLENBQ2QsSUFBSXlNLEVBQXVCeEMsRUFDM0IsR0FBTSxDQUNKLEVBQUFqYSxFQUNBLEVBQUFDLEVBQ0EsVUFBQTRVLEVBQ0EsZUFBQThDLENBQ0YsRUFBSTNILEVBQ0UwTSxFQUFhLE1BQU1SLEdBQXFCbE0sRUFBT2xsQixDQUFPLEVBQzVELE9BQUkrcEIsTUFBZ0I0SCxFQUF3QjlFLEVBQWUsU0FBVyxLQUFPLE9BQVM4RSxFQUFzQixhQUFleEMsRUFBd0J0QyxFQUFlLFFBQVUsTUFBUXNDLEVBQXNCLGdCQUNqTSxDQUFDLEVBRUgsQ0FDTCxFQUFHamEsRUFBSTBjLEVBQVcsRUFDbEIsRUFBR3pjLEVBQUl5YyxFQUFXLEVBQ2xCLEtBQU0sQ0FDSixHQUFHQSxFQUNILFVBQUE3SCxDQUNGLENBQ0YsQ0FDRixDQUNGLENBQ0YsRUFDSThILEdBQVEsU0FBUzd4QixFQUFTLENBQzVCLE9BQUlBLElBQVksU0FDZEEsRUFBVSxDQUFDLEdBRU4sQ0FDTCxLQUFNLFFBQ04sUUFBQUEsRUFDQSxNQUFNLEdBQUdrbEIsRUFBTyxDQUNkLEdBQU0sQ0FDSixFQUFBaFEsRUFDQSxFQUFBQyxFQUNBLFVBQUE0VSxDQUNGLEVBQUk3RSxFQUNFLENBQ0osU0FBVW9LLEVBQWdCLEdBQzFCLFVBQVdDLEVBQWlCLEdBQzVCLFFBQUF1QyxFQUFVLENBQ1IsR0FBSzVxQixHQUFTLENBQ1osR0FBSSxDQUNGLEVBQUc2cUIsRUFDSCxFQUFHQyxDQUNMLEVBQUk5cUIsRUFDSixNQUFPLENBQ0wsRUFBRzZxQixFQUNILEVBQUdDLENBQ0wsQ0FDRixDQUNGLEVBQ0EsR0FBR3JDLENBQ0wsRUFBSS9GLEdBQVM1cEIsRUFBU2tsQixDQUFLLEVBQ3JCbUgsRUFBUyxDQUNiLEVBQUFuWCxFQUNBLEVBQUFDLENBQ0YsRUFDTThhLEVBQVcsTUFBTS9DLEdBQWVoSSxFQUFPeUssQ0FBcUIsRUFDNUQ4QixFQUFZdEgsR0FBWUwsR0FBUUMsQ0FBUyxDQUFDLEVBQzFDeUgsRUFBV3ZILEdBQWdCd0gsQ0FBUyxFQUN0Q1EsRUFBZ0I1RixFQUFPbUYsQ0FBUSxFQUMvQlUsRUFBaUI3RixFQUFPb0YsQ0FBUyxFQUNyQyxHQUFJbkMsRUFBZSxDQUNqQixJQUFNNkMsRUFBVVgsSUFBYSxJQUFNLE1BQVEsT0FDckNZLEVBQVVaLElBQWEsSUFBTSxTQUFXLFFBQ3hDYSxFQUFPSixFQUFnQmhDLEVBQVNrQyxDQUFPLEVBQ3ZDdEQsRUFBT29ELEVBQWdCaEMsRUFBU21DLENBQU8sRUFDN0NILEVBQWdCeEksR0FBTzRJLEVBQU1KLEVBQWVwRCxDQUFJLENBQ2xELENBQ0EsR0FBSVUsRUFBZ0IsQ0FDbEIsSUFBTTRDLEVBQVVWLElBQWMsSUFBTSxNQUFRLE9BQ3RDVyxFQUFVWCxJQUFjLElBQU0sU0FBVyxRQUN6Q1ksRUFBT0gsRUFBaUJqQyxFQUFTa0MsQ0FBTyxFQUN4Q3RELEVBQU9xRCxFQUFpQmpDLEVBQVNtQyxDQUFPLEVBQzlDRixFQUFpQnpJLEdBQU80SSxFQUFNSCxFQUFnQnJELENBQUksQ0FDcEQsQ0FDQSxJQUFNeUQsRUFBZ0JSLEVBQVEsR0FBRyxDQUMvQixHQUFHNU0sRUFDSCxDQUFDc00sQ0FBUSxFQUFHUyxFQUNaLENBQUNSLENBQVMsRUFBR1MsQ0FDZixDQUFDLEVBQ0QsTUFBTyxDQUNMLEdBQUdJLEVBQ0gsS0FBTSxDQUNKLEVBQUdBLEVBQWMsRUFBSXBkLEVBQ3JCLEVBQUdvZCxFQUFjLEVBQUluZCxDQUN2QixDQUNGLENBQ0YsQ0FDRixDQUNGLEVBQ0lvZCxHQUFPLFNBQVN2eUIsRUFBUyxDQUMzQixPQUFJQSxJQUFZLFNBQ2RBLEVBQVUsQ0FBQyxHQUVOLENBQ0wsS0FBTSxPQUNOLFFBQUFBLEVBQ0EsTUFBTSxHQUFHa2xCLEVBQU8sQ0FDZCxHQUFNLENBQ0osVUFBQTZFLEVBQ0EsTUFBQU8sRUFDQSxTQUFVb0MsRUFDVixTQUFBVSxDQUNGLEVBQUlsSSxFQUNFLENBQ0osTUFBQXNOLEVBQVEsSUFBTSxDQUNkLEVBQ0EsR0FBRzdDLENBQ0wsRUFBSS9GLEdBQVM1cEIsRUFBU2tsQixDQUFLLEVBQ3JCK0ssRUFBVyxNQUFNL0MsR0FBZWhJLEVBQU95SyxDQUFxQixFQUM1RDNFLEVBQU9sQixHQUFRQyxDQUFTLEVBQ3hCUyxFQUFZUixHQUFhRCxDQUFTLEVBQ2xDaUUsRUFBVTdELEdBQVlKLENBQVMsSUFBTSxJQUNyQyxDQUNKLE1BQUE3bUIsRUFDQSxPQUFBQyxDQUNGLEVBQUltbkIsRUFBTSxTQUNObUksRUFDQUMsRUFDQTFILElBQVMsT0FBU0EsSUFBUyxVQUM3QnlILEVBQWF6SCxFQUNiMEgsRUFBWWxJLEtBQWUsTUFBT2tDLEVBQVUsT0FBUyxLQUFPLE9BQVNBLEVBQVUsTUFBTVUsRUFBUyxRQUFRLEdBQUssUUFBVSxPQUFTLE9BQVMsVUFFdklzRixFQUFZMUgsRUFDWnlILEVBQWFqSSxJQUFjLE1BQVEsTUFBUSxVQUU3QyxJQUFNbUksRUFBd0J4dkIsRUFBUzhzQixFQUFTLElBQU1BLEVBQVMsT0FDekQyQyxFQUF1QjF2QixFQUFRK3NCLEVBQVMsS0FBT0EsRUFBUyxNQUN4RDRDLEVBQTBCM0osR0FBSS9sQixFQUFTOHNCLEVBQVN3QyxDQUFVLEVBQUdFLENBQXFCLEVBQ2xGRyxFQUF5QjVKLEdBQUlobUIsRUFBUStzQixFQUFTeUMsQ0FBUyxFQUFHRSxDQUFvQixFQUM5RUcsRUFBVSxDQUFDN04sRUFBTSxlQUFlLE1BQ2xDOE4sRUFBa0JILEVBQ2xCSSxFQUFpQkgsRUFNckIsR0FMSTlFLEVBQ0ZpRixFQUFpQnpJLEdBQWF1SSxFQUFVN0osR0FBSTRKLEVBQXdCRixDQUFvQixFQUFJQSxFQUU1RkksRUFBa0J4SSxHQUFhdUksRUFBVTdKLEdBQUkySixFQUF5QkYsQ0FBcUIsRUFBSUEsRUFFN0ZJLEdBQVcsQ0FBQ3ZJLEVBQVcsQ0FDekIsSUFBTTBJLEVBQU8vSixHQUFJOEcsRUFBUyxLQUFNLENBQUMsRUFDM0JrRCxFQUFPaEssR0FBSThHLEVBQVMsTUFBTyxDQUFDLEVBQzVCbUQsRUFBT2pLLEdBQUk4RyxFQUFTLElBQUssQ0FBQyxFQUMxQm9ELEVBQU9sSyxHQUFJOEcsRUFBUyxPQUFRLENBQUMsRUFDL0JqQyxFQUNGaUYsRUFBaUIvdkIsRUFBUSxHQUFLZ3dCLElBQVMsR0FBS0MsSUFBUyxFQUFJRCxFQUFPQyxFQUFPaEssR0FBSThHLEVBQVMsS0FBTUEsRUFBUyxLQUFLLEdBRXhHK0MsRUFBa0I3dkIsRUFBUyxHQUFLaXdCLElBQVMsR0FBS0MsSUFBUyxFQUFJRCxFQUFPQyxFQUFPbEssR0FBSThHLEVBQVMsSUFBS0EsRUFBUyxNQUFNLEVBRTlHLENBQ0EsTUFBTXVDLEVBQU0sQ0FDVixHQUFHdE4sRUFDSCxlQUFBK04sRUFDQSxnQkFBQUQsQ0FDRixDQUFDLEVBQ0QsSUFBTU0sRUFBaUIsTUFBTTVHLEVBQVUsY0FBY1UsRUFBUyxRQUFRLEVBQ3RFLE9BQUlscUIsSUFBVW93QixFQUFlLE9BQVNud0IsSUFBV213QixFQUFlLE9BQ3ZELENBQ0wsTUFBTyxDQUNMLE1BQU8sRUFDVCxDQUNGLEVBRUssQ0FBQyxDQUNWLENBQ0YsQ0FDRixFQUdBLFNBQVNDLEdBQVkzekIsRUFBTSxDQUN6QixPQUFJNHpCLEdBQU81ekIsQ0FBSSxHQUNMQSxFQUFLLFVBQVksSUFBSSxZQUFZLEVBRXBDLFdBQ1QsQ0FDQSxTQUFTNnpCLEdBQVc3ekIsRUFBTSxDQUN4QixJQUFJOHpCLEVBQ0osT0FBUTl6QixHQUFRLE9BQVM4ekIsRUFBc0I5ekIsRUFBSyxnQkFBa0IsS0FBTyxPQUFTOHpCLEVBQW9CLGNBQWdCLE1BQzVILENBQ0EsU0FBU0MsR0FBbUIvekIsRUFBTSxDQUNoQyxJQUFJc0gsRUFDSixPQUFRQSxHQUFRc3NCLEdBQU81ekIsQ0FBSSxFQUFJQSxFQUFLLGNBQWdCQSxFQUFLLFdBQWEsT0FBTyxXQUFhLEtBQU8sT0FBU3NILEVBQUssZUFDakgsQ0FDQSxTQUFTc3NCLEdBQU8xMUIsRUFBTyxDQUNyQixPQUFPQSxhQUFpQixNQUFRQSxhQUFpQjIxQixHQUFXMzFCLENBQUssRUFBRSxJQUNyRSxDQUNBLFNBQVM4MUIsR0FBVTkxQixFQUFPLENBQ3hCLE9BQU9BLGFBQWlCLFNBQVdBLGFBQWlCMjFCLEdBQVczMUIsQ0FBSyxFQUFFLE9BQ3hFLENBQ0EsU0FBUysxQixHQUFjLzFCLEVBQU8sQ0FDNUIsT0FBT0EsYUFBaUIsYUFBZUEsYUFBaUIyMUIsR0FBVzMxQixDQUFLLEVBQUUsV0FDNUUsQ0FDQSxTQUFTZzJCLEdBQWFoMkIsRUFBTyxDQUMzQixPQUFJLE9BQU8sV0FBZSxJQUNqQixHQUVGQSxhQUFpQixZQUFjQSxhQUFpQjIxQixHQUFXMzFCLENBQUssRUFBRSxVQUMzRSxDQUNBLFNBQVNpMkIsR0FBa0J6aUIsRUFBUyxDQUNsQyxHQUFNLENBQ0osU0FBQTJlLEVBQ0EsVUFBQStELEVBQ0EsVUFBQUMsRUFDQSxRQUFBamdCLENBQ0YsRUFBSWtnQixHQUFrQjVpQixDQUFPLEVBQzdCLE1BQU8sa0NBQWtDLEtBQUsyZSxFQUFXZ0UsRUFBWUQsQ0FBUyxHQUFLLENBQUMsQ0FBQyxTQUFVLFVBQVUsRUFBRSxTQUFTaGdCLENBQU8sQ0FDN0gsQ0FDQSxTQUFTbWdCLEdBQWU3aUIsRUFBUyxDQUMvQixNQUFPLENBQUMsUUFBUyxLQUFNLElBQUksRUFBRSxTQUFTaWlCLEdBQVlqaUIsQ0FBTyxDQUFDLENBQzVELENBQ0EsU0FBUzhpQixHQUFXOWlCLEVBQVMsQ0FDM0IsTUFBTyxDQUFDLGdCQUFpQixRQUFRLEVBQUUsS0FBTW9ELEdBQWEsQ0FDcEQsR0FBSSxDQUNGLE9BQU9wRCxFQUFRLFFBQVFvRCxDQUFRLENBQ2pDLE1BQWEsQ0FDWCxNQUFPLEVBQ1QsQ0FDRixDQUFDLENBQ0gsQ0FDQSxTQUFTMmYsR0FBa0JDLEVBQWMsQ0FDdkMsSUFBTUMsRUFBU0MsR0FBUyxFQUNsQkMsRUFBTWIsR0FBVVUsQ0FBWSxFQUFJSixHQUFrQkksQ0FBWSxFQUFJQSxFQUN4RSxPQUFPRyxFQUFJLFlBQWMsUUFBVUEsRUFBSSxjQUFnQixTQUFXQSxFQUFJLGNBQWdCQSxFQUFJLGdCQUFrQixTQUFXLEtBQVUsQ0FBQ0YsSUFBV0UsRUFBSSxlQUFpQkEsRUFBSSxpQkFBbUIsT0FBUyxLQUFVLENBQUNGLElBQVdFLEVBQUksT0FBU0EsRUFBSSxTQUFXLE9BQVMsS0FBVSxDQUFDLFlBQWEsY0FBZSxRQUFRLEVBQUUsS0FBTTMyQixJQUFXMjJCLEVBQUksWUFBYyxJQUFJLFNBQVMzMkIsQ0FBSyxDQUFDLEdBQUssQ0FBQyxRQUFTLFNBQVUsU0FBVSxTQUFTLEVBQUUsS0FBTUEsSUFBVzIyQixFQUFJLFNBQVcsSUFBSSxTQUFTMzJCLENBQUssQ0FBQyxDQUN2YyxDQUNBLFNBQVM0MkIsR0FBbUJwakIsRUFBUyxDQUNuQyxJQUFJcWpCLEVBQWNDLEdBQWN0akIsQ0FBTyxFQUN2QyxLQUFPdWlCLEdBQWNjLENBQVcsR0FBSyxDQUFDRSxHQUFzQkYsQ0FBVyxHQUFHLENBQ3hFLEdBQUlOLEdBQWtCTSxDQUFXLEVBQy9CLE9BQU9BLEVBQ0YsR0FBSVAsR0FBV08sQ0FBVyxFQUMvQixPQUFPLEtBRVRBLEVBQWNDLEdBQWNELENBQVcsQ0FDekMsQ0FDQSxPQUFPLElBQ1QsQ0FDQSxTQUFTSCxJQUFXLENBQ2xCLE9BQUksT0FBTyxJQUFRLEtBQWUsQ0FBQyxJQUFJLFNBQWlCLEdBQ2pELElBQUksU0FBUywwQkFBMkIsTUFBTSxDQUN2RCxDQUNBLFNBQVNLLEdBQXNCajFCLEVBQU0sQ0FDbkMsTUFBTyxDQUFDLE9BQVEsT0FBUSxXQUFXLEVBQUUsU0FBUzJ6QixHQUFZM3pCLENBQUksQ0FBQyxDQUNqRSxDQUNBLFNBQVNzMEIsR0FBa0I1aUIsRUFBUyxDQUNsQyxPQUFPbWlCLEdBQVduaUIsQ0FBTyxFQUFFLGlCQUFpQkEsQ0FBTyxDQUNyRCxDQUNBLFNBQVN3akIsR0FBY3hqQixFQUFTLENBQzlCLE9BQUlzaUIsR0FBVXRpQixDQUFPLEVBQ1osQ0FDTCxXQUFZQSxFQUFRLFdBQ3BCLFVBQVdBLEVBQVEsU0FDckIsRUFFSyxDQUNMLFdBQVlBLEVBQVEsUUFDcEIsVUFBV0EsRUFBUSxPQUNyQixDQUNGLENBQ0EsU0FBU3NqQixHQUFjaDFCLEVBQU0sQ0FDM0IsR0FBSTJ6QixHQUFZM3pCLENBQUksSUFBTSxPQUN4QixPQUFPQSxFQUVULElBQU1DLEVBRUpELEVBQUssY0FDTEEsRUFBSyxZQUNMazBCLEdBQWFsMEIsQ0FBSSxHQUFLQSxFQUFLLE1BQzNCK3pCLEdBQW1CL3pCLENBQUksRUFFekIsT0FBT2swQixHQUFhajBCLENBQU0sRUFBSUEsRUFBTyxLQUFPQSxDQUM5QyxDQUNBLFNBQVNrMUIsR0FBMkJuMUIsRUFBTSxDQUN4QyxJQUFNbzFCLEVBQWFKLEdBQWNoMUIsQ0FBSSxFQUNyQyxPQUFJaTFCLEdBQXNCRyxDQUFVLEVBQzNCcDFCLEVBQUssY0FBZ0JBLEVBQUssY0FBYyxLQUFPQSxFQUFLLEtBRXpEaTBCLEdBQWNtQixDQUFVLEdBQUtqQixHQUFrQmlCLENBQVUsRUFDcERBLEVBRUZELEdBQTJCQyxDQUFVLENBQzlDLENBQ0EsU0FBU0MsR0FBcUJyMUIsRUFBTWlOLEVBQU1xb0IsRUFBaUIsQ0FDekQsSUFBSUMsRUFDQXRvQixJQUFTLFNBQ1hBLEVBQU8sQ0FBQyxHQUVOcW9CLElBQW9CLFNBQ3RCQSxFQUFrQixJQUVwQixJQUFNRSxFQUFxQkwsR0FBMkJuMUIsQ0FBSSxFQUNwRHkxQixFQUFTRCxNQUF5QkQsRUFBdUJ2MUIsRUFBSyxnQkFBa0IsS0FBTyxPQUFTdTFCLEVBQXFCLE1BQ3JIRyxFQUFNN0IsR0FBVzJCLENBQWtCLEVBQ3pDLE9BQUlDLEVBQ0t4b0IsRUFBSyxPQUFPeW9CLEVBQUtBLEVBQUksZ0JBQWtCLENBQUMsRUFBR3ZCLEdBQWtCcUIsQ0FBa0IsRUFBSUEsRUFBcUIsQ0FBQyxFQUFHRSxFQUFJLGNBQWdCSixFQUFrQkQsR0FBcUJLLEVBQUksWUFBWSxFQUFJLENBQUMsQ0FBQyxFQUUvTHpvQixFQUFLLE9BQU91b0IsRUFBb0JILEdBQXFCRyxFQUFvQixDQUFDLEVBQUdGLENBQWUsQ0FBQyxDQUN0RyxDQUdBLFNBQVNLLEdBQWlCamtCLEVBQVMsQ0FDakMsSUFBTW1qQixFQUFNUCxHQUFrQjVpQixDQUFPLEVBQ2pDcE8sRUFBUSxXQUFXdXhCLEVBQUksS0FBSyxHQUFLLEVBQ2pDdHhCLEVBQVMsV0FBV3N4QixFQUFJLE1BQU0sR0FBSyxFQUNqQ2UsRUFBWTNCLEdBQWN2aUIsQ0FBTyxFQUNqQ21rQixFQUFjRCxFQUFZbGtCLEVBQVEsWUFBY3BPLEVBQ2hEd3lCLEVBQWVGLEVBQVlsa0IsRUFBUSxhQUFlbk8sRUFDbER3eUIsRUFBaUJ2TSxHQUFNbG1CLENBQUssSUFBTXV5QixHQUFlck0sR0FBTWptQixDQUFNLElBQU11eUIsRUFDekUsT0FBSUMsSUFDRnp5QixFQUFRdXlCLEVBQ1J0eUIsRUFBU3V5QixHQUVKLENBQ0wsTUFBQXh5QixFQUNBLE9BQUFDLEVBQ0EsRUFBR3d5QixDQUNMLENBQ0YsQ0FDQSxTQUFTQyxHQUFjdGtCLEVBQVMsQ0FDOUIsT0FBUXNpQixHQUFVdGlCLENBQU8sRUFBNkJBLEVBQXpCQSxFQUFRLGNBQ3ZDLENBQ0EsU0FBU3VrQixHQUFTdmtCLEVBQVMsQ0FDekIsSUFBTXdrQixFQUFhRixHQUFjdGtCLENBQU8sRUFDeEMsR0FBSSxDQUFDdWlCLEdBQWNpQyxDQUFVLEVBQzNCLE9BQU94TSxHQUFhLENBQUMsRUFFdkIsSUFBTXRjLEVBQU84b0IsRUFBVyxzQkFBc0IsRUFDeEMsQ0FDSixNQUFBNXlCLEVBQ0EsT0FBQUMsRUFDQSxFQUFBNHlCLENBQ0YsRUFBSVIsR0FBaUJPLENBQVUsRUFDM0I1Z0IsR0FBSzZnQixFQUFJM00sR0FBTXBjLEVBQUssS0FBSyxFQUFJQSxFQUFLLE9BQVM5SixFQUMzQ2lTLEdBQUs0Z0IsRUFBSTNNLEdBQU1wYyxFQUFLLE1BQU0sRUFBSUEsRUFBSyxRQUFVN0osRUFDakQsT0FBSSxDQUFDK1IsR0FBSyxDQUFDLE9BQU8sU0FBU0EsQ0FBQyxLQUMxQkEsRUFBSSxJQUVGLENBQUNDLEdBQUssQ0FBQyxPQUFPLFNBQVNBLENBQUMsS0FDMUJBLEVBQUksR0FFQyxDQUNMLEVBQUFELEVBQ0EsRUFBQUMsQ0FDRixDQUNGLENBQ0EsSUFBSTZnQixHQUE0QjFNLEdBQWEsQ0FBQyxFQUM5QyxTQUFTMk0sR0FBaUIza0IsRUFBUyxDQUNqQyxJQUFNZ2tCLEVBQU03QixHQUFXbmlCLENBQU8sRUFDOUIsTUFBSSxDQUFDa2pCLEdBQVMsR0FBSyxDQUFDYyxFQUFJLGVBQ2ZVLEdBRUYsQ0FDTCxFQUFHVixFQUFJLGVBQWUsV0FDdEIsRUFBR0EsRUFBSSxlQUFlLFNBQ3hCLENBQ0YsQ0FDQSxTQUFTWSxHQUF1QjVrQixFQUFTNmtCLEVBQVNDLEVBQXNCLENBSXRFLE9BSElELElBQVksU0FDZEEsRUFBVSxJQUVSLENBQUNDLEdBQXdCRCxHQUFXQyxJQUF5QjNDLEdBQVduaUIsQ0FBTyxFQUMxRSxHQUVGNmtCLENBQ1QsQ0FDQSxTQUFTRSxHQUFzQi9rQixFQUFTZ2xCLEVBQWNDLEVBQWlCNUksRUFBYyxDQUMvRTJJLElBQWlCLFNBQ25CQSxFQUFlLElBRWJDLElBQW9CLFNBQ3RCQSxFQUFrQixJQUVwQixJQUFNQyxFQUFhbGxCLEVBQVEsc0JBQXNCLEVBQzNDd2tCLEVBQWFGLEdBQWN0a0IsQ0FBTyxFQUNwQ21sQixFQUFRbk4sR0FBYSxDQUFDLEVBQ3RCZ04sSUFDRTNJLEVBQ0VpRyxHQUFVakcsQ0FBWSxJQUN4QjhJLEVBQVFaLEdBQVNsSSxDQUFZLEdBRy9COEksRUFBUVosR0FBU3ZrQixDQUFPLEdBRzVCLElBQU1vbEIsRUFBZ0JSLEdBQXVCSixFQUFZUyxFQUFpQjVJLENBQVksRUFBSXNJLEdBQWlCSCxDQUFVLEVBQUl4TSxHQUFhLENBQUMsRUFDbklwVSxHQUFLc2hCLEVBQVcsS0FBT0UsRUFBYyxHQUFLRCxFQUFNLEVBQ2hEdGhCLEdBQUtxaEIsRUFBVyxJQUFNRSxFQUFjLEdBQUtELEVBQU0sRUFDL0N2ekIsRUFBUXN6QixFQUFXLE1BQVFDLEVBQU0sRUFDakN0ekIsRUFBU3F6QixFQUFXLE9BQVNDLEVBQU0sRUFDdkMsR0FBSVgsRUFBWSxDQUNkLElBQU1SLEVBQU03QixHQUFXcUMsQ0FBVSxFQUMzQmEsRUFBWWhKLEdBQWdCaUcsR0FBVWpHLENBQVksRUFBSThGLEdBQVc5RixDQUFZLEVBQUlBLEVBQ25GaUosRUFBYXRCLEVBQ2J1QixFQUFnQkQsRUFBVyxhQUMvQixLQUFPQyxHQUFpQmxKLEdBQWdCZ0osSUFBY0MsR0FBWSxDQUNoRSxJQUFNRSxFQUFjakIsR0FBU2dCLENBQWEsRUFDcENFLEVBQWFGLEVBQWMsc0JBQXNCLEVBQ2pEcEMsRUFBTVAsR0FBa0IyQyxDQUFhLEVBQ3JDRyxFQUFPRCxFQUFXLE1BQVFGLEVBQWMsV0FBYSxXQUFXcEMsRUFBSSxXQUFXLEdBQUtxQyxFQUFZLEVBQ2hHRyxFQUFNRixFQUFXLEtBQU9GLEVBQWMsVUFBWSxXQUFXcEMsRUFBSSxVQUFVLEdBQUtxQyxFQUFZLEVBQ2xHNWhCLEdBQUs0aEIsRUFBWSxFQUNqQjNoQixHQUFLMmhCLEVBQVksRUFDakI1ekIsR0FBUzR6QixFQUFZLEVBQ3JCM3pCLEdBQVUyekIsRUFBWSxFQUN0QjVoQixHQUFLOGhCLEVBQ0w3aEIsR0FBSzhoQixFQUNMTCxFQUFhbkQsR0FBV29ELENBQWEsRUFDckNBLEVBQWdCRCxFQUFXLFlBQzdCLENBQ0YsQ0FDQSxPQUFPakwsR0FBaUIsQ0FDdEIsTUFBQXpvQixFQUNBLE9BQUFDLEVBQ0EsRUFBQStSLEVBQ0EsRUFBQUMsQ0FDRixDQUFDLENBQ0gsQ0FDQSxTQUFTK2hCLEdBQXNEaHdCLEVBQU0sQ0FDbkUsR0FBSSxDQUNGLFNBQUFrbUIsRUFDQSxLQUFBcGdCLEVBQ0EsYUFBQTJnQixFQUNBLFNBQUFuQixDQUNGLEVBQUl0bEIsRUFDRWl2QixFQUFVM0osSUFBYSxRQUN2QjJLLEVBQWtCeEQsR0FBbUJoRyxDQUFZLEVBQ2pEeUosRUFBV2hLLEVBQVdnSCxHQUFXaEgsRUFBUyxRQUFRLEVBQUksR0FDNUQsR0FBSU8sSUFBaUJ3SixHQUFtQkMsR0FBWWpCLEVBQ2xELE9BQU9ucEIsRUFFVCxJQUFJcXFCLEVBQVMsQ0FDWCxXQUFZLEVBQ1osVUFBVyxDQUNiLEVBQ0laLEVBQVFuTixHQUFhLENBQUMsRUFDcEI2SCxFQUFVN0gsR0FBYSxDQUFDLEVBQ3hCZ08sRUFBMEJ6RCxHQUFjbEcsQ0FBWSxFQUMxRCxJQUFJMkosR0FBMkIsQ0FBQ0EsR0FBMkIsQ0FBQ25CLE1BQ3RENUMsR0FBWTVGLENBQVksSUFBTSxRQUFVb0csR0FBa0JvRCxDQUFlLEtBQzNFRSxFQUFTdkMsR0FBY25ILENBQVksR0FFakNrRyxHQUFjbEcsQ0FBWSxHQUFHLENBQy9CLElBQU00SixFQUFhbEIsR0FBc0IxSSxDQUFZLEVBQ3JEOEksRUFBUVosR0FBU2xJLENBQVksRUFDN0J3RCxFQUFRLEVBQUlvRyxFQUFXLEVBQUk1SixFQUFhLFdBQ3hDd0QsRUFBUSxFQUFJb0csRUFBVyxFQUFJNUosRUFBYSxTQUMxQyxDQUVGLE1BQU8sQ0FDTCxNQUFPM2dCLEVBQUssTUFBUXlwQixFQUFNLEVBQzFCLE9BQVF6cEIsRUFBSyxPQUFTeXBCLEVBQU0sRUFDNUIsRUFBR3pwQixFQUFLLEVBQUl5cEIsRUFBTSxFQUFJWSxFQUFPLFdBQWFaLEVBQU0sRUFBSXRGLEVBQVEsRUFDNUQsRUFBR25rQixFQUFLLEVBQUl5cEIsRUFBTSxFQUFJWSxFQUFPLFVBQVlaLEVBQU0sRUFBSXRGLEVBQVEsQ0FDN0QsQ0FDRixDQUNBLFNBQVNxRyxHQUFlbG1CLEVBQVMsQ0FDL0IsT0FBTyxNQUFNLEtBQUtBLEVBQVEsZUFBZSxDQUFDLENBQzVDLENBQ0EsU0FBU21tQixHQUFvQm5tQixFQUFTLENBQ3BDLE9BQU8ra0IsR0FBc0IxQyxHQUFtQnJpQixDQUFPLENBQUMsRUFBRSxLQUFPd2pCLEdBQWN4akIsQ0FBTyxFQUFFLFVBQzFGLENBQ0EsU0FBU29tQixHQUFnQnBtQixFQUFTLENBQ2hDLElBQU1xbUIsRUFBT2hFLEdBQW1CcmlCLENBQU8sRUFDakMrbEIsRUFBU3ZDLEdBQWN4akIsQ0FBTyxFQUM5QnNtQixFQUFPdG1CLEVBQVEsY0FBYyxLQUM3QnBPLEVBQVFpbUIsR0FBSXdPLEVBQUssWUFBYUEsRUFBSyxZQUFhQyxFQUFLLFlBQWFBLEVBQUssV0FBVyxFQUNsRnowQixFQUFTZ21CLEdBQUl3TyxFQUFLLGFBQWNBLEVBQUssYUFBY0MsRUFBSyxhQUFjQSxFQUFLLFlBQVksRUFDekYxaUIsRUFBSSxDQUFDbWlCLEVBQU8sV0FBYUksR0FBb0JubUIsQ0FBTyxFQUNsRDZELEVBQUksQ0FBQ2tpQixFQUFPLFVBQ2xCLE9BQUluRCxHQUFrQjBELENBQUksRUFBRSxZQUFjLFFBQ3hDMWlCLEdBQUtpVSxHQUFJd08sRUFBSyxZQUFhQyxFQUFLLFdBQVcsRUFBSTEwQixHQUUxQyxDQUNMLE1BQUFBLEVBQ0EsT0FBQUMsRUFDQSxFQUFBK1IsRUFDQSxFQUFBQyxDQUNGLENBQ0YsQ0FDQSxTQUFTMGlCLEdBQWdCdm1CLEVBQVNrYixFQUFVLENBQzFDLElBQU04SSxFQUFNN0IsR0FBV25pQixDQUFPLEVBQ3hCcW1CLEVBQU9oRSxHQUFtQnJpQixDQUFPLEVBQ2pDd21CLEVBQWlCeEMsRUFBSSxlQUN2QnB5QixFQUFReTBCLEVBQUssWUFDYngwQixFQUFTdzBCLEVBQUssYUFDZHppQixFQUFJLEVBQ0pDLEVBQUksRUFDUixHQUFJMmlCLEVBQWdCLENBQ2xCNTBCLEVBQVE0MEIsRUFBZSxNQUN2QjMwQixFQUFTMjBCLEVBQWUsT0FDeEIsSUFBTUMsRUFBc0J2RCxHQUFTLEdBQ2pDLENBQUN1RCxHQUF1QkEsR0FBdUJ2TCxJQUFhLFdBQzlEdFgsRUFBSTRpQixFQUFlLFdBQ25CM2lCLEVBQUkyaUIsRUFBZSxVQUV2QixDQUNBLE1BQU8sQ0FDTCxNQUFBNTBCLEVBQ0EsT0FBQUMsRUFDQSxFQUFBK1IsRUFDQSxFQUFBQyxDQUNGLENBQ0YsQ0FDQSxTQUFTNmlCLEdBQTJCMW1CLEVBQVNrYixFQUFVLENBQ3JELElBQU1nSyxFQUFhSCxHQUFzQi9rQixFQUFTLEdBQU1rYixJQUFhLE9BQU8sRUFDdEV5SyxFQUFNVCxFQUFXLElBQU1sbEIsRUFBUSxVQUMvQjBsQixFQUFPUixFQUFXLEtBQU9sbEIsRUFBUSxXQUNqQ21sQixFQUFRNUMsR0FBY3ZpQixDQUFPLEVBQUl1a0IsR0FBU3ZrQixDQUFPLEVBQUlnWSxHQUFhLENBQUMsRUFDbkVwbUIsRUFBUW9PLEVBQVEsWUFBY21sQixFQUFNLEVBQ3BDdHpCLEVBQVNtTyxFQUFRLGFBQWVtbEIsRUFBTSxFQUN0Q3ZoQixFQUFJOGhCLEVBQU9QLEVBQU0sRUFDakJ0aEIsRUFBSThoQixFQUFNUixFQUFNLEVBQ3RCLE1BQU8sQ0FDTCxNQUFBdnpCLEVBQ0EsT0FBQUMsRUFDQSxFQUFBK1IsRUFDQSxFQUFBQyxDQUNGLENBQ0YsQ0FDQSxTQUFTOGlCLEdBQWtDM21CLEVBQVM0bUIsRUFBa0IxTCxFQUFVLENBQzlFLElBQUl4ZixFQUNKLEdBQUlrckIsSUFBcUIsV0FDdkJsckIsRUFBTzZxQixHQUFnQnZtQixFQUFTa2IsQ0FBUSxVQUMvQjBMLElBQXFCLFdBQzlCbHJCLEVBQU8wcUIsR0FBZ0IvRCxHQUFtQnJpQixDQUFPLENBQUMsVUFDekNzaUIsR0FBVXNFLENBQWdCLEVBQ25DbHJCLEVBQU9nckIsR0FBMkJFLEVBQWtCMUwsQ0FBUSxNQUN2RCxDQUNMLElBQU1rSyxFQUFnQlQsR0FBaUIza0IsQ0FBTyxFQUM5Q3RFLEVBQU8sQ0FDTCxHQUFHa3JCLEVBQ0gsRUFBR0EsRUFBaUIsRUFBSXhCLEVBQWMsRUFDdEMsRUFBR3dCLEVBQWlCLEVBQUl4QixFQUFjLENBQ3hDLENBQ0YsQ0FDQSxPQUFPL0ssR0FBaUIzZSxDQUFJLENBQzlCLENBQ0EsU0FBU21yQixHQUF5QjdtQixFQUFTOG1CLEVBQVUsQ0FDbkQsSUFBTXBELEVBQWFKLEdBQWN0akIsQ0FBTyxFQUN4QyxPQUFJMGpCLElBQWVvRCxHQUFZLENBQUN4RSxHQUFVb0IsQ0FBVSxHQUFLSCxHQUFzQkcsQ0FBVSxFQUNoRixHQUVGZCxHQUFrQmMsQ0FBVSxFQUFFLFdBQWEsU0FBV21ELEdBQXlCbkQsRUFBWW9ELENBQVEsQ0FDNUcsQ0FDQSxTQUFTQyxHQUE0Qi9tQixFQUFTZ25CLEVBQVEsQ0FDcEQsSUFBTUMsRUFBZUQsRUFBTyxJQUFJaG5CLENBQU8sRUFDdkMsR0FBSWluQixFQUNGLE9BQU9BLEVBRVQsSUFBSTE0QixFQUFTbzFCLEdBQXFCM2pCLEVBQVMsQ0FBQyxFQUFHLEVBQUssRUFBRSxPQUFRN0csR0FBT21wQixHQUFVbnBCLENBQUUsR0FBSzhvQixHQUFZOW9CLENBQUUsSUFBTSxNQUFNLEVBQzVHK3RCLEVBQXNDLEtBQ3BDQyxFQUFpQnZFLEdBQWtCNWlCLENBQU8sRUFBRSxXQUFhLFFBQzNEcWpCLEVBQWM4RCxFQUFpQjdELEdBQWN0akIsQ0FBTyxFQUFJQSxFQUM1RCxLQUFPc2lCLEdBQVVlLENBQVcsR0FBSyxDQUFDRSxHQUFzQkYsQ0FBVyxHQUFHLENBQ3BFLElBQU0rRCxFQUFnQnhFLEdBQWtCUyxDQUFXLEVBQzdDZ0UsRUFBMEJ0RSxHQUFrQk0sQ0FBVyxFQUN6RCxDQUFDZ0UsR0FBMkJELEVBQWMsV0FBYSxVQUN6REYsRUFBc0MsT0FFVkMsRUFBaUIsQ0FBQ0UsR0FBMkIsQ0FBQ0gsRUFBc0MsQ0FBQ0csR0FBMkJELEVBQWMsV0FBYSxVQUFZLENBQUMsQ0FBQ0YsR0FBdUMsQ0FBQyxXQUFZLE9BQU8sRUFBRSxTQUFTQSxFQUFvQyxRQUFRLEdBQUt6RSxHQUFrQlksQ0FBVyxHQUFLLENBQUNnRSxHQUEyQlIsR0FBeUI3bUIsRUFBU3FqQixDQUFXLEdBRXZaOTBCLEVBQVNBLEVBQU8sT0FBUWdYLEdBQWFBLElBQWE4ZCxDQUFXLEVBRTdENkQsRUFBc0NFLEVBRXhDL0QsRUFBY0MsR0FBY0QsQ0FBVyxDQUN6QyxDQUNBLE9BQUEyRCxFQUFPLElBQUlobkIsRUFBU3pSLENBQU0sRUFDbkJBLENBQ1QsQ0FDQSxTQUFTKzRCLEdBQWdCMXhCLEVBQU0sQ0FDN0IsR0FBSSxDQUNGLFFBQUFvSyxFQUNBLFNBQUErYixFQUNBLGFBQUFDLEVBQ0EsU0FBQWQsQ0FDRixFQUFJdGxCLEVBRUUyeEIsRUFBb0IsQ0FBQyxHQURNeEwsSUFBYSxvQkFBc0IrRyxHQUFXOWlCLENBQU8sRUFBSSxDQUFDLEVBQUkrbUIsR0FBNEIvbUIsRUFBUyxLQUFLLEVBQUUsRUFBSSxDQUFDLEVBQUUsT0FBTytiLENBQVEsRUFDekdDLENBQVksRUFDOUR3TCxFQUF3QkQsRUFBa0IsQ0FBQyxFQUMzQ0UsRUFBZUYsRUFBa0IsT0FBTyxDQUFDRyxFQUFTZCxJQUFxQixDQUMzRSxJQUFNbHJCLEVBQU9pckIsR0FBa0MzbUIsRUFBUzRtQixFQUFrQjFMLENBQVEsRUFDbEYsT0FBQXdNLEVBQVEsSUFBTTdQLEdBQUluYyxFQUFLLElBQUtnc0IsRUFBUSxHQUFHLEVBQ3ZDQSxFQUFRLE1BQVE5UCxHQUFJbGMsRUFBSyxNQUFPZ3NCLEVBQVEsS0FBSyxFQUM3Q0EsRUFBUSxPQUFTOVAsR0FBSWxjLEVBQUssT0FBUWdzQixFQUFRLE1BQU0sRUFDaERBLEVBQVEsS0FBTzdQLEdBQUluYyxFQUFLLEtBQU1nc0IsRUFBUSxJQUFJLEVBQ25DQSxDQUNULEVBQUdmLEdBQWtDM21CLEVBQVN3bkIsRUFBdUJ0TSxDQUFRLENBQUMsRUFDOUUsTUFBTyxDQUNMLE1BQU91TSxFQUFhLE1BQVFBLEVBQWEsS0FDekMsT0FBUUEsRUFBYSxPQUFTQSxFQUFhLElBQzNDLEVBQUdBLEVBQWEsS0FDaEIsRUFBR0EsRUFBYSxHQUNsQixDQUNGLENBQ0EsU0FBU0UsR0FBYzNuQixFQUFTLENBQzlCLEdBQU0sQ0FDSixNQUFBcE8sRUFDQSxPQUFBQyxDQUNGLEVBQUlveUIsR0FBaUJqa0IsQ0FBTyxFQUM1QixNQUFPLENBQ0wsTUFBQXBPLEVBQ0EsT0FBQUMsQ0FDRixDQUNGLENBQ0EsU0FBUysxQixHQUE4QjVuQixFQUFTcWMsRUFBY25CLEVBQVUsQ0FDdEUsSUFBTThLLEVBQTBCekQsR0FBY2xHLENBQVksRUFDcER3SixFQUFrQnhELEdBQW1CaEcsQ0FBWSxFQUNqRHdJLEVBQVUzSixJQUFhLFFBQ3ZCeGYsRUFBT3FwQixHQUFzQi9rQixFQUFTLEdBQU02a0IsRUFBU3hJLENBQVksRUFDbkUwSixFQUFTLENBQ1gsV0FBWSxFQUNaLFVBQVcsQ0FDYixFQUNNbEcsRUFBVTdILEdBQWEsQ0FBQyxFQUM5QixHQUFJZ08sR0FBMkIsQ0FBQ0EsR0FBMkIsQ0FBQ25CLEVBSTFELElBSEk1QyxHQUFZNUYsQ0FBWSxJQUFNLFFBQVVvRyxHQUFrQm9ELENBQWUsS0FDM0VFLEVBQVN2QyxHQUFjbkgsQ0FBWSxHQUVqQzJKLEVBQXlCLENBQzNCLElBQU1DLEVBQWFsQixHQUFzQjFJLEVBQWMsR0FBTXdJLEVBQVN4SSxDQUFZLEVBQ2xGd0QsRUFBUSxFQUFJb0csRUFBVyxFQUFJNUosRUFBYSxXQUN4Q3dELEVBQVEsRUFBSW9HLEVBQVcsRUFBSTVKLEVBQWEsU0FDMUMsTUFBV3dKLElBQ1RoRyxFQUFRLEVBQUlzRyxHQUFvQk4sQ0FBZSxHQUduRCxJQUFNamlCLEVBQUlsSSxFQUFLLEtBQU9xcUIsRUFBTyxXQUFhbEcsRUFBUSxFQUM1Q2hjLEVBQUluSSxFQUFLLElBQU1xcUIsRUFBTyxVQUFZbEcsRUFBUSxFQUNoRCxNQUFPLENBQ0wsRUFBQWpjLEVBQ0EsRUFBQUMsRUFDQSxNQUFPbkksRUFBSyxNQUNaLE9BQVFBLEVBQUssTUFDZixDQUNGLENBQ0EsU0FBU21zQixHQUFtQjduQixFQUFTLENBQ25DLE9BQU80aUIsR0FBa0I1aUIsQ0FBTyxFQUFFLFdBQWEsUUFDakQsQ0FDQSxTQUFTOG5CLEdBQW9COW5CLEVBQVMrbkIsRUFBVSxDQUM5QyxNQUFJLENBQUN4RixHQUFjdmlCLENBQU8sR0FBSzRpQixHQUFrQjVpQixDQUFPLEVBQUUsV0FBYSxRQUM5RCxLQUVMK25CLEVBQ0tBLEVBQVMvbkIsQ0FBTyxFQUVsQkEsRUFBUSxZQUNqQixDQUNBLFNBQVNnb0IsR0FBZ0Job0IsRUFBUytuQixFQUFVLENBQzFDLElBQU0vRCxFQUFNN0IsR0FBV25pQixDQUFPLEVBQzlCLEdBQUk4aUIsR0FBVzlpQixDQUFPLEVBQ3BCLE9BQU9na0IsRUFFVCxHQUFJLENBQUN6QixHQUFjdmlCLENBQU8sRUFBRyxDQUMzQixJQUFJaW9CLEVBQWtCM0UsR0FBY3RqQixDQUFPLEVBQzNDLEtBQU9pb0IsR0FBbUIsQ0FBQzFFLEdBQXNCMEUsQ0FBZSxHQUFHLENBQ2pFLEdBQUkzRixHQUFVMkYsQ0FBZSxHQUFLLENBQUNKLEdBQW1CSSxDQUFlLEVBQ25FLE9BQU9BLEVBRVRBLEVBQWtCM0UsR0FBYzJFLENBQWUsQ0FDakQsQ0FDQSxPQUFPakUsQ0FDVCxDQUNBLElBQUkzSCxFQUFleUwsR0FBb0I5bkIsRUFBUytuQixDQUFRLEVBQ3hELEtBQU8xTCxHQUFnQndHLEdBQWV4RyxDQUFZLEdBQUt3TCxHQUFtQnhMLENBQVksR0FDcEZBLEVBQWV5TCxHQUFvQnpMLEVBQWMwTCxDQUFRLEVBRTNELE9BQUkxTCxHQUFnQmtILEdBQXNCbEgsQ0FBWSxHQUFLd0wsR0FBbUJ4TCxDQUFZLEdBQUssQ0FBQzBHLEdBQWtCMUcsQ0FBWSxFQUNySDJILEVBRUYzSCxHQUFnQitHLEdBQW1CcGpCLENBQU8sR0FBS2drQixDQUN4RCxDQUNBLElBQUlrRSxHQUFrQixlQUFlM2IsRUFBTSxDQUN6QyxJQUFNNGIsRUFBb0IsS0FBSyxpQkFBbUJILEdBQzVDSSxFQUFrQixLQUFLLGNBQ3ZCQyxFQUFxQixNQUFNRCxFQUFnQjdiLEVBQUssUUFBUSxFQUM5RCxNQUFPLENBQ0wsVUFBV3FiLEdBQThCcmIsRUFBSyxVQUFXLE1BQU00YixFQUFrQjViLEVBQUssUUFBUSxFQUFHQSxFQUFLLFFBQVEsRUFDOUcsU0FBVSxDQUNSLEVBQUcsRUFDSCxFQUFHLEVBQ0gsTUFBTzhiLEVBQW1CLE1BQzFCLE9BQVFBLEVBQW1CLE1BQzdCLENBQ0YsQ0FDRixFQUNBLFNBQVNDLEdBQU90b0IsRUFBUyxDQUN2QixPQUFPNGlCLEdBQWtCNWlCLENBQU8sRUFBRSxZQUFjLEtBQ2xELENBQ0EsSUFBSXVvQixHQUFXLENBQ2Isc0RBQUEzQyxHQUNBLG1CQUFBdkQsR0FDQSxnQkFBQWlGLEdBQ0EsZ0JBQUFVLEdBQ0EsZ0JBQUFFLEdBQ0EsZUFBQWhDLEdBQ0EsY0FBQXlCLEdBQ0EsU0FBQXBELEdBQ0EsVUFBQWpDLEdBQ0EsTUFBT2dHLEVBQ1QsRUFDQSxTQUFTRSxHQUFZeG9CLEVBQVN5b0IsRUFBUSxDQUNwQyxJQUFJQyxFQUFLLEtBQ0xqWSxFQUNFeE4sRUFBT29mLEdBQW1CcmlCLENBQU8sRUFDdkMsU0FBUzJvQixHQUFVLENBQ2pCLElBQUlDLEVBQ0osYUFBYW5ZLENBQVMsR0FDckJtWSxFQUFNRixJQUFPLE1BQVFFLEVBQUksV0FBVyxFQUNyQ0YsRUFBSyxJQUNQLENBQ0EsU0FBU0csRUFBUUMsRUFBTXowQixFQUFXLENBQzVCeTBCLElBQVMsU0FDWEEsRUFBTyxJQUVMejBCLElBQWMsU0FDaEJBLEVBQVksR0FFZHMwQixFQUFRLEVBQ1IsR0FBTSxDQUNKLEtBQUFqRCxFQUNBLElBQUFDLEVBQ0EsTUFBQS96QixFQUNBLE9BQUFDLENBQ0YsRUFBSW1PLEVBQVEsc0JBQXNCLEVBSWxDLEdBSEs4b0IsR0FDSEwsRUFBTyxFQUVMLENBQUM3MkIsR0FBUyxDQUFDQyxFQUNiLE9BRUYsSUFBTWszQixFQUFXaFIsR0FBTTROLENBQUcsRUFDcEJxRCxFQUFhalIsR0FBTTlVLEVBQUssYUFBZXlpQixFQUFPOXpCLEVBQU0sRUFDcERxM0IsRUFBY2xSLEdBQU05VSxFQUFLLGNBQWdCMGlCLEVBQU05ekIsRUFBTyxFQUN0RHEzQixFQUFZblIsR0FBTTJOLENBQUksRUFFdEJoM0IsRUFBVSxDQUNkLFdBRmlCLENBQUNxNkIsRUFBVyxNQUFRLENBQUNDLEVBQWEsTUFBUSxDQUFDQyxFQUFjLE1BQVEsQ0FBQ0MsRUFBWSxLQUcvRixVQUFXclIsR0FBSSxFQUFHRCxHQUFJLEVBQUd2akIsQ0FBUyxDQUFDLEdBQUssQ0FDMUMsRUFDSTgwQixFQUFnQixHQUNwQixTQUFTQyxFQUFjaHJCLEVBQVUsQ0FDL0IsSUFBTWlyQixFQUFRanJCLEVBQVMsQ0FBQyxFQUFFLGtCQUMxQixHQUFJaXJCLElBQVVoMUIsRUFBVyxDQUN2QixHQUFJLENBQUM4MEIsRUFDSCxPQUFPTixFQUFRLEVBRVpRLEVBS0hSLEVBQVEsR0FBT1EsQ0FBSyxFQUpwQjVZLEVBQVksV0FBVyxJQUFNLENBQzNCb1ksRUFBUSxHQUFPLElBQUksQ0FDckIsRUFBRyxHQUFHLENBSVYsQ0FDQU0sRUFBZ0IsRUFDbEIsQ0FDQSxHQUFJLENBQ0ZULEVBQUssSUFBSSxxQkFBcUJVLEVBQWUsQ0FDM0MsR0FBRzE2QixFQUVILEtBQU11VSxFQUFLLGFBQ2IsQ0FBQyxDQUNILE1BQWEsQ0FDWHlsQixFQUFLLElBQUkscUJBQXFCVSxFQUFlMTZCLENBQU8sQ0FDdEQsQ0FDQWc2QixFQUFHLFFBQVExb0IsQ0FBTyxDQUNwQixDQUNBLE9BQUE2b0IsRUFBUSxFQUFJLEVBQ0xGLENBQ1QsQ0FDQSxTQUFTVyxHQUFXL08sRUFBV0MsRUFBVStPLEVBQVE3NkIsRUFBUyxDQUNwREEsSUFBWSxTQUNkQSxFQUFVLENBQUMsR0FFYixHQUFNLENBQ0osZUFBQTg2QixFQUFpQixHQUNqQixlQUFBQyxFQUFpQixHQUNqQixjQUFBQyxFQUFnQixPQUFPLGdCQUFtQixXQUMxQyxZQUFBQyxFQUFjLE9BQU8sc0JBQXlCLFdBQzlDLGVBQUFDLEVBQWlCLEVBQ25CLEVBQUlsN0IsRUFDRW03QixFQUFjdkYsR0FBYy9KLENBQVMsRUFDckN1UCxFQUFZTixHQUFrQkMsRUFBaUIsQ0FBQyxHQUFHSSxFQUFjbEcsR0FBcUJrRyxDQUFXLEVBQUksQ0FBQyxFQUFHLEdBQUdsRyxHQUFxQm5KLENBQVEsQ0FBQyxFQUFJLENBQUMsRUFDckpzUCxFQUFVLFFBQVN2a0IsR0FBYSxDQUM5QmlrQixHQUFrQmprQixFQUFTLGlCQUFpQixTQUFVZ2tCLEVBQVEsQ0FDNUQsUUFBUyxFQUNYLENBQUMsRUFDREUsR0FBa0Jsa0IsRUFBUyxpQkFBaUIsU0FBVWdrQixDQUFNLENBQzlELENBQUMsRUFDRCxJQUFNUSxFQUFZRixHQUFlRixFQUFjbkIsR0FBWXFCLEVBQWFOLENBQU0sRUFBSSxLQUM5RVMsRUFBaUIsR0FDakJDLEVBQWlCLEtBQ2pCUCxJQUNGTyxFQUFpQixJQUFJLGVBQWdCcjBCLEdBQVMsQ0FDNUMsR0FBSSxDQUFDczBCLENBQVUsRUFBSXQwQixFQUNmczBCLEdBQWNBLEVBQVcsU0FBV0wsR0FBZUksSUFDckRBLEVBQWUsVUFBVXpQLENBQVEsRUFDakMscUJBQXFCd1AsQ0FBYyxFQUNuQ0EsRUFBaUIsc0JBQXNCLElBQU0sQ0FDM0MsSUFBSUcsR0FDSEEsRUFBa0JGLElBQW1CLE1BQVFFLEVBQWdCLFFBQVEzUCxDQUFRLENBQ2hGLENBQUMsR0FFSCtPLEVBQU8sQ0FDVCxDQUFDLEVBQ0dNLEdBQWUsQ0FBQ0QsR0FDbEJLLEVBQWUsUUFBUUosQ0FBVyxFQUVwQ0ksRUFBZSxRQUFRelAsQ0FBUSxHQUVqQyxJQUFJNFAsRUFDQUMsRUFBY1QsRUFBaUI3RSxHQUFzQnhLLENBQVMsRUFBSSxLQUNsRXFQLEdBQ0ZVLEVBQVUsRUFFWixTQUFTQSxHQUFZLENBQ25CLElBQU1DLEVBQWN4RixHQUFzQnhLLENBQVMsRUFDL0M4UCxJQUFnQkUsRUFBWSxJQUFNRixFQUFZLEdBQUtFLEVBQVksSUFBTUYsRUFBWSxHQUFLRSxFQUFZLFFBQVVGLEVBQVksT0FBU0UsRUFBWSxTQUFXRixFQUFZLFNBQ3RLZCxFQUFPLEVBRVRjLEVBQWNFLEVBQ2RILEVBQVUsc0JBQXNCRSxDQUFTLENBQzNDLENBQ0EsT0FBQWYsRUFBTyxFQUNBLElBQU0sQ0FDWCxJQUFJaUIsRUFDSlYsRUFBVSxRQUFTdmtCLEdBQWEsQ0FDOUJpa0IsR0FBa0Jqa0IsRUFBUyxvQkFBb0IsU0FBVWdrQixDQUFNLEVBQy9ERSxHQUFrQmxrQixFQUFTLG9CQUFvQixTQUFVZ2tCLENBQU0sQ0FDakUsQ0FBQyxFQUNvQlEsSUFBVSxHQUM5QlMsRUFBbUJQLElBQW1CLE1BQVFPLEVBQWlCLFdBQVcsRUFDM0VQLEVBQWlCLEtBQ2JMLEdBQ0YscUJBQXFCUSxDQUFPLENBRWhDLENBQ0YsQ0FDQSxJQUFJSyxHQUFVckssR0FDVnNLLEdBQVNuSyxHQUNUb0ssR0FBUS9NLEdBQ1JnTixHQUFRM0osR0FDUjRKLEdBQVFqTCxHQUNSa0wsR0FBU3RPLEdBQ1R1TyxHQUFtQixDQUFDeFEsRUFBV0MsRUFBVTlyQixJQUFZLENBQ3ZELElBQU1zNEIsRUFBeUIsSUFBSSxJQUM3QmdFLEVBQWdCLENBQ3BCLFNBQUF6QyxHQUNBLEdBQUc3NUIsQ0FDTCxFQUNNdThCLEVBQW9CLENBQ3hCLEdBQUdELEVBQWMsU0FDakIsR0FBSWhFLENBQ04sRUFDQSxPQUFPaE0sR0FBZ0JULEVBQVdDLEVBQVUsQ0FDMUMsR0FBR3dRLEVBQ0gsU0FBVUMsQ0FDWixDQUFDLENBQ0gsRUFHSUMsR0FBZ0JoNkIsR0FBYyxFQUNsQyxTQUFTaTZCLElBQW1CLENBQzFCLElBQU0vaUIsRUFBVWhYLEdBQVc4NUIsRUFBYSxFQUN4QyxHQUFJOWlCLElBQVksT0FDZCxNQUFNLElBQUksTUFBTSx3RUFBd0UsRUFFMUYsT0FBT0EsQ0FDVCxDQUNBLElBQUlnakIsR0FBeUJDLEVBQVMseVVBQXlVLEVBQzNXQyxHQUFlLEdBQ2ZDLEdBQW9CRCxHQUFlLEVBQ25DRSxHQUFlLENBQ2pCLElBQUssSUFDTCxNQUFPLElBQ1AsT0FBUSxFQUNSLEtBQU0sRUFDUixFQUNBLFNBQVNDLEdBQVloK0IsRUFBTyxDQUMxQixJQUFNMmEsRUFBVStpQixHQUFpQixFQUMzQmxrQixFQUFjNUMsRUFBa0IsQ0FDcEMsS0FBTWluQixFQUNSLEVBQUc3OUIsQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxNQUFPLFFBQVMsTUFBTSxDQUFDLEVBQ2xFeWtCLEVBQU0sSUFBTXRqQixFQUFRLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFDbkR1akIsRUFBZUMsR0FBb0J4akIsRUFBUSxVQUFVLEVBQ3JEeWpCLEVBQU8sSUFBTUYsRUFBYSxHQUFHLGlCQUFpQixrQkFBa0IsR0FBSyxPQUNyRUcsRUFBUyxJQUFNSCxFQUFhLEdBQUcsaUJBQWlCLFVBQVVELEVBQUksQ0FBQyxRQUFRLEdBQUssT0FDNUVLLEVBQWMsSUFBTUosRUFBYSxHQUFHLGlCQUFpQixVQUFVRCxFQUFJLENBQUMsUUFBUSxHQUFLLE1BQ2pGTSxFQUFjLElBQ1gsT0FBTyxTQUFTRCxFQUFZLENBQUMsRUFBSSxHQUFLVCxHQUFlN2tCLEVBQU0sTUFFOUR3bEIsRUFBUyxJQUNOLFVBQVVULEdBQWFFLEVBQUksQ0FBQyxDQUFDLElBQUlILEVBQWlCLElBQUlBLEVBQWlCLG1CQUVoRixPQUFPMTRCLEVBQWdCMlQsR0FBYWpDLEVBQVcsQ0FDN0MsR0FBSSxNQUNKLElBQUltRSxFQUFJLENBQ04sSUFBTUMsRUFBUTlPLEdBQVV1TyxFQUFRLFlBQWEzQixFQUFNLEdBQUcsRUFDdEQsT0FBT2tDLEdBQVUsWUFBY0EsRUFBTUQsQ0FBRSxDQUN6QyxFQUNBLGNBQWUsT0FDZixJQUFJLE9BQVEsQ0FDVixPQUFPL0osR0FBYSxDQUVsQixTQUFVLFdBQ1YsWUFBYSxHQUFHOEgsRUFBTSxJQUFJLEtBQzFCLE1BQU8sTUFDUCxPQUFRLE1BQ1IsaUJBQWtCLE9BQ2xCLEtBQU1vbEIsRUFBSyxFQUNYLE9BQVFDLEVBQU8sRUFDZixlQUFnQkUsRUFBWSxDQUM5QixFQUFHdmxCLEVBQU0sS0FBSyxDQUNoQixDQUNGLEVBQUdDLEVBQVEsQ0FDVCxJQUFJLFVBQVcsQ0FDYixJQUFNd2xCLEVBQU9kLEdBQU8sRUFBR2UsRUFBUUQsRUFBSyxXQUNwQyxPQUFBdHVCLEVBQW1CLElBQU13dUIsRUFBYUQsRUFBTyxZQUFhRixFQUFPLENBQUMsQ0FBQyxFQUM1REMsQ0FDVCxDQUNGLENBQUMsQ0FBQyxDQUNKLENBQ0EsU0FBU04sR0FBb0I1ckIsRUFBUyxDQUNwQyxHQUFNLENBQUM3TixFQUFPazZCLENBQVEsRUFBSXorQixFQUFhLEVBQ3ZDLE9BQUE0RSxFQUFhLElBQU0sQ0FDakIsSUFBTTJHLEVBQUs2RyxFQUFRLEVBQ25CN0csR0FBTWt6QixFQUFTcHNCLEdBQVU5RyxDQUFFLEVBQUUsaUJBQWlCQSxDQUFFLENBQUMsQ0FDbkQsQ0FBQyxFQUNNaEgsQ0FDVCxDQUNBLFNBQVNtNkIsR0FBaUI3K0IsRUFBTyxDQUMvQixJQUFNMmEsRUFBVStpQixHQUFpQixFQUMzQixDQUFDMWtCLEVBQU9DLENBQU0sRUFBSUMsR0FBV2xaLEVBQU8sQ0FBQyxNQUFPLE9BQU8sQ0FBQyxFQUMxRCxPQUFPb0YsRUFBZ0IyVCxHQUFhakMsRUFBVyxDQUM3QyxHQUFJLE1BQ0osSUFBSW1FLEVBQUksQ0FDTixJQUFNQyxFQUFROU8sR0FBVXVPLEVBQVEsaUJBQWtCM0IsRUFBTSxHQUFHLEVBQzNELE9BQU9rQyxHQUFVLFlBQWNBLEVBQU1ELENBQUUsQ0FDekMsRUFDQSx5QkFBMEIsR0FDMUIsSUFBSSxPQUFRLENBQ1YsT0FBTy9KLEdBQWEsQ0FDbEIsU0FBVSxXQUNWLElBQUssRUFDTCxLQUFNLEVBQ04sWUFBYSxhQUNmLEVBQUc4SCxFQUFNLEtBQUssQ0FDaEIsQ0FDRixFQUFHQyxDQUFNLENBQUMsQ0FDWixDQUNBLFNBQVM2bEIsR0FBY0MsRUFBWSxDQUNqQyxHQUFNLENBQUUsRUFBQTVvQixFQUFJLEVBQUcsRUFBQUMsRUFBSSxFQUFHLE1BQUFqUyxFQUFRLEVBQUcsT0FBQUMsRUFBUyxDQUFFLEVBQUkyNkIsR0FBYyxDQUFDLEVBQy9ELEdBQUksT0FBTyxTQUFZLFdBQ3JCLE9BQU8sSUFBSSxRQUFRNW9CLEVBQUdDLEVBQUdqUyxFQUFPQyxDQUFNLEVBRXhDLElBQU02SixFQUFPLENBQ1gsRUFBQWtJLEVBQ0EsRUFBQUMsRUFDQSxNQUFBalMsRUFDQSxPQUFBQyxFQUNBLElBQUtnUyxFQUNMLE1BQU9ELEVBQUloUyxFQUNYLE9BQVFpUyxFQUFJaFMsRUFDWixLQUFNK1IsQ0FDUixFQUNBLE1BQU8sQ0FBRSxHQUFHbEksRUFBTSxPQUFRLElBQU1BLENBQUssQ0FDdkMsQ0FDQSxTQUFTK3dCLEdBQWlCQyxFQUFRQyxFQUFlLENBRS9DLE1BQU8sQ0FDTCxlQUZxQkQsRUFHckIsc0JBQXVCLElBQU0sQ0FDM0IsSUFBTUYsRUFBYUcsRUFBY0QsQ0FBTSxFQUN2QyxPQUFJRixFQUNLRCxHQUFjQyxDQUFVLEVBRTdCRSxFQUNLQSxFQUFPLHNCQUFzQixFQUUvQkgsR0FBYyxDQUN2QixDQUNGLENBQ0YsQ0FDQSxTQUFTSyxHQUFpQkMsRUFBUSxDQUNoQyxNQUFPLGlEQUFpRCxLQUFLQSxDQUFNLENBQ3JFLENBQ0EsSUFBSUMsR0FBeUIsQ0FDM0IsSUFBSyxTQUNMLE1BQU8sT0FDUCxPQUFRLE1BQ1IsS0FBTSxPQUNSLEVBQ0EsU0FBU0MsR0FBbUJ0VSxFQUFXdVUsRUFBa0IsQ0FDdkQsR0FBTSxDQUFDQyxFQUFlL1QsQ0FBUyxFQUFJVCxFQUFVLE1BQU0sR0FBRyxFQUNoRHlVLEVBQW1CSixHQUF1QkcsQ0FBYSxFQUM3RCxPQUFLL1QsRUFHRCtULElBQWtCLFFBQVVBLElBQWtCLFFBQ3pDLEdBQUdDLENBQWdCLElBQUloVSxJQUFjLFFBQVUsTUFBUSxRQUFRLEdBRXBFQSxJQUFjLFFBQ1QsR0FBR2dVLENBQWdCLElBQUlGLElBQXFCLE1BQVEsUUFBVSxNQUFNLEdBRXRFLEdBQUdFLENBQWdCLElBQUlGLElBQXFCLE1BQVEsT0FBUyxPQUFPLEdBUmxFLEdBQUdFLENBQWdCLFNBUzlCLENBQ0EsU0FBU0MsR0FBVzEvQixFQUFPLENBQ3pCLElBQU13WixFQUFjNUMsRUFBa0IsQ0FDcEMsY0FBZ0Jxb0IsR0FBV0EsR0FBUSxzQkFBc0IsRUFDekQsVUFBVyxTQUNYLE9BQVEsRUFDUixNQUFPLEVBQ1AsS0FBTSxHQUNOLE1BQU8sR0FDUCxRQUFTLEdBQ1QsVUFBVyxHQUNYLFlBQWEsR0FDYixpQkFBa0IsR0FDbEIsZ0JBQWlCLEVBQ2pCLGFBQWMsRUFDZCxnQkFBaUIsQ0FDbkIsRUFBR2ovQixDQUFLLEVBQ0YsQ0FBQzIvQixFQUFlQyxDQUFnQixFQUFJei9CLEVBQWEsRUFDakQsQ0FBQzAvQixFQUFVQyxDQUFXLEVBQUkzL0IsRUFBYSxFQUN2QyxDQUFDNC9CLEVBQWtCQyxDQUFtQixFQUFJNy9CLEVBQWFxWixFQUFZLFNBQVMsRUFDNUV5bUIsRUFBWSxJQUFNakIsR0FBaUJ4bEIsRUFBWSxZQUFZLEVBQUdBLEVBQVksYUFBYSxFQUN2RixDQUNKLFVBQUFvSyxDQUNGLEVBQUloRCxHQUFVLEVBQ2QsZUFBZXNmLEdBQWlCLENBQzlCLElBQU05RCxFQUFjNkQsRUFBVSxFQUN4QkUsRUFBYVIsRUFBYyxFQUMzQlMsRUFBVVAsRUFBUyxFQUN6QixHQUFJLENBQUN6RCxHQUFlLENBQUMrRCxFQUNuQixPQUVGLElBQU1FLEdBQWVELEdBQVMsY0FBZ0IsR0FBSyxFQUM3Q0UsRUFBYyxPQUFPOW1CLEVBQVksUUFBVyxTQUFXQSxFQUFZLE9BQVM2bUIsRUFBYzdtQixFQUFZLFFBQVU2bUIsRUFDdEhGLEVBQVcsTUFBTSxZQUFZLHVDQUF3QyxHQUFHM21CLEVBQVksZUFBZSxJQUFJLEVBQ3ZHNGlCLEVBQVksc0JBQXNCLEVBQ2xDLElBQU0xTyxFQUFhLENBRWpCc1AsR0FBUSxDQUFDLENBQ1AsVUFBQWhTLENBQ0YsSUFBTSxDQUNKLElBQU11VixFQUFlLENBQUMsQ0FBQ3ZWLEVBQVUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUM3QyxNQUFPLENBQ0wsU0FBVXNWLEVBQ1YsVUFBWUMsRUFBbUMsT0FBcEIvbUIsRUFBWSxNQUN2QyxjQUFlQSxFQUFZLEtBQzdCLENBQ0YsQ0FBQyxDQUNILEVBQ0EsR0FBSUEsRUFBWSxPQUFTLEdBQU8sQ0FDOUIsSUFBTXVYLEVBQXFCLE9BQU92WCxFQUFZLE1BQVMsU0FBV0EsRUFBWSxLQUFLLE1BQU0sR0FBRyxFQUFJLE9BQ2hHLEdBQUl1WCxJQUF1QixRQUFVLENBQUNBLEVBQW1CLE1BQU1vTyxFQUFnQixFQUM3RSxNQUFNLElBQUksTUFBTSxzREFBc0QsRUFFeEV6UixFQUFXLEtBQUt3UCxHQUFNLENBQ3BCLFFBQVMxakIsRUFBWSxnQkFDckIsbUJBQUF1WCxDQUNGLENBQUMsQ0FBQyxDQUNKLEVBQ0l2WCxFQUFZLE9BQVNBLEVBQVksVUFDbkNrVSxFQUFXLEtBQUt1UCxHQUFPLENBQ3JCLFNBQVV6akIsRUFBWSxNQUN0QixVQUFXQSxFQUFZLFFBQ3ZCLFFBQVNBLEVBQVksZUFDdkIsQ0FBQyxDQUFDLEVBRUprVSxFQUFXLEtBQUt5UCxHQUFNLENBQ3BCLFFBQVMzakIsRUFBWSxnQkFDckIsTUFBTSxDQUNKLGVBQUEwYSxFQUNBLGdCQUFBRCxFQUNBLE1BQUExSSxDQUNGLEVBQUcsQ0FDRCxJQUFNaVYsRUFBaUIsS0FBSyxNQUFNalYsRUFBTSxVQUFVLEtBQUssRUFDdkQySSxFQUFpQixLQUFLLE1BQU1BLENBQWMsRUFDMUNELEVBQWtCLEtBQUssTUFBTUEsQ0FBZSxFQUM1Q2tNLEVBQVcsTUFBTSxZQUFZLDJCQUE0QixHQUFHSyxDQUFjLElBQUksRUFDOUVMLEVBQVcsTUFBTSxZQUFZLHNDQUF1QyxHQUFHak0sQ0FBYyxJQUFJLEVBQ3pGaU0sRUFBVyxNQUFNLFlBQVksdUNBQXdDLEdBQUdsTSxDQUFlLElBQUksRUFDdkZ6YSxFQUFZLFlBQ2QybUIsRUFBVyxNQUFNLE1BQVEsR0FBR0ssQ0FBYyxNQUV4Q2huQixFQUFZLGNBQ2QybUIsRUFBVyxNQUFNLFNBQVcsR0FBR2pNLENBQWMsS0FDN0NpTSxFQUFXLE1BQU0sVUFBWSxHQUFHbE0sQ0FBZSxLQUVuRCxDQUNGLENBQUMsQ0FBQyxFQUNFemEsRUFBWSxrQkFDZGtVLEVBQVcsS0FBSzBQLEdBQU0sQ0FDcEIsUUFBUzVqQixFQUFZLGVBQ3ZCLENBQUMsQ0FBQyxFQUVBNG1CLEdBQ0YxUyxFQUFXLEtBQUsyUCxHQUFPLENBQ3JCLFFBQVMrQyxFQUNULFFBQVM1bUIsRUFBWSxZQUN2QixDQUFDLENBQUMsRUFFSixJQUFNaW5CLEVBQU0sTUFBTW5ELEdBQWlCbEIsRUFBYStELEVBQVksQ0FDMUQsVUFBVzNtQixFQUFZLFVBQ3ZCLFNBQVUsV0FDVixXQUFBa1UsRUFDQSxTQUFVLENBQ1IsR0FBR29OLEdBQ0gsTUFBTyxJQUFNbFgsRUFBVSxJQUFNLEtBQy9CLENBQ0YsQ0FBQyxFQUdELEdBRkFvYyxFQUFvQlMsRUFBSSxTQUFTLEVBQ2pDam5CLEVBQVksMkJBQTJCaW5CLEVBQUksU0FBUyxFQUNoRCxDQUFDTixFQUNILE9BRUZBLEVBQVcsTUFBTSxZQUFZLHVDQUF3Q2IsR0FBbUJtQixFQUFJLFVBQVc3YyxFQUFVLENBQUMsQ0FBQyxFQUNuSCxJQUFNek4sRUFBSSxLQUFLLE1BQU1zcUIsRUFBSSxDQUFDLEVBQ3BCcnFCLEVBQUksS0FBSyxNQUFNcXFCLEVBQUksQ0FBQyxFQUN0QnZyQixFQVVKLEdBVElzRSxFQUFZLG1CQUNkdEUsRUFBYXVyQixFQUFJLGVBQWUsTUFBTSxnQkFBa0IsU0FBVyxXQUVyRSxPQUFPLE9BQU9OLEVBQVcsTUFBTyxDQUM5QixJQUFLLElBQ0wsS0FBTSxJQUNOLFVBQVcsZUFBZWhxQixDQUFDLE9BQU9DLENBQUMsU0FDbkMsV0FBQWxCLENBQ0YsQ0FBQyxFQUNHa3JCLEdBQVdLLEVBQUksZUFBZSxNQUFPLENBQ3ZDLEdBQU0sQ0FDSixFQUFHQyxFQUNILEVBQUdDLENBQ0wsRUFBSUYsRUFBSSxlQUFlLE1BQ2pCeEMsRUFBTXdDLEVBQUksVUFBVSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQ3RDLE9BQU8sT0FBT0wsRUFBUSxNQUFPLENBQzNCLEtBQU1NLEdBQVUsS0FBTyxHQUFHQSxDQUFNLEtBQU8sR0FDdkMsSUFBS0MsR0FBVSxLQUFPLEdBQUdBLENBQU0sS0FBTyxHQUN0QyxDQUFDMUMsQ0FBRyxFQUFHLE1BQ1QsQ0FBQyxDQUNILENBQ0YsQ0FDQWw1QixFQUFhLElBQU0sQ0FDakIsSUFBTXEzQixFQUFjNkQsRUFBVSxFQUN4QkUsRUFBYVIsRUFBYyxFQUNqQyxHQUFJLENBQUN2RCxHQUFlLENBQUMrRCxFQUNuQixPQUVGLElBQU1TLEVBQW9CL0UsR0FBV08sRUFBYStELEVBQVlELEVBQWdCLENBRTVFLGNBQWUsT0FBTyxnQkFBbUIsVUFDM0MsQ0FBQyxFQUNEN2dDLEVBQVV1aEMsQ0FBaUIsQ0FDN0IsQ0FBQyxFQUNENzdCLEVBQWEsSUFBTSxDQUNqQixJQUFNODdCLEVBQWFsQixFQUFjLEVBQzNCbUIsRUFBVXRuQixFQUFZLGFBQWEsRUFDckMsQ0FBQ3FuQixHQUFjLENBQUNDLEdBR3BCLGVBQWUsSUFBTSxDQUNuQkQsRUFBVyxNQUFNLE9BQVMsaUJBQWlCQyxDQUFPLEVBQUUsTUFDdEQsQ0FBQyxDQUNILENBQUMsRUFDRCxJQUFNbm1CLEVBQVUsQ0FDZCxpQkFBQW9sQixFQUNBLFdBQVksSUFBTXZtQixFQUFZLGFBQWEsRUFDM0MsaUJBQUFvbUIsRUFDQSxZQUFBRSxDQUNGLEVBQ0EsT0FBTzE2QixFQUFnQnE0QixHQUFjLFNBQVUsQ0FDN0MsTUFBTzlpQixFQUNQLElBQUksVUFBVyxDQUNiLE9BQU9uQixFQUFZLFFBQ3JCLENBQ0YsQ0FBQyxDQUNILENBQ0EsSUFBSXVuQixHQUFTLE9BQU8sT0FBT3JCLEdBQVksQ0FDckMsTUFBTzFCLEdBQ1AsUUFBU1AsR0FDVCxpQkFBQUMsR0FDQSxXQUFZbUIsRUFDZCxDQUFDLEVBR0QsU0FBU21DLEdBQW9CaGhDLEVBQU8sQ0FDbEMsSUFBTWloQyxFQUFpQjl0QixHQUFVLENBQzNCQSxFQUFNLE1BQVFWLEdBQVMsUUFDekJ6UyxFQUFNLGtCQUFrQm1ULENBQUssQ0FFakMsRUFDQXBPLEVBQWEsSUFBTSxDQUlqQixHQUhJL0csSUFHQVksRUFBT29CLEVBQU0sVUFBVSxFQUN6QixPQUVGLElBQU1raEMsRUFBWWxoQyxFQUFNLGdCQUFnQixHQUFLb1MsR0FBWSxFQUN6RDh1QixFQUFVLGlCQUFpQixVQUFXRCxDQUFhLEVBQ25ENWhDLEVBQVUsSUFBTSxDQUNkNmhDLEVBQVUsb0JBQW9CLFVBQVdELENBQWEsQ0FDeEQsQ0FBQyxDQUNILENBQUMsQ0FDSCxDQUdBLElBQUlFLEdBQTZCLHFDQUM3QkMsR0FBc0IsK0JBQzFCLFNBQVNDLEdBQXNCcmhDLEVBQU9xUSxFQUFLLENBQ3pDLElBQUlpeEIsRUFDQUMsRUFBZXhyQixHQUNidVQsRUFBZ0IsSUFBTWxYLEdBQVkvQixFQUFJLENBQUMsRUFDdkNteEIsRUFBd0JuNEIsR0FBT3JKLEVBQU0sdUJBQXVCcUosQ0FBRSxFQUM5RG80QixFQUFrQnA0QixHQUFPckosRUFBTSxpQkFBaUJxSixDQUFFLEVBQ2xEcTRCLEVBQXFCcjRCLEdBQU9ySixFQUFNLG9CQUFvQnFKLENBQUUsRUFDeERzNEIsRUFBa0J0NEIsR0FBTyxDQUM3QixJQUFNdUcsRUFBU3ZHLEVBQUcsT0FVbEIsTUFUSSxFQUFFdUcsYUFBa0IsY0FHcEJBLEVBQU8sUUFBUSxJQUFJeVksRUFBbUIsR0FBRyxHQUd6QyxDQUFDdlcsR0FBU3dYLEVBQWMsRUFBRzFaLENBQU0sR0FHakNrQyxHQUFTekIsRUFBSSxFQUFHVCxDQUFNLEVBQ2pCLEdBRUYsQ0FBQzVQLEVBQU0sdUJBQXVCNFAsQ0FBTSxDQUM3QyxFQUNNOFYsRUFBaUJyYyxHQUFPLENBQzVCLFNBQVN5RyxHQUFVLENBQ2pCLElBQU11RSxFQUFZaEUsRUFBSSxFQUNoQlQsRUFBU3ZHLEVBQUcsT0FDbEIsR0FBSSxDQUFDZ0wsR0FBYSxDQUFDekUsR0FBVSxDQUFDK3hCLEVBQWV0NEIsQ0FBRSxFQUM3QyxPQUVGLElBQU11NEIsRUFBV3h1QixHQUFxQixDQUNwQ291QixFQUNBRSxDQUNGLENBQUMsRUFDRDl4QixFQUFPLGlCQUFpQnV4QixHQUE0QlMsRUFBVSxDQUM1RCxLQUFNLEVBQ1IsQ0FBQyxFQUNELElBQU1DLEVBQTBCLElBQUksWUFDbENWLEdBQ0EsQ0FDRSxRQUFTLEdBQ1QsV0FBWSxHQUNaLE9BQVEsQ0FDTixjQUFlOTNCLEVBQ2YsY0FBZUEsRUFBRyxTQUFXLEdBQUtpSyxHQUFVakssQ0FBRSxHQUFLQSxFQUFHLFNBQVcsQ0FDbkUsQ0FDRixDQUNGLEVBQ0F1RyxFQUFPLGNBQWNpeUIsQ0FBdUIsQ0FDOUMsQ0FDSXg0QixFQUFHLGNBQWdCLFNBQ3JCaWdCLEVBQWMsRUFBRSxvQkFBb0IsUUFBU3haLENBQU8sRUFDcER5eEIsRUFBZXp4QixFQUNmd1osRUFBYyxFQUFFLGlCQUFpQixRQUFTeFosRUFBUyxDQUFFLEtBQU0sRUFBSyxDQUFDLEdBRWpFQSxFQUFRLENBRVosRUFDTTZVLEVBQWF0YixHQUFPLENBQ3hCLElBQU1nTCxFQUFZaEUsRUFBSSxFQUNoQlQsRUFBU3ZHLEVBQUcsT0FDbEIsR0FBSSxDQUFDZ0wsR0FBYSxDQUFDekUsR0FBVSxDQUFDK3hCLEVBQWV0NEIsQ0FBRSxFQUM3QyxPQUVGLElBQU15RyxFQUFVc0QsR0FBcUIsQ0FDbkNxdUIsRUFDQUMsQ0FDRixDQUFDLEVBQ0Q5eEIsRUFBTyxpQkFBaUJ3eEIsR0FBcUJ0eEIsRUFBUyxDQUFFLEtBQU0sRUFBSyxDQUFDLEVBQ3BFLElBQU1neUIsRUFBb0IsSUFBSSxZQUFZVixHQUFxQixDQUM3RCxRQUFTLEdBQ1QsV0FBWSxHQUNaLE9BQVEsQ0FDTixjQUFlLzNCLEVBQ2YsY0FBZSxFQUNqQixDQUNGLENBQUMsRUFDRHVHLEVBQU8sY0FBY2t5QixDQUFpQixDQUN4QyxFQUNBLzhCLEVBQWEsSUFBTSxDQUNiL0csSUFHQVksRUFBT29CLEVBQU0sVUFBVSxJQUczQnNoQyxFQUF1QixPQUFPLFdBQVcsSUFBTSxDQUM3Q2hZLEVBQWMsRUFBRSxpQkFBaUIsY0FBZTVELEVBQWUsRUFBSSxDQUNyRSxFQUFHLENBQUMsRUFDSjRELEVBQWMsRUFBRSxpQkFBaUIsVUFBVzNFLEVBQVcsRUFBSSxFQUMzRHRsQixFQUFVLElBQU0sQ0FDZCxPQUFPLGFBQWFpaUMsQ0FBb0IsRUFDeENoWSxFQUFjLEVBQUUsb0JBQW9CLFFBQVNpWSxDQUFZLEVBQ3pEalksRUFBYyxFQUFFLG9CQUFvQixjQUFlNUQsRUFBZSxFQUFJLEVBQ3RFNEQsRUFBYyxFQUFFLG9CQUFvQixVQUFXM0UsRUFBVyxFQUFJLENBQ2hFLENBQUMsRUFDSCxDQUFDLENBQ0gsQ0FHQSxJQUFJb2QsR0FBMEJ0K0IsR0FBYyxFQUM1QyxTQUFTdStCLElBQXFDLENBQzVDLE9BQU9yK0IsR0FBV28rQixFQUF1QixDQUMzQyxDQUNBLFNBQVNFLEdBQWlCamlDLEVBQU8sQ0FDL0IsSUFBSXFRLEVBQ0U2eEIsRUFBZ0JGLEdBQW1DLEVBQ25ELENBQUNocEIsRUFBT0MsQ0FBTSxFQUFJQyxHQUFXbFosRUFBTyxDQUFDLE1BQU8sOEJBQStCLG1CQUFvQixrQkFBbUIsdUJBQXdCLGlCQUFrQixvQkFBcUIsWUFBYSx5QkFBeUIsQ0FBQyxFQUN4Tm1pQyxFQUErQixJQUFJLElBQUksQ0FBQyxDQUFDLEVBQ3pDQyxFQUF1Qjd2QixHQUFZLENBQ3ZDNHZCLEVBQWEsSUFBSTV2QixDQUFPLEVBQ3hCLElBQU04dkIsRUFBbUJILEdBQWUsb0JBQW9CM3ZCLENBQU8sRUFDbkUsTUFBTyxJQUFNLENBQ1g0dkIsRUFBYSxPQUFPNXZCLENBQU8sRUFDM0I4dkIsSUFBbUIsQ0FDckIsQ0FDRixFQTJCQWhCLEdBQXNCLENBQ3BCLHFCQTNCNEI5dUIsR0FDdkJsQyxFQUdFMkksRUFBTSxrQkFBa0IsS0FBTW5ZLEdBQVNpUixHQUFTalIsRUFBSyxFQUFHMFIsQ0FBTyxDQUFDLEdBQUssQ0FBQyxHQUFHNHZCLENBQVksRUFBRSxLQUFNelosR0FBVTVXLEdBQVM0VyxFQUFPblcsQ0FBTyxDQUFDLEVBRjdILEdBMEJULHFCQXRCNEJsSixHQUFPLENBQy9CLENBQUNnSCxHQUFPbVosR0FBVyw0QkFBNEJuWixDQUFHLEdBR2xELENBQUMySSxFQUFNLHlCQUEyQixDQUFDd1EsR0FBVyxlQUFlblosQ0FBRyxJQUdwRTJJLEVBQU0sdUJBQXVCM1AsQ0FBRSxFQUMvQjJQLEVBQU0sb0JBQW9CM1AsQ0FBRSxFQUN2QkEsRUFBRyxrQkFDTjJQLEVBQU0sWUFBWSxFQUV0QixFQVdFLGVBVnNCM1AsR0FBTyxDQUM3QjJQLEVBQU0saUJBQWlCM1AsQ0FBRSxFQUN6QjJQLEVBQU0sb0JBQW9CM1AsQ0FBRSxFQUN2QkEsRUFBRyxrQkFDTjJQLEVBQU0sWUFBWSxDQUV0QixDQUtBLEVBQUcsSUFBTTNJLENBQUcsRUFDWjJ3QixHQUFvQixDQUNsQixjQUFlLElBQU01dUIsR0FBWS9CLENBQUcsRUFDcEMsZ0JBQWtCaEgsR0FBTyxDQUNuQixDQUFDZ0gsR0FBTyxDQUFDbVosR0FBVyxlQUFlblosQ0FBRyxJQUcxQzJJLEVBQU0sa0JBQWtCM1AsQ0FBRSxFQUN0QixDQUFDQSxFQUFHLGtCQUFvQjJQLEVBQU0sWUFDaEMzUCxFQUFHLGVBQWUsRUFDbEIyUCxFQUFNLFVBQVUsR0FFcEIsQ0FDRixDQUFDLEVBQ0R0WCxHQUFRLElBQU0sQ0FDWixHQUFJLENBQUMyTyxFQUNILE9BRUZtWixHQUFXLFNBQVMsQ0FDbEIsS0FBTW5aLEVBQ04sa0JBQW1CMkksRUFBTSw0QkFDekIsUUFBU0EsRUFBTSxTQUNqQixDQUFDLEVBQ0QsSUFBTXNwQixFQUE0QkosR0FBZSxvQkFBb0I3eEIsQ0FBRyxFQUN4RW1aLEdBQVcsMkJBQTJCLEVBQ3RDQSxHQUFXLHlCQUF5Qm5aLENBQUcsRUFDdkNoUixFQUFVLElBQU0sQ0FDVGdSLElBR0xtWixHQUFXLFlBQVluWixDQUFHLEVBQzFCaXlCLElBQTRCLEVBQzVCOVksR0FBVywyQkFBMkIsRUFDdENBLEdBQVcseUJBQXlCblosQ0FBRyxFQUN6QyxDQUFDLENBQ0gsQ0FBQyxFQUNEdEwsRUFBYXFXLEdBQUcsQ0FBQyxJQUFNL0ssRUFBSyxJQUFNMkksRUFBTSwyQkFBMkIsRUFBRyxDQUFDLENBQUN1cEIsRUFBTUMsQ0FBMkIsSUFBTSxDQUM3RyxHQUFJLENBQUNELEVBQ0gsT0FFRixJQUFNN1osRUFBUWMsR0FBVyxLQUFLK1ksQ0FBSSxFQUM5QjdaLEdBQVNBLEVBQU0sb0JBQXNCOFosSUFDdkM5WixFQUFNLGtCQUFvQjhaLEVBQzFCaFosR0FBVywyQkFBMkIsR0FFcENnWixHQUNGaFosR0FBVyx5QkFBeUIrWSxDQUFJLEVBRTFDbGpDLEVBQVUsSUFBTSxDQUNkbXFCLEdBQVcseUJBQXlCK1ksQ0FBSSxDQUMxQyxDQUFDLENBQ0gsRUFBRyxDQUNELE1BQU8sRUFDVCxDQUFDLENBQUMsRUFDRixJQUFNNW5CLEVBQVUsQ0FDZCxvQkFBQXluQixDQUNGLEVBQ0EsT0FBT2g5QixFQUFnQjI4QixHQUF3QixTQUFVLENBQ3ZELE1BQU9wbkIsRUFDUCxJQUFJLFVBQVcsQ0FDYixPQUFPdlYsRUFBZ0IyVCxHQUFhakMsRUFBVyxDQUM3QyxHQUFJLE1BQ0osSUFBSW1FLEVBQUksQ0FDTixJQUFNQyxFQUFROU8sR0FBV1YsR0FBTzJFLEVBQU0zRSxFQUFJc04sRUFBTSxHQUFHLEVBQ25ELE9BQU9rQyxHQUFVLFlBQWNBLEVBQU1ELENBQUUsQ0FDekMsQ0FDRixFQUFHaEMsQ0FBTSxDQUFDLENBQ1osQ0FDRixDQUFDLENBQ0gsQ0FHQSxTQUFTd3BCLEdBQXNCemlDLEVBQVEsQ0FBQyxFQUFHLENBQ3pDLEdBQU0sQ0FBQzBpQyxFQUFRQyxDQUFTLEVBQUk3bUIsR0FBZ0MsQ0FDMUQsTUFBTyxJQUFNbGQsRUFBT29CLEVBQU0sSUFBSSxFQUM5QixhQUFjLElBQU0sQ0FBQyxDQUFDcEIsRUFBT29CLEVBQU0sV0FBVyxFQUM5QyxTQUFXakIsR0FBVWlCLEVBQU0sZUFBZWpCLENBQUssQ0FDakQsQ0FBQyxFQUNLNmpDLEVBQU8sSUFBTSxDQUNqQkQsRUFBVSxFQUFJLENBQ2hCLEVBQ01FLEVBQVEsSUFBTSxDQUNsQkYsRUFBVSxFQUFLLENBQ2pCLEVBSUEsTUFBTyxDQUNMLE9BQUFELEVBQ0EsVUFBQUMsRUFDQSxLQUFBQyxFQUNBLE1BQUFDLEVBQ0EsT0FSYSxJQUFNLENBQ25CSCxFQUFPLEVBQUlHLEVBQU0sRUFBSUQsRUFBSyxDQUM1QixDQU9BLENBQ0YsQ0FHQSxJQUFJRSxHQUFzQixDQUFDLEVBQzNCem1CLEdBQVN5bUIsR0FBcUIsQ0FDNUIsWUFBYSxJQUFNbG9CLEdBQ25CLGFBQWMsSUFBTUMsR0FDcEIsS0FBTSxJQUFNa29CLEdBQ1osWUFBYSxJQUFNQyxHQUNuQixnQkFBaUIsSUFBTUMsR0FDdkIsY0FBZSxJQUFNQyxHQUNyQixVQUFXLElBQU1DLEdBQ2pCLFVBQVcsSUFBTUMsR0FDakIsTUFBTyxJQUFNQyxHQUNiLFdBQVksSUFBTUMsR0FDbEIsS0FBTSxJQUFNQyxFQUNkLENBQUMsRUFDRCxJQUFJQyxHQUFvQi8vQixHQUFjLEVBQ3RDLFNBQVNnZ0MsSUFBdUIsQ0FDOUIsSUFBTTlvQixFQUFVaFgsR0FBVzYvQixFQUFpQixFQUM1QyxHQUFJN29CLElBQVksT0FDZCxNQUFNLElBQUksTUFBTSxnRkFBZ0YsRUFFbEcsT0FBT0EsQ0FDVCxDQUNBLElBQUkrb0IsR0FBd0JqZ0MsR0FBYyxFQUMxQyxTQUFTa2dDLElBQTJCLENBQ2xDLElBQU1ocEIsRUFBVWhYLEdBQVcrL0IsRUFBcUIsRUFDaEQsR0FBSS9vQixJQUFZLE9BQ2QsTUFBTSxJQUFJLE1BQU0seUZBQXlGLEVBRTNHLE9BQU9BLENBQ1QsQ0FDQSxTQUFTb29CLEdBQWUvaUMsRUFBTyxDQUM3QixJQUFNNGpDLEVBQXFCbHBCLEdBQXNCLEVBQzNDbXBCLEVBQW9CSixHQUFxQixFQUN6Q25xQixFQUFZLEdBQUdzcUIsRUFBbUIsV0FBVyxNQUFNLENBQUMsSUFBSXJxQixHQUFlLENBQUMsR0FDeEVDLEVBQWM1QyxFQUFrQixDQUNwQyxHQUFJMEMsQ0FDTixFQUFHdFosQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxRQUFTLFdBQVksZUFBZSxDQUFDLEVBQ2hGLENBQUNzcUIsRUFBU0MsQ0FBVSxFQUFJNWpDLEVBQWEsRUFDckMsQ0FBQ3NaLEVBQVNDLENBQVUsRUFBSXZaLEVBQWEsRUFDckMsQ0FBQzBaLEVBQWVDLENBQWdCLEVBQUkzWixFQUFhLEVBQ2pELENBQUM2akMsRUFBVUMsQ0FBVyxFQUFJOWpDLEVBQWEsRUFDdkMsQ0FBQzRoQixFQUFXbWlCLENBQVksRUFBSS9qQyxFQUFhLEVBQUssRUFDOUMrYixFQUFhL1csRUFBVyxJQUNyQjArQixFQUFrQixnQkFBZ0I3cUIsRUFBTSxLQUFLLENBQ3JELEVBQ0t1TSxFQUFhcGdCLEVBQVcsSUFDckI2VCxFQUFNLFVBQVk0cUIsRUFBbUIsV0FBVyxHQUFLLEVBQzdELEVBQ0tsZSxFQUFpQnJjLEdBQU8sQ0FDNUI2SixHQUFZN0osRUFBSTJQLEVBQU0sYUFBYSxFQUMvQitJLEVBQVUsR0FDWjFZLEVBQUcsZUFBZSxDQUV0QixFQUNNbVIsRUFBVXJWLEVBQVcsS0FBTyxDQUNoQyxHQUFHeStCLEVBQW1CLFFBQVEsRUFDOUIsZ0JBQWlCcmUsRUFBVyxFQUFJLEdBQUssT0FDckMsZUFBZ0JySixFQUFXLEVBQUksR0FBSyxNQUN0QyxFQUFFLEVBQ0l2QixFQUFVLENBQ2QsTUFBTyxJQUFNM0IsRUFBTSxNQUNuQixRQUFBd0IsRUFDQSxXQUFBMEIsRUFDQSxXQUFBcUosRUFDQSxRQUFBdWUsRUFDQSxRQUFBcnFCLEVBQ0EsY0FBQUksRUFDQSxTQUFBbXFCLEVBQ0EsT0FBUSxJQUFNSCxFQUFrQixpQkFBaUI3cUIsRUFBTSxLQUFLLEVBQzVELFdBQVlySCxHQUFpQixJQUFNc0gsRUFBTyxFQUFFLEVBQzVDLGNBQWVQLEdBQWlCcXJCLENBQVUsRUFDMUMsY0FBZXJyQixHQUFpQmdCLENBQVUsRUFDMUMsb0JBQXFCaEIsR0FBaUJvQixDQUFnQixFQUN0RCxhQUFBb3FCLEVBQ0EsWUFBQUQsQ0FDRixFQUNBLE9BQU83K0IsRUFBZ0JzK0IsR0FBc0IsU0FBVSxDQUNyRCxNQUFPL29CLEVBQ1AsSUFBSSxVQUFXLENBQ2IsT0FBT3ZWLEVBQWdCMlQsR0FBYWpDLEVBQVcsQ0FDN0MsR0FBSSxNQUNKLEtBQU0sUUFDTixjQUFBNE8sQ0FDRixFQUFHbEwsRUFBU3ZCLENBQU0sQ0FBQyxDQUNyQixDQUNGLENBQUMsQ0FDSCxDQUNBLFNBQVMrcEIsR0FBc0JoakMsRUFBTyxDQUNwQyxJQUFNMmEsRUFBVWdwQixHQUF5QixFQUNuQ25xQixFQUFjNUMsRUFBa0IsQ0FDcEMsR0FBSStELEVBQVEsV0FBVyxTQUFTLENBQ2xDLEVBQUczYSxDQUFLLEVBQ0YsQ0FBQ2daLEVBQU9DLENBQU0sRUFBSUMsR0FBV00sRUFBYSxDQUFDLFVBQVcsV0FBVyxDQUFDLEVBYXhFLE9BQU9wVSxFQUFnQjJULEdBQWFqQyxFQUFXLENBQzdDLEdBQUksTUFDSixRQWRlek4sR0FBTyxDQUN0QjZKLEdBQVk3SixFQUFJMlAsRUFBTSxPQUFPLEVBQzdCMkIsRUFBUSxPQUFPLEVBQ2ZBLEVBQVEsU0FBUyxHQUFHLE1BQU0sQ0FDNUIsRUFXRSxVQVZpQnRSLEdBQU8sQ0FDeEI2SixHQUFZN0osRUFBSTJQLEVBQU0sU0FBUyxFQUMzQjNQLEVBQUcsTUFBUW9KLEdBQVMsUUFDdEJrSSxFQUFRLE9BQU8sRUFDZkEsRUFBUSxTQUFTLEdBQUcsTUFBTSxFQUU5QixDQUtBLEVBQUcsSUFBTUEsRUFBUSxRQUFRLEVBQUcxQixDQUFNLENBQUMsQ0FDckMsQ0FDQSxTQUFTZ3FCLEdBQTBCampDLEVBQU8sQ0FDeEMsSUFBTTJhLEVBQVVncEIsR0FBeUIsRUFDbkNucUIsRUFBYzVDLEVBQWtCLENBQ3BDLEdBQUkrRCxFQUFRLFdBQVcsYUFBYSxDQUN0QyxFQUFHM2EsQ0FBSyxFQUNSLE9BQUErRSxFQUFhLElBQU0xRixFQUFVc2IsRUFBUSxvQkFBb0JuQixFQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQ2xFcFUsRUFBZ0IyVCxHQUFhakMsRUFBVyxDQUM3QyxHQUFJLEtBQ04sRUFBRyxJQUFNNkQsRUFBUSxRQUFRLEVBQUduQixDQUFXLENBQUMsQ0FDMUMsQ0FDQSxTQUFTMHBCLEdBQXdCbGpDLEVBQU8sQ0FDdEMsSUFBTTJhLEVBQVVncEIsR0FBeUIsRUFDbkNucUIsRUFBYzVDLEVBQWtCLENBQ3BDLEdBQUkrRCxFQUFRLFdBQVcsV0FBVyxDQUNwQyxFQUFHM2EsQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxNQUFPLFlBQVksQ0FBQyxFQUMvRCxDQUFDbkosRUFBSzh6QixDQUFNLEVBQUloa0MsRUFBYSxFQUM3QixDQUNKLFFBQUFpa0MsQ0FDRixFQUFJaGMsR0FBWSxDQUNkLEtBQU0sSUFBTXBQLEVBQU0sWUFBYzJCLEVBQVEsV0FBVyxFQUNuRCxRQUFTLElBQU10SyxFQUFJLEdBQUssSUFDMUIsQ0FBQyxFQUNELE9BQU9qTCxFQUFnQjJWLEVBQU0sQ0FDM0IsSUFBSSxNQUFPLENBQ1QsT0FBT3FwQixFQUFRLENBQ2pCLEVBQ0EsSUFBSSxVQUFXLENBQ2IsT0FBT2gvQixFQUFnQjJULEdBQWFqQyxFQUFXLENBQzdDLEdBQUksTUFDSixJQUFJbUUsRUFBSSxDQUNOLElBQU1DLEVBQVE5TyxHQUFVKzNCLEVBQVFuckIsRUFBTSxHQUFHLEVBQ3pDLE9BQU9rQyxHQUFVLFlBQWNBLEVBQU1ELENBQUUsQ0FDekMsQ0FDRixFQUFHLElBQU1OLEVBQVEsUUFBUSxFQUFHMUIsQ0FBTSxDQUFDLENBQ3JDLENBQ0YsQ0FBQyxDQUNILENBQ0EsU0FBU2txQixHQUFvQm5qQyxFQUFPLENBQ2xDLElBQU00akMsRUFBcUJscEIsR0FBc0IsRUFDM0NtcEIsRUFBb0JKLEdBQXFCLEVBQ3pDWSxFQUFlVixHQUF5QixFQUN4Q25xQixFQUFjNUMsRUFBa0IsQ0FDcEMsR0FBSXl0QixFQUFhLFdBQVcsT0FBTyxDQUNyQyxFQUFHcmtDLENBQUssRUFDRixDQUFDZ1osRUFBT0MsQ0FBTSxFQUFJQyxHQUFXTSxFQUFhLENBQUMsTUFBTyxRQUFTLGtCQUFtQixtQkFBb0IsV0FBWSxVQUFXLFFBQVEsQ0FBQyxFQUNsSThxQixFQUFpQixJQUNkLENBQ0x0ckIsRUFBTSxpQkFBaUIsRUFDdkJxckIsRUFBYSxRQUFRLEVBRXJCcnJCLEVBQU0saUJBQWlCLEdBQUssTUFBUUMsRUFBTyxZQUFZLEdBQUssS0FBT0EsRUFBTyxHQUFLLE1BQ2pGLEVBQUUsT0FBTyxPQUFPLEVBQUUsS0FBSyxHQUFHLEdBQUssT0FFM0JzckIsRUFBa0IsSUFDZixDQUFDdnJCLEVBQU0sa0JBQWtCLEVBQUdxckIsRUFBYSxjQUFjLEVBQUdSLEVBQWtCLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxPQUFPLEVBQUUsS0FBSyxHQUFHLEdBQUssT0FFL0gsQ0FBQ1csRUFBdUJDLENBQXdCLEVBQUl0a0MsRUFBYSxFQUFLLEVBQ3RFOEssRUFBWTVCLEdBQU8sQ0FHdkIsR0FGQTZKLEdBQVk3SixFQUFJMlAsRUFBTSxRQUFRLEVBQzlCM1AsRUFBRyxnQkFBZ0IsRUFDZixDQUFDbTdCLEVBQXNCLEVBQUcsQ0FDNUJYLEVBQWtCLGlCQUFpQlEsRUFBYSxNQUFNLENBQUMsRUFDdkQsSUFBTXowQixFQUFTdkcsRUFBRyxPQUNsQnVHLEVBQU8sUUFBVXkwQixFQUFhLFdBQVcsQ0FDM0MsQ0FDQUksRUFBeUIsRUFBSyxDQUNoQyxFQUNNNWUsRUFBV3hjLEdBQU8sQ0FDdEI2SixHQUFZN0osRUFBSTJQLEVBQU0sT0FBTyxFQUM3QnFyQixFQUFhLGFBQWEsRUFBSSxDQUNoQyxFQUNNSyxFQUFVcjdCLEdBQU8sQ0FDckI2SixHQUFZN0osRUFBSTJQLEVBQU0sTUFBTSxFQUM1QnFyQixFQUFhLGFBQWEsRUFBSyxDQUNqQyxFQUNBLE9BQUF0L0IsRUFBYXFXLEdBQUcsQ0FBQyxJQUFNaXBCLEVBQWEsV0FBVyxFQUFHLElBQU1BLEVBQWEsTUFBTSxDQUFDLEVBQUkzNkIsR0FBTyxDQUNyRixHQUFJLENBQUNBLEVBQUcsQ0FBQyxHQUFLQSxFQUFHLENBQUMsSUFBTTI2QixFQUFhLE1BQU0sRUFDekMsT0FDRkksRUFBeUIsRUFBSSxFQUM3QixJQUFNcDBCLEVBQU1nMEIsRUFBYSxTQUFTLEVBQ2xDaDBCLEdBQUssY0FBYyxJQUFJLE1BQU0sUUFBUyxDQUNwQyxRQUFTLEdBQ1QsV0FBWSxFQUNkLENBQUMsQ0FBQyxFQUNGQSxHQUFLLGNBQWMsSUFBSSxNQUFNLFNBQVUsQ0FDckMsUUFBUyxHQUNULFdBQVksRUFDZCxDQUFDLENBQUMsQ0FDSixFQUFHLENBQ0QsTUFBTyxFQUNULENBQUMsQ0FBQyxFQUNGdEwsRUFBYSxJQUFNMUYsRUFBVWdsQyxFQUFhLGNBQWNwckIsRUFBTyxFQUFFLENBQUMsQ0FBQyxFQUM1RDdULEVBQWdCMlQsR0FBYWpDLEVBQVcsQ0FDN0MsR0FBSSxRQUNKLElBQUltRSxFQUFJLENBQ04sSUFBTUMsRUFBUTlPLEdBQVVpNEIsRUFBYSxZQUFhcnJCLEVBQU0sR0FBRyxFQUMzRCxPQUFPa0MsR0FBVSxZQUFjQSxFQUFNRCxDQUFFLENBQ3pDLEVBQ0EsS0FBTSxRQUNOLElBQUksTUFBTyxDQUNULE9BQU8yb0IsRUFBbUIsS0FBSyxDQUNqQyxFQUNBLElBQUksT0FBUSxDQUNWLE9BQU9TLEVBQWEsTUFBTSxDQUM1QixFQUNBLElBQUksU0FBVSxDQUNaLE9BQU9BLEVBQWEsV0FBVyxDQUNqQyxFQUNBLElBQUksVUFBVyxDQUNiLE9BQU9ULEVBQW1CLFdBQVcsQ0FDdkMsRUFDQSxJQUFJLFVBQVcsQ0FDYixPQUFPUyxFQUFhLFdBQVcsQ0FDakMsRUFDQSxJQUFJLFVBQVcsQ0FDYixPQUFPVCxFQUFtQixXQUFXLENBQ3ZDLEVBQ0EsSUFBSSxPQUFRLENBQ1YsT0FBTzF5QixHQUFhLENBQ2xCLEdBQUd1SCxFQUNMLEVBQUdPLEVBQU0sS0FBSyxDQUNoQixFQUNBLEdBQUssbUJBQXFCLENBQ3hCLE9BQU9zckIsRUFBZSxDQUN4QixFQUNBLEdBQUssb0JBQXNCLENBQ3pCLE9BQU9DLEVBQWdCLENBQ3pCLEVBQ0EsU0FBQXQ1QixFQUNBLFFBQUE0YSxFQUNBLE9BQUE2ZSxDQUNGLEVBQUcsSUFBTUwsRUFBYSxRQUFRLEVBQUdwckIsQ0FBTSxDQUFDLENBQzFDLENBQ0EsU0FBU21xQixHQUFvQnBqQyxFQUFPLENBQ2xDLElBQU0yYSxFQUFVZ3BCLEdBQXlCLEVBQ25DbnFCLEVBQWM1QyxFQUFrQixDQUNwQyxHQUFJK0QsRUFBUSxXQUFXLE9BQU8sQ0FDaEMsRUFBRzNhLENBQUssRUFDUixPQUFBK0UsRUFBYSxJQUFNMUYsRUFBVXNiLEVBQVEsY0FBY25CLEVBQVksRUFBRSxDQUFDLENBQUMsRUFDNURwVSxFQUFnQjJULEdBQWFqQyxFQUFXLENBQzdDLEdBQUksUUFDSixJQUFLLEtBQVMsQ0FDWixPQUFPNkQsRUFBUSxRQUFRLENBQ3pCLENBQ0YsRUFBRyxJQUFNQSxFQUFRLFFBQVEsRUFBR25CLENBQVcsQ0FBQyxDQUMxQyxDQUNBLFNBQVM2cEIsR0FBZ0JyakMsRUFBTyxDQUM5QixPQUFPb0YsRUFBZ0I0VixHQUFrQmxFLEVBQVcsQ0FDbEQsR0FBSSxNQUNOLEVBQUc5VyxDQUFLLENBQUMsQ0FDWCxDQUNBLFNBQVN1akMsR0FBZXZqQyxFQUFPLENBQzdCLElBQUlxUSxFQUNFaUosRUFBWSxjQUFjQyxHQUFlLENBQUMsR0FDMUNDLEVBQWM1QyxFQUFrQixDQUNwQyxHQUFJMEMsRUFDSixZQUFhLFVBQ2YsRUFBR3RaLENBQUssRUFDRixDQUFDZ1osRUFBTzJyQixFQUFrQjFyQixDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxNQUFPLFFBQVMsZUFBZ0IsV0FBWSxjQUFlLGtCQUFtQixrQkFBa0IsRUFBR0osRUFBdUIsRUFDdkwsQ0FBQ3dyQixFQUFVQyxDQUFXLEVBQUlwcEIsR0FBeUIsQ0FDdkQsTUFBTyxJQUFNekMsRUFBTSxNQUNuQixhQUFjLElBQU1BLEVBQU0sYUFDMUIsU0FBV2phLEdBQVVpYSxFQUFNLFdBQVdqYSxDQUFLLENBQzdDLENBQUMsRUFDSyxDQUNKLG1CQUFBNmtDLENBQ0YsRUFBSXZxQixHQUFrQnNyQixDQUFnQixFQUN0Q3hwQixHQUF3QixJQUFNOUssRUFBSyxJQUFNdzBCLEVBQVk3ckIsRUFBTSxjQUFnQixFQUFFLENBQUMsRUFDOUUsSUFBTXNyQixFQUFpQixJQUNkVixFQUFtQixrQkFBa0JobEMsRUFBTytsQyxFQUFpQixFQUFFLEVBQUcxckIsRUFBTyxZQUFZLEVBQUdELEVBQU0saUJBQWlCLENBQUMsRUFFbkh1ckIsRUFBa0IsSUFDZlgsRUFBbUIsbUJBQW1CNXFCLEVBQU0sa0JBQWtCLENBQUMsRUFFbEU4ckIsRUFBbUIvbEMsR0FDaEJBLElBQVU2bEMsRUFBUyxFQUV0QmpxQixFQUFVLENBQ2QsZ0JBQUE0cEIsRUFDQSxnQkFBQU8sRUFDQSxpQkFBbUIvbEMsR0FBVSxDQUMzQixHQUFJLEVBQUE2a0MsRUFBbUIsV0FBVyxHQUFLQSxFQUFtQixXQUFXLEtBR3JFaUIsRUFBWTlsQyxDQUFLLEVBQ2JzUixHQUNGLFFBQVczRSxLQUFNMkUsRUFBSSxpQkFBaUIsZ0JBQWdCLEVBQUcsQ0FDdkQsSUFBTTAwQixFQUFRcjVCLEVBQ2RxNUIsRUFBTSxRQUFVRCxFQUFnQkMsRUFBTSxLQUFLLENBQzdDLENBQ0osQ0FDRixFQUNBLE9BQU8zL0IsRUFBZ0JxVixHQUFtQixTQUFVLENBQ2xELE1BQU9tcEIsRUFDUCxJQUFJLFVBQVcsQ0FDYixPQUFPeCtCLEVBQWdCbytCLEdBQWtCLFNBQVUsQ0FDakQsTUFBTzdvQixFQUNQLElBQUksVUFBVyxDQUNiLE9BQU92VixFQUFnQjJULEdBQWFqQyxFQUFXLENBQzdDLEdBQUksTUFDSixJQUFJbUUsRUFBSSxDQUNOLElBQU1DLEVBQVE5TyxHQUFXVixHQUFPMkUsRUFBTTNFLEVBQUlzTixFQUFNLEdBQUcsRUFDbkQsT0FBT2tDLEdBQVUsWUFBY0EsRUFBTUQsQ0FBRSxDQUN6QyxFQUNBLEtBQU0sYUFDTixJQUFJLElBQUssQ0FDUCxPQUFPcmMsRUFBTytsQyxFQUFpQixFQUFFLENBQ25DLEVBQ0EsR0FBSyxnQkFBa0IsQ0FDckIsT0FBT2YsRUFBbUIsZ0JBQWdCLElBQU0sV0FBYSxNQUMvRCxFQUNBLEdBQUssaUJBQW1CLENBQ3RCLE9BQU9BLEVBQW1CLFdBQVcsR0FBSyxNQUM1QyxFQUNBLEdBQUssaUJBQW1CLENBQ3RCLE9BQU9BLEVBQW1CLFdBQVcsR0FBSyxNQUM1QyxFQUNBLEdBQUssaUJBQW1CLENBQ3RCLE9BQU9BLEVBQW1CLFdBQVcsR0FBSyxNQUM1QyxFQUNBLEdBQUssb0JBQXNCLENBQ3pCLE9BQU81cUIsRUFBTSxXQUNmLEVBQ0EsR0FBSyxtQkFBcUIsQ0FDeEIsT0FBT3NyQixFQUFlLENBQ3hCLEVBQ0EsR0FBSyxvQkFBc0IsQ0FDekIsT0FBT0MsRUFBZ0IsQ0FDekIsQ0FDRixFQUFHLElBQU1YLEVBQW1CLFFBQVEsRUFBRzNxQixDQUFNLENBQUMsQ0FDaEQsQ0FDRixDQUFDLENBQ0gsQ0FDRixDQUFDLENBQ0gsQ0FDQSxJQUFJcXFCLEdBQWEsT0FBTyxPQUFPQyxHQUFnQixDQUM3QyxZQUFhM29CLEdBQ2IsYUFBY0MsR0FDZCxLQUFNa29CLEdBQ04sWUFBYUMsR0FDYixnQkFBaUJDLEdBQ2pCLGNBQWVDLEdBQ2YsVUFBV0MsR0FDWCxVQUFXQyxHQUNYLE1BQU9DLEVBQ1QsQ0FBQyxFQUdHMkIsR0FBdUIsS0FBTSxDQUMvQixXQUNBLElBQ0EsU0FDQSxZQUFZOWUsRUFBWTdWLEVBQUsyUSxFQUFVLENBQ3JDLEtBQUssV0FBYWtGLEVBQ2xCLEtBQUssSUFBTTdWLEVBQ1gsS0FBSyxTQUFXMlEsQ0FDbEIsQ0FDQSxZQUFZcGdCLEVBQUssQ0FDZixJQUFJcWtDLEVBQVcsS0FBSyxXQUFXLEVBQUUsWUFBWXJrQyxDQUFHLEVBQ2hELEtBQU9xa0MsR0FBWSxNQUFNLENBQ3ZCLElBQU1oL0IsRUFBTyxLQUFLLFdBQVcsRUFBRSxRQUFRZy9CLENBQVEsRUFDL0MsR0FBSWgvQixHQUFRQSxFQUFLLE9BQVMsUUFBVSxDQUFDQSxFQUFLLFNBQ3hDLE9BQU9nL0IsRUFFVEEsRUFBVyxLQUFLLFdBQVcsRUFBRSxZQUFZQSxDQUFRLENBQ25ELENBQ0YsQ0FDQSxZQUFZcmtDLEVBQUssQ0FDZixJQUFJc2tDLEVBQVksS0FBSyxXQUFXLEVBQUUsYUFBYXRrQyxDQUFHLEVBQ2xELEtBQU9za0MsR0FBYSxNQUFNLENBQ3hCLElBQU1qL0IsRUFBTyxLQUFLLFdBQVcsRUFBRSxRQUFRaS9CLENBQVMsRUFDaEQsR0FBSWovQixHQUFRQSxFQUFLLE9BQVMsUUFBVSxDQUFDQSxFQUFLLFNBQ3hDLE9BQU9pL0IsRUFFVEEsRUFBWSxLQUFLLFdBQVcsRUFBRSxhQUFhQSxDQUFTLENBQ3RELENBQ0YsQ0FDQSxhQUFjLENBQ1osSUFBSXRrQyxFQUFNLEtBQUssV0FBVyxFQUFFLFlBQVksRUFDeEMsS0FBT0EsR0FBTyxNQUFNLENBQ2xCLElBQU1xRixFQUFPLEtBQUssV0FBVyxFQUFFLFFBQVFyRixDQUFHLEVBQzFDLEdBQUlxRixHQUFRQSxFQUFLLE9BQVMsUUFBVSxDQUFDQSxFQUFLLFNBQ3hDLE9BQU9yRixFQUVUQSxFQUFNLEtBQUssV0FBVyxFQUFFLFlBQVlBLENBQUcsQ0FDekMsQ0FDRixDQUNBLFlBQWEsQ0FDWCxJQUFJQSxFQUFNLEtBQUssV0FBVyxFQUFFLFdBQVcsRUFDdkMsS0FBT0EsR0FBTyxNQUFNLENBQ2xCLElBQU1xRixFQUFPLEtBQUssV0FBVyxFQUFFLFFBQVFyRixDQUFHLEVBQzFDLEdBQUlxRixHQUFRQSxFQUFLLE9BQVMsUUFBVSxDQUFDQSxFQUFLLFNBQ3hDLE9BQU9yRixFQUVUQSxFQUFNLEtBQUssV0FBVyxFQUFFLGFBQWFBLENBQUcsQ0FDMUMsQ0FDRixDQUNBLFFBQVFBLEVBQUssQ0FDWCxPQUFPLEtBQUssTUFBTSxHQUFHLGNBQWMsY0FBY0EsQ0FBRyxJQUFJLEdBQUssSUFDL0QsQ0FFQSxnQkFBZ0JBLEVBQUssQ0FDbkIsSUFBTXVrQyxFQUFPLEtBQUssTUFBTSxFQUNwQmwvQixFQUFPLEtBQUssUUFBUXJGLENBQUcsRUFDM0IsR0FBSSxDQUFDdWtDLEdBQVEsQ0FBQ2wvQixFQUNaLE9BRUYsSUFBTW0vQixFQUFRLEtBQUssSUFDakIsRUFDQW4vQixFQUFLLFVBQVlBLEVBQUssYUFBZWsvQixFQUFLLFlBQzVDLEVBQ0lFLEVBQVd6a0MsRUFDZixLQUFPeWtDLEdBQVlwL0IsR0FBUUEsRUFBSyxVQUFZbS9CLEdBQzFDQyxFQUFXLEtBQUssWUFBWUEsQ0FBUSxFQUNwQ3AvQixFQUFPby9CLEdBQVksS0FBTyxLQUFLLFFBQVFBLENBQVEsRUFBSSxLQUVyRCxPQUFPQSxDQUNULENBRUEsZ0JBQWdCemtDLEVBQUssQ0FDbkIsSUFBTXVrQyxFQUFPLEtBQUssTUFBTSxFQUNwQmwvQixFQUFPLEtBQUssUUFBUXJGLENBQUcsRUFDM0IsR0FBSSxDQUFDdWtDLEdBQVEsQ0FBQ2wvQixFQUNaLE9BRUYsSUFBTW0vQixFQUFRLEtBQUssSUFDakJELEVBQUssYUFDTGwvQixFQUFLLFVBQVlBLEVBQUssYUFBZWsvQixFQUFLLFlBQzVDLEVBQ0lHLEVBQVcxa0MsRUFDZixLQUFPMGtDLEdBQVlyL0IsR0FBUUEsRUFBSyxVQUFZbS9CLEdBQzFDRSxFQUFXLEtBQUssWUFBWUEsQ0FBUSxFQUNwQ3IvQixFQUFPcS9CLEdBQVksS0FBTyxLQUFLLFFBQVFBLENBQVEsRUFBSSxLQUVyRCxPQUFPQSxDQUNULENBQ0EsZ0JBQWdCeGlCLEVBQVF5aUIsRUFBUyxDQUMvQixJQUFNdmtCLEVBQVcsS0FBSyxXQUFXLEVBQ2pDLEdBQUksQ0FBQ0EsRUFDSCxPQUVGLElBQUlwZ0IsRUFBTTJrQyxHQUFXLEtBQU8sS0FBSyxZQUFZQSxDQUFPLEVBQUksS0FBSyxZQUFZLEVBQ3pFLEtBQU8za0MsR0FBTyxNQUFNLENBQ2xCLElBQU1xRixFQUFPLEtBQUssV0FBVyxFQUFFLFFBQVFyRixDQUFHLEVBQzFDLEdBQUlxRixFQUFNLENBQ1IsSUFBTXUvQixFQUFZdi9CLEVBQUssVUFBVSxNQUFNLEVBQUc2YyxFQUFPLE1BQU0sRUFDdkQsR0FBSTdjLEVBQUssV0FBYSthLEVBQVMsUUFBUXdrQixFQUFXMWlCLENBQU0sSUFBTSxFQUM1RCxPQUFPbGlCLENBRVgsQ0FDQUEsRUFBTSxLQUFLLFlBQVlBLENBQUcsQ0FDNUIsQ0FDRixDQUNGLEVBQ0EsU0FBUzZrQyxHQUFxQnpsQyxFQUFPcVEsRUFBS3FULEVBQVcsQ0FDbkQsSUFBTTFDLEVBQVdGLEdBQWUsQ0FBRSxNQUFPLFNBQVUsWUFBYSxNQUFPLENBQUMsRUFDbEVvQyxFQUFXL2QsRUFBVyxJQUFNLENBQ2hDLElBQU11Z0MsRUFBbUI5bUMsRUFBT29CLEVBQU0sZ0JBQWdCLEVBQ3RELE9BQUkwbEMsR0FHRyxJQUFJVixHQUFxQmhsQyxFQUFNLFdBQVlxUSxFQUFLMlEsQ0FBUSxDQUNqRSxDQUFDLEVBQ0QsT0FBT3lDLEdBQ0wsQ0FDRSxpQkFBa0IsSUFBTTdrQixFQUFPb0IsRUFBTSxnQkFBZ0IsRUFDckQsaUJBQWtCa2pCLEVBQ2xCLFVBQVcsSUFBTXRrQixFQUFPb0IsRUFBTSxTQUFTLEVBQ3ZDLGVBQWdCLElBQU1wQixFQUFPb0IsRUFBTSxjQUFjLEVBQ2pELGdCQUFpQixJQUFNcEIsRUFBT29CLEVBQU0sZUFBZSxFQUNuRCx1QkFBd0IsSUFBTXBCLEVBQU9vQixFQUFNLHNCQUFzQixFQUNqRSxjQUFlLElBQU1wQixFQUFPb0IsRUFBTSxhQUFhLEVBQy9DLGtCQUFtQixJQUFNcEIsRUFBT29CLEVBQU0saUJBQWlCLEVBQ3ZELHNCQUF1QixJQUFNcEIsRUFBT29CLEVBQU0scUJBQXFCLEVBQy9ELG9CQUFxQixJQUFNcEIsRUFBT29CLEVBQU0sbUJBQW1CLEVBQzNELGNBQWUsSUFBTXBCLEVBQU9vQixFQUFNLGFBQWEsRUFDL0MsWUFBY1ksR0FBUWhDLEVBQU9vQixFQUFNLFdBQVcsSUFBSVksQ0FBRyxFQUNyRCxZQUFhLElBQU1oQyxFQUFPb0IsRUFBTSxXQUFXLENBQzdDLEVBQ0FxUSxDQUFHLENBQ1AsQ0FHQSxJQUFJczFCLEdBQTJCLDhCQUMzQkMsR0FBNkIsZ0NBQzdCQyxHQUFnQixDQUNsQixRQUFTLEdBQ1QsV0FBWSxFQUNkLEVBQ0lDLEdBQWtCLENBRXBCLE1BQU8sQ0FBQyxFQUNSLFFBQVMsQ0FDUCxPQUFPLEtBQUssTUFBTSxDQUFDLENBQ3JCLEVBQ0EsSUFBSXB3QixFQUFPLENBQ0xBLElBQVUsS0FBSyxPQUFPLEdBQ3hCLEtBQUssT0FBTyxHQUFHLE1BQU0sRUFFdkIsS0FBSyxNQUFRcEUsR0FBb0IsS0FBSyxNQUFPb0UsQ0FBSyxFQUNsRCxLQUFLLE1BQU0sUUFBUUEsQ0FBSyxDQUMxQixFQUNBLE9BQU9BLEVBQU8sQ0FDWixLQUFLLE1BQVFwRSxHQUFvQixLQUFLLE1BQU9vRSxDQUFLLEVBQ2xELEtBQUssT0FBTyxHQUFHLE9BQU8sQ0FDeEIsQ0FDRixFQUNBLFNBQVNxd0IsR0FBaUIvbEMsRUFBT3FRLEVBQUssQ0FDcEMsR0FBTSxDQUFDMjFCLEVBQVVDLENBQVcsRUFBSTlsQyxFQUFhLEVBQUssRUFDNUMrbEMsRUFBYSxDQUNqQixPQUFRLENBQ05ELEVBQVksRUFBSSxDQUNsQixFQUNBLFFBQVMsQ0FDUEEsRUFBWSxFQUFLLENBQ25CLENBQ0YsRUFDSUUsRUFBcUIsS0FDbkJDLEVBQW9CLzhCLEdBQU9ySixFQUFNLG1CQUFtQnFKLENBQUUsRUFDdERnOUIsRUFBc0JoOUIsR0FBT3JKLEVBQU0scUJBQXFCcUosQ0FBRSxFQUMxRGlnQixFQUFnQixJQUFNbFgsR0FBWS9CLEVBQUksQ0FBQyxFQUN2Q2kyQixFQUFpQixJQUFNLENBQzNCLElBQU0vekIsRUFBVStXLEVBQWMsRUFBRSxjQUFjLE1BQU0sRUFDcEQsT0FBQS9XLEVBQVEsYUFBYSxrQkFBbUIsRUFBRSxFQUMxQ0EsRUFBUSxTQUFXLEVBQ25CLE9BQU8sT0FBT0EsRUFBUSxNQUFPa0csRUFBb0IsRUFDMUNsRyxDQUNULEVBQ01nMEIsRUFBWSxJQUFNLENBQ3RCLElBQU1seUIsRUFBWWhFLEVBQUksRUFDdEIsT0FBS2dFLEVBR0VELEdBQWlCQyxFQUFXLEVBQUksRUFBRSxPQUFRM0ksR0FBTyxDQUFDQSxFQUFHLGFBQWEsaUJBQWlCLENBQUMsRUFGbEYsQ0FBQyxDQUdaLEVBQ004NkIsRUFBZ0IsSUFBTSxDQUMxQixJQUFNLzNCLEVBQVE4M0IsRUFBVSxFQUN4QixPQUFPOTNCLEVBQU0sT0FBUyxFQUFJQSxFQUFNLENBQUMsRUFBSSxJQUN2QyxFQUNNZzRCLEVBQWUsSUFBTSxDQUN6QixJQUFNaDRCLEVBQVE4M0IsRUFBVSxFQUN4QixPQUFPOTNCLEVBQU0sT0FBUyxFQUFJQSxFQUFNQSxFQUFNLE9BQVMsQ0FBQyxFQUFJLElBQ3RELEVBQ01pNEIsRUFBZ0MsSUFBTSxDQUMxQyxJQUFNcnlCLEVBQVloRSxFQUFJLEVBQ3RCLEdBQUksQ0FBQ2dFLEVBQ0gsTUFBTyxHQUVULElBQU1sQyxFQUFnQkYsR0FBaUJvQyxDQUFTLEVBSWhELE1BSEksQ0FBQ2xDLEdBR0RMLEdBQVN1QyxFQUFXbEMsQ0FBYSxFQUM1QixHQUVGd0MsR0FBWXhDLENBQWEsQ0FDbEMsRUFDQXBOLEVBQWEsSUFBTSxDQUNqQixHQUFJL0csR0FDRixPQUVGLElBQU1xVyxFQUFZaEUsRUFBSSxFQUN0QixHQUFJLENBQUNnRSxFQUNILE9BRUZ5eEIsR0FBZ0IsSUFBSUksQ0FBVSxFQUM5QixJQUFNUyxFQUEyQjEwQixHQUFpQm9DLENBQVMsRUFFM0QsR0FBSSxDQUR3QnZDLEdBQVN1QyxFQUFXc3lCLENBQXdCLEVBQzlDLENBQ3hCLElBQU1DLEVBQWEsSUFBSSxZQUFZakIsR0FBMEJFLEVBQWEsRUFDMUV4eEIsRUFBVSxpQkFBaUJzeEIsR0FBMEJTLENBQWdCLEVBQ3JFL3hCLEVBQVUsY0FBY3V5QixDQUFVLEVBQzdCQSxFQUFXLGtCQUNkLFdBQVcsSUFBTSxDQUNmcnpCLEdBQXNCaXpCLEVBQWMsQ0FBQyxFQUNqQ3YwQixHQUFpQm9DLENBQVMsSUFBTXN5QixHQUNsQ3B6QixHQUFzQmMsQ0FBUyxDQUVuQyxFQUFHLENBQUMsQ0FFUixDQUNBaFYsRUFBVSxJQUFNLENBQ2RnVixFQUFVLG9CQUFvQnN4QixHQUEwQlMsQ0FBZ0IsRUFDeEUsV0FBVyxJQUFNLENBQ2YsSUFBTVMsRUFBZSxJQUFJLFlBQVlqQixHQUE0QkMsRUFBYSxFQUMxRWEsRUFBOEIsR0FDaENHLEVBQWEsZUFBZSxFQUU5Qnh5QixFQUFVLGlCQUFpQnV4QixHQUE0QlMsQ0FBa0IsRUFDekVoeUIsRUFBVSxjQUFjd3lCLENBQVksRUFDL0JBLEVBQWEsa0JBQ2hCdHpCLEdBQXNCb3pCLEdBQTRCcmQsRUFBYyxFQUFFLElBQUksRUFFeEVqVixFQUFVLG9CQUFvQnV4QixHQUE0QlMsQ0FBa0IsRUFDNUVQLEdBQWdCLE9BQU9JLENBQVUsQ0FDbkMsRUFBRyxDQUFDLENBQ04sQ0FBQyxDQUNILENBQUMsRUFDRG5oQyxFQUFhLElBQU0sQ0FDakIsR0FBSS9HLEdBQ0YsT0FFRixJQUFNcVcsRUFBWWhFLEVBQUksRUFDdEIsR0FBSSxDQUFDZ0UsR0FBYSxDQUFDelYsRUFBT29CLEVBQU0sU0FBUyxHQUFLZ21DLEVBQVMsRUFDckQsT0FFRixJQUFNcmhCLEVBQWF4UixHQUFVLENBQzNCLElBQU12RCxFQUFTdUQsRUFBTSxPQUNqQnZELEdBQVEsUUFBUSxJQUFJeVksRUFBbUIsR0FBRyxJQUcxQ3ZXLEdBQVN1QyxFQUFXekUsQ0FBTSxFQUM1QnUyQixFQUFxQnYyQixFQUVyQjJELEdBQXNCNHlCLENBQWtCLEVBRTVDLEVBQ01yaEIsRUFBYzNSLEdBQVUsQ0FFNUIsSUFBTXZELEVBRGdCdUQsRUFBTSxlQUNJbEIsR0FBaUJvQyxDQUFTLEVBQ3REekUsR0FBUSxRQUFRLElBQUl5WSxFQUFtQixHQUFHLEdBR3pDdlcsR0FBU3VDLEVBQVd6RSxDQUFNLEdBQzdCMkQsR0FBc0I0eUIsQ0FBa0IsQ0FFNUMsRUFDQTdjLEVBQWMsRUFBRSxpQkFBaUIsVUFBVzNFLENBQVMsRUFDckQyRSxFQUFjLEVBQUUsaUJBQWlCLFdBQVl4RSxDQUFVLEVBQ3ZEemxCLEVBQVUsSUFBTSxDQUNkaXFCLEVBQWMsRUFBRSxvQkFBb0IsVUFBVzNFLENBQVMsRUFDeEQyRSxFQUFjLEVBQUUsb0JBQW9CLFdBQVl4RSxDQUFVLENBQzVELENBQUMsQ0FDSCxDQUFDLEVBQ0QvZixFQUFhLElBQU0sQ0FDakIsR0FBSS9HLEdBQ0YsT0FFRixJQUFNcVcsRUFBWWhFLEVBQUksRUFDdEIsR0FBSSxDQUFDZ0UsR0FBYSxDQUFDelYsRUFBT29CLEVBQU0sU0FBUyxHQUFLZ21DLEVBQVMsRUFDckQsT0FFRixJQUFNYyxFQUFnQlIsRUFBZSxFQUNyQ2p5QixFQUFVLHNCQUFzQixhQUFjeXlCLENBQWEsRUFDM0QsSUFBTUMsRUFBY1QsRUFBZSxFQUNuQ2p5QixFQUFVLHNCQUFzQixZQUFhMHlCLENBQVcsRUFDeEQsU0FBU2xoQixFQUFRMVMsRUFBTyxDQUN0QixJQUFNbVQsRUFBUWtnQixFQUFjLEVBQ3RCOWhCLEVBQU8raEIsRUFBYSxFQUN0QnR6QixFQUFNLGdCQUFrQm1ULEVBQzFCL1MsR0FBc0JtUixDQUFJLEVBRTFCblIsR0FBc0IrUyxDQUFLLENBRS9CLENBQ0F3Z0IsRUFBYyxpQkFBaUIsVUFBV2poQixDQUFPLEVBQ2pEa2hCLEVBQVksaUJBQWlCLFVBQVdsaEIsQ0FBTyxFQUMvQyxJQUFNNWdCLEVBQVcsSUFBSSxpQkFBa0IraEMsR0FBYyxDQUNuRCxRQUFXQyxLQUFZRCxFQUNqQkMsRUFBUyxrQkFBb0JGLElBQy9CQSxFQUFZLE9BQU8sRUFDbkIxeUIsRUFBVSxzQkFBc0IsWUFBYTB5QixDQUFXLEdBRXRERSxFQUFTLGNBQWdCSCxJQUMzQkEsRUFBYyxPQUFPLEVBQ3JCenlCLEVBQVUsc0JBQXNCLGFBQWN5eUIsQ0FBYSxFQUdqRSxDQUFDLEVBQ0Q3aEMsRUFBUyxRQUFRb1AsRUFBVyxDQUMxQixVQUFXLEdBQ1gsUUFBUyxFQUNYLENBQUMsRUFDRGhWLEVBQVUsSUFBTSxDQUNkeW5DLEVBQWMsb0JBQW9CLFVBQVdqaEIsQ0FBTyxFQUNwRGtoQixFQUFZLG9CQUFvQixVQUFXbGhCLENBQU8sRUFDbERpaEIsRUFBYyxPQUFPLEVBQ3JCQyxFQUFZLE9BQU8sRUFDbkI5aEMsRUFBUyxXQUFXLENBQ3RCLENBQUMsQ0FDSCxDQUFDLENBQ0gsQ0FHQSxJQUFJaWlDLEdBQTJCLHNCQUcvQixTQUFTQyxHQUFrQm5uQyxFQUFPLENBQ2hDK0UsRUFBYSxJQUFNLENBQ2JuRyxFQUFPb0IsRUFBTSxVQUFVLEdBRzNCWCxFQUFVK25DLEdBQWdCeG9DLEVBQU9vQixFQUFNLE9BQU8sRUFBR3BCLEVBQU9vQixFQUFNLElBQUksQ0FBQyxDQUFDLENBQ3RFLENBQUMsQ0FDSCxDQUNBLElBQUlxbkMsR0FBOEIsSUFBSSxRQUNsQ0MsR0FBZ0IsQ0FBQyxFQUNyQixTQUFTRixHQUFnQnAzQixFQUFTd0YsRUFBTyxTQUFTLEtBQU0sQ0FDdEQsSUFBTSt4QixFQUFlLElBQUksSUFBSXYzQixDQUFPLEVBQzlCdzNCLEVBQThCLElBQUksSUFDbENDLEVBQVFDLEdBQVUsQ0FDdEIsUUFBV24xQixLQUFXbTFCLEVBQU0saUJBQzFCLElBQUlSLEVBQXdCLE9BQU83ZSxFQUFtQixHQUN4RCxFQUNFa2YsRUFBYSxJQUFJaDFCLENBQU8sRUFFMUIsSUFBTW8xQixFQUFjOW1DLEdBQVMsQ0FDM0IsR0FBSTBtQyxFQUFhLElBQUkxbUMsQ0FBSSxHQUFLQSxFQUFLLGVBQWlCMm1DLEVBQVksSUFBSTNtQyxFQUFLLGFBQWEsR0FBS0EsRUFBSyxjQUFjLGFBQWEsTUFBTSxJQUFNLE1BQ3JJLE9BQU8sV0FBVyxjQUVwQixRQUFXK08sS0FBVTIzQixFQUNuQixHQUFJMW1DLEVBQUssU0FBUytPLENBQU0sRUFDdEIsT0FBTyxXQUFXLFlBR3RCLE9BQU8sV0FBVyxhQUNwQixFQUNNZ0csRUFBUyxTQUFTLGlCQUFpQjh4QixFQUFPLFdBQVcsYUFBYyxDQUN2RSxXQUFBQyxDQUNGLENBQUMsRUFDS0MsRUFBYUQsRUFBV0QsQ0FBSyxFQUluQyxHQUhJRSxJQUFlLFdBQVcsZUFDNUJDLEVBQU1ILENBQUssRUFFVEUsSUFBZSxXQUFXLGNBQWUsQ0FDM0MsSUFBSS9tQyxFQUFPK1UsRUFBTyxTQUFTLEVBQzNCLEtBQU8vVSxHQUFRLE1BQ2JnbkMsRUFBTWhuQyxDQUFJLEVBQ1ZBLEVBQU8rVSxFQUFPLFNBQVMsQ0FFM0IsQ0FDRixFQUNNaXlCLEVBQVNobkMsR0FBUyxDQUN0QixJQUFNaW5DLEVBQVdULEdBQVksSUFBSXhtQyxDQUFJLEdBQUssRUFDdENBLEVBQUssYUFBYSxhQUFhLElBQU0sUUFBVWluQyxJQUFhLElBRzVEQSxJQUFhLEdBQ2ZqbkMsRUFBSyxhQUFhLGNBQWUsTUFBTSxFQUV6QzJtQyxFQUFZLElBQUkzbUMsQ0FBSSxFQUNwQndtQyxHQUFZLElBQUl4bUMsRUFBTWluQyxFQUFXLENBQUMsRUFDcEMsRUFDSVIsR0FBYyxRQUNoQkEsR0FBY0EsR0FBYyxPQUFTLENBQUMsRUFBRSxXQUFXLEVBRXJERyxFQUFLanlCLENBQUksRUFDVCxJQUFNdlEsRUFBVyxJQUFJLGlCQUFrQjhpQyxHQUFZLENBQ2pELFFBQVdDLEtBQVVELEVBQ25CLEdBQUksRUFBQUMsRUFBTyxPQUFTLGFBQWVBLEVBQU8sV0FBVyxTQUFXLElBRzVELENBQUMsQ0FBQyxHQUFHVCxFQUFjLEdBQUdDLENBQVcsRUFBRSxLQUNwQzNtQyxHQUFTQSxFQUFLLFNBQVNtbkMsRUFBTyxNQUFNLENBQ3ZDLEVBQUcsQ0FDRCxRQUFXbm5DLEtBQVFtbkMsRUFBTyxhQUNwQm5uQyxhQUFnQixVQUNsQjBtQyxFQUFhLE9BQU8xbUMsQ0FBSSxFQUN4QjJtQyxFQUFZLE9BQU8zbUMsQ0FBSSxHQUczQixRQUFXQSxLQUFRbW5DLEVBQU8sWUFDbkJubkMsYUFBZ0IsYUFBZUEsYUFBZ0IsY0FBZ0JBLEVBQUssUUFBUSxnQkFBa0IsUUFBVUEsRUFBSyxRQUFRLG9CQUFzQixRQUM5STBtQyxFQUFhLElBQUkxbUMsQ0FBSSxFQUNaQSxhQUFnQixTQUN6QjRtQyxFQUFLNW1DLENBQUksQ0FHZixDQUVKLENBQUMsRUFDRG9FLEVBQVMsUUFBUXVRLEVBQU0sQ0FBRSxVQUFXLEdBQU0sUUFBUyxFQUFLLENBQUMsRUFDekQsSUFBTXl5QixFQUFrQixDQUN0QixTQUFVLENBQ1JoakMsRUFBUyxRQUFRdVEsRUFBTSxDQUFFLFVBQVcsR0FBTSxRQUFTLEVBQUssQ0FBQyxDQUMzRCxFQUNBLFlBQWEsQ0FDWHZRLEVBQVMsV0FBVyxDQUN0QixDQUNGLEVBQ0EsT0FBQXFpQyxHQUFjLEtBQUtXLENBQWUsRUFDM0IsSUFBTSxDQUNYaGpDLEVBQVMsV0FBVyxFQUNwQixRQUFXcEUsS0FBUTJtQyxFQUFhLENBQzlCLElBQU1sbEMsRUFBUStrQyxHQUFZLElBQUl4bUMsQ0FBSSxFQUNsQyxHQUFJeUIsR0FBUyxLQUNYLE9BRUVBLElBQVUsR0FDWnpCLEVBQUssZ0JBQWdCLGFBQWEsRUFDbEN3bUMsR0FBWSxPQUFPeG1DLENBQUksR0FFdkJ3bUMsR0FBWSxJQUFJeG1DLEVBQU15QixFQUFRLENBQUMsQ0FFbkMsQ0FDSTJsQyxJQUFvQlgsR0FBY0EsR0FBYyxPQUFTLENBQUMsR0FDNURBLEdBQWMsSUFBSSxFQUNkQSxHQUFjLFFBQ2hCQSxHQUFjQSxHQUFjLE9BQVMsQ0FBQyxFQUFFLFFBQVEsR0FHbERBLEdBQWMsT0FBT0EsR0FBYyxRQUFRVyxDQUFlLEVBQUcsQ0FBQyxDQUVsRSxDQUNGLENBR0EsSUFBSUMsR0FBK0IsSUFBSSxJQUNuQ0MsR0FBZW5vQyxHQUFVLENBQzNCK0UsRUFBYSxJQUFNLENBQ2pCLElBQU1MLEVBQVEyaUIsR0FBUXJuQixFQUFNLEtBQUssR0FBSyxDQUFDLEVBQ2pDcVgsRUFBYWdRLEdBQVFybkIsRUFBTSxVQUFVLEdBQUssQ0FBQyxFQUMzQ29vQyxFQUFpQixDQUFDLEVBQ3hCLFFBQVd4bkMsS0FBTzhELEVBQ2hCMGpDLEVBQWV4bkMsQ0FBRyxFQUFJWixFQUFNLFFBQVEsTUFBTVksQ0FBRyxFQUUvQyxJQUFNeW5DLEVBQWNILEdBQWEsSUFBSWxvQyxFQUFNLEdBQUcsRUFDMUNxb0MsRUFDRkEsRUFBWSxjQUVaSCxHQUFhLElBQUlsb0MsRUFBTSxJQUFLLENBQzFCLFlBQWEsRUFDYixlQUFBb29DLEVBQ0EsV0FBWS93QixFQUFXLElBQUtpeEIsR0FBYUEsRUFBUyxHQUFHLENBQ3ZELENBQUMsRUFFSCxPQUFPLE9BQU90b0MsRUFBTSxRQUFRLE1BQU9BLEVBQU0sS0FBSyxFQUM5QyxRQUFXc29DLEtBQVlqeEIsRUFDckJyWCxFQUFNLFFBQVEsTUFBTSxZQUFZc29DLEVBQVMsSUFBS0EsRUFBUyxLQUFLLEVBRTlEanBDLEVBQVUsSUFBTSxDQUNkLElBQU1rcEMsRUFBZUwsR0FBYSxJQUFJbG9DLEVBQU0sR0FBRyxFQUMvQyxHQUFLdW9DLEVBQ0wsSUFBSUEsRUFBYSxjQUFnQixFQUFHLENBQ2xDQSxFQUFhLGNBQ2IsTUFDRixDQUNBTCxHQUFhLE9BQU9sb0MsRUFBTSxHQUFHLEVBQzdCLE9BQVcsQ0FBQ1ksRUFBSzdCLENBQUssSUFBSyxPQUFPLFFBQVF3cEMsRUFBYSxjQUFjLEVBQ25Fdm9DLEVBQU0sUUFBUSxNQUFNWSxDQUFHLEVBQUk3QixFQUU3QixRQUFXdXBDLEtBQVlDLEVBQWEsV0FDbEN2b0MsRUFBTSxRQUFRLE1BQU0sZUFBZXNvQyxDQUFRLEVBRXpDdG9DLEVBQU0sUUFBUSxNQUFNLFNBQVcsR0FDakNBLEVBQU0sUUFBUSxnQkFBZ0IsT0FBTyxFQUV2Q0EsRUFBTSxVQUFVLEVBQ2xCLENBQUMsQ0FDSCxDQUFDLENBQ0gsRUFDSXdvQyxHQUFnQkwsR0FHaEJNLEdBQXNCLENBQUNsMkIsRUFBU3dGLElBQVMsQ0FDM0MsT0FBUUEsRUFBTSxDQUNaLElBQUssSUFDSCxNQUFPLENBQUN4RixFQUFRLFlBQWFBLEVBQVEsV0FBWUEsRUFBUSxXQUFXLEVBQ3RFLElBQUssSUFDSCxNQUFPLENBQUNBLEVBQVEsYUFBY0EsRUFBUSxVQUFXQSxFQUFRLFlBQVksQ0FDekUsQ0FDRixFQUNJbTJCLEdBQW9CLENBQUNuMkIsRUFBU3dGLElBQVMsQ0FDekMsSUFBTTR3QixFQUFTLGlCQUFpQnAyQixDQUFPLEVBQ2pDMmUsRUFBV25aLElBQVMsSUFBTTR3QixFQUFPLFVBQVlBLEVBQU8sVUFDMUQsT0FBT3pYLElBQWEsUUFBVUEsSUFBYSxVQUMzQzNlLEVBQVEsVUFBWSxRQUFVMmUsSUFBYSxTQUM3QyxFQUNJMFgsR0FBc0IsQ0FBQ0MsRUFBVTl3QixFQUFNK3dCLElBQVcsQ0FDcEQsSUFBTUMsRUFBa0JoeEIsSUFBUyxLQUFPLE9BQU8saUJBQWlCOHdCLENBQVEsRUFBRSxZQUFjLE1BQVEsR0FBSyxFQUNqR0csRUFBaUJILEVBQ2pCSSxFQUFrQixFQUNsQkMsRUFBcUIsRUFDckJDLEVBQWlCLEdBQ3JCLEVBQUcsQ0FDRCxHQUFNLENBQUMzWixFQUFZNFosRUFBY0MsQ0FBVSxFQUFJWixHQUM3Q08sRUFDQWp4QixDQUNGLEVBQ011eEIsRUFBV0QsRUFBYTdaLEVBQWF1WixFQUFrQkssR0FDeERBLElBQWlCLEdBQUtFLElBQWEsSUFBTVosR0FBa0JNLEVBQWdCanhCLENBQUksSUFDbEZreEIsR0FBbUJLLEVBQ25CSixHQUFzQkUsR0FFcEJKLEtBQW9CRixHQUFVLFNBQVMsaUJBQ3pDSyxFQUFpQixHQUVqQkgsRUFBaUJBLEVBQWUsUUFBVUEsRUFBZSxhQUU3RCxPQUFTQSxHQUFrQixDQUFDRyxHQUM1QixNQUFPLENBQUNGLEVBQWlCQyxDQUFrQixDQUM3QyxFQUdJLENBQUNLLEdBQW9CQyxFQUFxQixFQUFJcnBDLEVBQWEsQ0FBQyxDQUFDLEVBQzdEc3BDLEdBQVluM0IsR0FBT2kzQixHQUFtQixFQUFFLFFBQVFqM0IsQ0FBRSxJQUFNaTNCLEdBQW1CLEVBQUUsT0FBUyxFQUN0RkcsR0FBdUIxcEMsR0FBVSxDQUNuQyxJQUFNMnBDLEVBQWlCN3lCLEVBQ3JCLENBQ0UsUUFBUyxLQUNULFFBQVMsR0FDVCxjQUFlLEdBQ2Ysc0JBQXVCLEdBQ3ZCLDBCQUEyQixVQUMzQixzQkFBdUIsR0FDdkIsZUFBZ0IsRUFDbEIsRUFDQTlXLENBQ0YsRUFDTTRwQyxFQUFrQnJ3QixHQUFlLEVBQ25Dc3dCLEVBQW9CLENBQUMsRUFBRyxDQUFDLEVBQ3pCQyxFQUF3QixLQUN4QkMsRUFBeUIsS0FDN0JobEMsRUFBYSxJQUFNLENBQ1pzaUIsR0FBUXNpQixFQUFlLE9BQU8sSUFDbkNILEdBQXVCUSxHQUFVLENBQUMsR0FBR0EsRUFBT0osQ0FBZSxDQUFDLEVBQzVEdnFDLEVBQVUsSUFBTSxDQUNkbXFDLEdBQ0dRLEdBQVVBLEVBQU0sT0FBUTEzQixHQUFPQSxJQUFPczNCLENBQWUsQ0FDeEQsQ0FDRixDQUFDLEVBQ0gsQ0FBQyxFQUNEN2tDLEVBQWEsSUFBTSxDQUNqQixHQUFJLENBQUNzaUIsR0FBUXNpQixFQUFlLE9BQU8sR0FBSyxDQUFDdGlCLEdBQVFzaUIsRUFBZSxhQUFhLEVBQzNFLE9BQ0YsR0FBTSxDQUFFLEtBQUE5USxDQUFLLEVBQUksU0FDWG9SLEVBQWlCLE9BQU8sV0FBYXBSLEVBQUssWUFDaEQsR0FBSXhSLEdBQVFzaUIsRUFBZSxxQkFBcUIsRUFBRyxDQUNqRCxJQUFNamxDLEVBQVEsQ0FBRSxTQUFVLFFBQVMsRUFDN0IyUyxFQUFhLENBQUMsRUFDaEI0eUIsRUFBaUIsSUFDZjVpQixHQUFRc2lCLEVBQWUseUJBQXlCLElBQU0sVUFDeERqbEMsRUFBTSxhQUFlLFFBQVEsT0FBTyxpQkFBaUJtMEIsQ0FBSSxFQUFFLFlBQVksTUFBTW9SLENBQWMsTUFFM0Z2bEMsRUFBTSxZQUFjLFFBQVEsT0FBTyxpQkFBaUJtMEIsQ0FBSSxFQUFFLFdBQVcsTUFBTW9SLENBQWMsTUFFM0Y1eUIsRUFBVyxLQUFLLENBQ2QsSUFBSyxvQkFDTCxNQUFPLEdBQUc0eUIsQ0FBYyxJQUMxQixDQUFDLEdBRUgsSUFBTUMsRUFBWSxPQUFPLFFBQ25CQyxFQUFhLE9BQU8sUUFDMUIzQixHQUFjLENBQ1osSUFBSyxpQkFDTCxRQUFTM1AsRUFDVCxNQUFBbjBCLEVBQ0EsV0FBQTJTLEVBQ0EsUUFBUyxJQUFNLENBQ1RnUSxHQUFRc2lCLEVBQWUscUJBQXFCLEdBQUtNLEVBQWlCLEdBQ3BFLE9BQU8sU0FBU0UsRUFBWUQsQ0FBUyxDQUV6QyxDQUNGLENBQUMsQ0FDSCxNQUNFMUIsR0FBYyxDQUNaLElBQUssaUJBQ0wsUUFBUzNQLEVBQ1QsTUFBTyxDQUNMLFNBQVUsUUFDWixDQUNGLENBQUMsQ0FFTCxDQUFDLEVBQ0Q5ekIsRUFBYSxJQUFNLENBQ2IsQ0FBQzBrQyxHQUFTRyxDQUFlLEdBQUssQ0FBQ3ZpQixHQUFRc2lCLEVBQWUsT0FBTyxJQUNqRSxTQUFTLGlCQUFpQixRQUFTUyxFQUFtQixDQUNwRCxRQUFTLEVBQ1gsQ0FBQyxFQUNELFNBQVMsaUJBQWlCLGFBQWNDLEVBQWUsQ0FDckQsUUFBUyxFQUNYLENBQUMsRUFDRCxTQUFTLGlCQUFpQixZQUFhQyxFQUFtQixDQUN4RCxRQUFTLEVBQ1gsQ0FBQyxFQUNEanJDLEVBQVUsSUFBTSxDQUNkLFNBQVMsb0JBQW9CLFFBQVMrcUMsQ0FBaUIsRUFDdkQsU0FBUyxvQkFBb0IsYUFBY0MsQ0FBYSxFQUN4RCxTQUFTLG9CQUFvQixZQUFhQyxDQUFpQixDQUM3RCxDQUFDLEVBQ0gsQ0FBQyxFQUNELElBQU1ELEVBQWlCbDNCLEdBQVUsQ0FDL0IwMkIsRUFBb0JVLEdBQVdwM0IsQ0FBSyxFQUNwQzIyQixFQUF3QixLQUN4QkMsRUFBeUIsSUFDM0IsRUFDTUssRUFBcUJqM0IsR0FBVSxDQUNuQyxJQUFNdkQsRUFBU3VELEVBQU0sT0FDZnEzQixFQUFVbmpCLEdBQVFzaUIsRUFBZSxPQUFPLEVBQ3hDYyxFQUFRQyxHQUFXdjNCLENBQUssRUFDeEI0RSxFQUFPLEtBQUssSUFBSTB5QixFQUFNLENBQUMsQ0FBQyxFQUFJLEtBQUssSUFBSUEsRUFBTSxDQUFDLENBQUMsRUFBSSxJQUFNLElBQ3ZERSxFQUFZNXlCLElBQVMsSUFBTTB5QixFQUFNLENBQUMsRUFBSUEsRUFBTSxDQUFDLEVBQzdDRyxFQUFrQkMsR0FBWWo3QixFQUFRbUksRUFBTTR5QixFQUFXSCxDQUFPLEVBQ2hFTSxFQUNBTixHQUFXTyxHQUFVUCxFQUFTNTZCLENBQU0sRUFDdENrN0IsRUFBZSxDQUFDRixFQUVoQkUsRUFBZSxHQUViQSxHQUFnQjMzQixFQUFNLFlBQ3hCQSxFQUFNLGVBQWUsQ0FFekIsRUFDTW0zQixFQUFxQm4zQixHQUFVLENBQ25DLElBQU1xM0IsRUFBVW5qQixHQUFRc2lCLEVBQWUsT0FBTyxFQUN4Qy81QixFQUFTdUQsRUFBTSxPQUNqQjIzQixFQUNKLEdBQUkzM0IsRUFBTSxRQUFRLFNBQVcsRUFDM0IyM0IsRUFBZSxDQUFDempCLEdBQVFzaUIsRUFBZSxjQUFjLE1BQ2hELENBQ0wsR0FBSUcsR0FBeUIsTUFBUUMsSUFBMkIsS0FBTSxDQUNwRSxJQUFNVSxFQUFRRixHQUFXcDNCLENBQUssRUFBRSxJQUM5QixDQUFDNjNCLEVBQU8zc0MsSUFBT3dyQyxFQUFrQnhyQyxDQUFFLEVBQUkyc0MsQ0FDekMsRUFDTWp6QixFQUFPLEtBQUssSUFBSTB5QixFQUFNLENBQUMsQ0FBQyxFQUFJLEtBQUssSUFBSUEsRUFBTSxDQUFDLENBQUMsRUFBSSxJQUFNLElBQzdEWCxFQUF3Qi94QixFQUN4Qmd5QixFQUF5Qmh5QixJQUFTLElBQU0weUIsRUFBTSxDQUFDLEVBQUlBLEVBQU0sQ0FBQyxDQUM1RCxDQUNBLEdBQUk3NkIsRUFBTyxPQUFTLFFBQ2xCazdCLEVBQWUsT0FDVixDQUNMLElBQU1HLEVBQXNCSixHQUMxQmo3QixFQUNBazZCLEVBQ0FDLEVBQ0FTLENBQ0YsRUFDSUEsR0FBV08sR0FBVVAsRUFBUzU2QixDQUFNLEVBQ3RDazdCLEVBQWUsQ0FBQ0csRUFFaEJILEVBQWUsRUFFbkIsQ0FDRixDQUNJQSxHQUFnQjMzQixFQUFNLFlBQ3hCQSxFQUFNLGVBQWUsQ0FFekIsQ0FDRixFQUNJdTNCLEdBQWN2M0IsR0FBVSxDQUMxQkEsRUFBTSxPQUNOQSxFQUFNLE1BQ1IsRUFDSW8zQixHQUFjcDNCLEdBQVVBLEVBQU0sZUFBZSxDQUFDLEVBQUksQ0FBQ0EsRUFBTSxlQUFlLENBQUMsRUFBRSxRQUFTQSxFQUFNLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBSSxDQUFDLEVBQUcsQ0FBQyxFQUM1SDAzQixHQUFjLENBQUNqN0IsRUFBUW1JLEVBQU0weUIsRUFBT0QsSUFBWSxDQUNsRCxJQUFNVSxFQUFrQlYsSUFBWSxNQUFRTyxHQUFVUCxFQUFTNTZCLENBQU0sRUFDL0QsQ0FBQ3E1QixFQUFpQkMsQ0FBa0IsRUFBSU4sR0FDNUNoNUIsRUFDQW1JLEVBQ0FtekIsRUFBa0JWLEVBQVUsTUFDOUIsRUFJQSxNQUhJLEVBQUFDLEVBQVEsR0FBSyxLQUFLLElBQUl4QixDQUFlLEdBQUssR0FHMUN3QixFQUFRLEdBQUssS0FBSyxJQUFJdkIsQ0FBa0IsRUFBSSxFQUlsRCxFQUNJNkIsR0FBWSxDQUFDUCxFQUFTNTZCLElBQVcsQ0FDbkMsR0FBSTQ2QixFQUFRLFNBQVM1NkIsQ0FBTSxFQUFHLE1BQU8sR0FDckMsSUFBSW81QixFQUFpQnA1QixFQUNyQixLQUFPbzVCLEdBQWdCLENBQ3JCLEdBQUlBLElBQW1Cd0IsRUFBUyxNQUFPLEdBQ3ZDeEIsRUFBaUJBLEVBQWUsUUFBVUEsRUFBZSxhQUMzRCxDQUNBLE1BQU8sRUFDVCxFQUNJbUMsR0FBd0J6QixHQUN4QjBCLEdBQWVELEdBR2ZFLEdBQWM1bkMsR0FBYyxFQUNoQyxTQUFTNm5DLElBQXlCLENBQ2hDLE9BQU8zbkMsR0FBVzBuQyxFQUFXLENBQy9CLENBQ0EsU0FBU0UsSUFBaUIsQ0FDeEIsSUFBTTV3QixFQUFVMndCLEdBQXVCLEVBQ3ZDLEdBQUkzd0IsSUFBWSxPQUNkLE1BQU0sSUFBSSxNQUFNLG9FQUFvRSxFQUV0RixPQUFPQSxDQUNULENBQ0EsSUFBSTZ3QixHQUFrQi9uQyxHQUFjLEVBQ3BDLFNBQVNnb0MsSUFBcUIsQ0FDNUIsSUFBTTl3QixFQUFVaFgsR0FBVzZuQyxFQUFlLEVBQzFDLEdBQUk3d0IsSUFBWSxPQUNkLE1BQU0sSUFBSSxNQUFNLDZFQUE2RSxFQUUvRixPQUFPQSxDQUNULENBQ0EsSUFBSSt3QixHQUFrQmpvQyxHQUFjLEVBQ3BDLFNBQVNrb0MsSUFBcUIsQ0FDNUIsSUFBTWh4QixFQUFVaFgsR0FBVytuQyxFQUFlLEVBQzFDLEdBQUkvd0IsSUFBWSxPQUNkLE1BQU0sSUFBSSxNQUFNLDRFQUE0RSxFQUU5RixPQUFPQSxDQUNULENBQ0EsU0FBU2l4QixHQUFhNXJDLEVBQU8sQ0FDM0IsSUFBSXFRLEVBQ0V3N0IsRUFBY0YsR0FBbUIsRUFDakNHLEVBQWNQLEdBQWUsRUFDN0IveEIsRUFBYzVDLEVBQWtCLENBQ3BDLEdBQUlpMUIsRUFBWSxXQUFXLFFBQVF0eUIsR0FBZSxDQUFDLEVBQUUsQ0FDdkQsRUFBR3ZaLENBQUssRUFDRixDQUFDZ1osRUFBT0MsQ0FBTSxFQUFJQyxHQUFXTSxFQUFhLENBQUMsTUFBTyxZQUFhLFdBQVksZ0JBQWlCLFVBQVcsZ0JBQWlCLFdBQVksZ0JBQWlCLGlCQUFrQixnQkFBaUIsY0FBZSxVQUFXLFlBQWEsY0FBZSxTQUFTLENBQUMsRUFDeFAsQ0FBQ0MsRUFBU0MsQ0FBVSxFQUFJdlosRUFBYSxFQUNyQyxDQUFDMFosRUFBZUMsQ0FBZ0IsRUFBSTNaLEVBQWEsRUFDakQsQ0FBQzRyQyxFQUFVQyxDQUFXLEVBQUk3ckMsRUFBYSxFQUN2Q2duQixFQUFtQixJQUFNMmtCLEVBQVksVUFBVSxFQUFFLGlCQUFpQixFQUNsRWxyQyxFQUFNLElBQU1xWSxFQUFPLEdBQ25CZ3pCLEVBQWdCLElBQU05a0IsRUFBaUIsRUFBRSxXQUFXLElBQU12bUIsRUFBSSxFQUM5RDBrQixFQUFXLElBQU0sQ0FDckJ0TSxFQUFNLFdBQVcsRUFDYkEsRUFBTSxlQUNSLFdBQVcsSUFBTSxDQUNmOHlCLEVBQVksTUFBTSxFQUFJLENBQ3hCLENBQUMsQ0FFTCxFQUNBdnRCLEdBQXdCLENBQ3RCLFFBQVMsS0FBTyxDQUNkLElBQUssSUFBTWxPLEVBQ1gsS0FBTSxPQUNOLElBQUt6UCxFQUFJLEVBQ1QsVUFBV29ZLEVBQU0sV0FBYSt5QixFQUFTLEdBQUcsYUFBZTE3QixHQUFLLGFBQWUsR0FDN0UsU0FBVTJJLEVBQU0sVUFBWSxFQUM5QixFQUNGLENBQUMsRUFDRCxJQUFNa3pCLEVBQWlCOW1CLEdBQXFCLENBQzFDLElBQUF4a0IsRUFDQSxpQkFBQXVtQixFQUNBLHNCQUF1QixHQUN2QiwyQkFBNEIsR0FDNUIsU0FBVSxJQUFNbk8sRUFBTSxRQUN4QixFQUFHLElBQU0zSSxDQUFHLEVBQ044N0IsRUFBaUI5aUMsR0FBTyxDQUM1QjZKLEdBQVk3SixFQUFJMlAsRUFBTSxhQUFhLEVBQy9CM1AsRUFBRyxjQUFnQixVQUduQjJQLEVBQU0sU0FDUjh5QixFQUFZLFlBQVl6aUMsQ0FBRSxHQUUxQnlpQyxFQUFZLFlBQVl6aUMsQ0FBRSxFQUNyQkEsRUFBRyxtQkFDTmtLLEdBQXNCbEssRUFBRyxhQUFhLEVBQ3RDeWlDLEVBQVksVUFBVSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBSSxFQUMxREEsRUFBWSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBY2xyQyxFQUFJLENBQUMsSUFHcEUsRUFDTXdyQyxFQUFrQi9pQyxHQUFPLENBQzdCNkosR0FBWTdKLEVBQUkyUCxFQUFNLGNBQWMsRUFDaEMzUCxFQUFHLGNBQWdCLFNBR3ZCeWlDLEVBQVksWUFBWXppQyxDQUFFLENBQzVCLEVBQ01zYyxFQUFldGMsR0FBTyxDQUMxQjZKLEdBQVk3SixFQUFJMlAsRUFBTSxXQUFXLEVBQzdCLENBQUNBLEVBQU0sVUFBWTNQLEVBQUcsU0FBVyxHQUNuQ2ljLEVBQVMsQ0FFYixFQUNNckIsRUFBYTVhLEdBQU8sQ0FFeEIsR0FEQTZKLEdBQVk3SixFQUFJMlAsRUFBTSxTQUFTLEVBQzNCLENBQUEzUCxFQUFHLFFBR0gsQ0FBQTJQLEVBQU0sU0FHVixPQUFRM1AsRUFBRyxJQUFLLENBQ2QsSUFBSyxRQUNMLElBQUssSUFDSGljLEVBQVMsRUFDVCxLQUNKLENBQ0YsRUFDTSttQixFQUFjbG5DLEVBQVcsSUFBTSxDQUNuQyxHQUFJNlQsRUFBTSxjQUNSLE1BQU8sUUFFVCxHQUFJQSxFQUFNLFNBQVcsS0FHckIsT0FBT0EsRUFBTSxPQUNmLENBQUMsRUFDS3dCLEVBQVVyVixFQUFXLEtBQU8sQ0FDaEMscUJBQXNCNlQsRUFBTSxjQUFnQixHQUFLLE9BQ2pELGVBQWdCQSxFQUFNLFNBQVcsQ0FBQ0EsRUFBTSxjQUFnQixHQUFLLE9BQzdELGdCQUFpQkEsRUFBTSxTQUFXLEdBQUssT0FDdkMsbUJBQW9CaXpCLEVBQWMsRUFBSSxHQUFLLE1BQzdDLEVBQUUsRUFDSXR4QixFQUFVLENBQ2QsVUFBVyxJQUFNM0IsRUFBTSxRQUN2QixRQUFBd0IsRUFDQSxZQUFBd3hCLEVBQ0EsV0FBWXI2QixHQUFpQixJQUFNc0gsRUFBTyxFQUFFLEVBQzVDLGNBQWVQLEdBQWlCZ0IsQ0FBVSxFQUMxQyxvQkFBcUJoQixHQUFpQm9CLENBQWdCLENBQ3hELEVBQ0EsT0FBTzFVLEVBQWdCb21DLEdBQWdCLFNBQVUsQ0FDL0MsTUFBTzd3QixFQUNQLElBQUksVUFBVyxDQUNiLE9BQU92VixFQUFnQjJULEdBQWFqQyxFQUFXLENBQzdDLEdBQUksTUFDSixJQUFJbUUsRUFBSSxDQUNOLElBQU1DLEVBQVE5TyxHQUFXVixHQUFPMkUsRUFBTTNFLEVBQUlzTixFQUFNLEdBQUcsRUFDbkQsT0FBT2tDLEdBQVUsWUFBY0EsRUFBTUQsQ0FBRSxDQUN6QyxFQUNBLElBQUksVUFBVyxDQUNiLE9BQU9peEIsRUFBZSxTQUFTLENBQ2pDLEVBQ0EsR0FBSyxnQkFBa0IsQ0FDckIsT0FBT0csRUFBWSxDQUNyQixFQUNBLEdBQUssaUJBQW1CLENBQ3RCLE9BQU9yekIsRUFBTSxRQUNmLEVBQ0EsR0FBSyxtQkFBcUIsQ0FDeEIsT0FBT1MsRUFBUSxDQUNqQixFQUNBLEdBQUssb0JBQXNCLENBQ3pCLE9BQU9JLEVBQWMsQ0FDdkIsRUFDQSxHQUFLLFlBQWMsQ0FDakIsT0FBT3F5QixFQUFlLFFBQVEsQ0FDaEMsRUFDQSxJQUFJLGVBQWdCLENBQ2xCLE9BQU85NEIsR0FBcUIsQ0FBQzRGLEVBQU0sY0FBZWt6QixFQUFlLGFBQWEsQ0FBQyxDQUNqRixFQUNBLElBQUksYUFBYyxDQUNoQixPQUFPOTRCLEdBQXFCLENBQUN1UyxFQUFhdW1CLEVBQWUsV0FBVyxDQUFDLENBQ3ZFLEVBQ0EsSUFBSSxTQUFVLENBQ1osT0FBTzk0QixHQUFxQixDQUFDNEYsRUFBTSxRQUFTa3pCLEVBQWUsT0FBTyxDQUFDLENBQ3JFLEVBQ0EsSUFBSSxXQUFZLENBQ2QsT0FBTzk0QixHQUFxQixDQUFDNlEsRUFBV2lvQixFQUFlLFNBQVMsQ0FBQyxDQUNuRSxFQUNBLElBQUksYUFBYyxDQUNoQixPQUFPOTRCLEdBQXFCLENBQUM0RixFQUFNLFlBQWFrekIsRUFBZSxXQUFXLENBQUMsQ0FDN0UsRUFDQSxJQUFJLFNBQVUsQ0FDWixPQUFPOTRCLEdBQXFCLENBQUM0RixFQUFNLFFBQVNrekIsRUFBZSxPQUFPLENBQUMsQ0FDckUsRUFDQSxjQUFBQyxFQUNBLGVBQUFDLENBQ0YsRUFBRzV4QixFQUFTdkIsQ0FBTSxDQUFDLENBQ3JCLENBQ0YsQ0FBQyxDQUNILENBQ0EsU0FBU3F6QixHQUFpQnRzQyxFQUFPLENBQy9CLElBQU13WixFQUFjNUMsRUFBa0IsQ0FDcEMsY0FBZSxFQUNqQixFQUFHNVcsQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxVQUFXLGlCQUFrQixXQUFZLFVBQVUsQ0FBQyxFQUMvRjJNLEVBQVFsSyxHQUFrQixDQUM5QixXQUFZLElBQU1qRCxFQUFNLFFBQ3hCLGtCQUFtQixJQUFNQSxFQUFNLGVBQy9CLGlCQUFtQnV6QixHQUFZdnpCLEVBQU0sV0FBV3V6QixDQUFPLEVBQ3ZELFdBQVksSUFBTXR6QixFQUFPLFFBQzNCLENBQUMsRUFLRCxPQUFPN1QsRUFBZ0J3bUMsR0FBYzkwQixFQUFXLENBQzlDLEtBQU0sbUJBQ04sSUFBSSxTQUFVLENBQ1osT0FBT3FQLEVBQU0sV0FBVyxDQUMxQixFQUNBLFNBVGUsSUFBTSxDQUNyQm5OLEVBQU0sV0FBVyxFQUNqQm1OLEVBQU0sT0FBTyxDQUNmLENBT0EsRUFBR2xOLENBQU0sQ0FBQyxDQUNaLENBQ0EsSUFBSXV6QixHQUFpQi9vQyxHQUFjLEVBQ25DLFNBQVNncEMsSUFBNEIsQ0FDbkMsT0FBTzlvQyxHQUFXNm9DLEVBQWMsQ0FDbEMsQ0FDQSxJQUFJRSxHQUFlLENBQ2pCLEtBQU0sQ0FBQ3pPLEVBQUtqYSxJQUFnQmlhLElBQVEsTUFBUWphLElBQWdCLGFBQWUsYUFBZSxZQUFjQSxJQUFnQixhQUFlLFlBQWMsVUFDckosU0FBVSxDQUFDaWEsRUFBS2phLElBQWdCMG9CLEdBQWEsS0FBS3pPLElBQVEsTUFBUSxNQUFRLE1BQU9qYSxDQUFXLENBQzlGLEVBQ0kyb0IsR0FBWSxDQUNkLE1BQVEzb0IsR0FBZ0JBLElBQWdCLGFBQWUsWUFBYyxhQUNyRSxLQUFPQSxHQUFnQkEsSUFBZ0IsYUFBZSxVQUFZLFdBQ3BFLEVBQ0EsU0FBUzRvQixHQUFZNXNDLEVBQU8sQ0FDMUIsSUFBTTZyQyxFQUFjRixHQUFtQixFQUNqQ2h4QixFQUFVNHdCLEdBQWUsRUFDekJzQixFQUF5QkosR0FBMEIsRUFDbkQsQ0FDSixVQUFBN29CLENBQ0YsRUFBSWhELEdBQVUsRUFDUnBILEVBQWM1QyxFQUFrQixDQUNwQyxHQUFJaTFCLEVBQVksV0FBVyxTQUFTLENBQ3RDLEVBQUc3ckMsQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxNQUFPLEtBQU0sV0FBWSxnQkFBaUIsVUFBVyxZQUFhLGNBQWUsU0FBUyxDQUFDLEVBQ3hJNVksRUFBTSxJQUFNaXJDLEVBQVksTUFBTSxFQUM5QmdCLElBQTJCLFNBQzdCanNDLEVBQU0sSUFBTWlyQyxFQUFZLE1BQU0sR0FBSzd5QixFQUFNLEdBQ3JDNnpCLEVBQXVCLFVBQVUsSUFBTSxRQUN6Q0EsRUFBdUIsYUFBYWpzQyxDQUFHLEdBRTNDLElBQU1nWSxFQUFVRCxHQUFjLElBQU1nQyxFQUFRLFdBQVcsRUFBRyxJQUFNLFFBQVEsRUFDbEVzUCxFQUFlOWtCLEVBQVcsSUFDdkJ5VCxFQUFRLElBQU0sS0FBTytCLEVBQVEsV0FBVyxHQUFHLGFBQWEsTUFBTSxHQUFLLElBQzNFLEVBQ0Q1VixFQUFhcVcsR0FBRyxJQUFNeXhCLEdBQXdCLE1BQU0sRUFBSTl0QyxHQUFVLENBQzNEa3JCLEVBQWEsR0FFZGxyQixJQUFVNkIsRUFBSSxHQUNoQitaLEVBQVEsV0FBVyxHQUFHLE1BQU0sQ0FDaEMsQ0FBQyxDQUFDLEVBQ0YsSUFBTW15QixFQUFjLElBQU0sQ0FDcEJELElBQTJCLE9BQ3hCbHlCLEVBQVEsT0FBTyxFQU1ka3lCLEVBQXVCLE1BQU0sSUFBTWpzQyxFQUFJLEdBQ3pDaXNDLEVBQXVCLFVBQVUsR0FOOUJBLEVBQXVCLGNBQWMsR0FDeENBLEVBQXVCLGlCQUFpQixFQUFJLEVBRTlDbHlCLEVBQVEsS0FBSyxFQUFLLEdBTXBCQSxFQUFRLE9BQU8sRUFBSSxDQUN2QixFQUNNK0ssRUFBaUJyYyxHQUFPLENBQzVCNkosR0FBWTdKLEVBQUkyUCxFQUFNLGFBQWEsRUFDbkMzUCxFQUFHLGNBQWMsUUFBUSxZQUFjQSxFQUFHLFlBQ3RDLENBQUMyUCxFQUFNLFVBQVkzUCxFQUFHLGNBQWdCLFNBQVdBLEVBQUcsU0FBVyxHQUNqRXlqQyxFQUFZLENBRWhCLEVBQ01sbkIsRUFBV3ZjLEdBQU8sQ0FDdEI2SixHQUFZN0osRUFBSTJQLEVBQU0sT0FBTyxFQUN4QkEsRUFBTSxVQUNMM1AsRUFBRyxjQUFjLFFBQVEsY0FBZ0IsU0FDM0N5akMsRUFBWSxDQUVsQixFQUNNN29CLEVBQWE1YSxHQUFPLENBRXhCLEdBREE2SixHQUFZN0osRUFBSTJQLEVBQU0sU0FBUyxFQUMzQixDQUFBQSxFQUFNLFNBR1YsSUFBSWlSLEVBQWEsRUFDZixPQUFRNWdCLEVBQUcsSUFBSyxDQUNkLElBQUssUUFDTCxJQUFLLElBQ0gsTUFDSixDQUVGLE9BQVFBLEVBQUcsSUFBSyxDQUNkLElBQUssUUFDTCxJQUFLLElBQ0wsS0FBS3NqQyxHQUFVLE1BQU1kLEVBQVksWUFBWSxDQUFDLEVBQzVDeGlDLEVBQUcsZ0JBQWdCLEVBQ25CQSxFQUFHLGVBQWUsRUFDbEI2TyxHQUFtQjdPLEVBQUcsYUFBYSxFQUNuQ3NSLEVBQVEsS0FBSyxPQUFPLEVBQ3BCa3lCLEdBQXdCLGlCQUFpQixFQUFJLEVBQzdDQSxHQUF3QixTQUFTanNDLENBQUcsRUFDcEMsTUFDRixLQUFLK3JDLEdBQVUsS0FBS2QsRUFBWSxZQUFZLENBQUMsRUFDM0N4aUMsRUFBRyxnQkFBZ0IsRUFDbkJBLEVBQUcsZUFBZSxFQUNsQnNSLEVBQVEsS0FBSyxNQUFNLEVBQ25CLE1BQ0YsS0FBSyt4QixHQUFhLEtBQUs5b0IsRUFBVSxFQUFHaW9CLEVBQVksWUFBWSxDQUFDLEVBQzNELEdBQUlnQixJQUEyQixPQUM3QixNQUNGeGpDLEVBQUcsZ0JBQWdCLEVBQ25CQSxFQUFHLGVBQWUsRUFDbEJ3akMsRUFBdUIsU0FBUyxFQUNoQyxNQUNGLEtBQUtILEdBQWEsU0FBUzlvQixFQUFVLEVBQUdpb0IsRUFBWSxZQUFZLENBQUMsRUFDL0QsR0FBSWdCLElBQTJCLE9BQzdCLE1BQ0Z4akMsRUFBRyxnQkFBZ0IsRUFDbkJBLEVBQUcsZUFBZSxFQUNsQndqQyxFQUF1QixhQUFhLEVBQ3BDLEtBQ0osRUFDRixFQUNNRSxFQUFlMWpDLEdBQU8sQ0FDMUI2SixHQUFZN0osRUFBSTJQLEVBQU0sV0FBVyxFQUM3QjJCLEVBQVEsV0FBVyxHQUFHLFFBQVEsY0FBZ0IsU0FFOUMsQ0FBQzNCLEVBQU0sVUFBWTZ6QixJQUEyQixRQUFVQSxFQUF1QixNQUFNLElBQU0sUUFDN0ZBLEVBQXVCLFNBQVNqc0MsQ0FBRyxDQUV2QyxFQUNNaWxCLEVBQVd4YyxHQUFPLENBQ3RCNkosR0FBWTdKLEVBQUkyUCxFQUFNLE9BQU8sRUFDekI2ekIsSUFBMkIsUUFBVXhqQyxFQUFHLGNBQWMsUUFBUSxjQUFnQixTQUNoRndqQyxFQUF1QixTQUFTanNDLENBQUcsQ0FDdkMsRUFDQSxPQUFBbUUsRUFBYSxJQUFNMUYsRUFBVXNiLEVBQVEsa0JBQWtCM0IsRUFBTSxFQUFFLENBQUMsQ0FBQyxFQUMxRDVULEVBQWdCdWtCLEdBQVk3UyxFQUFXLENBQzVDLElBQUltRSxFQUFJLENBQ04sSUFBTUMsRUFBUTlPLEdBQVV1TyxFQUFRLGNBQWUzQixFQUFNLEdBQUcsRUFDeEQsT0FBT2tDLEdBQVUsWUFBY0EsRUFBTUQsQ0FBRSxDQUN6QyxFQUNBLEdBQUssOEJBQWdDLENBQ25DLE9BQU80d0IsRUFBWSxNQUFNLENBQzNCLEVBQ0EsSUFBSSxJQUFLLENBQ1AsT0FBTzd5QixFQUFNLEVBQ2YsRUFDQSxJQUFJLFVBQVcsQ0FDYixPQUFPQSxFQUFNLFFBQ2YsRUFDQSxnQkFBaUIsT0FDakIsR0FBSyxpQkFBbUIsQ0FDdEIsT0FBTzJCLEVBQVEsT0FBTyxDQUN4QixFQUNBLEdBQUssaUJBQW1CLENBQ3RCLE9BQU94VixFQUFXLElBQU0sQ0FBQyxDQUFDd1YsRUFBUSxPQUFPLENBQUMsRUFBRSxFQUFJQSxFQUFRLFVBQVUsRUFBSSxNQUN4RSxFQUNBLEdBQUssb0JBQXNCLENBQ3pCLE9BQU8vWixFQUFJLElBQU0sUUFBVWlzQyxHQUF3QixNQUFNLElBQU1qc0MsRUFBSSxFQUFJLEdBQU8sTUFDaEYsRUFDQSxJQUFJLFVBQVcsQ0FDYixPQUFPaXNDLElBQTJCLE9BQVNBLEVBQXVCLE1BQU0sSUFBTWpzQyxFQUFJLEdBQUtpc0MsRUFBdUIsVUFBVSxJQUFNanNDLEVBQUksRUFBSSxFQUFJLEdBQUssTUFDakosRUFDQSxjQUFBOGtCLEVBQ0EsWUFBQXFuQixFQUNBLFFBQUFubkIsRUFDQSxVQUFBM0IsRUFDQSxRQUFBNEIsRUFDQSxLQUFNZ25CLElBQTJCLE9BQVMsV0FBYSxNQUN6RCxFQUFHLElBQU1seUIsRUFBUSxRQUFRLEVBQUcxQixDQUFNLENBQUMsQ0FDckMsQ0FDQSxJQUFJK3pCLEdBQXdCdnBDLEdBQWMsRUFDMUMsU0FBU3dwQyxJQUFtQyxDQUMxQyxPQUFPdHBDLEdBQVdxcEMsRUFBcUIsQ0FDekMsQ0FDQSxTQUFTRSxHQUFnQmx0QyxFQUFPLENBQzlCLElBQUlxUSxFQUNFdzdCLEVBQWNGLEdBQW1CLEVBQ2pDaHhCLEVBQVU0d0IsR0FBZSxFQUN6QnNCLEVBQXlCSixHQUEwQixFQUNuRFUsRUFBZ0NGLEdBQWlDLEVBQ2pFLENBQ0osVUFBQXJwQixDQUNGLEVBQUloRCxHQUFVLEVBQ1JwSCxFQUFjNUMsRUFBa0IsQ0FDcEMsR0FBSWkxQixFQUFZLFdBQVcsV0FBV3R5QixHQUFlLENBQUMsRUFBRSxDQUMxRCxFQUFHdlosQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxNQUFPLEtBQU0sUUFBUyxrQkFBbUIsbUJBQW9CLGtCQUFtQixpQkFBa0IsaUJBQWtCLGdCQUFpQixZQUFhLGNBQWUsWUFBYSxZQUFZLENBQUMsRUFDeE80ekIsRUFBZSxFQUNiQyxFQUFxQixJQUNsQjF5QixFQUFRLGtCQUFrQixHQUFLLE1BQVFreUIsSUFBMkIsUUFBVWhCLEVBQVksUUFBUSxFQUVuR3lCLEVBQWlCN0gsR0FBcUIsQ0FDMUMsaUJBQWtCOXFCLEVBQVEsVUFBVSxFQUFFLGlCQUN0QyxXQUFZQSxFQUFRLFVBQVUsRUFBRSxXQUNoQyxVQUFXQSxFQUFRLFVBQ25CLGVBQWdCLEdBRWhCLGdCQUFpQixHQUNqQixrQkFBbUIsSUFBTSxDQUFDQSxFQUFRLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQzNFLFlBQWEsSUFBTWt4QixFQUFZLFlBQVksSUFBTSxhQUFlLFdBQWEsWUFDL0UsRUFBRyxJQUFNeDdCLENBQUcsRUFDWjAxQixHQUFpQixDQUNmLFVBQVcsSUFBTXNILEVBQW1CLEdBQUsxeUIsRUFBUSxPQUFPLEVBQ3hELGlCQUFtQnhILEdBQVUsQ0FDdkIwNUIsSUFBMkIsUUFDN0I3ekIsRUFBTSxrQkFBa0I3RixDQUFLLENBQ2pDLEVBQ0EsbUJBQW9CNkYsRUFBTSxnQkFDNUIsRUFBRyxJQUFNM0ksQ0FBRyxFQUNaLElBQU00VCxFQUFhNWEsR0FBTyxDQUN4QixHQUFLeUksR0FBU3pJLEVBQUcsY0FBZUEsRUFBRyxNQUFNLElBR3JDQSxFQUFHLE1BQVEsT0FBU3NSLEVBQVEsT0FBTyxHQUNyQ3RSLEVBQUcsZUFBZSxFQUVoQndqQyxJQUEyQixRQUN6QnhqQyxFQUFHLGNBQWMsYUFBYSxlQUFlLElBQU0sUUFDckQsT0FBUUEsRUFBRyxJQUFLLENBQ2QsS0FBS3FqQyxHQUFhLEtBQUs5b0IsRUFBVSxFQUFHaW9CLEVBQVksWUFBWSxDQUFDLEVBQzNEeGlDLEVBQUcsZ0JBQWdCLEVBQ25CQSxFQUFHLGVBQWUsRUFDbEJzUixFQUFRLE1BQU0sRUFBSSxFQUNsQmt5QixFQUF1QixpQkFBaUIsRUFBSSxFQUM1Q0EsRUFBdUIsU0FBUyxFQUNoQyxNQUNGLEtBQUtILEdBQWEsU0FBUzlvQixFQUFVLEVBQUdpb0IsRUFBWSxZQUFZLENBQUMsRUFDL0QsR0FBSXhpQyxFQUFHLGNBQWMsYUFBYSxhQUFhLEVBQzdDLE1BQ0ZBLEVBQUcsZ0JBQWdCLEVBQ25CQSxFQUFHLGVBQWUsRUFDbEJzUixFQUFRLE1BQU0sRUFBSSxFQUNsQmt5QixFQUF1QixpQkFBaUIsRUFBSSxFQUM1Q0EsRUFBdUIsYUFBYSxFQUNwQyxLQUNKLENBRU4sRUFDTVUsRUFBbUJsa0MsR0FBTyxDQUM5QjJQLEVBQU0sa0JBQWtCM1AsQ0FBRSxFQUMxQndqQyxHQUF3QixpQkFBaUIsRUFBSyxFQUM5Q2x5QixFQUFRLE1BQU0sRUFBSSxDQUNwQixFQUNNOG1CLEVBQWtCcDRCLEdBQU8sQ0FDN0IyUCxFQUFNLGlCQUFpQjNQLENBQUUsRUFDckJ3aUMsRUFBWSxRQUFRLEdBQ3RCeGlDLEVBQUcsZUFBZSxDQUV0QixFQUNNbWtDLEVBQWtCbmtDLEdBQU8sQ0FDN0I2SixHQUFZN0osRUFBSTJQLEVBQU0sY0FBYyxFQUMvQjJCLEVBQVEsT0FBTyxJQUdwQkEsRUFBUSxrQkFBa0IsR0FBRyxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFLLEVBQzVFQSxFQUFRLGtCQUFrQixHQUFHLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLE1BQU0sRUFDbEYsRUFDTXd4QixFQUFpQjlpQyxHQUFPLENBRTVCLEdBREE2SixHQUFZN0osRUFBSTJQLEVBQU0sYUFBYSxFQUMvQjNQLEVBQUcsY0FBZ0IsUUFDckIsT0FFRixJQUFNdUcsRUFBU3ZHLEVBQUcsT0FDWm9rQyxFQUFxQkwsSUFBaUIvakMsRUFBRyxRQUMzQ3lJLEdBQVN6SSxFQUFHLGNBQWV1RyxDQUFNLEdBQUs2OUIsSUFDeEM5eUIsRUFBUSxjQUFjdFIsRUFBRyxRQUFVK2pDLEVBQWUsUUFBVSxNQUFNLEVBQ2xFQSxFQUFlL2pDLEVBQUcsUUFFdEIsRUFDQXRFLEVBQWEsSUFBTTFGLEVBQVVzYixFQUFRLGtCQUFrQjNCLEVBQU0sRUFBRSxDQUFDLENBQUMsRUFDakUsSUFBTTAwQixFQUFtQixDQUN2QixJQUFLdGhDLEdBQVdWLEdBQU8sQ0FDckJpUCxFQUFRLGNBQWNqUCxDQUFFLEVBQ3hCMkUsRUFBTTNFLENBQ1IsRUFBR3NOLEVBQU0sR0FBRyxFQUNaLEtBQU0sT0FDTixJQUFJLElBQUssQ0FDUCxPQUFPQSxFQUFNLEVBQ2YsRUFDQSxJQUFJLFVBQVcsQ0FDYixPQUFPczBCLEVBQWUsU0FBUyxDQUNqQyxFQUNBLEdBQUksbUJBQW9CLENBQ3RCLE9BQU8zeUIsRUFBUSxVQUFVLENBQzNCLEVBQ0EsVUFBV3ZILEdBQXFCLENBQUM0RixFQUFNLFVBQVdzMEIsRUFBZSxVQUFXcnBCLENBQVMsQ0FBQyxFQUN0RixZQUFhN1EsR0FBcUIsQ0FBQzRGLEVBQU0sWUFBYXMwQixFQUFlLFdBQVcsQ0FBQyxFQUNqRixVQUFXbDZCLEdBQXFCLENBQUM0RixFQUFNLFVBQVdzMEIsRUFBZSxTQUFTLENBQUMsRUFDM0UsV0FBWWw2QixHQUFxQixDQUFDNEYsRUFBTSxXQUFZczBCLEVBQWUsVUFBVSxDQUFDLEVBQzlFLGVBQUFFLEVBQ0EsY0FBQXJCLEVBQ0EsR0FBSSxvQkFBcUIsQ0FDdkIsT0FBT04sRUFBWSxZQUFZLENBQ2pDLENBQ0YsRUFDQSxPQUFPem1DLEVBQWdCMlYsRUFBTSxDQUMzQixJQUFJLE1BQU8sQ0FDVCxPQUFPSixFQUFRLGVBQWUsQ0FDaEMsRUFDQSxJQUFJLFVBQVcsQ0FDYixPQUFPdlYsRUFBZ0IyVixFQUFNLENBQzNCLElBQUksTUFBTyxDQUNULE9BQU9veUIsSUFBa0MsUUFBVXh5QixFQUFRLGtCQUFrQixHQUFLLElBQ3BGLEVBQ0EsSUFBSSxVQUFXLENBQ2IsT0FBT3ZWLEVBQWdCMlQsR0FBYWpDLEVBQVcsQ0FDN0MsR0FBSSxLQUNOLEVBQUcsSUFBTTZELEVBQVEsUUFBUSxFQUFHK3lCLEVBQWtCejBCLENBQU0sQ0FBQyxDQUN2RCxFQUNBLElBQUksVUFBVyxDQUNiLE9BQU83VCxFQUFnQjI3QixHQUFPLFdBQVksQ0FDeEMsSUFBSSxVQUFXLENBQ2IsT0FBTzM3QixFQUFnQjY4QixHQUFrQm5yQixFQUFXLENBQ2xELElBQUksNkJBQThCLENBQ2hDLE9BQU8zUixFQUFXLElBQU0sQ0FBQyxDQUFDa29DLEVBQW1CLENBQUMsRUFBRSxHQUFLMXlCLEVBQVEsT0FBTyxDQUN0RSxFQUNBLElBQUksa0JBQW1CLENBQ3JCLE1BQU8sQ0FBQ0EsRUFBUSxVQUFVLENBQzVCLEVBQ0Esd0JBQXlCLEdBQ3pCLElBQUksT0FBUSxDQUNWLE9BQU96SixHQUFhLENBQ2xCLHFDQUFzQyw0Q0FDdEMsU0FBVSxVQUNaLEVBQUc4SCxFQUFNLEtBQUssQ0FDaEIsRUFDQSxnQkFBQXUwQixFQUNBLGVBQUE5TCxFQUNBLElBQUksV0FBWSxDQUNkLE9BQU85bUIsRUFBUSxLQUNqQixDQUNGLEVBQUcsSUFBTUEsRUFBUSxRQUFRLEVBQUcreUIsRUFBa0J6MEIsQ0FBTSxDQUFDLENBQ3ZELENBQ0YsQ0FBQyxDQUNILENBQ0YsQ0FBQyxDQUNILENBQ0YsQ0FBQyxDQUNILENBQ0EsU0FBUzAwQixHQUFZM3RDLEVBQU8sQ0FDMUIsSUFBSXFRLEVBQ0V3N0IsRUFBY0YsR0FBbUIsRUFDakNoeEIsRUFBVTR3QixHQUFlLEVBQ3pCLENBQUN2eUIsRUFBT0MsQ0FBTSxFQUFJQyxHQUFXbFosRUFBTyxDQUFDLEtBQUssQ0FBQyxFQUNqRCxPQUFBb3JDLEdBQWEsQ0FDWCxRQUFTLElBQU0vNkIsR0FBTyxLQUN0QixRQUFTLElBQU1zSyxFQUFRLGVBQWUsR0FBS2t4QixFQUFZLGNBQWMsQ0FDdkUsQ0FBQyxFQUNNem1DLEVBQWdCOG5DLEdBQWlCcDJCLEVBQVcsQ0FDakQsSUFBSW1FLEVBQUksQ0FDTixJQUFNQyxFQUFROU8sR0FBV1YsR0FBTyxDQUM5QjJFLEVBQU0zRSxDQUNSLEVBQUdzTixFQUFNLEdBQUcsRUFDWixPQUFPa0MsR0FBVSxZQUFjQSxFQUFNRCxDQUFFLENBQ3pDLENBQ0YsRUFBR2hDLENBQU0sQ0FBQyxDQUNaLENBQ0EsSUFBSTIwQixHQUFtQm5xQyxHQUFjLEVBQ3JDLFNBQVNvcUMsSUFBc0IsQ0FDN0IsSUFBTWx6QixFQUFVaFgsR0FBV2lxQyxFQUFnQixFQUMzQyxHQUFJanpCLElBQVksT0FDZCxNQUFNLElBQUksTUFBTSwrRUFBK0UsRUFFakcsT0FBT0EsQ0FDVCxDQUNBLFNBQVNtekIsR0FBVTl0QyxFQUFPLENBQ3hCLElBQU02ckMsRUFBY0YsR0FBbUIsRUFDakNueUIsRUFBYzVDLEVBQWtCLENBQ3BDLEdBQUlpMUIsRUFBWSxXQUFXLFNBQVN0eUIsR0FBZSxDQUFDLEVBQUUsQ0FDeEQsRUFBR3ZaLENBQUssRUFDRixDQUFDeVosRUFBU0MsQ0FBVSxFQUFJdlosRUFBYSxFQUNyQ3dhLEVBQVUsQ0FDZCxXQUFZaEosR0FBaUIsSUFBTTZILEVBQVksRUFBRSxFQUNqRCxnQkFBaUJkLEdBQWlCZ0IsQ0FBVSxDQUM5QyxFQUNBLE9BQU90VSxFQUFnQndvQyxHQUFpQixTQUFVLENBQ2hELE1BQU9qekIsRUFDUCxJQUFJLFVBQVcsQ0FDYixPQUFPdlYsRUFBZ0IyVCxHQUFhakMsRUFBVyxDQUM3QyxHQUFJLE1BQ0osS0FBTSxRQUNOLEdBQUssbUJBQXFCLENBQ3hCLE9BQU8yQyxFQUFRLENBQ2pCLENBQ0YsRUFBR0QsQ0FBVyxDQUFDLENBQ2pCLENBQ0YsQ0FBQyxDQUNILENBQ0EsU0FBU3UwQixHQUFlL3RDLEVBQU8sQ0FDN0IsSUFBTTJhLEVBQVVrekIsR0FBb0IsRUFDOUJyMEIsRUFBYzVDLEVBQWtCLENBQ3BDLEdBQUkrRCxFQUFRLFdBQVcsT0FBTyxDQUNoQyxFQUFHM2EsQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxJQUFJLENBQUMsRUFDdEQsT0FBQXpVLEVBQWEsSUFBTTFGLEVBQVVzYixFQUFRLGdCQUFnQjNCLEVBQU0sRUFBRSxDQUFDLENBQUMsRUFDeEQ1VCxFQUFnQjJULEdBQWFqQyxFQUFXLENBQzdDLEdBQUksT0FDSixJQUFJLElBQUssQ0FDUCxPQUFPa0MsRUFBTSxFQUNmLEVBQ0EsY0FBZSxNQUNqQixFQUFHQyxDQUFNLENBQUMsQ0FDWixDQUNBLFNBQVMrMEIsR0FBU2h1QyxFQUFPLENBQ3ZCLElBQU0yYSxFQUFVNHdCLEdBQWUsRUFDekIveEIsRUFBYzVDLEVBQWtCLENBQ3BDLFNBQVUsUUFDWixFQUFHNVcsQ0FBSyxFQUNSLE9BQU9vRixFQUFnQjJULEdBQWFqQyxFQUFXLENBQzdDLEdBQUksT0FDSixjQUFlLE1BQ2pCLEVBQUcsSUFBTTZELEVBQVEsUUFBUSxFQUFHbkIsQ0FBVyxDQUFDLENBQzFDLENBQ0EsU0FBU3kwQixHQUFTanVDLEVBQU8sQ0FDdkIsT0FBT29GLEVBQWdCd21DLEdBQWM5MEIsRUFBVyxDQUM5QyxLQUFNLFdBQ04sY0FBZSxFQUNqQixFQUFHOVcsQ0FBSyxDQUFDLENBQ1gsQ0FDQSxTQUFTa3VDLEdBQW9CbHVDLEVBQU8sQ0FDbEMsSUFBTTJhLEVBQVU4d0IsR0FBbUIsRUFDN0JqeUIsRUFBYzVDLEVBQWtCLENBQ3BDLEdBQUkrRCxFQUFRLFdBQVcsYUFBYSxDQUN0QyxFQUFHM2EsQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxJQUFJLENBQUMsRUFDdEQsT0FBQXpVLEVBQWEsSUFBTTFGLEVBQVVzYixFQUFRLG9CQUFvQjNCLEVBQU0sRUFBRSxDQUFDLENBQUMsRUFDNUQ1VCxFQUFnQjJULEdBQWFqQyxFQUFXLENBQzdDLEdBQUksTUFDSixJQUFJLElBQUssQ0FDUCxPQUFPa0MsRUFBTSxFQUNmLENBQ0YsRUFBRyxJQUFNMkIsRUFBUSxRQUFRLEVBQUcxQixDQUFNLENBQUMsQ0FDckMsQ0FDQSxTQUFTazFCLEdBQWtCbnVDLEVBQU8sQ0FDaEMsSUFBTTJhLEVBQVU4d0IsR0FBbUIsRUFDN0JqeUIsRUFBYzVDLEVBQWtCLENBQ3BDLEdBQUkrRCxFQUFRLFdBQVcsV0FBVyxDQUNwQyxFQUFHM2EsQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxZQUFZLENBQUMsRUFDOUQsT0FBT3BVLEVBQWdCMlYsRUFBTSxDQUMzQixJQUFJLE1BQU8sQ0FDVCxPQUFPL0IsRUFBTSxZQUFjMkIsRUFBUSxVQUFVLENBQy9DLEVBQ0EsSUFBSSxVQUFXLENBQ2IsT0FBT3ZWLEVBQWdCMlQsR0FBYWpDLEVBQVcsQ0FDN0MsR0FBSSxLQUNOLEVBQUcsSUFBTTZELEVBQVEsUUFBUSxFQUFHMUIsQ0FBTSxDQUFDLENBQ3JDLENBQ0YsQ0FBQyxDQUNILENBQ0EsU0FBU20xQixHQUFjcHVDLEVBQU8sQ0FDNUIsSUFBTTJhLEVBQVU4d0IsR0FBbUIsRUFDN0JqeUIsRUFBYzVDLEVBQWtCLENBQ3BDLEdBQUkrRCxFQUFRLFdBQVcsT0FBTyxDQUNoQyxFQUFHM2EsQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxNQUFPLElBQUksQ0FBQyxFQUM3RCxPQUFBelUsRUFBYSxJQUFNMUYsRUFBVXNiLEVBQVEsY0FBYzNCLEVBQU0sRUFBRSxDQUFDLENBQUMsRUFDdEQ1VCxFQUFnQjJULEdBQWFqQyxFQUFXLENBQzdDLEdBQUksTUFDSixJQUFJbUUsRUFBSSxDQUNOLElBQU1DLEVBQVE5TyxHQUFVdU8sRUFBUSxZQUFhM0IsRUFBTSxHQUFHLEVBQ3RELE9BQU9rQyxHQUFVLFlBQWNBLEVBQU1ELENBQUUsQ0FDekMsRUFDQSxJQUFJLElBQUssQ0FDUCxPQUFPakMsRUFBTSxFQUNmLENBQ0YsRUFBRyxJQUFNMkIsRUFBUSxRQUFRLEVBQUcxQixDQUFNLENBQUMsQ0FDckMsQ0FDQSxTQUFTbzFCLEdBQVdydUMsRUFBTyxDQUN6QixJQUFNMmEsRUFBVTR3QixHQUFlLEVBQy9CLE9BQU9ubUMsRUFBZ0IyVixFQUFNLENBQzNCLElBQUksTUFBTyxDQUNULE9BQU9KLEVBQVEsZUFBZSxDQUNoQyxFQUNBLElBQUksVUFBVyxDQUNiLE9BQU92VixFQUFnQmtwQyxHQUFRdHVDLENBQUssQ0FDdEMsQ0FDRixDQUFDLENBQ0gsQ0FDQSxJQUFJdXVDLEdBQXdCOXFDLEdBQWMsRUFDMUMsU0FBUytxQyxJQUEyQixDQUNsQyxJQUFNN3pCLEVBQVVoWCxHQUFXNHFDLEVBQXFCLEVBQ2hELEdBQUk1ekIsSUFBWSxPQUNkLE1BQU0sSUFBSSxNQUFNLHlGQUF5RixFQUUzRyxPQUFPQSxDQUNULENBQ0EsU0FBUzh6QixHQUFlenVDLEVBQU8sQ0FFN0IsSUFBTXNaLEVBRGNxeUIsR0FBbUIsRUFDVCxXQUFXLGNBQWNweUIsR0FBZSxDQUFDLEVBQUUsRUFDbkVDLEVBQWM1QyxFQUFrQixDQUNwQyxHQUFJMEMsQ0FDTixFQUFHdFosQ0FBSyxFQUNGLENBQUNnWixFQUFPQyxDQUFNLEVBQUlDLEdBQVdNLEVBQWEsQ0FBQyxRQUFTLGVBQWdCLFdBQVksVUFBVSxDQUFDLEVBQzNGLENBQUNvckIsRUFBVUMsQ0FBVyxFQUFJcHBCLEdBQXlCLENBQ3ZELE1BQU8sSUFBTXpDLEVBQU0sTUFDbkIsYUFBYyxJQUFNQSxFQUFNLGFBQzFCLFNBQVdqYSxHQUFVaWEsRUFBTSxXQUFXamEsQ0FBSyxDQUM3QyxDQUFDLEVBQ0s0YixFQUFVLENBQ2QsV0FBWSxJQUFNM0IsRUFBTSxTQUN4QixnQkFBa0JqYSxHQUFVQSxJQUFVNmxDLEVBQVMsRUFDL0MsaUJBQWtCQyxDQUNwQixFQUNBLE9BQU96L0IsRUFBZ0JtcEMsR0FBc0IsU0FBVSxDQUNyRCxNQUFPNXpCLEVBQ1AsSUFBSSxVQUFXLENBQ2IsT0FBT3ZWLEVBQWdCMG9DLEdBQVc3MEIsQ0FBTSxDQUMxQyxDQUNGLENBQUMsQ0FDSCxDQUNBLFNBQVN5MUIsR0FBYzF1QyxFQUFPLENBQzVCLElBQU0yYSxFQUFVNnpCLEdBQXlCLEVBQ25DaDFCLEVBQWM1QyxFQUFrQixDQUNwQyxjQUFlLEVBQ2pCLEVBQUc1VyxDQUFLLEVBQ0YsQ0FBQ2daLEVBQU9DLENBQU0sRUFBSUMsR0FBV00sRUFBYSxDQUFDLFFBQVMsVUFBVSxDQUFDLEVBS3JFLE9BQU9wVSxFQUFnQndtQyxHQUFjOTBCLEVBQVcsQ0FDOUMsS0FBTSxnQkFDTixJQUFJLFNBQVUsQ0FDWixPQUFPNkQsRUFBUSxnQkFBZ0IzQixFQUFNLEtBQUssQ0FDNUMsRUFDQSxTQVRlLElBQU0sQ0FDckJBLEVBQU0sV0FBVyxFQUNqQjJCLEVBQVEsaUJBQWlCM0IsRUFBTSxLQUFLLENBQ3RDLENBT0EsRUFBR0MsQ0FBTSxDQUFDLENBQ1osQ0FDQSxTQUFTMDFCLEdBQW9CM2pCLEVBQVc3WCxFQUFPeTdCLEVBQVcsQ0FDeEQsSUFBTXBQLEVBQWdCeFUsRUFBVSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQ3RDbmEsRUFBYys5QixFQUFVLHNCQUFzQixFQUM5QzE0QixFQUFVLENBQUMsRUFDWDI0QixFQUFXMTdCLEVBQU0sUUFDakIyN0IsRUFBVzM3QixFQUFNLFFBQ3ZCLE9BQVFxc0IsRUFBZSxDQUNyQixJQUFLLE1BQ0h0cEIsRUFBUSxLQUFLLENBQUMyNEIsRUFBVUMsRUFBVyxDQUFDLENBQUMsRUFDckM1NEIsRUFBUSxLQUFLLENBQUNyRixFQUFZLEtBQU1BLEVBQVksTUFBTSxDQUFDLEVBQ25EcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLEtBQU1BLEVBQVksR0FBRyxDQUFDLEVBQ2hEcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLE1BQU9BLEVBQVksR0FBRyxDQUFDLEVBQ2pEcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLE1BQU9BLEVBQVksTUFBTSxDQUFDLEVBQ3BELE1BQ0YsSUFBSyxRQUNIcUYsRUFBUSxLQUFLLENBQUMyNEIsRUFBVyxFQUFHQyxDQUFRLENBQUMsRUFDckM1NEIsRUFBUSxLQUFLLENBQUNyRixFQUFZLEtBQU1BLEVBQVksR0FBRyxDQUFDLEVBQ2hEcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLE1BQU9BLEVBQVksR0FBRyxDQUFDLEVBQ2pEcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLE1BQU9BLEVBQVksTUFBTSxDQUFDLEVBQ3BEcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLEtBQU1BLEVBQVksTUFBTSxDQUFDLEVBQ25ELE1BQ0YsSUFBSyxTQUNIcUYsRUFBUSxLQUFLLENBQUMyNEIsRUFBVUMsRUFBVyxDQUFDLENBQUMsRUFDckM1NEIsRUFBUSxLQUFLLENBQUNyRixFQUFZLE1BQU9BLEVBQVksR0FBRyxDQUFDLEVBQ2pEcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLE1BQU9BLEVBQVksTUFBTSxDQUFDLEVBQ3BEcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLEtBQU1BLEVBQVksTUFBTSxDQUFDLEVBQ25EcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLEtBQU1BLEVBQVksR0FBRyxDQUFDLEVBQ2hELE1BQ0YsSUFBSyxPQUNIcUYsRUFBUSxLQUFLLENBQUMyNEIsRUFBVyxFQUFHQyxDQUFRLENBQUMsRUFDckM1NEIsRUFBUSxLQUFLLENBQUNyRixFQUFZLE1BQU9BLEVBQVksTUFBTSxDQUFDLEVBQ3BEcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLEtBQU1BLEVBQVksTUFBTSxDQUFDLEVBQ25EcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLEtBQU1BLEVBQVksR0FBRyxDQUFDLEVBQ2hEcUYsRUFBUSxLQUFLLENBQUNyRixFQUFZLE1BQU9BLEVBQVksR0FBRyxDQUFDLEVBQ2pELEtBQ0osQ0FDQSxPQUFPcUYsQ0FDVCxDQUNBLFNBQVM2NEIsR0FBcUI1N0IsRUFBTzY3QixFQUFNLENBQ3pDLE9BQUtBLEVBR0VoNUIsR0FBaUIsQ0FBQzdDLEVBQU0sUUFBU0EsRUFBTSxPQUFPLEVBQUc2N0IsQ0FBSSxFQUZuRCxFQUdYLENBQ0EsU0FBU0MsR0FBS2p2QyxFQUFPLENBQ25CLElBQU02ckMsRUFBY0YsR0FBbUIsRUFDakN1RCxFQUE2QjF5QixHQUFnQyxFQUM3RDJ5QixFQUFvQjdELEdBQXVCLEVBQzNDdUIsRUFBeUJKLEdBQTBCLEVBQ25EVSxFQUFnQ0YsR0FBaUMsRUFDakV6ekIsRUFBYzVDLEVBQWtCLENBQ3BDLFVBQVdpMUIsRUFBWSxZQUFZLElBQU0sYUFBZSxlQUFpQixhQUMzRSxFQUFHN3JDLENBQUssRUFDRixDQUFDZ1osRUFBT0MsQ0FBTSxFQUFJQyxHQUFXTSxFQUFhLENBQUMsT0FBUSxjQUFlLGNBQWMsQ0FBQyxFQUNuRjQxQixFQUF3QixFQUN4QkMsRUFBcUIsS0FDckJDLEVBQWEsUUFDWCxDQUFDQyxFQUFXQyxDQUFZLEVBQUlydkMsRUFBYSxFQUN6QyxDQUFDc3ZDLEVBQVdDLENBQVksRUFBSXZ2QyxFQUFhLEVBQ3pDLENBQUN3dkMsRUFBWUMsQ0FBYSxFQUFJenZDLEVBQWEsRUFDM0MsQ0FBQzB2QyxFQUFZQyxDQUFhLEVBQUkzdkMsRUFBYSxFQUMzQyxDQUFDNHZDLEVBQWVDLENBQWdCLEVBQUk3dkMsRUFBYSxFQUFJLEVBQ3JELENBQUM0L0IsRUFBa0JDLENBQW1CLEVBQUk3L0IsRUFBYThZLEVBQU8sU0FBUyxFQUN2RSxDQUFDZzNCLEVBQWFDLENBQWMsRUFBSS92QyxFQUFhLENBQUMsQ0FBQyxFQUMvQyxDQUFDc08sRUFBTzZPLENBQVEsRUFBSW5kLEVBQWEsQ0FBQyxDQUFDLEVBQ25DLENBQ0osc0JBQUFnd0MsQ0FDRixFQUFJbHlCLEdBQW9CLENBQ3RCLE1BQUF4UCxFQUNBLGNBQWU2TyxDQUNqQixDQUFDLEVBQ0s4eUIsR0FBa0IzTixHQUFzQixDQUM1QyxLQUFNLElBQU16cEIsRUFBTSxLQUNsQixZQUFhLElBQU1BLEVBQU0sWUFDekIsYUFBZTBwQixHQUFXMXBCLEVBQU0sZUFBZTBwQixDQUFNLENBQ3ZELENBQUMsRUFDSyxDQUNKLFFBQVMyTixFQUNYLEVBQUlqb0IsR0FBWSxDQUNkLEtBQU0sSUFBTXlqQixFQUFZLFdBQVcsR0FBS3VFLEdBQWdCLE9BQU8sRUFDL0QsUUFBUyxJQUFNUCxFQUFXLEdBQUssSUFDakMsQ0FBQyxFQUNLUyxHQUFZcnBCLEdBQWdCLENBQ2hDLGNBQWUsT0FDZixXQUFZeFksQ0FDZCxDQUFDLEVBQ0ttMEIsR0FBUTJOLEdBQW1CLENBQy9CUCxFQUFpQk8sQ0FBYyxFQUMvQkgsR0FBZ0IsS0FBSyxDQUN2QixFQUNNdk4sR0FBUSxDQUFDMk4sRUFBYyxLQUFVLENBQ3JDSixHQUFnQixNQUFNLEVBQ2xCSSxHQUFlckIsR0FDakJBLEVBQWtCLE1BQU0sRUFBSSxDQUVoQyxFQUNNc0IsR0FBVUYsR0FBbUIsQ0FDakNQLEVBQWlCTyxDQUFjLEVBQy9CSCxHQUFnQixPQUFPLENBQ3pCLEVBQ01NLEdBQWdCLElBQU0sQ0FDMUIsSUFBTTVQLEVBQVUrTyxFQUFXLEVBQ3ZCL08sSUFDRnZ0QixHQUFzQnV0QixDQUFPLEVBQzdCd1AsR0FBVSxpQkFBaUIsRUFBRSxXQUFXLEVBQUksRUFDNUNBLEdBQVUsaUJBQWlCLEVBQUUsY0FBYyxNQUFNLEVBRXJELEVBQ01LLEdBQWUsSUFBTSxDQUNyQnhELEdBQWlDLEtBQ25DLFdBQVcsSUFBTXVELEdBQWMsQ0FBQyxFQUVoQ0EsR0FBYyxDQUNsQixFQUNNRSxHQUFzQnIrQixHQUFZLENBQ3RDMjlCLEVBQWdCMXdDLElBQVMsQ0FBQyxHQUFHQSxHQUFNK1MsQ0FBTyxDQUFDLEVBQzNDLElBQU04dkIsR0FBbUI4TSxHQUFtQixtQkFBbUI1OEIsQ0FBTyxFQUN0RSxNQUFPLElBQU0sQ0FDWDI5QixFQUFnQjF3QyxJQUFTOFIsR0FBb0I5UixHQUFNK1MsQ0FBTyxDQUFDLEVBQzNEOHZCLEtBQW1CLENBQ3JCLENBQ0YsRUFDTXdPLEdBQTRCeG5DLEdBQ1JpbUMsSUFBZUQsR0FBb0IsTUFDakNOLEdBQXFCMWxDLEVBQUlnbUMsR0FBb0IsSUFBSSxFQUV2RXlCLEdBQWV6bkMsR0FBTyxDQUN0QnduQyxHQUF5QnhuQyxDQUFFLEdBQzdCQSxFQUFHLGVBQWUsQ0FFdEIsRUFDTTBuQyxFQUFlMW5DLEdBQU8sQ0FDdEJ3bkMsR0FBeUJ4bkMsQ0FBRSxHQUcvQnNuQyxHQUFhLENBQ2YsRUFDTUssR0FBa0IzbkMsR0FBTyxDQUN6QnduQyxHQUF5QnhuQyxDQUFFLEdBQzdCQSxFQUFHLGVBQWUsQ0FFdEIsRUFDQTg5QixHQUFrQixDQUNoQixXQUFZLElBQ0gsRUFBRWdJLEdBQXFCLE1BQVFpQixHQUFnQixPQUFPLEdBQUt2RSxFQUFZLFFBQVEsR0FFeEYsUUFBUyxJQUFNLENBQUNnRSxFQUFXLEVBQUcsR0FBR0ksRUFBWSxDQUFDLEVBQUUsT0FBTyxPQUFPLENBQ2hFLENBQUMsRUFDRGxyQyxFQUFhLElBQU0sQ0FDakIsSUFBTTZwQyxFQUFZaUIsRUFBVyxFQUM3QixHQUFJLENBQUNqQixHQUFhLENBQUNPLEVBQ2pCLE9BRUYsSUFBTTlNLEdBQW1COE0sRUFBa0IsbUJBQW1CUCxDQUFTLEVBQ3ZFdnZDLEVBQVUsSUFBTSxDQUNkZ2pDLEdBQWlCLENBQ25CLENBQUMsQ0FDSCxDQUFDLEVBQ0R0OUIsRUFBYSxJQUFNLENBQ2JvcUMsSUFBc0IsUUFFMUJ0QyxHQUF3QixhQUFhaEIsRUFBWSxNQUFNLEVBQUcsQ0FBQ2dFLEVBQVcsRUFBRyxHQUFHSSxFQUFZLENBQUMsQ0FBQyxDQUM1RixDQUFDLEVBQ0RsckMsRUFBYSxJQUFNLENBQ2JvcUMsSUFBc0IsUUFBVXRDLElBQTJCLFNBRTNEQSxFQUF1QixNQUFNLElBQU1oQixFQUFZLE1BQU0sR0FDdkQ4RCxFQUFXLEdBQUcsTUFBTSxFQUNoQjlDLEVBQXVCLGNBQWMsR0FDdkNqSyxHQUFLLEVBQUksR0FFWEMsR0FBTSxFQUNWLENBQUMsRUFDRDk5QixFQUFhLElBQU0sQ0FDYm9xQyxJQUFzQixRQUFVdEMsSUFBMkIsUUFFM0R1RCxHQUFnQixPQUFPLEdBQ3pCdkQsRUFBdUIsU0FBU2hCLEVBQVksTUFBTSxDQUFDLENBQ3ZELENBQUMsRUFDRHhzQyxFQUFVLElBQU0sQ0FDVjh2QyxJQUFzQixRQUUxQnRDLEdBQXdCLGVBQWVoQixFQUFZLE1BQU0sQ0FBQyxDQUM1RCxDQUFDLEVBS0QsSUFBTWx4QixHQUFVLENBQ2QsUUFMY3hWLEVBQVcsS0FBTyxDQUNoQyxnQkFBaUJpckMsR0FBZ0IsT0FBTyxFQUFJLEdBQUssT0FDakQsY0FBZ0JBLEdBQWdCLE9BQU8sRUFBUyxPQUFMLEVBQzdDLEVBQUUsRUFHQSxPQUFRQSxHQUFnQixPQUN4QixlQUFBQyxHQUNBLFlBQUFKLEVBQ0EsaUJBQUFsUSxFQUNBLHNCQUF1QixJQUFNcVAsRUFDN0IsVUFBV1csRUFDWCxVQUFXLElBQU1PLEdBQ2pCLGtCQUFtQixJQUFNbkIsRUFDekIsV0FBQVEsRUFDQSxXQUFBRSxFQUNBLFVBQUFOLEVBQ0EsVUFBQUUsRUFDQSxjQUFBRyxFQUNBLGNBQUFFLEVBQ0EsS0FBQWxOLEdBQ0EsTUFBQUMsR0FDQSxPQUFBNE4sR0FDQSxhQUFBRSxHQUNBLFlBQUFHLEdBQ0EsWUFBQUMsRUFDQSxlQUFBQyxHQUNBLGNBQWdCL1MsR0FBUXFSLEVBQWFyUixFQUNyQyx5QkFBMkIzckIsR0FBTzg4QixFQUF3Qjk4QixFQUMxRCxzQkFBd0IyK0IsR0FBVzVCLEVBQXFCNEIsRUFDeEQsbUJBQUFMLEdBQ0Esa0NBQW1DMUIsR0FBNEIsYUFDL0Qsa0JBQW1CeDJCLEdBQWlCODJCLENBQVksRUFDaEQsa0JBQW1COTJCLEdBQWlCZzNCLENBQVksQ0FDbEQsRUFDQSxPQUFPdHFDLEVBQWdCK3FDLEVBQXVCLENBQzVDLElBQUksVUFBVyxDQUNiLE9BQU8vcUMsRUFBZ0JpbUMsR0FBWSxTQUFVLENBQzNDLE1BQU8xd0IsR0FDUCxJQUFJLFVBQVcsQ0FDYixPQUFPdlYsRUFBZ0IyVixFQUFNLENBQzNCLEtBQU1veUIsSUFBa0MsT0FDeEMsSUFBSSxVQUFXLENBQ2IsT0FBT2wwQixFQUFPLFFBQ2hCLEVBQ0EsSUFBSSxVQUFXLENBQ2IsT0FBTzdULEVBQWdCMjdCLEdBQVFqcUIsRUFBVyxDQUN4QyxVQUFXNjRCLEVBQ1gsV0FBQUUsRUFDQSx5QkFBMEI3UCxDQUM1QixFQUFHL21CLENBQU0sQ0FBQyxDQUNaLENBQ0YsQ0FBQyxDQUNILENBQ0YsQ0FBQyxDQUNILENBQ0YsQ0FBQyxDQUNILENBQ0EsU0FBU2k0QixHQUFRbHhDLEVBQU8sQ0FDdEIsR0FBTSxDQUNKLFVBQUE0akIsQ0FDRixFQUFJaEQsR0FBVSxFQUNkLE9BQU94YixFQUFnQjZwQyxHQUFNbjRCLEVBQVcsQ0FDdEMsSUFBSSxXQUFZLENBQ2QsT0FBTzhNLEVBQVUsSUFBTSxNQUFRLGFBQWUsYUFDaEQsRUFDQSxLQUFNLEVBQ1IsRUFBRzVqQixDQUFLLENBQUMsQ0FDWCxDQUNBLElBQUlteEMsR0FBaUIsQ0FDbkIsTUFBTyxDQUFDbFQsRUFBS2phLElBQ1BpYSxJQUFRLE1BQ0gsQ0FBQ2phLElBQWdCLGFBQWUsWUFBYyxTQUFTLEVBRXpELENBQUNBLElBQWdCLGFBQWUsYUFBZSxXQUFXLENBRXJFLEVBQ0EsU0FBU290QixHQUFlcHhDLEVBQU8sQ0FDN0IsSUFBTTJhLEVBQVU0d0IsR0FBZSxFQUN6Qk0sRUFBY0YsR0FBbUIsRUFDakMsQ0FBQzN5QixFQUFPQyxDQUFNLEVBQUlDLEdBQVdsWixFQUFPLENBQUMsaUJBQWtCLFdBQVcsQ0FBQyxFQUNuRSxDQUNKLFVBQUE0akIsQ0FDRixFQUFJaEQsR0FBVSxFQXdCZCxPQUFPeGIsRUFBZ0I4bkMsR0FBaUJwMkIsRUFBVyxDQUNqRCxnQkF4QnVCek4sR0FBTyxDQUM5QkEsRUFBRyxlQUFlLENBQ3BCLEVBdUJFLGlCQXRCd0JBLEdBQU8sQ0FDL0JBLEVBQUcsZUFBZSxDQUNwQixFQXFCRSxlQXBCc0JBLEdBQU8sQ0FDN0IyUCxFQUFNLGlCQUFpQjNQLENBQUUsRUFDekIsSUFBTXVHLEVBQVN2RyxFQUFHLE9BQ2J5SSxHQUFTNkksRUFBUSxXQUFXLEVBQUcvSyxDQUFNLEdBQ3hDK0ssRUFBUSxNQUFNLENBRWxCLEVBZUUsVUFkaUJ0UixHQUFPLENBQ3hCNkosR0FBWTdKLEVBQUkyUCxFQUFNLFNBQVMsRUFDL0IsSUFBTXE0QixFQUFrQnYvQixHQUFTekksRUFBRyxjQUFlQSxFQUFHLE1BQU0sRUFDdERpb0MsRUFBYUgsR0FBZSxNQUFNdnRCLEVBQVUsRUFBR2lvQixFQUFZLFlBQVksQ0FBQyxFQUFFLFNBQVN4aUMsRUFBRyxHQUFHLEVBQ3pGa29DLEVBQVk1MkIsRUFBUSxrQkFBa0IsR0FBSyxLQUM3QzAyQixHQUFtQkMsR0FBY0MsSUFDbkM1MkIsRUFBUSxNQUFNLEVBQ2RwSCxHQUFzQm9ILEVBQVEsV0FBVyxDQUFDLEVBRTlDLENBTUEsRUFBRzFCLENBQU0sQ0FBQyxDQUNaLENBQ0EsSUFBSXU0QixHQUFpQixDQUFDLFFBQVMsR0FBRyxFQUM5QkMsR0FBZ0IsQ0FDbEIsS0FBTSxDQUFDeFQsRUFBS2phLElBQ05pYSxJQUFRLE1BQ0gsQ0FBQyxHQUFHdVQsR0FBZ0J4dEIsSUFBZ0IsYUFBZSxhQUFlLFdBQVcsRUFFL0UsQ0FBQyxHQUFHd3RCLEdBQWdCeHRCLElBQWdCLGFBQWUsWUFBYyxTQUFTLENBRXJGLEVBQ0EsU0FBUzB0QixHQUFlMXhDLEVBQU8sQ0FDN0IsSUFBSXFRLEVBQ0V3N0IsRUFBY0YsR0FBbUIsRUFDakNoeEIsRUFBVTR3QixHQUFlLEVBQ3pCL3hCLEVBQWM1QyxFQUFrQixDQUNwQyxHQUFJaTFCLEVBQVksV0FBVyxlQUFldHlCLEdBQWUsQ0FBQyxFQUFFLENBQzlELEVBQUd2WixDQUFLLEVBQ0YsQ0FBQ2daLEVBQU9DLENBQU0sRUFBSUMsR0FBV00sRUFBYSxDQUFDLE1BQU8sS0FBTSxZQUFhLFdBQVksZ0JBQWlCLGlCQUFrQixnQkFBaUIsY0FBZSxVQUFXLFlBQWEsY0FBZSxTQUFTLENBQUMsRUFDdk1tNEIsRUFBZ0IsS0FDZEMsRUFBbUIsSUFBTSxDQUN6QjV6QyxLQUdBMnpDLEdBQ0YsT0FBTyxhQUFhQSxDQUFhLEVBRW5DQSxFQUFnQixLQUNsQixFQUNNLENBQ0osVUFBQS90QixDQUNGLEVBQUloRCxHQUFVLEVBQ1JoZ0IsRUFBTSxJQUFNb1ksRUFBTSxHQUNsQjY0QixFQUF5QixJQUFNLENBQ25DLElBQU0xQyxFQUFvQngwQixFQUFRLGtCQUFrQixFQUNwRCxHQUFJdzBCLEdBQXFCLEtBQ3ZCLE1BQU0sSUFBSSxNQUFNLHlFQUF5RSxFQUUzRixPQUFPQSxFQUFrQixVQUFVLEVBQUUsaUJBQWlCLENBQ3hELEVBQ01qcEIsRUFBYSxJQUFNdkwsRUFBUSxVQUFVLEVBQUUsV0FBVyxFQUNsRHN4QixFQUFnQixJQUFNNEYsRUFBdUIsRUFBRSxXQUFXLElBQU1qeEMsRUFBSSxFQUNwRXNyQyxFQUFpQjltQixHQUFxQixDQUMxQyxJQUFBeGtCLEVBQ0EsaUJBQWtCaXhDLEVBQ2xCLHNCQUF1QixHQUN2QiwyQkFBNEIsR0FDNUIsU0FBVSxJQUFNNzRCLEVBQU0sUUFDeEIsRUFBRyxJQUFNM0ksQ0FBRyxFQUNOdVYsRUFBV3ZjLEdBQU8sQ0FDdEI2SixHQUFZN0osRUFBSTJQLEVBQU0sT0FBTyxFQUN6QixDQUFDMkIsRUFBUSxPQUFPLEdBQUssQ0FBQzNCLEVBQU0sVUFDOUIyQixFQUFRLEtBQUssRUFBSSxDQUVyQixFQUNNd3hCLEVBQWlCOWlDLEdBQU8sQ0FFNUIsR0FEQTZKLEdBQVk3SixFQUFJMlAsRUFBTSxhQUFhLEVBQy9CM1AsRUFBRyxjQUFnQixRQUNyQixPQUVGLElBQU04bEMsRUFBb0J4MEIsRUFBUSxrQkFBa0IsRUFFcEQsR0FEQXcwQixHQUFtQixZQUFZOWxDLENBQUUsRUFDN0IsQ0FBQUEsRUFBRyxpQkFHUCxJQUFJMlAsRUFBTSxTQUFVLENBQ2xCbTJCLEdBQW1CLFlBQVk5bEMsQ0FBRSxFQUNqQyxNQUNGLENBQ0ksQ0FBQ3NSLEVBQVEsT0FBTyxHQUFLLENBQUNnM0IsSUFDeEJoM0IsRUFBUSxrQkFBa0IsR0FBRyxzQkFBc0IsSUFBSSxFQUN2RGczQixFQUFnQixPQUFPLFdBQVcsSUFBTSxDQUN0Q2gzQixFQUFRLEtBQUssRUFBSyxFQUNsQmkzQixFQUFpQixDQUNuQixFQUFHLEdBQUcsR0FFUnpDLEdBQW1CLFlBQVk5bEMsQ0FBRSxFQUM1QkEsRUFBRyxtQkFDRnNSLEVBQVEsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsSUFDbkRBLEVBQVEsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBSyxFQUN2REEsRUFBUSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxNQUFNLEdBRTdEcEgsR0FBc0JsSyxFQUFHLGFBQWEsRUFDdEM4bEMsR0FBbUIsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBSSxFQUNqRUEsR0FBbUIsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGNBQWN2dUMsRUFBSSxDQUFDLEdBRXpFLEVBQ013ckMsRUFBa0IvaUMsR0FBTyxDQUU3QixHQURBNkosR0FBWTdKLEVBQUkyUCxFQUFNLGNBQWMsRUFDaEMzUCxFQUFHLGNBQWdCLFFBQ3JCLE9BRUZ1b0MsRUFBaUIsRUFDakIsSUFBTXpDLEVBQW9CeDBCLEVBQVEsa0JBQWtCLEVBQzlDaTBCLEVBQVlqMEIsRUFBUSxXQUFXLEVBQ3JDLEdBQUlpMEIsRUFBVyxDQUNiTyxHQUFtQixzQkFBc0IsQ0FDdkMsS0FBTVIsR0FBb0JoMEIsRUFBUSxpQkFBaUIsRUFBR3RSLEVBQUl1bEMsQ0FBUyxFQUVuRSxLQUFNajBCLEVBQVEsaUJBQWlCLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUMvQyxDQUFDLEVBQ0QsT0FBTyxhQUFhdzBCLEdBQW1CLHNCQUFzQixDQUFDLEVBQzlELElBQU1DLEVBQXdCLE9BQU8sV0FBVyxJQUFNLENBQ3BERCxHQUFtQixzQkFBc0IsSUFBSSxDQUMvQyxFQUFHLEdBQUcsRUFDTkEsR0FBbUIseUJBQXlCQyxDQUFxQixDQUNuRSxLQUFPLENBRUwsR0FEQUQsR0FBbUIsZUFBZTlsQyxDQUFFLEVBQ2hDQSxFQUFHLGlCQUNMLE9BRUY4bEMsR0FBbUIsc0JBQXNCLElBQUksQ0FDL0MsQ0FDQUEsR0FBbUIsWUFBWTlsQyxDQUFFLENBQ25DLEVBQ000YSxFQUFhNWEsR0FBTyxDQUN4QjZKLEdBQVk3SixFQUFJMlAsRUFBTSxTQUFTLEVBQzNCLENBQUEzUCxFQUFHLFNBR0gyUCxFQUFNLFVBR055NEIsR0FBYyxLQUFLN3RCLEVBQVUsRUFBR2lvQixFQUFZLFlBQVksQ0FBQyxFQUFFLFNBQVN4aUMsRUFBRyxHQUFHLElBQzVFQSxFQUFHLGdCQUFnQixFQUNuQkEsRUFBRyxlQUFlLEVBQ2xCd29DLEVBQXVCLEVBQUUsV0FBVyxFQUFLLEVBQ3pDQSxFQUF1QixFQUFFLGNBQWMsTUFBTSxFQUN4Q2wzQixFQUFRLE9BQU8sR0FDbEJBLEVBQVEsS0FBSyxPQUFPLEVBRXRCQSxFQUFRLGFBQWEsRUFDckJBLEVBQVEsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBSSxFQUN0REEsRUFBUSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBY3VMLEVBQVcsRUFBRSxZQUFZLENBQUMsR0FFbkYsRUFDQSxPQUFBbmhCLEVBQWEsSUFBTSxDQUNqQixHQUFJNFYsRUFBUSxtQ0FBcUMsS0FDL0MsTUFBTSxJQUFJLE1BQU0seUVBQXlFLEVBRTNGLElBQU02RCxFQUFhN0QsRUFBUSxrQ0FBa0MsQ0FDM0QsSUFBSyxJQUFNdEssRUFDWCxLQUFNLE9BQ04sSUFBS3pQLEVBQUksRUFDVCxVQUFXb1ksRUFBTSxXQUFhM0ksR0FBSyxhQUFlLEdBQ2xELFNBQVUySSxFQUFNLFVBQVksRUFDOUIsQ0FBQyxFQUNEM1osRUFBVW1mLENBQVUsQ0FDdEIsQ0FBQyxFQUNEelosRUFBYXFXLEdBQUcsSUFBTVQsRUFBUSxrQkFBa0IsR0FBRyxzQkFBc0IsRUFBSW0zQixHQUFzQixDQUNqR3p5QyxFQUFVLElBQU0sQ0FDZCxPQUFPLGFBQWF5eUMsQ0FBaUIsRUFDckNuM0IsRUFBUSxrQkFBa0IsR0FBRyxzQkFBc0IsSUFBSSxDQUN6RCxDQUFDLENBQ0gsQ0FBQyxDQUFDLEVBQ0Y1VixFQUFhLElBQU0xRixFQUFVc2IsRUFBUSxrQkFBa0IzQixFQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQ2pFM1osRUFBVSxJQUFNLENBQ2R1eUMsRUFBaUIsQ0FDbkIsQ0FBQyxFQUNNeHNDLEVBQWdCMlQsR0FBYWpDLEVBQVcsQ0FDN0MsR0FBSSxNQUNKLElBQUltRSxFQUFJLENBQ04sSUFBTUMsRUFBUTlPLEdBQVdWLEdBQU8sQ0FDOUJpUCxFQUFRLGNBQWNqUCxDQUFFLEVBQ3hCMkUsRUFBTTNFLENBQ1IsRUFBR3NOLEVBQU0sR0FBRyxFQUNaLE9BQU9rQyxHQUFVLFlBQWNBLEVBQU1ELENBQUUsQ0FDekMsRUFDQSxJQUFJLElBQUssQ0FDUCxPQUFPakMsRUFBTSxFQUNmLEVBQ0EsS0FBTSxXQUNOLElBQUksVUFBVyxDQUNiLE9BQU9rekIsRUFBZSxTQUFTLENBQ2pDLEVBQ0EsZ0JBQWlCLE9BQ2pCLEdBQUssaUJBQW1CLENBQ3RCLE9BQU92eEIsRUFBUSxPQUFPLENBQ3hCLEVBQ0EsR0FBSyxpQkFBbUIsQ0FDdEIsT0FBT3hWLEVBQVcsSUFBTSxDQUFDLENBQUN3VixFQUFRLE9BQU8sQ0FBQyxFQUFFLEVBQUlBLEVBQVEsVUFBVSxFQUFJLE1BQ3hFLEVBQ0EsR0FBSyxpQkFBbUIsQ0FDdEIsT0FBTzNCLEVBQU0sUUFDZixFQUNBLEdBQUssWUFBYyxDQUNqQixPQUFPa3pCLEVBQWUsUUFBUSxDQUNoQyxFQUNBLEdBQUssb0JBQXNCLENBQ3pCLE9BQU9ELEVBQWMsRUFBSSxHQUFLLE1BQ2hDLEVBQ0EsR0FBSyxpQkFBbUIsQ0FDdEIsT0FBT2p6QixFQUFNLFNBQVcsR0FBSyxNQUMvQixFQUNBLElBQUksZUFBZ0IsQ0FDbEIsT0FBTzVGLEdBQXFCLENBQUM0RixFQUFNLGNBQWVrekIsRUFBZSxhQUFhLENBQUMsQ0FDakYsRUFDQSxJQUFJLGFBQWMsQ0FDaEIsT0FBTzk0QixHQUFxQixDQUFDNEYsRUFBTSxZQUFha3pCLEVBQWUsV0FBVyxDQUFDLENBQzdFLEVBQ0EsSUFBSSxTQUFVLENBQ1osT0FBTzk0QixHQUFxQixDQUFDd1MsRUFBU3NtQixFQUFlLE9BQU8sQ0FBQyxDQUMvRCxFQUNBLElBQUksV0FBWSxDQUNkLE9BQU85NEIsR0FBcUIsQ0FBQzZRLEVBQVdpb0IsRUFBZSxTQUFTLENBQUMsQ0FDbkUsRUFDQSxJQUFJLGFBQWMsQ0FDaEIsT0FBTzk0QixHQUFxQixDQUFDNEYsRUFBTSxZQUFha3pCLEVBQWUsV0FBVyxDQUFDLENBQzdFLEVBQ0EsSUFBSSxTQUFVLENBQ1osT0FBTzk0QixHQUFxQixDQUFDNEYsRUFBTSxRQUFTa3pCLEVBQWUsT0FBTyxDQUFDLENBQ3JFLEVBQ0EsY0FBQUMsRUFDQSxlQUFBQyxDQUNGLEVBQUcsSUFBTXp4QixFQUFRLFFBQVEsRUFBRzFCLENBQU0sQ0FBQyxDQUNyQyxDQUNBLFNBQVM4NEIsR0FBUy94QyxFQUFPLENBQ3ZCLElBQU02c0MsRUFBeUJKLEdBQTBCLEVBQ25EbnpCLEVBQVksUUFBUUMsR0FBZSxDQUFDLEdBQ3BDQyxFQUFjNUMsRUFBa0IsQ0FDcEMsR0FBSTBDLEVBQ0osTUFBTyxFQUNULEVBQUd0WixDQUFLLEVBQ0YsQ0FBQ2daLEVBQU9DLENBQU0sRUFBSUMsR0FBV00sRUFBYSxDQUFDLEtBQU0sUUFBUyxnQkFBaUIsYUFBYyxPQUFRLGNBQWUsZUFBZ0IsUUFBUyxhQUFhLENBQUMsRUFDdko0MkIsRUFBa0IzTixHQUFzQixDQUM1QyxLQUFNLElBQU16cEIsRUFBTSxLQUNsQixZQUFhLElBQU1BLEVBQU0sWUFDekIsYUFBZTBwQixHQUFXMXBCLEVBQU0sZUFBZTBwQixDQUFNLENBQ3ZELENBQUMsRUFDSy9uQixFQUFVLENBQ2QsUUFBUyxJQUFNM0IsRUFBTSxPQUFTLEdBQzlCLGNBQWUsSUFBTUEsRUFBTSxlQUFpQjJCLEVBQVEsUUFBUSxFQUM1RCxXQUFZLElBQU0zQixFQUFNLFlBQWMsR0FDdEMsV0FBWXJILEdBQWlCLElBQU1xSCxFQUFNLEVBQUUsRUFDM0MsTUFBTyxJQUFNQSxFQUFNLE1BQ25CLFlBQWEsSUFBTUEsRUFBTSxhQUFlNnpCLEdBQXdCLFlBQVksR0FBSyxZQUNuRixFQUNBLE9BQU96bkMsRUFBZ0JzbUMsR0FBZ0IsU0FBVSxDQUMvQyxNQUFPL3dCLEVBQ1AsSUFBSSxVQUFXLENBQ2IsT0FBT3ZWLEVBQWdCNnBDLEdBQU1uNEIsRUFBVyxDQUN0QyxJQUFJLE1BQU8sQ0FDVCxPQUFPczVCLEVBQWdCLE9BQU8sQ0FDaEMsRUFDQSxJQUFJLGNBQWUsQ0FDakIsT0FBT0EsRUFBZ0IsU0FDekIsQ0FDRixFQUFHbjNCLENBQU0sQ0FBQyxDQUNaLENBQ0YsQ0FBQyxDQUNILENBR0EsSUFBSSs0QixHQUFvQixDQUFDLEVBQ3pCMzFCLEdBQVMyMUIsR0FBbUIsQ0FDMUIsS0FBTSxJQUFNQyxHQUNaLFVBQVcsSUFBTUMsRUFDbkIsQ0FBQyxFQUNELFNBQVNELEdBQWNqeUMsRUFBTyxDQUM1QixJQUFJcVEsRUFDRW1KLEVBQWM1QyxFQUFrQixDQUNwQyxZQUFhLFlBQ2YsRUFBRzVXLENBQUssRUFDRixDQUFDZ1osRUFBT0MsQ0FBTSxFQUFJQyxHQUFXTSxFQUFhLENBQUMsTUFBTyxhQUFhLENBQUMsRUFDaEVaLEVBQVVELEdBQWMsSUFBTXRJLEVBQUssSUFBTSxJQUFJLEVBQ25ELE9BQU9qTCxFQUFnQjJULEdBQWFqQyxFQUFXLENBQzdDLEdBQUksS0FDSixJQUFJbUUsRUFBSSxDQUNOLElBQU1DLEVBQVE5TyxHQUFXVixHQUFPMkUsRUFBTTNFLEVBQUlzTixFQUFNLEdBQUcsRUFDbkQsT0FBT2tDLEdBQVUsWUFBY0EsRUFBTUQsQ0FBRSxDQUN6QyxFQUNBLElBQUksTUFBTyxDQUNULE9BQU9yQyxFQUFRLElBQU0sS0FBTyxZQUFjLE1BQzVDLEVBQ0EsR0FBSyxvQkFBc0IsQ0FDekIsT0FBT0ksRUFBTSxjQUFnQixXQUFhLFdBQWEsTUFDekQsRUFDQSxHQUFLLG9CQUFzQixDQUN6QixPQUFPQSxFQUFNLFdBQ2YsQ0FDRixFQUFHQyxDQUFNLENBQUMsQ0FDWixDQUNBLElBQUlpNUIsR0FBWUQsR0FHWkUsR0FBd0IsQ0FBQyxFQUM3QjkxQixHQUFTODFCLEdBQXVCLENBQzlCLE1BQU8sSUFBTW5VLEdBQ2IsYUFBYyxJQUFNc08sR0FDcEIsUUFBUyxJQUFNOEYsR0FDZixhQUFjLElBQU1DLEdBQ3BCLE1BQU8sSUFBTXZFLEdBQ2IsV0FBWSxJQUFNQyxHQUNsQixLQUFNLElBQU1DLEdBQ1osS0FBTSxJQUFNQyxHQUNaLGdCQUFpQixJQUFNQyxHQUN2QixjQUFlLElBQU1DLEdBQ3JCLFVBQVcsSUFBTUMsR0FDakIsT0FBUSxJQUFNQyxHQUNkLFdBQVksSUFBTUksR0FDbEIsVUFBVyxJQUFNQyxHQUNqQixLQUFNLElBQU00RCxHQUNaLFVBQVcsSUFBTUwsR0FDakIsSUFBSyxJQUFNZixHQUNYLFdBQVksSUFBTUUsR0FDbEIsV0FBWSxJQUFNTSxHQUNsQixRQUFTLElBQU05RSxFQUNqQixDQUFDLEVBQ0QsU0FBU3dGLEdBQW9CcHlDLEVBQU8sQ0FDbEMsSUFBTTZyQyxFQUFjRixHQUFtQixFQUNqQ2h4QixFQUFVNHdCLEdBQWUsRUFDekIsQ0FBQ3Z5QixFQUFPQyxDQUFNLEVBQUlDLEdBQVdsWixFQUFPLENBQUMsbUJBQW9CLG1CQUFtQixDQUFDLEVBQy9FdXlDLEVBQXVCLEdBZTNCLE9BQU9udEMsRUFBZ0J1b0MsR0FBYTcyQixFQUFXLENBQzdDLGlCQWZ3QnpOLEdBQU8sQ0FDL0IyUCxFQUFNLG1CQUFtQjNQLENBQUUsRUFDdEJrcEMsR0FDSGgvQixHQUFzQm9ILEVBQVEsV0FBVyxDQUFDLEVBRTVDNDNCLEVBQXVCLEdBQ3ZCbHBDLEVBQUcsZUFBZSxDQUNwQixFQVNFLGtCQVJ5QkEsR0FBTyxDQUNoQzJQLEVBQU0sb0JBQW9CM1AsQ0FBRSxHQUN4QixDQUFDd2lDLEVBQVksUUFBUSxHQUFLeGlDLEVBQUcsT0FBTyxpQkFDdENrcEMsRUFBdUIsR0FFM0IsQ0FJQSxFQUFHdDVCLENBQU0sQ0FBQyxDQUNaLENBQ0EsU0FBU3E1QixHQUFpQnR5QyxFQUFPLENBQy9CLElBQU1zWixFQUFZLGdCQUFnQkMsR0FBZSxDQUFDLEdBQzVDQyxFQUFjNUMsRUFBa0IsQ0FDcEMsR0FBSTBDLENBQ04sRUFBR3RaLENBQUssRUFDUixPQUFPb0YsRUFBZ0Iyc0MsR0FBVXY0QixDQUFXLENBQzlDLENBQ0EsSUFBSTY0QixHQUFlLE9BQU8sT0FBT0MsR0FBa0IsQ0FDakQsTUFBT3RVLEdBQ1AsYUFBY3NPLEdBQ2QsUUFBUzhGLEdBQ1QsTUFBT3RFLEdBQ1AsV0FBWUMsR0FDWixLQUFNQyxHQUNOLEtBQU1DLEdBQ04sZ0JBQWlCQyxHQUNqQixjQUFlQyxHQUNmLFVBQVdDLEdBQ1gsT0FBUUMsR0FDUixXQUFZSSxHQUNaLFVBQVdDLEdBQ1gsVUFBV3VELEdBQ1gsSUFBS2YsR0FDTCxXQUFZRSxHQUNaLFdBQVlNLEdBQ1osUUFBUzlFLEVBQ1gsQ0FBQyxFQUdHNEYsRUFBUyxDQUNYLE9BQVEsQ0FDTixRQUFTLFVBQ1QsUUFBUyxlQUNULFlBQWEsY0FDYixNQUFPLFVBQ1AsTUFBTyxVQUNQLFFBQVMsQ0FDUCxHQUFJLFVBQ0osSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFNBQ1AsRUFDQSxTQUFVLENBQ1IsR0FBSSxVQUNKLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxTQUNQLEVBQ0EsS0FBTSxDQUNKLEdBQUksVUFDSixJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssU0FDUCxFQUNBLEtBQU0sQ0FDSixHQUFJLFVBQ0osR0FBSSxVQUNKLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxTQUNQLEVBQ0EsTUFBTyxDQUNMLEdBQUksVUFDSixHQUFJLFVBQ0osSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFNBQ1AsRUFDQSxJQUFLLENBQ0gsR0FBSSxVQUNKLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssU0FDUCxFQUNBLE9BQVEsQ0FDTixHQUFJLFVBQ0osR0FBSSxVQUNKLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0ws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R0FBTyxZQUFhRSxHQUFTRCxFQUFPLFlBQWFFLEdBQVNELEdBQU8sWUFBYUUsR0FBU0QsR0FBTyxZQUFhRSxFQUFTTixHQUFPLFlBQWFPLEdBQVNELEVBQU8sV0FBWUUsR0FBU0YsRUFBTyxZQUFhRyxHQUFTRCxHQUFPLFdBQVlFLEdBQVNGLEdBQU8sWUFBYUcsR0FBU0QsR0FBTyxXQUFZRSxHQUFTRCxHQUFPLFlBQWFFLEdBQVNELEdBQU8sWUFBYUUsR0FBU0QsR0FBTyxXQUFZRSxHQUFTRCxHQUFPLFlBQWFFLEVBQVNELEdBQU8sWUFBYUUsR0FBU0QsRUFBTyxZQUFhRSxHQUFTRCxHQUFPLFlBQWFFLEdBQVNELEdBQU8sWUFBYUUsR0FBU0QsR0FBTyxZQUFhRSxHQUFTRCxHQUFPLFlBQWFFLEdBQVNELEdBQU8sWUFBYUUsR0FBU0QsR0FBTyxZQUFhRSxHQUFTRCxHQUFPLFlBQWFFLEdBQVNELEdBQU8sWUFBYUUsR0FBU2hCLEdBQU8sWUFBYWlCLEdBQVNELEdBQU8sV0FBWUUsR0FBU0YsR0FBTyxZQUFhRyxHQUFTRCxHQUFPLFdBQVlFLEdBQVNGLEdBQU8sWUFBYUcsR0FBU0QsR0FBTyxXQUFZRSxHQUFTRCxHQUFPLFlBQWFFLEdBQVNILEdBQU8sWUFBYUksR0FBVUQsR0FBTyxXQUFZRSxHQUFVRixHQUFPLFlBQWFHLEdBQVVELEdBQVEsV0FBWUUsR0FBVUYsR0FBUSxZQUFhRyxHQUFVRCxHQUFRLFdBQVlFLEdBQVVELEdBQVEsWUFBYUUsR0FBVUQsR0FBUSxZQUFhRSxHQUFVRCxHQUFRLFlBQWFFLEdBQVVELEdBQVEsWUFBYUUsR0FBVUQsR0FBUSxZQUFhRSxHQUFVRCxHQUFRLFlBQWFFLEdBQVVELEdBQVEsWUFBYUUsR0FBVUQsR0FBUSxZQUFhRSxHQUFVRCxHQUFRLFlBQWFFLEdBQVVELEdBQVEsWUFBYUUsR0FBVUQsR0FBUSxZQUFhRSxHQUFVRCxHQUFRLFlBQWFFLEdBQVVELEdBQVEsWUFBYUUsR0FBVUQsR0FBUSxZQUFhRSxHQUFVRCxHQUFRLFlBQWFFLEdBQVVELEdBQVEsWUFBYUUsR0FB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QUFPLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFBQSwwQkFDMUNoNEMsRUFBR2c0QyxFQUFPLEtBQUssR0FBRyxFQUFHQSxFQUFPLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFBQTtBQUFBLGFBRXZEcEUsRUFBTSxDQUFDLENBQUM7QUFBQSxxQkFDQXFFLEVBQUssT0FBTyxNQUFNO0FBQUEscUJBQ2xCQSxFQUFLLFdBQVcsRUFBRTtBQUFBO0FBQUE7QUFBQTtBQUFBLHlCQUlkQyxFQUFPLE9BQU8sRUFBRTtBQUFBLDZCQUNaRixFQUFPLEtBQUssR0FBRyxDQUFDO0FBQUE7QUFBQTtBQUFBLDRCQUdqQmg0QyxFQUFHZzRDLEVBQU8sS0FBSyxHQUFHLEVBQUdBLEVBQU8sU0FBUyxHQUFHLENBQUMsQ0FBQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBUXBFLENBQ0YsRUFDSWlELEdBQWdCdnVCLEdBQVFnOEIsR0FBZSxRQUFTaDhCLENBQUcsRUFDbkRzdUIsR0FBZXR1QixHQUFRZzhCLEdBQWUsT0FBUWg4QixDQUFHLEVBQ3JENXdCLEdBQWUsQ0FBQyxRQUFTLFlBQWEsT0FBTyxDQUFDIiwKICAibmFtZXMiOiBbImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgInNoYXJlZENvbmZpZyIsICJnZXRDb250ZXh0SWQiLCAiY291bnQiLCAibnVtIiwgImxlbiIsICJzZXRIeWRyYXRlQ29udGV4dCIsICJjb250ZXh0IiwgIm5leHRIeWRyYXRlQ29udGV4dCIsICJJU19ERVYiLCAiZXF1YWxGbiIsICJhIiwgImIiLCAiJFBST1hZIiwgIlNVUFBPUlRTX1BST1hZIiwgIiRUUkFDSyIsICJzaWduYWxPcHRpb25zIiwgIkVSUk9SIiwgInJ1bkVmZmVjdHMiLCAicnVuUXVldWUiLCAiU1RBTEUiLCAiUEVORElORyIsICJVTk9XTkVEIiwgIk93bmVyIiwgIlRyYW5zaXRpb24iLCAiU2NoZWR1bGVyIiwgIkV4dGVybmFsU291cmNlQ29uZmlnIiwgIkxpc3RlbmVyIiwgIlVwZGF0ZXMiLCAiRWZmZWN0cyIsICJFeGVjQ291bnQiLCAiY3JlYXRlUm9vdCIsICJmbiIsICJkZXRhY2hlZE93bmVyIiwgImxpc3RlbmVyIiwgIm93bmVyIiwgInVub3duZWQiLCAiY3VycmVudCIsICJyb290IiwgIlVOT1dORUQiLCAidXBkYXRlRm4iLCAidW50cmFjayIsICJjbGVhbk5vZGUiLCAicnVuVXBkYXRlcyIsICJjcmVhdGVTaWduYWwiLCAidmFsdWUiLCAib3B0aW9ucyIsICJzaWduYWxPcHRpb25zIiwgInMiLCAic2V0dGVyIiwgInZhbHVlMiIsICJ3cml0ZVNpZ25hbCIsICJyZWFkU2lnbmFsIiwgImNyZWF0ZUNvbXB1dGVkIiwgImMiLCAiY3JlYXRlQ29tcHV0YXRpb24iLCAiU1RBTEUiLCAidXBkYXRlQ29tcHV0YXRpb24iLCAiY3JlYXRlUmVuZGVyRWZmZWN0IiwgImNyZWF0ZUVmZmVjdCIsICJydW5FZmZlY3RzIiwgInJ1blVzZXJFZmZlY3RzIiwgIlN1c3BlbnNlQ29udGV4dCIsICJ1c2VDb250ZXh0IiwgImNyZWF0ZU1lbW8iLCAiYmF0Y2giLCAiZm4iLCAicnVuVXBkYXRlcyIsICJ1bnRyYWNrIiwgIkV4dGVybmFsU291cmNlQ29uZmlnIiwgIkxpc3RlbmVyIiwgImxpc3RlbmVyIiwgIm9uIiwgImRlcHMiLCAib3B0aW9ucyIsICJpc0FycmF5MyIsICJwcmV2SW5wdXQiLCAiZGVmZXIiLCAicHJldlZhbHVlIiwgImlucHV0IiwgImkiLCAicmVzdWx0IiwgIm9uTW91bnQiLCAiY3JlYXRlRWZmZWN0IiwgIm9uQ2xlYW51cCIsICJPd25lciIsICJnZXRPd25lciIsICJydW5XaXRoT3duZXIiLCAibyIsICJwcmV2IiwgInByZXZMaXN0ZW5lciIsICJlcnIiLCAiaGFuZGxlRXJyb3IiLCAic3RhcnRUcmFuc2l0aW9uIiwgIlRyYW5zaXRpb24iLCAibCIsICJ0IiwgIlNjaGVkdWxlciIsICJTdXNwZW5zZUNvbnRleHQiLCAicmVzIiwgInRyYW5zUGVuZGluZyIsICJzZXRUcmFuc1BlbmRpbmciLCAiY3JlYXRlU2lnbmFsIiwgInVzZVRyYW5zaXRpb24iLCAiY3JlYXRlQ29udGV4dCIsICJkZWZhdWx0VmFsdWUiLCAiaWQiLCAiY3JlYXRlUHJvdmlkZXIiLCAidXNlQ29udGV4dCIsICJjb250ZXh0IiwgInZhbHVlIiwgImNoaWxkcmVuIiwgImNoaWxkcmVuMiIsICJjcmVhdGVNZW1vIiwgIm1lbW8iLCAicmVzb2x2ZUNoaWxkcmVuIiwgImMiLCAicmVhZFNpZ25hbCIsICJydW5uaW5nVHJhbnNpdGlvbiIsICJTVEFMRSIsICJ1cGRhdGVDb21wdXRhdGlvbiIsICJ1cGRhdGVzIiwgIlVwZGF0ZXMiLCAibG9va1Vwc3RyZWFtIiwgInNTbG90IiwgIndyaXRlU2lnbmFsIiwgIm5vZGUiLCAiaXNDb21wIiwgImN1cnJlbnQiLCAiVHJhbnNpdGlvblJ1bm5pbmciLCAiRWZmZWN0cyIsICJtYXJrRG93bnN0cmVhbSIsICJjbGVhbk5vZGUiLCAidGltZSIsICJFeGVjQ291bnQiLCAicnVuQ29tcHV0YXRpb24iLCAibmV4dFZhbHVlIiwgIm93bmVyIiwgImNyZWF0ZUNvbXB1dGF0aW9uIiwgImluaXQiLCAicHVyZSIsICJzdGF0ZSIsICJVTk9XTkVEIiwgInRyYWNrIiwgInRyaWdnZXIiLCAib3JkaW5hcnkiLCAidHJpZ2dlckluVHJhbnNpdGlvbiIsICJpblRyYW5zaXRpb24iLCAieCIsICJydW5Ub3AiLCAiUEVORElORyIsICJhbmNlc3RvcnMiLCAidG9wIiwgIndhaXQiLCAiY29tcGxldGVVcGRhdGVzIiwgInNjaGVkdWxlUXVldWUiLCAicnVuUXVldWUiLCAic291cmNlcyIsICJkaXNwb3NlZCIsICJlMiIsICJkIiwgInYiLCAibGVuIiwgImUiLCAicnVuRWZmZWN0cyIsICJxdWV1ZSIsICJpdGVtIiwgInRhc2tzIiwgInJ1blVzZXJFZmZlY3RzIiwgInVzZXJMZW5ndGgiLCAic2hhcmVkQ29uZmlnIiwgInNldEh5ZHJhdGVDb250ZXh0IiwgImlnbm9yZSIsICJzb3VyY2UiLCAiaW5kZXgiLCAib2JzIiwgIm4iLCAicyIsICJyZXNldCIsICJjYXN0RXJyb3IiLCAicnVuRXJyb3JzIiwgImZucyIsICJmIiwgIkVSUk9SIiwgImVycm9yIiwgInJlc3VsdHMiLCAicHJvcHMiLCAiY3JlYXRlUmVuZGVyRWZmZWN0IiwgIkZBTExCQUNLIiwgImRpc3Bvc2UiLCAibWFwQXJyYXkiLCAibGlzdCIsICJtYXBGbiIsICJpdGVtcyIsICJtYXBwZWQiLCAiZGlzcG9zZXJzIiwgImluZGV4ZXMiLCAibmV3SXRlbXMiLCAibmV3TGVuIiwgImoiLCAiJFRSQUNLIiwgIm5ld0luZGljZXMiLCAibmV3SW5kaWNlc05leHQiLCAidGVtcCIsICJ0ZW1wZGlzcG9zZXJzIiwgInRlbXBJbmRleGVzIiwgInN0YXJ0IiwgImVuZCIsICJuZXdFbmQiLCAiY3JlYXRlUm9vdCIsICJkaXNwb3NlciIsICJtYXBwZXIiLCAic2V0IiwgImluZGV4QXJyYXkiLCAic2lnbmFscyIsICJoeWRyYXRpb25FbmFibGVkIiwgImNyZWF0ZUNvbXBvbmVudCIsICJDb21wIiwgIm5leHRIeWRyYXRlQ29udGV4dCIsICJ0cnVlRm4iLCAicHJvcFRyYXBzIiwgIl8iLCAicHJvcGVydHkiLCAicmVjZWl2ZXIiLCAiJFBST1hZIiwgInJlc29sdmVTb3VyY2UiLCAicmVzb2x2ZVNvdXJjZXMiLCAibGVuZ3RoIiwgIm1lcmdlUHJvcHMiLCAicHJveHkiLCAiU1VQUE9SVFNfUFJPWFkiLCAia2V5cyIsICJzb3VyY2VzTWFwIiwgImRlZmluZWQiLCAic291cmNlS2V5cyIsICJpMiIsICJrZXkiLCAiZGVzYyIsICJzb3VyY2VzMiIsICJ0YXJnZXQiLCAiZGVmaW5lZEtleXMiLCAic3BsaXRQcm9wcyIsICJibG9ja2VkIiwgImsiLCAib3RoZXJPYmplY3QiLCAib2JqZWN0cyIsICJwcm9wTmFtZSIsICJpc0RlZmF1bHREZXNjIiwgIm9iamVjdEluZGV4IiwgImNvdW50ZXIiLCAiY3JlYXRlVW5pcXVlSWQiLCAic2hhcmVkQ29uZmlnIiwgIm5hcnJvd2VkRXJyb3IiLCAibmFtZSIsICJGb3IiLCAicHJvcHMiLCAiZmFsbGJhY2siLCAiY3JlYXRlTWVtbyIsICJtYXBBcnJheSIsICJJbmRleCIsICJpbmRleEFycmF5IiwgIlNob3ciLCAia2V5ZWQiLCAiY29uZGl0aW9uVmFsdWUiLCAiY29uZGl0aW9uIiwgImEiLCAiYiIsICJjIiwgImNoaWxkIiwgInVudHJhY2siLCAiU3dpdGNoIiwgImNocyIsICJjaGlsZHJlbiIsICJzd2l0Y2hGdW5jIiwgImNoIiwgIm1wcyIsICJmdW5jIiwgImkiLCAiaW5kZXgiLCAibXAiLCAicHJldkZ1bmMiLCAic2VsIiwgIk1hdGNoIiwgIkRFViIsICJib29sZWFucyIsICJQcm9wZXJ0aWVzIiwgIkNoaWxkUHJvcGVydGllcyIsICJBbGlhc2VzIiwgIlByb3BBbGlhc2VzIiwgImdldFByb3BBbGlhcyIsICJwcm9wIiwgInRhZ05hbWUiLCAiRGVsZWdhdGVkRXZlbnRzIiwgIlNWR0VsZW1lbnRzIiwgIlNWR05hbWVzcGFjZSIsICJyZWNvbmNpbGVBcnJheXMiLCAicGFyZW50Tm9kZSIsICJiTGVuZ3RoIiwgImFFbmQiLCAiYkVuZCIsICJhU3RhcnQiLCAiYlN0YXJ0IiwgImFmdGVyIiwgIm1hcCIsICJub2RlIiwgInNlcXVlbmNlIiwgInQiLCAiJCRFVkVOVFMiLCAidGVtcGxhdGUiLCAiaHRtbCIsICJpc0ltcG9ydE5vZGUiLCAiaXNTVkciLCAiaXNNYXRoTUwiLCAibm9kZSIsICJjcmVhdGUiLCAidCIsICJmbiIsICJ1bnRyYWNrIiwgImRlbGVnYXRlRXZlbnRzIiwgImV2ZW50TmFtZXMiLCAiZG9jdW1lbnQyIiwgImUiLCAiJCRFVkVOVFMiLCAiaSIsICJsIiwgIm5hbWUiLCAiZXZlbnRIYW5kbGVyIiwgImNsZWFyRGVsZWdhdGVkRXZlbnRzIiwgInNldEF0dHJpYnV0ZSIsICJ2YWx1ZSIsICJpc0h5ZHJhdGluZyIsICJzZXRBdHRyaWJ1dGVOUyIsICJuYW1lc3BhY2UiLCAic2V0Qm9vbEF0dHJpYnV0ZSIsICJjbGFzc05hbWUiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJoYW5kbGVyIiwgImRlbGVnYXRlIiwgImhhbmRsZXJGbiIsICJjbGFzc0xpc3QiLCAicHJldiIsICJjbGFzc0tleXMiLCAicHJldktleXMiLCAibGVuIiwgImtleSIsICJ0b2dnbGVDbGFzc0tleSIsICJjbGFzc1ZhbHVlIiwgInN0eWxlIiwgIm5vZGVTdHlsZSIsICJ2IiwgInMiLCAic3ByZWFkIiwgInByb3BzIiwgInNraXBDaGlsZHJlbiIsICJwcmV2UHJvcHMiLCAiY3JlYXRlUmVuZGVyRWZmZWN0IiwgImluc2VydEV4cHJlc3Npb24iLCAidXNlIiwgImFzc2lnbiIsICJlbGVtZW50IiwgImFyZyIsICJpbnNlcnQiLCAicGFyZW50IiwgImFjY2Vzc29yIiwgIm1hcmtlciIsICJpbml0aWFsIiwgImN1cnJlbnQiLCAic2tpcFJlZiIsICJwcm9wIiwgImFzc2lnblByb3AiLCAiZ2V0TmV4dEVsZW1lbnQiLCAidGVtcGxhdGUyIiwgInNoYXJlZENvbmZpZyIsICJnZXRIeWRyYXRpb25LZXkiLCAidG9Qcm9wZXJ0eU5hbWUiLCAiXyIsICJ3IiwgImNsYXNzTmFtZXMiLCAibmFtZUxlbiIsICJpc0NFIiwgImlzUHJvcCIsICJpc0NoaWxkUHJvcCIsICJwcm9wQWxpYXMiLCAiZm9yY2VQcm9wIiwgIkRlbGVnYXRlZEV2ZW50cyIsICJDaGlsZFByb3BlcnRpZXMiLCAiZ2V0UHJvcEFsaWFzIiwgIlByb3BlcnRpZXMiLCAibnMiLCAiU1ZHTmFtZXNwYWNlIiwgIkFsaWFzZXMiLCAiZWwiLCAiZXYiLCAib3JpVGFyZ2V0IiwgIm9yaUN1cnJlbnRUYXJnZXQiLCAicmV0YXJnZXQiLCAiaGFuZGxlTm9kZSIsICJkYXRhIiwgIndhbGtVcFRyZWUiLCAicGF0aCIsICJ1bndyYXBBcnJheSIsICJoeWRyYXRpbmciLCAiY2xlYW5lZCIsICJtdWx0aSIsICJjbGVhbkNoaWxkcmVuIiwgImFycmF5IiwgImN1cnJlbnRBcnJheSIsICJub3JtYWxpemVJbmNvbWluZ0FycmF5IiwgIm5vZGVzIiwgImFwcGVuZE5vZGVzIiwgInJlY29uY2lsZUFycmF5cyIsICJub3JtYWxpemVkIiwgInVud3JhcCIsICJkeW5hbWljIiwgIml0ZW0iLCAicmVwbGFjZW1lbnQiLCAiaW5zZXJ0ZWQiLCAiaXNQYXJlbnQiLCAiaXNTZXJ2ZXIiLCAiU1ZHX05BTUVTUEFDRSIsICJjcmVhdGVFbGVtZW50IiwgInRhZ05hbWUiLCAiUG9ydGFsIiwgInVzZVNoYWRvdyIsICJtb3VudCIsICJvd25lciIsICJnZXRPd25lciIsICJjb250ZW50IiwgImNyZWF0ZUVmZmVjdCIsICJydW5XaXRoT3duZXIiLCAiY3JlYXRlTWVtbyIsICJjbGVhbiIsICJzZXRDbGVhbiIsICJjcmVhdGVTaWduYWwiLCAiY2xlYW51cCIsICJjcmVhdGVSb290IiwgImRpc3Bvc2UyIiwgIm9uQ2xlYW51cCIsICJjb250YWluZXIiLCAicmVuZGVyUm9vdCIsICJjcmVhdGVEeW5hbWljIiwgImNvbXBvbmVudCIsICJjYWNoZWQiLCAiY29tcG9uZW50MiIsICJpc1N2ZyIsICJTVkdFbGVtZW50cyIsICJEeW5hbWljIiwgIm90aGVycyIsICJzcGxpdFByb3BzIiwgIkRvdWJsZUluZGV4ZWRLViIsICJSZWdpc3RyeSIsICJnZW5lcmF0ZUlkZW50aWZpZXIiLCAiaWRlbnRpZmllciIsICJDbGFzc1JlZ2lzdHJ5IiwgImMiLCAib3B0aW9ucyIsICJ2YWx1ZXNPZk9iaiIsICJyZWNvcmQiLCAidmFsdWVzIiwgImZpbmQiLCAicHJlZGljYXRlIiwgInZhbHVlc05vdE5ldmVyIiwgImZvckVhY2giLCAicnVuIiwgImluY2x1ZGVzIiwgImFyciIsICJmaW5kQXJyIiwgIkN1c3RvbVRyYW5zZm9ybWVyUmVnaXN0cnkiLCAidHJhbnNmb3JtZXIiLCAiZ2V0VHlwZSIsICJwYXlsb2FkIiwgImlzVW5kZWZpbmVkIiwgImlzTnVsbCIsICJpc1BsYWluT2JqZWN0IiwgImlzRW1wdHlPYmplY3QiLCAiaXNBcnJheSIsICJpc1N0cmluZyIsICJpc051bWJlciIsICJpc0Jvb2xlYW4iLCAiaXNSZWdFeHAiLCAiaXNNYXAiLCAiaXNTZXQiLCAiaXNTeW1ib2wiLCAiaXNEYXRlIiwgImlzRXJyb3IiLCAiaXNOYU5WYWx1ZSIsICJpc1ByaW1pdGl2ZSIsICJpc0JpZ2ludCIsICJpc0luZmluaXRlIiwgImlzVHlwZWRBcnJheSIsICJpc1VSTCIsICJlc2NhcGVLZXkiLCAic3RyaW5naWZ5UGF0aCIsICJwYXJzZVBhdGgiLCAic3RyaW5nIiwgInJlc3VsdCIsICJzZWdtZW50IiwgImNoYXIiLCAibGFzdFNlZ21lbnQiLCAic2ltcGxlVHJhbnNmb3JtYXRpb24iLCAiaXNBcHBsaWNhYmxlIiwgImFubm90YXRpb24iLCAidHJhbnNmb3JtIiwgInVudHJhbnNmb3JtIiwgInNpbXBsZVJ1bGVzIiwgInN1cGVySnNvbiIsICJiYXNlRXJyb3IiLCAicmVnZXgiLCAiYm9keSIsICJmbGFncyIsICJjb21wb3NpdGVUcmFuc2Zvcm1hdGlvbiIsICJzeW1ib2xSdWxlIiwgImEiLCAiY29uc3RydWN0b3JUb05hbWUiLCAib2JqIiwgImN0b3IiLCAidHlwZWRBcnJheVJ1bGUiLCAiaXNJbnN0YW5jZU9mUmVnaXN0ZXJlZENsYXNzIiwgInBvdGVudGlhbENsYXNzIiwgImNsYXNzUnVsZSIsICJjbGF6eiIsICJhbGxvd2VkUHJvcHMiLCAiY3VzdG9tUnVsZSIsICJjb21wb3NpdGVSdWxlcyIsICJ0cmFuc2Zvcm1WYWx1ZSIsICJhcHBsaWNhYmxlQ29tcG9zaXRlUnVsZSIsICJydWxlIiwgImFwcGxpY2FibGVTaW1wbGVSdWxlIiwgInNpbXBsZVJ1bGVzQnlBbm5vdGF0aW9uIiwgInVudHJhbnNmb3JtVmFsdWUiLCAianNvbiIsICJ0eXBlIiwgInRyYW5zZm9ybWF0aW9uIiwgImdldE50aEtleSIsICJuIiwgImtleXMiLCAidmFsaWRhdGVQYXRoIiwgImdldERlZXAiLCAib2JqZWN0IiwgInJvdyIsICJrZXlPZlJvdyIsICJzZXREZWVwIiwgIm1hcHBlciIsICJpbmRleCIsICJsYXN0S2V5IiwgIm9sZFZhbHVlIiwgIm5ld1ZhbHVlIiwgImtleVRvUm93IiwgIm5ld0tleSIsICJ0cmF2ZXJzZSIsICJ0cmVlIiwgIndhbGtlcjIiLCAib3JpZ2luIiwgInN1YnRyZWUiLCAibm9kZVZhbHVlIiwgImNoaWxkcmVuMiIsICJjaGlsZCIsICJhcHBseVZhbHVlQW5ub3RhdGlvbnMiLCAicGxhaW4iLCAiYW5ub3RhdGlvbnMiLCAiYXBwbHlSZWZlcmVudGlhbEVxdWFsaXR5QW5ub3RhdGlvbnMiLCAiYXBwbHkiLCAiaWRlbnRpY2FsUGF0aHMiLCAiaWRlbnRpY2FsT2JqZWN0UGF0aCIsICJyb290IiwgIm90aGVyIiwgImlkZW50aWNhbFBhdGgiLCAiaXNEZWVwIiwgImFkZElkZW50aXR5IiwgImlkZW50aXRpZXMiLCAiZXhpc3RpbmdTZXQiLCAiZ2VuZXJhdGVSZWZlcmVudGlhbEVxdWFsaXR5QW5ub3RhdGlvbnMiLCAiaWRlbnRpdGl0ZXMiLCAiZGVkdXBlIiwgInJvb3RFcXVhbGl0eVBhdGhzIiwgInBhdGhzIiwgImIiLCAicmVwcmVzZW50YXRpdmVQYXRoIiwgIndhbGtlciIsICJvYmplY3RzSW5UaGlzUGF0aCIsICJzZWVuT2JqZWN0cyIsICJwcmltaXRpdmUiLCAic2VlbiIsICJ0cmFuc2Zvcm1lZDIiLCAicmVzdWx0MiIsICJ0cmFuc2Zvcm1hdGlvblJlc3VsdCIsICJ0cmFuc2Zvcm1lZCIsICJ0cmFuc2Zvcm1lZFZhbHVlIiwgImlubmVyQW5ub3RhdGlvbnMiLCAicmVjdXJzaXZlUmVzdWx0IiwgImdldFR5cGUyIiwgImlzQXJyYXkyIiwgImlzUGxhaW5PYmplY3QyIiwgInByb3RvdHlwZSIsICJhc3NpZ25Qcm9wMiIsICJjYXJyeSIsICJuZXdWYWwiLCAib3JpZ2luYWxPYmplY3QiLCAiaW5jbHVkZU5vbmVudW1lcmFibGUiLCAicHJvcFR5cGUiLCAiY29weSIsICJ0YXJnZXQiLCAic3ltYm9scyIsICJ2YWwiLCAiU3VwZXJKU09OIiwgIm91dHB1dCIsICJyZXMiLCAiZXF1YWxpdHlBbm5vdGF0aW9ucyIsICJtZXRhIiwgInNlcmlhbGl6ZSIsICJzdHJpbmdpZnkiLCAiZ2V0UXVlcnlTdGF0dXNMYWJlbCIsICJxdWVyeSIsICJnZXRTaWRlZFByb3AiLCAic2lkZSIsICJnZXRRdWVyeVN0YXR1c0NvbG9yIiwgInF1ZXJ5U3RhdGUiLCAib2JzZXJ2ZXJDb3VudCIsICJpc1N0YWxlIiwgImdldE11dGF0aW9uU3RhdHVzQ29sb3IiLCAic3RhdHVzIiwgImlzUGF1c2VkIiwgImdldFF1ZXJ5U3RhdHVzQ29sb3JCeUxhYmVsIiwgImxhYmVsIiwgImRpc3BsYXlWYWx1ZSIsICJiZWF1dGlmeSIsICJnZXRTdGF0dXNSYW5rIiwgInEiLCAicXVlcnlIYXNoU29ydCIsICJkYXRlU29ydCIsICJzdGF0dXNBbmREYXRlU29ydCIsICJzb3J0Rm5zIiwgImdldE11dGF0aW9uU3RhdHVzUmFuayIsICJtIiwgIm11dGF0aW9uRGF0ZVNvcnQiLCAibXV0YXRpb25TdGF0dXNTb3J0IiwgIm11dGF0aW9uU29ydEZucyIsICJjb252ZXJ0UmVtVG9QaXhlbHMiLCAicmVtIiwgImdldFByZWZlcnJlZENvbG9yU2NoZW1lIiwgImNvbG9yU2NoZW1lIiwgInNldENvbG9yU2NoZW1lIiwgIm9uTW91bnQiLCAibGlzdGVuZXIiLCAidXBkYXRlTmVzdGVkRGF0YUJ5UGF0aCIsICJvbGREYXRhIiwgInVwZGF0ZVBhdGgiLCAibmV3RGF0YSIsICJoZWFkIiwgInRhaWwiLCAic2V0QXNBcnJheSIsICJkZWxldGVOZXN0ZWREYXRhQnlQYXRoIiwgImRlbGV0ZVBhdGgiLCAiaWR4IiwgImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImlzQ2xpZW50IiwgImlzU2VydmVyIiwgImlzRGV2IiwgIkRFViIsICJub29wIiwgImlzTm9uTnVsbGFibGUiLCAiaTIiLCAiZmlsdGVyTm9uTnVsbGFibGUiLCAiYXJyIiwgImNoYWluIiwgImNhbGxiYWNrcyIsICJhcmdzIiwgImNhbGxiYWNrIiwgImFjY2VzcyIsICJ2IiwgImFzQXJyYXkiLCAidmFsdWUiLCAiYWNjZXNzV2l0aCIsICJ2YWx1ZU9yRm4iLCAidHJ5T25DbGVhbnVwIiwgImZuIiwgImdldE93bmVyIiwgIm9uQ2xlYW51cCIsICJoYW5kbGVEaWZmQXJyYXkiLCAiY3VycmVudCIsICJwcmV2IiwgImhhbmRsZUFkZGVkIiwgImhhbmRsZVJlbW92ZWQiLCAiY3Vyckxlbmd0aCIsICJwcmV2TGVuZ3RoIiwgInByZXZFbCIsICJjdXJyRWwiLCAiY3JlYXRlU3RvcmFnZSIsICJwcm9wcyIsICJlcnJvciIsICJzZXRFcnJvciIsICJjcmVhdGVTaWduYWwiLCAiaGFuZGxlRXJyb3IiLCAiZXJyIiwgImZhbGxiYWNrIiwgImFwaXMiLCAicHJlZml4IiwgInNpZ25hbHMiLCAic3RvcmUiLCAiXyIsICJrZXkiLCAibm9kZSIsICJyZXN1bHQiLCAiYXBpIiwgInNldHRlciIsICJvcHRpb25zIiwgImZpbHRlcmVkVmFsdWUiLCAiYXBpS2V5IiwgInJlbW92ZSIsICJjbGVhciIsICJ0b0pTT04iLCAiYWRkVmFsdWUiLCAidmFsdWVzIiwgImluZGV4IiwgIm9uTW91bnQiLCAibGlzdGVuZXIiLCAiZXYiLCAiY2hhbmdlZCIsICJjcmVhdGVMb2NhbFN0b3JhZ2UiLCAiYWRkQ2xlYXJNZXRob2QiLCAic3RvcmFnZSIsICJzZXJpYWxpemVDb29raWVPcHRpb25zIiwgIm1lbW8iLCAiY29va2llU3RvcmFnZSIsICJvbGRWYWx1ZSIsICJzdG9yYWdlRXZlbnQiLCAiY291bnQiLCAiZm91bmQiLCAibGVuZ3RoIiwgImZpcnN0QnJlYWtwb2ludCIsICJzZWNvbmRCcmVha3BvaW50IiwgInRoaXJkQnJlYWtwb2ludCIsICJCVVRUT05fUE9TSVRJT04iLCAiUE9TSVRJT04iLCAiVEhFTUVfUFJFRkVSRU5DRSIsICJJTklUSUFMX0lTX09QRU4iLCAiREVGQVVMVF9IRUlHSFQiLCAiUElQX0RFRkFVTFRfSEVJR0hUIiwgIkRFRkFVTFRfV0lEVEgiLCAiREVGQVVMVF9TT1JUX0ZOX05BTUUiLCAic29ydEZucyIsICJERUZBVUxUX1NPUlRfT1JERVIiLCAiREVGQVVMVF9NVVRBVElPTl9TT1JUX0ZOX05BTUUiLCAibXV0YXRpb25Tb3J0Rm5zIiwgIlF1ZXJ5RGV2dG9vbHNDb250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAidXNlUXVlcnlEZXZ0b29sc0NvbnRleHQiLCAidXNlQ29udGV4dCIsICJQaVBDb250ZXh0IiwgIlBpUFByb3ZpZGVyIiwgInBpcFdpbmRvdyIsICJzZXRQaXBXaW5kb3ciLCAiY2xvc2VQaXBXaW5kb3ciLCAidyIsICJyZXF1ZXN0UGlwV2luZG93IiwgIndpZHRoIiwgImhlaWdodCIsICJwaXAiLCAiY2xlYXJEZWxlZ2F0ZWRFdmVudHMiLCAic3R5bGVTaGVldCIsICJjc3NSdWxlcyIsICJydWxlIiwgInN0eWxlIiwgInN0eWxlX25vZGUiLCAic3R5bGVfaWQiLCAibGluayIsICJkZWxlZ2F0ZUV2ZW50cyIsICJjcmVhdGVFZmZlY3QiLCAiZ29vYmVyU3R5bGVzIiwgIm9ic2VydmVyIiwgInBpcF9zdHlsZSIsICJjcmVhdGVNZW1vIiwgImNyZWF0ZUNvbXBvbmVudCIsICJ1c2VQaVBXaW5kb3ciLCAiY3R4IiwgIlRoZW1lQ29udGV4dCIsICJ1c2VUaGVtZSIsICJjaGFyYWN0ZXJNYXAiLCAiY2hhcnMiLCAiYWxsQWNjZW50cyIsICJyZW1vdmVBY2NlbnRzIiwgInN0ciIsICJtYXRjaCIsICJyYW5raW5ncyIsICJyYW5rSXRlbSIsICJpdGVtIiwgIl9vcHRpb25zJHRocmVzaG9sZCIsICJyYW5rIiwgImdldE1hdGNoUmFua2luZyIsICJ2YWx1ZXNUb1JhbmsiLCAiZ2V0QWxsVmFsdWVzVG9SYW5rIiwgInJhbmtpbmdJbmZvIiwgInJhbmtWYWx1ZSIsICJuZXdSYW5rIiwgIm1pblJhbmtpbmciLCAibWF4UmFua2luZyIsICJ0aHJlc2hvbGQiLCAidGVzdFN0cmluZyIsICJzdHJpbmdUb1JhbmsiLCAicHJlcGFyZVZhbHVlRm9yQ29tcGFyaXNvbiIsICJnZXRBY3JvbnltIiwgImdldENsb3NlbmVzc1JhbmtpbmciLCAic3RyaW5nIiwgImFjcm9ueW0iLCAid29yZEluU3RyaW5nIiwgInNwbGl0QnlIeXBoZW5Xb3JkIiwgIm1hdGNoaW5nSW5PcmRlckNoYXJDb3VudCIsICJjaGFyTnVtYmVyIiwgImZpbmRNYXRjaGluZ0NoYXJhY3RlciIsICJtYXRjaENoYXIiLCAiaiIsICJKIiwgImdldFJhbmtpbmciLCAic3ByZWFkMyIsICJzcHJlYWRQZXJjZW50YWdlIiwgImluT3JkZXJQZXJjZW50YWdlIiwgImZpcnN0SW5kZXgiLCAiSSIsICJzcHJlYWQyIiwgIl9yZWYiLCAia2VlcERpYWNyaXRpY3MiLCAiZ2V0SXRlbVZhbHVlcyIsICJhY2Nlc3NvciIsICJhY2Nlc3NvckZuIiwgImFjY2Vzc29ycyIsICJhbGxWYWx1ZXMiLCAiYXR0cmlidXRlcyIsICJnZXRBY2Nlc3NvckF0dHJpYnV0ZXMiLCAiaXRlbVZhbHVlcyIsICJkZWZhdWx0S2V5QXR0cmlidXRlcyIsICJlIiwgInQiLCAidDIiLCAibCIsICJhIiwgIm4iLCAibyIsICJlMiIsICJyMiIsICJsMiIsICJhMiIsICJuMiIsICJjMiIsICJlMyIsICJ0MyIsICJjIiwgInMiLCAiaSIsICJwMiIsICJ1MiIsICJkIiwgInIzIiwgInQ0IiwgIm8yIiwgImYiLCAicCIsICJlNCIsICJ1IiwgInIiLCAiY2xzeCIsICJjcmVhdGVMaXN0VHJhbnNpdGlvbiIsICJzb3VyY2UiLCAiaW5pdFNvdXJjZSIsICJ1bnRyYWNrIiwgImNvcHkiLCAib25DaGFuZ2UiLCAicHJldlNldCIsICJleGl0aW5nIiwgInRvUmVtb3ZlIiwgInNldFRvUmVtb3ZlIiwgImlzVHJhbnNpdGlvblBlbmRpbmciLCAidXNlVHJhbnNpdGlvbiIsICJmaW5pc2hSZW1vdmVkIiwgImVscyIsICJlbCIsICJlbHNUb1JlbW92ZSIsICJzb3VyY2VMaXN0IiwgIiRUUkFDSyIsICJuZXh0IiwgIm5leHRTZXQiLCAiYWRkZWQiLCAicmVtb3ZlZCIsICJ1bmNoYW5nZWQiLCAibm90aGluZ0NoYW5nZWQiLCAibWVyZ2VSZWZzIiwgInJlZnMiLCAiZGVmYXVsdEVsZW1lbnRQcmVkaWNhdGUiLCAiZ2V0UmVzb2x2ZWRFbGVtZW50cyIsICJwcmVkaWNhdGUiLCAicmVzdWx0cyIsICJyZXNvbHZlRWxlbWVudHMiLCAic2VydmVyUHJlZGljYXRlIiwgImNoaWxkcmVuMiIsICJjcmVhdGVDbGFzc25hbWVzIiwgIm5hbWUiLCAibmV4dEZyYW1lIiwgImVudGVyVHJhbnNpdGlvbiIsICJjbGFzc2VzIiwgImV2ZW50cyIsICJkb25lIiwgIm9uQmVmb3JlRW50ZXIiLCAib25FbnRlciIsICJvbkFmdGVyRW50ZXIiLCAiZW5kVHJhbnNpdGlvbiIsICJleGl0VHJhbnNpdGlvbiIsICJvbkJlZm9yZUV4aXQiLCAib25FeGl0IiwgIm9uQWZ0ZXJFeGl0IiwgIlRyYW5zaXRpb25Hcm91cCIsICJjbGFzc25hbWVzIiwgImxpc3QiLCAidG9Nb3ZlIiwgIm1vdmVkIiwgInJlY3QiLCAibmV3UmVjdCIsICJkWCIsICJkWSIsICJlbmRUcmFuc2l0aW9uMiIsICJGQUxMQkFDSyIsICJkaXNwb3NlIiwgImtleUFycmF5IiwgIml0ZW1zIiwgImtleUZuIiwgIm1hcEZuIiwgIml0ZW1zUmVmIiwgInMyIiwgImxlbiIsICJjcmVhdGVSb290IiwgImRpc3Bvc2UyIiwgImZiIiwgImFkZE5ld0l0ZW0iLCAicHJldktleXMiLCAibG9va3VwIiwgImdldEl0ZW0iLCAic2V0SXRlbSIsICJzYXZlIiwgInNldEluZGV4IiwgIktleSIsICJieSIsICJtYWtlRXZlbnRMaXN0ZW5lciIsICJ0YXJnZXQiLCAidHlwZSIsICJoYW5kbGVyIiwgImNyZWF0ZUV2ZW50TGlzdGVuZXIiLCAidGFyZ2V0cyIsICJhdHRhY2hMaXN0ZW5lcnMiLCAidHlwZTIiLCAiY3JlYXRlUmVuZGVyRWZmZWN0IiwgIm1ha2VSZXNpemVPYnNlcnZlciIsICJyZWYiLCAiY3JlYXRlUmVzaXplT2JzZXJ2ZXIiLCAib25SZXNpemUiLCAicHJldmlvdXNNYXAiLCAib2JzZXJ2ZSIsICJ1bm9ic2VydmUiLCAiZW50cmllczIiLCAiZW50cnkiLCAiY29udGVudFJlY3QiLCAicHJldmlvdXMiLCAiZXh0cmFjdENTU3JlZ2V4IiwgInN0cmluZ1N0eWxlVG9PYmplY3QiLCAib2JqZWN0IiwgImNvbWJpbmVTdHlsZSIsICJiMiIsICJhZGRJdGVtVG9BcnJheSIsICJhcnJheSIsICJyZW1vdmVJdGVtRnJvbUFycmF5IiwgInVwZGF0ZWRBcnJheSIsICJpc051bWJlciIsICJpc1N0cmluZyIsICJpc0Z1bmN0aW9uIiwgImNyZWF0ZUdlbmVyYXRlSWQiLCAiYmFzZUlkIiwgInN1ZmZpeCIsICJjb250YWlucyIsICJwYXJlbnQiLCAiY2hpbGQiLCAiZ2V0QWN0aXZlRWxlbWVudCIsICJhY3RpdmVEZXNjZW5kYW50IiwgImFjdGl2ZUVsZW1lbnQiLCAiZ2V0RG9jdW1lbnQiLCAiaXNGcmFtZSIsICJpZCIsICJlbGVtZW50IiwgImdldFdpbmRvdyIsICJFdmVudEtleSIsICJFdmVudEtleTIiLCAidGVzdFBsYXRmb3JtIiwgInJlIiwgImlzTWFjIiwgImlzSVBob25lIiwgImlzSVBhZCIsICJpc0lPUyIsICJpc0FwcGxlRGV2aWNlIiwgImNhbGxIYW5kbGVyIiwgImV2ZW50IiwgImNvbXBvc2VFdmVudEhhbmRsZXJzIiwgImhhbmRsZXJzIiwgImlzQ3RybEtleSIsICJmb2N1c1dpdGhvdXRTY3JvbGxpbmciLCAic3VwcG9ydHNQcmV2ZW50U2Nyb2xsIiwgInNjcm9sbGFibGVFbGVtZW50cyIsICJnZXRTY3JvbGxhYmxlRWxlbWVudHMiLCAicmVzdG9yZVNjcm9sbFBvc2l0aW9uIiwgInN1cHBvcnRzUHJldmVudFNjcm9sbENhY2hlZCIsICJyb290U2Nyb2xsaW5nRWxlbWVudCIsICJzY3JvbGxUb3AiLCAic2Nyb2xsTGVmdCIsICJmb2N1c2FibGVFbGVtZW50cyIsICJ0YWJiYWJsZUVsZW1lbnRzIiwgIkZPQ1VTQUJMRV9FTEVNRU5UX1NFTEVDVE9SIiwgIlRBQkJBQkxFX0VMRU1FTlRfU0VMRUNUT1IiLCAiZ2V0QWxsVGFiYmFibGVJbiIsICJjb250YWluZXIiLCAiaW5jbHVkZUNvbnRhaW5lciIsICJ0YWJiYWJsZUVsZW1lbnRzMiIsICJpc1RhYmJhYmxlIiwgImZyYW1lQm9keSIsICJhbGxGcmFtZVRhYmJhYmxlIiwgImlzRm9jdXNhYmxlIiwgImhhc05lZ2F0aXZlVGFiSW5kZXgiLCAiaXNFbGVtZW50VmlzaWJsZSIsICJjaGlsZEVsZW1lbnQiLCAiaXNTdHlsZVZpc2libGUiLCAiaXNBdHRyaWJ1dGVWaXNpYmxlIiwgImRpc3BsYXkiLCAidmlzaWJpbGl0eSIsICJpc1Zpc2libGUiLCAiZ2V0Q29tcHV0ZWRTdHlsZTMiLCAiY29tcHV0ZWREaXNwbGF5IiwgImNvbXB1dGVkVmlzaWJpbGl0eSIsICJnZXRGb2N1c2FibGVUcmVlV2Fsa2VyIiwgInJvb3QiLCAib3B0cyIsICJzY29wZSIsICJzZWxlY3RvciIsICJ3YWxrZXIiLCAiZ2V0U2Nyb2xsUGFyZW50IiwgImlzU2Nyb2xsYWJsZSIsICJub29wMyIsICJpc1BvaW50SW5Qb2x5Z29uIiwgInBvaW50IiwgInBvbHlnb24iLCAieCIsICJ5IiwgImluc2lkZSIsICJ4aSIsICJ5aSIsICJ4aiIsICJ5aiIsICJ2eSIsICJ3aGVyZSIsICJtZXJnZURlZmF1bHRQcm9wcyIsICJkZWZhdWx0UHJvcHMiLCAibWVyZ2VQcm9wcyIsICJ0cmFuc2l0aW9uc0J5RWxlbWVudCIsICJ0cmFuc2l0aW9uQ2FsbGJhY2tzIiwgInNldHVwR2xvYmFsRXZlbnRzIiwgIm9uVHJhbnNpdGlvblN0YXJ0IiwgInRyYW5zaXRpb25zIiwgIm9uVHJhbnNpdGlvbkVuZCIsICJwcm9wZXJ0aWVzIiwgImNiIiwgInNjcm9sbEludG9WaWV3IiwgInNjcm9sbFZpZXciLCAib2Zmc2V0WCIsICJyZWxhdGl2ZU9mZnNldCIsICJvZmZzZXRZIiwgIm1heFgiLCAibWF4WSIsICJhbmNlc3RvciIsICJheGlzIiwgInByb3AiLCAic3VtIiwgInNjcm9sbEludG9WaWV3cG9ydCIsICJ0YXJnZXRFbGVtZW50IiwgInNjcm9sbFBhcmVudCIsICJvcmlnaW5hbExlZnQiLCAib3JpZ2luYWxUb3AiLCAibmV3TGVmdCIsICJuZXdUb3AiLCAidmlzdWFsbHlIaWRkZW5TdHlsZXMiLCAiY3JlYXRlUmVnaXN0ZXJJZCIsICJjcmVhdGVUYWdOYW1lIiwgInRhZ05hbWUiLCAic2V0VGFnTmFtZSIsICJzdHJpbmdPclVuZGVmaW5lZCIsICJQb2x5bW9ycGhpYyIsICJsb2NhbCIsICJvdGhlcnMiLCAic3BsaXRQcm9wcyIsICJEeW5hbWljIiwgIkZPUk1fQ09OVFJPTF9QUk9QX05BTUVTIiwgImNyZWF0ZUZvcm1Db250cm9sIiwgImRlZmF1bHRJZCIsICJjcmVhdGVVbmlxdWVJZCIsICJtZXJnZWRQcm9wcyIsICJsYWJlbElkIiwgInNldExhYmVsSWQiLCAiZmllbGRJZCIsICJzZXRGaWVsZElkIiwgImRlc2NyaXB0aW9uSWQiLCAic2V0RGVzY3JpcHRpb25JZCIsICJlcnJvck1lc3NhZ2VJZCIsICJzZXRFcnJvck1lc3NhZ2VJZCIsICJnZXRBcmlhTGFiZWxsZWRCeSIsICJmaWVsZElkMiIsICJmaWVsZEFyaWFMYWJlbCIsICJmaWVsZEFyaWFMYWJlbGxlZEJ5IiwgImhhc0FyaWFMYWJlbGxlZEJ5IiwgImdldEFyaWFEZXNjcmliZWRCeSIsICJmaWVsZEFyaWFEZXNjcmliZWRCeSIsICJkYXRhc2V0IiwgIkZvcm1Db250cm9sQ29udGV4dCIsICJ1c2VGb3JtQ29udHJvbENvbnRleHQiLCAiY29udGV4dCIsICJGb3JtQ29udHJvbERlc2NyaXB0aW9uIiwgIkZvcm1Db250cm9sRXJyb3JNZXNzYWdlIiwgImlzSW52YWxpZCIsICJTaG93IiwgIkZvcm1Db250cm9sTGFiZWwiLCAiciQiLCAiX3JlZiQiLCAiY3JlYXRlRm9ybVJlc2V0TGlzdGVuZXIiLCAib24iLCAiZWxlbWVudDIiLCAiZm9ybSIsICJnZXRDbG9zZXN0Rm9ybSIsICJpc0Zvcm1FbGVtZW50IiwgImNyZWF0ZUNvbnRyb2xsYWJsZVNpZ25hbCIsICJfdmFsdWUiLCAiX3NldFZhbHVlIiwgImlzQ29udHJvbGxlZCIsICJuZXh0VmFsdWUiLCAiY3JlYXRlQ29udHJvbGxhYmxlQm9vbGVhblNpZ25hbCIsICJzZXRWYWx1ZSIsICJjcmVhdGVDb250cm9sbGFibGVBcnJheVNpZ25hbCIsICJjcmVhdGVUb2dnbGVTdGF0ZSIsICJpc1NlbGVjdGVkIiwgIl9zZXRJc1NlbGVjdGVkIiwgIl9fZGVmUHJvcCIsICJfX2V4cG9ydCIsICJhbGwiLCAiRG9tQ29sbGVjdGlvbkNvbnRleHQiLCAidXNlT3B0aW9uYWxEb21Db2xsZWN0aW9uQ29udGV4dCIsICJ1c2VEb21Db2xsZWN0aW9uQ29udGV4dCIsICJpc0VsZW1lbnRQcmVjZWRpbmciLCAiZmluZERPTUluZGV4IiwgIml0ZW1FbCIsICJjdXJyZW50SXRlbUVsIiwgInNvcnRCYXNlZE9uRE9NUG9zaXRpb24iLCAicGFpcnMiLCAiaXNPcmRlckRpZmZlcmVudCIsICJpbmRleEEiLCAiaW5kZXhCIiwgImVsZW1lbnRBIiwgImVsZW1lbnRCIiwgInNldEl0ZW1zQmFzZWRPbkRPTVBvc2l0aW9uIiwgInNldEl0ZW1zIiwgInNvcnRlZEl0ZW1zIiwgImdldENvbW1vblBhcmVudCIsICJmaXJzdEl0ZW0iLCAibGFzdEl0ZW1FbCIsICJwYXJlbnRFbCIsICJjcmVhdGVUaW1lb3V0T2JzZXJ2ZXIiLCAidGltZW91dCIsICJjcmVhdGVTb3J0QmFzZWRPbkRPTVBvc2l0aW9uIiwgInByZXZpb3VzSXRlbXMiLCAiaGFzUHJldmlvdXNJdGVtcyIsICJjcmVhdGVEb21Db2xsZWN0aW9uIiwgInJlZ2lzdGVySXRlbSIsICJwcmV2SXRlbXMiLCAibmV4dEl0ZW1zIiwgInByZXZJdGVtIiwgInByb3BzMiIsICJjcmVhdGVEb21Db2xsZWN0aW9uSXRlbSIsICJ1bnJlZ2lzdGVyIiwgImJ1aWxkTm9kZXMiLCAicGFyYW1zIiwgImxldmVsIiwgIm5vZGVzIiwgImdldEtleSIsICJkYXRhIiwgIl9nZXRLZXkiLCAiZGF0YUtleSIsICJnZXRUZXh0VmFsdWUiLCAiX2dldFRleHRWYWx1ZSIsICJkYXRhVGV4dFZhbHVlIiwgImdldERpc2FibGVkIiwgIl9nZXREaXNhYmxlZCIsICJnZXRTZWN0aW9uQ2hpbGRyZW4iLCAic2VjdGlvbkNoaWxkcmVuIiwgImNoaWxkTm9kZXMiLCAiY3JlYXRlQ29sbGVjdGlvbiIsICJkZXBzIiwgIlJUTF9TQ1JJUFRTIiwgIlJUTF9MQU5HUyIsICJpc1JUTCIsICJsb2NhbGUiLCAic2NyaXB0IiwgImxhbmciLCAiZ2V0UmVhZGluZ0RpcmVjdGlvbiIsICJnZXREZWZhdWx0TG9jYWxlIiwgImN1cnJlbnRMb2NhbGUiLCAibGlzdGVuZXJzIiwgInVwZGF0ZUxvY2FsZSIsICJjcmVhdGVEZWZhdWx0TG9jYWxlIiwgImRlZmF1bHRTU1JMb2NhbGUiLCAiZGVmYXVsdENsaWVudExvY2FsZSIsICJzZXREZWZhdWx0Q2xpZW50TG9jYWxlIiwgImRlZmF1bHRMb2NhbGUiLCAiSTE4bkNvbnRleHQiLCAidXNlTG9jYWxlIiwgImNhY2hlIiwgImNyZWF0ZUNvbGxhdG9yIiwgImNhY2hlS2V5IiwgImNvbGxhdG9yIiwgIlNlbGVjdGlvbiIsICJfU2VsZWN0aW9uIiwgImtleXMyIiwgImFuY2hvcktleSIsICJjdXJyZW50S2V5IiwgImNyZWF0ZUNvbnRyb2xsYWJsZVNlbGVjdGlvblNpZ25hbCIsICJpc05vbkNvbnRpZ3VvdXNTZWxlY3Rpb25Nb2RpZmllciIsICJpc0N0cmxLZXlQcmVzc2VkIiwgImNvbnZlcnRTZWxlY3Rpb24iLCAic2VsZWN0aW9uIiwgImlzU2FtZVNlbGVjdGlvbiIsICJzZXRBIiwgInNldEIiLCAiY3JlYXRlTXVsdGlwbGVTZWxlY3Rpb25TdGF0ZSIsICJpc0ZvY3VzZWQiLCAic2V0Rm9jdXNlZCIsICJmb2N1c2VkS2V5IiwgInNldEZvY3VzZWRLZXkiLCAic2VsZWN0ZWRLZXlzUHJvcCIsICJkZWZhdWx0U2VsZWN0ZWRLZXlzIiwgImRlZmF1bHRTZWxlY3Rpb24iLCAic2VsZWN0ZWRLZXlzIiwgIl9zZXRTZWxlY3RlZEtleXMiLCAic2VsZWN0aW9uQmVoYXZpb3IiLCAic2V0U2VsZWN0aW9uQmVoYXZpb3IiLCAic2VsZWN0aW9uTW9kZSIsICJkaXNhbGxvd0VtcHR5U2VsZWN0aW9uIiwgInNldFNlbGVjdGVkS2V5cyIsICJjcmVhdGVUeXBlU2VsZWN0IiwgInNlYXJjaCIsICJzZXRTZWFyY2giLCAidGltZW91dElkIiwgInNldFRpbWVvdXRJZCIsICJkZWxlZ2F0ZSIsICJtYW5hZ2VyIiwgImNoYXJhY3RlciIsICJnZXRTdHJpbmdGb3JLZXkiLCAibmV3U2VhcmNoIiwgImlzQWxsU2FtZUxldHRlciIsICJsZXR0ZXIiLCAiY3JlYXRlU2VsZWN0YWJsZUNvbGxlY3Rpb24iLCAic2Nyb2xsUmVmIiwgImZpbmFsU2Nyb2xsUmVmIiwgImRpcmVjdGlvbiIsICJzY3JvbGxQb3MiLCAic2Nyb2xsRWwiLCAidHlwZVNlbGVjdEhhbmRsZXJzIiwgIm9yaWVudGF0aW9uIiwgIm9uS2V5RG93biIsICJyZWZFbCIsICJzZWxlY3RPbkZvY3VzIiwgIm5hdmlnYXRlVG9LZXkiLCAic2hvdWxkRm9jdXNXcmFwIiwgIm5leHRLZXkiLCAiaXNSVEwzIiwgImZpcnN0S2V5IiwgImxhc3RLZXkiLCAibGFzdCIsICJvbkZvY3VzSW4iLCAibmF2aWdhdGVUb0ZpcnN0S2V5IiwgInJlbGF0ZWRUYXJnZXQiLCAib25Gb2N1c091dCIsICJvbk1vdXNlRG93biIsICJ0cnlBdXRvRm9jdXMiLCAiYXV0b0ZvY3VzIiwgIm5ld1ZhbHVlIiwgImlzVmlydHVhbGl6ZWQiLCAiY3JlYXRlU2VsZWN0YWJsZUl0ZW0iLCAic2hvdWxkVXNlVmlydHVhbEZvY3VzIiwgIm9uU2VsZWN0IiwgImlzRGlzYWJsZWQiLCAiYWxsb3dzU2VsZWN0aW9uIiwgInBvaW50ZXJEb3duVHlwZSIsICJvblBvaW50ZXJEb3duIiwgIm9uUG9pbnRlclVwIiwgIm9uQ2xpY2siLCAib25Gb2N1cyIsICJ0YWJJbmRleCIsICJrZXkyIiwgInNob3VsZFVzZVZpcnR1YWxGb2N1czIiLCAiU2VsZWN0aW9uTWFuYWdlciIsICJjb2xsZWN0aW9uIiwgInN0YXRlIiwgInJldHJpZXZlZEtleSIsICJrIiwgImZpcnN0IiwgImlzSXRlbUJlZm9yZUZpcnN0IiwgImlzSXRlbUFmdGVyTGFzdCIsICJ0b0tleSIsICJyZXRyaWV2ZWRUb0tleSIsICJmcm9tIiwgInRvIiwgImZyb21JdGVtIiwgInRvSXRlbSIsICJMaXN0Q29sbGVjdGlvbiIsICJpZHgiLCAiY3JlYXRlTGlzdFN0YXRlIiwgInNlbGVjdGlvblN0YXRlIiwgInNlbGVjdGlvbk1hbmFnZXIiLCAiY3JlYXRlQ29tcHV0ZWQiLCAiYWNjZXNzMiIsICJjcmVhdGVQcmVzZW5jZSIsICJyZWZTdHlsZXMiLCAiZ2V0QW5pbWF0aW9uTmFtZSIsICJwcmVzZW50U3RhdGUiLCAic2V0UHJlc2VudFN0YXRlIiwgImFuaW1hdGlvbk5hbWUiLCAicHJldlNob3ciLCAic2hvdyIsICJwcmV2QW5pbWF0aW9uTmFtZSIsICJjdXJyZW50QW5pbWF0aW9uTmFtZSIsICJoYW5kbGVBbmltYXRpb25TdGFydCIsICJoYW5kbGVBbmltYXRpb25FbmQiLCAiaXNDdXJyZW50QW5pbWF0aW9uIiwgInByZXNlbmNlX2RlZmF1bHQiLCAic3JjX2RlZmF1bHQiLCAiREFUQV9UT1BfTEFZRVJfQVRUUiIsICJvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzIiwgImhhc0Rpc2FibGVkQm9keVBvaW50ZXJFdmVudHMiLCAibGF5ZXJzIiwgImluZGV4T2YiLCAibGF5ZXIiLCAiZmluZCIsICJpc1RvcE1vc3RMYXllciIsICJnZXRQb2ludGVyQmxvY2tpbmdMYXllcnMiLCAiZ2V0VG9wTW9zdFBvaW50ZXJCbG9ja2luZ0xheWVyIiwgImhhc1BvaW50ZXJCbG9ja2luZ0xheWVyIiwgImlzQmVsb3dQb2ludGVyQmxvY2tpbmdMYXllciIsICJoaWdoZXN0QmxvY2tpbmdJbmRleCIsICJhZGRMYXllciIsICJyZW1vdmVMYXllciIsICJhc3NpZ25Qb2ludGVyRXZlbnRUb0xheWVycyIsICJkaXNhYmxlQm9keVBvaW50ZXJFdmVudHMiLCAib3duZXJEb2N1bWVudCIsICJyZXN0b3JlQm9keVBvaW50ZXJFdmVudHMiLCAibGF5ZXJTdGFjayIsICJidXR0b25fZXhwb3J0cyIsICJCdXR0b24iLCAiQnV0dG9uUm9vdCIsICJCVVRUT05fSU5QVVRfVFlQRVMiLCAiaXNCdXR0b24iLCAiaXNOYXRpdmVCdXR0b24iLCAiZWxlbWVudFRhZ05hbWUiLCAiaXNOYXRpdmVJbnB1dCIsICJpc05hdGl2ZUxpbmsiLCAic2lkZXMiLCAibWluIiwgIm1heCIsICJyb3VuZCIsICJmbG9vciIsICJjcmVhdGVDb29yZHMiLCAib3Bwb3NpdGVTaWRlTWFwIiwgIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwgImNsYW1wMiIsICJzdGFydCIsICJlbmQiLCAiZXZhbHVhdGUiLCAicGFyYW0iLCAiZ2V0U2lkZSIsICJwbGFjZW1lbnQiLCAiZ2V0QWxpZ25tZW50IiwgImdldE9wcG9zaXRlQXhpcyIsICJnZXRBeGlzTGVuZ3RoIiwgImdldFNpZGVBeGlzIiwgImdldEFsaWdubWVudEF4aXMiLCAiZ2V0QWxpZ25tZW50U2lkZXMiLCAicmVjdHMiLCAicnRsIiwgImFsaWdubWVudCIsICJhbGlnbm1lbnRBeGlzIiwgIm1haW5BbGlnbm1lbnRTaWRlIiwgImdldE9wcG9zaXRlUGxhY2VtZW50IiwgImdldEV4cGFuZGVkUGxhY2VtZW50cyIsICJvcHBvc2l0ZVBsYWNlbWVudCIsICJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsICJnZXRTaWRlTGlzdCIsICJzaWRlIiwgImlzU3RhcnQiLCAibHIiLCAicmwiLCAidGIiLCAiYnQiLCAiZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyIsICJmbGlwQWxpZ25tZW50IiwgImV4cGFuZFBhZGRpbmdPYmplY3QiLCAicGFkZGluZyIsICJnZXRQYWRkaW5nT2JqZWN0IiwgInJlY3RUb0NsaWVudFJlY3QiLCAiY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQiLCAicmVmZXJlbmNlIiwgImZsb2F0aW5nIiwgInNpZGVBeGlzIiwgImFsaWduTGVuZ3RoIiwgImlzVmVydGljYWwiLCAiY29tbW9uWCIsICJjb21tb25ZIiwgImNvbW1vbkFsaWduIiwgImNvb3JkcyIsICJjb21wdXRlUG9zaXRpb24iLCAiY29uZmlnIiwgInN0cmF0ZWd5IiwgIm1pZGRsZXdhcmUiLCAicGxhdGZvcm0yIiwgInZhbGlkTWlkZGxld2FyZSIsICJzdGF0ZWZ1bFBsYWNlbWVudCIsICJtaWRkbGV3YXJlRGF0YSIsICJyZXNldENvdW50IiwgIm5leHRYIiwgIm5leHRZIiwgInJlc2V0IiwgImRldGVjdE92ZXJmbG93IiwgIl9hd2FpdCRwbGF0Zm9ybSRpc0VsZSIsICJlbGVtZW50cyIsICJib3VuZGFyeSIsICJyb290Qm91bmRhcnkiLCAiZWxlbWVudENvbnRleHQiLCAiYWx0Qm91bmRhcnkiLCAicGFkZGluZ09iamVjdCIsICJjbGlwcGluZ0NsaWVudFJlY3QiLCAib2Zmc2V0UGFyZW50IiwgIm9mZnNldFNjYWxlIiwgImVsZW1lbnRDbGllbnRSZWN0IiwgImFycm93IiwgImFycm93RGltZW5zaW9ucyIsICJpc1lBeGlzIiwgIm1pblByb3AiLCAibWF4UHJvcCIsICJjbGllbnRQcm9wIiwgImVuZERpZmYiLCAic3RhcnREaWZmIiwgImFycm93T2Zmc2V0UGFyZW50IiwgImNsaWVudFNpemUiLCAiY2VudGVyVG9SZWZlcmVuY2UiLCAibGFyZ2VzdFBvc3NpYmxlUGFkZGluZyIsICJtaW5QYWRkaW5nIiwgIm1heFBhZGRpbmciLCAibWluJDEiLCAibWF4MiIsICJjZW50ZXIiLCAib2Zmc2V0MyIsICJzaG91bGRBZGRPZmZzZXQiLCAiYWxpZ25tZW50T2Zmc2V0IiwgImZsaXAiLCAiX21pZGRsZXdhcmVEYXRhJGFycm93IiwgIl9taWRkbGV3YXJlRGF0YSRmbGlwIiwgImluaXRpYWxQbGFjZW1lbnQiLCAiY2hlY2tNYWluQXhpcyIsICJjaGVja0Nyb3NzQXhpcyIsICJzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMiLCAiZmFsbGJhY2tTdHJhdGVneSIsICJmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uIiwgImRldGVjdE92ZXJmbG93T3B0aW9ucyIsICJpbml0aWFsU2lkZUF4aXMiLCAiaXNCYXNlUGxhY2VtZW50IiwgImZhbGxiYWNrUGxhY2VtZW50cyIsICJoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uIiwgInBsYWNlbWVudHMyIiwgIm92ZXJmbG93IiwgIm92ZXJmbG93cyIsICJvdmVyZmxvd3NEYXRhIiwgInNpZGVzMiIsICJzaWRlMiIsICJfbWlkZGxld2FyZURhdGEkZmxpcDIiLCAiX292ZXJmbG93c0RhdGEkZmlsdGVyIiwgIm5leHRJbmRleCIsICJuZXh0UGxhY2VtZW50IiwgInJlc2V0UGxhY2VtZW50IiwgIl9vdmVyZmxvd3NEYXRhJGZpbHRlcjIiLCAicGxhY2VtZW50MiIsICJjdXJyZW50U2lkZUF4aXMiLCAib3ZlcmZsb3cyIiwgImFjYyIsICJnZXRTaWRlT2Zmc2V0cyIsICJpc0FueVNpZGVGdWxseUNsaXBwZWQiLCAiaGlkZSIsICJvZmZzZXRzIiwgImNvbnZlcnRWYWx1ZVRvQ29vcmRzIiwgIm1haW5BeGlzTXVsdGkiLCAiY3Jvc3NBeGlzTXVsdGkiLCAicmF3VmFsdWUiLCAibWFpbkF4aXMiLCAiY3Jvc3NBeGlzIiwgIm9mZnNldCIsICJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCAiZGlmZkNvb3JkcyIsICJzaGlmdCIsICJsaW1pdGVyIiwgIngyIiwgInkyIiwgIm1haW5BeGlzQ29vcmQiLCAiY3Jvc3NBeGlzQ29vcmQiLCAibWluU2lkZSIsICJtYXhTaWRlIiwgIm1pbjIiLCAibGltaXRlZENvb3JkcyIsICJzaXplIiwgImFwcGx5IiwgImhlaWdodFNpZGUiLCAid2lkdGhTaWRlIiwgIm1heGltdW1DbGlwcGluZ0hlaWdodCIsICJtYXhpbXVtQ2xpcHBpbmdXaWR0aCIsICJvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCIsICJvdmVyZmxvd0F2YWlsYWJsZVdpZHRoIiwgIm5vU2hpZnQiLCAiYXZhaWxhYmxlSGVpZ2h0IiwgImF2YWlsYWJsZVdpZHRoIiwgInhNaW4iLCAieE1heCIsICJ5TWluIiwgInlNYXgiLCAibmV4dERpbWVuc2lvbnMiLCAiZ2V0Tm9kZU5hbWUiLCAiaXNOb2RlIiwgImdldFdpbmRvdzIiLCAiX25vZGUkb3duZXJEb2N1bWVudCIsICJnZXREb2N1bWVudEVsZW1lbnQiLCAiaXNFbGVtZW50IiwgImlzSFRNTEVsZW1lbnQiLCAiaXNTaGFkb3dSb290IiwgImlzT3ZlcmZsb3dFbGVtZW50IiwgIm92ZXJmbG93WCIsICJvdmVyZmxvd1kiLCAiZ2V0Q29tcHV0ZWRTdHlsZTIiLCAiaXNUYWJsZUVsZW1lbnQiLCAiaXNUb3BMYXllciIsICJpc0NvbnRhaW5pbmdCbG9jayIsICJlbGVtZW50T3JDc3MiLCAid2Via2l0IiwgImlzV2ViS2l0IiwgImNzcyIsICJnZXRDb250YWluaW5nQmxvY2siLCAiY3VycmVudE5vZGUiLCAiZ2V0UGFyZW50Tm9kZSIsICJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCAiZ2V0Tm9kZVNjcm9sbCIsICJnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciIsICJwYXJlbnROb2RlIiwgImdldE92ZXJmbG93QW5jZXN0b3JzIiwgInRyYXZlcnNlSWZyYW1lcyIsICJfbm9kZSRvd25lckRvY3VtZW50MiIsICJzY3JvbGxhYmxlQW5jZXN0b3IiLCAiaXNCb2R5IiwgIndpbiIsICJnZXRDc3NEaW1lbnNpb25zIiwgImhhc09mZnNldCIsICJvZmZzZXRXaWR0aCIsICJvZmZzZXRIZWlnaHQiLCAic2hvdWxkRmFsbGJhY2siLCAidW53cmFwRWxlbWVudCIsICJnZXRTY2FsZSIsICJkb21FbGVtZW50IiwgIiQiLCAibm9PZmZzZXRzIiwgImdldFZpc3VhbE9mZnNldHMiLCAic2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyIsICJpc0ZpeGVkIiwgImZsb2F0aW5nT2Zmc2V0UGFyZW50IiwgImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsICJpbmNsdWRlU2NhbGUiLCAiaXNGaXhlZFN0cmF0ZWd5IiwgImNsaWVudFJlY3QiLCAic2NhbGUiLCAidmlzdWFsT2Zmc2V0cyIsICJvZmZzZXRXaW4iLCAiY3VycmVudFdpbiIsICJjdXJyZW50SUZyYW1lIiwgImlmcmFtZVNjYWxlIiwgImlmcmFtZVJlY3QiLCAibGVmdCIsICJ0b3AiLCAiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCAiZG9jdW1lbnRFbGVtZW50IiwgInRvcExheWVyIiwgInNjcm9sbCIsICJpc09mZnNldFBhcmVudEFuRWxlbWVudCIsICJvZmZzZXRSZWN0IiwgImdldENsaWVudFJlY3RzIiwgImdldFdpbmRvd1Njcm9sbEJhclgiLCAiZ2V0RG9jdW1lbnRSZWN0IiwgImh0bWwiLCAiYm9keSIsICJnZXRWaWV3cG9ydFJlY3QiLCAidmlzdWFsVmlld3BvcnQiLCAidmlzdWFsVmlld3BvcnRCYXNlZCIsICJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsICJnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IiLCAiY2xpcHBpbmdBbmNlc3RvciIsICJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCAic3RvcE5vZGUiLCAiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwgImNhY2hlMiIsICJjYWNoZWRSZXN1bHQiLCAiY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUiLCAiZWxlbWVudElzRml4ZWQiLCAiY29tcHV0ZWRTdHlsZSIsICJjdXJyZW50Tm9kZUlzQ29udGFpbmluZyIsICJnZXRDbGlwcGluZ1JlY3QiLCAiY2xpcHBpbmdBbmNlc3RvcnMiLCAiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwgImNsaXBwaW5nUmVjdCIsICJhY2NSZWN0IiwgImdldERpbWVuc2lvbnMiLCAiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCAiaXNTdGF0aWNQb3NpdGlvbmVkIiwgImdldFRydWVPZmZzZXRQYXJlbnQiLCAicG9seWZpbGwiLCAiZ2V0T2Zmc2V0UGFyZW50IiwgInN2Z09mZnNldFBhcmVudCIsICJnZXRFbGVtZW50UmVjdHMiLCAiZ2V0T2Zmc2V0UGFyZW50Rm4iLCAiZ2V0RGltZW5zaW9uc0ZuIiwgImZsb2F0aW5nRGltZW5zaW9ucyIsICJpc1JUTDIiLCAicGxhdGZvcm0iLCAib2JzZXJ2ZU1vdmUiLCAib25Nb3ZlIiwgImlvIiwgImNsZWFudXAiLCAiX2lvIiwgInJlZnJlc2giLCAic2tpcCIsICJpbnNldFRvcCIsICJpbnNldFJpZ2h0IiwgImluc2V0Qm90dG9tIiwgImluc2V0TGVmdCIsICJpc0ZpcnN0VXBkYXRlIiwgImhhbmRsZU9ic2VydmUiLCAicmF0aW8iLCAiYXV0b1VwZGF0ZSIsICJ1cGRhdGUiLCAiYW5jZXN0b3JTY3JvbGwiLCAiYW5jZXN0b3JSZXNpemUiLCAiZWxlbWVudFJlc2l6ZSIsICJsYXlvdXRTaGlmdCIsICJhbmltYXRpb25GcmFtZSIsICJyZWZlcmVuY2VFbCIsICJhbmNlc3RvcnMiLCAiY2xlYW51cElvIiwgInJlb2JzZXJ2ZUZyYW1lIiwgInJlc2l6ZU9ic2VydmVyIiwgImZpcnN0RW50cnkiLCAiX3Jlc2l6ZU9ic2VydmVyIiwgImZyYW1lSWQiLCAicHJldlJlZlJlY3QiLCAiZnJhbWVMb29wIiwgIm5leHRSZWZSZWN0IiwgIl9yZXNpemVPYnNlcnZlcjIiLCAib2Zmc2V0MiIsICJzaGlmdDIiLCAiZmxpcDIiLCAic2l6ZTIiLCAiaGlkZTIiLCAiYXJyb3cyIiwgImNvbXB1dGVQb3NpdGlvbjIiLCAibWVyZ2VkT3B0aW9ucyIsICJwbGF0Zm9ybVdpdGhDYWNoZSIsICJQb3BwZXJDb250ZXh0IiwgInVzZVBvcHBlckNvbnRleHQiLCAiX3RtcGwkIiwgInRlbXBsYXRlIiwgIkRFRkFVTFRfU0laRSIsICJIQUxGX0RFRkFVTFRfU0laRSIsICJST1RBVElPTl9ERUciLCAiUG9wcGVyQXJyb3ciLCAiZGlyIiwgImNvbnRlbnRTdHlsZSIsICJjcmVhdGVDb21wdXRlZFN0eWxlIiwgImZpbGwiLCAic3Ryb2tlIiwgImJvcmRlcldpZHRoIiwgInN0cm9rZVdpZHRoIiwgInJvdGF0ZSIsICJfZWwkIiwgIl9lbCQyIiwgInNldEF0dHJpYnV0ZSIsICJzZXRTdHlsZSIsICJQb3BwZXJQb3NpdGlvbmVyIiwgImNyZWF0ZURPTVJlY3QiLCAiYW5jaG9yUmVjdCIsICJnZXRBbmNob3JFbGVtZW50IiwgImFuY2hvciIsICJnZXRBbmNob3JSZWN0IiwgImlzVmFsaWRQbGFjZW1lbnQiLCAiZmxpcDIyIiwgIlJFVkVSU0VfQkFTRV9QTEFDRU1FTlQiLCAiZ2V0VHJhbnNmb3JtT3JpZ2luIiwgInJlYWRpbmdEaXJlY3Rpb24iLCAiYmFzZVBsYWNlbWVudCIsICJyZXZlcnNlUGxhY2VtZW50IiwgIlBvcHBlclJvb3QiLCAicG9zaXRpb25lclJlZiIsICJzZXRQb3NpdGlvbmVyUmVmIiwgImFycm93UmVmIiwgInNldEFycm93UmVmIiwgImN1cnJlbnRQbGFjZW1lbnQiLCAic2V0Q3VycmVudFBsYWNlbWVudCIsICJhbmNob3JSZWYiLCAidXBkYXRlUG9zaXRpb24iLCAiZmxvYXRpbmdFbCIsICJhcnJvd0VsIiwgImFycm93T2Zmc2V0IiwgImZpbmFsR3V0dGVyIiwgImhhc0FsaWdubWVudCIsICJyZWZlcmVuY2VXaWR0aCIsICJwb3MiLCAiYXJyb3dYIiwgImFycm93WSIsICJjbGVhbnVwQXV0b1VwZGF0ZSIsICJwb3NpdGlvbmVyIiwgImNvbnRlbnQiLCAiUG9wcGVyIiwgImNyZWF0ZUVzY2FwZUtleURvd24iLCAiaGFuZGxlS2V5RG93biIsICJkb2N1bWVudDIiLCAiUE9JTlRFUl9ET1dOX09VVFNJREVfRVZFTlQiLCAiRk9DVVNfT1VUU0lERV9FVkVOVCIsICJjcmVhdGVJbnRlcmFjdE91dHNpZGUiLCAicG9pbnRlckRvd25UaW1lb3V0SWQiLCAiY2xpY2tIYW5kbGVyIiwgIm9uUG9pbnRlckRvd25PdXRzaWRlIiwgIm9uRm9jdXNPdXRzaWRlIiwgIm9uSW50ZXJhY3RPdXRzaWRlIiwgImlzRXZlbnRPdXRzaWRlIiwgImhhbmRsZXIyIiwgInBvaW50ZXJEb3duT3V0c2lkZUV2ZW50IiwgImZvY3VzT3V0c2lkZUV2ZW50IiwgIkRpc21pc3NhYmxlTGF5ZXJDb250ZXh0IiwgInVzZU9wdGlvbmFsRGlzbWlzc2FibGVMYXllckNvbnRleHQiLCAiRGlzbWlzc2FibGVMYXllciIsICJwYXJlbnRDb250ZXh0IiwgIm5lc3RlZExheWVycyIsICJyZWdpc3Rlck5lc3RlZExheWVyIiwgInBhcmVudFVucmVnaXN0ZXIiLCAidW5yZWdpc3RlckZyb21QYXJlbnRMYXllciIsICJyZWYyIiwgImRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyIsICJjcmVhdGVEaXNjbG9zdXJlU3RhdGUiLCAiaXNPcGVuIiwgInNldElzT3BlbiIsICJvcGVuIiwgImNsb3NlIiwgInJhZGlvX2dyb3VwX2V4cG9ydHMiLCAiUmFkaW9Hcm91cEl0ZW0iLCAiUmFkaW9Hcm91cEl0ZW1Db250cm9sIiwgIlJhZGlvR3JvdXBJdGVtRGVzY3JpcHRpb24iLCAiUmFkaW9Hcm91cEl0ZW1JbmRpY2F0b3IiLCAiUmFkaW9Hcm91cEl0ZW1JbnB1dCIsICJSYWRpb0dyb3VwSXRlbUxhYmVsIiwgIlJhZGlvR3JvdXBMYWJlbCIsICJSYWRpb0dyb3VwIiwgIlJhZGlvR3JvdXBSb290IiwgIlJhZGlvR3JvdXBDb250ZXh0IiwgInVzZVJhZGlvR3JvdXBDb250ZXh0IiwgIlJhZGlvR3JvdXBJdGVtQ29udGV4dCIsICJ1c2VSYWRpb0dyb3VwSXRlbUNvbnRleHQiLCAiZm9ybUNvbnRyb2xDb250ZXh0IiwgInJhZGlvR3JvdXBDb250ZXh0IiwgImlucHV0SWQiLCAic2V0SW5wdXRJZCIsICJpbnB1dFJlZiIsICJzZXRJbnB1dFJlZiIsICJzZXRJc0ZvY3VzZWQiLCAic2V0UmVmIiwgInByZXNlbnQiLCAicmFkaW9Db250ZXh0IiwgImFyaWFMYWJlbGxlZEJ5IiwgImFyaWFEZXNjcmliZWRCeSIsICJpc0ludGVybmFsQ2hhbmdlRXZlbnQiLCAic2V0SXNJbnRlcm5hbENoYW5nZUV2ZW50IiwgIm9uQmx1ciIsICJmb3JtQ29udHJvbFByb3BzIiwgInNlbGVjdGVkIiwgInNldFNlbGVjdGVkIiwgImlzU2VsZWN0ZWRWYWx1ZSIsICJyYWRpbyIsICJMaXN0S2V5Ym9hcmREZWxlZ2F0ZSIsICJrZXlBZnRlciIsICJrZXlCZWZvcmUiLCAibWVudSIsICJwYWdlWSIsICJrZXlBYm92ZSIsICJrZXlCZWxvdyIsICJmcm9tS2V5IiwgInN1YnN0cmluZyIsICJjcmVhdGVTZWxlY3RhYmxlTGlzdCIsICJrZXlib2FyZERlbGVnYXRlIiwgIkFVVE9GT0NVU19PTl9NT1VOVF9FVkVOVCIsICJBVVRPRk9DVVNfT05fVU5NT1VOVF9FVkVOVCIsICJFVkVOVF9PUFRJT05TIiwgImZvY3VzU2NvcGVTdGFjayIsICJjcmVhdGVGb2N1c1Njb3BlIiwgImlzUGF1c2VkIiwgInNldElzUGF1c2VkIiwgImZvY3VzU2NvcGUiLCAibGFzdEZvY3VzZWRFbGVtZW50IiwgIm9uTW91bnRBdXRvRm9jdXMiLCAib25Vbm1vdW50QXV0b0ZvY3VzIiwgImNyZWF0ZVNlbnRpbmVsIiwgInRhYmJhYmxlcyIsICJmaXJzdFRhYmJhYmxlIiwgImxhc3RUYWJiYWJsZSIsICJzaG91bGRQcmV2ZW50VW5tb3VudEF1dG9Gb2N1cyIsICJwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQiLCAibW91bnRFdmVudCIsICJ1bm1vdW50RXZlbnQiLCAic3RhcnRTZW50aW5lbCIsICJlbmRTZW50aW5lbCIsICJtdXRhdGlvbnMiLCAibXV0YXRpb24iLCAiREFUQV9MSVZFX0FOTk9VTkNFUl9BVFRSIiwgImNyZWF0ZUhpZGVPdXRzaWRlIiwgImFyaWFIaWRlT3V0c2lkZSIsICJyZWZDb3VudE1hcCIsICJvYnNlcnZlclN0YWNrIiwgInZpc2libGVOb2RlcyIsICJoaWRkZW5Ob2RlcyIsICJ3YWxrIiwgInJvb3QyIiwgImFjY2VwdE5vZGUiLCAiYWNjZXB0Um9vdCIsICJoaWRlMyIsICJyZWZDb3VudCIsICJjaGFuZ2VzIiwgImNoYW5nZSIsICJvYnNlcnZlcldyYXBwZXIiLCAiYWN0aXZlU3R5bGVzIiwgImNyZWF0ZVN0eWxlIiwgIm9yaWdpbmFsU3R5bGVzIiwgImFjdGl2ZVN0eWxlIiwgInByb3BlcnR5IiwgImFjdGl2ZVN0eWxlMiIsICJzdHlsZV9kZWZhdWx0IiwgImdldFNjcm9sbERpbWVuc2lvbnMiLCAiaXNTY3JvbGxDb250YWluZXIiLCAic3R5bGVzIiwgImdldFNjcm9sbEF0TG9jYXRpb24iLCAibG9jYXRpb24iLCAic3RvcEF0IiwgImRpcmVjdGlvbkZhY3RvciIsICJjdXJyZW50RWxlbWVudCIsICJhdmFpbGFibGVTY3JvbGwiLCAiYXZhaWxhYmxlU2Nyb2xsVG9wIiwgIndyYXBwZXJSZWFjaGVkIiwgInNjcm9sbE9mZnNldCIsICJzY3JvbGxTaXplIiwgInNjcm9sbGVkIiwgInByZXZlbnRTY3JvbGxTdGFjayIsICJzZXRQcmV2ZW50U2Nyb2xsU3RhY2siLCAiaXNBY3RpdmUiLCAiY3JlYXRlUHJldmVudFNjcm9sbCIsICJkZWZhdWx0ZWRQcm9wcyIsICJwcmV2ZW50U2Nyb2xsSWQiLCAiY3VycmVudFRvdWNoU3RhcnQiLCAiY3VycmVudFRvdWNoU3RhcnRBeGlzIiwgImN1cnJlbnRUb3VjaFN0YXJ0RGVsdGEiLCAic3RhY2siLCAic2Nyb2xsYmFyV2lkdGgiLCAib2Zmc2V0VG9wIiwgIm9mZnNldExlZnQiLCAibWF5YmVQcmV2ZW50V2hlZWwiLCAibG9nVG91Y2hTdGFydCIsICJtYXliZVByZXZlbnRUb3VjaCIsICJnZXRUb3VjaFhZIiwgIndyYXBwZXIiLCAiZGVsdGEiLCAiZ2V0RGVsdGFYWSIsICJheGlzRGVsdGEiLCAicmVzdWx0c0luU2Nyb2xsIiwgIndvdWxkU2Nyb2xsIiwgInNob3VsZENhbmNlbCIsICJjb250YWluczIiLCAidG91Y2giLCAid291bGRSZXN1bHRJblNjcm9sbCIsICJ0YXJnZXRJbldyYXBwZXIiLCAicHJldmVudFNjcm9sbF9kZWZhdWx0IiwgInNyY19kZWZhdWx0MiIsICJNZW51Q29udGV4dCIsICJ1c2VPcHRpb25hbE1lbnVDb250ZXh0IiwgInVzZU1lbnVDb250ZXh0IiwgIk1lbnVJdGVtQ29udGV4dCIsICJ1c2VNZW51SXRlbUNvbnRleHQiLCAiTWVudVJvb3RDb250ZXh0IiwgInVzZU1lbnVSb290Q29udGV4dCIsICJNZW51SXRlbUJhc2UiLCAicm9vdENvbnRleHQiLCAibWVudUNvbnRleHQiLCAibGFiZWxSZWYiLCAic2V0TGFiZWxSZWYiLCAiaXNIaWdobGlnaHRlZCIsICJzZWxlY3RhYmxlSXRlbSIsICJvblBvaW50ZXJNb3ZlIiwgIm9uUG9pbnRlckxlYXZlIiwgImFyaWFDaGVja2VkIiwgIk1lbnVDaGVja2JveEl0ZW0iLCAiY2hlY2tlZCIsICJNZW51YmFyQ29udGV4dCIsICJ1c2VPcHRpb25hbE1lbnViYXJDb250ZXh0IiwgIk1FTlVCQVJfS0VZUyIsICJNRU5VX0tFWVMiLCAiTWVudVRyaWdnZXIiLCAib3B0aW9uYWxNZW51YmFyQ29udGV4dCIsICJoYW5kbGVDbGljayIsICJvbk1vdXNlT3ZlciIsICJOYXZpZ2F0aW9uTWVudUNvbnRleHQiLCAidXNlT3B0aW9uYWxOYXZpZ2F0aW9uTWVudUNvbnRleHQiLCAiTWVudUNvbnRlbnRCYXNlIiwgIm9wdGlvbmFsTmF2aWdhdGlvbk1lbnVDb250ZXh0IiwgImxhc3RQb2ludGVyWCIsICJpc1Jvb3RNb2RhbENvbnRlbnQiLCAic2VsZWN0YWJsZUxpc3QiLCAib25Fc2NhcGVLZXlEb3duIiwgIm9uUG9pbnRlckVudGVyIiwgInBvaW50ZXJYSGFzQ2hhbmdlZCIsICJjb21tb25BdHRyaWJ1dGVzIiwgIk1lbnVDb250ZW50IiwgIk1lbnVHcm91cENvbnRleHQiLCAidXNlTWVudUdyb3VwQ29udGV4dCIsICJNZW51R3JvdXAiLCAiTWVudUdyb3VwTGFiZWwiLCAiTWVudUljb24iLCAiTWVudUl0ZW0iLCAiTWVudUl0ZW1EZXNjcmlwdGlvbiIsICJNZW51SXRlbUluZGljYXRvciIsICJNZW51SXRlbUxhYmVsIiwgIk1lbnVQb3J0YWwiLCAiUG9ydGFsIiwgIk1lbnVSYWRpb0dyb3VwQ29udGV4dCIsICJ1c2VNZW51UmFkaW9Hcm91cENvbnRleHQiLCAiTWVudVJhZGlvR3JvdXAiLCAiTWVudVJhZGlvSXRlbSIsICJnZXRQb2ludGVyR3JhY2VBcmVhIiwgImNvbnRlbnRFbCIsICJwb2ludGVyWCIsICJwb2ludGVyWSIsICJpc1BvaW50ZXJJbkdyYWNlQXJlYSIsICJhcmVhIiwgIk1lbnUiLCAicGFyZW50RG9tQ29sbGVjdGlvbkNvbnRleHQiLCAicGFyZW50TWVudUNvbnRleHQiLCAicG9pbnRlckdyYWNlVGltZW91dElkIiwgInBvaW50ZXJHcmFjZUludGVudCIsICJwb2ludGVyRGlyIiwgInRyaWdnZXJJZCIsICJzZXRUcmlnZ2VySWQiLCAiY29udGVudElkIiwgInNldENvbnRlbnRJZCIsICJ0cmlnZ2VyUmVmIiwgInNldFRyaWdnZXJSZWYiLCAiY29udGVudFJlZiIsICJzZXRDb250ZW50UmVmIiwgImZvY3VzU3RyYXRlZ3kiLCAic2V0Rm9jdXNTdHJhdGVneSIsICJuZXN0ZWRNZW51cyIsICJzZXROZXN0ZWRNZW51cyIsICJEb21Db2xsZWN0aW9uUHJvdmlkZXIiLCAiZGlzY2xvc3VyZVN0YXRlIiwgImNvbnRlbnRQcmVzZW50IiwgImxpc3RTdGF0ZSIsICJmb2N1c1N0cmF0ZWd5MiIsICJyZWN1cnNpdmVseSIsICJ0b2dnbGUiLCAiX2ZvY3VzQ29udGVudCIsICJmb2N1c0NvbnRlbnQiLCAicmVnaXN0ZXJOZXN0ZWRNZW51IiwgImlzUG9pbnRlck1vdmluZ1RvU3VibWVudSIsICJvbkl0ZW1FbnRlciIsICJvbkl0ZW1MZWF2ZSIsICJvblRyaWdnZXJMZWF2ZSIsICJpbnRlbnQiLCAiTWVudVN1YiIsICJTVUJfQ0xPU0VfS0VZUyIsICJNZW51U3ViQ29udGVudCIsICJpc0tleURvd25JbnNpZGUiLCAiaXNDbG9zZUtleSIsICJpc1N1Yk1lbnUiLCAiU0VMRUNUSU9OX0tFWVMiLCAiU1VCX09QRU5fS0VZUyIsICJNZW51U3ViVHJpZ2dlciIsICJvcGVuVGltZW91dElkIiwgImNsZWFyT3BlblRpbWVvdXQiLCAicGFyZW50U2VsZWN0aW9uTWFuYWdlciIsICJwb2ludGVyR3JhY2VUaW1lciIsICJNZW51Um9vdCIsICJzZXBhcmF0b3JfZXhwb3J0cyIsICJTZXBhcmF0b3JSb290IiwgIlNlcGFyYXRvciIsICJkcm9wZG93bl9tZW51X2V4cG9ydHMiLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51Um9vdCIsICJoYXNJbnRlcmFjdGVkT3V0c2lkZSIsICJ0b2tlbnMiLCAiY29sb3IiLCAiX3RtcGwkMiIsICJfdG1wbCQyMiIsICJfdG1wbCQzIiwgIl90bXBsJDQiLCAiX3RtcGwkNSIsICJfdG1wbCQ2IiwgIl90bXBsJDciLCAiX3RtcGwkOCIsICJfdG1wbCQ5IiwgIl90bXBsJDEwIiwgIl90bXBsJDExIiwgIl90bXBsJDEyIiwgIl90bXBsJDEzIiwgIl90bXBsJDE0IiwgIl90bXBsJDE1IiwgIl90bXBsJDE2IiwgIl90bXBsJDE3IiwgIl90bXBsJDE4IiwgIl90bXBsJDE5IiwgIl90bXBsJDIwIiwgIl90bXBsJDIxIiwgIl90bXBsJDIyMiIsICJfdG1wbCQyMyIsICJTZWFyY2giLCAiVHJhc2giLCAiQ2hldnJvbkRvd24iLCAiQXJyb3dVcCIsICJBcnJvd0Rvd24iLCAiQXJyb3dMZWZ0IiwgIl9lbCQ2IiwgIkFycm93UmlnaHQiLCAiX2VsJDciLCAiU3VuIiwgIk1vb24iLCAiTW9uaXRvciIsICJXaWZpIiwgIk9mZmxpbmUiLCAiU2V0dGluZ3MiLCAiUGlQSWNvbiIsICJDb3BpZXIiLCAiUGVuY2lsIiwgIkNvcGllZENvcGllciIsICJfZWwkMTciLCAiX2VsJDE4IiwgIkVycm9yQ29waWVyIiwgIkxpc3QiLCAiQ2hlY2siLCAiX2VsJDIxIiwgIl9lbCQyMiIsICJfZWwkMjMiLCAiX2VsJDI0IiwgIkNoZWNrQ2lyY2xlIiwgIkxvYWRpbmdDaXJjbGUiLCAiWENpcmNsZSIsICJQYXVzZUNpcmNsZSIsICJUYW5zdGFja0xvZ28iLCAiX2VsJDI5IiwgIl9lbCQzMCIsICJfZWwkMzEiLCAiX2VsJDMyIiwgIl9lbCQzMyIsICJfZWwkMzQiLCAiX2VsJDM1IiwgIl9lbCQzNiIsICJfZWwkMzciLCAiX2VsJDM4IiwgIl9lbCQzOSIsICJfZWwkNDAiLCAiX2VsJDQxIiwgIl9lbCQ0MiIsICJfZWwkNDMiLCAiX2VsJDQ0IiwgIl9lbCQ0NSIsICJfZWwkNDYiLCAiX2VsJDQ3IiwgIl9lbCQ0OCIsICJfZWwkNDkiLCAiX2VsJDUwIiwgIl9lbCQ1MSIsICJfZWwkNTIiLCAiX2VsJDUzIiwgIl9lbCQ1NCIsICJfZWwkNTUiLCAiX2VsJDU2IiwgIl9lbCQ1NyIsICJfZWwkNTgiLCAiX2VsJDU5IiwgIl9lbCQ2MCIsICJfZWwkNjEiLCAiX2VsJDYyIiwgIl9lbCQ2MyIsICJfZWwkNjQiLCAiX2VsJDY1IiwgIl9lbCQ2NiIsICJfZWwkNjciLCAiX2VsJDY4IiwgIl9lbCQ2OSIsICJfZWwkNzAiLCAiX2VsJDcxIiwgIl9lbCQ3MiIsICJfZWwkNzMiLCAiX2VsJDc0IiwgIl9lbCQ3NSIsICJfZWwkNzYiLCAiX2VsJDc3IiwgIl9lbCQ3OCIsICJfZWwkNzkiLCAiX2VsJDgwIiwgIl9lbCQ4MSIsICJfZWwkODIiLCAiX2VsJDgzIiwgIl9lbCQ4NCIsICJfZWwkODUiLCAiX2VsJDg2IiwgIl9lbCQ4NyIsICJfZWwkODgiLCAiX2VsJDg5IiwgIl9lbCQ5MCIsICJfZWwkOTEiLCAiX2VsJDkyIiwgIl9lbCQ5MyIsICJfZWwkOTQiLCAiX2VsJDk1IiwgIl9lbCQ5NiIsICJfZWwkOTciLCAiX2VsJDk4IiwgIl9lbCQ5OSIsICJfZWwkMTAwIiwgIl9lbCQxMDEiLCAiX2VsJDEwMiIsICJfZWwkMTAzIiwgIl9lbCQxMDQiLCAiX2VsJDEwNSIsICJfZWwkMTA2IiwgIl9lbCQxMDciLCAiX2VsJDEwOCIsICJfZWwkMTA5IiwgIl9lbCQxMTAiLCAiX2VsJDExMSIsICJfZWwkMTEyIiwgIl9lbCQxMTMiLCAiX2VsJDExNCIsICJfZWwkMTE1IiwgIl9lbCQxMTYiLCAiX2VsJDExNyIsICJfZWwkMTE4IiwgIl9lbCQxMTkiLCAiX2VsJDEyMCIsICJfZWwkMTIxIiwgIl90bXBsJDI0IiwgIl90bXBsJDI1IiwgIl90bXBsJDMyIiwgIl90bXBsJDQyIiwgIl90bXBsJDUyIiwgIl90bXBsJDYyIiwgIl90bXBsJDcyIiwgIl90bXBsJDgyIiwgIl90bXBsJDkyIiwgIl90bXBsJDEwMiIsICJfdG1wbCQxMTIiLCAiX3RtcGwkMTIyIiwgImNodW5rQXJyYXkiLCAic2l6ZTMiLCAiRXhwYW5kZXIiLCAidGhlbWUiLCAiZGFya1N0eWxlcyIsICJsaWdodFN0eWxlcyIsICJjbGFzc05hbWUiLCAiQ29weUJ1dHRvbiIsICJjb3B5U3RhdGUiLCAic2V0Q29weVN0YXRlIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAic3RyaW5naWZ5IiwgImluc2VydCIsICJTd2l0Y2giLCAiTWF0Y2giLCAiX3AkIiwgIl92JCIsICJfdiQyIiwgIkNsZWFyQXJyYXlCdXR0b24iLCAicXVlcnlDbGllbnQiLCAiX2VsJDMiLCAib2xkRGF0YSIsICJuZXdEYXRhIiwgInVwZGF0ZU5lc3RlZERhdGFCeVBhdGgiLCAiRGVsZXRlSXRlbUJ1dHRvbiIsICJfZWwkNCIsICJkZWxldGVOZXN0ZWREYXRhQnlQYXRoIiwgIlRvZ2dsZVZhbHVlQnV0dG9uIiwgIl9lbCQ1IiwgImlzSXRlcmFibGUiLCAiRXhwbG9yZXIiLCAiZXhwYW5kZWQiLCAic2V0RXhwYW5kZWQiLCAidG9nZ2xlRXhwYW5kZWQiLCAib2xkIiwgImV4cGFuZGVkUGFnZXMiLCAic2V0RXhwYW5kZWRQYWdlcyIsICJzdWJFbnRyaWVzIiwgInZhbCIsICJzdWJFbnRyeVBhZ2VzIiwgImN1cnJlbnREYXRhUGF0aCIsICJfZWwkOCIsICJfZWwkOSIsICJfZWwkMTAiLCAiX2VsJDExIiwgIl9lbCQxMiIsICJfZWwkMTMiLCAiX2VsJDE0IiwgInNlcmlhbGl6ZSIsICJfZWwkMTUiLCAiX3YkMyIsICJfdiQ0IiwgIl92JDUiLCAiX2VsJDE2IiwgIkluZGV4IiwgIl9lbCQyNSIsICJfZWwkMjYiLCAiX2VsJDI4IiwgIl92JDEwIiwgIl92JDExIiwgIl9lbCQxOSIsICJfZWwkMjAiLCAiZGlzcGxheVZhbHVlIiwgImNoYW5nZUV2ZW50IiwgIl92JDYiLCAiX3YkNyIsICJfdiQ4IiwgIl92JDkiLCAic3R5bGVzRmFjdG9yeSIsICJjb2xvcnMiLCAiZm9udCIsICJib3JkZXIiLCAibGlnaHQiLCAiZGFyayIsICJfdG1wbCQyNiIsICJfdG1wbCQyNyIsICJfdG1wbCQzMyIsICJfdG1wbCQ0MyIsICJfdG1wbCQ1MyIsICJfdG1wbCQ2MyIsICJfdG1wbCQ3MyIsICJfdG1wbCQ4MyIsICJfdG1wbCQ5MyIsICJfdG1wbCQxMDMiLCAiX3RtcGwkMTEzIiwgIl90bXBsJDEyMyIsICJfdG1wbCQxMzIiLCAiX3RtcGwkMTQyIiwgIl90bXBsJDE1MiIsICJfdG1wbCQxNjIiLCAiX3RtcGwkMTcyIiwgIl90bXBsJDE4MiIsICJfdG1wbCQxOTIiLCAiX3RtcGwkMjAyIiwgIl90bXBsJDIxMiIsICJfdG1wbCQyMjMiLCAiX3RtcGwkMjMyIiwgIl90bXBsJDI0MiIsICJfdG1wbCQyNTIiLCAiX3RtcGwkMjYyIiwgIl90bXBsJDI3MiIsICJfdG1wbCQyOCIsICJfdG1wbCQyOSIsICJfdG1wbCQzMCIsICJfdG1wbCQzMSIsICJfdG1wbCQzMjIiLCAiX3RtcGwkMzMyIiwgIl90bXBsJDM0IiwgInNlbGVjdGVkUXVlcnlIYXNoIiwgInNldFNlbGVjdGVkUXVlcnlIYXNoIiwgInNlbGVjdGVkTXV0YXRpb25JZCIsICJzZXRTZWxlY3RlZE11dGF0aW9uSWQiLCAicGFuZWxXaWR0aCIsICJzZXRQYW5lbFdpZHRoIiwgIm9mZmxpbmUiLCAic2V0T2ZmbGluZSIsICJEZXZ0b29scyIsICJkYXJrU3R5bGVzMiIsICJsaWdodFN0eWxlczIiLCAiYnV0dG9uUG9zaXRpb24iLCAicG9zaXRpb24iLCAidHJhbnNpdGlvbnNDb250YWluZXJSZWYiLCAicGFuZWxQb3NpdGlvbiIsICJmb250U2l6ZSIsICJwaXBfb3BlbiIsICJQaVBQYW5lbCIsICJDb250ZW50VmlldyIsICJ1c2UiLCAiRHJhZ2dhYmxlUGFuZWwiLCAiZ2V0UGFuZWxEeW5hbWljU3R5bGVzIiwgInJlc2l6ZUNCIiwgIlBhcmVudFBhbmVsIiwgInBhbmVsUmVmIiwgIl9yZWYkMiIsICJpc1Jlc2l6aW5nIiwgInNldElzUmVzaXppbmciLCAiaGFuZGxlRHJhZ1N0YXJ0IiwgInBhbmVsRWxlbWVudCIsICJzdGFydFgiLCAic3RhcnRZIiwgIm5ld1NpemUiLCAibWluSGVpZ2h0IiwgImNvbnZlcnRSZW1Ub1BpeGVscyIsICJtaW5XaWR0aCIsICJydW5EcmFnIiwgIm1vdmVFdmVudCIsICJ2YWxUb0FkZCIsICJuZXdXaWR0aCIsICJ1bnN1YnNjcmliZSIsICJyb290Q29udGFpbmVyIiwgImN1cnJlbnRQb3NpdGlvbiIsICJzdHlsZVByb3AiLCAiZ2V0U2lkZWRQcm9wIiwgInByZXZpb3VzUGFkZGluZ3MiLCAicGFkZGluZ1RvcCIsICJwYWRkaW5nQm90dG9tIiwgInBhZGRpbmdMZWZ0IiwgInBhZGRpbmdSaWdodCIsICJwcmV2aW91c1ZhbHVlIiwgIl9yZWYkMyIsICJzZXR1cFF1ZXJ5Q2FjaGVTdWJzY3JpcHRpb24iLCAic2V0dXBNdXRhdGlvbkNhY2hlU3Vic2NyaXB0aW9uIiwgImNvbnRhaW5lclJlZiIsICJzZWxlY3RlZFZpZXciLCAic2V0U2VsZWN0ZWRWaWV3IiwgInNvcnQiLCAic29ydE9yZGVyIiwgIm11dGF0aW9uU29ydCIsICJtdXRhdGlvblNvcnRPcmRlciIsICJzb3J0Rm4iLCAibXV0YXRpb25Tb3J0Rm4iLCAib25saW5lTWFuYWdlciIsICJxdWVyeV9jYWNoZSIsICJtdXRhdGlvbl9jYWNoZSIsICJxdWVyeUNvdW50IiwgImNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIiLCAicXVlcnlDYWNoZSIsICJxdWVyaWVzIiwgImN1cnIiLCAiZmlsdGVyZWQiLCAibXV0YXRpb25Db3VudCIsICJjcmVhdGVTdWJzY3JpYmVUb011dGF0aW9uQ2FjaGVCYXRjaGVyIiwgIm11dGF0aW9uQ2FjaGUiLCAic2V0RGV2dG9vbHNQb3NpdGlvbiIsICJzZXRDb21wdXRlZFZhcmlhYmxlcyIsICJ2YXJpYWJsZSIsICJfZWwkMjciLCAiX3JlZiQ0IiwgIlF1ZXJ5U3RhdHVzQ291bnQiLCAiTXV0YXRpb25TdGF0dXNDb3VudCIsICJfYyQiLCAicSIsICJxdWVyeSIsICJRdWVyeVJvdyIsICJtIiwgIk11dGF0aW9uUm93IiwgIl92JDEyIiwgIl92JDEzIiwgIl92JDE0IiwgIl92JDE1IiwgIl92JDE2IiwgIl92JDE3IiwgIl92JDE4IiwgIl92JDE5IiwgIl92JDIwIiwgIl92JDIxIiwgIl92JDIyIiwgIl92JDIzIiwgIl92JDI0IiwgIl92JDI1IiwgIlF1ZXJ5RGV0YWlscyIsICJNdXRhdGlvbkRldGFpbHMiLCAiYWxwaGEiLCAicXVlcnlTdGF0ZSIsICJpc1N0YWxlIiwgIm9ic2VydmVycyIsICJnZXRRdWVyeVN0YXR1c0NvbG9yIiwgImdldE9ic2VydmVyQ291bnRDb2xvclN0eWxlcyIsICJfdiQyNiIsICJfdiQyNyIsICJfdiQyOCIsICJtdXRhdGlvblN0YXRlIiwgInN0YXR1cyIsICJnZXRNdXRhdGlvblN0YXR1c0NvbG9yIiwgIl92JDI5IiwgIl92JDMwIiwgIl92JDMxIiwgInN0YWxlIiwgImdldFF1ZXJ5U3RhdHVzTGFiZWwiLCAiZnJlc2giLCAiZmV0Y2hpbmciLCAicGF1c2VkIiwgImluYWN0aXZlIiwgIlF1ZXJ5U3RhdHVzIiwgInN1Y2Nlc3MiLCAicGVuZGluZyIsICJ0YWdSZWYiLCAibW91c2VPdmVyIiwgInNldE1vdXNlT3ZlciIsICJmb2N1c2VkIiwgInNob3dMYWJlbCIsICJfcmVmJDUiLCAic3ByZWFkIiwgIl92JDMyIiwgIl92JDMzIiwgInJlc3RvcmluZ0xvYWRpbmciLCAic2V0UmVzdG9yaW5nTG9hZGluZyIsICJkYXRhTW9kZSIsICJzZXREYXRhTW9kZSIsICJkYXRhRWRpdEVycm9yIiwgInNldERhdGFFZGl0RXJyb3IiLCAiZXJyb3JUeXBlcyIsICJhY3RpdmVRdWVyeSIsICJhY3RpdmVRdWVyeUZyZXNoIiwgImFjdGl2ZVF1ZXJ5U3RhdGUiLCAiYWN0aXZlUXVlcnlTdGF0ZURhdGEiLCAic3RhdHVzTGFiZWwiLCAicXVlcnlTdGF0dXMiLCAib2JzZXJ2ZXJDb3VudCIsICJnZXRRdWVyeVN0YXR1c0NvbG9yQnlMYWJlbCIsICJoYW5kbGVSZWZldGNoIiwgInRyaWdnZXJFcnJvciIsICJlcnJvclR5cGUiLCAiX19wcmV2aW91c1F1ZXJ5T3B0aW9ucyIsICJyZXN0b3JlUXVlcnlBZnRlckxvYWRpbmdPckVycm9yIiwgImFjdGl2ZVF1ZXJ5VmFsIiwgInByZXZpb3VzU3RhdGUiLCAicHJldmlvdXNPcHRpb25zIiwgImdldFF1ZXJ5U3RhdHVzQ29sb3JzIiwgIl92JDM0IiwgIl92JDM1IiwgIl92JDM2IiwgImV0IiwgIkZvciIsICJfdiQzNyIsICJfdiQzOCIsICJfdiQzOSIsICJfJHAiLCAicGFyc2VkRGF0YSIsICJfdiQ0MCIsICJfdiQ0MSIsICJfdiQ0MiIsICJfdiQ0MyIsICJfdiQ0NCIsICJfdiQ0NSIsICJfdiQ0NiIsICJfdiQ0NyIsICJfdiQ0OCIsICJfdiQ0OSIsICJfdiQ1MCIsICJfdiQ1MSIsICJfdiQ1MiIsICJfdiQ1MyIsICJfdiQ1NCIsICJfdiQ1NSIsICJfdiQ1NiIsICJfdiQ1NyIsICJfdiQ1OCIsICJfdiQ1OSIsICJfdiQ2MCIsICJfdiQ2MSIsICJfdiQ2MiIsICJfdiQ2MyIsICJfdiQ2NCIsICJfdiQ2NSIsICJfdiQ2NiIsICJfdiQ2NyIsICJfdiQ2OCIsICJfdiQ2OSIsICJfdiQ3MCIsICJfdiQ3MSIsICJhY3RpdmVNdXRhdGlvbiIsICJfZWwkMTIyIiwgIl9lbCQxMjMiLCAiX2VsJDEyNCIsICJfZWwkMTI1IiwgIl9lbCQxMjYiLCAiX2VsJDEyNyIsICJfdiQ3MiIsICJfdiQ3MyIsICJfdiQ3NCIsICJfdiQ3NSIsICJfdiQ3NiIsICJfdiQ3NyIsICJfdiQ3OCIsICJfdiQ3OSIsICJfdiQ4MCIsICJfdiQ4MSIsICJfdiQ4MiIsICJfdiQ4MyIsICJxdWVyeUNhY2hlTWFwIiwgImJhdGNoIiwgImVxdWFsaXR5Q2hlY2siLCAic2hvdWxkVXBkYXRlIiwgIm11dGF0aW9uQ2FjaGVNYXAiLCAic3R5bGVzRmFjdG9yeTIiLCAic2hhZG93Il0KfQo=
|