demio-ui 1.0.73 → 1.0.74

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/cjs/index.js CHANGED
@@ -3,5 +3,5 @@
3
3
  Copyright (c) 2018 Jed Watson.
4
4
  Licensed under the MIT License (MIT), see
5
5
  http://jedwatson.github.io/classnames
6
- */Tt=Mt,function(){var e={}.hasOwnProperty;function t(){for(var n=[],r=0;r<arguments.length;r++){var o=arguments[r];if(o){var a=typeof o;if("string"===a||"number"===a)n.push(o);else if(Array.isArray(o)){if(o.length){var l=t.apply(null,o);l&&n.push(l)}}else if("object"===a){if(o.toString!==Object.prototype.toString&&!o.toString.toString().includes("[native code]")){n.push(o.toString());continue}for(var i in o)e.call(o,i)&&o[i]&&n.push(i)}}}return n.join(" ")}Tt.exports?(t.default=t,Tt.exports=t):window.classNames=t}();var It,Lt,Nt=Pt(Mt.exports);function jt(){return jt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},jt.apply(this,arguments)}var Ht=function(e){return r.createElement("svg",jt({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"close_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},It||(It=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Lt||(Lt=r.createElement("g",{mask:"url(#close_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m12 13.054-5.073 5.073a.724.724 0 0 1-.522.212.707.707 0 0 1-.532-.212.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527L10.946 12 5.873 6.927a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.532.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 10.946l5.073-5.073a.724.724 0 0 1 .522-.212.707.707 0 0 1 .532.212c.145.145.217.32.217.527a.717.717 0 0 1-.217.527L13.054 12l5.073 5.073c.138.139.21.313.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.217L12 13.054Z"}))))},Zt={overlay:"Alert-modules_overlay__4XRHj","overlay-show":"Alert-modules_overlay-show__rdwHo",close:"Alert-modules_close__dyL0l",content:"Alert-modules_content__Y7nMS","content-show":"Alert-modules_content-show__ncLtG",title:"Alert-modules_title__e8UHT",description:"Alert-modules_description__wyWR-",buttons:"Alert-modules_buttons__cOEDw"},Ft={button:"Button-modules_button__tpJr3",secondary:"Button-modules_secondary__JGOIF",outline:"Button-modules_outline__R9gjd",danger:"Button-modules_danger__eTzli",small:"Button-modules_small__dNTOw",large:"Button-modules_large__5tvgy",prefix:"Button-modules_prefix__86hpR",suffix:"Button-modules_suffix__5uHiO",fullWidth:"Button-modules_fullWidth__3ET8J"},Vt={loader:"Loader-modules_loader__waPdv",rotate:"Loader-modules_rotate__vBNW3",spin:"Loader-modules_spin__i7TnV",small:"Loader-modules_small__ACDdJ",inheritColor:"Loader-modules_inheritColor__4aWvb"};function Bt(t){var n,r=t.size,o=void 0===r?"medium":r,a=t.className,l=void 0===a?"":a,i=t.inheritColor,c=void 0!==i&&i;return e.createElement("span",{className:Nt("demio-ui-loader",Vt.loader,(n={},n[Vt[o]]=o,n[Vt.inheritColor]=c,n[l]=l,n))})}var Ut=e.forwardRef((function(t,n){var r,o=t.disabled,a=void 0!==o&&o,l=t.children,i=t.onClick,c=t.size,s=void 0===c?"medium":c,u=t.variant,d=void 0===u?"primary":u,f=t.type,p=void 0===f?"button":f,m=t.prefix,v=void 0===m?"":m,h=t.suffix,g=void 0===h?"":h,w=t.className,y=void 0===w?"":w,b=t.fullWidth,E=void 0!==b&&b,_=t.showLoader,x=void 0!==_&&_,C=G(t,["disabled","children","onClick","size","variant","type","prefix","suffix","className","fullWidth","showLoader"]);return e.createElement("button",q({ref:n,type:p,disabled:a,className:Nt("demio-ui-button",Ft.button,(r={},r[y]=y,r[Ft[s]]=s,r[Ft[d]]=d,r[Ft.fullWidth]=E,r)),onClick:i},C),(v||x)&&e.createElement("span",{className:Ft.prefix},x?e.createElement(Bt,{size:"small",inheritColor:!0}):v),l,g&&e.createElement("span",{className:Ft.suffix},g))}));function zt(t){const n=e.useRef({value:t,previous:t});return e.useMemo((()=>(n.current.value!==t&&(n.current.previous=n.current.value,n.current.value=t),n.current.previous)),[t])}function Wt(t){const[n,r]=e.useState(void 0);return d((()=>{if(t){r({width:t.offsetWidth,height:t.offsetHeight});const e=new ResizeObserver((e=>{if(!Array.isArray(e))return;if(!e.length)return;const n=e[0];let o,a;if("borderBoxSize"in n){const e=n.borderBoxSize,t=Array.isArray(e)?e[0]:e;o=t.inlineSize,a=t.blockSize}else o=t.offsetWidth,a=t.offsetHeight;r({width:o,height:a})}));return e.observe(t,{box:"border-box"}),()=>e.unobserve(t)}r(void 0)}),[t]),n}const Kt="Checkbox",[qt,Gt]=l(Kt),[$t,Xt]=qt(Kt),Yt=e.forwardRef(((t,n)=>{const{__scopeCheckbox:r,name:o,checked:l,defaultChecked:i,required:c,disabled:d,value:f="on",onCheckedChange:p,...m}=t,[v,g]=e.useState(null),w=s(n,(e=>g(e))),y=e.useRef(!1),b=!v||Boolean(v.closest("form")),[E=!1,x]=h({prop:l,defaultProp:i,onChange:p}),C=e.useRef(E);return e.useEffect((()=>{const e=null==v?void 0:v.form;if(e){const t=()=>x(C.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}}),[v,x]),e.createElement($t,{scope:r,state:E,disabled:d},e.createElement(_.button,a({type:"button",role:"checkbox","aria-checked":Qt(E)?"mixed":E,"aria-required":c,"data-state":en(E),"data-disabled":d?"":void 0,disabled:d,value:f},m,{ref:w,onKeyDown:u(t.onKeyDown,(e=>{"Enter"===e.key&&e.preventDefault()})),onClick:u(t.onClick,(e=>{x((e=>!!Qt(e)||!e)),b&&(y.current=e.isPropagationStopped(),y.current||e.stopPropagation())}))})),b&&e.createElement(Jt,{control:v,bubbles:!y.current,name:o,value:f,checked:E,required:c,disabled:d,style:{transform:"translateX(-100%)"}}))})),Jt=t=>{const{control:n,checked:r,bubbles:o=!0,...l}=t,i=e.useRef(null),c=zt(r),s=Wt(n);return e.useEffect((()=>{const e=i.current,t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,"checked").set;if(c!==r&&n){const t=new Event("click",{bubbles:o});e.indeterminate=Qt(r),n.call(e,!Qt(r)&&r),e.dispatchEvent(t)}}),[c,r,o]),e.createElement("input",a({type:"checkbox","aria-hidden":!0,defaultChecked:!Qt(r)&&r},l,{tabIndex:-1,ref:i,style:{...t.style,...s,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function Qt(e){return"indeterminate"===e}function en(e){return Qt(e)?"indeterminate":e?"checked":"unchecked"}const tn=Yt,nn=e.forwardRef(((t,n)=>{const{__scopeCheckbox:r,forceMount:o,...l}=t,i=Xt("CheckboxIndicator",r);return e.createElement(B,{present:o||Qt(i.state)||!0===i.state},e.createElement(_.span,a({"data-state":en(i.state),"data-disabled":i.disabled?"":void 0},l,{ref:n,style:{pointerEvents:"none",...t.style}})))}));var rn,on,an="Checkbox-modules_container__psQsQ",ln="Checkbox-modules_root__iysyc",cn="Checkbox-modules_uncheckIcon__fVOb2",sn="Checkbox-modules_indicator__JaSwR",un="Checkbox-modules_label__4TV-f",dn="Checkbox-modules_disabled__eKbuP";function fn(){return fn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},fn.apply(this,arguments)}var pn,mn;function vn(){return vn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},vn.apply(this,arguments)}var hn,gn,wn=function(e){return r.createElement("svg",vn({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"keyboard_arrow_down_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},pn||(pn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),mn||(mn=r.createElement("g",{mask:"url(#keyboard_arrow_down_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 14.677a.93.93 0 0 1-.34-.066.84.84 0 0 1-.293-.19L6.873 9.927a.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 12.946l4.073-4.073a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217.145.145.217.32.217.527a.717.717 0 0 1-.217.527l-4.494 4.494a.83.83 0 0 1-.633.256Z"}))))};function yn(){return yn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yn.apply(this,arguments)}var bn,En;function _n(){return _n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_n.apply(this,arguments)}var xn,Cn;function On(){return On=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},On.apply(this,arguments)}var kn,An;function Dn(){return Dn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Dn.apply(this,arguments)}var Sn,Rn;function Pn(){return Pn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Pn.apply(this,arguments)}var Tn,Mn;function In(){return In=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},In.apply(this,arguments)}var Ln,Nn,jn=function(e){return r.createElement("svg",In({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"checkbox_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Tn||(Tn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Mn||(Mn=r.createElement("g",{mask:"url(#checkbox_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"m10.6 13.4-2.15-2.15a.948.948 0 0 0-.7-.275.948.948 0 0 0-.7.275.948.948 0 0 0-.275.7c0 .283.092.517.275.7L9.9 15.5c.2.2.433.3.7.3.267 0 .5-.1.7-.3l5.65-5.65a.948.948 0 0 0 .275-.7.948.948 0 0 0-.275-.7.948.948 0 0 0-.7-.275.948.948 0 0 0-.7.275L10.6 13.4ZM5 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 19V5c0-.55.196-1.02.587-1.413A1.926 1.926 0 0 1 5 3h14c.55 0 1.02.196 1.413.587C20.803 3.98 21 4.45 21 5v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 21H5Z"}))))};function Hn(){return Hn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Hn.apply(this,arguments)}var Zn,Fn,Vn=function(e){return r.createElement("svg",Hn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"checkbox_uncheck_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ln||(Ln=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Nn||(Nn=r.createElement("g",{mask:"url(#checkbox_uncheck_svg__a)"},r.createElement("path",{fill:"#838B97",d:"M5 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 19V5c0-.55.196-1.02.587-1.413A1.926 1.926 0 0 1 5 3h14c.55 0 1.02.196 1.413.587C20.803 3.98 21 4.45 21 5v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 21H5Zm0-2h14V5H5v14Z"}))))};function Bn(){return Bn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Bn.apply(this,arguments)}var Un,zn;function Wn(){return Wn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Wn.apply(this,arguments)}var Kn,qn;function Gn(){return Gn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Gn.apply(this,arguments)}var $n,Xn;function Yn(){return Yn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Yn.apply(this,arguments)}var Jn,Qn;function er(){return er=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},er.apply(this,arguments)}var tr,nr;function rr(){return rr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},rr.apply(this,arguments)}var or,ar;function lr(){return lr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},lr.apply(this,arguments)}var ir,cr;function sr(){return sr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},sr.apply(this,arguments)}var ur;function dr(){return dr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},dr.apply(this,arguments)}var fr,pr;function mr(){return mr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},mr.apply(this,arguments)}var vr,hr;function gr(){return gr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},gr.apply(this,arguments)}var wr,yr;function br(){return br=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},br.apply(this,arguments)}var Er,_r;function xr(){return xr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},xr.apply(this,arguments)}var Cr,Or;function kr(){return kr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},kr.apply(this,arguments)}var Ar;function Dr(){return Dr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Dr.apply(this,arguments)}var Sr,Rr=function(e){return r.createElement("svg",Dr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 22 16"},e),Ar||(Ar=r.createElement("path",{fill:"#838B97",d:"M11 2.335a9.77 9.77 0 0 1 8.82 5.5 9.76 9.76 0 0 1-8.82 5.5 9.76 9.76 0 0 1-8.82-5.5 9.77 9.77 0 0 1 8.82-5.5zm0-2c-5 0-9.27 3.11-11 7.5 1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zm0 5a2.5 2.5 0 0 1 0 5 2.5 2.5 0 0 1 0-5zm0-2c-2.48 0-4.5 2.02-4.5 4.5s2.02 4.5 4.5 4.5 4.5-2.02 4.5-4.5-2.02-4.5-4.5-4.5z"})))};function Pr(){return Pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Pr.apply(this,arguments)}var Tr,Mr=function(e){return r.createElement("svg",Pr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 20"},e),Sr||(Sr=r.createElement("path",{fill:"#838B97",d:"M23.775 17.898 1.35.367A.6.6 0 0 0 .507.46L.132.93a.6.6 0 0 0 .093.844l22.425 17.53a.6.6 0 0 0 .843-.093l.375-.468a.6.6 0 0 0-.093-.844zM11.13 5.728l5.054 3.952a4.189 4.189 0 0 0-5.055-3.952zm1.74 8.215L7.816 9.99a4.19 4.19 0 0 0 5.054 3.952zM12 4.435c3.7 0 7.09 2.063 8.922 5.4a10.71 10.71 0 0 1-1.65 2.258l1.416 1.106a12.518 12.518 0 0 0 1.983-2.817 1.214 1.214 0 0 0 0-1.094C20.636 5.32 16.61 2.635 12 2.635c-1.376 0-2.69.263-3.924.706l1.74 1.36A9.843 9.843 0 0 1 12 4.435zm0 10.8c-3.7 0-7.09-2.062-8.922-5.4.45-.821 1.004-1.58 1.651-2.257L3.314 6.472a12.51 12.51 0 0 0-1.983 2.816 1.213 1.213 0 0 0 0 1.095C3.364 14.35 7.39 17.035 12 17.035c1.376 0 2.689-.264 3.924-.705l-1.74-1.36a9.86 9.86 0 0 1-2.184.265z"})))};function Ir(){return Ir=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ir.apply(this,arguments)}var Lr;function Nr(){return Nr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Nr.apply(this,arguments)}var jr,Hr;function Zr(){return Zr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Zr.apply(this,arguments)}var Fr,Vr;function Br(){return Br=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Br.apply(this,arguments)}var Ur,zr;function Wr(){return Wr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Wr.apply(this,arguments)}var Kr,qr;function Gr(){return Gr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Gr.apply(this,arguments)}var $r,Xr;function Yr(){return Yr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Yr.apply(this,arguments)}var Jr,Qr;function eo(){return eo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},eo.apply(this,arguments)}var to,no;function ro(){return ro=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ro.apply(this,arguments)}var oo,ao;function lo(){return lo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},lo.apply(this,arguments)}var io,co;function so(){return so=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},so.apply(this,arguments)}var uo,fo;function po(){return po=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},po.apply(this,arguments)}var mo,vo;function ho(){return ho=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ho.apply(this,arguments)}var go,wo;function yo(){return yo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yo.apply(this,arguments)}var bo=Object.freeze({__proto__:null,AddIcon:function(e){return r.createElement("svg",fn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"add_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},rn||(rn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),on||(on=r.createElement("g",{mask:"url(#add_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 18.75a.725.725 0 0 1-.535-.216.726.726 0 0 1-.215-.534v-5.25H6a.726.726 0 0 1-.534-.216A.726.726 0 0 1 5.25 12c0-.213.072-.391.216-.535A.726.726 0 0 1 6 11.25h5.25V6c0-.213.072-.39.216-.534A.726.726 0 0 1 12 5.25c.213 0 .391.072.535.216A.726.726 0 0 1 12.75 6v5.25H18c.212 0 .39.072.534.216a.726.726 0 0 1 .216.534c0 .213-.072.391-.216.535a.726.726 0 0 1-.534.215h-5.25V18c0 .212-.072.39-.216.534a.726.726 0 0 1-.534.216Z"}))))},ArrowDownIcon:wn,ArrowLeftIcon:function(e){return r.createElement("svg",yn({xmlns:"http://www.w3.org/2000/svg",width:18,height:18,fill:"none"},e),hn||(hn=r.createElement("g",{clipPath:"url(#arrow-left_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m9.207 16.57.696-.697a.422.422 0 0 0 0-.596L4.45 9.823h12.003a.422.422 0 0 0 .422-.422v-.984a.422.422 0 0 0-.422-.422H4.45l5.453-5.454a.422.422 0 0 0 0-.596l-.696-.696a.422.422 0 0 0-.596 0L1.249 8.61a.422.422 0 0 0 0 .596L8.61 16.57a.422.422 0 0 0 .596 0Z"}))),gn||(gn=r.createElement("defs",null,r.createElement("clipPath",{id:"arrow-left_svg__a"},r.createElement("path",{fill:"#fff",d:"M0 0h18v18H0z"})))))},BlockIcon:function(e){return r.createElement("svg",_n({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"block_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},bn||(bn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),En||(En=r.createElement("g",{mask:"url(#block_svg__a)"},r.createElement("path",{fill:"#42454B",d:"M12.002 21.5a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-.938-.16-1.842-.48-2.71a8.124 8.124 0 0 0-1.374-2.382L6.908 18.146a7.93 7.93 0 0 0 2.382 1.378A7.839 7.839 0 0 0 12 20Zm-6.146-2.908L17.092 5.854a7.62 7.62 0 0 0-2.375-1.383A7.947 7.947 0 0 0 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 .938.159 1.842.476 2.71a7.93 7.93 0 0 0 1.378 2.382Z"}))))},BlurOnIcon:function(e){return r.createElement("svg",On({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"blur_on_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},xn||(xn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Cn||(Cn=r.createElement("g",{mask:"url(#blur_on_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M3 14.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm3 8.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 17.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658A.893.893 0 0 1 6 13.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265A.893.893 0 0 1 5.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 6 5.077c.262 0 .48.088.658.265A.893.893 0 0 1 6.923 6c0 .262-.088.48-.265.658A.893.893 0 0 1 6 6.923Zm4.002 8.423c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM10 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265A.893.893 0 0 1 9.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 10 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM10 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4.002 11.846c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM14 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 14 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM14 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4 15.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 5.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm3 7.577a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Z"}))))},CachedIcon:function(e){return r.createElement("svg",Dn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"cached_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},kn||(kn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),An||(An=r.createElement("g",{mask:"url(#cached_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12.05 19.75c-2.163 0-4.004-.753-5.522-2.258C5.009 15.987 4.25 14.156 4.25 12v-.78l-1.323 1.322a.725.725 0 0 1-.522.213.707.707 0 0 1-.532-.213.718.718 0 0 1-.217-.527c0-.206.072-.382.217-.527l2.494-2.494A.867.867 0 0 1 5 8.724c.241 0 .452.09.633.27l2.494 2.495c.138.138.21.312.212.521a.707.707 0 0 1-.212.532.718.718 0 0 1-.527.218.718.718 0 0 1-.527-.218L5.75 11.22V12c0 1.737.612 3.213 1.835 4.428 1.223 1.215 2.711 1.822 4.465 1.822.292 0 .584-.02.874-.06.29-.04.577-.107.859-.204a.879.879 0 0 1 .603.02.81.81 0 0 1 .426.396.678.678 0 0 1 .018.585.664.664 0 0 1-.444.388c-.376.133-.762.23-1.155.288a8.049 8.049 0 0 1-1.181.087Zm-.1-14c-.292 0-.584.02-.874.06-.29.04-.577.107-.859.203a.901.901 0 0 1-.61-.02.808.808 0 0 1-.434-.395.655.655 0 0 1-.023-.57.646.646 0 0 1 .423-.388c.387-.133.78-.231 1.176-.295a7.593 7.593 0 0 1 1.201-.095c2.163 0 4.004.753 5.522 2.258C18.991 8.013 19.75 9.844 19.75 12v.78l1.323-1.322a.725.725 0 0 1 .522-.213.707.707 0 0 1 .532.213c.145.144.217.32.217.527a.717.717 0 0 1-.217.527l-2.494 2.494a.867.867 0 0 1-.633.27.867.867 0 0 1-.633-.27l-2.494-2.495a.724.724 0 0 1-.212-.522.707.707 0 0 1 .212-.531.717.717 0 0 1 .527-.218c.206 0 .382.073.527.218l1.323 1.323V12c0-1.737-.611-3.213-1.835-4.428-1.223-1.215-2.711-1.822-4.465-1.822Z"}))))},CalendarIcon:function(e){return r.createElement("svg",Pn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 32 32"},e),r.createElement("mask",{id:"calendar_svg__a",width:32,height:32,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Sn||(Sn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h32v32H0z"}))),Rn||(Rn=r.createElement("g",{mask:"url(#calendar_svg__a)"},r.createElement("path",{fill:"#11B06E",d:"M6.667 29.333a2.568 2.568 0 0 1-1.884-.783A2.568 2.568 0 0 1 4 26.666V8c0-.734.261-1.361.783-1.883a2.568 2.568 0 0 1 1.884-.784H8V4c0-.378.128-.695.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.127.95.383.256.255.384.572.384.95v1.333h10.666V4c0-.378.128-.695.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.127.95.383.255.255.383.572.383.95v1.333h1.333c.734 0 1.361.261 1.884.784.522.522.783 1.15.783 1.883v18.666c0 .734-.261 1.362-.783 1.884a2.568 2.568 0 0 1-1.884.783H6.667Zm0-2.666h18.666V13.332H6.667v13.333Zm9.333-8a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.378.127-.694.383-.95A1.29 1.29 0 0 1 16 16c.378 0 .694.128.95.383.256.256.383.572.383.95s-.127.695-.383.95a1.29 1.29 0 0 1-.95.383Zm-5.333 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.384-.95c0-.378.128-.694.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.128.95.383.255.256.383.572.383.95s-.128.695-.383.95a1.29 1.29 0 0 1-.95.383Zm10.666 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.378.128-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.128.95.383.256.256.384.572.384.95s-.128.695-.384.95a1.29 1.29 0 0 1-.95.383ZM16 24a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.377.127-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .694.128.95.384.256.255.383.572.383.95 0 .377-.127.694-.383.95A1.29 1.29 0 0 1 16 24Zm-5.333 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.384-.95c0-.377.128-.694.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.128.95.384.255.255.383.572.383.95 0 .377-.128.694-.383.95a1.29 1.29 0 0 1-.95.383Zm10.666 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.377.128-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.128.95.384.256.255.384.572.384.95 0 .377-.128.694-.384.95a1.29 1.29 0 0 1-.95.383Z"}))))},CheckCircleIcon:function(e){return r.createElement("svg",Bn({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"check_circle_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Zn||(Zn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Fn||(Fn=r.createElement("g",{mask:"url(#check_circle_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m10.58 14.146-2.322-2.323a.724.724 0 0 0-.522-.212.707.707 0 0 0-.532.212.717.717 0 0 0-.217.527c0 .206.072.382.217.527l2.744 2.744a.87.87 0 0 0 .633.271c.24 0 .452-.09.632-.27l5.564-5.564a.725.725 0 0 0 .212-.522.707.707 0 0 0-.212-.532.718.718 0 0 0-.527-.217.717.717 0 0 0-.527.217l-5.142 5.142Zm1.422 7.354a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749Z"}))))},CheckboxIcon:jn,CheckboxUncheckIcon:Vn,ClockIcon:function(e){return r.createElement("svg",Wn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"clock_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Un||(Un=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),zn||(zn=r.createElement("g",{mask:"url(#clock_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"M13 11.6V8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8v3.975c0 .133.025.263.075.388.05.125.125.237.225.337l3.3 3.3a.948.948 0 0 0 .7.275A.948.948 0 0 0 16 16a.948.948 0 0 0 .275-.7.948.948 0 0 0-.275-.7l-3-3ZM12 22a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12c0-1.383.263-2.683.788-3.9a10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2c1.383 0 2.683.263 3.9.788a10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Zm0-2c2.217 0 4.104-.78 5.663-2.337C19.22 16.104 20 14.217 20 12s-.78-4.104-2.337-5.662C16.104 4.779 14.217 4 12 4s-4.104.78-5.662 2.338C4.779 7.896 4 9.783 4 12s.78 4.104 2.338 5.663C7.896 19.22 9.783 20 12 20Z"}))))},CloseIcon:Ht,CustomizeIcon:function(e){return r.createElement("svg",Gn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"customize_svg__a",width:25,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Kn||(Kn=r.createElement("path",{fill:"#D9D9D9",d:"M.5 0h24v24H.5z"}))),qn||(qn=r.createElement("g",{mask:"url(#customize_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"M14.5 21a.968.968 0 0 1-.713-.288A.968.968 0 0 1 13.5 20c0-.283.096-.52.287-.712A.968.968 0 0 1 14.5 19c.783 0 1.48-.154 2.087-.462.609-.309.913-.655.913-1.038 0-.233-.108-.45-.325-.65-.217-.2-.517-.383-.9-.55l1.475-1.475c.533.317.958.692 1.275 1.125.317.433.475.95.475 1.55 0 1.1-.525 1.958-1.575 2.575A6.644 6.644 0 0 1 14.5 21Zm-9.425-7.65c-.483-.283-.867-.612-1.15-.987-.283-.375-.425-.83-.425-1.363 0-.7.258-1.287.775-1.762.517-.476 1.442-1.005 2.775-1.588 1.05-.483 1.72-.82 2.013-1.013.291-.191.437-.404.437-.637 0-.267-.162-.5-.488-.7C8.688 5.1 8.183 5 7.5 5c-.417 0-.767.05-1.05.15-.283.1-.542.267-.775.5A1.124 1.124 0 0 1 5 5.975a.908.908 0 0 1-.725-.225.938.938 0 0 1-.375-.65.908.908 0 0 1 .225-.725c.317-.383.77-.708 1.362-.975C6.08 3.133 6.75 3 7.5 3c1.2 0 2.167.27 2.9.813.733.541 1.1 1.27 1.1 2.187 0 .65-.242 1.233-.725 1.75-.483.517-1.458 1.092-2.925 1.725-.967.417-1.6.725-1.9.925-.3.2-.45.4-.45.6 0 .15.096.296.287.438.192.141.455.279.788.412l-1.5 1.5ZM19.35 10.4 15.1 6.15l1.05-1.05c.4-.4.88-.6 1.438-.6.558 0 1.029.2 1.412.6l1.4 1.4c.4.383.6.854.6 1.412 0 .559-.2 1.038-.6 1.438l-1.05 1.05ZM6.5 19h1.4l7.2-7.2-1.4-1.4-7.2 7.2V19ZM5 21a.48.48 0 0 1-.35-.15.48.48 0 0 1-.15-.35v-3.55c0-.033.05-.15.15-.35l9.05-9.05 4.25 4.25-9.05 9.05c-.033.033-.15.083-.35.15H5Z"}))))},DeleteIcon:function(e){return r.createElement("svg",Yn({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"delete_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},$n||($n=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Xn||(Xn=r.createElement("g",{mask:"url(#delete_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M7.308 20.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6h-.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535.73.73 0 0 1 .215-.535.726.726 0 0 1 .535-.215H9a.84.84 0 0 1 .263-.63.889.889 0 0 1 .64-.255h4.193c.251 0 .465.085.64.254A.84.84 0 0 1 15 4.5h3.75a.73.73 0 0 1 .535.215.726.726 0 0 1 .215.535.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215h-.25v12.692c0 .506-.175.933-.525 1.283-.35.35-.778.525-1.283.525H7.308ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087h9.385a.3.3 0 0 0 .221-.087.3.3 0 0 0 .087-.22V6H7Zm2.404 10.25a.73.73 0 0 0 .215.535.726.726 0 0 0 .535.215.726.726 0 0 0 .534-.215.726.726 0 0 0 .216-.535v-7.5a.726.726 0 0 0-.216-.535.726.726 0 0 0-.534-.215.726.726 0 0 0-.535.215.726.726 0 0 0-.215.535v7.5Zm3.692 0c0 .213.072.391.216.535a.726.726 0 0 0 .534.215.726.726 0 0 0 .535-.215.726.726 0 0 0 .215-.535v-7.5a.726.726 0 0 0-.215-.535.726.726 0 0 0-.535-.215.726.726 0 0 0-.534.215.726.726 0 0 0-.216.535v7.5ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087H7V6Z"}))))},EventDetailsIcon:function(e){return r.createElement("svg",er({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 32 32"},e),r.createElement("mask",{id:"event_details_svg__a",width:32,height:32,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Jn||(Jn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h32v32H0z"}))),Qn||(Qn=r.createElement("g",{mask:"url(#event_details_svg__a)"},r.createElement("path",{fill:"#11B06E",d:"M5.333 26.667a2.568 2.568 0 0 1-1.883-.784A2.568 2.568 0 0 1 2.667 24V8c0-.733.26-1.361.783-1.883a2.568 2.568 0 0 1 1.883-.784h21.334c.733 0 1.36.261 1.883.784.522.522.783 1.15.783 1.883v16c0 .733-.26 1.361-.783 1.883a2.568 2.568 0 0 1-1.883.784H5.333Zm0-2.667h21.334V8H5.333v16ZM8 22.667h16c.378 0 .694-.128.95-.384a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95A1.29 1.29 0 0 0 24 20H8a1.29 1.29 0 0 0-.95.383 1.29 1.29 0 0 0-.383.95c0 .378.127.695.383.95.256.256.572.384.95.384Zm0-5.334h16c.378 0 .694-.127.95-.383a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95 1.29 1.29 0 0 0-.95-.383H8a1.29 1.29 0 0 0-.95.383 1.29 1.29 0 0 0-.383.95c0 .378.127.694.383.95s.572.383.95.383ZM8 12h10.667c.377 0 .694-.128.95-.383a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95 1.29 1.29 0 0 0-.95-.384H8a1.29 1.29 0 0 0-.95.384 1.29 1.29 0 0 0-.383.95c0 .377.127.694.383.95.256.255.572.383.95.383Z"}))))},EventRepeatIcon:function(e){return r.createElement("svg",rr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"event_repeat_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},tr||(tr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),nr||(nr=r.createElement("g",{mask:"url(#event_repeat_svg__a)"},r.createElement("path",{fill:"#6C737A",d:"M5 22c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 20V6c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 5 4h1V3c0-.283.096-.52.287-.712A.968.968 0 0 1 7 2c.283 0 .52.096.713.288.191.191.287.429.287.712v1h8V3c0-.283.096-.52.288-.712A.968.968 0 0 1 17 2c.283 0 .52.096.712.288.192.191.288.429.288.712v1h1c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v5c0 .283-.096.52-.288.713A.968.968 0 0 1 20 12a.968.968 0 0 1-.712-.287A.968.968 0 0 1 19 11v-1H5v10h6c.283 0 .52.096.713.288.191.191.287.429.287.712s-.096.52-.287.712A.968.968 0 0 1 11 22H5Zm14 2c-1.067 0-2.02-.296-2.863-.887a4.949 4.949 0 0 1-1.812-2.313.508.508 0 0 1 .063-.538.574.574 0 0 1 .487-.262c.233 0 .446.07.637.212.192.142.346.321.463.538a3.4 3.4 0 0 0 1.25 1.275A3.41 3.41 0 0 0 19 22.5c.967 0 1.792-.342 2.475-1.025A3.372 3.372 0 0 0 22.5 19c0-.967-.342-1.792-1.025-2.475A3.372 3.372 0 0 0 19 15.5a3.404 3.404 0 0 0-2.45 1h.7a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H15a.968.968 0 0 1-.713-.288A.968.968 0 0 1 14 17v-2.25a.728.728 0 0 1 .75-.75.728.728 0 0 1 .75.75v.675c.45-.433.975-.78 1.575-1.038A4.816 4.816 0 0 1 19 14c1.383 0 2.563.488 3.538 1.463C23.512 16.438 24 17.617 24 19s-.488 2.563-1.462 3.538C21.562 23.512 20.383 24 19 24ZM5 8h14V6H5v2Z"}))))},InfoIcon:function(e){return r.createElement("svg",lr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"info_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},or||(or=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ar||(ar=r.createElement("g",{mask:"url(#info_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 16.75a.726.726 0 0 0 .535-.216.726.726 0 0 0 .215-.534v-4.25a.726.726 0 0 0-.216-.534A.727.727 0 0 0 12 11a.725.725 0 0 0-.535.216.726.726 0 0 0-.215.534V16c0 .212.072.39.216.534a.726.726 0 0 0 .534.216Zm0-7.462a.78.78 0 0 0 .575-.232.781.781 0 0 0 .233-.575.782.782 0 0 0-.232-.576.782.782 0 0 0-.576-.232.781.781 0 0 0-.575.232.782.782 0 0 0-.233.576c0 .229.078.42.232.575a.781.781 0 0 0 .576.232Zm.002 12.212a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-2.233-.775-4.125-2.325-5.675C16.125 4.775 14.233 4 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 2.233.775 4.125 2.325 5.675C7.875 19.225 9.767 20 12 20Z"}))))},InfoSolidIcon:function(e){return r.createElement("svg",sr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"info-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ir||(ir=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),cr||(cr=r.createElement("g",{mask:"url(#info-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 17a.97.97 0 0 0 .713-.288A.968.968 0 0 0 13 16v-4a.968.968 0 0 0-.287-.713A.968.968 0 0 0 12 11a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 12v4c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-8c.283 0 .52-.096.713-.287A.967.967 0 0 0 13 8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8c0 .283.096.52.287.713.192.191.43.287.713.287Zm0 13a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12a9.74 9.74 0 0 1 .788-3.9 10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2a9.74 9.74 0 0 1 3.9.788 10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Z"}))))},MagicIcon:function(e){return r.createElement("svg",dr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),ur||(ur=r.createElement("path",{fill:"#02BF6F",d:"M23.341 3.576 20.424.659A2.244 2.244 0 0 0 18.834 0c-.576 0-1.152.22-1.591.66L.659 17.241a2.25 2.25 0 0 0 0 3.182l2.917 2.917c.439.44 1.015.659 1.59.659.576 0 1.152-.22 1.592-.66L23.34 6.759c.879-.879.879-2.303 0-3.182ZM5.167 21.75 2.25 18.833 12.745 8.337l2.918 2.917L5.167 21.75ZM17.254 9.663l-2.918-2.918 4.495-4.495h.003l2.916 2.917-4.496 4.496ZM20.25 13.5 19 16l-2.5 1.25L19 18.5l1.25 2.5 1.25-2.5 2.5-1.25L21.5 16l-1.25-2.5Zm-9.75-9 .75-1.5 1.5-.75-1.5-.75L10.5 0l-.75 1.5-1.5.75 1.5.75.75 1.5Zm-6.75 3L5 5l2.5-1.25L5 2.5 3.75 0 2.5 2.5 0 3.75 2.5 5l1.25 2.5Z"})))},MaterialsIcon:function(e){return r.createElement("svg",mr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"materials_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},fr||(fr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),pr||(pr=r.createElement("g",{mask:"url(#materials_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"m10.825 17.425-2.55 1.6a.493.493 0 0 1-.513.013.46.46 0 0 1-.262-.438v-3.2c0-.2.088-.346.263-.438a.493.493 0 0 1 .512.013l2.55 1.6c.167.1.25.242.25.425a.47.47 0 0 1-.25.425ZM13 10a2.893 2.893 0 0 1-2.125-.875A2.893 2.893 0 0 1 10 7c0-.833.292-1.542.875-2.125A2.893 2.893 0 0 1 13 4h.5a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H13c-.417 0-.77.146-1.063.438A1.446 1.446 0 0 0 11.5 7c0 .417.146.77.438 1.063.291.291.645.437 1.062.437h.5a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H13Zm4 0h-.5a.728.728 0 0 1-.75-.75.728.728 0 0 1 .75-.75h.5c.417 0 .77-.146 1.063-.438.291-.291.437-.645.437-1.062 0-.417-.146-.77-.438-1.063A1.447 1.447 0 0 0 17 5.5h-.5a.728.728 0 0 1-.75-.75.728.728 0 0 1 .75-.75h.5c.833 0 1.542.292 2.125.875S20 6.167 20 7s-.292 1.542-.875 2.125A2.893 2.893 0 0 1 17 10Zm-.75-2.25h-2.5A.728.728 0 0 1 13 7a.728.728 0 0 1 .75-.75h2.5A.728.728 0 0 1 17 7a.728.728 0 0 1-.75.75ZM16.1 14v-2H21V3H9v9H7V3c0-.55.196-1.02.588-1.413A1.926 1.926 0 0 1 9 1h12c.55 0 1.02.196 1.413.587C22.803 1.98 23 2.45 23 3v9c0 .55-.196 1.02-.587 1.412A1.926 1.926 0 0 1 21 14h-4.9ZM3 23c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 1 21v-8c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 3 11h12c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v8c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 15 23H3Zm0-2h12v-8H3v8Z"}))))},MicOffIcon:function(e){return r.createElement("svg",gr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},vr||(vr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),hr||(hr=r.createElement("g",{mask:"url(#mic_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25-1.377-1.376V5a.967.967 0 0 0-.287-.713.968.968 0 0 0-.713-.287.968.968 0 0 0-.712.287.967.967 0 0 0-.288.713v2.535l-1.5-1.5V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.546c-1.511-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.593 6.593 0 0 1-1.65 1.128 5.849 5.849 0 0 1-1.987.554V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOffSolidIcon:function(e){return r.createElement("svg",br({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},wr||(wr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),yr||(yr=r.createElement("g",{mask:"url(#mic_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25L9.144 6.036V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.542c-1.511-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.432 6.432 0 0 1-1.65 1.12 6.3 6.3 0 0 1-1.987.566V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOnSolidIcon:function(e){return r.createElement("svg",kr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Cr||(Cr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Or||(Or=r.createElement("g",{mask:"url(#mic-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.542c-1.512-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.295 6.295 0 0 1-1.85 3.814c-1.058 1.057-2.343 1.673-3.854 1.848V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215Z"}))))},MicOnfIcon:function(e){return r.createElement("svg",xr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Er||(Er=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),_r||(_r=r.createElement("g",{mask:"url(#mic_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.546c-1.512-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.273 6.273 0 0 1-1.85 3.809c-1.058 1.054-2.343 1.67-3.854 1.849V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215ZM12 12c.283 0 .52-.096.712-.287A.968.968 0 0 0 13 11V5a.967.967 0 0 0-.288-.713A.968.968 0 0 0 12 4a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 5v6c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))},PasswordEyeCrossedIcon:Mr,PasswordEyeIcon:Rr,PlayIcon:function(e){return r.createElement("svg",Ir({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),Tr||(Tr=r.createElement("path",{fill:"#42454B",d:"m15.262 6.708-11-6.503C3.37-.323 2 .19 2 1.495V14.5c0 1.172 1.272 1.878 2.263 1.29l11-6.5c.98-.578.984-2.002 0-2.58Z"})))},SmileIcon:function(e){return r.createElement("svg",Nr({xmlns:"http://www.w3.org/2000/svg",width:20,height:20,fill:"none"},e),Lr||(Lr=r.createElement("path",{fill:"#9FA6AD",d:"M10 .313A9.686 9.686 0 0 0 .312 10 9.686 9.686 0 0 0 10 19.688 9.686 9.686 0 0 0 19.688 10 9.686 9.686 0 0 0 10 .312Zm0 17.5c-4.309 0-7.813-3.504-7.813-7.813 0-4.309 3.504-7.813 7.813-7.813 4.309 0 7.813 3.504 7.813 7.813 0 4.309-3.504 7.813-7.813 7.813ZM6.875 9.374c.691 0 1.25-.559 1.25-1.25s-.559-1.25-1.25-1.25-1.25.559-1.25 1.25.559 1.25 1.25 1.25Zm6.25 0c.691 0 1.25-.559 1.25-1.25s-.559-1.25-1.25-1.25-1.25.559-1.25 1.25.559 1.25 1.25 1.25Zm.156 2.836A4.263 4.263 0 0 1 10 13.75a4.25 4.25 0 0 1-3.281-1.54.94.94 0 0 0-1.32-.12.94.94 0 0 0-.122 1.32A6.132 6.132 0 0 0 10 15.621c1.828 0 3.55-.805 4.723-2.21a.937.937 0 1 0-1.442-1.2Z"})))},StackedEmailIcon:function(e){return r.createElement("svg",Zr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"stacked_email_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},jr||(jr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Hr||(Hr=r.createElement("g",{mask:"url(#stacked_email_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"M7 17c-.55 0-1.02-.196-1.412-.587A1.926 1.926 0 0 1 5 15V5c0-.55.196-1.02.588-1.413A1.926 1.926 0 0 1 7 3h14c.55 0 1.02.196 1.413.587C22.803 3.98 23 4.45 23 5v10c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 21 17H7Zm6.425-5.1L7 7.425V15h14V7.425L14.575 11.9a.964.964 0 0 1-.575.2.964.964 0 0 1-.575-.2ZM14 9.85 21 5H7l7 4.85ZM3 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 1 19V7.5c0-.283.096-.52.288-.713A.968.968 0 0 1 2 6.5c.283 0 .52.096.712.287.192.192.288.43.288.713V19h15.5c.283 0 .52.096.712.288.192.191.288.429.288.712s-.096.52-.288.712A.968.968 0 0 1 18.5 21H3Z"}))))},TodayIcon:function(e){return r.createElement("svg",Br({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"today_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Fr||(Fr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Vr||(Vr=r.createElement("g",{mask:"url(#today_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"M9 16.5c-.7 0-1.292-.242-1.775-.725C6.742 15.292 6.5 14.7 6.5 14s.242-1.292.725-1.775C7.708 11.742 8.3 11.5 9 11.5s1.292.242 1.775.725c.483.483.725 1.075.725 1.775s-.242 1.292-.725 1.775c-.483.483-1.075.725-1.775.725ZM5 22c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 20V6c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 5 4h1V3c0-.283.096-.52.287-.712A.968.968 0 0 1 7 2c.283 0 .52.096.713.288.191.191.287.429.287.712v1h8V3c0-.283.096-.52.288-.712A.968.968 0 0 1 17 2c.283 0 .52.096.712.288.192.191.288.429.288.712v1h1c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 22H5Zm0-2h14V10H5v10ZM5 8h14V6H5v2Z"}))))},VideoCamOffIcon:function(e){return r.createElement("svg",Wr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ur||(Ur=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),zr||(zr=r.createElement("g",{mask:"url(#videocam_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m20.506 15.852-2.737-2.737v1.896l-1.5-1.5V6.308a.3.3 0 0 0-.086-.221.3.3 0 0 0-.221-.087H8.758l-1.5-1.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.323-.19.507-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.353.044-.507-.11Zm-1.06 5.779L2.036 4.22a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.41 17.41a.684.684 0 0 1 .207.502.727.727 0 0 1-.233.527.724.724 0 0 1-.532.217.692.692 0 0 1-.522-.217ZM4.443 4.519 5.923 6H4.577a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .221.087h11.385a.3.3 0 0 0 .22-.087.3.3 0 0 0 .088-.22v-1.347l1.48 1.48a1.752 1.752 0 0 1-.558 1.187c-.34.325-.75.487-1.23.487H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.48.163-.89.487-1.23.324-.34.72-.527 1.187-.559Z"}))))},VideoCamOffSolidIcon:function(e){return r.createElement("svg",Gr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Kr||(Kr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),qr||(qr=r.createElement("g",{mask:"url(#videocam_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M19.471 21.63 2.061 4.222a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.526.217l17.41 17.41a.684.684 0 0 1 .208.502.727.727 0 0 1-.233.527.702.702 0 0 1-.527.212.753.753 0 0 1-.527-.212Zm-1.677-6.618L7.283 4.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.284.22.284.434v7.042c0 .214-.095.359-.284.434a.43.43 0 0 1-.5-.103l-2.736-2.737v1.896ZM4.467 4.518l13.308 13.308c-.017.456-.209.85-.577 1.179-.368.33-.78.494-1.236.494H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.457.168-.869.502-1.237.335-.368.734-.552 1.196-.552Z"}))))},VideoCamOnIcon:function(e){return r.createElement("svg",Yr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},$r||($r=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Xr||(Xr=r.createElement("g",{mask:"url(#videocam_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.322-.19.506-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.352.044-.506-.11l-2.737-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Zm0-1.5h11.384a.3.3 0 0 0 .222-.087.3.3 0 0 0 .086-.22V6.307a.3.3 0 0 0-.086-.221.3.3 0 0 0-.222-.087H4.548a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087Z"}))))},VideoCamOnSolidIcon:function(e){return r.createElement("svg",eo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Jr||(Jr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Qr||(Qr=r.createElement("g",{mask:"url(#videocam-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.283.22.283.434v7.042c0 .214-.094.359-.283.434a.43.43 0 0 1-.5-.103l-2.736-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Z"}))))},VolumeOffIcon:function(e){return r.createElement("svg",ro({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},to||(to=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),no||(no=r.createElement("g",{mask:"url(#volume_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Zm-1.5 5.613v-2.196L8.335 11H5.289v2h2.85l2.15 2.15Z"}))))},VolumeOffSolidIcon:function(e){return r.createElement("svg",lo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},oo||(oo=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ao||(ao=r.createElement("g",{mask:"url(#volume_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Z"}))))},VolumeUpIcon:function(e){return r.createElement("svg",so({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_up-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},io||(io=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),co||(co=r.createElement("g",{mask:"url(#volume_up-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.092.797.797 0 0 1-.324-.675.56.56 0 0 1 .124-.36.803.803 0 0 1 .307-.236 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.654.654 0 0 1-.43-.625c0-.275.107-.493.323-.652a.68.68 0 0 1 .7-.086 8.551 8.551 0 0 1 3.83 3.085c.97 1.4 1.454 2.97 1.454 4.711s-.485 3.312-1.454 4.71a8.552 8.552 0 0 1-3.83 3.086ZM4.558 14.5a.875.875 0 0 1-.644-.26.875.875 0 0 1-.26-.644v-3.192c0-.256.086-.47.26-.644a.874.874 0 0 1 .644-.26h2.807l2.752-2.752c.285-.284.612-.348.982-.192.37.157.555.437.555.84v9.208c0 .403-.185.683-.555.84-.37.156-.697.093-.982-.192L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499ZM10.154 8.85 8.004 11h-2.85v2h2.85l2.15 2.15v-6.3Z"}))))},VolumeUpSolidIcon:function(e){return r.createElement("svg",po({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_up_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},uo||(uo=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),fo||(fo=r.createElement("g",{mask:"url(#volume_up_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.042-.26.124-.363a.803.803 0 0 1 .307-.235 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.658.658 0 0 1-.32-.248.661.661 0 0 1-.11-.375c0-.277.107-.495.323-.654a.68.68 0 0 1 .7-.086 8.547 8.547 0 0 1 3.83 3.087c.97 1.401 1.454 2.97 1.454 4.709 0 1.738-.485 3.308-1.454 4.709a8.547 8.547 0 0 1-3.83 3.087ZM4.558 14.5a.876.876 0 0 1-.646-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .646-.259h2.807l2.752-2.752c.285-.284.612-.349.982-.193.37.156.555.436.555.841v9.208c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499Z"}))))},WarningIcon:function(e){return r.createElement("svg",ho({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"warning-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},mo||(mo=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),vo||(vo=r.createElement("g",{mask:"url(#warning-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M3.426 20.5a.878.878 0 0 1-.772-.452.955.955 0 0 1-.129-.437.816.816 0 0 1 .127-.467l8.561-14.788A.896.896 0 0 1 12 3.904a.897.897 0 0 1 .787.452l8.56 14.788c.093.154.136.31.128.467a.955.955 0 0 1-.129.437.878.878 0 0 1-.771.452H3.425ZM4.45 19h15.1L12 6 4.45 19ZM12 17.808c.229 0 .42-.078.576-.232a.781.781 0 0 0 .232-.576.781.781 0 0 0-.232-.575.782.782 0 0 0-.576-.233.781.781 0 0 0-.575.233.781.781 0 0 0-.233.575c0 .229.078.42.233.576a.781.781 0 0 0 .575.232Zm0-2.616c.213 0 .391-.072.535-.215a.726.726 0 0 0 .215-.535v-3.5a.725.725 0 0 0-.216-.534.726.726 0 0 0-.534-.216.725.725 0 0 0-.534.216.726.726 0 0 0-.216.534v3.5c0 .213.072.391.216.535a.726.726 0 0 0 .534.215Z"}))))},WarningSolidIcon:function(e){return r.createElement("svg",yo({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"warning_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},go||(go=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),wo||(wo=r.createElement("g",{mask:"url(#warning_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M2.725 21a.973.973 0 0 1-.85-.5 1.098 1.098 0 0 1-.138-.488.898.898 0 0 1 .138-.512l9.25-16a.98.98 0 0 1 .387-.375C11.671 3.042 11.833 3 12 3c.166 0 .329.042.487.125a.983.983 0 0 1 .388.375l9.25 16c.1.167.146.337.137.512a1.098 1.098 0 0 1-.137.488.973.973 0 0 1-.85.5H2.725ZM12 18c.283 0 .52-.096.712-.288A.968.968 0 0 0 13 17a.968.968 0 0 0-.288-.712A.968.968 0 0 0 12 16a.968.968 0 0 0-.713.288A.968.968 0 0 0 11 17c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-3a.97.97 0 0 0 .712-.287A.968.968 0 0 0 13 14v-3a.968.968 0 0 0-.288-.713A.968.968 0 0 0 12 10a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 11v3c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))}});const Eo=e.forwardRef(((t,n)=>e.createElement(_.label,a({},t,{ref:n,onMouseDown:e=>{var n;null===(n=t.onMouseDown)||void 0===n||n.call(t,e),!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}))));var _o={label:"Label-modules_label__rXO6J",semiBold:"Label-modules_semiBold__vTm1B",regular:"Label-modules_regular__F9gNE"},xo=function(e){return void 0===e&&(e="regular"),"semiBold"===e?_o.semiBold:_o.regular};function Co(t){var n,r=t.htmlFor,o=t.children,a=t.className,l=void 0===a?"":a,i=t.weight,c=void 0===i?"regular":i;return e.createElement(Eo,{htmlFor:r,className:Nt("demio-ui-label",_o.label,[xo(c)],(n={},n[l]=!!l,n))},o)}var Oo={formGroup:"FormGroup-modules_formGroup__Zjh7i",horizontal:"FormGroup-modules_horizontal__9g7gn",vertical:"FormGroup-modules_vertical__yPEor",between:"FormGroup-modules_between__poqnA",start:"FormGroup-modules_start__ylflU",startAlignItems:"FormGroup-modules_startAlignItems__h-nDr",stretchAlignItems:"FormGroup-modules_stretchAlignItems__jg3e0"};var ko={root:"Input-modules_root__vdxX5",label:"Input-modules_label__2RN8-",optional:"Input-modules_optional__M78yJ",static:"Input-modules_static__cpwFU",correctedTop:"Input-modules_correctedTop__I3y-S",inputWrapper:"Input-modules_inputWrapper__KPYyg",input:"Input-modules_input__y9hSj",startAdornment:"Input-modules_startAdornment__Xs8xw",endAdornment:"Input-modules_endAdornment__z04mP",footer:"Input-modules_footer__R8J8U",togglePasswordButton:"Input-modules_togglePasswordButton__KGieB",footerMessage:"Input-modules_footerMessage__akEOh",counter:"Input-modules_counter__HFA5P",isDisabled:"Input-modules_isDisabled__bHf8L",hint:"Input-modules_hint__e-KNY",isError:"Input-modules_isError__1B8e9",isFocused:"Input-modules_isFocused__Oa1Re"},Ao={root:"InputHint-modules_root__bJTnj",error:"InputHint-modules_error__HZnQD"};function Do(t){var n,r=t.children,o=t.type,a=void 0===o?"hint":o,l=t.className,i=void 0===l?"":l;return e.createElement("div",{className:Nt("demio-ui-input-hint",Ao.root,(n={},n[Ao.error]="error"===a,n[i]=!!i,n)),"data-html":a},r)}var So=e.forwardRef((function(t,n){var r,o,a,l,i=t.autoComplete,c=void 0===i?"off":i,s=t.className,u=void 0===s?"":s,d=t.counterVisibilityLimit,f=void 0===d?.8:d,p=t.defaultValue,m=void 0===p?"":p,v=t.disabled,h=void 0!==v&&v,g=t.endAdornment,w=void 0===g?null:g,y=t.endAdornmentClassName,b=void 0===y?"":y,E=t.errorMessage,_=void 0===E?"":E,x=t.hint,C=void 0===x?"":x,O=t.id,k=t.inputWrapperClass,A=void 0===k?"":k,D=t.isLabelStatic,S=void 0!==D&&D,R=t.label,P=void 0===R?"":R,T=t.maxLength,M=void 0===T?150:T,I=t.name,L=void 0===I?"":I,N=t.onBlur,j=t.onChange,H=t.onFocus,Z=t.optionalText,F=void 0===Z?"Optional":Z,V=t.placeholder,B=void 0===V?"":V,U=t.required,z=void 0!==U&&U,W=t.startAdornment,K=void 0===W?null:W,$=t.type,X=void 0===$?"text":$,Y=t.value,J=G(t,["autoComplete","className","counterVisibilityLimit","defaultValue","disabled","endAdornment","endAdornmentClassName","errorMessage","hint","id","inputWrapperClass","isLabelStatic","label","maxLength","name","onBlur","onChange","onFocus","optionalText","placeholder","required","startAdornment","type","value"]),Q=void 0!==Y,ee=void 0!==m,te=e.useState(!1),ne=te[0],re=te[1],oe=e.useState(ee?m:""),ae=oe[0],le=oe[1],ie=e.useState(!1),ce=ie[0],se=ie[1],ue="password"===X,de=ue?ne?"text":"password":X,fe=Q?Y:ae,pe=fe.length,me=pe>=M*f;return e.createElement("div",{className:Nt("demio-ui-input","demio-ui-input-".concat(X),ko.root,(r={},r[u]=!!u,r[ko.isDisabled]=h,r[ko.isFocused]=ce||fe.length>0,r[ko.hasStartAdornment]=!!K,r[ko.isError]=!!_,r)),"data-html":"container"},P&&e.createElement("label",{htmlFor:O,className:Nt(ko.label,(o={},o[ko.static]=S,o)),"data-html":"label"},P),!z&&e.createElement("span",{className:Nt(ko.optional,(a={},a[ko.correctedTop]=S,a)),"data-html":"optional"},F),e.createElement("div",{className:Nt(ko.inputWrapper,A),"data-html":"wrapper"},K&&e.createElement("div",{className:ko.startAdornment,"data-html":"start-adornment"},K),e.createElement("input",q({},J,{type:de,id:O,ref:n,name:L||O,className:ko.input,placeholder:B,required:z,"data-html":"input",disabled:h,autoComplete:c,maxLength:M,onChange:function(e){j&&j(e),Q||le(e.target.value)},value:fe,onFocus:function(e){H&&H(e),se(!0)},onBlur:function(e){N&&N(e),se(!1)}})),w&&e.createElement("div",{className:Nt(ko.endAdornment,(l={},l[b]=!!b,l)),"data-html":"end-adornment"},w)),e.createElement("div",{className:ko.footer,"data-html":"footer"},e.createElement("div",{className:ko.footerMessage},_&&e.createElement(Do,{type:"error"},_),C&&!_&&e.createElement(Do,{className:ko.hint},C)),e.createElement(Do,{className:ko.counter},me&&"".concat(pe," / ").concat(M))),ue&&e.createElement("button",{type:"button",className:ko.togglePasswordButton,onClick:function(){re(!ne)}},ne?e.createElement(Rr,null):e.createElement(Mr,null)))})),Ro="Modal-modules_overlay__V-vTn",Po="Modal-modules_header__-dxAm",To="Modal-modules_close__CwIjR",Mo="Modal-modules_title__3ehge",Io="Modal-modules_titleCentered__Qqy8u",Lo="Modal-modules_content__sK9HS",No="Modal-modules_body__8Khpx";function jo(e){return e.split("-")[1]}function Ho(e){return"y"===e?"height":"width"}function Zo(e){return e.split("-")[0]}function Fo(e){return["top","bottom"].includes(Zo(e))?"x":"y"}function Vo(e,t,n){let{reference:r,floating:o}=e;const a=r.x+r.width/2-o.width/2,l=r.y+r.height/2-o.height/2,i=Fo(t),c=Ho(i),s=r[c]/2-o[c]/2,u="x"===i;let d;switch(Zo(t)){case"top":d={x:a,y:r.y-o.height};break;case"bottom":d={x:a,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:l};break;case"left":d={x:r.x-o.width,y:l};break;default:d={x:r.x,y:r.y}}switch(jo(t)){case"start":d[i]-=s*(n&&u?-1:1);break;case"end":d[i]+=s*(n&&u?-1:1)}return d}function Bo(e,t){return"function"==typeof e?e(t):e}function Uo(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function zo(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function Wo(e,t){var n;void 0===t&&(t={});const{x:r,y:o,platform:a,rects:l,elements:i,strategy:c}=e,{boundary:s="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:f=!1,padding:p=0}=Bo(t,e),m=Uo(p),v=i[f?"floating"===d?"reference":"floating":d],h=zo(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(v)))||n?v:v.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(i.floating)),boundary:s,rootBoundary:u,strategy:c})),g="floating"===d?{...l.floating,x:r,y:o}:l.reference,w=await(null==a.getOffsetParent?void 0:a.getOffsetParent(i.floating)),y=await(null==a.isElement?void 0:a.isElement(w))&&await(null==a.getScale?void 0:a.getScale(w))||{x:1,y:1},b=zo(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({rect:g,offsetParent:w,strategy:c}):g);return{top:(h.top-b.top+m.top)/y.y,bottom:(b.bottom-h.bottom+m.bottom)/y.y,left:(h.left-b.left+m.left)/y.x,right:(b.right-h.right+m.right)/y.x}}const Ko=Math.min,qo=Math.max;function Go(e,t,n){return qo(e,Ko(t,n))}const $o=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:l,elements:i}=t,{element:c,padding:s=0}=Bo(e,t)||{};if(null==c)return{};const u=Uo(s),d={x:n,y:r},f=Fo(o),p=Ho(f),m=await l.getDimensions(c),v="y"===f,h=v?"top":"left",g=v?"bottom":"right",w=v?"clientHeight":"clientWidth",y=a.reference[p]+a.reference[f]-d[f]-a.floating[p],b=d[f]-a.reference[f],E=await(null==l.getOffsetParent?void 0:l.getOffsetParent(c));let _=E?E[w]:0;_&&await(null==l.isElement?void 0:l.isElement(E))||(_=i.floating[w]||a.floating[p]);const x=y/2-b/2,C=_/2-m[p]/2-1,O=Ko(u[h],C),k=Ko(u[g],C),A=O,D=_-m[p]-k,S=_/2-m[p]/2+x,R=Go(A,S,D),P=null!=jo(o)&&S!=R&&a.reference[p]/2-(S<A?O:k)-m[p]/2<0;return{[f]:d[f]-(P?S<A?A-S:D-S:0),data:{[f]:R,centerOffset:S-R}}}}),Xo=["top","right","bottom","left"],Yo={left:"right",right:"left",bottom:"top",top:"bottom"};function Jo(e){return e.replace(/left|right|bottom|top/g,(e=>Yo[e]))}const Qo={start:"end",end:"start"};function ea(e){return e.replace(/start|end/g,(e=>Qo[e]))}const ta=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:a,initialPlacement:l,platform:i,elements:c}=t,{mainAxis:s=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:p="none",flipAlignment:m=!0,...v}=Bo(e,t),h=Zo(r),g=Zo(l)===l,w=await(null==i.isRTL?void 0:i.isRTL(c.floating)),y=d||(g||!m?[Jo(l)]:function(e){const t=Jo(e);return[ea(e),t,ea(t)]}(l));d||"none"===p||y.push(...function(e,t,n,r){const o=jo(e);let a=function(e,t,n){const r=["left","right"],o=["right","left"],a=["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?a:l;default:return[]}}(Zo(e),"start"===n,r);return o&&(a=a.map((e=>e+"-"+o)),t&&(a=a.concat(a.map(ea)))),a}(l,m,p,w));const b=[l,...y],E=await Wo(t,v),_=[];let x=(null==(n=o.flip)?void 0:n.overflows)||[];if(s&&_.push(E[h]),u){const{main:e,cross:t}=function(e,t,n){void 0===n&&(n=!1);const r=jo(e),o=Fo(e),a=Ho(o);let l="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(l=Jo(l)),{main:l,cross:Jo(l)}}(r,a,w);_.push(E[e],E[t])}if(x=[...x,{placement:r,overflows:_}],!_.every((e=>e<=0))){var C,O;const e=((null==(C=o.flip)?void 0:C.index)||0)+1,t=b[e];if(t)return{data:{index:e,overflows:x},reset:{placement:t}};let n=null==(O=x.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(f){case"bestFit":{var k;const e=null==(k=x.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:k[0];e&&(n=e);break}case"initialPlacement":n=l}if(r!==n)return{reset:{placement:n}}}return{}}}};function na(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function ra(e){return Xo.some((t=>e[t]>=0))}const oa=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=Bo(e,t);switch(r){case"referenceHidden":{const e=na(await Wo(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:ra(e)}}}case"escaped":{const e=na(await Wo(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:ra(e)}}}default:return{}}}}};const aa=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),l=Zo(n),i=jo(n),c="x"===Fo(n),s=["left","top"].includes(l)?-1:1,u=a&&c?-1:1,d=Bo(t,e);let{mainAxis:f,crossAxis:p,alignmentAxis:m}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return i&&"number"==typeof m&&(p="end"===i?-1*m:m),c?{x:p*u,y:f*s}:{x:f*s,y:p*u}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function la(e){return"x"===e?"y":"x"}const ia=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:i={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=Bo(e,t),s={x:n,y:r},u=await Wo(t,c),d=Fo(Zo(o)),f=la(d);let p=s[d],m=s[f];if(a){const e="y"===d?"bottom":"right";p=Go(p+u["y"===d?"top":"left"],p,p-u[e])}if(l){const e="y"===f?"bottom":"right";m=Go(m+u["y"===f?"top":"left"],m,m-u[e])}const v=i.fn({...t,[d]:p,[f]:m});return{...v,data:{x:v.x-n,y:v.y-r}}}}},ca=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:a,middlewareData:l}=t,{offset:i=0,mainAxis:c=!0,crossAxis:s=!0}=Bo(e,t),u={x:n,y:r},d=Fo(o),f=la(d);let p=u[d],m=u[f];const v=Bo(i,t),h="number"==typeof v?{mainAxis:v,crossAxis:0}:{mainAxis:0,crossAxis:0,...v};if(c){const e="y"===d?"height":"width",t=a.reference[d]-a.floating[e]+h.mainAxis,n=a.reference[d]+a.reference[e]-h.mainAxis;p<t?p=t:p>n&&(p=n)}if(s){var g,w;const e="y"===d?"width":"height",t=["top","left"].includes(Zo(o)),n=a.reference[f]-a.floating[e]+(t&&(null==(g=l.offset)?void 0:g[f])||0)+(t?0:h.crossAxis),r=a.reference[f]+a.reference[e]+(t?0:(null==(w=l.offset)?void 0:w[f])||0)-(t?h.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[d]:p,[f]:m}}}},sa=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:a}=t,{apply:l=(()=>{}),...i}=Bo(e,t),c=await Wo(t,i),s=Zo(n),u=jo(n),d="x"===Fo(n),{width:f,height:p}=r.floating;let m,v;"top"===s||"bottom"===s?(m=s,v=u===(await(null==o.isRTL?void 0:o.isRTL(a.floating))?"start":"end")?"left":"right"):(v=s,m="end"===u?"top":"bottom");const h=p-c[m],g=f-c[v],w=!t.middlewareData.shift;let y=h,b=g;if(d){const e=f-c.left-c.right;b=u||w?Ko(g,e):e}else{const e=p-c.top-c.bottom;y=u||w?Ko(h,e):e}if(w&&!u){const e=qo(c.left,0),t=qo(c.right,0),n=qo(c.top,0),r=qo(c.bottom,0);d?b=f-2*(0!==e||0!==t?e+t:qo(c.left,c.right)):y=p-2*(0!==n||0!==r?n+r:qo(c.top,c.bottom))}await l({...t,availableWidth:b,availableHeight:y});const E=await o.getDimensions(a.floating);return f!==E.width||p!==E.height?{reset:{rects:!0}}:{}}}};function ua(e){var t;return(null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function da(e){return ua(e).getComputedStyle(e)}function fa(e){return e instanceof ua(e).Node}function pa(e){return fa(e)?(e.nodeName||"").toLowerCase():""}function ma(e){return e instanceof ua(e).HTMLElement}function va(e){return e instanceof ua(e).Element}function ha(e){if("undefined"==typeof ShadowRoot)return!1;return e instanceof ua(e).ShadowRoot||e instanceof ShadowRoot}function ga(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=da(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function wa(e){return["table","td","th"].includes(pa(e))}function ya(e){const t=ba(),n=da(e);return"none"!==n.transform||"none"!==n.perspective||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function ba(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function Ea(e){return["html","body","#document"].includes(pa(e))}const _a=Math.min,xa=Math.max,Ca=Math.round;function Oa(e){const t=da(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=ma(e),a=o?e.offsetWidth:n,l=o?e.offsetHeight:r,i=Ca(n)!==a||Ca(r)!==l;return i&&(n=a,r=l),{width:n,height:r,fallback:i}}function ka(e){return va(e)?e:e.contextElement}const Aa={x:1,y:1};function Da(e){const t=ka(e);if(!ma(t))return Aa;const n=t.getBoundingClientRect(),{width:r,height:o,fallback:a}=Oa(t);let l=(a?Ca(n.width):n.width)/r,i=(a?Ca(n.height):n.height)/o;return l&&Number.isFinite(l)||(l=1),i&&Number.isFinite(i)||(i=1),{x:l,y:i}}const Sa={x:0,y:0};function Ra(e,t,n){var r,o;if(void 0===t&&(t=!0),!ba())return Sa;const a=e?ua(e):window;return!n||t&&n!==a?Sa:{x:(null==(r=a.visualViewport)?void 0:r.offsetLeft)||0,y:(null==(o=a.visualViewport)?void 0:o.offsetTop)||0}}function Pa(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=ka(e);let l=Aa;t&&(r?va(r)&&(l=Da(r)):l=Da(e));const i=Ra(a,n,r);let c=(o.left+i.x)/l.x,s=(o.top+i.y)/l.y,u=o.width/l.x,d=o.height/l.y;if(a){const e=ua(a),t=r&&va(r)?ua(r):r;let n=e.frameElement;for(;n&&r&&t!==e;){const e=Da(n),t=n.getBoundingClientRect(),r=getComputedStyle(n);t.x+=(n.clientLeft+parseFloat(r.paddingLeft))*e.x,t.y+=(n.clientTop+parseFloat(r.paddingTop))*e.y,c*=e.x,s*=e.y,u*=e.x,d*=e.y,c+=t.x,s+=t.y,n=ua(n).frameElement}}return zo({width:u,height:d,x:c,y:s})}function Ta(e){return((fa(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ma(e){return va(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ia(e){return Pa(Ta(e)).left+Ma(e).scrollLeft}function La(e){if("html"===pa(e))return e;const t=e.assignedSlot||e.parentNode||ha(e)&&e.host||Ta(e);return ha(t)?t.host:t}function Na(e){const t=La(e);return Ea(t)?t.ownerDocument.body:ma(t)&&ga(t)?t:Na(t)}function ja(e,t){var n;void 0===t&&(t=[]);const r=Na(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=ua(r);return o?t.concat(a,a.visualViewport||[],ga(r)?r:[]):t.concat(r,ja(r))}function Ha(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=ua(e),r=Ta(e),o=n.visualViewport;let a=r.clientWidth,l=r.clientHeight,i=0,c=0;if(o){a=o.width,l=o.height;const e=ba();(!e||e&&"fixed"===t)&&(i=o.offsetLeft,c=o.offsetTop)}return{width:a,height:l,x:i,y:c}}(e,n);else if("document"===t)r=function(e){const t=Ta(e),n=Ma(e),r=e.ownerDocument.body,o=xa(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=xa(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let l=-n.scrollLeft+Ia(e);const i=-n.scrollTop;return"rtl"===da(r).direction&&(l+=xa(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:l,y:i}}(Ta(e));else if(va(t))r=function(e,t){const n=Pa(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=ma(e)?Da(e):{x:1,y:1};return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:o*a.x,y:r*a.y}}(t,n);else{const n=Ra(e);r={...t,x:t.x-n.x,y:t.y-n.y}}return zo(r)}function Za(e,t){const n=La(e);return!(n===t||!va(n)||Ea(n))&&("fixed"===da(n).position||Za(n,t))}function Fa(e,t){return ma(e)&&"fixed"!==da(e).position?t?t(e):e.offsetParent:null}function Va(e,t){const n=ua(e);if(!ma(e))return n;let r=Fa(e,t);for(;r&&wa(r)&&"static"===da(r).position;)r=Fa(r,t);return r&&("html"===pa(r)||"body"===pa(r)&&"static"===da(r).position&&!ya(r))?n:r||function(e){let t=La(e);for(;ma(t)&&!Ea(t);){if(ya(t))return t;t=La(t)}return null}(e)||n}function Ba(e,t,n){const r=ma(t),o=Ta(t),a="fixed"===n,l=Pa(e,!0,a,t);let i={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(r||!r&&!a)if(("body"!==pa(t)||ga(o))&&(i=Ma(t)),ma(t)){const e=Pa(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else o&&(c.x=Ia(o));return{x:l.left+i.scrollLeft-c.x,y:l.top+i.scrollTop-c.y,width:l.width,height:l.height}}const Ua={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[..."clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let r=ja(e).filter((e=>va(e)&&"body"!==pa(e))),o=null;const a="fixed"===da(e).position;let l=a?La(e):e;for(;va(l)&&!Ea(l);){const t=da(l),n=ya(l);n||"fixed"!==t.position||(o=null),(a?!n&&!o:!n&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||ga(l)&&!n&&Za(e,l))?r=r.filter((e=>e!==l)):o=t,l=La(l)}return t.set(e,r),r}(t,this._c):[].concat(n),r],l=a[0],i=a.reduce(((e,n)=>{const r=Ha(t,n,o);return e.top=xa(r.top,e.top),e.right=_a(r.right,e.right),e.bottom=_a(r.bottom,e.bottom),e.left=xa(r.left,e.left),e}),Ha(t,l,o));return{width:i.right-i.left,height:i.bottom-i.top,x:i.left,y:i.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=ma(n),a=Ta(n);if(n===a)return t;let l={scrollLeft:0,scrollTop:0},i={x:1,y:1};const c={x:0,y:0};if((o||!o&&"fixed"!==r)&&(("body"!==pa(n)||ga(a))&&(l=Ma(n)),ma(n))){const e=Pa(n);i=Da(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}return{width:t.width*i.x,height:t.height*i.y,x:t.x*i.x-l.scrollLeft*i.x+c.x,y:t.y*i.y-l.scrollTop*i.y+c.y}},isElement:va,getDimensions:function(e){return Oa(e)},getOffsetParent:Va,getDocumentElement:Ta,getScale:Da,async getElementRects(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||Va,a=this.getDimensions;return{reference:Ba(t,await o(n),r),floating:{x:0,y:0,...await a(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>"rtl"===da(e).direction};function za(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:l=!0,animationFrame:i=!1}=r,c=o||a?[...va(e)?ja(e):e.contextElement?ja(e.contextElement):[],...ja(t)]:[];c.forEach((e=>{const t=!va(e)&&e.toString().includes("V");!o||i&&!t||e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)}));let s,u=null;l&&(u=new ResizeObserver((()=>{n()})),va(e)&&!i&&u.observe(e),va(e)||!e.contextElement||i||u.observe(e.contextElement),u.observe(t));let d=i?Pa(e):null;return i&&function t(){const r=Pa(e);!d||r.x===d.x&&r.y===d.y&&r.width===d.width&&r.height===d.height||n();d=r,s=requestAnimationFrame(t)}(),n(),()=>{var e;c.forEach((e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)})),null==(e=u)||e.disconnect(),u=null,i&&cancelAnimationFrame(s)}}const Wa=(e,t,n)=>{const r=new Map,o={platform:Ua,...n},a={...o.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:l}=n,i=a.filter(Boolean),c=await(null==l.isRTL?void 0:l.isRTL(t));let s=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=Vo(s,r,c),f=r,p={},m=0;for(let n=0;n<i.length;n++){const{name:a,fn:v}=i[n],{x:h,y:g,data:w,reset:y}=await v({x:u,y:d,initialPlacement:r,placement:f,strategy:o,middlewareData:p,rects:s,platform:l,elements:{reference:e,floating:t}});u=null!=h?h:u,d=null!=g?g:d,p={...p,[a]:{...p[a],...w}},y&&m<=50&&(m++,"object"==typeof y&&(y.placement&&(f=y.placement),y.rects&&(s=!0===y.rects?await l.getElementRects({reference:e,floating:t,strategy:o}):y.rects),({x:u,y:d}=Vo(s,f,c))),n=-1)}return{x:u,y:d,placement:f,strategy:o,middlewareData:p}})(e,t,{...o,platform:a})},Ka=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(o=n,{}.hasOwnProperty.call(o,"current"))?null!=n.current?$o({element:n.current,padding:r}).fn(t):{}:n?$o({element:n,padding:r}).fn(t):{};var o}});var qa="undefined"!=typeof document?e.useLayoutEffect:e.useEffect;function Ga(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;0!=r--;)if(!Ga(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){const n=o[r];if(("_owner"!==n||!e.$$typeof)&&!Ga(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function $a(e){if("undefined"==typeof window)return 1;return(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Xa(e,t){const n=$a(e);return Math.round(t*n)/n}function Ya(e){const t=r.useRef(e);return qa((()=>{t.current=e})),t}const Ja=e.forwardRef(((t,n)=>{const{children:r,width:o=10,height:l=5,...i}=t;return e.createElement(_.svg,a({},i,{ref:n,width:o,height:l,viewBox:"0 0 30 10",preserveAspectRatio:"none"}),t.asChild?r:e.createElement("polygon",{points:"0,0 30,0 15,10"}))})),Qa="Popper",[el,tl]=l(Qa),[nl,rl]=el(Qa),ol=e.forwardRef(((t,n)=>{const{__scopePopper:r,virtualRef:o,...l}=t,i=rl("PopperAnchor",r),c=e.useRef(null),u=s(n,c);return e.useEffect((()=>{i.onAnchorChange((null==o?void 0:o.current)||c.current)})),o?null:e.createElement(_.div,a({},l,{ref:u}))})),al="PopperContent",[ll,il]=el(al),cl=e.forwardRef(((t,n)=>{var l,i,c,u,f,p,m,h;const{__scopePopper:g,side:w="bottom",sideOffset:y=0,align:b="center",alignOffset:E=0,arrowPadding:x=0,collisionBoundary:C=[],collisionPadding:O=0,sticky:k="partial",hideWhenDetached:A=!1,avoidCollisions:D=!0,onPlaced:S,...R}=t,P=rl(al,g),[T,M]=e.useState(null),I=s(n,(e=>M(e))),[L,N]=e.useState(null),j=Wt(L),H=null!==(l=null==j?void 0:j.width)&&void 0!==l?l:0,Z=null!==(i=null==j?void 0:j.height)&&void 0!==i?i:0,F=w+("center"!==b?"-"+b:""),V="number"==typeof O?O:{top:0,right:0,bottom:0,left:0,...O},B=Array.isArray(C)?C:[C],U=B.length>0,z={padding:V,boundary:B.filter(ul),altBoundary:U},{refs:W,floatingStyles:K,placement:q,isPositioned:G,middlewareData:$}=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:a=[],platform:l,elements:{reference:i,floating:c}={},transform:s=!0,whileElementsMounted:u,open:d}=e,[f,p]=r.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[m,v]=r.useState(a);Ga(m,a)||v(a);const[h,g]=r.useState(null),[w,y]=r.useState(null),b=r.useCallback((e=>{e!=C.current&&(C.current=e,g(e))}),[g]),E=r.useCallback((e=>{e!==O.current&&(O.current=e,y(e))}),[y]),_=i||h,x=c||w,C=r.useRef(null),O=r.useRef(null),k=r.useRef(f),A=Ya(u),D=Ya(l),S=r.useCallback((()=>{if(!C.current||!O.current)return;const e={placement:t,strategy:n,middleware:m};D.current&&(e.platform=D.current),Wa(C.current,O.current,e).then((e=>{const t={...e,isPositioned:!0};R.current&&!Ga(k.current,t)&&(k.current=t,o.flushSync((()=>{p(t)})))}))}),[m,t,n,D]);qa((()=>{!1===d&&k.current.isPositioned&&(k.current.isPositioned=!1,p((e=>({...e,isPositioned:!1}))))}),[d]);const R=r.useRef(!1);qa((()=>(R.current=!0,()=>{R.current=!1})),[]),qa((()=>{if(_&&(C.current=_),x&&(O.current=x),_&&x){if(A.current)return A.current(_,x,S);S()}}),[_,x,S,A]);const P=r.useMemo((()=>({reference:C,floating:O,setReference:b,setFloating:E})),[b,E]),T=r.useMemo((()=>({reference:_,floating:x})),[_,x]),M=r.useMemo((()=>{const e={position:n,left:0,top:0};if(!T.floating)return e;const t=Xa(T.floating,f.x),r=Xa(T.floating,f.y);return s?{...e,transform:"translate("+t+"px, "+r+"px)",...$a(T.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}}),[n,s,T.floating,f.x,f.y]);return r.useMemo((()=>({...f,update:S,refs:P,elements:T,floatingStyles:M})),[f,S,P,T,M])}({strategy:"fixed",placement:F,whileElementsMounted:za,elements:{reference:P.anchor},middleware:[aa({mainAxis:y+Z,alignmentAxis:E}),D&&ia({mainAxis:!0,crossAxis:!1,limiter:"partial"===k?ca():void 0,...z}),D&&ta({...z}),sa({...z,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{const{width:o,height:a}=t.reference,l=e.floating.style;l.setProperty("--radix-popper-available-width",`${n}px`),l.setProperty("--radix-popper-available-height",`${r}px`),l.setProperty("--radix-popper-anchor-width",`${o}px`),l.setProperty("--radix-popper-anchor-height",`${a}px`)}}),L&&Ka({element:L,padding:x}),dl({arrowWidth:H,arrowHeight:Z}),A&&oa({strategy:"referenceHidden"})]}),[X,Y]=fl(q),J=v(S);d((()=>{G&&(null==J||J())}),[G,J]);const Q=null===(c=$.arrow)||void 0===c?void 0:c.x,ee=null===(u=$.arrow)||void 0===u?void 0:u.y,te=0!==(null===(f=$.arrow)||void 0===f?void 0:f.centerOffset),[ne,re]=e.useState();return d((()=>{T&&re(window.getComputedStyle(T).zIndex)}),[T]),e.createElement("div",{ref:W.setFloating,"data-radix-popper-content-wrapper":"",style:{...K,transform:G?K.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ne,"--radix-popper-transform-origin":[null===(p=$.transformOrigin)||void 0===p?void 0:p.x,null===(m=$.transformOrigin)||void 0===m?void 0:m.y].join(" ")},dir:t.dir},e.createElement(ll,{scope:g,placedSide:X,onArrowChange:N,arrowX:Q,arrowY:ee,shouldHideArrow:te},e.createElement(_.div,a({"data-side":X,"data-align":Y},R,{ref:I,style:{...R.style,animation:G?void 0:"none",opacity:null!==(h=$.hide)&&void 0!==h&&h.referenceHidden?0:void 0}}))))})),sl={top:"bottom",right:"left",bottom:"top",left:"right"};function ul(e){return null!==e}const dl=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,a,l;const{placement:i,rects:c,middlewareData:s}=t,u=0!==(null===(n=s.arrow)||void 0===n?void 0:n.centerOffset),d=u?0:e.arrowWidth,f=u?0:e.arrowHeight,[p,m]=fl(i),v={start:"0%",center:"50%",end:"100%"}[m],h=(null!==(r=null===(o=s.arrow)||void 0===o?void 0:o.x)&&void 0!==r?r:0)+d/2,g=(null!==(a=null===(l=s.arrow)||void 0===l?void 0:l.y)&&void 0!==a?a:0)+f/2;let w="",y="";return"bottom"===p?(w=u?v:`${h}px`,y=-f+"px"):"top"===p?(w=u?v:`${h}px`,y=`${c.floating.height+f}px`):"right"===p?(w=-f+"px",y=u?v:`${g}px`):"left"===p&&(w=`${c.floating.width+f}px`,y=u?v:`${g}px`),{data:{x:w,y:y}}}});function fl(e){const[t,n="center"]=e.split("-");return[t,n]}const pl=t=>{const{__scopePopper:n,children:r}=t,[o,a]=e.useState(null);return e.createElement(nl,{scope:n,anchor:o,onAnchorChange:a},r)},ml=ol,vl=cl,hl=e.forwardRef((function(t,n){const{__scopePopper:r,...o}=t,l=il("PopperArrow",r),i=sl[l.placedSide];return e.createElement("span",{ref:l.onArrowChange,style:{position:"absolute",left:l.arrowX,top:l.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[l.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[l.placedSide],visibility:l.shouldHideArrow?"hidden":void 0}},e.createElement(Ja,a({},o,{ref:n,style:{...o.style,display:"block"}})))})),gl="Popover",[wl,yl]=l(gl,[tl]),bl=tl(),[El,_l]=wl(gl),xl=e.forwardRef(((t,n)=>{const{__scopePopover:r,...o}=t,l=_l("PopoverTrigger",r),i=bl(r),c=s(n,l.triggerRef),d=e.createElement(_.button,a({type:"button","aria-haspopup":"dialog","aria-expanded":l.open,"aria-controls":l.contentId,"data-state":Tl(l.open)},o,{ref:c,onClick:u(t.onClick,l.onOpenToggle)}));return l.hasCustomAnchor?d:e.createElement(ml,a({asChild:!0},i),d)})),Cl="PopoverPortal",[Ol,kl]=wl(Cl,{forceMount:void 0}),Al="PopoverContent",Dl=e.forwardRef(((t,n)=>{const r=kl(Al,t.__scopePopover),{forceMount:o=r.forceMount,...l}=t,i=_l(Al,t.__scopePopover);return e.createElement(B,{present:o||i.open},i.modal?e.createElement(Sl,a({},l,{ref:n})):e.createElement(Rl,a({},l,{ref:n})))})),Sl=e.forwardRef(((t,n)=>{const r=_l(Al,t.__scopePopover),o=e.useRef(null),l=s(n,o),i=e.useRef(!1);return e.useEffect((()=>{const e=o.current;if(e)return Le(e)}),[]),e.createElement(De,{as:g,allowPinchZoom:!0},e.createElement(Pl,a({},t,{ref:l,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:u(t.onCloseAutoFocus,(e=>{var t;e.preventDefault(),i.current||null===(t=r.triggerRef.current)||void 0===t||t.focus()})),onPointerDownOutside:u(t.onPointerDownOutside,(e=>{const t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey,r=2===t.button||n;i.current=r}),{checkForDefaultPrevented:!1}),onFocusOutside:u(t.onFocusOutside,(e=>e.preventDefault()),{checkForDefaultPrevented:!1})})))})),Rl=e.forwardRef(((t,n)=>{const r=_l(Al,t.__scopePopover),o=e.useRef(!1),l=e.useRef(!1);return e.createElement(Pl,a({},t,{ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:e=>{var n,a;(null===(n=t.onCloseAutoFocus)||void 0===n||n.call(t,e),e.defaultPrevented)||(o.current||null===(a=r.triggerRef.current)||void 0===a||a.focus(),e.preventDefault());o.current=!1,l.current=!1},onInteractOutside:e=>{var n,a;null===(n=t.onInteractOutside)||void 0===n||n.call(t,e),e.defaultPrevented||(o.current=!0,"pointerdown"===e.detail.originalEvent.type&&(l.current=!0));const i=e.target;(null===(a=r.triggerRef.current)||void 0===a?void 0:a.contains(i))&&e.preventDefault(),"focusin"===e.detail.originalEvent.type&&l.current&&e.preventDefault()}}))})),Pl=e.forwardRef(((t,n)=>{const{__scopePopover:r,trapFocus:o,onOpenAutoFocus:l,onCloseAutoFocus:i,disableOutsidePointerEvents:c,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,...p}=t,m=_l(Al,r),v=bl(r);return W(),e.createElement(I,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:l,onUnmountAutoFocus:i},e.createElement(D,{asChild:!0,disableOutsidePointerEvents:c,onInteractOutside:f,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:d,onDismiss:()=>m.onOpenChange(!1)},e.createElement(vl,a({"data-state":Tl(m.open),role:"dialog",id:m.contentId},v,p,{ref:n,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))}));function Tl(e){return e?"open":"closed"}const Ml=t=>{const{__scopePopover:n,children:r,open:o,defaultOpen:a,onOpenChange:l,modal:i=!1}=t,c=bl(n),s=e.useRef(null),[u,d]=e.useState(!1),[f=!1,p]=h({prop:o,defaultProp:a,onChange:l});return e.createElement(pl,c,e.createElement(El,{scope:n,contentId:m(),triggerRef:s,open:f,onOpenChange:p,onOpenToggle:e.useCallback((()=>p((e=>!e))),[p]),hasCustomAnchor:u,onCustomAnchorAdd:e.useCallback((()=>d(!0)),[]),onCustomAnchorRemove:e.useCallback((()=>d(!1)),[]),modal:i},r))},Il=xl,Ll=t=>{const{__scopePopover:n,forceMount:r,children:o,container:a}=t,l=_l(Cl,n);return e.createElement(Ol,{scope:n,forceMount:r},e.createElement(B,{present:r||l.open},e.createElement(V,{asChild:!0,container:a},o)))},Nl=Dl;var jl="Popover-modules_popoverContent__EQXkn",Hl=e.memo((function(t){var n,r=t.align,o=void 0===r?"center":r,a=t.childClass,l=void 0===a?"":a,i=t.children,c=void 0===i?"":i,s=t.content,u=void 0===s?"":s,d=t.isContentChild,f=void 0!==d&&d,p=t.isOpen,m=void 0!==p&&p,v=t.onOpen,h=t.className,g=void 0===h?"":h;return e.createElement(Ml,{open:m,onOpenChange:function(e){v&&v(e)}},e.createElement(Il,{className:l},c),e.createElement(Ll,null,e.createElement(Nl,{align:o,className:Nt("demio-ui-modal-content",jl,(n={},n[g]=!!g,n)),asChild:f},u)))}));const Zl="Progress",Fl=100,[Vl,Bl]=l(Zl),[Ul,zl]=Vl(Zl),Wl=e.forwardRef(((t,n)=>{const{__scopeProgress:r,value:o,max:l,getValueLabel:i=Kl,...c}=t,s=$l(l)?l:Fl,u=Xl(o,s)?o:null,d=Gl(u)?i(u,s):void 0;return e.createElement(Ul,{scope:r,value:u,max:s},e.createElement(_.div,a({"aria-valuemax":s,"aria-valuemin":0,"aria-valuenow":Gl(u)?u:void 0,"aria-valuetext":d,role:"progressbar","data-state":ql(u,s),"data-value":null!=u?u:void 0,"data-max":s},c,{ref:n})))}));Wl.propTypes={max(e,t,n){const r=e[t],o=String(r);return r&&!$l(r)?new Error(function(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`}(o,n)):null},value(e,t,n){const r=e[t],o=String(r),a=$l(e.max)?e.max:Fl;return null==r||Xl(r,a)?null:new Error(function(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:\n - a positive number\n - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)\n - \`null\` if the progress is indeterminate.\n\nDefaulting to \`null\`.`}(o,n))}};function Kl(e,t){return`${Math.round(e/t*100)}%`}function ql(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function Gl(e){return"number"==typeof e}function $l(e){return Gl(e)&&!isNaN(e)&&e>0}function Xl(e,t){return Gl(e)&&!isNaN(e)&&e<=t&&e>=0}const Yl=Wl,Jl=e.forwardRef(((t,n)=>{var r;const{__scopeProgress:o,...l}=t,i=zl("ProgressIndicator",o);return e.createElement(_.div,a({"data-state":ql(i.value,i.max),"data-value":null!==(r=i.value)&&void 0!==r?r:void 0,"data-max":i.max},l,{ref:n}))}));var Ql="Progress-modules_root__E0rHH",ei="Progress-modules_indicator__qpwRi";function ti(t){const n=t+"CollectionProvider",[r,o]=l(n),[a,i]=r(n,{collectionRef:{current:null},itemMap:new Map}),c=t+"CollectionSlot",u=t+"CollectionItemSlot",d="data-radix-collection-item";return[{Provider:t=>{const{scope:n,children:r}=t,o=e.useRef(null),l=e.useRef(new Map).current;return e.createElement(a,{scope:n,itemMap:l,collectionRef:o},r)},Slot:e.forwardRef(((t,n)=>{const{scope:r,children:o}=t,a=s(n,i(c,r).collectionRef);return e.createElement(g,{ref:a},o)})),ItemSlot:e.forwardRef(((t,n)=>{const{scope:r,children:o,...a}=t,l=e.useRef(null),c=s(n,l),f=i(u,r);return e.useEffect((()=>(f.itemMap.set(l,{ref:l,...a}),()=>{f.itemMap.delete(l)}))),e.createElement(g,{[d]:"",ref:c},o)}))},function(n){const r=i(t+"CollectionConsumer",n);return e.useCallback((()=>{const e=r.collectionRef.current;if(!e)return[];const t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(r.itemMap.values()).sort(((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current)))}),[r.collectionRef,r.itemMap])},o]}const ni=e.createContext(void 0);function ri(t){const n=e.useContext(ni);return t||n||"ltr"}const oi="rovingFocusGroup.onEntryFocus",ai={bubbles:!1,cancelable:!0},li="RovingFocusGroup",[ii,ci,si]=ti(li),[ui,di]=l(li,[si]),[fi,pi]=ui(li),mi=e.forwardRef(((t,n)=>e.createElement(ii.Provider,{scope:t.__scopeRovingFocusGroup},e.createElement(ii.Slot,{scope:t.__scopeRovingFocusGroup},e.createElement(vi,a({},t,{ref:n})))))),vi=e.forwardRef(((t,n)=>{const{__scopeRovingFocusGroup:r,orientation:o,loop:l=!1,dir:i,currentTabStopId:c,defaultCurrentTabStopId:d,onCurrentTabStopIdChange:f,onEntryFocus:p,...m}=t,g=e.useRef(null),w=s(n,g),y=ri(i),[b=null,E]=h({prop:c,defaultProp:d,onChange:f}),[x,C]=e.useState(!1),O=v(p),k=ci(r),A=e.useRef(!1),[D,S]=e.useState(0);return e.useEffect((()=>{const e=g.current;if(e)return e.addEventListener(oi,O),()=>e.removeEventListener(oi,O)}),[O]),e.createElement(fi,{scope:r,orientation:o,dir:y,loop:l,currentTabStopId:b,onItemFocus:e.useCallback((e=>E(e)),[E]),onItemShiftTab:e.useCallback((()=>C(!0)),[]),onFocusableItemAdd:e.useCallback((()=>S((e=>e+1))),[]),onFocusableItemRemove:e.useCallback((()=>S((e=>e-1))),[])},e.createElement(_.div,a({tabIndex:x||0===D?-1:0,"data-orientation":o},m,{ref:w,style:{outline:"none",...t.style},onMouseDown:u(t.onMouseDown,(()=>{A.current=!0})),onFocus:u(t.onFocus,(e=>{const t=!A.current;if(e.target===e.currentTarget&&t&&!x){const t=new CustomEvent(oi,ai);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){const e=k().filter((e=>e.focusable));wi([e.find((e=>e.active)),e.find((e=>e.id===b)),...e].filter(Boolean).map((e=>e.ref.current)))}}A.current=!1})),onBlur:u(t.onBlur,(()=>C(!1)))})))})),hi=e.forwardRef(((t,n)=>{const{__scopeRovingFocusGroup:r,focusable:o=!0,active:l=!1,tabStopId:i,...c}=t,s=m(),d=i||s,f=pi("RovingFocusGroupItem",r),p=f.currentTabStopId===d,v=ci(r),{onFocusableItemAdd:h,onFocusableItemRemove:g}=f;return e.useEffect((()=>{if(o)return h(),()=>g()}),[o,h,g]),e.createElement(ii.ItemSlot,{scope:r,id:d,focusable:o,active:l},e.createElement(_.span,a({tabIndex:p?0:-1,"data-orientation":f.orientation},c,{ref:n,onMouseDown:u(t.onMouseDown,(e=>{o?f.onItemFocus(d):e.preventDefault()})),onFocus:u(t.onFocus,(()=>f.onItemFocus(d))),onKeyDown:u(t.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void f.onItemShiftTab();if(e.target!==e.currentTarget)return;const t=function(e,t,n){const r=function(e,t){return"rtl"!==t?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===t&&["ArrowLeft","ArrowRight"].includes(r)||"horizontal"===t&&["ArrowUp","ArrowDown"].includes(r)?void 0:gi[r]}(e,f.orientation,f.dir);if(void 0!==t){e.preventDefault();let o=v().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===t)o.reverse();else if("prev"===t||"next"===t){"prev"===t&&o.reverse();const a=o.indexOf(e.currentTarget);o=f.loop?(r=a+1,(n=o).map(((e,t)=>n[(r+t)%n.length]))):o.slice(a+1)}setTimeout((()=>wi(o)))}var n,r}))})))})),gi={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function wi(e){const t=document.activeElement;for(const n of e){if(n===t)return;if(n.focus(),document.activeElement!==t)return}}const yi=mi,bi=hi,Ei="Radio",[_i,xi]=l(Ei),[Ci,Oi]=_i(Ei),ki=e.forwardRef(((t,n)=>{const{__scopeRadio:r,name:o,checked:l=!1,required:i,disabled:c,value:d="on",onCheck:f,...p}=t,[m,v]=e.useState(null),h=s(n,(e=>v(e))),g=e.useRef(!1),w=!m||Boolean(m.closest("form"));return e.createElement(Ci,{scope:r,checked:l,disabled:c},e.createElement(_.button,a({type:"button",role:"radio","aria-checked":l,"data-state":Si(l),"data-disabled":c?"":void 0,disabled:c,value:d},p,{ref:h,onClick:u(t.onClick,(e=>{l||null==f||f(),w&&(g.current=e.isPropagationStopped(),g.current||e.stopPropagation())}))})),w&&e.createElement(Di,{control:m,bubbles:!g.current,name:o,value:d,checked:l,required:i,disabled:c,style:{transform:"translateX(-100%)"}}))})),Ai=e.forwardRef(((t,n)=>{const{__scopeRadio:r,forceMount:o,...l}=t,i=Oi("RadioIndicator",r);return e.createElement(B,{present:o||i.checked},e.createElement(_.span,a({"data-state":Si(i.checked),"data-disabled":i.disabled?"":void 0},l,{ref:n})))})),Di=t=>{const{control:n,checked:r,bubbles:o=!0,...l}=t,i=e.useRef(null),c=zt(r),s=Wt(n);return e.useEffect((()=>{const e=i.current,t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,"checked").set;if(c!==r&&n){const t=new Event("click",{bubbles:o});n.call(e,r),e.dispatchEvent(t)}}),[c,r,o]),e.createElement("input",a({type:"radio","aria-hidden":!0,defaultChecked:r},l,{tabIndex:-1,ref:i,style:{...t.style,...s,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function Si(e){return e?"checked":"unchecked"}const Ri=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Pi="RadioGroup",[Ti,Mi]=l(Pi,[di,xi]),Ii=di(),Li=xi(),[Ni,ji]=Ti(Pi),Hi=e.forwardRef(((t,n)=>{const{__scopeRadioGroup:r,name:o,defaultValue:l,value:i,required:c=!1,disabled:s=!1,orientation:u,dir:d,loop:f=!0,onValueChange:p,...m}=t,v=Ii(r),g=ri(d),[w,y]=h({prop:i,defaultProp:l,onChange:p});return e.createElement(Ni,{scope:r,name:o,required:c,disabled:s,value:w,onValueChange:y},e.createElement(yi,a({asChild:!0},v,{orientation:u,dir:g,loop:f}),e.createElement(_.div,a({role:"radiogroup","aria-required":c,"aria-orientation":u,"data-disabled":s?"":void 0,dir:g},m,{ref:n}))))})),Zi=e.forwardRef(((t,n)=>{const{__scopeRadioGroup:r,disabled:o,...l}=t,i=ji("RadioGroupItem",r),c=i.disabled||o,d=Ii(r),f=Li(r),p=e.useRef(null),m=s(n,p),v=i.value===l.value,h=e.useRef(!1);return e.useEffect((()=>{const e=e=>{Ri.includes(e.key)&&(h.current=!0)},t=()=>h.current=!1;return document.addEventListener("keydown",e),document.addEventListener("keyup",t),()=>{document.removeEventListener("keydown",e),document.removeEventListener("keyup",t)}}),[]),e.createElement(bi,a({asChild:!0},d,{focusable:!c,active:v}),e.createElement(ki,a({disabled:c,required:i.required,checked:v},f,l,{name:i.name,ref:m,onCheck:()=>i.onValueChange(l.value),onKeyDown:u((e=>{"Enter"===e.key&&e.preventDefault()})),onFocus:u(l.onFocus,(()=>{var e;h.current&&(null===(e=p.current)||void 0===e||e.click())}))})))})),Fi=e.forwardRef(((t,n)=>{const{__scopeRadioGroup:r,...o}=t,l=Li(r);return e.createElement(Ai,a({},l,o,{ref:n}))}));var Vi={root:"RadioGroup-modules_root__AbbNa",container:"RadioGroup-modules_container__yPAMg",item:"RadioGroup-modules_item__wuUmn",indicator:"RadioGroup-modules_indicator__jEw97",label:"RadioGroup-modules_label__ggYdY",footer:"RadioGroup-modules_footer__1Zp99",disabled:"RadioGroup-modules_disabled__H3T--"};const Bi="Switch",[Ui,zi]=l(Bi),[Wi,Ki]=Ui(Bi),qi=e.forwardRef(((t,n)=>{const{__scopeSwitch:r,name:o,checked:l,defaultChecked:i,required:c,disabled:d,value:f="on",onCheckedChange:p,...m}=t,[v,g]=e.useState(null),w=s(n,(e=>g(e))),y=e.useRef(!1),b=!v||Boolean(v.closest("form")),[E=!1,x]=h({prop:l,defaultProp:i,onChange:p});return e.createElement(Wi,{scope:r,checked:E,disabled:d},e.createElement(_.button,a({type:"button",role:"switch","aria-checked":E,"aria-required":c,"data-state":$i(E),"data-disabled":d?"":void 0,disabled:d,value:f},m,{ref:w,onClick:u(t.onClick,(e=>{x((e=>!e)),b&&(y.current=e.isPropagationStopped(),y.current||e.stopPropagation())}))})),b&&e.createElement(Gi,{control:v,bubbles:!y.current,name:o,value:f,checked:E,required:c,disabled:d,style:{transform:"translateX(-100%)"}}))})),Gi=t=>{const{control:n,checked:r,bubbles:o=!0,...l}=t,i=e.useRef(null),c=zt(r),s=Wt(n);return e.useEffect((()=>{const e=i.current,t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,"checked").set;if(c!==r&&n){const t=new Event("click",{bubbles:o});n.call(e,r),e.dispatchEvent(t)}}),[c,r,o]),e.createElement("input",a({type:"checkbox","aria-hidden":!0,defaultChecked:r},l,{tabIndex:-1,ref:i,style:{...t.style,...s,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function $i(e){return e?"checked":"unchecked"}const Xi=qi,Yi=e.forwardRef(((t,n)=>{const{__scopeSwitch:r,...o}=t,l=Ki("SwitchThumb",r);return e.createElement(_.span,a({"data-state":$i(l.checked),"data-disabled":l.disabled?"":void 0},o,{ref:n}))}));var Ji="Switch-modules_root__V5S6a",Qi="Switch-modules_thumb__PZ-lR";const ec=e.forwardRef(((t,n)=>e.createElement(_.span,a({},t,{ref:n,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...t.style}})))),tc=ec,[nc,rc]=l("Tooltip",[tl]),oc=tl(),ac=700,lc="tooltip.open",[ic,cc]=nc("TooltipProvider"),sc="Tooltip",[uc,dc]=nc(sc),fc="TooltipTrigger",pc=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,...o}=t,l=dc(fc,r),i=cc(fc,r),c=oc(r),d=s(n,e.useRef(null),l.onTriggerChange),f=e.useRef(!1),p=e.useRef(!1),m=e.useCallback((()=>f.current=!1),[]);return e.useEffect((()=>()=>document.removeEventListener("pointerup",m)),[m]),e.createElement(ml,a({asChild:!0},c),e.createElement(_.button,a({"aria-describedby":l.open?l.contentId:void 0,"data-state":l.stateAttribute},o,{ref:d,onPointerMove:u(t.onPointerMove,(e=>{"touch"!==e.pointerType&&(p.current||i.isPointerInTransitRef.current||(l.onTriggerEnter(),p.current=!0))})),onPointerLeave:u(t.onPointerLeave,(()=>{l.onTriggerLeave(),p.current=!1})),onPointerDown:u(t.onPointerDown,(()=>{f.current=!0,document.addEventListener("pointerup",m,{once:!0})})),onFocus:u(t.onFocus,(()=>{f.current||l.onOpen()})),onBlur:u(t.onBlur,l.onClose),onClick:u(t.onClick,l.onClose)})))})),mc="TooltipPortal",[vc,hc]=nc(mc,{forceMount:void 0}),gc="TooltipContent",wc=e.forwardRef(((t,n)=>{const r=hc(gc,t.__scopeTooltip),{forceMount:o=r.forceMount,side:l="top",...i}=t,c=dc(gc,t.__scopeTooltip);return e.createElement(B,{present:o||c.open},c.disableHoverableContent?e.createElement(_c,a({side:l},i,{ref:n})):e.createElement(yc,a({side:l},i,{ref:n})))})),yc=e.forwardRef(((t,n)=>{const r=dc(gc,t.__scopeTooltip),o=cc(gc,t.__scopeTooltip),l=e.useRef(null),i=s(n,l),[c,u]=e.useState(null),{trigger:d,onClose:f}=r,p=l.current,{onPointerInTransitChange:m}=o,v=e.useCallback((()=>{u(null),m(!1)}),[m]),h=e.useCallback(((e,t)=>{const n=e.currentTarget,r={x:e.clientX,y:e.clientY},o=function(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,function(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,o,a)){case a:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}(r,n.getBoundingClientRect())),a=function(e){const t=e.slice();return t.sort(((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0)),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x)))break;t.pop()}t.push(r)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const r=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x)))break;n.pop()}n.push(r)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...o,...function(e){const{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}(t.getBoundingClientRect())]);u(a),m(!0)}),[m]);return e.useEffect((()=>()=>v()),[v]),e.useEffect((()=>{if(d&&p){const e=e=>h(e,p),t=e=>h(e,d);return d.addEventListener("pointerleave",e),p.addEventListener("pointerleave",t),()=>{d.removeEventListener("pointerleave",e),p.removeEventListener("pointerleave",t)}}}),[d,p,h,v]),e.useEffect((()=>{if(c){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},r=(null==d?void 0:d.contains(t))||(null==p?void 0:p.contains(t)),o=!function(e,t){const{x:n,y:r}=e;let o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const l=t[e].x,i=t[e].y,c=t[a].x,s=t[a].y;i>r!=s>r&&n<(c-l)*(r-i)/(s-i)+l&&(o=!o)}return o}(n,c);r?v():o&&(v(),f())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}}),[d,p,c,f,v]),e.createElement(_c,a({},t,{ref:i}))})),[bc,Ec]=nc(sc,{isInside:!1}),_c=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,children:o,"aria-label":l,onEscapeKeyDown:i,onPointerDownOutside:c,...s}=t,u=dc(gc,r),d=oc(r),{onClose:f}=u;return e.useEffect((()=>(document.addEventListener(lc,f),()=>document.removeEventListener(lc,f))),[f]),e.useEffect((()=>{if(u.trigger){const e=e=>{const t=e.target;null!=t&&t.contains(u.trigger)&&f()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[u.trigger,f]),e.createElement(D,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:f},e.createElement(vl,a({"data-state":u.stateAttribute},d,s,{ref:n,style:{...s.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"}}),e.createElement(y,null,o),e.createElement(bc,{scope:r,isInside:!0},e.createElement(tc,{id:u.contentId,role:"tooltip"},l||o))))}));const xc=t=>{const{__scopeTooltip:n,delayDuration:r=ac,skipDelayDuration:o=300,disableHoverableContent:a=!1,children:l}=t,[i,c]=e.useState(!0),s=e.useRef(!1),u=e.useRef(0);return e.useEffect((()=>{const e=u.current;return()=>window.clearTimeout(e)}),[]),e.createElement(ic,{scope:n,isOpenDelayed:i,delayDuration:r,onOpen:e.useCallback((()=>{window.clearTimeout(u.current),c(!1)}),[]),onClose:e.useCallback((()=>{window.clearTimeout(u.current),u.current=window.setTimeout((()=>c(!0)),o)}),[o]),isPointerInTransitRef:s,onPointerInTransitChange:e.useCallback((e=>{s.current=e}),[]),disableHoverableContent:a},l)},Cc=t=>{const{__scopeTooltip:n,children:r,open:o,defaultOpen:a=!1,onOpenChange:l,disableHoverableContent:i,delayDuration:c}=t,s=cc(sc,t.__scopeTooltip),u=oc(n),[d,f]=e.useState(null),p=m(),v=e.useRef(0),g=null!=i?i:s.disableHoverableContent,w=null!=c?c:s.delayDuration,y=e.useRef(!1),[b=!1,E]=h({prop:o,defaultProp:a,onChange:e=>{e?(s.onOpen(),document.dispatchEvent(new CustomEvent(lc))):s.onClose(),null==l||l(e)}}),_=e.useMemo((()=>b?y.current?"delayed-open":"instant-open":"closed"),[b]),x=e.useCallback((()=>{window.clearTimeout(v.current),y.current=!1,E(!0)}),[E]),C=e.useCallback((()=>{window.clearTimeout(v.current),E(!1)}),[E]),O=e.useCallback((()=>{window.clearTimeout(v.current),v.current=window.setTimeout((()=>{y.current=!0,E(!0)}),w)}),[w,E]);return e.useEffect((()=>()=>window.clearTimeout(v.current)),[]),e.createElement(pl,u,e.createElement(uc,{scope:n,contentId:p,open:b,stateAttribute:_,trigger:d,onTriggerChange:f,onTriggerEnter:e.useCallback((()=>{s.isOpenDelayed?O():x()}),[s.isOpenDelayed,O,x]),onTriggerLeave:e.useCallback((()=>{g?C():window.clearTimeout(v.current)}),[C,g]),onOpen:x,onClose:C,disableHoverableContent:g},r))},Oc=pc,kc=t=>{const{__scopeTooltip:n,forceMount:r,children:o,container:a}=t,l=dc(mc,n);return e.createElement(vc,{scope:n,forceMount:r},e.createElement(B,{present:r||l.open},e.createElement(V,{asChild:!0,container:a},o)))},Ac=wc,Dc=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,...o}=t,l=oc(r);return Ec("TooltipArrow",r).isInside?null:e.createElement(hl,a({},l,o,{ref:n}))}));var Sc="Tooltip-modules_content__--tK0",Rc="Tooltip-modules_arrow__4vjj8";function Pc(e,[t,n]){return Math.min(n,Math.max(t,e))}const Tc=[" ","Enter","ArrowUp","ArrowDown"],Mc=[" ","Enter"],Ic="Select",[Lc,Nc,jc]=ti(Ic),[Hc,Zc]=l(Ic,[jc,tl]),Fc=tl(),[Vc,Bc]=Hc(Ic),[Uc,zc]=Hc(Ic),Wc=e.forwardRef(((t,n)=>{const{__scopeSelect:r,disabled:o=!1,...l}=t,i=Fc(r),c=Bc("SelectTrigger",r),d=c.disabled||o,f=s(n,c.onTriggerChange),p=Nc(r),[m,v,h]=ws((e=>{const t=p().filter((e=>!e.disabled)),n=t.find((e=>e.value===c.value)),r=ys(t,e,n);void 0!==r&&c.onValueChange(r.value)})),g=()=>{d||(c.onOpenChange(!0),h())};return e.createElement(ml,a({asChild:!0},i),e.createElement(_.button,a({type:"button",role:"combobox","aria-controls":c.contentId,"aria-expanded":c.open,"aria-required":c.required,"aria-autocomplete":"none",dir:c.dir,"data-state":c.open?"open":"closed",disabled:d,"data-disabled":d?"":void 0,"data-placeholder":void 0===c.value?"":void 0},l,{ref:f,onClick:u(l.onClick,(e=>{e.currentTarget.focus()})),onPointerDown:u(l.onPointerDown,(e=>{const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&(g(),c.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)},e.preventDefault())})),onKeyDown:u(l.onKeyDown,(e=>{const t=""!==m.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||v(e.key),t&&" "===e.key||Tc.includes(e.key)&&(g(),e.preventDefault())}))})))})),Kc=e.forwardRef(((t,n)=>{const{__scopeSelect:r,className:o,style:l,children:i,placeholder:c,...u}=t,f=Bc("SelectValue",r),{onValueNodeHasChildrenChange:p}=f,m=void 0!==i,v=s(n,f.onValueNodeChange);return d((()=>{p(m)}),[p,m]),e.createElement(_.span,a({},u,{ref:v,style:{pointerEvents:"none"}}),void 0===f.value&&void 0!==c?c:i)})),qc=e.forwardRef(((t,n)=>{const{__scopeSelect:r,children:o,...l}=t;return e.createElement(_.span,a({"aria-hidden":!0},l,{ref:n}),o||"▼")})),Gc="SelectContent",$c=e.forwardRef(((n,r)=>{const o=Bc(Gc,n.__scopeSelect),[l,i]=e.useState();if(d((()=>{i(new DocumentFragment)}),[]),!o.open){const r=l;return r?t.createPortal(e.createElement(Yc,{scope:n.__scopeSelect},e.createElement(Lc.Slot,{scope:n.__scopeSelect},e.createElement("div",null,n.children))),r):null}return e.createElement(Qc,a({},n,{ref:r}))})),Xc=10,[Yc,Jc]=Hc(Gc),Qc=e.forwardRef(((t,n)=>{const{__scopeSelect:r,position:o="item-aligned",onCloseAutoFocus:l,onEscapeKeyDown:i,onPointerDownOutside:c,side:d,sideOffset:f,align:p,alignOffset:m,arrowPadding:v,collisionBoundary:h,collisionPadding:w,sticky:y,hideWhenDetached:b,avoidCollisions:E,..._}=t,x=Bc(Gc,r),[C,O]=e.useState(null),[k,A]=e.useState(null),S=s(n,(e=>O(e))),[R,P]=e.useState(null),[T,M]=e.useState(null),L=Nc(r),[N,j]=e.useState(!1),H=e.useRef(!1);e.useEffect((()=>{if(C)return Le(C)}),[C]),W();const Z=e.useCallback((e=>{const[t,...n]=L().map((e=>e.ref.current)),[r]=n.slice(-1),o=document.activeElement;for(const n of e){if(n===o)return;if(null==n||n.scrollIntoView({block:"nearest"}),n===t&&k&&(k.scrollTop=0),n===r&&k&&(k.scrollTop=k.scrollHeight),null==n||n.focus(),document.activeElement!==o)return}}),[L,k]),F=e.useCallback((()=>Z([R,C])),[Z,R,C]);e.useEffect((()=>{N&&F()}),[N,F]);const{onOpenChange:V,triggerPointerDownPosRef:B}=x;e.useEffect((()=>{if(C){let e={x:0,y:0};const t=t=>{var n,r,o,a;e={x:Math.abs(Math.round(t.pageX)-(null!==(n=null===(r=B.current)||void 0===r?void 0:r.x)&&void 0!==n?n:0)),y:Math.abs(Math.round(t.pageY)-(null!==(o=null===(a=B.current)||void 0===a?void 0:a.y)&&void 0!==o?o:0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():C.contains(n.target)||V(!1),document.removeEventListener("pointermove",t),B.current=null};return null!==B.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",n,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",n,{capture:!0})}}}),[C,V,B]),e.useEffect((()=>{const e=()=>V(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}}),[V]);const[U,z]=ws((e=>{const t=L().filter((e=>!e.disabled)),n=t.find((e=>e.ref.current===document.activeElement)),r=ys(t,e,n);r&&setTimeout((()=>r.ref.current.focus()))})),K=e.useCallback(((e,t,n)=>{const r=!H.current&&!n;(void 0!==x.value&&x.value===t||r)&&(P(e),r&&(H.current=!0))}),[x.value]),q=e.useCallback((()=>null==C?void 0:C.focus()),[C]),G=e.useCallback(((e,t,n)=>{const r=!H.current&&!n;(void 0!==x.value&&x.value===t||r)&&M(e)}),[x.value]),$="popper"===o?ts:es,X=$===ts?{side:d,sideOffset:f,align:p,alignOffset:m,arrowPadding:v,collisionBoundary:h,collisionPadding:w,sticky:y,hideWhenDetached:b,avoidCollisions:E}:{};return e.createElement(Yc,{scope:r,content:C,viewport:k,onViewportChange:A,itemRefCallback:K,selectedItem:R,onItemLeave:q,itemTextRefCallback:G,focusSelectedItem:F,selectedItemText:T,position:o,isPositioned:N,searchRef:U},e.createElement(De,{as:g,allowPinchZoom:!0},e.createElement(I,{asChild:!0,trapped:x.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:u(l,(e=>{var t;null===(t=x.trigger)||void 0===t||t.focus({preventScroll:!0}),e.preventDefault()}))},e.createElement(D,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:i,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>x.onOpenChange(!1)},e.createElement($,a({role:"listbox",id:x.contentId,"data-state":x.open?"open":"closed",dir:x.dir,onContextMenu:e=>e.preventDefault()},_,X,{onPlaced:()=>j(!0),ref:S,style:{display:"flex",flexDirection:"column",outline:"none",..._.style},onKeyDown:u(_.onKeyDown,(e=>{const t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||z(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=L().filter((e=>!e.disabled)).map((e=>e.ref.current));if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){const n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout((()=>Z(t))),e.preventDefault()}}))}))))))})),es=e.forwardRef(((t,n)=>{const{__scopeSelect:r,onPlaced:o,...l}=t,i=Bc(Gc,r),c=Jc(Gc,r),[u,f]=e.useState(null),[p,m]=e.useState(null),v=s(n,(e=>m(e))),h=Nc(r),g=e.useRef(!1),w=e.useRef(!0),{viewport:y,selectedItem:b,selectedItemText:E,focusSelectedItem:x}=c,C=e.useCallback((()=>{if(i.trigger&&i.valueNode&&u&&p&&y&&b&&E){const e=i.trigger.getBoundingClientRect(),t=p.getBoundingClientRect(),n=i.valueNode.getBoundingClientRect(),r=E.getBoundingClientRect();if("rtl"!==i.dir){const o=r.left-t.left,a=n.left-o,l=e.left-a,i=e.width+l,c=Math.max(i,t.width),s=window.innerWidth-Xc,d=Pc(a,[Xc,s-c]);u.style.minWidth=i+"px",u.style.left=d+"px"}else{const o=t.right-r.right,a=window.innerWidth-n.right-o,l=window.innerWidth-e.right-a,i=e.width+l,c=Math.max(i,t.width),s=window.innerWidth-Xc,d=Pc(a,[Xc,s-c]);u.style.minWidth=i+"px",u.style.right=d+"px"}const a=h(),l=window.innerHeight-2*Xc,c=y.scrollHeight,s=window.getComputedStyle(p),d=parseInt(s.borderTopWidth,10),f=parseInt(s.paddingTop,10),m=parseInt(s.borderBottomWidth,10),v=d+f+c+parseInt(s.paddingBottom,10)+m,w=Math.min(5*b.offsetHeight,v),_=window.getComputedStyle(y),x=parseInt(_.paddingTop,10),C=parseInt(_.paddingBottom,10),O=e.top+e.height/2-Xc,k=l-O,A=b.offsetHeight/2,D=d+f+(b.offsetTop+A),S=v-D;if(D<=O){const e=b===a[a.length-1].ref.current;u.style.bottom="0px";const t=p.clientHeight-y.offsetTop-y.offsetHeight,n=D+Math.max(k,A+(e?C:0)+t+m);u.style.height=n+"px"}else{const e=b===a[0].ref.current;u.style.top="0px";const t=Math.max(O,d+y.offsetTop+(e?x:0)+A)+S;u.style.height=t+"px",y.scrollTop=D-O+y.offsetTop}u.style.margin=`${Xc}px 0`,u.style.minHeight=w+"px",u.style.maxHeight=l+"px",null==o||o(),requestAnimationFrame((()=>g.current=!0))}}),[h,i.trigger,i.valueNode,u,p,y,b,E,i.dir,o]);d((()=>C()),[C]);const[O,k]=e.useState();d((()=>{p&&k(window.getComputedStyle(p).zIndex)}),[p]);const A=e.useCallback((e=>{e&&!0===w.current&&(C(),null==x||x(),w.current=!1)}),[C,x]);return e.createElement(ns,{scope:r,contentWrapper:u,shouldExpandOnScrollRef:g,onScrollButtonChange:A},e.createElement("div",{ref:f,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:O}},e.createElement(_.div,a({},l,{ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...l.style}}))))})),ts=e.forwardRef(((t,n)=>{const{__scopeSelect:r,align:o="start",collisionPadding:l=Xc,...i}=t,c=Fc(r);return e.createElement(vl,a({},c,i,{ref:n,align:o,collisionPadding:l,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))})),[ns,rs]=Hc(Gc,{}),os="SelectViewport",as=e.forwardRef(((t,n)=>{const{__scopeSelect:r,...o}=t,l=Jc(os,r),i=rs(os,r),c=s(n,l.onViewportChange),d=e.useRef(0);return e.createElement(e.Fragment,null,e.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),e.createElement(Lc.Slot,{scope:r},e.createElement(_.div,a({"data-radix-select-viewport":"",role:"presentation"},o,{ref:c,style:{position:"relative",flex:1,overflow:"auto",...o.style},onScroll:u(o.onScroll,(e=>{const t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=i;if(null!=r&&r.current&&n){const e=Math.abs(d.current-t.scrollTop);if(e>0){const r=window.innerHeight-2*Xc,o=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),l=Math.max(o,a);if(l<r){const o=l+e,a=Math.min(r,o),i=o-a;n.style.height=a+"px","0px"===n.style.bottom&&(t.scrollTop=i>0?i:0,n.style.justifyContent="flex-end")}}}d.current=t.scrollTop}))}))))}));Hc("SelectGroup");const ls="SelectItem",[is,cs]=Hc(ls),ss=e.forwardRef(((t,n)=>{const{__scopeSelect:r,value:o,disabled:l=!1,textValue:i,...c}=t,d=Bc(ls,r),f=Jc(ls,r),p=d.value===o,[v,h]=e.useState(null!=i?i:""),[g,w]=e.useState(!1),y=s(n,(e=>{var t;return null===(t=f.itemRefCallback)||void 0===t?void 0:t.call(f,e,o,l)})),b=m(),E=()=>{l||(d.onValueChange(o),d.onOpenChange(!1))};return e.createElement(is,{scope:r,value:o,disabled:l,textId:b,isSelected:p,onItemTextChange:e.useCallback((e=>{h((t=>{var n;return t||(null!==(n=null==e?void 0:e.textContent)&&void 0!==n?n:"").trim()}))}),[])},e.createElement(Lc.ItemSlot,{scope:r,value:o,disabled:l,textValue:v},e.createElement(_.div,a({role:"option","aria-labelledby":b,"data-highlighted":g?"":void 0,"aria-selected":p&&g,"data-state":p?"checked":"unchecked","aria-disabled":l||void 0,"data-disabled":l?"":void 0,tabIndex:l?void 0:-1},c,{ref:y,onFocus:u(c.onFocus,(()=>w(!0))),onBlur:u(c.onBlur,(()=>w(!1))),onPointerUp:u(c.onPointerUp,E),onPointerMove:u(c.onPointerMove,(e=>{var t;l?null===(t=f.onItemLeave)||void 0===t||t.call(f):e.currentTarget.focus({preventScroll:!0})})),onPointerLeave:u(c.onPointerLeave,(e=>{var t;e.currentTarget===document.activeElement&&(null===(t=f.onItemLeave)||void 0===t||t.call(f))})),onKeyDown:u(c.onKeyDown,(e=>{var t;""!==(null===(t=f.searchRef)||void 0===t?void 0:t.current)&&" "===e.key||(Mc.includes(e.key)&&E()," "===e.key&&e.preventDefault())}))}))))})),us="SelectItemText",ds=e.forwardRef(((n,r)=>{const{__scopeSelect:o,className:l,style:i,...c}=n,u=Bc(us,o),f=Jc(us,o),p=cs(us,o),m=zc(us,o),[v,h]=e.useState(null),g=s(r,(e=>h(e)),p.onItemTextChange,(e=>{var t;return null===(t=f.itemTextRefCallback)||void 0===t?void 0:t.call(f,e,p.value,p.disabled)})),w=null==v?void 0:v.textContent,y=e.useMemo((()=>e.createElement("option",{key:p.value,value:p.value,disabled:p.disabled},w)),[p.disabled,p.value,w]),{onNativeOptionAdd:b,onNativeOptionRemove:E}=m;return d((()=>(b(y),()=>E(y))),[b,E,y]),e.createElement(e.Fragment,null,e.createElement(_.span,a({id:p.textId},c,{ref:g})),p.isSelected&&u.valueNode&&!u.valueNodeHasChildren?t.createPortal(c.children,u.valueNode):null)})),fs="SelectScrollUpButton",ps=e.forwardRef(((t,n)=>{const r=Jc(fs,t.__scopeSelect),o=rs(fs,t.__scopeSelect),[l,i]=e.useState(!1),c=s(n,o.onScrollButtonChange);return d((()=>{if(r.viewport&&r.isPositioned){const e=r.viewport;function t(){const t=e.scrollTop>0;i(t)}return t(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}}),[r.viewport,r.isPositioned]),l?e.createElement(hs,a({},t,{ref:c,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}})):null})),ms="SelectScrollDownButton",vs=e.forwardRef(((t,n)=>{const r=Jc(ms,t.__scopeSelect),o=rs(ms,t.__scopeSelect),[l,i]=e.useState(!1),c=s(n,o.onScrollButtonChange);return d((()=>{if(r.viewport&&r.isPositioned){const e=r.viewport;function t(){const t=e.scrollHeight-e.clientHeight,n=Math.ceil(e.scrollTop)<t;i(n)}return t(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}}),[r.viewport,r.isPositioned]),l?e.createElement(hs,a({},t,{ref:c,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}})):null})),hs=e.forwardRef(((t,n)=>{const{__scopeSelect:r,onAutoScroll:o,...l}=t,i=Jc("SelectScrollButton",r),c=e.useRef(null),s=Nc(r),f=e.useCallback((()=>{null!==c.current&&(window.clearInterval(c.current),c.current=null)}),[]);return e.useEffect((()=>()=>f()),[f]),d((()=>{var e;const t=s().find((e=>e.ref.current===document.activeElement));null==t||null===(e=t.ref.current)||void 0===e||e.scrollIntoView({block:"nearest"})}),[s]),e.createElement(_.div,a({"aria-hidden":!0},l,{ref:n,style:{flexShrink:0,...l.style},onPointerDown:u(l.onPointerDown,(()=>{null===c.current&&(c.current=window.setInterval(o,50))})),onPointerMove:u(l.onPointerMove,(()=>{var e;null===(e=i.onItemLeave)||void 0===e||e.call(i),null===c.current&&(c.current=window.setInterval(o,50))})),onPointerLeave:u(l.onPointerLeave,(()=>{f()}))}))})),gs=e.forwardRef(((t,n)=>{const{value:r,...o}=t,l=e.useRef(null),i=s(n,l),c=zt(r);return e.useEffect((()=>{const e=l.current,t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,"value").set;if(c!==r&&n){const t=new Event("change",{bubbles:!0});n.call(e,r),e.dispatchEvent(t)}}),[c,r]),e.createElement(ec,{asChild:!0},e.createElement("select",a({},o,{ref:i,defaultValue:r})))}));function ws(t){const n=v(t),r=e.useRef(""),o=e.useRef(0),a=e.useCallback((e=>{const t=r.current+e;n(t),function e(t){r.current=t,window.clearTimeout(o.current),""!==t&&(o.current=window.setTimeout((()=>e("")),1e3))}(t)}),[n]),l=e.useCallback((()=>{r.current="",window.clearTimeout(o.current)}),[]);return e.useEffect((()=>()=>window.clearTimeout(o.current)),[]),[r,a,l]}function ys(e,t,n){const r=t.length>1&&Array.from(t).every((e=>e===t[0]))?t[0]:t,o=n?e.indexOf(n):-1;let a=(l=e,i=Math.max(o,0),l.map(((e,t)=>l[(i+t)%l.length])));var l,i;1===r.length&&(a=a.filter((e=>e!==n)));const c=a.find((e=>e.textValue.toLowerCase().startsWith(r.toLowerCase())));return c!==n?c:void 0}gs.displayName="BubbleSelect";const bs=t=>{const{__scopeSelect:n,children:r,open:o,defaultOpen:a,onOpenChange:l,value:i,defaultValue:c,onValueChange:s,dir:u,name:d,autoComplete:f,disabled:p,required:v}=t,g=Fc(n),[w,y]=e.useState(null),[b,E]=e.useState(null),[_,x]=e.useState(!1),C=ri(u),[O=!1,k]=h({prop:o,defaultProp:a,onChange:l}),[A,D]=h({prop:i,defaultProp:c,onChange:s}),S=e.useRef(null),R=!w||Boolean(w.closest("form")),[P,T]=e.useState(new Set),M=Array.from(P).map((e=>e.props.value)).join(";");return e.createElement(pl,g,e.createElement(Vc,{required:v,scope:n,trigger:w,onTriggerChange:y,valueNode:b,onValueNodeChange:E,valueNodeHasChildren:_,onValueNodeHasChildrenChange:x,contentId:m(),value:A,onValueChange:D,open:O,onOpenChange:k,dir:C,triggerPointerDownPosRef:S,disabled:p},e.createElement(Lc.Provider,{scope:n},e.createElement(Uc,{scope:t.__scopeSelect,onNativeOptionAdd:e.useCallback((e=>{T((t=>new Set(t).add(e)))}),[]),onNativeOptionRemove:e.useCallback((e=>{T((t=>{const n=new Set(t);return n.delete(e),n}))}),[])},r)),R?e.createElement(gs,{key:M,"aria-hidden":!0,required:v,tabIndex:-1,name:d,autoComplete:f,value:A,onChange:e=>D(e.target.value),disabled:p},void 0===A?e.createElement("option",{value:""}):null,Array.from(P)):null))},Es=Wc,_s=Kc,xs=qc,Cs=$c,Os=as,ks=ss,As=ds,Ds=ps,Ss=vs;var Rs="Select-modules_trigger__dS9Dx",Ps="Select-modules_icon__sgRRc",Ts="Select-modules_startIcon__kohMV",Ms="Select-modules_value__h6Q4Z",Is="Select-modules_content__YuAqS",Ls="Select-modules_item__cTAIm",Ns=e.forwardRef((function(t,n){var r=t.children,o=t.sideOffset,a=void 0===o?4:o,l=t.position,i=void 0===l?"popper":l,c=t.disabled,s=void 0!==c&&c,u=t.value,d=void 0===u?"":u,f=t.id,p=t.icon,m=void 0===p?null:p,v=t.placeholder,h=void 0===v?"":v,g=G(t,["children","sideOffset","position","disabled","value","id","icon","placeholder"]);return e.createElement(bs,q({value:d||void 0,disabled:s},g),e.createElement(Es,{id:f,ref:n,className:Rs},m&&e.createElement("span",{className:Ts},m),e.createElement("span",{className:Ms},e.createElement(_s,{placeholder:h})),e.createElement(xs,{className:Ps},e.createElement(wn,null))),e.createElement(Cs,{position:i,className:Is,sideOffset:a},e.createElement(Os,null,e.createElement(Ds,null,"ChevronUpIcon"),e.createElement(Os,null,r),e.createElement(Ss,null,"ChevronDownIcon"))))})),js=e.forwardRef((function(t,n){var r=t.children,o=t.disabled,a=void 0!==o&&o,l=G(t,["children","disabled"]);return e.createElement(ks,q({},l,{ref:n,className:Ls,disabled:a}),r)})),Hs=As;const Zs="Tabs",[Fs,Vs]=l(Zs,[di]),Bs=di(),[Us,zs]=Fs(Zs);function Ws(e,t){return`${e}-trigger-${t}`}function Ks(e,t){return`${e}-content-${t}`}const qs=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,onValueChange:l,defaultValue:i,orientation:c="horizontal",dir:s,activationMode:u="automatic",...d}=t,f=ri(s),[p,v]=h({prop:o,onChange:l,defaultProp:i});return e.createElement(Us,{scope:r,baseId:m(),value:p,onValueChange:v,orientation:c,dir:f,activationMode:u},e.createElement(_.div,a({dir:f,"data-orientation":c},d,{ref:n})))})),Gs=e.forwardRef(((t,n)=>{const{__scopeTabs:r,loop:o=!0,...l}=t,i=zs("TabsList",r),c=Bs(r);return e.createElement(yi,a({asChild:!0},c,{orientation:i.orientation,dir:i.dir,loop:o}),e.createElement(_.div,a({role:"tablist","aria-orientation":i.orientation},l,{ref:n})))})),$s=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,disabled:l=!1,...i}=t,c=zs("TabsTrigger",r),s=Bs(r),d=Ws(c.baseId,o),f=Ks(c.baseId,o),p=o===c.value;return e.createElement(bi,a({asChild:!0},s,{focusable:!l,active:p}),e.createElement(_.button,a({type:"button",role:"tab","aria-selected":p,"aria-controls":f,"data-state":p?"active":"inactive","data-disabled":l?"":void 0,disabled:l,id:d},i,{ref:n,onMouseDown:u(t.onMouseDown,(e=>{l||0!==e.button||!1!==e.ctrlKey?e.preventDefault():c.onValueChange(o)})),onKeyDown:u(t.onKeyDown,(e=>{[" ","Enter"].includes(e.key)&&c.onValueChange(o)})),onFocus:u(t.onFocus,(()=>{const e="manual"!==c.activationMode;p||l||!e||c.onValueChange(o)}))})))})),Xs=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,forceMount:l,children:i,...c}=t,s=zs("TabsContent",r),u=Ws(s.baseId,o),d=Ks(s.baseId,o),f=o===s.value,p=e.useRef(f);return e.useEffect((()=>{const e=requestAnimationFrame((()=>p.current=!1));return()=>cancelAnimationFrame(e)}),[]),e.createElement(B,{present:l||f},(({present:r})=>e.createElement(_.div,a({"data-state":f?"active":"inactive","data-orientation":s.orientation,role:"tabpanel","aria-labelledby":u,hidden:!r,id:d,tabIndex:0},c,{ref:n,style:{...t.style,animationDuration:p.current?"0s":void 0}}),r&&i)))}));var Ys="Tabs-modules_root__TvYE1",Js="Tabs-modules_list__G3KVd",Qs="Tabs-modules_tab__-FuG6",eu="Tabs-modules_content__X0OLh";exports.Alert=function(t){var n=t.open,r=t.actionText,o=void 0===r?"OK":r,a=t.onActionClick,l=t.cancelText,i=void 0===l?"Cancel":l,c=t.onCancelClick,s=t.title,u=t.description,d=void 0===u?"":u,f=t.showLoader,p=void 0!==f&&f,m=t.isOkDisabled,v=void 0!==m&&m,h=t.actionButtonType,g=void 0===h?"danger":h,w=t.maxWidth,y=void 0===w?"540px":w,b=t.onClose;return e.createElement(xt,{open:n},e.createElement(Ct,{className:Zt.portal},e.createElement(Ot,{className:Zt.overlay}),e.createElement(kt,{className:Nt("demio-ui-alert",Zt.content),style:{maxWidth:y}},e.createElement("button",{className:Zt.close,onClick:b||c,"data-testid":"close-button"},e.createElement(Ht,null)),e.createElement(St,{className:Zt.title},s),d&&e.createElement(Rt,{className:Zt.description},d),e.createElement("div",{className:Zt.buttons},e.createElement(Dt,{asChild:!0},e.createElement(Ut,{onClick:c,variant:"outline"},i)),e.createElement(At,{asChild:!0},e.createElement(Ut,{onClick:a,disabled:v,variant:g,showLoader:p},o))))))},exports.Button=Ut,exports.Checkbox=function(t){var n,r=t.children,o=t.id,a=t.checked,l=void 0!==a&&a,i=t.onChange,c=t.disabled,s=void 0!==c&&c,u=t.defaultChecked,d=void 0!==u&&u,f=t.name,p=void 0===f?"":f,m=t.value,v=G(t,["children","id","checked","onChange","disabled","defaultChecked","name","value"]),h=e.useMemo((function(){return i?{checked:l,onCheckedChange:function(e){return i({checked:e,name:p||o,value:void 0!==m?m:r||""})}}:{}}),[l,i,p,o,m,r]);return e.createElement("div",{className:Nt("demio-ui-checkbox",an,(n={},n[dn]=s,n))},e.createElement(tn,q({},v,h,{className:ln,defaultChecked:d,id:o,name:p||o,disabled:s}),e.createElement(nn,{className:sn},e.createElement(jn,null)),e.createElement("span",{className:Nt(sn,cn)},e.createElement(Vn,null))),e.createElement(Co,{className:un,htmlFor:o,weight:"regular"},r))},exports.FormGroup=function(t){var n,r=t.children,o=t.position,a=void 0===o?"vertical":o,l=t.justify,i=void 0===l?"start":l,c=t.alignItems,s=void 0===c?"start":c;return e.createElement("div",{className:Nt("demio-ui-form-group",Oo.formGroup,(n={},n[Oo.horizontal]="horizontal"===a,n[Oo.vertical]="vertical"===a,n[Oo[i]]=!!i,n[Oo["".concat(s,"AlignItems")]]=!!s,n))},r)},exports.Input=So,exports.InputHint=Do,exports.Label=Co,exports.Loader=Bt,exports.Modal=function(t){var n,r,o,a=t.children,l=t.contentClassName,i=void 0===l?"":l,c=t.hideCloseButton,s=void 0!==c&&c,u=t.maxHeight,d=void 0===u?"auto":u,f=t.open,p=t.onOpenChange,m=t.overlayClassName,v=void 0===m?"":m,h=t.title,g=t.width,w=void 0===g?"432px":g;return e.createElement(at,{open:f,onOpenChange:p},e.createElement(lt,null,e.createElement(it,{className:Nt("demio-ui-modal-overlay",Ro,(n={},n[v]=!!v,n))},e.createElement(ct,{className:Nt("demio-ui-modal-content",Lo,(r={},r[i]=!!i,r)),style:{maxHeight:d,width:w}},e.createElement("div",{className:Po,"data-html":"header"},h&&e.createElement(st,{className:Nt(Mo,(o={},o[Io]=!!s,o)),"data-html":"title"},h),!s&&e.createElement(dt,{className:To,"data-html":"close-btn"},e.createElement(Ht,null))),e.createElement("div",{className:No,"data-html":"content"},a)))))},exports.Popover=Hl,exports.Progress=function(t){var n=t.max,r=void 0===n?100:n,o=t.progress,a=void 0===o?0:o,l=t.className,i=void 0===l?"":l,c=G(t,["max","progress","className"]),s=a>r?"100%":"".concat(a/r*100,"%");return e.createElement(Yl,q({className:Nt("demio-ui-progress",Ql,{className:!!i}),value:a>r?r:a,max:r},c),e.createElement(Jl,{className:ei,style:{width:s}}))},exports.RadioGroup=function(t){var n,r=t.items,o=void 0===r?[]:r,a=t.error,l=void 0===a?"":a,i=t.defaultValue,c=void 0===i?"":i,s=t.ariaLabel,u=void 0===s?"":s,d=t.hint,f=void 0===d?"":d,p=t.onChange,m=t.disabled,v=void 0!==m&&m,h=t.value,g=void 0===h?"":h,w=t.className,y=void 0===w?"":w,b=G(t,["items","error","defaultValue","ariaLabel","hint","onChange","disabled","value","className"]),E=e.useMemo((function(){return p?{value:g,onValueChange:p}:{}}),[g,p]);return e.createElement(Hi,q({},E,b,{className:Nt("demio-ui-radio-group",Vi.root,(n={},n[Vi.error]=!!l,n[y]=!!y,n)),defaultValue:c,"aria-label":u}),o.map((function(t){var n;return e.createElement("div",{key:t.id,className:Nt(Vi.container,(n={},n[Vi.disabled]=t.disabled||v,n))},e.createElement(Zi,{className:Vi.item,value:t.value,disabled:t.disabled||v,id:t.id},e.createElement(Fi,{className:Vi.indicator})),e.createElement(Co,{className:Vi.label,htmlFor:t.id,weight:"regular"},t.label))})),e.createElement("div",{className:Vi.footer},l&&e.createElement(Do,{type:"error"},l),f&&!l&&e.createElement(Do,null,f)))},exports.Select=Ns,exports.SelectItem=js,exports.SelectItemText=Hs,exports.Switch=function(t){var n,r=t.className,o=void 0===r?"":r,a=t.id,l=void 0===a?"":a,i=t.disabled,c=void 0!==i&&i,s=t.required,u=void 0!==s&&s,d=t.name,f=G(t,["className","id","disabled","required","name"]);return e.createElement(Xi,q({className:Nt(Ji,"demio-ui-switch",(n={},n[o]=!!o,n)),disabled:c,required:u,name:d,id:l||d},f),e.createElement(Yi,{className:Qi}))},exports.Tab=function(t){var n,r=t.children,o=t.className,a=void 0===o?"":o,l=G(t,["children","className"]);return e.createElement($s,q({},l,{className:Nt(Qs,(n={},n[a]=a,n))}),r)},exports.TabsContent=function(t){var n,r=t.children,o=t.value,a=t.className,l=void 0===a?"":a;return e.createElement(Xs,{value:o,className:Nt(eu,"demio-ui-tabs-tab",(n={},n[l]=l,n))},r)},exports.TabsList=function(t){var n,r=t.children,o=t.className,a=void 0===o?"":o;return e.createElement(Gs,{className:Nt(Js,"demio-ui-tabs-list",(n={},n[a]=a,n))},r)},exports.TabsRoot=function(t){var n,r=t.children,o=t.className,a=void 0===o?"":o,l=G(t,["children","className"]);return e.createElement(qs,q({},l,{className:Nt(Ys,"demio-ui-tabs",(n={},n[a]=a,n))}),r)},exports.Tooltip=function(t){var n,r=t.children,o=t.content,a=t.open,l=t.defaultOpen,i=t.onOpenChange,c=t.side,s=void 0===c?"top":c,u=t.align,d=void 0===u?"center":u,f=t.className,p=void 0===f?"":f,m=t.delayDuration,v=void 0===m?200:m,h=t.sideOffset,g=void 0===h?4:h,w=t.isPortal,y=void 0!==w&&w,b=G(t,["children","content","open","defaultOpen","onOpenChange","side","align","className","delayDuration","sideOffset","isPortal"]),E=e.createElement(Ac,q({sideOffset:g,side:s,align:d},b,{className:Nt(Sc,"demio-ui-tooltip",(n={},n[p]=p,n))}),o,e.createElement(Dc,{className:Rc,width:11,height:5}));return o?e.createElement(xc,null,e.createElement(Cc,{delayDuration:v,open:a,defaultOpen:l,onOpenChange:i},e.createElement(Oc,{asChild:!0},r),y?e.createElement(kc,null,E):E)):r},exports.icons=bo;
6
+ */Tt=Mt,function(){var e={}.hasOwnProperty;function t(){for(var n=[],r=0;r<arguments.length;r++){var o=arguments[r];if(o){var a=typeof o;if("string"===a||"number"===a)n.push(o);else if(Array.isArray(o)){if(o.length){var l=t.apply(null,o);l&&n.push(l)}}else if("object"===a){if(o.toString!==Object.prototype.toString&&!o.toString.toString().includes("[native code]")){n.push(o.toString());continue}for(var i in o)e.call(o,i)&&o[i]&&n.push(i)}}}return n.join(" ")}Tt.exports?(t.default=t,Tt.exports=t):window.classNames=t}();var It,Lt,Nt=Pt(Mt.exports);function jt(){return jt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},jt.apply(this,arguments)}var Ht=function(e){return r.createElement("svg",jt({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"close_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},It||(It=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Lt||(Lt=r.createElement("g",{mask:"url(#close_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m12 13.054-5.073 5.073a.724.724 0 0 1-.522.212.707.707 0 0 1-.532-.212.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527L10.946 12 5.873 6.927a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.532.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 10.946l5.073-5.073a.724.724 0 0 1 .522-.212.707.707 0 0 1 .532.212c.145.145.217.32.217.527a.717.717 0 0 1-.217.527L13.054 12l5.073 5.073c.138.139.21.313.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.217L12 13.054Z"}))))},Zt={overlay:"Alert-modules_overlay__4XRHj","overlay-show":"Alert-modules_overlay-show__rdwHo",close:"Alert-modules_close__dyL0l",content:"Alert-modules_content__Y7nMS","content-show":"Alert-modules_content-show__ncLtG",title:"Alert-modules_title__e8UHT",description:"Alert-modules_description__wyWR-",buttons:"Alert-modules_buttons__cOEDw"},Ft={button:"Button-modules_button__tpJr3",secondary:"Button-modules_secondary__JGOIF",outline:"Button-modules_outline__R9gjd",danger:"Button-modules_danger__eTzli",small:"Button-modules_small__dNTOw",large:"Button-modules_large__5tvgy",prefix:"Button-modules_prefix__86hpR",suffix:"Button-modules_suffix__5uHiO",fullWidth:"Button-modules_fullWidth__3ET8J"},Vt={loader:"Loader-modules_loader__waPdv",rotate:"Loader-modules_rotate__vBNW3",spin:"Loader-modules_spin__i7TnV",small:"Loader-modules_small__ACDdJ",inheritColor:"Loader-modules_inheritColor__4aWvb"};function Bt(t){var n,r=t.size,o=void 0===r?"medium":r,a=t.className,l=void 0===a?"":a,i=t.inheritColor,c=void 0!==i&&i;return e.createElement("span",{className:Nt("demio-ui-loader",Vt.loader,(n={},n[Vt[o]]=o,n[Vt.inheritColor]=c,n[l]=l,n))})}var Ut=e.forwardRef((function(t,n){var r,o=t.disabled,a=void 0!==o&&o,l=t.children,i=t.onClick,c=t.size,s=void 0===c?"medium":c,u=t.variant,d=void 0===u?"primary":u,f=t.type,p=void 0===f?"button":f,m=t.prefix,v=void 0===m?"":m,h=t.suffix,g=void 0===h?"":h,w=t.className,y=void 0===w?"":w,b=t.fullWidth,E=void 0!==b&&b,_=t.showLoader,x=void 0!==_&&_,C=G(t,["disabled","children","onClick","size","variant","type","prefix","suffix","className","fullWidth","showLoader"]);return e.createElement("button",q({ref:n,type:p,disabled:a,className:Nt("demio-ui-button",Ft.button,(r={},r[y]=y,r[Ft[s]]=s,r[Ft[d]]=d,r[Ft.fullWidth]=E,r)),onClick:i},C),(v||x)&&e.createElement("span",{className:Ft.prefix},x?e.createElement(Bt,{size:"small",inheritColor:!0}):v),l,g&&e.createElement("span",{className:Ft.suffix},g))}));function zt(t){const n=e.useRef({value:t,previous:t});return e.useMemo((()=>(n.current.value!==t&&(n.current.previous=n.current.value,n.current.value=t),n.current.previous)),[t])}function Wt(t){const[n,r]=e.useState(void 0);return d((()=>{if(t){r({width:t.offsetWidth,height:t.offsetHeight});const e=new ResizeObserver((e=>{if(!Array.isArray(e))return;if(!e.length)return;const n=e[0];let o,a;if("borderBoxSize"in n){const e=n.borderBoxSize,t=Array.isArray(e)?e[0]:e;o=t.inlineSize,a=t.blockSize}else o=t.offsetWidth,a=t.offsetHeight;r({width:o,height:a})}));return e.observe(t,{box:"border-box"}),()=>e.unobserve(t)}r(void 0)}),[t]),n}const Kt="Checkbox",[qt,Gt]=l(Kt),[$t,Xt]=qt(Kt),Yt=e.forwardRef(((t,n)=>{const{__scopeCheckbox:r,name:o,checked:l,defaultChecked:i,required:c,disabled:d,value:f="on",onCheckedChange:p,...m}=t,[v,g]=e.useState(null),w=s(n,(e=>g(e))),y=e.useRef(!1),b=!v||Boolean(v.closest("form")),[E=!1,x]=h({prop:l,defaultProp:i,onChange:p}),C=e.useRef(E);return e.useEffect((()=>{const e=null==v?void 0:v.form;if(e){const t=()=>x(C.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}}),[v,x]),e.createElement($t,{scope:r,state:E,disabled:d},e.createElement(_.button,a({type:"button",role:"checkbox","aria-checked":Qt(E)?"mixed":E,"aria-required":c,"data-state":en(E),"data-disabled":d?"":void 0,disabled:d,value:f},m,{ref:w,onKeyDown:u(t.onKeyDown,(e=>{"Enter"===e.key&&e.preventDefault()})),onClick:u(t.onClick,(e=>{x((e=>!!Qt(e)||!e)),b&&(y.current=e.isPropagationStopped(),y.current||e.stopPropagation())}))})),b&&e.createElement(Jt,{control:v,bubbles:!y.current,name:o,value:f,checked:E,required:c,disabled:d,style:{transform:"translateX(-100%)"}}))})),Jt=t=>{const{control:n,checked:r,bubbles:o=!0,...l}=t,i=e.useRef(null),c=zt(r),s=Wt(n);return e.useEffect((()=>{const e=i.current,t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,"checked").set;if(c!==r&&n){const t=new Event("click",{bubbles:o});e.indeterminate=Qt(r),n.call(e,!Qt(r)&&r),e.dispatchEvent(t)}}),[c,r,o]),e.createElement("input",a({type:"checkbox","aria-hidden":!0,defaultChecked:!Qt(r)&&r},l,{tabIndex:-1,ref:i,style:{...t.style,...s,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function Qt(e){return"indeterminate"===e}function en(e){return Qt(e)?"indeterminate":e?"checked":"unchecked"}const tn=Yt,nn=e.forwardRef(((t,n)=>{const{__scopeCheckbox:r,forceMount:o,...l}=t,i=Xt("CheckboxIndicator",r);return e.createElement(B,{present:o||Qt(i.state)||!0===i.state},e.createElement(_.span,a({"data-state":en(i.state),"data-disabled":i.disabled?"":void 0},l,{ref:n,style:{pointerEvents:"none",...t.style}})))}));var rn,on,an="Checkbox-modules_container__psQsQ",ln="Checkbox-modules_root__iysyc",cn="Checkbox-modules_uncheckIcon__fVOb2",sn="Checkbox-modules_indicator__JaSwR",un="Checkbox-modules_label__4TV-f",dn="Checkbox-modules_disabled__eKbuP";function fn(){return fn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},fn.apply(this,arguments)}var pn,mn;function vn(){return vn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},vn.apply(this,arguments)}var hn,gn,wn=function(e){return r.createElement("svg",vn({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"keyboard_arrow_down_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},pn||(pn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),mn||(mn=r.createElement("g",{mask:"url(#keyboard_arrow_down_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 14.677a.93.93 0 0 1-.34-.066.84.84 0 0 1-.293-.19L6.873 9.927a.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 12.946l4.073-4.073a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217.145.145.217.32.217.527a.717.717 0 0 1-.217.527l-4.494 4.494a.83.83 0 0 1-.633.256Z"}))))};function yn(){return yn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yn.apply(this,arguments)}var bn,En;function _n(){return _n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_n.apply(this,arguments)}var xn,Cn;function On(){return On=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},On.apply(this,arguments)}var kn,An;function Dn(){return Dn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Dn.apply(this,arguments)}var Sn,Rn;function Pn(){return Pn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Pn.apply(this,arguments)}var Tn,Mn;function In(){return In=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},In.apply(this,arguments)}var Ln,Nn,jn=function(e){return r.createElement("svg",In({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"checkbox_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Tn||(Tn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Mn||(Mn=r.createElement("g",{mask:"url(#checkbox_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"m10.6 13.4-2.15-2.15a.948.948 0 0 0-.7-.275.948.948 0 0 0-.7.275.948.948 0 0 0-.275.7c0 .283.092.517.275.7L9.9 15.5c.2.2.433.3.7.3.267 0 .5-.1.7-.3l5.65-5.65a.948.948 0 0 0 .275-.7.948.948 0 0 0-.275-.7.948.948 0 0 0-.7-.275.948.948 0 0 0-.7.275L10.6 13.4ZM5 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 19V5c0-.55.196-1.02.587-1.413A1.926 1.926 0 0 1 5 3h14c.55 0 1.02.196 1.413.587C20.803 3.98 21 4.45 21 5v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 21H5Z"}))))};function Hn(){return Hn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Hn.apply(this,arguments)}var Zn,Fn,Vn=function(e){return r.createElement("svg",Hn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"checkbox_uncheck_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ln||(Ln=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Nn||(Nn=r.createElement("g",{mask:"url(#checkbox_uncheck_svg__a)"},r.createElement("path",{fill:"#838B97",d:"M5 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 19V5c0-.55.196-1.02.587-1.413A1.926 1.926 0 0 1 5 3h14c.55 0 1.02.196 1.413.587C20.803 3.98 21 4.45 21 5v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 21H5Zm0-2h14V5H5v14Z"}))))};function Bn(){return Bn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Bn.apply(this,arguments)}var Un,zn;function Wn(){return Wn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Wn.apply(this,arguments)}var Kn,qn;function Gn(){return Gn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Gn.apply(this,arguments)}var $n,Xn;function Yn(){return Yn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Yn.apply(this,arguments)}var Jn,Qn;function er(){return er=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},er.apply(this,arguments)}var tr,nr;function rr(){return rr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},rr.apply(this,arguments)}var or,ar;function lr(){return lr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},lr.apply(this,arguments)}var ir,cr;function sr(){return sr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},sr.apply(this,arguments)}var ur;function dr(){return dr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},dr.apply(this,arguments)}var fr,pr;function mr(){return mr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},mr.apply(this,arguments)}var vr,hr;function gr(){return gr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},gr.apply(this,arguments)}var wr,yr;function br(){return br=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},br.apply(this,arguments)}var Er,_r;function xr(){return xr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},xr.apply(this,arguments)}var Cr,Or;function kr(){return kr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},kr.apply(this,arguments)}var Ar;function Dr(){return Dr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Dr.apply(this,arguments)}var Sr,Rr=function(e){return r.createElement("svg",Dr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 22 16"},e),Ar||(Ar=r.createElement("path",{fill:"#838B97",d:"M11 2.335a9.77 9.77 0 0 1 8.82 5.5 9.76 9.76 0 0 1-8.82 5.5 9.76 9.76 0 0 1-8.82-5.5 9.77 9.77 0 0 1 8.82-5.5zm0-2c-5 0-9.27 3.11-11 7.5 1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zm0 5a2.5 2.5 0 0 1 0 5 2.5 2.5 0 0 1 0-5zm0-2c-2.48 0-4.5 2.02-4.5 4.5s2.02 4.5 4.5 4.5 4.5-2.02 4.5-4.5-2.02-4.5-4.5-4.5z"})))};function Pr(){return Pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Pr.apply(this,arguments)}var Tr,Mr=function(e){return r.createElement("svg",Pr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 20"},e),Sr||(Sr=r.createElement("path",{fill:"#838B97",d:"M23.775 17.898 1.35.367A.6.6 0 0 0 .507.46L.132.93a.6.6 0 0 0 .093.844l22.425 17.53a.6.6 0 0 0 .843-.093l.375-.468a.6.6 0 0 0-.093-.844zM11.13 5.728l5.054 3.952a4.189 4.189 0 0 0-5.055-3.952zm1.74 8.215L7.816 9.99a4.19 4.19 0 0 0 5.054 3.952zM12 4.435c3.7 0 7.09 2.063 8.922 5.4a10.71 10.71 0 0 1-1.65 2.258l1.416 1.106a12.518 12.518 0 0 0 1.983-2.817 1.214 1.214 0 0 0 0-1.094C20.636 5.32 16.61 2.635 12 2.635c-1.376 0-2.69.263-3.924.706l1.74 1.36A9.843 9.843 0 0 1 12 4.435zm0 10.8c-3.7 0-7.09-2.062-8.922-5.4.45-.821 1.004-1.58 1.651-2.257L3.314 6.472a12.51 12.51 0 0 0-1.983 2.816 1.213 1.213 0 0 0 0 1.095C3.364 14.35 7.39 17.035 12 17.035c1.376 0 2.689-.264 3.924-.705l-1.74-1.36a9.86 9.86 0 0 1-2.184.265z"})))};function Ir(){return Ir=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ir.apply(this,arguments)}var Lr;function Nr(){return Nr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Nr.apply(this,arguments)}var jr,Hr;function Zr(){return Zr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Zr.apply(this,arguments)}var Fr,Vr;function Br(){return Br=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Br.apply(this,arguments)}var Ur,zr;function Wr(){return Wr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Wr.apply(this,arguments)}var Kr,qr;function Gr(){return Gr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Gr.apply(this,arguments)}var $r,Xr;function Yr(){return Yr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Yr.apply(this,arguments)}var Jr,Qr;function eo(){return eo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},eo.apply(this,arguments)}var to,no;function ro(){return ro=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ro.apply(this,arguments)}var oo,ao;function lo(){return lo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},lo.apply(this,arguments)}var io,co;function so(){return so=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},so.apply(this,arguments)}var uo,fo;function po(){return po=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},po.apply(this,arguments)}var mo,vo;function ho(){return ho=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ho.apply(this,arguments)}var go,wo;function yo(){return yo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yo.apply(this,arguments)}var bo=Object.freeze({__proto__:null,AddIcon:function(e){return r.createElement("svg",fn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"add_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},rn||(rn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),on||(on=r.createElement("g",{mask:"url(#add_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 18.75a.725.725 0 0 1-.535-.216.726.726 0 0 1-.215-.534v-5.25H6a.726.726 0 0 1-.534-.216A.726.726 0 0 1 5.25 12c0-.213.072-.391.216-.535A.726.726 0 0 1 6 11.25h5.25V6c0-.213.072-.39.216-.534A.726.726 0 0 1 12 5.25c.213 0 .391.072.535.216A.726.726 0 0 1 12.75 6v5.25H18c.212 0 .39.072.534.216a.726.726 0 0 1 .216.534c0 .213-.072.391-.216.535a.726.726 0 0 1-.534.215h-5.25V18c0 .212-.072.39-.216.534a.726.726 0 0 1-.534.216Z"}))))},ArrowDownIcon:wn,ArrowLeftIcon:function(e){return r.createElement("svg",yn({xmlns:"http://www.w3.org/2000/svg",width:18,height:18,fill:"none"},e),hn||(hn=r.createElement("g",{clipPath:"url(#arrow-left_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m9.207 16.57.696-.697a.422.422 0 0 0 0-.596L4.45 9.823h12.003a.422.422 0 0 0 .422-.422v-.984a.422.422 0 0 0-.422-.422H4.45l5.453-5.454a.422.422 0 0 0 0-.596l-.696-.696a.422.422 0 0 0-.596 0L1.249 8.61a.422.422 0 0 0 0 .596L8.61 16.57a.422.422 0 0 0 .596 0Z"}))),gn||(gn=r.createElement("defs",null,r.createElement("clipPath",{id:"arrow-left_svg__a"},r.createElement("path",{fill:"#fff",d:"M0 0h18v18H0z"})))))},BlockIcon:function(e){return r.createElement("svg",_n({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"block_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},bn||(bn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),En||(En=r.createElement("g",{mask:"url(#block_svg__a)"},r.createElement("path",{fill:"#42454B",d:"M12.002 21.5a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-.938-.16-1.842-.48-2.71a8.124 8.124 0 0 0-1.374-2.382L6.908 18.146a7.93 7.93 0 0 0 2.382 1.378A7.839 7.839 0 0 0 12 20Zm-6.146-2.908L17.092 5.854a7.62 7.62 0 0 0-2.375-1.383A7.947 7.947 0 0 0 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 .938.159 1.842.476 2.71a7.93 7.93 0 0 0 1.378 2.382Z"}))))},BlurOnIcon:function(e){return r.createElement("svg",On({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"blur_on_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},xn||(xn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Cn||(Cn=r.createElement("g",{mask:"url(#blur_on_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M3 14.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm3 8.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 17.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658A.893.893 0 0 1 6 13.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265A.893.893 0 0 1 5.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 6 5.077c.262 0 .48.088.658.265A.893.893 0 0 1 6.923 6c0 .262-.088.48-.265.658A.893.893 0 0 1 6 6.923Zm4.002 8.423c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM10 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265A.893.893 0 0 1 9.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 10 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM10 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4.002 11.846c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM14 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 14 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM14 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4 15.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 5.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm3 7.577a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Z"}))))},CachedIcon:function(e){return r.createElement("svg",Dn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"cached_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},kn||(kn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),An||(An=r.createElement("g",{mask:"url(#cached_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12.05 19.75c-2.163 0-4.004-.753-5.522-2.258C5.009 15.987 4.25 14.156 4.25 12v-.78l-1.323 1.322a.725.725 0 0 1-.522.213.707.707 0 0 1-.532-.213.718.718 0 0 1-.217-.527c0-.206.072-.382.217-.527l2.494-2.494A.867.867 0 0 1 5 8.724c.241 0 .452.09.633.27l2.494 2.495c.138.138.21.312.212.521a.707.707 0 0 1-.212.532.718.718 0 0 1-.527.218.718.718 0 0 1-.527-.218L5.75 11.22V12c0 1.737.612 3.213 1.835 4.428 1.223 1.215 2.711 1.822 4.465 1.822.292 0 .584-.02.874-.06.29-.04.577-.107.859-.204a.879.879 0 0 1 .603.02.81.81 0 0 1 .426.396.678.678 0 0 1 .018.585.664.664 0 0 1-.444.388c-.376.133-.762.23-1.155.288a8.049 8.049 0 0 1-1.181.087Zm-.1-14c-.292 0-.584.02-.874.06-.29.04-.577.107-.859.203a.901.901 0 0 1-.61-.02.808.808 0 0 1-.434-.395.655.655 0 0 1-.023-.57.646.646 0 0 1 .423-.388c.387-.133.78-.231 1.176-.295a7.593 7.593 0 0 1 1.201-.095c2.163 0 4.004.753 5.522 2.258C18.991 8.013 19.75 9.844 19.75 12v.78l1.323-1.322a.725.725 0 0 1 .522-.213.707.707 0 0 1 .532.213c.145.144.217.32.217.527a.717.717 0 0 1-.217.527l-2.494 2.494a.867.867 0 0 1-.633.27.867.867 0 0 1-.633-.27l-2.494-2.495a.724.724 0 0 1-.212-.522.707.707 0 0 1 .212-.531.717.717 0 0 1 .527-.218c.206 0 .382.073.527.218l1.323 1.323V12c0-1.737-.611-3.213-1.835-4.428-1.223-1.215-2.711-1.822-4.465-1.822Z"}))))},CalendarIcon:function(e){return r.createElement("svg",Pn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 32 32"},e),r.createElement("mask",{id:"calendar_svg__a",width:32,height:32,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Sn||(Sn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h32v32H0z"}))),Rn||(Rn=r.createElement("g",{mask:"url(#calendar_svg__a)"},r.createElement("path",{fill:"#11B06E",d:"M6.667 29.333a2.568 2.568 0 0 1-1.884-.783A2.568 2.568 0 0 1 4 26.666V8c0-.734.261-1.361.783-1.883a2.568 2.568 0 0 1 1.884-.784H8V4c0-.378.128-.695.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.127.95.383.256.255.384.572.384.95v1.333h10.666V4c0-.378.128-.695.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.127.95.383.255.255.383.572.383.95v1.333h1.333c.734 0 1.361.261 1.884.784.522.522.783 1.15.783 1.883v18.666c0 .734-.261 1.362-.783 1.884a2.568 2.568 0 0 1-1.884.783H6.667Zm0-2.666h18.666V13.332H6.667v13.333Zm9.333-8a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.378.127-.694.383-.95A1.29 1.29 0 0 1 16 16c.378 0 .694.128.95.383.256.256.383.572.383.95s-.127.695-.383.95a1.29 1.29 0 0 1-.95.383Zm-5.333 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.384-.95c0-.378.128-.694.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.128.95.383.255.256.383.572.383.95s-.128.695-.383.95a1.29 1.29 0 0 1-.95.383Zm10.666 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.378.128-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.128.95.383.256.256.384.572.384.95s-.128.695-.384.95a1.29 1.29 0 0 1-.95.383ZM16 24a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.377.127-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .694.128.95.384.256.255.383.572.383.95 0 .377-.127.694-.383.95A1.29 1.29 0 0 1 16 24Zm-5.333 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.384-.95c0-.377.128-.694.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.128.95.384.255.255.383.572.383.95 0 .377-.128.694-.383.95a1.29 1.29 0 0 1-.95.383Zm10.666 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.377.128-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.128.95.384.256.255.384.572.384.95 0 .377-.128.694-.384.95a1.29 1.29 0 0 1-.95.383Z"}))))},CheckCircleIcon:function(e){return r.createElement("svg",Bn({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"check_circle_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Zn||(Zn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Fn||(Fn=r.createElement("g",{mask:"url(#check_circle_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m10.58 14.146-2.322-2.323a.724.724 0 0 0-.522-.212.707.707 0 0 0-.532.212.717.717 0 0 0-.217.527c0 .206.072.382.217.527l2.744 2.744a.87.87 0 0 0 .633.271c.24 0 .452-.09.632-.27l5.564-5.564a.725.725 0 0 0 .212-.522.707.707 0 0 0-.212-.532.718.718 0 0 0-.527-.217.717.717 0 0 0-.527.217l-5.142 5.142Zm1.422 7.354a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749Z"}))))},CheckboxIcon:jn,CheckboxUncheckIcon:Vn,ClockIcon:function(e){return r.createElement("svg",Wn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"clock_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Un||(Un=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),zn||(zn=r.createElement("g",{mask:"url(#clock_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"M13 11.6V8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8v3.975c0 .133.025.263.075.388.05.125.125.237.225.337l3.3 3.3a.948.948 0 0 0 .7.275A.948.948 0 0 0 16 16a.948.948 0 0 0 .275-.7.948.948 0 0 0-.275-.7l-3-3ZM12 22a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12c0-1.383.263-2.683.788-3.9a10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2c1.383 0 2.683.263 3.9.788a10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Zm0-2c2.217 0 4.104-.78 5.663-2.337C19.22 16.104 20 14.217 20 12s-.78-4.104-2.337-5.662C16.104 4.779 14.217 4 12 4s-4.104.78-5.662 2.338C4.779 7.896 4 9.783 4 12s.78 4.104 2.338 5.663C7.896 19.22 9.783 20 12 20Z"}))))},CloseIcon:Ht,CustomizeIcon:function(e){return r.createElement("svg",Gn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"customize_svg__a",width:25,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Kn||(Kn=r.createElement("path",{fill:"#D9D9D9",d:"M.5 0h24v24H.5z"}))),qn||(qn=r.createElement("g",{mask:"url(#customize_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"M14.5 21a.968.968 0 0 1-.713-.288A.968.968 0 0 1 13.5 20c0-.283.096-.52.287-.712A.968.968 0 0 1 14.5 19c.783 0 1.48-.154 2.087-.462.609-.309.913-.655.913-1.038 0-.233-.108-.45-.325-.65-.217-.2-.517-.383-.9-.55l1.475-1.475c.533.317.958.692 1.275 1.125.317.433.475.95.475 1.55 0 1.1-.525 1.958-1.575 2.575A6.644 6.644 0 0 1 14.5 21Zm-9.425-7.65c-.483-.283-.867-.612-1.15-.987-.283-.375-.425-.83-.425-1.363 0-.7.258-1.287.775-1.762.517-.476 1.442-1.005 2.775-1.588 1.05-.483 1.72-.82 2.013-1.013.291-.191.437-.404.437-.637 0-.267-.162-.5-.488-.7C8.688 5.1 8.183 5 7.5 5c-.417 0-.767.05-1.05.15-.283.1-.542.267-.775.5A1.124 1.124 0 0 1 5 5.975a.908.908 0 0 1-.725-.225.938.938 0 0 1-.375-.65.908.908 0 0 1 .225-.725c.317-.383.77-.708 1.362-.975C6.08 3.133 6.75 3 7.5 3c1.2 0 2.167.27 2.9.813.733.541 1.1 1.27 1.1 2.187 0 .65-.242 1.233-.725 1.75-.483.517-1.458 1.092-2.925 1.725-.967.417-1.6.725-1.9.925-.3.2-.45.4-.45.6 0 .15.096.296.287.438.192.141.455.279.788.412l-1.5 1.5ZM19.35 10.4 15.1 6.15l1.05-1.05c.4-.4.88-.6 1.438-.6.558 0 1.029.2 1.412.6l1.4 1.4c.4.383.6.854.6 1.412 0 .559-.2 1.038-.6 1.438l-1.05 1.05ZM6.5 19h1.4l7.2-7.2-1.4-1.4-7.2 7.2V19ZM5 21a.48.48 0 0 1-.35-.15.48.48 0 0 1-.15-.35v-3.55c0-.033.05-.15.15-.35l9.05-9.05 4.25 4.25-9.05 9.05c-.033.033-.15.083-.35.15H5Z"}))))},DeleteIcon:function(e){return r.createElement("svg",Yn({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"delete_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},$n||($n=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Xn||(Xn=r.createElement("g",{mask:"url(#delete_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M7.308 20.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6h-.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535.73.73 0 0 1 .215-.535.726.726 0 0 1 .535-.215H9a.84.84 0 0 1 .263-.63.889.889 0 0 1 .64-.255h4.193c.251 0 .465.085.64.254A.84.84 0 0 1 15 4.5h3.75a.73.73 0 0 1 .535.215.726.726 0 0 1 .215.535.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215h-.25v12.692c0 .506-.175.933-.525 1.283-.35.35-.778.525-1.283.525H7.308ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087h9.385a.3.3 0 0 0 .221-.087.3.3 0 0 0 .087-.22V6H7Zm2.404 10.25a.73.73 0 0 0 .215.535.726.726 0 0 0 .535.215.726.726 0 0 0 .534-.215.726.726 0 0 0 .216-.535v-7.5a.726.726 0 0 0-.216-.535.726.726 0 0 0-.534-.215.726.726 0 0 0-.535.215.726.726 0 0 0-.215.535v7.5Zm3.692 0c0 .213.072.391.216.535a.726.726 0 0 0 .534.215.726.726 0 0 0 .535-.215.726.726 0 0 0 .215-.535v-7.5a.726.726 0 0 0-.215-.535.726.726 0 0 0-.535-.215.726.726 0 0 0-.534.215.726.726 0 0 0-.216.535v7.5ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087H7V6Z"}))))},EventDetailsIcon:function(e){return r.createElement("svg",er({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 32 32"},e),r.createElement("mask",{id:"event_details_svg__a",width:32,height:32,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Jn||(Jn=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h32v32H0z"}))),Qn||(Qn=r.createElement("g",{mask:"url(#event_details_svg__a)"},r.createElement("path",{fill:"#11B06E",d:"M5.333 26.667a2.568 2.568 0 0 1-1.883-.784A2.568 2.568 0 0 1 2.667 24V8c0-.733.26-1.361.783-1.883a2.568 2.568 0 0 1 1.883-.784h21.334c.733 0 1.36.261 1.883.784.522.522.783 1.15.783 1.883v16c0 .733-.26 1.361-.783 1.883a2.568 2.568 0 0 1-1.883.784H5.333Zm0-2.667h21.334V8H5.333v16ZM8 22.667h16c.378 0 .694-.128.95-.384a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95A1.29 1.29 0 0 0 24 20H8a1.29 1.29 0 0 0-.95.383 1.29 1.29 0 0 0-.383.95c0 .378.127.695.383.95.256.256.572.384.95.384Zm0-5.334h16c.378 0 .694-.127.95-.383a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95 1.29 1.29 0 0 0-.95-.383H8a1.29 1.29 0 0 0-.95.383 1.29 1.29 0 0 0-.383.95c0 .378.127.694.383.95s.572.383.95.383ZM8 12h10.667c.377 0 .694-.128.95-.383a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95 1.29 1.29 0 0 0-.95-.384H8a1.29 1.29 0 0 0-.95.384 1.29 1.29 0 0 0-.383.95c0 .377.127.694.383.95.256.255.572.383.95.383Z"}))))},EventRepeatIcon:function(e){return r.createElement("svg",rr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"event_repeat_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},tr||(tr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),nr||(nr=r.createElement("g",{mask:"url(#event_repeat_svg__a)"},r.createElement("path",{fill:"#6C737A",d:"M5 22c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 20V6c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 5 4h1V3c0-.283.096-.52.287-.712A.968.968 0 0 1 7 2c.283 0 .52.096.713.288.191.191.287.429.287.712v1h8V3c0-.283.096-.52.288-.712A.968.968 0 0 1 17 2c.283 0 .52.096.712.288.192.191.288.429.288.712v1h1c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v5c0 .283-.096.52-.288.713A.968.968 0 0 1 20 12a.968.968 0 0 1-.712-.287A.968.968 0 0 1 19 11v-1H5v10h6c.283 0 .52.096.713.288.191.191.287.429.287.712s-.096.52-.287.712A.968.968 0 0 1 11 22H5Zm14 2c-1.067 0-2.02-.296-2.863-.887a4.949 4.949 0 0 1-1.812-2.313.508.508 0 0 1 .063-.538.574.574 0 0 1 .487-.262c.233 0 .446.07.637.212.192.142.346.321.463.538a3.4 3.4 0 0 0 1.25 1.275A3.41 3.41 0 0 0 19 22.5c.967 0 1.792-.342 2.475-1.025A3.372 3.372 0 0 0 22.5 19c0-.967-.342-1.792-1.025-2.475A3.372 3.372 0 0 0 19 15.5a3.404 3.404 0 0 0-2.45 1h.7a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H15a.968.968 0 0 1-.713-.288A.968.968 0 0 1 14 17v-2.25a.728.728 0 0 1 .75-.75.728.728 0 0 1 .75.75v.675c.45-.433.975-.78 1.575-1.038A4.816 4.816 0 0 1 19 14c1.383 0 2.563.488 3.538 1.463C23.512 16.438 24 17.617 24 19s-.488 2.563-1.462 3.538C21.562 23.512 20.383 24 19 24ZM5 8h14V6H5v2Z"}))))},InfoIcon:function(e){return r.createElement("svg",lr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"info_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},or||(or=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ar||(ar=r.createElement("g",{mask:"url(#info_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 16.75a.726.726 0 0 0 .535-.216.726.726 0 0 0 .215-.534v-4.25a.726.726 0 0 0-.216-.534A.727.727 0 0 0 12 11a.725.725 0 0 0-.535.216.726.726 0 0 0-.215.534V16c0 .212.072.39.216.534a.726.726 0 0 0 .534.216Zm0-7.462a.78.78 0 0 0 .575-.232.781.781 0 0 0 .233-.575.782.782 0 0 0-.232-.576.782.782 0 0 0-.576-.232.781.781 0 0 0-.575.232.782.782 0 0 0-.233.576c0 .229.078.42.232.575a.781.781 0 0 0 .576.232Zm.002 12.212a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-2.233-.775-4.125-2.325-5.675C16.125 4.775 14.233 4 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 2.233.775 4.125 2.325 5.675C7.875 19.225 9.767 20 12 20Z"}))))},InfoSolidIcon:function(e){return r.createElement("svg",sr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"info-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ir||(ir=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),cr||(cr=r.createElement("g",{mask:"url(#info-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 17a.97.97 0 0 0 .713-.288A.968.968 0 0 0 13 16v-4a.968.968 0 0 0-.287-.713A.968.968 0 0 0 12 11a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 12v4c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-8c.283 0 .52-.096.713-.287A.967.967 0 0 0 13 8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8c0 .283.096.52.287.713.192.191.43.287.713.287Zm0 13a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12a9.74 9.74 0 0 1 .788-3.9 10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2a9.74 9.74 0 0 1 3.9.788 10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Z"}))))},MagicIcon:function(e){return r.createElement("svg",dr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),ur||(ur=r.createElement("path",{fill:"#02BF6F",d:"M23.341 3.576 20.424.659A2.244 2.244 0 0 0 18.834 0c-.576 0-1.152.22-1.591.66L.659 17.241a2.25 2.25 0 0 0 0 3.182l2.917 2.917c.439.44 1.015.659 1.59.659.576 0 1.152-.22 1.592-.66L23.34 6.759c.879-.879.879-2.303 0-3.182ZM5.167 21.75 2.25 18.833 12.745 8.337l2.918 2.917L5.167 21.75ZM17.254 9.663l-2.918-2.918 4.495-4.495h.003l2.916 2.917-4.496 4.496ZM20.25 13.5 19 16l-2.5 1.25L19 18.5l1.25 2.5 1.25-2.5 2.5-1.25L21.5 16l-1.25-2.5Zm-9.75-9 .75-1.5 1.5-.75-1.5-.75L10.5 0l-.75 1.5-1.5.75 1.5.75.75 1.5Zm-6.75 3L5 5l2.5-1.25L5 2.5 3.75 0 2.5 2.5 0 3.75 2.5 5l1.25 2.5Z"})))},MaterialsIcon:function(e){return r.createElement("svg",mr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"materials_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},fr||(fr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),pr||(pr=r.createElement("g",{mask:"url(#materials_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"m10.825 17.425-2.55 1.6a.493.493 0 0 1-.513.013.46.46 0 0 1-.262-.438v-3.2c0-.2.088-.346.263-.438a.493.493 0 0 1 .512.013l2.55 1.6c.167.1.25.242.25.425a.47.47 0 0 1-.25.425ZM13 10a2.893 2.893 0 0 1-2.125-.875A2.893 2.893 0 0 1 10 7c0-.833.292-1.542.875-2.125A2.893 2.893 0 0 1 13 4h.5a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H13c-.417 0-.77.146-1.063.438A1.446 1.446 0 0 0 11.5 7c0 .417.146.77.438 1.063.291.291.645.437 1.062.437h.5a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H13Zm4 0h-.5a.728.728 0 0 1-.75-.75.728.728 0 0 1 .75-.75h.5c.417 0 .77-.146 1.063-.438.291-.291.437-.645.437-1.062 0-.417-.146-.77-.438-1.063A1.447 1.447 0 0 0 17 5.5h-.5a.728.728 0 0 1-.75-.75.728.728 0 0 1 .75-.75h.5c.833 0 1.542.292 2.125.875S20 6.167 20 7s-.292 1.542-.875 2.125A2.893 2.893 0 0 1 17 10Zm-.75-2.25h-2.5A.728.728 0 0 1 13 7a.728.728 0 0 1 .75-.75h2.5A.728.728 0 0 1 17 7a.728.728 0 0 1-.75.75ZM16.1 14v-2H21V3H9v9H7V3c0-.55.196-1.02.588-1.413A1.926 1.926 0 0 1 9 1h12c.55 0 1.02.196 1.413.587C22.803 1.98 23 2.45 23 3v9c0 .55-.196 1.02-.587 1.412A1.926 1.926 0 0 1 21 14h-4.9ZM3 23c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 1 21v-8c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 3 11h12c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v8c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 15 23H3Zm0-2h12v-8H3v8Z"}))))},MicOffIcon:function(e){return r.createElement("svg",gr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},vr||(vr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),hr||(hr=r.createElement("g",{mask:"url(#mic_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25-1.377-1.376V5a.967.967 0 0 0-.287-.713.968.968 0 0 0-.713-.287.968.968 0 0 0-.712.287.967.967 0 0 0-.288.713v2.535l-1.5-1.5V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.546c-1.511-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.593 6.593 0 0 1-1.65 1.128 5.849 5.849 0 0 1-1.987.554V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOffSolidIcon:function(e){return r.createElement("svg",br({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},wr||(wr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),yr||(yr=r.createElement("g",{mask:"url(#mic_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25L9.144 6.036V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.542c-1.511-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.432 6.432 0 0 1-1.65 1.12 6.3 6.3 0 0 1-1.987.566V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOnSolidIcon:function(e){return r.createElement("svg",kr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Cr||(Cr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Or||(Or=r.createElement("g",{mask:"url(#mic-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.542c-1.512-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.295 6.295 0 0 1-1.85 3.814c-1.058 1.057-2.343 1.673-3.854 1.848V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215Z"}))))},MicOnfIcon:function(e){return r.createElement("svg",xr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"mic_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Er||(Er=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),_r||(_r=r.createElement("g",{mask:"url(#mic_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.546c-1.512-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.273 6.273 0 0 1-1.85 3.809c-1.058 1.054-2.343 1.67-3.854 1.849V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215ZM12 12c.283 0 .52-.096.712-.287A.968.968 0 0 0 13 11V5a.967.967 0 0 0-.288-.713A.968.968 0 0 0 12 4a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 5v6c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))},PasswordEyeCrossedIcon:Mr,PasswordEyeIcon:Rr,PlayIcon:function(e){return r.createElement("svg",Ir({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},e),Tr||(Tr=r.createElement("path",{fill:"#42454B",d:"m15.262 6.708-11-6.503C3.37-.323 2 .19 2 1.495V14.5c0 1.172 1.272 1.878 2.263 1.29l11-6.5c.98-.578.984-2.002 0-2.58Z"})))},SmileIcon:function(e){return r.createElement("svg",Nr({xmlns:"http://www.w3.org/2000/svg",width:20,height:20,fill:"none"},e),Lr||(Lr=r.createElement("path",{fill:"#9FA6AD",d:"M10 .313A9.686 9.686 0 0 0 .312 10 9.686 9.686 0 0 0 10 19.688 9.686 9.686 0 0 0 19.688 10 9.686 9.686 0 0 0 10 .312Zm0 17.5c-4.309 0-7.813-3.504-7.813-7.813 0-4.309 3.504-7.813 7.813-7.813 4.309 0 7.813 3.504 7.813 7.813 0 4.309-3.504 7.813-7.813 7.813ZM6.875 9.374c.691 0 1.25-.559 1.25-1.25s-.559-1.25-1.25-1.25-1.25.559-1.25 1.25.559 1.25 1.25 1.25Zm6.25 0c.691 0 1.25-.559 1.25-1.25s-.559-1.25-1.25-1.25-1.25.559-1.25 1.25.559 1.25 1.25 1.25Zm.156 2.836A4.263 4.263 0 0 1 10 13.75a4.25 4.25 0 0 1-3.281-1.54.94.94 0 0 0-1.32-.12.94.94 0 0 0-.122 1.32A6.132 6.132 0 0 0 10 15.621c1.828 0 3.55-.805 4.723-2.21a.937.937 0 1 0-1.442-1.2Z"})))},StackedEmailIcon:function(e){return r.createElement("svg",Zr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"stacked_email_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},jr||(jr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Hr||(Hr=r.createElement("g",{mask:"url(#stacked_email_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"M7 17c-.55 0-1.02-.196-1.412-.587A1.926 1.926 0 0 1 5 15V5c0-.55.196-1.02.588-1.413A1.926 1.926 0 0 1 7 3h14c.55 0 1.02.196 1.413.587C22.803 3.98 23 4.45 23 5v10c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 21 17H7Zm6.425-5.1L7 7.425V15h14V7.425L14.575 11.9a.964.964 0 0 1-.575.2.964.964 0 0 1-.575-.2ZM14 9.85 21 5H7l7 4.85ZM3 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 1 19V7.5c0-.283.096-.52.288-.713A.968.968 0 0 1 2 6.5c.283 0 .52.096.712.287.192.192.288.43.288.713V19h15.5c.283 0 .52.096.712.288.192.191.288.429.288.712s-.096.52-.288.712A.968.968 0 0 1 18.5 21H3Z"}))))},TodayIcon:function(e){return r.createElement("svg",Br({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"today_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Fr||(Fr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Vr||(Vr=r.createElement("g",{mask:"url(#today_svg__a)"},r.createElement("path",{fill:"#02BF6F",d:"M9 16.5c-.7 0-1.292-.242-1.775-.725C6.742 15.292 6.5 14.7 6.5 14s.242-1.292.725-1.775C7.708 11.742 8.3 11.5 9 11.5s1.292.242 1.775.725c.483.483.725 1.075.725 1.775s-.242 1.292-.725 1.775c-.483.483-1.075.725-1.775.725ZM5 22c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 20V6c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 5 4h1V3c0-.283.096-.52.287-.712A.968.968 0 0 1 7 2c.283 0 .52.096.713.288.191.191.287.429.287.712v1h8V3c0-.283.096-.52.288-.712A.968.968 0 0 1 17 2c.283 0 .52.096.712.288.192.191.288.429.288.712v1h1c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 22H5Zm0-2h14V10H5v10ZM5 8h14V6H5v2Z"}))))},VideoCamOffIcon:function(e){return r.createElement("svg",Wr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ur||(Ur=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),zr||(zr=r.createElement("g",{mask:"url(#videocam_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m20.506 15.852-2.737-2.737v1.896l-1.5-1.5V6.308a.3.3 0 0 0-.086-.221.3.3 0 0 0-.221-.087H8.758l-1.5-1.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.323-.19.507-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.353.044-.507-.11Zm-1.06 5.779L2.036 4.22a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.41 17.41a.684.684 0 0 1 .207.502.727.727 0 0 1-.233.527.724.724 0 0 1-.532.217.692.692 0 0 1-.522-.217ZM4.443 4.519 5.923 6H4.577a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .221.087h11.385a.3.3 0 0 0 .22-.087.3.3 0 0 0 .088-.22v-1.347l1.48 1.48a1.752 1.752 0 0 1-.558 1.187c-.34.325-.75.487-1.23.487H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.48.163-.89.487-1.23.324-.34.72-.527 1.187-.559Z"}))))},VideoCamOffSolidIcon:function(e){return r.createElement("svg",Gr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Kr||(Kr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),qr||(qr=r.createElement("g",{mask:"url(#videocam_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M19.471 21.63 2.061 4.222a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.526.217l17.41 17.41a.684.684 0 0 1 .208.502.727.727 0 0 1-.233.527.702.702 0 0 1-.527.212.753.753 0 0 1-.527-.212Zm-1.677-6.618L7.283 4.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.284.22.284.434v7.042c0 .214-.095.359-.284.434a.43.43 0 0 1-.5-.103l-2.736-2.737v1.896ZM4.467 4.518l13.308 13.308c-.017.456-.209.85-.577 1.179-.368.33-.78.494-1.236.494H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.457.168-.869.502-1.237.335-.368.734-.552 1.196-.552Z"}))))},VideoCamOnIcon:function(e){return r.createElement("svg",Yr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},$r||($r=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Xr||(Xr=r.createElement("g",{mask:"url(#videocam_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.322-.19.506-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.352.044-.506-.11l-2.737-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Zm0-1.5h11.384a.3.3 0 0 0 .222-.087.3.3 0 0 0 .086-.22V6.307a.3.3 0 0 0-.086-.221.3.3 0 0 0-.222-.087H4.548a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087Z"}))))},VideoCamOnSolidIcon:function(e){return r.createElement("svg",eo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"videocam-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Jr||(Jr=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Qr||(Qr=r.createElement("g",{mask:"url(#videocam-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.283.22.283.434v7.042c0 .214-.094.359-.283.434a.43.43 0 0 1-.5-.103l-2.736-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Z"}))))},VolumeOffIcon:function(e){return r.createElement("svg",ro({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},to||(to=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),no||(no=r.createElement("g",{mask:"url(#volume_off-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Zm-1.5 5.613v-2.196L8.335 11H5.289v2h2.85l2.15 2.15Z"}))))},VolumeOffSolidIcon:function(e){return r.createElement("svg",lo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},oo||(oo=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ao||(ao=r.createElement("g",{mask:"url(#volume_off_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Z"}))))},VolumeUpIcon:function(e){return r.createElement("svg",so({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_up-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},io||(io=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),co||(co=r.createElement("g",{mask:"url(#volume_up-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.092.797.797 0 0 1-.324-.675.56.56 0 0 1 .124-.36.803.803 0 0 1 .307-.236 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.654.654 0 0 1-.43-.625c0-.275.107-.493.323-.652a.68.68 0 0 1 .7-.086 8.551 8.551 0 0 1 3.83 3.085c.97 1.4 1.454 2.97 1.454 4.711s-.485 3.312-1.454 4.71a8.552 8.552 0 0 1-3.83 3.086ZM4.558 14.5a.875.875 0 0 1-.644-.26.875.875 0 0 1-.26-.644v-3.192c0-.256.086-.47.26-.644a.874.874 0 0 1 .644-.26h2.807l2.752-2.752c.285-.284.612-.348.982-.192.37.157.555.437.555.84v9.208c0 .403-.185.683-.555.84-.37.156-.697.093-.982-.192L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499ZM10.154 8.85 8.004 11h-2.85v2h2.85l2.15 2.15v-6.3Z"}))))},VolumeUpSolidIcon:function(e){return r.createElement("svg",po({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"volume_up_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},uo||(uo=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),fo||(fo=r.createElement("g",{mask:"url(#volume_up_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.042-.26.124-.363a.803.803 0 0 1 .307-.235 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.658.658 0 0 1-.32-.248.661.661 0 0 1-.11-.375c0-.277.107-.495.323-.654a.68.68 0 0 1 .7-.086 8.547 8.547 0 0 1 3.83 3.087c.97 1.401 1.454 2.97 1.454 4.709 0 1.738-.485 3.308-1.454 4.709a8.547 8.547 0 0 1-3.83 3.087ZM4.558 14.5a.876.876 0 0 1-.646-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .646-.259h2.807l2.752-2.752c.285-.284.612-.349.982-.193.37.156.555.436.555.841v9.208c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499Z"}))))},WarningIcon:function(e){return r.createElement("svg",ho({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},e),r.createElement("mask",{id:"warning-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},mo||(mo=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),vo||(vo=r.createElement("g",{mask:"url(#warning-1_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M3.426 20.5a.878.878 0 0 1-.772-.452.955.955 0 0 1-.129-.437.816.816 0 0 1 .127-.467l8.561-14.788A.896.896 0 0 1 12 3.904a.897.897 0 0 1 .787.452l8.56 14.788c.093.154.136.31.128.467a.955.955 0 0 1-.129.437.878.878 0 0 1-.771.452H3.425ZM4.45 19h15.1L12 6 4.45 19ZM12 17.808c.229 0 .42-.078.576-.232a.781.781 0 0 0 .232-.576.781.781 0 0 0-.232-.575.782.782 0 0 0-.576-.233.781.781 0 0 0-.575.233.781.781 0 0 0-.233.575c0 .229.078.42.233.576a.781.781 0 0 0 .575.232Zm0-2.616c.213 0 .391-.072.535-.215a.726.726 0 0 0 .215-.535v-3.5a.725.725 0 0 0-.216-.534.726.726 0 0 0-.534-.216.725.725 0 0 0-.534.216.726.726 0 0 0-.216.534v3.5c0 .213.072.391.216.535a.726.726 0 0 0 .534.215Z"}))))},WarningSolidIcon:function(e){return r.createElement("svg",yo({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},e),r.createElement("mask",{id:"warning_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},go||(go=r.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),wo||(wo=r.createElement("g",{mask:"url(#warning_svg__a)"},r.createElement("path",{fill:"#2C3336",d:"M2.725 21a.973.973 0 0 1-.85-.5 1.098 1.098 0 0 1-.138-.488.898.898 0 0 1 .138-.512l9.25-16a.98.98 0 0 1 .387-.375C11.671 3.042 11.833 3 12 3c.166 0 .329.042.487.125a.983.983 0 0 1 .388.375l9.25 16c.1.167.146.337.137.512a1.098 1.098 0 0 1-.137.488.973.973 0 0 1-.85.5H2.725ZM12 18c.283 0 .52-.096.712-.288A.968.968 0 0 0 13 17a.968.968 0 0 0-.288-.712A.968.968 0 0 0 12 16a.968.968 0 0 0-.713.288A.968.968 0 0 0 11 17c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-3a.97.97 0 0 0 .712-.287A.968.968 0 0 0 13 14v-3a.968.968 0 0 0-.288-.713A.968.968 0 0 0 12 10a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 11v3c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))}});const Eo=e.forwardRef(((t,n)=>e.createElement(_.label,a({},t,{ref:n,onMouseDown:e=>{var n;null===(n=t.onMouseDown)||void 0===n||n.call(t,e),!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}))));var _o={label:"Label-modules_label__rXO6J",semiBold:"Label-modules_semiBold__vTm1B",regular:"Label-modules_regular__F9gNE"},xo=function(e){return void 0===e&&(e="regular"),"semiBold"===e?_o.semiBold:_o.regular};function Co(t){var n,r=t.htmlFor,o=t.children,a=t.className,l=void 0===a?"":a,i=t.weight,c=void 0===i?"regular":i;return e.createElement(Eo,{htmlFor:r,className:Nt("demio-ui-label",_o.label,[xo(c)],(n={},n[l]=!!l,n))},o)}var Oo={formGroup:"FormGroup-modules_formGroup__Zjh7i",horizontal:"FormGroup-modules_horizontal__9g7gn",vertical:"FormGroup-modules_vertical__yPEor",between:"FormGroup-modules_between__poqnA",start:"FormGroup-modules_start__ylflU",startAlignItems:"FormGroup-modules_startAlignItems__h-nDr",stretchAlignItems:"FormGroup-modules_stretchAlignItems__jg3e0"};var ko={root:"Input-modules_root__vdxX5",label:"Input-modules_label__2RN8-",optional:"Input-modules_optional__M78yJ",static:"Input-modules_static__cpwFU",correctedTop:"Input-modules_correctedTop__I3y-S",inputWrapper:"Input-modules_inputWrapper__KPYyg",input:"Input-modules_input__y9hSj",startAdornment:"Input-modules_startAdornment__Xs8xw",endAdornment:"Input-modules_endAdornment__z04mP",footer:"Input-modules_footer__R8J8U",togglePasswordButton:"Input-modules_togglePasswordButton__KGieB",footerMessage:"Input-modules_footerMessage__akEOh",counter:"Input-modules_counter__HFA5P",isDisabled:"Input-modules_isDisabled__bHf8L",hint:"Input-modules_hint__e-KNY",isError:"Input-modules_isError__1B8e9",isFocused:"Input-modules_isFocused__Oa1Re"},Ao={root:"InputHint-modules_root__bJTnj",error:"InputHint-modules_error__HZnQD"};function Do(t){var n,r=t.children,o=t.type,a=void 0===o?"hint":o,l=t.className,i=void 0===l?"":l;return e.createElement("div",{className:Nt("demio-ui-input-hint",Ao.root,(n={},n[Ao.error]="error"===a,n[i]=!!i,n)),"data-html":a},r)}var So=e.forwardRef((function(t,n){var r,o,a,l,i=t.autoComplete,c=void 0===i?"off":i,s=t.className,u=void 0===s?"":s,d=t.counterVisibilityLimit,f=void 0===d?.8:d,p=t.defaultValue,m=void 0===p?"":p,v=t.disabled,h=void 0!==v&&v,g=t.endAdornment,w=void 0===g?null:g,y=t.endAdornmentClassName,b=void 0===y?"":y,E=t.errorMessage,_=void 0===E?"":E,x=t.hint,C=void 0===x?"":x,O=t.id,k=t.inputWrapperClass,A=void 0===k?"":k,D=t.isLabelStatic,S=void 0!==D&&D,R=t.label,P=void 0===R?"":R,T=t.maxLength,M=void 0===T?150:T,I=t.name,L=void 0===I?"":I,N=t.onBlur,j=t.onChange,H=t.onFocus,Z=t.optionalText,F=void 0===Z?"Optional":Z,V=t.placeholder,B=void 0===V?"":V,U=t.required,z=void 0!==U&&U,W=t.startAdornment,K=void 0===W?null:W,$=t.type,X=void 0===$?"text":$,Y=t.value,J=G(t,["autoComplete","className","counterVisibilityLimit","defaultValue","disabled","endAdornment","endAdornmentClassName","errorMessage","hint","id","inputWrapperClass","isLabelStatic","label","maxLength","name","onBlur","onChange","onFocus","optionalText","placeholder","required","startAdornment","type","value"]),Q=void 0!==Y,ee=void 0!==m,te=e.useState(!1),ne=te[0],re=te[1],oe=e.useState(ee?m:""),ae=oe[0],le=oe[1],ie=e.useState(!1),ce=ie[0],se=ie[1],ue="password"===X,de=ue?ne?"text":"password":X,fe=Q?Y:ae,pe=fe.length,me=pe>=M*f;return e.createElement("div",{className:Nt("demio-ui-input","demio-ui-input-".concat(X),ko.root,(r={},r[u]=!!u,r[ko.isDisabled]=h,r[ko.isFocused]=ce||fe.length>0,r[ko.hasStartAdornment]=!!K,r[ko.isError]=!!_,r)),"data-html":"container"},P&&e.createElement("label",{htmlFor:O,className:Nt(ko.label,(o={},o[ko.static]=S,o)),"data-html":"label"},P),!z&&e.createElement("span",{className:Nt(ko.optional,(a={},a[ko.correctedTop]=S,a)),"data-html":"optional"},F),e.createElement("div",{className:Nt(ko.inputWrapper,A),"data-html":"wrapper"},K&&e.createElement("div",{className:ko.startAdornment,"data-html":"start-adornment"},K),e.createElement("input",q({},J,{type:de,id:O,ref:n,name:L||O,className:ko.input,placeholder:B,required:z,"data-html":"input",disabled:h,autoComplete:c,maxLength:M,onChange:function(e){j&&j(e),Q||le(e.target.value)},value:fe,onFocus:function(e){H&&H(e),se(!0)},onBlur:function(e){N&&N(e),se(!1)}})),w&&e.createElement("div",{className:Nt(ko.endAdornment,(l={},l[b]=!!b,l)),"data-html":"end-adornment"},w)),e.createElement("div",{className:ko.footer,"data-html":"footer"},e.createElement("div",{className:ko.footerMessage},_&&e.createElement(Do,{type:"error"},_),C&&!_&&e.createElement(Do,{className:ko.hint},C)),e.createElement(Do,{className:ko.counter},me&&"".concat(pe," / ").concat(M))),ue&&e.createElement("button",{type:"button",className:ko.togglePasswordButton,onClick:function(){re(!ne)}},ne?e.createElement(Rr,null):e.createElement(Mr,null)))})),Ro="Modal-modules_overlay__V-vTn",Po="Modal-modules_header__-dxAm",To="Modal-modules_close__CwIjR",Mo="Modal-modules_title__3ehge",Io="Modal-modules_titleCentered__Qqy8u",Lo="Modal-modules_content__sK9HS",No="Modal-modules_body__8Khpx";function jo(e){return e.split("-")[1]}function Ho(e){return"y"===e?"height":"width"}function Zo(e){return e.split("-")[0]}function Fo(e){return["top","bottom"].includes(Zo(e))?"x":"y"}function Vo(e,t,n){let{reference:r,floating:o}=e;const a=r.x+r.width/2-o.width/2,l=r.y+r.height/2-o.height/2,i=Fo(t),c=Ho(i),s=r[c]/2-o[c]/2,u="x"===i;let d;switch(Zo(t)){case"top":d={x:a,y:r.y-o.height};break;case"bottom":d={x:a,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:l};break;case"left":d={x:r.x-o.width,y:l};break;default:d={x:r.x,y:r.y}}switch(jo(t)){case"start":d[i]-=s*(n&&u?-1:1);break;case"end":d[i]+=s*(n&&u?-1:1)}return d}function Bo(e,t){return"function"==typeof e?e(t):e}function Uo(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function zo(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function Wo(e,t){var n;void 0===t&&(t={});const{x:r,y:o,platform:a,rects:l,elements:i,strategy:c}=e,{boundary:s="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:f=!1,padding:p=0}=Bo(t,e),m=Uo(p),v=i[f?"floating"===d?"reference":"floating":d],h=zo(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(v)))||n?v:v.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(i.floating)),boundary:s,rootBoundary:u,strategy:c})),g="floating"===d?{...l.floating,x:r,y:o}:l.reference,w=await(null==a.getOffsetParent?void 0:a.getOffsetParent(i.floating)),y=await(null==a.isElement?void 0:a.isElement(w))&&await(null==a.getScale?void 0:a.getScale(w))||{x:1,y:1},b=zo(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({rect:g,offsetParent:w,strategy:c}):g);return{top:(h.top-b.top+m.top)/y.y,bottom:(b.bottom-h.bottom+m.bottom)/y.y,left:(h.left-b.left+m.left)/y.x,right:(b.right-h.right+m.right)/y.x}}const Ko=Math.min,qo=Math.max;function Go(e,t,n){return qo(e,Ko(t,n))}const $o=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:l,elements:i}=t,{element:c,padding:s=0}=Bo(e,t)||{};if(null==c)return{};const u=Uo(s),d={x:n,y:r},f=Fo(o),p=Ho(f),m=await l.getDimensions(c),v="y"===f,h=v?"top":"left",g=v?"bottom":"right",w=v?"clientHeight":"clientWidth",y=a.reference[p]+a.reference[f]-d[f]-a.floating[p],b=d[f]-a.reference[f],E=await(null==l.getOffsetParent?void 0:l.getOffsetParent(c));let _=E?E[w]:0;_&&await(null==l.isElement?void 0:l.isElement(E))||(_=i.floating[w]||a.floating[p]);const x=y/2-b/2,C=_/2-m[p]/2-1,O=Ko(u[h],C),k=Ko(u[g],C),A=O,D=_-m[p]-k,S=_/2-m[p]/2+x,R=Go(A,S,D),P=null!=jo(o)&&S!=R&&a.reference[p]/2-(S<A?O:k)-m[p]/2<0;return{[f]:d[f]-(P?S<A?A-S:D-S:0),data:{[f]:R,centerOffset:S-R}}}}),Xo=["top","right","bottom","left"],Yo={left:"right",right:"left",bottom:"top",top:"bottom"};function Jo(e){return e.replace(/left|right|bottom|top/g,(e=>Yo[e]))}const Qo={start:"end",end:"start"};function ea(e){return e.replace(/start|end/g,(e=>Qo[e]))}const ta=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:a,initialPlacement:l,platform:i,elements:c}=t,{mainAxis:s=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:p="none",flipAlignment:m=!0,...v}=Bo(e,t),h=Zo(r),g=Zo(l)===l,w=await(null==i.isRTL?void 0:i.isRTL(c.floating)),y=d||(g||!m?[Jo(l)]:function(e){const t=Jo(e);return[ea(e),t,ea(t)]}(l));d||"none"===p||y.push(...function(e,t,n,r){const o=jo(e);let a=function(e,t,n){const r=["left","right"],o=["right","left"],a=["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?a:l;default:return[]}}(Zo(e),"start"===n,r);return o&&(a=a.map((e=>e+"-"+o)),t&&(a=a.concat(a.map(ea)))),a}(l,m,p,w));const b=[l,...y],E=await Wo(t,v),_=[];let x=(null==(n=o.flip)?void 0:n.overflows)||[];if(s&&_.push(E[h]),u){const{main:e,cross:t}=function(e,t,n){void 0===n&&(n=!1);const r=jo(e),o=Fo(e),a=Ho(o);let l="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(l=Jo(l)),{main:l,cross:Jo(l)}}(r,a,w);_.push(E[e],E[t])}if(x=[...x,{placement:r,overflows:_}],!_.every((e=>e<=0))){var C,O;const e=((null==(C=o.flip)?void 0:C.index)||0)+1,t=b[e];if(t)return{data:{index:e,overflows:x},reset:{placement:t}};let n=null==(O=x.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:O.placement;if(!n)switch(f){case"bestFit":{var k;const e=null==(k=x.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:k[0];e&&(n=e);break}case"initialPlacement":n=l}if(r!==n)return{reset:{placement:n}}}return{}}}};function na(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function ra(e){return Xo.some((t=>e[t]>=0))}const oa=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=Bo(e,t);switch(r){case"referenceHidden":{const e=na(await Wo(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:ra(e)}}}case"escaped":{const e=na(await Wo(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:ra(e)}}}default:return{}}}}};const aa=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),l=Zo(n),i=jo(n),c="x"===Fo(n),s=["left","top"].includes(l)?-1:1,u=a&&c?-1:1,d=Bo(t,e);let{mainAxis:f,crossAxis:p,alignmentAxis:m}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return i&&"number"==typeof m&&(p="end"===i?-1*m:m),c?{x:p*u,y:f*s}:{x:f*s,y:p*u}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function la(e){return"x"===e?"y":"x"}const ia=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:i={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=Bo(e,t),s={x:n,y:r},u=await Wo(t,c),d=Fo(Zo(o)),f=la(d);let p=s[d],m=s[f];if(a){const e="y"===d?"bottom":"right";p=Go(p+u["y"===d?"top":"left"],p,p-u[e])}if(l){const e="y"===f?"bottom":"right";m=Go(m+u["y"===f?"top":"left"],m,m-u[e])}const v=i.fn({...t,[d]:p,[f]:m});return{...v,data:{x:v.x-n,y:v.y-r}}}}},ca=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:a,middlewareData:l}=t,{offset:i=0,mainAxis:c=!0,crossAxis:s=!0}=Bo(e,t),u={x:n,y:r},d=Fo(o),f=la(d);let p=u[d],m=u[f];const v=Bo(i,t),h="number"==typeof v?{mainAxis:v,crossAxis:0}:{mainAxis:0,crossAxis:0,...v};if(c){const e="y"===d?"height":"width",t=a.reference[d]-a.floating[e]+h.mainAxis,n=a.reference[d]+a.reference[e]-h.mainAxis;p<t?p=t:p>n&&(p=n)}if(s){var g,w;const e="y"===d?"width":"height",t=["top","left"].includes(Zo(o)),n=a.reference[f]-a.floating[e]+(t&&(null==(g=l.offset)?void 0:g[f])||0)+(t?0:h.crossAxis),r=a.reference[f]+a.reference[e]+(t?0:(null==(w=l.offset)?void 0:w[f])||0)-(t?h.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[d]:p,[f]:m}}}},sa=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:a}=t,{apply:l=(()=>{}),...i}=Bo(e,t),c=await Wo(t,i),s=Zo(n),u=jo(n),d="x"===Fo(n),{width:f,height:p}=r.floating;let m,v;"top"===s||"bottom"===s?(m=s,v=u===(await(null==o.isRTL?void 0:o.isRTL(a.floating))?"start":"end")?"left":"right"):(v=s,m="end"===u?"top":"bottom");const h=p-c[m],g=f-c[v],w=!t.middlewareData.shift;let y=h,b=g;if(d){const e=f-c.left-c.right;b=u||w?Ko(g,e):e}else{const e=p-c.top-c.bottom;y=u||w?Ko(h,e):e}if(w&&!u){const e=qo(c.left,0),t=qo(c.right,0),n=qo(c.top,0),r=qo(c.bottom,0);d?b=f-2*(0!==e||0!==t?e+t:qo(c.left,c.right)):y=p-2*(0!==n||0!==r?n+r:qo(c.top,c.bottom))}await l({...t,availableWidth:b,availableHeight:y});const E=await o.getDimensions(a.floating);return f!==E.width||p!==E.height?{reset:{rects:!0}}:{}}}};function ua(e){var t;return(null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function da(e){return ua(e).getComputedStyle(e)}function fa(e){return e instanceof ua(e).Node}function pa(e){return fa(e)?(e.nodeName||"").toLowerCase():""}function ma(e){return e instanceof ua(e).HTMLElement}function va(e){return e instanceof ua(e).Element}function ha(e){if("undefined"==typeof ShadowRoot)return!1;return e instanceof ua(e).ShadowRoot||e instanceof ShadowRoot}function ga(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=da(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function wa(e){return["table","td","th"].includes(pa(e))}function ya(e){const t=ba(),n=da(e);return"none"!==n.transform||"none"!==n.perspective||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function ba(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function Ea(e){return["html","body","#document"].includes(pa(e))}const _a=Math.min,xa=Math.max,Ca=Math.round;function Oa(e){const t=da(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=ma(e),a=o?e.offsetWidth:n,l=o?e.offsetHeight:r,i=Ca(n)!==a||Ca(r)!==l;return i&&(n=a,r=l),{width:n,height:r,fallback:i}}function ka(e){return va(e)?e:e.contextElement}const Aa={x:1,y:1};function Da(e){const t=ka(e);if(!ma(t))return Aa;const n=t.getBoundingClientRect(),{width:r,height:o,fallback:a}=Oa(t);let l=(a?Ca(n.width):n.width)/r,i=(a?Ca(n.height):n.height)/o;return l&&Number.isFinite(l)||(l=1),i&&Number.isFinite(i)||(i=1),{x:l,y:i}}const Sa={x:0,y:0};function Ra(e,t,n){var r,o;if(void 0===t&&(t=!0),!ba())return Sa;const a=e?ua(e):window;return!n||t&&n!==a?Sa:{x:(null==(r=a.visualViewport)?void 0:r.offsetLeft)||0,y:(null==(o=a.visualViewport)?void 0:o.offsetTop)||0}}function Pa(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=ka(e);let l=Aa;t&&(r?va(r)&&(l=Da(r)):l=Da(e));const i=Ra(a,n,r);let c=(o.left+i.x)/l.x,s=(o.top+i.y)/l.y,u=o.width/l.x,d=o.height/l.y;if(a){const e=ua(a),t=r&&va(r)?ua(r):r;let n=e.frameElement;for(;n&&r&&t!==e;){const e=Da(n),t=n.getBoundingClientRect(),r=getComputedStyle(n);t.x+=(n.clientLeft+parseFloat(r.paddingLeft))*e.x,t.y+=(n.clientTop+parseFloat(r.paddingTop))*e.y,c*=e.x,s*=e.y,u*=e.x,d*=e.y,c+=t.x,s+=t.y,n=ua(n).frameElement}}return zo({width:u,height:d,x:c,y:s})}function Ta(e){return((fa(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ma(e){return va(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ia(e){return Pa(Ta(e)).left+Ma(e).scrollLeft}function La(e){if("html"===pa(e))return e;const t=e.assignedSlot||e.parentNode||ha(e)&&e.host||Ta(e);return ha(t)?t.host:t}function Na(e){const t=La(e);return Ea(t)?t.ownerDocument.body:ma(t)&&ga(t)?t:Na(t)}function ja(e,t){var n;void 0===t&&(t=[]);const r=Na(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=ua(r);return o?t.concat(a,a.visualViewport||[],ga(r)?r:[]):t.concat(r,ja(r))}function Ha(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=ua(e),r=Ta(e),o=n.visualViewport;let a=r.clientWidth,l=r.clientHeight,i=0,c=0;if(o){a=o.width,l=o.height;const e=ba();(!e||e&&"fixed"===t)&&(i=o.offsetLeft,c=o.offsetTop)}return{width:a,height:l,x:i,y:c}}(e,n);else if("document"===t)r=function(e){const t=Ta(e),n=Ma(e),r=e.ownerDocument.body,o=xa(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=xa(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let l=-n.scrollLeft+Ia(e);const i=-n.scrollTop;return"rtl"===da(r).direction&&(l+=xa(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:l,y:i}}(Ta(e));else if(va(t))r=function(e,t){const n=Pa(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=ma(e)?Da(e):{x:1,y:1};return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:o*a.x,y:r*a.y}}(t,n);else{const n=Ra(e);r={...t,x:t.x-n.x,y:t.y-n.y}}return zo(r)}function Za(e,t){const n=La(e);return!(n===t||!va(n)||Ea(n))&&("fixed"===da(n).position||Za(n,t))}function Fa(e,t){return ma(e)&&"fixed"!==da(e).position?t?t(e):e.offsetParent:null}function Va(e,t){const n=ua(e);if(!ma(e))return n;let r=Fa(e,t);for(;r&&wa(r)&&"static"===da(r).position;)r=Fa(r,t);return r&&("html"===pa(r)||"body"===pa(r)&&"static"===da(r).position&&!ya(r))?n:r||function(e){let t=La(e);for(;ma(t)&&!Ea(t);){if(ya(t))return t;t=La(t)}return null}(e)||n}function Ba(e,t,n){const r=ma(t),o=Ta(t),a="fixed"===n,l=Pa(e,!0,a,t);let i={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(r||!r&&!a)if(("body"!==pa(t)||ga(o))&&(i=Ma(t)),ma(t)){const e=Pa(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else o&&(c.x=Ia(o));return{x:l.left+i.scrollLeft-c.x,y:l.top+i.scrollTop-c.y,width:l.width,height:l.height}}const Ua={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[..."clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let r=ja(e).filter((e=>va(e)&&"body"!==pa(e))),o=null;const a="fixed"===da(e).position;let l=a?La(e):e;for(;va(l)&&!Ea(l);){const t=da(l),n=ya(l);n||"fixed"!==t.position||(o=null),(a?!n&&!o:!n&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||ga(l)&&!n&&Za(e,l))?r=r.filter((e=>e!==l)):o=t,l=La(l)}return t.set(e,r),r}(t,this._c):[].concat(n),r],l=a[0],i=a.reduce(((e,n)=>{const r=Ha(t,n,o);return e.top=xa(r.top,e.top),e.right=_a(r.right,e.right),e.bottom=_a(r.bottom,e.bottom),e.left=xa(r.left,e.left),e}),Ha(t,l,o));return{width:i.right-i.left,height:i.bottom-i.top,x:i.left,y:i.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=ma(n),a=Ta(n);if(n===a)return t;let l={scrollLeft:0,scrollTop:0},i={x:1,y:1};const c={x:0,y:0};if((o||!o&&"fixed"!==r)&&(("body"!==pa(n)||ga(a))&&(l=Ma(n)),ma(n))){const e=Pa(n);i=Da(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}return{width:t.width*i.x,height:t.height*i.y,x:t.x*i.x-l.scrollLeft*i.x+c.x,y:t.y*i.y-l.scrollTop*i.y+c.y}},isElement:va,getDimensions:function(e){return Oa(e)},getOffsetParent:Va,getDocumentElement:Ta,getScale:Da,async getElementRects(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||Va,a=this.getDimensions;return{reference:Ba(t,await o(n),r),floating:{x:0,y:0,...await a(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>"rtl"===da(e).direction};function za(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:l=!0,animationFrame:i=!1}=r,c=o||a?[...va(e)?ja(e):e.contextElement?ja(e.contextElement):[],...ja(t)]:[];c.forEach((e=>{const t=!va(e)&&e.toString().includes("V");!o||i&&!t||e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)}));let s,u=null;l&&(u=new ResizeObserver((()=>{n()})),va(e)&&!i&&u.observe(e),va(e)||!e.contextElement||i||u.observe(e.contextElement),u.observe(t));let d=i?Pa(e):null;return i&&function t(){const r=Pa(e);!d||r.x===d.x&&r.y===d.y&&r.width===d.width&&r.height===d.height||n();d=r,s=requestAnimationFrame(t)}(),n(),()=>{var e;c.forEach((e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)})),null==(e=u)||e.disconnect(),u=null,i&&cancelAnimationFrame(s)}}const Wa=(e,t,n)=>{const r=new Map,o={platform:Ua,...n},a={...o.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:l}=n,i=a.filter(Boolean),c=await(null==l.isRTL?void 0:l.isRTL(t));let s=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=Vo(s,r,c),f=r,p={},m=0;for(let n=0;n<i.length;n++){const{name:a,fn:v}=i[n],{x:h,y:g,data:w,reset:y}=await v({x:u,y:d,initialPlacement:r,placement:f,strategy:o,middlewareData:p,rects:s,platform:l,elements:{reference:e,floating:t}});u=null!=h?h:u,d=null!=g?g:d,p={...p,[a]:{...p[a],...w}},y&&m<=50&&(m++,"object"==typeof y&&(y.placement&&(f=y.placement),y.rects&&(s=!0===y.rects?await l.getElementRects({reference:e,floating:t,strategy:o}):y.rects),({x:u,y:d}=Vo(s,f,c))),n=-1)}return{x:u,y:d,placement:f,strategy:o,middlewareData:p}})(e,t,{...o,platform:a})},Ka=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(o=n,{}.hasOwnProperty.call(o,"current"))?null!=n.current?$o({element:n.current,padding:r}).fn(t):{}:n?$o({element:n,padding:r}).fn(t):{};var o}});var qa="undefined"!=typeof document?e.useLayoutEffect:e.useEffect;function Ga(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;0!=r--;)if(!Ga(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){const n=o[r];if(("_owner"!==n||!e.$$typeof)&&!Ga(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function $a(e){if("undefined"==typeof window)return 1;return(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Xa(e,t){const n=$a(e);return Math.round(t*n)/n}function Ya(e){const t=r.useRef(e);return qa((()=>{t.current=e})),t}const Ja=e.forwardRef(((t,n)=>{const{children:r,width:o=10,height:l=5,...i}=t;return e.createElement(_.svg,a({},i,{ref:n,width:o,height:l,viewBox:"0 0 30 10",preserveAspectRatio:"none"}),t.asChild?r:e.createElement("polygon",{points:"0,0 30,0 15,10"}))})),Qa="Popper",[el,tl]=l(Qa),[nl,rl]=el(Qa),ol=e.forwardRef(((t,n)=>{const{__scopePopper:r,virtualRef:o,...l}=t,i=rl("PopperAnchor",r),c=e.useRef(null),u=s(n,c);return e.useEffect((()=>{i.onAnchorChange((null==o?void 0:o.current)||c.current)})),o?null:e.createElement(_.div,a({},l,{ref:u}))})),al="PopperContent",[ll,il]=el(al),cl=e.forwardRef(((t,n)=>{var l,i,c,u,f,p,m,h;const{__scopePopper:g,side:w="bottom",sideOffset:y=0,align:b="center",alignOffset:E=0,arrowPadding:x=0,collisionBoundary:C=[],collisionPadding:O=0,sticky:k="partial",hideWhenDetached:A=!1,avoidCollisions:D=!0,onPlaced:S,...R}=t,P=rl(al,g),[T,M]=e.useState(null),I=s(n,(e=>M(e))),[L,N]=e.useState(null),j=Wt(L),H=null!==(l=null==j?void 0:j.width)&&void 0!==l?l:0,Z=null!==(i=null==j?void 0:j.height)&&void 0!==i?i:0,F=w+("center"!==b?"-"+b:""),V="number"==typeof O?O:{top:0,right:0,bottom:0,left:0,...O},B=Array.isArray(C)?C:[C],U=B.length>0,z={padding:V,boundary:B.filter(ul),altBoundary:U},{refs:W,floatingStyles:K,placement:q,isPositioned:G,middlewareData:$}=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:a=[],platform:l,elements:{reference:i,floating:c}={},transform:s=!0,whileElementsMounted:u,open:d}=e,[f,p]=r.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[m,v]=r.useState(a);Ga(m,a)||v(a);const[h,g]=r.useState(null),[w,y]=r.useState(null),b=r.useCallback((e=>{e!=C.current&&(C.current=e,g(e))}),[g]),E=r.useCallback((e=>{e!==O.current&&(O.current=e,y(e))}),[y]),_=i||h,x=c||w,C=r.useRef(null),O=r.useRef(null),k=r.useRef(f),A=Ya(u),D=Ya(l),S=r.useCallback((()=>{if(!C.current||!O.current)return;const e={placement:t,strategy:n,middleware:m};D.current&&(e.platform=D.current),Wa(C.current,O.current,e).then((e=>{const t={...e,isPositioned:!0};R.current&&!Ga(k.current,t)&&(k.current=t,o.flushSync((()=>{p(t)})))}))}),[m,t,n,D]);qa((()=>{!1===d&&k.current.isPositioned&&(k.current.isPositioned=!1,p((e=>({...e,isPositioned:!1}))))}),[d]);const R=r.useRef(!1);qa((()=>(R.current=!0,()=>{R.current=!1})),[]),qa((()=>{if(_&&(C.current=_),x&&(O.current=x),_&&x){if(A.current)return A.current(_,x,S);S()}}),[_,x,S,A]);const P=r.useMemo((()=>({reference:C,floating:O,setReference:b,setFloating:E})),[b,E]),T=r.useMemo((()=>({reference:_,floating:x})),[_,x]),M=r.useMemo((()=>{const e={position:n,left:0,top:0};if(!T.floating)return e;const t=Xa(T.floating,f.x),r=Xa(T.floating,f.y);return s?{...e,transform:"translate("+t+"px, "+r+"px)",...$a(T.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}}),[n,s,T.floating,f.x,f.y]);return r.useMemo((()=>({...f,update:S,refs:P,elements:T,floatingStyles:M})),[f,S,P,T,M])}({strategy:"fixed",placement:F,whileElementsMounted:za,elements:{reference:P.anchor},middleware:[aa({mainAxis:y+Z,alignmentAxis:E}),D&&ia({mainAxis:!0,crossAxis:!1,limiter:"partial"===k?ca():void 0,...z}),D&&ta({...z}),sa({...z,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{const{width:o,height:a}=t.reference,l=e.floating.style;l.setProperty("--radix-popper-available-width",`${n}px`),l.setProperty("--radix-popper-available-height",`${r}px`),l.setProperty("--radix-popper-anchor-width",`${o}px`),l.setProperty("--radix-popper-anchor-height",`${a}px`)}}),L&&Ka({element:L,padding:x}),dl({arrowWidth:H,arrowHeight:Z}),A&&oa({strategy:"referenceHidden"})]}),[X,Y]=fl(q),J=v(S);d((()=>{G&&(null==J||J())}),[G,J]);const Q=null===(c=$.arrow)||void 0===c?void 0:c.x,ee=null===(u=$.arrow)||void 0===u?void 0:u.y,te=0!==(null===(f=$.arrow)||void 0===f?void 0:f.centerOffset),[ne,re]=e.useState();return d((()=>{T&&re(window.getComputedStyle(T).zIndex)}),[T]),e.createElement("div",{ref:W.setFloating,"data-radix-popper-content-wrapper":"",style:{...K,transform:G?K.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ne,"--radix-popper-transform-origin":[null===(p=$.transformOrigin)||void 0===p?void 0:p.x,null===(m=$.transformOrigin)||void 0===m?void 0:m.y].join(" ")},dir:t.dir},e.createElement(ll,{scope:g,placedSide:X,onArrowChange:N,arrowX:Q,arrowY:ee,shouldHideArrow:te},e.createElement(_.div,a({"data-side":X,"data-align":Y},R,{ref:I,style:{...R.style,animation:G?void 0:"none",opacity:null!==(h=$.hide)&&void 0!==h&&h.referenceHidden?0:void 0}}))))})),sl={top:"bottom",right:"left",bottom:"top",left:"right"};function ul(e){return null!==e}const dl=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,a,l;const{placement:i,rects:c,middlewareData:s}=t,u=0!==(null===(n=s.arrow)||void 0===n?void 0:n.centerOffset),d=u?0:e.arrowWidth,f=u?0:e.arrowHeight,[p,m]=fl(i),v={start:"0%",center:"50%",end:"100%"}[m],h=(null!==(r=null===(o=s.arrow)||void 0===o?void 0:o.x)&&void 0!==r?r:0)+d/2,g=(null!==(a=null===(l=s.arrow)||void 0===l?void 0:l.y)&&void 0!==a?a:0)+f/2;let w="",y="";return"bottom"===p?(w=u?v:`${h}px`,y=-f+"px"):"top"===p?(w=u?v:`${h}px`,y=`${c.floating.height+f}px`):"right"===p?(w=-f+"px",y=u?v:`${g}px`):"left"===p&&(w=`${c.floating.width+f}px`,y=u?v:`${g}px`),{data:{x:w,y:y}}}});function fl(e){const[t,n="center"]=e.split("-");return[t,n]}const pl=t=>{const{__scopePopper:n,children:r}=t,[o,a]=e.useState(null);return e.createElement(nl,{scope:n,anchor:o,onAnchorChange:a},r)},ml=ol,vl=cl,hl=e.forwardRef((function(t,n){const{__scopePopper:r,...o}=t,l=il("PopperArrow",r),i=sl[l.placedSide];return e.createElement("span",{ref:l.onArrowChange,style:{position:"absolute",left:l.arrowX,top:l.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[l.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[l.placedSide],visibility:l.shouldHideArrow?"hidden":void 0}},e.createElement(Ja,a({},o,{ref:n,style:{...o.style,display:"block"}})))})),gl="Popover",[wl,yl]=l(gl,[tl]),bl=tl(),[El,_l]=wl(gl),xl=e.forwardRef(((t,n)=>{const{__scopePopover:r,...o}=t,l=_l("PopoverTrigger",r),i=bl(r),c=s(n,l.triggerRef),d=e.createElement(_.button,a({type:"button","aria-haspopup":"dialog","aria-expanded":l.open,"aria-controls":l.contentId,"data-state":Tl(l.open)},o,{ref:c,onClick:u(t.onClick,l.onOpenToggle)}));return l.hasCustomAnchor?d:e.createElement(ml,a({asChild:!0},i),d)})),Cl="PopoverPortal",[Ol,kl]=wl(Cl,{forceMount:void 0}),Al="PopoverContent",Dl=e.forwardRef(((t,n)=>{const r=kl(Al,t.__scopePopover),{forceMount:o=r.forceMount,...l}=t,i=_l(Al,t.__scopePopover);return e.createElement(B,{present:o||i.open},i.modal?e.createElement(Sl,a({},l,{ref:n})):e.createElement(Rl,a({},l,{ref:n})))})),Sl=e.forwardRef(((t,n)=>{const r=_l(Al,t.__scopePopover),o=e.useRef(null),l=s(n,o),i=e.useRef(!1);return e.useEffect((()=>{const e=o.current;if(e)return Le(e)}),[]),e.createElement(De,{as:g,allowPinchZoom:!0},e.createElement(Pl,a({},t,{ref:l,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:u(t.onCloseAutoFocus,(e=>{var t;e.preventDefault(),i.current||null===(t=r.triggerRef.current)||void 0===t||t.focus()})),onPointerDownOutside:u(t.onPointerDownOutside,(e=>{const t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey,r=2===t.button||n;i.current=r}),{checkForDefaultPrevented:!1}),onFocusOutside:u(t.onFocusOutside,(e=>e.preventDefault()),{checkForDefaultPrevented:!1})})))})),Rl=e.forwardRef(((t,n)=>{const r=_l(Al,t.__scopePopover),o=e.useRef(!1),l=e.useRef(!1);return e.createElement(Pl,a({},t,{ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:e=>{var n,a;(null===(n=t.onCloseAutoFocus)||void 0===n||n.call(t,e),e.defaultPrevented)||(o.current||null===(a=r.triggerRef.current)||void 0===a||a.focus(),e.preventDefault());o.current=!1,l.current=!1},onInteractOutside:e=>{var n,a;null===(n=t.onInteractOutside)||void 0===n||n.call(t,e),e.defaultPrevented||(o.current=!0,"pointerdown"===e.detail.originalEvent.type&&(l.current=!0));const i=e.target;(null===(a=r.triggerRef.current)||void 0===a?void 0:a.contains(i))&&e.preventDefault(),"focusin"===e.detail.originalEvent.type&&l.current&&e.preventDefault()}}))})),Pl=e.forwardRef(((t,n)=>{const{__scopePopover:r,trapFocus:o,onOpenAutoFocus:l,onCloseAutoFocus:i,disableOutsidePointerEvents:c,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,...p}=t,m=_l(Al,r),v=bl(r);return W(),e.createElement(I,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:l,onUnmountAutoFocus:i},e.createElement(D,{asChild:!0,disableOutsidePointerEvents:c,onInteractOutside:f,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:d,onDismiss:()=>m.onOpenChange(!1)},e.createElement(vl,a({"data-state":Tl(m.open),role:"dialog",id:m.contentId},v,p,{ref:n,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))}));function Tl(e){return e?"open":"closed"}const Ml=t=>{const{__scopePopover:n,children:r,open:o,defaultOpen:a,onOpenChange:l,modal:i=!1}=t,c=bl(n),s=e.useRef(null),[u,d]=e.useState(!1),[f=!1,p]=h({prop:o,defaultProp:a,onChange:l});return e.createElement(pl,c,e.createElement(El,{scope:n,contentId:m(),triggerRef:s,open:f,onOpenChange:p,onOpenToggle:e.useCallback((()=>p((e=>!e))),[p]),hasCustomAnchor:u,onCustomAnchorAdd:e.useCallback((()=>d(!0)),[]),onCustomAnchorRemove:e.useCallback((()=>d(!1)),[]),modal:i},r))},Il=xl,Ll=t=>{const{__scopePopover:n,forceMount:r,children:o,container:a}=t,l=_l(Cl,n);return e.createElement(Ol,{scope:n,forceMount:r},e.createElement(B,{present:r||l.open},e.createElement(V,{asChild:!0,container:a},o)))},Nl=Dl;var jl="Popover-modules_popoverContent__EQXkn",Hl=e.memo((function(t){var n,r=t.align,o=void 0===r?"center":r,a=t.childClass,l=void 0===a?"":a,i=t.children,c=void 0===i?"":i,s=t.content,u=void 0===s?"":s,d=t.isContentChild,f=void 0!==d&&d,p=t.isOpen,m=void 0!==p&&p,v=t.onOpen,h=t.className,g=void 0===h?"":h;return e.createElement(Ml,{open:m,onOpenChange:function(e){v&&v(e)}},e.createElement(Il,{className:l},c),e.createElement(Ll,null,e.createElement(Nl,{align:o,className:Nt("demio-ui-modal-content",jl,(n={},n[g]=!!g,n)),asChild:f},u)))}));const Zl="Progress",Fl=100,[Vl,Bl]=l(Zl),[Ul,zl]=Vl(Zl),Wl=e.forwardRef(((t,n)=>{const{__scopeProgress:r,value:o,max:l,getValueLabel:i=Kl,...c}=t,s=$l(l)?l:Fl,u=Xl(o,s)?o:null,d=Gl(u)?i(u,s):void 0;return e.createElement(Ul,{scope:r,value:u,max:s},e.createElement(_.div,a({"aria-valuemax":s,"aria-valuemin":0,"aria-valuenow":Gl(u)?u:void 0,"aria-valuetext":d,role:"progressbar","data-state":ql(u,s),"data-value":null!=u?u:void 0,"data-max":s},c,{ref:n})))}));Wl.propTypes={max(e,t,n){const r=e[t],o=String(r);return r&&!$l(r)?new Error(function(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`}(o,n)):null},value(e,t,n){const r=e[t],o=String(r),a=$l(e.max)?e.max:Fl;return null==r||Xl(r,a)?null:new Error(function(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:\n - a positive number\n - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)\n - \`null\` if the progress is indeterminate.\n\nDefaulting to \`null\`.`}(o,n))}};function Kl(e,t){return`${Math.round(e/t*100)}%`}function ql(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function Gl(e){return"number"==typeof e}function $l(e){return Gl(e)&&!isNaN(e)&&e>0}function Xl(e,t){return Gl(e)&&!isNaN(e)&&e<=t&&e>=0}const Yl=Wl,Jl=e.forwardRef(((t,n)=>{var r;const{__scopeProgress:o,...l}=t,i=zl("ProgressIndicator",o);return e.createElement(_.div,a({"data-state":ql(i.value,i.max),"data-value":null!==(r=i.value)&&void 0!==r?r:void 0,"data-max":i.max},l,{ref:n}))}));var Ql="Progress-modules_root__E0rHH",ei="Progress-modules_indicator__qpwRi";function ti(t){const n=t+"CollectionProvider",[r,o]=l(n),[a,i]=r(n,{collectionRef:{current:null},itemMap:new Map}),c=t+"CollectionSlot",u=t+"CollectionItemSlot",d="data-radix-collection-item";return[{Provider:t=>{const{scope:n,children:r}=t,o=e.useRef(null),l=e.useRef(new Map).current;return e.createElement(a,{scope:n,itemMap:l,collectionRef:o},r)},Slot:e.forwardRef(((t,n)=>{const{scope:r,children:o}=t,a=s(n,i(c,r).collectionRef);return e.createElement(g,{ref:a},o)})),ItemSlot:e.forwardRef(((t,n)=>{const{scope:r,children:o,...a}=t,l=e.useRef(null),c=s(n,l),f=i(u,r);return e.useEffect((()=>(f.itemMap.set(l,{ref:l,...a}),()=>{f.itemMap.delete(l)}))),e.createElement(g,{[d]:"",ref:c},o)}))},function(n){const r=i(t+"CollectionConsumer",n);return e.useCallback((()=>{const e=r.collectionRef.current;if(!e)return[];const t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(r.itemMap.values()).sort(((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current)))}),[r.collectionRef,r.itemMap])},o]}const ni=e.createContext(void 0);function ri(t){const n=e.useContext(ni);return t||n||"ltr"}const oi="rovingFocusGroup.onEntryFocus",ai={bubbles:!1,cancelable:!0},li="RovingFocusGroup",[ii,ci,si]=ti(li),[ui,di]=l(li,[si]),[fi,pi]=ui(li),mi=e.forwardRef(((t,n)=>e.createElement(ii.Provider,{scope:t.__scopeRovingFocusGroup},e.createElement(ii.Slot,{scope:t.__scopeRovingFocusGroup},e.createElement(vi,a({},t,{ref:n})))))),vi=e.forwardRef(((t,n)=>{const{__scopeRovingFocusGroup:r,orientation:o,loop:l=!1,dir:i,currentTabStopId:c,defaultCurrentTabStopId:d,onCurrentTabStopIdChange:f,onEntryFocus:p,...m}=t,g=e.useRef(null),w=s(n,g),y=ri(i),[b=null,E]=h({prop:c,defaultProp:d,onChange:f}),[x,C]=e.useState(!1),O=v(p),k=ci(r),A=e.useRef(!1),[D,S]=e.useState(0);return e.useEffect((()=>{const e=g.current;if(e)return e.addEventListener(oi,O),()=>e.removeEventListener(oi,O)}),[O]),e.createElement(fi,{scope:r,orientation:o,dir:y,loop:l,currentTabStopId:b,onItemFocus:e.useCallback((e=>E(e)),[E]),onItemShiftTab:e.useCallback((()=>C(!0)),[]),onFocusableItemAdd:e.useCallback((()=>S((e=>e+1))),[]),onFocusableItemRemove:e.useCallback((()=>S((e=>e-1))),[])},e.createElement(_.div,a({tabIndex:x||0===D?-1:0,"data-orientation":o},m,{ref:w,style:{outline:"none",...t.style},onMouseDown:u(t.onMouseDown,(()=>{A.current=!0})),onFocus:u(t.onFocus,(e=>{const t=!A.current;if(e.target===e.currentTarget&&t&&!x){const t=new CustomEvent(oi,ai);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){const e=k().filter((e=>e.focusable));wi([e.find((e=>e.active)),e.find((e=>e.id===b)),...e].filter(Boolean).map((e=>e.ref.current)))}}A.current=!1})),onBlur:u(t.onBlur,(()=>C(!1)))})))})),hi=e.forwardRef(((t,n)=>{const{__scopeRovingFocusGroup:r,focusable:o=!0,active:l=!1,tabStopId:i,...c}=t,s=m(),d=i||s,f=pi("RovingFocusGroupItem",r),p=f.currentTabStopId===d,v=ci(r),{onFocusableItemAdd:h,onFocusableItemRemove:g}=f;return e.useEffect((()=>{if(o)return h(),()=>g()}),[o,h,g]),e.createElement(ii.ItemSlot,{scope:r,id:d,focusable:o,active:l},e.createElement(_.span,a({tabIndex:p?0:-1,"data-orientation":f.orientation},c,{ref:n,onMouseDown:u(t.onMouseDown,(e=>{o?f.onItemFocus(d):e.preventDefault()})),onFocus:u(t.onFocus,(()=>f.onItemFocus(d))),onKeyDown:u(t.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void f.onItemShiftTab();if(e.target!==e.currentTarget)return;const t=function(e,t,n){const r=function(e,t){return"rtl"!==t?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===t&&["ArrowLeft","ArrowRight"].includes(r)||"horizontal"===t&&["ArrowUp","ArrowDown"].includes(r)?void 0:gi[r]}(e,f.orientation,f.dir);if(void 0!==t){e.preventDefault();let o=v().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===t)o.reverse();else if("prev"===t||"next"===t){"prev"===t&&o.reverse();const a=o.indexOf(e.currentTarget);o=f.loop?(r=a+1,(n=o).map(((e,t)=>n[(r+t)%n.length]))):o.slice(a+1)}setTimeout((()=>wi(o)))}var n,r}))})))})),gi={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function wi(e){const t=document.activeElement;for(const n of e){if(n===t)return;if(n.focus(),document.activeElement!==t)return}}const yi=mi,bi=hi,Ei="Radio",[_i,xi]=l(Ei),[Ci,Oi]=_i(Ei),ki=e.forwardRef(((t,n)=>{const{__scopeRadio:r,name:o,checked:l=!1,required:i,disabled:c,value:d="on",onCheck:f,...p}=t,[m,v]=e.useState(null),h=s(n,(e=>v(e))),g=e.useRef(!1),w=!m||Boolean(m.closest("form"));return e.createElement(Ci,{scope:r,checked:l,disabled:c},e.createElement(_.button,a({type:"button",role:"radio","aria-checked":l,"data-state":Si(l),"data-disabled":c?"":void 0,disabled:c,value:d},p,{ref:h,onClick:u(t.onClick,(e=>{l||null==f||f(),w&&(g.current=e.isPropagationStopped(),g.current||e.stopPropagation())}))})),w&&e.createElement(Di,{control:m,bubbles:!g.current,name:o,value:d,checked:l,required:i,disabled:c,style:{transform:"translateX(-100%)"}}))})),Ai=e.forwardRef(((t,n)=>{const{__scopeRadio:r,forceMount:o,...l}=t,i=Oi("RadioIndicator",r);return e.createElement(B,{present:o||i.checked},e.createElement(_.span,a({"data-state":Si(i.checked),"data-disabled":i.disabled?"":void 0},l,{ref:n})))})),Di=t=>{const{control:n,checked:r,bubbles:o=!0,...l}=t,i=e.useRef(null),c=zt(r),s=Wt(n);return e.useEffect((()=>{const e=i.current,t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,"checked").set;if(c!==r&&n){const t=new Event("click",{bubbles:o});n.call(e,r),e.dispatchEvent(t)}}),[c,r,o]),e.createElement("input",a({type:"radio","aria-hidden":!0,defaultChecked:r},l,{tabIndex:-1,ref:i,style:{...t.style,...s,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function Si(e){return e?"checked":"unchecked"}const Ri=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Pi="RadioGroup",[Ti,Mi]=l(Pi,[di,xi]),Ii=di(),Li=xi(),[Ni,ji]=Ti(Pi),Hi=e.forwardRef(((t,n)=>{const{__scopeRadioGroup:r,name:o,defaultValue:l,value:i,required:c=!1,disabled:s=!1,orientation:u,dir:d,loop:f=!0,onValueChange:p,...m}=t,v=Ii(r),g=ri(d),[w,y]=h({prop:i,defaultProp:l,onChange:p});return e.createElement(Ni,{scope:r,name:o,required:c,disabled:s,value:w,onValueChange:y},e.createElement(yi,a({asChild:!0},v,{orientation:u,dir:g,loop:f}),e.createElement(_.div,a({role:"radiogroup","aria-required":c,"aria-orientation":u,"data-disabled":s?"":void 0,dir:g},m,{ref:n}))))})),Zi=e.forwardRef(((t,n)=>{const{__scopeRadioGroup:r,disabled:o,...l}=t,i=ji("RadioGroupItem",r),c=i.disabled||o,d=Ii(r),f=Li(r),p=e.useRef(null),m=s(n,p),v=i.value===l.value,h=e.useRef(!1);return e.useEffect((()=>{const e=e=>{Ri.includes(e.key)&&(h.current=!0)},t=()=>h.current=!1;return document.addEventListener("keydown",e),document.addEventListener("keyup",t),()=>{document.removeEventListener("keydown",e),document.removeEventListener("keyup",t)}}),[]),e.createElement(bi,a({asChild:!0},d,{focusable:!c,active:v}),e.createElement(ki,a({disabled:c,required:i.required,checked:v},f,l,{name:i.name,ref:m,onCheck:()=>i.onValueChange(l.value),onKeyDown:u((e=>{"Enter"===e.key&&e.preventDefault()})),onFocus:u(l.onFocus,(()=>{var e;h.current&&(null===(e=p.current)||void 0===e||e.click())}))})))})),Fi=e.forwardRef(((t,n)=>{const{__scopeRadioGroup:r,...o}=t,l=Li(r);return e.createElement(Ai,a({},l,o,{ref:n}))}));var Vi={root:"RadioGroup-modules_root__AbbNa",container:"RadioGroup-modules_container__yPAMg",indicator:"RadioGroup-modules_indicator__jEw97",item:"RadioGroup-modules_item__wuUmn",label:"RadioGroup-modules_label__ggYdY",footer:"RadioGroup-modules_footer__1Zp99",disabled:"RadioGroup-modules_disabled__H3T--"};const Bi="Switch",[Ui,zi]=l(Bi),[Wi,Ki]=Ui(Bi),qi=e.forwardRef(((t,n)=>{const{__scopeSwitch:r,name:o,checked:l,defaultChecked:i,required:c,disabled:d,value:f="on",onCheckedChange:p,...m}=t,[v,g]=e.useState(null),w=s(n,(e=>g(e))),y=e.useRef(!1),b=!v||Boolean(v.closest("form")),[E=!1,x]=h({prop:l,defaultProp:i,onChange:p});return e.createElement(Wi,{scope:r,checked:E,disabled:d},e.createElement(_.button,a({type:"button",role:"switch","aria-checked":E,"aria-required":c,"data-state":$i(E),"data-disabled":d?"":void 0,disabled:d,value:f},m,{ref:w,onClick:u(t.onClick,(e=>{x((e=>!e)),b&&(y.current=e.isPropagationStopped(),y.current||e.stopPropagation())}))})),b&&e.createElement(Gi,{control:v,bubbles:!y.current,name:o,value:f,checked:E,required:c,disabled:d,style:{transform:"translateX(-100%)"}}))})),Gi=t=>{const{control:n,checked:r,bubbles:o=!0,...l}=t,i=e.useRef(null),c=zt(r),s=Wt(n);return e.useEffect((()=>{const e=i.current,t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,"checked").set;if(c!==r&&n){const t=new Event("click",{bubbles:o});n.call(e,r),e.dispatchEvent(t)}}),[c,r,o]),e.createElement("input",a({type:"checkbox","aria-hidden":!0,defaultChecked:r},l,{tabIndex:-1,ref:i,style:{...t.style,...s,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function $i(e){return e?"checked":"unchecked"}const Xi=qi,Yi=e.forwardRef(((t,n)=>{const{__scopeSwitch:r,...o}=t,l=Ki("SwitchThumb",r);return e.createElement(_.span,a({"data-state":$i(l.checked),"data-disabled":l.disabled?"":void 0},o,{ref:n}))}));var Ji="Switch-modules_root__V5S6a",Qi="Switch-modules_thumb__PZ-lR";const ec=e.forwardRef(((t,n)=>e.createElement(_.span,a({},t,{ref:n,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...t.style}})))),tc=ec,[nc,rc]=l("Tooltip",[tl]),oc=tl(),ac=700,lc="tooltip.open",[ic,cc]=nc("TooltipProvider"),sc="Tooltip",[uc,dc]=nc(sc),fc="TooltipTrigger",pc=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,...o}=t,l=dc(fc,r),i=cc(fc,r),c=oc(r),d=s(n,e.useRef(null),l.onTriggerChange),f=e.useRef(!1),p=e.useRef(!1),m=e.useCallback((()=>f.current=!1),[]);return e.useEffect((()=>()=>document.removeEventListener("pointerup",m)),[m]),e.createElement(ml,a({asChild:!0},c),e.createElement(_.button,a({"aria-describedby":l.open?l.contentId:void 0,"data-state":l.stateAttribute},o,{ref:d,onPointerMove:u(t.onPointerMove,(e=>{"touch"!==e.pointerType&&(p.current||i.isPointerInTransitRef.current||(l.onTriggerEnter(),p.current=!0))})),onPointerLeave:u(t.onPointerLeave,(()=>{l.onTriggerLeave(),p.current=!1})),onPointerDown:u(t.onPointerDown,(()=>{f.current=!0,document.addEventListener("pointerup",m,{once:!0})})),onFocus:u(t.onFocus,(()=>{f.current||l.onOpen()})),onBlur:u(t.onBlur,l.onClose),onClick:u(t.onClick,l.onClose)})))})),mc="TooltipPortal",[vc,hc]=nc(mc,{forceMount:void 0}),gc="TooltipContent",wc=e.forwardRef(((t,n)=>{const r=hc(gc,t.__scopeTooltip),{forceMount:o=r.forceMount,side:l="top",...i}=t,c=dc(gc,t.__scopeTooltip);return e.createElement(B,{present:o||c.open},c.disableHoverableContent?e.createElement(_c,a({side:l},i,{ref:n})):e.createElement(yc,a({side:l},i,{ref:n})))})),yc=e.forwardRef(((t,n)=>{const r=dc(gc,t.__scopeTooltip),o=cc(gc,t.__scopeTooltip),l=e.useRef(null),i=s(n,l),[c,u]=e.useState(null),{trigger:d,onClose:f}=r,p=l.current,{onPointerInTransitChange:m}=o,v=e.useCallback((()=>{u(null),m(!1)}),[m]),h=e.useCallback(((e,t)=>{const n=e.currentTarget,r={x:e.clientX,y:e.clientY},o=function(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,function(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,o,a)){case a:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}(r,n.getBoundingClientRect())),a=function(e){const t=e.slice();return t.sort(((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0)),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x)))break;t.pop()}t.push(r)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const r=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x)))break;n.pop()}n.push(r)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...o,...function(e){const{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}(t.getBoundingClientRect())]);u(a),m(!0)}),[m]);return e.useEffect((()=>()=>v()),[v]),e.useEffect((()=>{if(d&&p){const e=e=>h(e,p),t=e=>h(e,d);return d.addEventListener("pointerleave",e),p.addEventListener("pointerleave",t),()=>{d.removeEventListener("pointerleave",e),p.removeEventListener("pointerleave",t)}}}),[d,p,h,v]),e.useEffect((()=>{if(c){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},r=(null==d?void 0:d.contains(t))||(null==p?void 0:p.contains(t)),o=!function(e,t){const{x:n,y:r}=e;let o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const l=t[e].x,i=t[e].y,c=t[a].x,s=t[a].y;i>r!=s>r&&n<(c-l)*(r-i)/(s-i)+l&&(o=!o)}return o}(n,c);r?v():o&&(v(),f())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}}),[d,p,c,f,v]),e.createElement(_c,a({},t,{ref:i}))})),[bc,Ec]=nc(sc,{isInside:!1}),_c=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,children:o,"aria-label":l,onEscapeKeyDown:i,onPointerDownOutside:c,...s}=t,u=dc(gc,r),d=oc(r),{onClose:f}=u;return e.useEffect((()=>(document.addEventListener(lc,f),()=>document.removeEventListener(lc,f))),[f]),e.useEffect((()=>{if(u.trigger){const e=e=>{const t=e.target;null!=t&&t.contains(u.trigger)&&f()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[u.trigger,f]),e.createElement(D,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:f},e.createElement(vl,a({"data-state":u.stateAttribute},d,s,{ref:n,style:{...s.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"}}),e.createElement(y,null,o),e.createElement(bc,{scope:r,isInside:!0},e.createElement(tc,{id:u.contentId,role:"tooltip"},l||o))))}));const xc=t=>{const{__scopeTooltip:n,delayDuration:r=ac,skipDelayDuration:o=300,disableHoverableContent:a=!1,children:l}=t,[i,c]=e.useState(!0),s=e.useRef(!1),u=e.useRef(0);return e.useEffect((()=>{const e=u.current;return()=>window.clearTimeout(e)}),[]),e.createElement(ic,{scope:n,isOpenDelayed:i,delayDuration:r,onOpen:e.useCallback((()=>{window.clearTimeout(u.current),c(!1)}),[]),onClose:e.useCallback((()=>{window.clearTimeout(u.current),u.current=window.setTimeout((()=>c(!0)),o)}),[o]),isPointerInTransitRef:s,onPointerInTransitChange:e.useCallback((e=>{s.current=e}),[]),disableHoverableContent:a},l)},Cc=t=>{const{__scopeTooltip:n,children:r,open:o,defaultOpen:a=!1,onOpenChange:l,disableHoverableContent:i,delayDuration:c}=t,s=cc(sc,t.__scopeTooltip),u=oc(n),[d,f]=e.useState(null),p=m(),v=e.useRef(0),g=null!=i?i:s.disableHoverableContent,w=null!=c?c:s.delayDuration,y=e.useRef(!1),[b=!1,E]=h({prop:o,defaultProp:a,onChange:e=>{e?(s.onOpen(),document.dispatchEvent(new CustomEvent(lc))):s.onClose(),null==l||l(e)}}),_=e.useMemo((()=>b?y.current?"delayed-open":"instant-open":"closed"),[b]),x=e.useCallback((()=>{window.clearTimeout(v.current),y.current=!1,E(!0)}),[E]),C=e.useCallback((()=>{window.clearTimeout(v.current),E(!1)}),[E]),O=e.useCallback((()=>{window.clearTimeout(v.current),v.current=window.setTimeout((()=>{y.current=!0,E(!0)}),w)}),[w,E]);return e.useEffect((()=>()=>window.clearTimeout(v.current)),[]),e.createElement(pl,u,e.createElement(uc,{scope:n,contentId:p,open:b,stateAttribute:_,trigger:d,onTriggerChange:f,onTriggerEnter:e.useCallback((()=>{s.isOpenDelayed?O():x()}),[s.isOpenDelayed,O,x]),onTriggerLeave:e.useCallback((()=>{g?C():window.clearTimeout(v.current)}),[C,g]),onOpen:x,onClose:C,disableHoverableContent:g},r))},Oc=pc,kc=t=>{const{__scopeTooltip:n,forceMount:r,children:o,container:a}=t,l=dc(mc,n);return e.createElement(vc,{scope:n,forceMount:r},e.createElement(B,{present:r||l.open},e.createElement(V,{asChild:!0,container:a},o)))},Ac=wc,Dc=e.forwardRef(((t,n)=>{const{__scopeTooltip:r,...o}=t,l=oc(r);return Ec("TooltipArrow",r).isInside?null:e.createElement(hl,a({},l,o,{ref:n}))}));var Sc="Tooltip-modules_content__--tK0",Rc="Tooltip-modules_arrow__4vjj8";function Pc(e,[t,n]){return Math.min(n,Math.max(t,e))}const Tc=[" ","Enter","ArrowUp","ArrowDown"],Mc=[" ","Enter"],Ic="Select",[Lc,Nc,jc]=ti(Ic),[Hc,Zc]=l(Ic,[jc,tl]),Fc=tl(),[Vc,Bc]=Hc(Ic),[Uc,zc]=Hc(Ic),Wc=e.forwardRef(((t,n)=>{const{__scopeSelect:r,disabled:o=!1,...l}=t,i=Fc(r),c=Bc("SelectTrigger",r),d=c.disabled||o,f=s(n,c.onTriggerChange),p=Nc(r),[m,v,h]=ws((e=>{const t=p().filter((e=>!e.disabled)),n=t.find((e=>e.value===c.value)),r=ys(t,e,n);void 0!==r&&c.onValueChange(r.value)})),g=()=>{d||(c.onOpenChange(!0),h())};return e.createElement(ml,a({asChild:!0},i),e.createElement(_.button,a({type:"button",role:"combobox","aria-controls":c.contentId,"aria-expanded":c.open,"aria-required":c.required,"aria-autocomplete":"none",dir:c.dir,"data-state":c.open?"open":"closed",disabled:d,"data-disabled":d?"":void 0,"data-placeholder":void 0===c.value?"":void 0},l,{ref:f,onClick:u(l.onClick,(e=>{e.currentTarget.focus()})),onPointerDown:u(l.onPointerDown,(e=>{const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&(g(),c.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)},e.preventDefault())})),onKeyDown:u(l.onKeyDown,(e=>{const t=""!==m.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||v(e.key),t&&" "===e.key||Tc.includes(e.key)&&(g(),e.preventDefault())}))})))})),Kc=e.forwardRef(((t,n)=>{const{__scopeSelect:r,className:o,style:l,children:i,placeholder:c,...u}=t,f=Bc("SelectValue",r),{onValueNodeHasChildrenChange:p}=f,m=void 0!==i,v=s(n,f.onValueNodeChange);return d((()=>{p(m)}),[p,m]),e.createElement(_.span,a({},u,{ref:v,style:{pointerEvents:"none"}}),void 0===f.value&&void 0!==c?c:i)})),qc=e.forwardRef(((t,n)=>{const{__scopeSelect:r,children:o,...l}=t;return e.createElement(_.span,a({"aria-hidden":!0},l,{ref:n}),o||"▼")})),Gc="SelectContent",$c=e.forwardRef(((n,r)=>{const o=Bc(Gc,n.__scopeSelect),[l,i]=e.useState();if(d((()=>{i(new DocumentFragment)}),[]),!o.open){const r=l;return r?t.createPortal(e.createElement(Yc,{scope:n.__scopeSelect},e.createElement(Lc.Slot,{scope:n.__scopeSelect},e.createElement("div",null,n.children))),r):null}return e.createElement(Qc,a({},n,{ref:r}))})),Xc=10,[Yc,Jc]=Hc(Gc),Qc=e.forwardRef(((t,n)=>{const{__scopeSelect:r,position:o="item-aligned",onCloseAutoFocus:l,onEscapeKeyDown:i,onPointerDownOutside:c,side:d,sideOffset:f,align:p,alignOffset:m,arrowPadding:v,collisionBoundary:h,collisionPadding:w,sticky:y,hideWhenDetached:b,avoidCollisions:E,..._}=t,x=Bc(Gc,r),[C,O]=e.useState(null),[k,A]=e.useState(null),S=s(n,(e=>O(e))),[R,P]=e.useState(null),[T,M]=e.useState(null),L=Nc(r),[N,j]=e.useState(!1),H=e.useRef(!1);e.useEffect((()=>{if(C)return Le(C)}),[C]),W();const Z=e.useCallback((e=>{const[t,...n]=L().map((e=>e.ref.current)),[r]=n.slice(-1),o=document.activeElement;for(const n of e){if(n===o)return;if(null==n||n.scrollIntoView({block:"nearest"}),n===t&&k&&(k.scrollTop=0),n===r&&k&&(k.scrollTop=k.scrollHeight),null==n||n.focus(),document.activeElement!==o)return}}),[L,k]),F=e.useCallback((()=>Z([R,C])),[Z,R,C]);e.useEffect((()=>{N&&F()}),[N,F]);const{onOpenChange:V,triggerPointerDownPosRef:B}=x;e.useEffect((()=>{if(C){let e={x:0,y:0};const t=t=>{var n,r,o,a;e={x:Math.abs(Math.round(t.pageX)-(null!==(n=null===(r=B.current)||void 0===r?void 0:r.x)&&void 0!==n?n:0)),y:Math.abs(Math.round(t.pageY)-(null!==(o=null===(a=B.current)||void 0===a?void 0:a.y)&&void 0!==o?o:0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():C.contains(n.target)||V(!1),document.removeEventListener("pointermove",t),B.current=null};return null!==B.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",n,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",n,{capture:!0})}}}),[C,V,B]),e.useEffect((()=>{const e=()=>V(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}}),[V]);const[U,z]=ws((e=>{const t=L().filter((e=>!e.disabled)),n=t.find((e=>e.ref.current===document.activeElement)),r=ys(t,e,n);r&&setTimeout((()=>r.ref.current.focus()))})),K=e.useCallback(((e,t,n)=>{const r=!H.current&&!n;(void 0!==x.value&&x.value===t||r)&&(P(e),r&&(H.current=!0))}),[x.value]),q=e.useCallback((()=>null==C?void 0:C.focus()),[C]),G=e.useCallback(((e,t,n)=>{const r=!H.current&&!n;(void 0!==x.value&&x.value===t||r)&&M(e)}),[x.value]),$="popper"===o?ts:es,X=$===ts?{side:d,sideOffset:f,align:p,alignOffset:m,arrowPadding:v,collisionBoundary:h,collisionPadding:w,sticky:y,hideWhenDetached:b,avoidCollisions:E}:{};return e.createElement(Yc,{scope:r,content:C,viewport:k,onViewportChange:A,itemRefCallback:K,selectedItem:R,onItemLeave:q,itemTextRefCallback:G,focusSelectedItem:F,selectedItemText:T,position:o,isPositioned:N,searchRef:U},e.createElement(De,{as:g,allowPinchZoom:!0},e.createElement(I,{asChild:!0,trapped:x.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:u(l,(e=>{var t;null===(t=x.trigger)||void 0===t||t.focus({preventScroll:!0}),e.preventDefault()}))},e.createElement(D,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:i,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>x.onOpenChange(!1)},e.createElement($,a({role:"listbox",id:x.contentId,"data-state":x.open?"open":"closed",dir:x.dir,onContextMenu:e=>e.preventDefault()},_,X,{onPlaced:()=>j(!0),ref:S,style:{display:"flex",flexDirection:"column",outline:"none",..._.style},onKeyDown:u(_.onKeyDown,(e=>{const t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||z(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=L().filter((e=>!e.disabled)).map((e=>e.ref.current));if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){const n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout((()=>Z(t))),e.preventDefault()}}))}))))))})),es=e.forwardRef(((t,n)=>{const{__scopeSelect:r,onPlaced:o,...l}=t,i=Bc(Gc,r),c=Jc(Gc,r),[u,f]=e.useState(null),[p,m]=e.useState(null),v=s(n,(e=>m(e))),h=Nc(r),g=e.useRef(!1),w=e.useRef(!0),{viewport:y,selectedItem:b,selectedItemText:E,focusSelectedItem:x}=c,C=e.useCallback((()=>{if(i.trigger&&i.valueNode&&u&&p&&y&&b&&E){const e=i.trigger.getBoundingClientRect(),t=p.getBoundingClientRect(),n=i.valueNode.getBoundingClientRect(),r=E.getBoundingClientRect();if("rtl"!==i.dir){const o=r.left-t.left,a=n.left-o,l=e.left-a,i=e.width+l,c=Math.max(i,t.width),s=window.innerWidth-Xc,d=Pc(a,[Xc,s-c]);u.style.minWidth=i+"px",u.style.left=d+"px"}else{const o=t.right-r.right,a=window.innerWidth-n.right-o,l=window.innerWidth-e.right-a,i=e.width+l,c=Math.max(i,t.width),s=window.innerWidth-Xc,d=Pc(a,[Xc,s-c]);u.style.minWidth=i+"px",u.style.right=d+"px"}const a=h(),l=window.innerHeight-2*Xc,c=y.scrollHeight,s=window.getComputedStyle(p),d=parseInt(s.borderTopWidth,10),f=parseInt(s.paddingTop,10),m=parseInt(s.borderBottomWidth,10),v=d+f+c+parseInt(s.paddingBottom,10)+m,w=Math.min(5*b.offsetHeight,v),_=window.getComputedStyle(y),x=parseInt(_.paddingTop,10),C=parseInt(_.paddingBottom,10),O=e.top+e.height/2-Xc,k=l-O,A=b.offsetHeight/2,D=d+f+(b.offsetTop+A),S=v-D;if(D<=O){const e=b===a[a.length-1].ref.current;u.style.bottom="0px";const t=p.clientHeight-y.offsetTop-y.offsetHeight,n=D+Math.max(k,A+(e?C:0)+t+m);u.style.height=n+"px"}else{const e=b===a[0].ref.current;u.style.top="0px";const t=Math.max(O,d+y.offsetTop+(e?x:0)+A)+S;u.style.height=t+"px",y.scrollTop=D-O+y.offsetTop}u.style.margin=`${Xc}px 0`,u.style.minHeight=w+"px",u.style.maxHeight=l+"px",null==o||o(),requestAnimationFrame((()=>g.current=!0))}}),[h,i.trigger,i.valueNode,u,p,y,b,E,i.dir,o]);d((()=>C()),[C]);const[O,k]=e.useState();d((()=>{p&&k(window.getComputedStyle(p).zIndex)}),[p]);const A=e.useCallback((e=>{e&&!0===w.current&&(C(),null==x||x(),w.current=!1)}),[C,x]);return e.createElement(ns,{scope:r,contentWrapper:u,shouldExpandOnScrollRef:g,onScrollButtonChange:A},e.createElement("div",{ref:f,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:O}},e.createElement(_.div,a({},l,{ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...l.style}}))))})),ts=e.forwardRef(((t,n)=>{const{__scopeSelect:r,align:o="start",collisionPadding:l=Xc,...i}=t,c=Fc(r);return e.createElement(vl,a({},c,i,{ref:n,align:o,collisionPadding:l,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))})),[ns,rs]=Hc(Gc,{}),os="SelectViewport",as=e.forwardRef(((t,n)=>{const{__scopeSelect:r,...o}=t,l=Jc(os,r),i=rs(os,r),c=s(n,l.onViewportChange),d=e.useRef(0);return e.createElement(e.Fragment,null,e.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),e.createElement(Lc.Slot,{scope:r},e.createElement(_.div,a({"data-radix-select-viewport":"",role:"presentation"},o,{ref:c,style:{position:"relative",flex:1,overflow:"auto",...o.style},onScroll:u(o.onScroll,(e=>{const t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=i;if(null!=r&&r.current&&n){const e=Math.abs(d.current-t.scrollTop);if(e>0){const r=window.innerHeight-2*Xc,o=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),l=Math.max(o,a);if(l<r){const o=l+e,a=Math.min(r,o),i=o-a;n.style.height=a+"px","0px"===n.style.bottom&&(t.scrollTop=i>0?i:0,n.style.justifyContent="flex-end")}}}d.current=t.scrollTop}))}))))}));Hc("SelectGroup");const ls="SelectItem",[is,cs]=Hc(ls),ss=e.forwardRef(((t,n)=>{const{__scopeSelect:r,value:o,disabled:l=!1,textValue:i,...c}=t,d=Bc(ls,r),f=Jc(ls,r),p=d.value===o,[v,h]=e.useState(null!=i?i:""),[g,w]=e.useState(!1),y=s(n,(e=>{var t;return null===(t=f.itemRefCallback)||void 0===t?void 0:t.call(f,e,o,l)})),b=m(),E=()=>{l||(d.onValueChange(o),d.onOpenChange(!1))};return e.createElement(is,{scope:r,value:o,disabled:l,textId:b,isSelected:p,onItemTextChange:e.useCallback((e=>{h((t=>{var n;return t||(null!==(n=null==e?void 0:e.textContent)&&void 0!==n?n:"").trim()}))}),[])},e.createElement(Lc.ItemSlot,{scope:r,value:o,disabled:l,textValue:v},e.createElement(_.div,a({role:"option","aria-labelledby":b,"data-highlighted":g?"":void 0,"aria-selected":p&&g,"data-state":p?"checked":"unchecked","aria-disabled":l||void 0,"data-disabled":l?"":void 0,tabIndex:l?void 0:-1},c,{ref:y,onFocus:u(c.onFocus,(()=>w(!0))),onBlur:u(c.onBlur,(()=>w(!1))),onPointerUp:u(c.onPointerUp,E),onPointerMove:u(c.onPointerMove,(e=>{var t;l?null===(t=f.onItemLeave)||void 0===t||t.call(f):e.currentTarget.focus({preventScroll:!0})})),onPointerLeave:u(c.onPointerLeave,(e=>{var t;e.currentTarget===document.activeElement&&(null===(t=f.onItemLeave)||void 0===t||t.call(f))})),onKeyDown:u(c.onKeyDown,(e=>{var t;""!==(null===(t=f.searchRef)||void 0===t?void 0:t.current)&&" "===e.key||(Mc.includes(e.key)&&E()," "===e.key&&e.preventDefault())}))}))))})),us="SelectItemText",ds=e.forwardRef(((n,r)=>{const{__scopeSelect:o,className:l,style:i,...c}=n,u=Bc(us,o),f=Jc(us,o),p=cs(us,o),m=zc(us,o),[v,h]=e.useState(null),g=s(r,(e=>h(e)),p.onItemTextChange,(e=>{var t;return null===(t=f.itemTextRefCallback)||void 0===t?void 0:t.call(f,e,p.value,p.disabled)})),w=null==v?void 0:v.textContent,y=e.useMemo((()=>e.createElement("option",{key:p.value,value:p.value,disabled:p.disabled},w)),[p.disabled,p.value,w]),{onNativeOptionAdd:b,onNativeOptionRemove:E}=m;return d((()=>(b(y),()=>E(y))),[b,E,y]),e.createElement(e.Fragment,null,e.createElement(_.span,a({id:p.textId},c,{ref:g})),p.isSelected&&u.valueNode&&!u.valueNodeHasChildren?t.createPortal(c.children,u.valueNode):null)})),fs="SelectScrollUpButton",ps=e.forwardRef(((t,n)=>{const r=Jc(fs,t.__scopeSelect),o=rs(fs,t.__scopeSelect),[l,i]=e.useState(!1),c=s(n,o.onScrollButtonChange);return d((()=>{if(r.viewport&&r.isPositioned){const e=r.viewport;function t(){const t=e.scrollTop>0;i(t)}return t(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}}),[r.viewport,r.isPositioned]),l?e.createElement(hs,a({},t,{ref:c,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}})):null})),ms="SelectScrollDownButton",vs=e.forwardRef(((t,n)=>{const r=Jc(ms,t.__scopeSelect),o=rs(ms,t.__scopeSelect),[l,i]=e.useState(!1),c=s(n,o.onScrollButtonChange);return d((()=>{if(r.viewport&&r.isPositioned){const e=r.viewport;function t(){const t=e.scrollHeight-e.clientHeight,n=Math.ceil(e.scrollTop)<t;i(n)}return t(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}}),[r.viewport,r.isPositioned]),l?e.createElement(hs,a({},t,{ref:c,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}})):null})),hs=e.forwardRef(((t,n)=>{const{__scopeSelect:r,onAutoScroll:o,...l}=t,i=Jc("SelectScrollButton",r),c=e.useRef(null),s=Nc(r),f=e.useCallback((()=>{null!==c.current&&(window.clearInterval(c.current),c.current=null)}),[]);return e.useEffect((()=>()=>f()),[f]),d((()=>{var e;const t=s().find((e=>e.ref.current===document.activeElement));null==t||null===(e=t.ref.current)||void 0===e||e.scrollIntoView({block:"nearest"})}),[s]),e.createElement(_.div,a({"aria-hidden":!0},l,{ref:n,style:{flexShrink:0,...l.style},onPointerDown:u(l.onPointerDown,(()=>{null===c.current&&(c.current=window.setInterval(o,50))})),onPointerMove:u(l.onPointerMove,(()=>{var e;null===(e=i.onItemLeave)||void 0===e||e.call(i),null===c.current&&(c.current=window.setInterval(o,50))})),onPointerLeave:u(l.onPointerLeave,(()=>{f()}))}))})),gs=e.forwardRef(((t,n)=>{const{value:r,...o}=t,l=e.useRef(null),i=s(n,l),c=zt(r);return e.useEffect((()=>{const e=l.current,t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,"value").set;if(c!==r&&n){const t=new Event("change",{bubbles:!0});n.call(e,r),e.dispatchEvent(t)}}),[c,r]),e.createElement(ec,{asChild:!0},e.createElement("select",a({},o,{ref:i,defaultValue:r})))}));function ws(t){const n=v(t),r=e.useRef(""),o=e.useRef(0),a=e.useCallback((e=>{const t=r.current+e;n(t),function e(t){r.current=t,window.clearTimeout(o.current),""!==t&&(o.current=window.setTimeout((()=>e("")),1e3))}(t)}),[n]),l=e.useCallback((()=>{r.current="",window.clearTimeout(o.current)}),[]);return e.useEffect((()=>()=>window.clearTimeout(o.current)),[]),[r,a,l]}function ys(e,t,n){const r=t.length>1&&Array.from(t).every((e=>e===t[0]))?t[0]:t,o=n?e.indexOf(n):-1;let a=(l=e,i=Math.max(o,0),l.map(((e,t)=>l[(i+t)%l.length])));var l,i;1===r.length&&(a=a.filter((e=>e!==n)));const c=a.find((e=>e.textValue.toLowerCase().startsWith(r.toLowerCase())));return c!==n?c:void 0}gs.displayName="BubbleSelect";const bs=t=>{const{__scopeSelect:n,children:r,open:o,defaultOpen:a,onOpenChange:l,value:i,defaultValue:c,onValueChange:s,dir:u,name:d,autoComplete:f,disabled:p,required:v}=t,g=Fc(n),[w,y]=e.useState(null),[b,E]=e.useState(null),[_,x]=e.useState(!1),C=ri(u),[O=!1,k]=h({prop:o,defaultProp:a,onChange:l}),[A,D]=h({prop:i,defaultProp:c,onChange:s}),S=e.useRef(null),R=!w||Boolean(w.closest("form")),[P,T]=e.useState(new Set),M=Array.from(P).map((e=>e.props.value)).join(";");return e.createElement(pl,g,e.createElement(Vc,{required:v,scope:n,trigger:w,onTriggerChange:y,valueNode:b,onValueNodeChange:E,valueNodeHasChildren:_,onValueNodeHasChildrenChange:x,contentId:m(),value:A,onValueChange:D,open:O,onOpenChange:k,dir:C,triggerPointerDownPosRef:S,disabled:p},e.createElement(Lc.Provider,{scope:n},e.createElement(Uc,{scope:t.__scopeSelect,onNativeOptionAdd:e.useCallback((e=>{T((t=>new Set(t).add(e)))}),[]),onNativeOptionRemove:e.useCallback((e=>{T((t=>{const n=new Set(t);return n.delete(e),n}))}),[])},r)),R?e.createElement(gs,{key:M,"aria-hidden":!0,required:v,tabIndex:-1,name:d,autoComplete:f,value:A,onChange:e=>D(e.target.value),disabled:p},void 0===A?e.createElement("option",{value:""}):null,Array.from(P)):null))},Es=Wc,_s=Kc,xs=qc,Cs=$c,Os=as,ks=ss,As=ds,Ds=ps,Ss=vs;var Rs="Select-modules_trigger__dS9Dx",Ps="Select-modules_icon__sgRRc",Ts="Select-modules_startIcon__kohMV",Ms="Select-modules_value__h6Q4Z",Is="Select-modules_content__YuAqS",Ls="Select-modules_item__cTAIm",Ns=e.forwardRef((function(t,n){var r=t.children,o=t.sideOffset,a=void 0===o?4:o,l=t.position,i=void 0===l?"popper":l,c=t.disabled,s=void 0!==c&&c,u=t.value,d=void 0===u?"":u,f=t.id,p=t.icon,m=void 0===p?null:p,v=t.placeholder,h=void 0===v?"":v,g=G(t,["children","sideOffset","position","disabled","value","id","icon","placeholder"]);return e.createElement(bs,q({value:d||void 0,disabled:s},g),e.createElement(Es,{id:f,ref:n,className:Rs},m&&e.createElement("span",{className:Ts},m),e.createElement("span",{className:Ms},e.createElement(_s,{placeholder:h})),e.createElement(xs,{className:Ps},e.createElement(wn,null))),e.createElement(Cs,{position:i,className:Is,sideOffset:a},e.createElement(Os,null,e.createElement(Ds,null,"ChevronUpIcon"),e.createElement(Os,null,r),e.createElement(Ss,null,"ChevronDownIcon"))))})),js=e.forwardRef((function(t,n){var r=t.children,o=t.disabled,a=void 0!==o&&o,l=G(t,["children","disabled"]);return e.createElement(ks,q({},l,{ref:n,className:Ls,disabled:a}),r)})),Hs=As;const Zs="Tabs",[Fs,Vs]=l(Zs,[di]),Bs=di(),[Us,zs]=Fs(Zs);function Ws(e,t){return`${e}-trigger-${t}`}function Ks(e,t){return`${e}-content-${t}`}const qs=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,onValueChange:l,defaultValue:i,orientation:c="horizontal",dir:s,activationMode:u="automatic",...d}=t,f=ri(s),[p,v]=h({prop:o,onChange:l,defaultProp:i});return e.createElement(Us,{scope:r,baseId:m(),value:p,onValueChange:v,orientation:c,dir:f,activationMode:u},e.createElement(_.div,a({dir:f,"data-orientation":c},d,{ref:n})))})),Gs=e.forwardRef(((t,n)=>{const{__scopeTabs:r,loop:o=!0,...l}=t,i=zs("TabsList",r),c=Bs(r);return e.createElement(yi,a({asChild:!0},c,{orientation:i.orientation,dir:i.dir,loop:o}),e.createElement(_.div,a({role:"tablist","aria-orientation":i.orientation},l,{ref:n})))})),$s=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,disabled:l=!1,...i}=t,c=zs("TabsTrigger",r),s=Bs(r),d=Ws(c.baseId,o),f=Ks(c.baseId,o),p=o===c.value;return e.createElement(bi,a({asChild:!0},s,{focusable:!l,active:p}),e.createElement(_.button,a({type:"button",role:"tab","aria-selected":p,"aria-controls":f,"data-state":p?"active":"inactive","data-disabled":l?"":void 0,disabled:l,id:d},i,{ref:n,onMouseDown:u(t.onMouseDown,(e=>{l||0!==e.button||!1!==e.ctrlKey?e.preventDefault():c.onValueChange(o)})),onKeyDown:u(t.onKeyDown,(e=>{[" ","Enter"].includes(e.key)&&c.onValueChange(o)})),onFocus:u(t.onFocus,(()=>{const e="manual"!==c.activationMode;p||l||!e||c.onValueChange(o)}))})))})),Xs=e.forwardRef(((t,n)=>{const{__scopeTabs:r,value:o,forceMount:l,children:i,...c}=t,s=zs("TabsContent",r),u=Ws(s.baseId,o),d=Ks(s.baseId,o),f=o===s.value,p=e.useRef(f);return e.useEffect((()=>{const e=requestAnimationFrame((()=>p.current=!1));return()=>cancelAnimationFrame(e)}),[]),e.createElement(B,{present:l||f},(({present:r})=>e.createElement(_.div,a({"data-state":f?"active":"inactive","data-orientation":s.orientation,role:"tabpanel","aria-labelledby":u,hidden:!r,id:d,tabIndex:0},c,{ref:n,style:{...t.style,animationDuration:p.current?"0s":void 0}}),r&&i)))}));var Ys="Tabs-modules_root__TvYE1",Js="Tabs-modules_list__G3KVd",Qs="Tabs-modules_tab__-FuG6",eu="Tabs-modules_content__X0OLh";exports.Alert=function(t){var n=t.open,r=t.actionText,o=void 0===r?"OK":r,a=t.onActionClick,l=t.cancelText,i=void 0===l?"Cancel":l,c=t.onCancelClick,s=t.title,u=t.description,d=void 0===u?"":u,f=t.showLoader,p=void 0!==f&&f,m=t.isOkDisabled,v=void 0!==m&&m,h=t.actionButtonType,g=void 0===h?"danger":h,w=t.maxWidth,y=void 0===w?"540px":w,b=t.onClose;return e.createElement(xt,{open:n},e.createElement(Ct,{className:Zt.portal},e.createElement(Ot,{className:Zt.overlay}),e.createElement(kt,{className:Nt("demio-ui-alert",Zt.content),style:{maxWidth:y}},e.createElement("button",{className:Zt.close,onClick:b||c,"data-testid":"close-button"},e.createElement(Ht,null)),e.createElement(St,{className:Zt.title},s),d&&e.createElement(Rt,{className:Zt.description},d),e.createElement("div",{className:Zt.buttons},e.createElement(Dt,{asChild:!0},e.createElement(Ut,{onClick:c,variant:"outline"},i)),e.createElement(At,{asChild:!0},e.createElement(Ut,{onClick:a,disabled:v,variant:g,showLoader:p},o))))))},exports.Button=Ut,exports.Checkbox=function(t){var n,r=t.children,o=t.id,a=t.checked,l=void 0!==a&&a,i=t.onChange,c=t.disabled,s=void 0!==c&&c,u=t.defaultChecked,d=void 0!==u&&u,f=t.name,p=void 0===f?"":f,m=t.value,v=G(t,["children","id","checked","onChange","disabled","defaultChecked","name","value"]),h=e.useMemo((function(){return i?{checked:l,onCheckedChange:function(e){return i({checked:e,name:p||o,value:void 0!==m?m:r||""})}}:{}}),[l,i,p,o,m,r]);return e.createElement("div",{className:Nt("demio-ui-checkbox",an,(n={},n[dn]=s,n))},e.createElement(tn,q({},v,h,{className:ln,defaultChecked:d,id:o,name:p||o,disabled:s}),e.createElement(nn,{className:sn},e.createElement(jn,null)),e.createElement("span",{className:Nt(sn,cn)},e.createElement(Vn,null))),e.createElement(Co,{className:un,htmlFor:o,weight:"regular"},r))},exports.FormGroup=function(t){var n,r=t.children,o=t.position,a=void 0===o?"vertical":o,l=t.justify,i=void 0===l?"start":l,c=t.alignItems,s=void 0===c?"start":c;return e.createElement("div",{className:Nt("demio-ui-form-group",Oo.formGroup,(n={},n[Oo.horizontal]="horizontal"===a,n[Oo.vertical]="vertical"===a,n[Oo[i]]=!!i,n[Oo["".concat(s,"AlignItems")]]=!!s,n))},r)},exports.Input=So,exports.InputHint=Do,exports.Label=Co,exports.Loader=Bt,exports.Modal=function(t){var n,r,o,a=t.children,l=t.contentClassName,i=void 0===l?"":l,c=t.hideCloseButton,s=void 0!==c&&c,u=t.maxHeight,d=void 0===u?"auto":u,f=t.open,p=t.onOpenChange,m=t.overlayClassName,v=void 0===m?"":m,h=t.title,g=t.width,w=void 0===g?"432px":g;return e.createElement(at,{open:f,onOpenChange:p},e.createElement(lt,null,e.createElement(it,{className:Nt("demio-ui-modal-overlay",Ro,(n={},n[v]=!!v,n))},e.createElement(ct,{className:Nt("demio-ui-modal-content",Lo,(r={},r[i]=!!i,r)),style:{maxHeight:d,width:w}},e.createElement("div",{className:Po,"data-html":"header"},h&&e.createElement(st,{className:Nt(Mo,(o={},o[Io]=!!s,o)),"data-html":"title"},h),!s&&e.createElement(dt,{className:To,"data-html":"close-btn"},e.createElement(Ht,null))),e.createElement("div",{className:No,"data-html":"content"},a)))))},exports.Popover=Hl,exports.Progress=function(t){var n=t.max,r=void 0===n?100:n,o=t.progress,a=void 0===o?0:o,l=t.className,i=void 0===l?"":l,c=G(t,["max","progress","className"]),s=a>r?"100%":"".concat(a/r*100,"%");return e.createElement(Yl,q({className:Nt("demio-ui-progress",Ql,{className:!!i}),value:a>r?r:a,max:r},c),e.createElement(Jl,{className:ei,style:{width:s}}))},exports.RadioGroup=function(t){var n,r=t.items,o=void 0===r?[]:r,a=t.error,l=void 0===a?"":a,i=t.defaultValue,c=void 0===i?"":i,s=t.ariaLabel,u=void 0===s?"":s,d=t.hint,f=void 0===d?"":d,p=t.onChange,m=t.disabled,v=void 0!==m&&m,h=t.value,g=void 0===h?"":h,w=t.className,y=void 0===w?"":w,b=G(t,["items","error","defaultValue","ariaLabel","hint","onChange","disabled","value","className"]),E=e.useMemo((function(){return p?{value:g,onValueChange:p}:{}}),[g,p]);return e.createElement(Hi,q({},E,b,{className:Nt("demio-ui-radio-group",Vi.root,(n={},n[Vi.error]=!!l,n[y]=!!y,n)),defaultValue:c,"aria-label":u}),o.map((function(t){var n;return e.createElement("div",{key:t.id,className:Nt(Vi.container,(n={},n[Vi.disabled]=t.disabled||v,n))},e.createElement(Zi,{className:Vi.item,value:t.value,disabled:t.disabled||v,id:t.id},e.createElement(Fi,{className:Vi.indicator})),e.createElement(Co,{className:Vi.label,htmlFor:t.id,weight:"regular"},t.label))})),e.createElement("div",{className:Vi.footer},l&&e.createElement(Do,{type:"error"},l),f&&!l&&e.createElement(Do,null,f)))},exports.Select=Ns,exports.SelectItem=js,exports.SelectItemText=Hs,exports.Switch=function(t){var n,r=t.className,o=void 0===r?"":r,a=t.id,l=void 0===a?"":a,i=t.disabled,c=void 0!==i&&i,s=t.required,u=void 0!==s&&s,d=t.name,f=G(t,["className","id","disabled","required","name"]);return e.createElement(Xi,q({className:Nt(Ji,"demio-ui-switch",(n={},n[o]=!!o,n)),disabled:c,required:u,name:d,id:l||d},f),e.createElement(Yi,{className:Qi}))},exports.Tab=function(t){var n,r=t.children,o=t.className,a=void 0===o?"":o,l=G(t,["children","className"]);return e.createElement($s,q({},l,{className:Nt(Qs,(n={},n[a]=a,n))}),r)},exports.TabsContent=function(t){var n,r=t.children,o=t.value,a=t.className,l=void 0===a?"":a;return e.createElement(Xs,{value:o,className:Nt(eu,"demio-ui-tabs-tab",(n={},n[l]=l,n))},r)},exports.TabsList=function(t){var n,r=t.children,o=t.className,a=void 0===o?"":o;return e.createElement(Gs,{className:Nt(Js,"demio-ui-tabs-list",(n={},n[a]=a,n))},r)},exports.TabsRoot=function(t){var n,r=t.children,o=t.className,a=void 0===o?"":o,l=G(t,["children","className"]);return e.createElement(qs,q({},l,{className:Nt(Ys,"demio-ui-tabs",(n={},n[a]=a,n))}),r)},exports.Tooltip=function(t){var n,r=t.children,o=t.content,a=t.open,l=t.defaultOpen,i=t.onOpenChange,c=t.side,s=void 0===c?"top":c,u=t.align,d=void 0===u?"center":u,f=t.className,p=void 0===f?"":f,m=t.delayDuration,v=void 0===m?200:m,h=t.sideOffset,g=void 0===h?4:h,w=t.isPortal,y=void 0!==w&&w,b=G(t,["children","content","open","defaultOpen","onOpenChange","side","align","className","delayDuration","sideOffset","isPortal"]),E=e.createElement(Ac,q({sideOffset:g,side:s,align:d},b,{className:Nt(Sc,"demio-ui-tooltip",(n={},n[p]=p,n))}),o,e.createElement(Dc,{className:Rc,width:11,height:5}));return o?e.createElement(xc,null,e.createElement(Cc,{delayDuration:v,open:a,defaultOpen:l,onOpenChange:i},e.createElement(Oc,{asChild:!0},r),y?e.createElement(kc,null,E):E)):r},exports.icons=bo;
7
7
  //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb250ZXh0L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3ByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3QvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWlkL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1zbG90L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1wcmltaXRpdmUvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpc21pc3NhYmxlLWxheWVyL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtZXNjYXBlLWtleWRvd24vZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWZvY3VzLXNjb3BlL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1wb3J0YWwvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1mb2N1cy1ndWFyZHMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2Rpc3QvZXMyMDE1L2NvbnN0YW50cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2UtY2FsbGJhY2stcmVmL2Rpc3QvZXMyMDE1L3VzZU1lcmdlUmVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvdXNlUmVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvYXNzaWduUmVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1zaWRlY2FyL2Rpc3QvZXMyMDE1L21lZGl1bS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2Utc2lkZWNhci9kaXN0L2VzMjAxNS9leHBvcnRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvbWVkaXVtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvVUkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L3NpbmdsZXRvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9nZXQtbm9uY2UvZGlzdC9lczIwMTUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L2NvbXBvbmVudC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1zdHlsZS1zaW5nbGV0b24vZGlzdC9lczIwMTUvaG9vay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsLWJhci9kaXN0L2VzMjAxNS91dGlscy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsLWJhci9kaXN0L2VzMjAxNS9jb21wb25lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9hZ2dyZXNpdmVDYXB0dXJlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvaGFuZGxlU2Nyb2xsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvU2lkZUVmZmVjdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L3NpZGVjYXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9Db21iaW5hdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hcmlhLWhpZGRlbi9kaXN0L2VzMjAxNS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZGlhbG9nL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1hbGVydC1kaWFsb2cvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIi4uLy4uL3NyYy9pY29ucy9jbG9zZS5zdmciLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvTG9hZGVyLnRzeCIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24udHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jaGVja2JveC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL3NyYy9pY29ucy9hZGQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2tleWJvYXJkX2Fycm93X2Rvd24uc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2Fycm93LWxlZnQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2Jsb2NrLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9ibHVyX29uLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9jYWNoZWQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2NhbGVuZGFyLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9jaGVja2JveC5zdmciLCIuLi8uLi9zcmMvaWNvbnMvY2hlY2tib3hfdW5jaGVjay5zdmciLCIuLi8uLi9zcmMvaWNvbnMvY2hlY2tfY2lyY2xlLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9jbG9jay5zdmciLCIuLi8uLi9zcmMvaWNvbnMvY3VzdG9taXplLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9kZWxldGUuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2V2ZW50X2RldGFpbHMuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2V2ZW50X3JlcGVhdC5zdmciLCIuLi8uLi9zcmMvaWNvbnMvaW5mby5zdmciLCIuLi8uLi9zcmMvaWNvbnMvaW5mby0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9tYWdpYy5zdmciLCIuLi8uLi9zcmMvaWNvbnMvbWF0ZXJpYWxzLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9taWNfb2ZmLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL21pY19vZmYuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL21pYy5zdmciLCIuLi8uLi9zcmMvaWNvbnMvbWljLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3Bhc3N3b3JkX2V5ZS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvcGFzc3dvcmRfZXllX2Nyb3NzZWQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3BsYXkuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3NtaWxlLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9zdGFja2VkX2VtYWlsLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy90b2RheS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdmlkZW9jYW1fb2ZmLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy92aWRlb2NhbV9vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdmlkZW9jYW0uc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZpZGVvY2FtLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV9vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdm9sdW1lX29mZi5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdm9sdW1lX3VwLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV91cC5zdmciLCIuLi8uLi9zcmMvaWNvbnMvd2FybmluZy0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy93YXJuaW5nLnN2ZyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtbGFiZWwvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9MYWJlbC9MYWJlbC50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9JbnB1dEhpbnQvSW5wdXRIaW50LnRzeCIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0lucHV0L0lucHV0LnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvY29yZS9kaXN0L2Zsb2F0aW5nLXVpLmNvcmUubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20ubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9yZWFjdC1kb20vZGlzdC9mbG9hdGluZy11aS5yZWFjdC1kb20uZXNtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1hcnJvdy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcG9wcGVyL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1wb3BvdmVyL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvUG9wb3Zlci9Qb3BvdmVyLnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJvZ3Jlc3MvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb24vZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvbi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtcm92aW5nLWZvY3VzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1yYWRpby1ncm91cC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtc3dpdGNoL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC12aXN1YWxseS1oaWRkZW4vZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXRvb2x0aXAvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL251bWJlci9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtc2VsZWN0L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXRhYnMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9BbGVydC9BbGVydC50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9DaGVja2JveC9DaGVja2JveC50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Gb3JtR3JvdXAvRm9ybUdyb3VwLnRzeCIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL01vZGFsL01vZGFsLnRzeCIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1Byb2dyZXNzL1Byb2dyZXNzLnRzeCIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1JhZGlvR3JvdXAvUmFkaW9Hcm91cC50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Td2l0Y2gvU3dpdGNoLnRzeCIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1RhYnMvVGFicy50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Ub29sdGlwL1Rvb2x0aXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSIsImltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAkM2JrQUskY3JlYXRlQ29udGV4dCwgdXNlTWVtbyBhcyAkM2JrQUskdXNlTWVtbywgY3JlYXRlRWxlbWVudCBhcyAkM2JrQUskY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyAkM2JrQUskdXNlQ29udGV4dH0gZnJvbSBcInJlYWN0XCI7XG5cblxuZnVuY3Rpb24gJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkocm9vdENvbXBvbmVudE5hbWUsIGRlZmF1bHRDb250ZXh0KSB7XG4gICAgY29uc3QgQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHQpO1xuICAgIGZ1bmN0aW9uIFByb3ZpZGVyKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGV4dCB9ID0gcHJvcHM7IC8vIE9ubHkgcmUtbWVtb2l6ZSB3aGVuIHByb3AgdmFsdWVzIGNoYW5nZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIGNvbnN0IHZhbHVlID0gJDNia0FLJHVzZU1lbW8oKCk9PmNvbnRleHRcbiAgICAgICAgLCBPYmplY3QudmFsdWVzKGNvbnRleHQpKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdXNlQ29udGV4dChjb25zdW1lck5hbWUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICBpZiAoY29udGV4dCkgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIGlmIChkZWZhdWx0Q29udGV4dCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZGVmYXVsdENvbnRleHQ7IC8vIGlmIGEgZGVmYXVsdENvbnRleHQgd2Fzbid0IHNwZWNpZmllZCwgaXQncyBhIHJlcXVpcmVkIGNvbnRleHQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICB9XG4gICAgUHJvdmlkZXIuZGlzcGxheU5hbWUgPSByb290Q29tcG9uZW50TmFtZSArICdQcm92aWRlcic7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgUHJvdmlkZXIsXG4gICAgICAgIHVzZUNvbnRleHRcbiAgICBdO1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogY3JlYXRlQ29udGV4dFNjb3BlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjNTEyYzI3YWIwMmVmODk1JGV4cG9ydCQ1MGM3YjRlOWQ5ZjE5YzEoc2NvcGVOYW1lLCBjcmVhdGVDb250ZXh0U2NvcGVEZXBzID0gW10pIHtcbiAgICBsZXQgZGVmYXVsdENvbnRleHRzID0gW107XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogY3JlYXRlQ29udGV4dFxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOShyb290Q29tcG9uZW50TmFtZSwgZGVmYXVsdENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgQmFzZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBkZWZhdWx0Q29udGV4dHMubGVuZ3RoO1xuICAgICAgICBkZWZhdWx0Q29udGV4dHMgPSBbXG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29udGV4dHMsXG4gICAgICAgICAgICBkZWZhdWx0Q29udGV4dFxuICAgICAgICBdO1xuICAgICAgICBmdW5jdGlvbiBQcm92aWRlcihwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5jb250ZXh0IH0gPSBwcm9wcztcbiAgICAgICAgICAgIGNvbnN0IENvbnRleHQgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV1baW5kZXhdKSB8fCBCYXNlQ29udGV4dDsgLy8gT25seSByZS1tZW1vaXplIHdoZW4gcHJvcCB2YWx1ZXMgY2hhbmdlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICQzYmtBSyR1c2VNZW1vKCgpPT5jb250ZXh0XG4gICAgICAgICAgICAsIE9iamVjdC52YWx1ZXMoY29udGV4dCkpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVzZUNvbnRleHQoY29uc3VtZXJOYW1lLCBzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgQ29udGV4dCA9IChzY29wZSA9PT0gbnVsbCB8fCBzY29wZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NvcGVbc2NvcGVOYW1lXVtpbmRleF0pIHx8IEJhc2VDb250ZXh0O1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGNvbnRleHQpIHJldHVybiBjb250ZXh0O1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb250ZXh0ICE9PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0Q29udGV4dDsgLy8gaWYgYSBkZWZhdWx0Q29udGV4dCB3YXNuJ3Qgc3BlY2lmaWVkLCBpdCdzIGEgcmVxdWlyZWQgY29udGV4dC5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICAgICAgfVxuICAgICAgICBQcm92aWRlci5kaXNwbGF5TmFtZSA9IHJvb3RDb21wb25lbnROYW1lICsgJ1Byb3ZpZGVyJztcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFByb3ZpZGVyLFxuICAgICAgICAgICAgdXNlQ29udGV4dFxuICAgICAgICBdO1xuICAgIH1cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBjcmVhdGVTY29wZVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBjcmVhdGVTY29wZSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlQ29udGV4dHMgPSBkZWZhdWx0Q29udGV4dHMubWFwKChkZWZhdWx0Q29udGV4dCk9PntcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VTY29wZShzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dHMgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV0pIHx8IHNjb3BlQ29udGV4dHM7XG4gICAgICAgICAgICByZXR1cm4gJDNia0FLJHVzZU1lbW8oKCk9Pih7XG4gICAgICAgICAgICAgICAgICAgIFtgX19zY29wZSR7c2NvcGVOYW1lfWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zY29wZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzY29wZU5hbWVdOiBjb250ZXh0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICAgIGNvbnRleHRzXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlLnNjb3BlTmFtZSA9IHNjb3BlTmFtZTtcbiAgICByZXR1cm4gW1xuICAgICAgICAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOSxcbiAgICAgICAgJGM1MTJjMjdhYjAyZWY4OTUkdmFyJGNvbXBvc2VDb250ZXh0U2NvcGVzKGNyZWF0ZVNjb3BlLCAuLi5jcmVhdGVDb250ZXh0U2NvcGVEZXBzKVxuICAgIF07XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBjb21wb3NlQ29udGV4dFNjb3Blc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSR2YXIkY29tcG9zZUNvbnRleHRTY29wZXMoLi4uc2NvcGVzKSB7XG4gICAgY29uc3QgYmFzZVNjb3BlID0gc2NvcGVzWzBdO1xuICAgIGlmIChzY29wZXMubGVuZ3RoID09PSAxKSByZXR1cm4gYmFzZVNjb3BlO1xuICAgIGNvbnN0IGNyZWF0ZVNjb3BlMSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlSG9va3MgPSBzY29wZXMubWFwKChjcmVhdGVTY29wZSk9Pih7XG4gICAgICAgICAgICAgICAgdXNlU2NvcGU6IGNyZWF0ZVNjb3BlKCksXG4gICAgICAgICAgICAgICAgc2NvcGVOYW1lOiBjcmVhdGVTY29wZS5zY29wZU5hbWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VDb21wb3NlZFNjb3BlcyhvdmVycmlkZVNjb3Blcykge1xuICAgICAgICAgICAgY29uc3QgbmV4dFNjb3BlczEgPSBzY29wZUhvb2tzLnJlZHVjZSgobmV4dFNjb3BlcywgeyB1c2VTY29wZTogdXNlU2NvcGUgLCBzY29wZU5hbWU6IHNjb3BlTmFtZSAgfSk9PntcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgY2FsbGluZyBhIGhvb2sgaW5zaWRlIGEgY2FsbGJhY2sgd2hpY2ggUmVhY3Qgd2FybnMgYWdhaW5zdCB0byBhdm9pZCBpbmNvbnNpc3RlbnRcbiAgICAgICAgICAgICAgICAvLyByZW5kZXJzLCBob3dldmVyLCBzY29waW5nIGRvZXNuJ3QgaGF2ZSByZW5kZXIgc2lkZSBlZmZlY3RzIHNvIHdlIGlnbm9yZSB0aGUgcnVsZS5cbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgICAgICAgICBjb25zdCBzY29wZVByb3BzID0gdXNlU2NvcGUob3ZlcnJpZGVTY29wZXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY29wZSA9IHNjb3BlUHJvcHNbYF9fc2NvcGUke3Njb3BlTmFtZX1gXTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5uZXh0U2NvcGVzLFxuICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50U2NvcGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgcmV0dXJuICQzYmtBSyR1c2VNZW1vKCgpPT4oe1xuICAgICAgICAgICAgICAgICAgICBbYF9fc2NvcGUke2Jhc2VTY29wZS5zY29wZU5hbWV9YF06IG5leHRTY29wZXMxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIG5leHRTY29wZXMxXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlMS5zY29wZU5hbWUgPSBiYXNlU2NvcGUuc2NvcGVOYW1lO1xuICAgIHJldHVybiBjcmVhdGVTY29wZTE7XG59XG5cblxuXG5cbmV4cG9ydCB7JGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkgYXMgY3JlYXRlQ29udGV4dCwgJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JDUwYzdiNGU5ZDlmMTljMSBhcyBjcmVhdGVDb250ZXh0U2NvcGV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VDYWxsYmFjayBhcyAkM3ZxbXIkdXNlQ2FsbGJhY2t9IGZyb20gXCJyZWFjdFwiO1xuXG5cbi8qKlxuICogU2V0IGEgZ2l2ZW4gcmVmIHRvIGEgZ2l2ZW4gdmFsdWVcbiAqIFRoaXMgdXRpbGl0eSB0YWtlcyBjYXJlIG9mIGRpZmZlcmVudCB0eXBlcyBvZiByZWZzOiBjYWxsYmFjayByZWZzIGFuZCBSZWZPYmplY3QocylcbiAqLyBmdW5jdGlvbiAkNmVkMDQwNjg4OGY3M2ZjNCR2YXIkc2V0UmVmKHJlZiwgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgcmVmKHZhbHVlKTtcbiAgICBlbHNlIGlmIChyZWYgIT09IG51bGwgJiYgcmVmICE9PSB1bmRlZmluZWQpIHJlZi5jdXJyZW50ID0gdmFsdWU7XG59XG4vKipcbiAqIEEgdXRpbGl0eSB0byBjb21wb3NlIG11bHRpcGxlIHJlZnMgdG9nZXRoZXJcbiAqIEFjY2VwdHMgY2FsbGJhY2sgcmVmcyBhbmQgUmVmT2JqZWN0KHMpXG4gKi8gZnVuY3Rpb24gJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JDQzZTQ0NmQzMmIzZDIxYWYoLi4ucmVmcykge1xuICAgIHJldHVybiAobm9kZSk9PnJlZnMuZm9yRWFjaCgocmVmKT0+JDZlZDA0MDY4ODhmNzNmYzQkdmFyJHNldFJlZihyZWYsIG5vZGUpXG4gICAgICAgIClcbiAgICA7XG59XG4vKipcbiAqIEEgY3VzdG9tIGhvb2sgdGhhdCBjb21wb3NlcyBtdWx0aXBsZSByZWZzXG4gKiBBY2NlcHRzIGNhbGxiYWNrIHJlZnMgYW5kIFJlZk9iamVjdChzKVxuICovIGZ1bmN0aW9uICQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCRjN2IyY2JlMzU1MmEwZDA1KC4uLnJlZnMpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgcmV0dXJuICQzdnFtciR1c2VDYWxsYmFjaygkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiguLi5yZWZzKSwgcmVmcyk7XG59XG5cblxuXG5cbmV4cG9ydCB7JDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JDQzZTQ0NmQzMmIzZDIxYWYgYXMgY29tcG9zZVJlZnMsICQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCRjN2IyY2JlMzU1MmEwZDA1IGFzIHVzZUNvbXBvc2VkUmVmc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJmdW5jdGlvbiAkZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMChvcmlnaW5hbEV2ZW50SGFuZGxlciwgb3VyRXZlbnRIYW5kbGVyLCB7IGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZDogY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID0gdHJ1ZSAgfSA9IHt9KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSBudWxsIHx8IG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSB2b2lkIDAgfHwgb3JpZ2luYWxFdmVudEhhbmRsZXIoZXZlbnQpO1xuICAgICAgICBpZiAoY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID09PSBmYWxzZSB8fCAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuIG91ckV2ZW50SGFuZGxlciA9PT0gbnVsbCB8fCBvdXJFdmVudEhhbmRsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG91ckV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgfTtcbn1cblxuXG5cblxuZXhwb3J0IHskZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMCBhcyBjb21wb3NlRXZlbnRIYW5kbGVyc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkZHhsd0gkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcblxuXG4vKipcbiAqIE9uIHRoZSBzZXJ2ZXIsIFJlYWN0IGVtaXRzIGEgd2FybmluZyB3aGVuIGNhbGxpbmcgYHVzZUxheW91dEVmZmVjdGAuXG4gKiBUaGlzIGlzIGJlY2F1c2UgbmVpdGhlciBgdXNlTGF5b3V0RWZmZWN0YCBub3IgYHVzZUVmZmVjdGAgcnVuIG9uIHRoZSBzZXJ2ZXIuXG4gKiBXZSB1c2UgdGhpcyBzYWZlIHZlcnNpb24gd2hpY2ggc3VwcHJlc3NlcyB0aGUgd2FybmluZyBieSByZXBsYWNpbmcgaXQgd2l0aCBhIG5vb3Agb24gdGhlIHNlcnZlci5cbiAqXG4gKiBTZWU6IGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9ob29rcy1yZWZlcmVuY2UuaHRtbCN1c2VsYXlvdXRlZmZlY3RcbiAqLyBjb25zdCAkOWY3OTY1OTg4Njk0NmMxNiRleHBvcnQkZTVjNWE1ZjkxN2E1ODcxYyA9IEJvb2xlYW4oZ2xvYmFsVGhpcyA9PT0gbnVsbCB8fCBnbG9iYWxUaGlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBnbG9iYWxUaGlzLmRvY3VtZW50KSA/ICRkeGx3SCR1c2VMYXlvdXRFZmZlY3QgOiAoKT0+e307XG5cblxuXG5cbmV4cG9ydCB7JDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMgYXMgdXNlTGF5b3V0RWZmZWN0fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAqIGFzICQyQU9EeCRyZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICQyQU9EeCR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcblxuXG5cbmNvbnN0ICQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkID0gJDJBT0R4JHJlYWN0Wyd1c2VJZCcudG9TdHJpbmcoKV0gfHwgKCgpPT51bmRlZmluZWRcbik7XG5sZXQgJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50ID0gMDtcbmZ1bmN0aW9uICQxNzQ2YTM0NWYzZDczYmI3JGV4cG9ydCRmNjgwODc3YTM0NzExZTM3KGRldGVybWluaXN0aWNJZCkge1xuICAgIGNvbnN0IFtpZCwgc2V0SWRdID0gJDJBT0R4JHJlYWN0LnVzZVN0YXRlKCQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkKCkpOyAvLyBSZWFjdCB2ZXJzaW9ucyBvbGRlciB0aGFuIDE4IHdpbGwgaGF2ZSBjbGllbnQtc2lkZSBpZHMgb25seS5cbiAgICAkMkFPRHgkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghZGV0ZXJtaW5pc3RpY0lkKSBzZXRJZCgocmVhY3RJZCk9PnJlYWN0SWQgIT09IG51bGwgJiYgcmVhY3RJZCAhPT0gdm9pZCAwID8gcmVhY3RJZCA6IFN0cmluZygkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkY291bnQrKylcbiAgICAgICAgKTtcbiAgICB9LCBbXG4gICAgICAgIGRldGVybWluaXN0aWNJZFxuICAgIF0pO1xuICAgIHJldHVybiBkZXRlcm1pbmlzdGljSWQgfHwgKGlkID8gYHJhZGl4LSR7aWR9YCA6ICcnKTtcbn1cblxuXG5cblxuZXhwb3J0IHskMTc0NmEzNDVmM2Q3M2JiNyRleHBvcnQkZjY4MDg3N2EzNDcxMWUzNyBhcyB1c2VJZH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZVJlZiBhcyAkbHdpV2okdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGx3aVdqJHVzZUVmZmVjdCwgdXNlTWVtbyBhcyAkbHdpV2okdXNlTWVtb30gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBBIGN1c3RvbSBob29rIHRoYXQgY29udmVydHMgYSBjYWxsYmFjayB0byBhIHJlZiB0byBhdm9pZCB0cmlnZ2VyaW5nIHJlLXJlbmRlcnMgd2hlbiBwYXNzZWQgYXMgYVxuICogcHJvcCBvciBhdm9pZCByZS1leGVjdXRpbmcgZWZmZWN0cyB3aGVuIHBhc3NlZCBhcyBhIGRlcGVuZGVuY3lcbiAqLyBmdW5jdGlvbiAkYjFiMjMxNGY1ZjlhMWQ4NCRleHBvcnQkMjViZWM4YzZmNTRlZTc5YShjYWxsYmFjaykge1xuICAgIGNvbnN0IGNhbGxiYWNrUmVmID0gJGx3aVdqJHVzZVJlZihjYWxsYmFjayk7XG4gICAgJGx3aVdqJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjYWxsYmFja1JlZi5jdXJyZW50ID0gY2FsbGJhY2s7XG4gICAgfSk7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTkyNDBcbiAgICByZXR1cm4gJGx3aVdqJHVzZU1lbW8oKCk9PiguLi5hcmdzKT0+e1xuICAgICAgICAgICAgdmFyIF9jYWxsYmFja1JlZiRjdXJyZW50O1xuICAgICAgICAgICAgcmV0dXJuIChfY2FsbGJhY2tSZWYkY3VycmVudCA9IGNhbGxiYWNrUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jYWxsYmFja1JlZiRjdXJyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY2FsbGJhY2tSZWYkY3VycmVudC5jYWxsKGNhbGxiYWNrUmVmLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICwgW10pO1xufVxuXG5cblxuXG5leHBvcnQgeyRiMWIyMzE0ZjVmOWExZDg0JGV4cG9ydCQyNWJlYzhjNmY1NGVlNzlhIGFzIHVzZUNhbGxiYWNrUmVmfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlQ2FsbGJhY2sgYXMgJGJuUHc5JHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSBhcyAkYm5QdzkkdXNlU3RhdGUsIHVzZVJlZiBhcyAkYm5QdzkkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGJuUHc5JHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICRiblB3OSR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5cblxuXG5mdW5jdGlvbiAkNzFjZDc2Y2M2MGUwNDU0ZSRleHBvcnQkNmYzMjEzNTA4MGNiNGMzKHsgcHJvcDogcHJvcCAsIGRlZmF1bHRQcm9wOiBkZWZhdWx0UHJvcCAsIG9uQ2hhbmdlOiBvbkNoYW5nZSA9ICgpPT57fSAgfSkge1xuICAgIGNvbnN0IFt1bmNvbnRyb2xsZWRQcm9wLCBzZXRVbmNvbnRyb2xsZWRQcm9wXSA9ICQ3MWNkNzZjYzYwZTA0NTRlJHZhciR1c2VVbmNvbnRyb2xsZWRTdGF0ZSh7XG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0UHJvcCxcbiAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgaXNDb250cm9sbGVkID0gcHJvcCAhPT0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHZhbHVlMSA9IGlzQ29udHJvbGxlZCA/IHByb3AgOiB1bmNvbnRyb2xsZWRQcm9wO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICRiblB3OSR1c2VDYWxsYmFja1JlZihvbkNoYW5nZSk7XG4gICAgY29uc3Qgc2V0VmFsdWUgPSAkYm5QdzkkdXNlQ2FsbGJhY2soKG5leHRWYWx1ZSk9PntcbiAgICAgICAgaWYgKGlzQ29udHJvbGxlZCkge1xuICAgICAgICAgICAgY29uc3Qgc2V0dGVyID0gbmV4dFZhbHVlO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgbmV4dFZhbHVlID09PSAnZnVuY3Rpb24nID8gc2V0dGVyKHByb3ApIDogbmV4dFZhbHVlO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBwcm9wKSBoYW5kbGVDaGFuZ2UodmFsdWUpO1xuICAgICAgICB9IGVsc2Ugc2V0VW5jb250cm9sbGVkUHJvcChuZXh0VmFsdWUpO1xuICAgIH0sIFtcbiAgICAgICAgaXNDb250cm9sbGVkLFxuICAgICAgICBwcm9wLFxuICAgICAgICBzZXRVbmNvbnRyb2xsZWRQcm9wLFxuICAgICAgICBoYW5kbGVDaGFuZ2VcbiAgICBdKTtcbiAgICByZXR1cm4gW1xuICAgICAgICB2YWx1ZTEsXG4gICAgICAgIHNldFZhbHVlXG4gICAgXTtcbn1cbmZ1bmN0aW9uICQ3MWNkNzZjYzYwZTA0NTRlJHZhciR1c2VVbmNvbnRyb2xsZWRTdGF0ZSh7IGRlZmF1bHRQcm9wOiBkZWZhdWx0UHJvcCAsIG9uQ2hhbmdlOiBvbkNoYW5nZSAgfSkge1xuICAgIGNvbnN0IHVuY29udHJvbGxlZFN0YXRlID0gJGJuUHc5JHVzZVN0YXRlKGRlZmF1bHRQcm9wKTtcbiAgICBjb25zdCBbdmFsdWVdID0gdW5jb250cm9sbGVkU3RhdGU7XG4gICAgY29uc3QgcHJldlZhbHVlUmVmID0gJGJuUHc5JHVzZVJlZih2YWx1ZSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gJGJuUHc5JHVzZUNhbGxiYWNrUmVmKG9uQ2hhbmdlKTtcbiAgICAkYm5QdzkkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChwcmV2VmFsdWVSZWYuY3VycmVudCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICBwcmV2VmFsdWVSZWYuY3VycmVudCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcHJldlZhbHVlUmVmLFxuICAgICAgICBoYW5kbGVDaGFuZ2VcbiAgICBdKTtcbiAgICByZXR1cm4gdW5jb250cm9sbGVkU3RhdGU7XG59XG5cblxuXG5cbmV4cG9ydCB7JDcxY2Q3NmNjNjBlMDQ1NGUkZXhwb3J0JDZmMzIxMzUwODBjYjRjMyBhcyB1c2VDb250cm9sbGFibGVTdGF0ZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDlJcmpYJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDlJcmpYJGZvcndhcmRSZWYsIENoaWxkcmVuIGFzICQ5SXJqWCRDaGlsZHJlbiwgaXNWYWxpZEVsZW1lbnQgYXMgJDlJcmpYJGlzVmFsaWRFbGVtZW50LCBjcmVhdGVFbGVtZW50IGFzICQ5SXJqWCRjcmVhdGVFbGVtZW50LCBjbG9uZUVsZW1lbnQgYXMgJDlJcmpYJGNsb25lRWxlbWVudCwgRnJhZ21lbnQgYXMgJDlJcmpYJEZyYWdtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZVJlZnMgYXMgJDlJcmpYJGNvbXBvc2VSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTbG90XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwID0gLyojX19QVVJFX18qLyAkOUlyalgkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IGNoaWxkcmVuOiBjaGlsZHJlbiAsIC4uLnNsb3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2hpbGRyZW5BcnJheSA9ICQ5SXJqWCRDaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcbiAgICBjb25zdCBzbG90dGFibGUgPSBjaGlsZHJlbkFycmF5LmZpbmQoJDVlNjNjOTYxZmMxY2UyMTEkdmFyJGlzU2xvdHRhYmxlKTtcbiAgICBpZiAoc2xvdHRhYmxlKSB7XG4gICAgICAgIC8vIHRoZSBuZXcgZWxlbWVudCB0byByZW5kZXIgaXMgdGhlIG9uZSBwYXNzZWQgYXMgYSBjaGlsZCBvZiBgU2xvdHRhYmxlYFxuICAgICAgICBjb25zdCBuZXdFbGVtZW50ID0gc2xvdHRhYmxlLnByb3BzLmNoaWxkcmVuO1xuICAgICAgICBjb25zdCBuZXdDaGlsZHJlbiA9IGNoaWxkcmVuQXJyYXkubWFwKChjaGlsZCk9PntcbiAgICAgICAgICAgIGlmIChjaGlsZCA9PT0gc2xvdHRhYmxlKSB7XG4gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgbmV3IGVsZW1lbnQgd2lsbCBiZSB0aGUgb25lIHJlbmRlcmVkLCB3ZSBhcmUgb25seSBpbnRlcmVzdGVkXG4gICAgICAgICAgICAgICAgLy8gaW4gZ3JhYmJpbmcgaXRzIGNoaWxkcmVuIChgbmV3RWxlbWVudC5wcm9wcy5jaGlsZHJlbmApXG4gICAgICAgICAgICAgICAgaWYgKCQ5SXJqWCRDaGlsZHJlbi5jb3VudChuZXdFbGVtZW50KSA+IDEpIHJldHVybiAkOUlyalgkQ2hpbGRyZW4ub25seShudWxsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkaXNWYWxpZEVsZW1lbnQobmV3RWxlbWVudCkgPyBuZXdFbGVtZW50LnByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gY2hpbGQ7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY3JlYXRlRWxlbWVudCgkNWU2M2M5NjFmYzFjZTIxMSR2YXIkU2xvdENsb25lLCAkOUlyalgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHNsb3RQcm9wcywge1xuICAgICAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi8gJDlJcmpYJGlzVmFsaWRFbGVtZW50KG5ld0VsZW1lbnQpID8gLyojX19QVVJFX18qLyAkOUlyalgkY2xvbmVFbGVtZW50KG5ld0VsZW1lbnQsIHVuZGVmaW5lZCwgbmV3Q2hpbGRyZW4pIDogbnVsbCk7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5SXJqWCRjcmVhdGVFbGVtZW50KCQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUsICQ5SXJqWCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgc2xvdFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSksIGNoaWxkcmVuKTtcbn0pO1xuJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JDhjNmVkNWM2NjZhYzEzNjAuZGlzcGxheU5hbWUgPSAnU2xvdCc7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTbG90Q2xvbmVcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVlNjNjOTYxZmMxY2UyMTEkdmFyJFNsb3RDbG9uZSA9IC8qI19fUFVSRV9fKi8gJDlJcmpYJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5zbG90UHJvcHMgfSA9IHByb3BzO1xuICAgIGlmICgvKiNfX1BVUkVfXyovICQ5SXJqWCRpc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHJldHVybiAvKiNfX1BVUkVfXyovICQ5SXJqWCRjbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgICAgLi4uJDVlNjNjOTYxZmMxY2UyMTEkdmFyJG1lcmdlUHJvcHMoc2xvdFByb3BzLCBjaGlsZHJlbi5wcm9wcyksXG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmID8gJDlJcmpYJGNvbXBvc2VSZWZzKGZvcndhcmRlZFJlZiwgY2hpbGRyZW4ucmVmKSA6IGNoaWxkcmVuLnJlZlxuICAgIH0pO1xuICAgIHJldHVybiAkOUlyalgkQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pID4gMSA/ICQ5SXJqWCRDaGlsZHJlbi5vbmx5KG51bGwpIDogbnVsbDtcbn0pO1xuJDVlNjNjOTYxZmMxY2UyMTEkdmFyJFNsb3RDbG9uZS5kaXNwbGF5TmFtZSA9ICdTbG90Q2xvbmUnO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xvdHRhYmxlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCRkOWYxY2NmMGJkYjA1ZDQ1ID0gKHsgY2hpbGRyZW46IGNoaWxkcmVuICB9KT0+e1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5SXJqWCRjcmVhdGVFbGVtZW50KCQ5SXJqWCRGcmFnbWVudCwgbnVsbCwgY2hpbGRyZW4pO1xufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gZnVuY3Rpb24gJDVlNjNjOTYxZmMxY2UyMTEkdmFyJGlzU2xvdHRhYmxlKGNoaWxkKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDlJcmpYJGlzVmFsaWRFbGVtZW50KGNoaWxkKSAmJiBjaGlsZC50eXBlID09PSAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NTtcbn1cbmZ1bmN0aW9uICQ1ZTYzYzk2MWZjMWNlMjExJHZhciRtZXJnZVByb3BzKHNsb3RQcm9wcywgY2hpbGRQcm9wcykge1xuICAgIC8vIGFsbCBjaGlsZCBwcm9wcyBzaG91bGQgb3ZlcnJpZGVcbiAgICBjb25zdCBvdmVycmlkZVByb3BzID0ge1xuICAgICAgICAuLi5jaGlsZFByb3BzXG4gICAgfTtcbiAgICBmb3IoY29uc3QgcHJvcE5hbWUgaW4gY2hpbGRQcm9wcyl7XG4gICAgICAgIGNvbnN0IHNsb3RQcm9wVmFsdWUgPSBzbG90UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICBjb25zdCBjaGlsZFByb3BWYWx1ZSA9IGNoaWxkUHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICBjb25zdCBpc0hhbmRsZXIgPSAvXm9uW0EtWl0vLnRlc3QocHJvcE5hbWUpO1xuICAgICAgICBpZiAoaXNIYW5kbGVyKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgaGFuZGxlciBleGlzdHMgb24gYm90aCwgd2UgY29tcG9zZSB0aGVtXG4gICAgICAgICAgICBpZiAoc2xvdFByb3BWYWx1ZSAmJiBjaGlsZFByb3BWYWx1ZSkgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSAoLi4uYXJncyk9PntcbiAgICAgICAgICAgICAgICBjaGlsZFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICBzbG90UHJvcFZhbHVlKC4uLmFyZ3MpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNsb3RQcm9wVmFsdWUpIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gc2xvdFByb3BWYWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gJ3N0eWxlJykgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSB7XG4gICAgICAgICAgICAuLi5zbG90UHJvcFZhbHVlLFxuICAgICAgICAgICAgLi4uY2hpbGRQcm9wVmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgZWxzZSBpZiAocHJvcE5hbWUgPT09ICdjbGFzc05hbWUnKSBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IFtcbiAgICAgICAgICAgIHNsb3RQcm9wVmFsdWUsXG4gICAgICAgICAgICBjaGlsZFByb3BWYWx1ZVxuICAgICAgICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLnNsb3RQcm9wcyxcbiAgICAgICAgLi4ub3ZlcnJpZGVQcm9wc1xuICAgIH07XG59XG5jb25zdCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwO1xuXG5cblxuXG5leHBvcnQgeyQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwIGFzIFNsb3QsICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCRkOWYxY2NmMGJkYjA1ZDQ1IGFzIFNsb3R0YWJsZSwgJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDRxNUZxJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDRxNUZxJGZvcndhcmRSZWYsIHVzZUVmZmVjdCBhcyAkNHE1RnEkdXNlRWZmZWN0LCBjcmVhdGVFbGVtZW50IGFzICQ0cTVGcSRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Zmx1c2hTeW5jIGFzICQ0cTVGcSRmbHVzaFN5bmN9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7U2xvdCBhcyAkNHE1RnEkU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5cblxuXG5cblxuY29uc3QgJDg5MjdmNmYyYWNjNGYzODYkdmFyJE5PREVTID0gW1xuICAgICdhJyxcbiAgICAnYnV0dG9uJyxcbiAgICAnZGl2JyxcbiAgICAnZm9ybScsXG4gICAgJ2gyJyxcbiAgICAnaDMnLFxuICAgICdpbWcnLFxuICAgICdpbnB1dCcsXG4gICAgJ2xhYmVsJyxcbiAgICAnbGknLFxuICAgICduYXYnLFxuICAgICdvbCcsXG4gICAgJ3AnLFxuICAgICdzcGFuJyxcbiAgICAnc3ZnJyxcbiAgICAndWwnXG5dOyAvLyBUZW1wb3Jhcnkgd2hpbGUgd2UgYXdhaXQgbWVyZ2Ugb2YgdGhpcyBmaXg6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZC9wdWxsLzU1Mzk2XG4vLyBwcmV0dGllci1pZ25vcmVcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByaW1pdGl2ZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNCA9ICQ4OTI3ZjZmMmFjYzRmMzg2JHZhciROT0RFUy5yZWR1Y2UoKHByaW1pdGl2ZSwgbm9kZSk9PntcbiAgICBjb25zdCBOb2RlID0gLyojX19QVVJFX18qLyAkNHE1RnEkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAgICAgY29uc3QgeyBhc0NoaWxkOiBhc0NoaWxkICwgLi4ucHJpbWl0aXZlUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/ICQ0cTVGcSRTbG90IDogbm9kZTtcbiAgICAgICAgJDRxNUZxJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgd2luZG93W1N5bWJvbC5mb3IoJ3JhZGl4LXVpJyldID0gdHJ1ZTtcbiAgICAgICAgfSwgW10pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNHE1RnEkY3JlYXRlRWxlbWVudChDb21wLCAkNHE1RnEkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByaW1pdGl2ZVByb3BzLCB7XG4gICAgICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgICAgICB9KSk7XG4gICAgfSk7XG4gICAgTm9kZS5kaXNwbGF5TmFtZSA9IGBQcmltaXRpdmUuJHtub2RlfWA7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJpbWl0aXZlLFxuICAgICAgICBbbm9kZV06IE5vZGVcbiAgICB9O1xufSwge30pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVXRpbHNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gLyoqXG4gKiBGbHVzaCBjdXN0b20gZXZlbnQgZGlzcGF0Y2hcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yYWRpeC11aS9wcmltaXRpdmVzL3B1bGwvMTM3OFxuICpcbiAqIFJlYWN0IGJhdGNoZXMgKmFsbCogZXZlbnQgaGFuZGxlcnMgc2luY2UgdmVyc2lvbiAxOCwgdGhpcyBpbnRyb2R1Y2VzIGNlcnRhaW4gY29uc2lkZXJhdGlvbnMgd2hlbiB1c2luZyBjdXN0b20gZXZlbnQgdHlwZXMuXG4gKlxuICogSW50ZXJuYWxseSwgUmVhY3QgcHJpb3JpdGlzZXMgZXZlbnRzIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6XG4gKiAgLSBkaXNjcmV0ZVxuICogIC0gY29udGludW91c1xuICogIC0gZGVmYXVsdFxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL2E4YTQ3NDJmMWM1NDQ5M2RmMDBkYTY0OGEzZjlkMjZlM2RiOWM4YjUvcGFja2FnZXMvcmVhY3QtZG9tL3NyYy9ldmVudHMvUmVhY3RET01FdmVudExpc3RlbmVyLmpzI0wyOTQtTDM1MFxuICpcbiAqIGBkaXNjcmV0ZWAgaXMgYW4gIGltcG9ydGFudCBkaXN0aW5jdGlvbiBhcyB1cGRhdGVzIHdpdGhpbiB0aGVzZSBldmVudHMgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkuXG4gKiBSZWFjdCBob3dldmVyLCBpcyBub3QgYWJsZSB0byBpbmZlciB0aGUgcHJpb3JpdHkgb2YgY3VzdG9tIGV2ZW50IHR5cGVzIGR1ZSB0byBob3cgdGhleSBhcmUgZGV0ZWN0ZWQgaW50ZXJuYWxseS5cbiAqIEJlY2F1c2Ugb2YgdGhpcywgaXQncyBwb3NzaWJsZSBmb3IgdXBkYXRlcyBmcm9tIGN1c3RvbSBldmVudHMgdG8gYmUgdW5leHBlY3RlZGx5IGJhdGNoZWQgd2hlblxuICogZGlzcGF0Y2hlZCBieSBhbm90aGVyIGBkaXNjcmV0ZWAgZXZlbnQuXG4gKlxuICogSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdXBkYXRlcyBmcm9tIGN1c3RvbSBldmVudHMgYXJlIGFwcGxpZWQgcHJlZGljdGFibHksIHdlIG5lZWQgdG8gbWFudWFsbHkgZmx1c2ggdGhlIGJhdGNoLlxuICogVGhpcyB1dGlsaXR5IHNob3VsZCBiZSB1c2VkIHdoZW4gZGlzcGF0Y2hpbmcgYSBjdXN0b20gZXZlbnQgZnJvbSB3aXRoaW4gYW5vdGhlciBgZGlzY3JldGVgIGV2ZW50LCB0aGlzIHV0aWxpdHlcbiAqIGlzIG5vdCBuZXNzZXNhcnkgd2hlbiBkaXNwYXRjaGluZyBrbm93biBldmVudCB0eXBlcywgb3IgaWYgZGlzcGF0Y2hpbmcgYSBjdXN0b20gdHlwZSBpbnNpZGUgYSBub24tZGlzY3JldGUgZXZlbnQuXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBkaXNwYXRjaGluZyBhIGtub3duIGNsaWNrIPCfkY5cbiAqIHRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCjigJhjbGlja+KAmSkpXG4gKlxuICogZGlzcGF0Y2hpbmcgYSBjdXN0b20gdHlwZSB3aXRoaW4gYSBub24tZGlzY3JldGUgZXZlbnQg8J+RjlxuICogb25TY3JvbGw9eyhldmVudCkgPT4gZXZlbnQudGFyZ2V0LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KOKAmGN1c3RvbVR5cGXigJkpKX1cbiAqXG4gKiBkaXNwYXRjaGluZyBhIGN1c3RvbSB0eXBlIHdpdGhpbiBhIGBkaXNjcmV0ZWAgZXZlbnQg8J+RjVxuICogb25Qb2ludGVyRG93bj17KGV2ZW50KSA9PiBkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQoZXZlbnQudGFyZ2V0LCBuZXcgQ3VzdG9tRXZlbnQo4oCYY3VzdG9tVHlwZeKAmSkpfVxuICpcbiAqIE5vdGU6IHRob3VnaCBSZWFjdCBjbGFzc2lmaWVzIGBmb2N1c2AsIGBmb2N1c2luYCBhbmQgYGZvY3Vzb3V0YCBldmVudHMgYXMgYGRpc2NyZXRlYCwgaXQncyAgbm90IHJlY29tbWVuZGVkIHRvIHVzZVxuICogdGhpcyB1dGlsaXR5IHdpdGggdGhlbS4gVGhpcyBpcyBiZWNhdXNlIGl0J3MgcG9zc2libGUgZm9yIHRob3NlIGhhbmRsZXJzIHRvIGJlIGNhbGxlZCBpbXBsaWNpdGx5IGR1cmluZyByZW5kZXJcbiAqIGUuZy4gd2hlbiBmb2N1cyBpcyB3aXRoaW4gYSBjb21wb25lbnQgYXMgaXQgaXMgdW5tb3VudGVkLCBvciB3aGVuIG1hbmFnaW5nIGZvY3VzIG9uIG1vdW50LlxuICovIGZ1bmN0aW9uICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQ2ZDFhMDMxN2JkZTdkZTdmKHRhcmdldCwgZXZlbnQpIHtcbiAgICBpZiAodGFyZ2V0KSAkNHE1RnEkZmx1c2hTeW5jKCgpPT50YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudClcbiAgICApO1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQyNTBmZmE2M2NkYzBkMDM0O1xuXG5cblxuXG5leHBvcnQgeyQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQyNTBmZmE2M2NkYzBkMDM0IGFzIFByaW1pdGl2ZSwgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JDZkMWEwMzE3YmRlN2RlN2YgYXMgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAka3F3cEgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAka3F3cEgkY3JlYXRlQ29udGV4dCwgZm9yd2FyZFJlZiBhcyAka3F3cEgkZm9yd2FyZFJlZiwgdXNlQ29udGV4dCBhcyAka3F3cEgkdXNlQ29udGV4dCwgdXNlU3RhdGUgYXMgJGtxd3BIJHVzZVN0YXRlLCB1c2VFZmZlY3QgYXMgJGtxd3BIJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAka3F3cEgkY3JlYXRlRWxlbWVudCwgdXNlUmVmIGFzICRrcXdwSCR1c2VSZWZ9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAka3F3cEgkUHJpbWl0aXZlLCBkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQgYXMgJGtxd3BIJGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICRrcXdwSCR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICRrcXdwSCR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5pbXBvcnQge3VzZUVzY2FwZUtleWRvd24gYXMgJGtxd3BIJHVzZUVzY2FwZUtleWRvd259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWVzY2FwZS1rZXlkb3duXCI7XG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlzbWlzc2FibGVMYXllclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRElTTUlTU0FCTEVfTEFZRVJfTkFNRSA9ICdEaXNtaXNzYWJsZUxheWVyJztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRDT05URVhUX1VQREFURSA9ICdkaXNtaXNzYWJsZUxheWVyLnVwZGF0ZSc7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkUE9JTlRFUl9ET1dOX09VVFNJREUgPSAnZGlzbWlzc2FibGVMYXllci5wb2ludGVyRG93bk91dHNpZGUnO1xuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJEZPQ1VTX09VVFNJREUgPSAnZGlzbWlzc2FibGVMYXllci5mb2N1c091dHNpZGUnO1xubGV0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzO1xuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERpc21pc3NhYmxlTGF5ZXJDb250ZXh0ID0gLyojX19QVVJFX18qLyAka3F3cEgkY3JlYXRlQ29udGV4dCh7XG4gICAgbGF5ZXJzOiBuZXcgU2V0KCksXG4gICAgbGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQ6IG5ldyBTZXQoKSxcbiAgICBicmFuY2hlczogbmV3IFNldCgpXG59KTtcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCQxNzdmYjYyZmYzZWMxZjIyID0gLyojX19QVVJFX18qLyAka3F3cEgkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgICBjb25zdCB7IGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzID0gZmFsc2UgLCBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93biAsIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAsIG9uRm9jdXNPdXRzaWRlOiBvbkZvY3VzT3V0c2lkZSAsIG9uSW50ZXJhY3RPdXRzaWRlOiBvbkludGVyYWN0T3V0c2lkZSAsIG9uRGlzbWlzczogb25EaXNtaXNzICwgLi4ubGF5ZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRrcXdwSCR1c2VDb250ZXh0KCQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCk7XG4gICAgY29uc3QgW25vZGUxLCBzZXROb2RlXSA9ICRrcXdwSCR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBvd25lckRvY3VtZW50ID0gKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlMSA9PT0gbnVsbCB8fCBub2RlMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZTEub3duZXJEb2N1bWVudCkgIT09IG51bGwgJiYgX25vZGUkb3duZXJEb2N1bWVudCAhPT0gdm9pZCAwID8gX25vZGUkb3duZXJEb2N1bWVudCA6IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudDtcbiAgICBjb25zdCBbLCBmb3JjZV0gPSAka3F3cEgkdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRrcXdwSCR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldE5vZGUobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IGxheWVycyA9IEFycmF5LmZyb20oY29udGV4dC5sYXllcnMpO1xuICAgIGNvbnN0IFtoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZF0gPSBbXG4gICAgICAgIC4uLmNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRcbiAgICBdLnNsaWNlKC0xKTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgY29uc3QgaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRJbmRleCA9IGxheWVycy5pbmRleE9mKGhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkKTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgY29uc3QgaW5kZXggPSBub2RlMSA/IGxheWVycy5pbmRleE9mKG5vZGUxKSA6IC0xO1xuICAgIGNvbnN0IGlzQm9keVBvaW50ZXJFdmVudHNEaXNhYmxlZCA9IGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZSA+IDA7XG4gICAgY29uc3QgaXNQb2ludGVyRXZlbnRzRW5hYmxlZCA9IGluZGV4ID49IGhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkSW5kZXg7XG4gICAgY29uc3QgcG9pbnRlckRvd25PdXRzaWRlID0gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZVBvaW50ZXJEb3duT3V0c2lkZSgoZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgY29uc3QgaXNQb2ludGVyRG93bk9uQnJhbmNoID0gW1xuICAgICAgICAgICAgLi4uY29udGV4dC5icmFuY2hlc1xuICAgICAgICBdLnNvbWUoKGJyYW5jaCk9PmJyYW5jaC5jb250YWlucyh0YXJnZXQpXG4gICAgICAgICk7XG4gICAgICAgIGlmICghaXNQb2ludGVyRXZlbnRzRW5hYmxlZCB8fCBpc1BvaW50ZXJEb3duT25CcmFuY2gpIHJldHVybjtcbiAgICAgICAgb25Qb2ludGVyRG93bk91dHNpZGUgPT09IG51bGwgfHwgb25Qb2ludGVyRG93bk91dHNpZGUgPT09IHZvaWQgMCB8fCBvblBvaW50ZXJEb3duT3V0c2lkZShldmVudCk7XG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlID09PSBudWxsIHx8IG9uSW50ZXJhY3RPdXRzaWRlID09PSB2b2lkIDAgfHwgb25JbnRlcmFjdE91dHNpZGUoZXZlbnQpO1xuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIG9uRGlzbWlzcyA9PT0gbnVsbCB8fCBvbkRpc21pc3MgPT09IHZvaWQgMCB8fCBvbkRpc21pc3MoKTtcbiAgICB9LCBvd25lckRvY3VtZW50KTtcbiAgICBjb25zdCBmb2N1c091dHNpZGUgPSAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkdXNlRm9jdXNPdXRzaWRlKChldmVudCk9PntcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBjb25zdCBpc0ZvY3VzSW5CcmFuY2ggPSBbXG4gICAgICAgICAgICAuLi5jb250ZXh0LmJyYW5jaGVzXG4gICAgICAgIF0uc29tZSgoYnJhbmNoKT0+YnJhbmNoLmNvbnRhaW5zKHRhcmdldClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlzRm9jdXNJbkJyYW5jaCkgcmV0dXJuO1xuICAgICAgICBvbkZvY3VzT3V0c2lkZSA9PT0gbnVsbCB8fCBvbkZvY3VzT3V0c2lkZSA9PT0gdm9pZCAwIHx8IG9uRm9jdXNPdXRzaWRlKGV2ZW50KTtcbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGUgPT09IG51bGwgfHwgb25JbnRlcmFjdE91dHNpZGUgPT09IHZvaWQgMCB8fCBvbkludGVyYWN0T3V0c2lkZShldmVudCk7XG4gICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgb25EaXNtaXNzID09PSBudWxsIHx8IG9uRGlzbWlzcyA9PT0gdm9pZCAwIHx8IG9uRGlzbWlzcygpO1xuICAgIH0sIG93bmVyRG9jdW1lbnQpO1xuICAgICRrcXdwSCR1c2VFc2NhcGVLZXlkb3duKChldmVudCk9PntcbiAgICAgICAgY29uc3QgaXNIaWdoZXN0TGF5ZXIgPSBpbmRleCA9PT0gY29udGV4dC5sYXllcnMuc2l6ZSAtIDE7XG4gICAgICAgIGlmICghaXNIaWdoZXN0TGF5ZXIpIHJldHVybjtcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duID09PSBudWxsIHx8IG9uRXNjYXBlS2V5RG93biA9PT0gdm9pZCAwIHx8IG9uRXNjYXBlS2V5RG93bihldmVudCk7XG4gICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCAmJiBvbkRpc21pc3MpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBvbkRpc21pc3MoKTtcbiAgICAgICAgfVxuICAgIH0sIG93bmVyRG9jdW1lbnQpO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKCFub2RlMSkgcmV0dXJuO1xuICAgICAgICBpZiAoZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzKSB7XG4gICAgICAgICAgICBpZiAoY29udGV4dC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHMgPSBvd25lckRvY3VtZW50LmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cztcbiAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50LmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuYWRkKG5vZGUxKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmxheWVycy5hZGQobm9kZTEpO1xuICAgICAgICAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUoKTtcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzICYmIGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZSA9PT0gMSkgb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cztcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIG5vZGUxLFxuICAgICAgICBvd25lckRvY3VtZW50LFxuICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMsXG4gICAgICAgIGNvbnRleHRcbiAgICBdKTtcbiAgICAvKipcbiAgICogV2UgcHVycG9zZWZ1bGx5IHByZXZlbnQgY29tYmluaW5nIHRoaXMgZWZmZWN0IHdpdGggdGhlIGBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHNgIGVmZmVjdFxuICAgKiBiZWNhdXNlIGEgY2hhbmdlIHRvIGBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHNgIHdvdWxkIHJlbW92ZSB0aGlzIGxheWVyIGZyb20gdGhlIHN0YWNrXG4gICAqIGFuZCBhZGQgaXQgdG8gdGhlIGVuZCBhZ2FpbiBzbyB0aGUgbGF5ZXJpbmcgb3JkZXIgd291bGRuJ3QgYmUgX2NyZWF0aW9uIG9yZGVyXy5cbiAgICogV2Ugb25seSB3YW50IHRoZW0gdG8gYmUgcmVtb3ZlZCBmcm9tIGNvbnRleHQgc3RhY2tzIHdoZW4gdW5tb3VudGVkLlxuICAgKi8gJGtxd3BIJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIGlmICghbm9kZTEpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnRleHQubGF5ZXJzLmRlbGV0ZShub2RlMSk7XG4gICAgICAgICAgICBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmRlbGV0ZShub2RlMSk7XG4gICAgICAgICAgICAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUoKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIG5vZGUxLFxuICAgICAgICBjb250ZXh0XG4gICAgXSk7XG4gICAgJGtxd3BIJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBoYW5kbGVVcGRhdGUgPSAoKT0+Zm9yY2Uoe30pXG4gICAgICAgIDtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUsIGhhbmRsZVVwZGF0ZSk7XG4gICAgICAgIHJldHVybiAoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUsIGhhbmRsZVVwZGF0ZSlcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka3F3cEgkY3JlYXRlRWxlbWVudCgka3F3cEgkUHJpbWl0aXZlLmRpdiwgJGtxd3BIJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBsYXllclByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogaXNCb2R5UG9pbnRlckV2ZW50c0Rpc2FibGVkID8gaXNQb2ludGVyRXZlbnRzRW5hYmxlZCA/ICdhdXRvJyA6ICdub25lJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlXG4gICAgICAgIH0sXG4gICAgICAgIG9uRm9jdXNDYXB0dXJlOiAka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1c0NhcHR1cmUsIGZvY3VzT3V0c2lkZS5vbkZvY3VzQ2FwdHVyZSksXG4gICAgICAgIG9uQmx1ckNhcHR1cmU6ICRrcXdwSCRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkJsdXJDYXB0dXJlLCBmb2N1c091dHNpZGUub25CbHVyQ2FwdHVyZSksXG4gICAgICAgIG9uUG9pbnRlckRvd25DYXB0dXJlOiAka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Qb2ludGVyRG93bkNhcHR1cmUsIHBvaW50ZXJEb3duT3V0c2lkZS5vblBvaW50ZXJEb3duQ2FwdHVyZSlcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMiwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRElTTUlTU0FCTEVfTEFZRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaXNtaXNzYWJsZUxheWVyQnJhbmNoXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRCUkFOQ0hfTkFNRSA9ICdEaXNtaXNzYWJsZUxheWVyQnJhbmNoJztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCQ0ZDVlYjIxMDlkYjE0MjI4ID0gLyojX19QVVJFX18qLyAka3F3cEgkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGtxd3BIJHVzZUNvbnRleHQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERpc21pc3NhYmxlTGF5ZXJDb250ZXh0KTtcbiAgICBjb25zdCByZWYgPSAka3F3cEgkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRrcXdwSCR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJlZi5jdXJyZW50O1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgY29udGV4dC5icmFuY2hlcy5hZGQobm9kZSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJyYW5jaGVzLmRlbGV0ZShub2RlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRleHQuYnJhbmNoZXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka3F3cEgkY3JlYXRlRWxlbWVudCgka3F3cEgkUHJpbWl0aXZlLmRpdiwgJGtxd3BIJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCQ0ZDVlYjIxMDlkYjE0MjI4LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRCUkFOQ0hfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIC8qKlxuICogTGlzdGVucyBmb3IgYHBvaW50ZXJkb3duYCBvdXRzaWRlIGEgcmVhY3Qgc3VidHJlZS4gV2UgdXNlIGBwb2ludGVyZG93bmAgcmF0aGVyIHRoYW4gYHBvaW50ZXJ1cGBcbiAqIHRvIG1pbWljIGxheWVyIGRpc21pc3NpbmcgYmVoYXZpb3VyIHByZXNlbnQgaW4gT1MuXG4gKiBSZXR1cm5zIHByb3BzIHRvIHBhc3MgdG8gdGhlIG5vZGUgd2Ugd2FudCB0byBjaGVjayBmb3Igb3V0c2lkZSBldmVudHMuXG4gKi8gZnVuY3Rpb24gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZVBvaW50ZXJEb3duT3V0c2lkZShvblBvaW50ZXJEb3duT3V0c2lkZSwgb3duZXJEb2N1bWVudCA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkge1xuICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSA9ICRrcXdwSCR1c2VDYWxsYmFja1JlZihvblBvaW50ZXJEb3duT3V0c2lkZSk7XG4gICAgY29uc3QgaXNQb2ludGVySW5zaWRlUmVhY3RUcmVlUmVmID0gJGtxd3BIJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tSZWYgPSAka3F3cEgkdXNlUmVmKCgpPT57fSk7XG4gICAgJGtxd3BIJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBoYW5kbGVQb2ludGVyRG93biA9IChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgJiYgIWlzUG9pbnRlckluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnREZXRhaWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50KCkge1xuICAgICAgICAgICAgICAgICAgICAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudCgkNWNiOTJiZWY3NTc3OTYwZSR2YXIkUE9JTlRFUl9ET1dOX09VVFNJREUsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSwgZXZlbnREZXRhaWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NyZXRlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICogT24gdG91Y2ggZGV2aWNlcywgd2UgbmVlZCB0byB3YWl0IGZvciBhIGNsaWNrIGV2ZW50IGJlY2F1c2UgYnJvd3NlcnMgaW1wbGVtZW50XG4gICAgICAgICAqIGEgfjM1MG1zIGRlbGF5IGJldHdlZW4gdGhlIHRpbWUgdGhlIHVzZXIgc3RvcHMgdG91Y2hpbmcgdGhlIGRpc3BsYXkgYW5kIHdoZW4gdGhlXG4gICAgICAgICAqIGJyb3dzZXIgZXhlY3V0cmVzIGV2ZW50cy4gV2UgbmVlZCB0byBlbnN1cmUgd2UgZG9uJ3QgcmVhY3RpdmF0ZSBwb2ludGVyLWV2ZW50cyB3aXRoaW5cbiAgICAgICAgICogdGhpcyB0aW1lZnJhbWUgb3RoZXJ3aXNlIHRoZSBicm93c2VyIG1heSBleGVjdXRlIGV2ZW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcHJldmVudGVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBBZGRpdGlvbmFsbHksIHRoaXMgYWxzbyBsZXRzIHVzIGRlYWwgYXV0b21hdGljYWxseSB3aXRoIGNhbmNlbGxhdGlvbnMgd2hlbiBhIGNsaWNrIGV2ZW50XG4gICAgICAgICAqIGlzbid0IHJhaXNlZCBiZWNhdXNlIHRoZSBwYWdlIHdhcyBjb25zaWRlcmVkIHNjcm9sbGVkL2RyYWctc2Nyb2xsZWQsIGxvbmctcHJlc3NlZCwgZXRjLlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGlzIGlzIHdoeSB3ZSBhbHNvIGNvbnRpbnVvdXNseSByZW1vdmUgdGhlIHByZXZpb3VzIGxpc3RlbmVyLCBiZWNhdXNlIHdlIGNhbm5vdCBiZVxuICAgICAgICAgKiBjZXJ0YWluIHRoYXQgaXQgd2FzIHJhaXNlZCwgYW5kIHRoZXJlZm9yZSBjbGVhbmVkLXVwLlxuICAgICAgICAgKi8gaWYgKGV2ZW50LnBvaW50ZXJUeXBlID09PSAndG91Y2gnKSB7XG4gICAgICAgICAgICAgICAgICAgIG93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCA9IGhhbmRsZUFuZERpc3BhdGNoUG9pbnRlckRvd25PdXRzaWRlRXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgKiBpZiB0aGlzIGhvb2sgZXhlY3V0ZXMgaW4gYSBjb21wb25lbnQgdGhhdCBtb3VudHMgdmlhIGEgYHBvaW50ZXJkb3duYCBldmVudCwgdGhlIGV2ZW50XG4gICAgICogd291bGQgYnViYmxlIHVwIHRvIHRoZSBkb2N1bWVudCBhbmQgdHJpZ2dlciBhIGBwb2ludGVyRG93bk91dHNpZGVgIGV2ZW50LiBXZSBhdm9pZFxuICAgICAqIHRoaXMgYnkgZGVsYXlpbmcgdGhlIGV2ZW50IGxpc3RlbmVyIHJlZ2lzdHJhdGlvbiBvbiB0aGUgZG9jdW1lbnQuXG4gICAgICogVGhpcyBpcyBub3QgUmVhY3Qgc3BlY2lmaWMsIGJ1dCByYXRoZXIgaG93IHRoZSBET00gd29ya3MsIGllOlxuICAgICAqIGBgYFxuICAgICAqIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsICgpID0+IHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKCdJIHdpbGwgbG9nJyk7XG4gICAgICogICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsICgpID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ0kgd2lsbCBhbHNvIGxvZycpO1xuICAgICAqICAgfSlcbiAgICAgKiB9KTtcbiAgICAgKi8gY29uc3QgdGltZXJJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24pO1xuICAgICAgICB9LCAwKTtcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICAgICAgb3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgICAgICAgIG93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja1JlZi5jdXJyZW50KTtcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIG93bmVyRG9jdW1lbnQsXG4gICAgICAgIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZVxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIC8vIGVuc3VyZXMgd2UgY2hlY2sgUmVhY3QgY29tcG9uZW50IHRyZWUgKG5vdCBqdXN0IERPTSB0cmVlKVxuICAgICAgICBvblBvaW50ZXJEb3duQ2FwdHVyZTogKCk9PmlzUG9pbnRlckluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH07XG59XG4vKipcbiAqIExpc3RlbnMgZm9yIHdoZW4gZm9jdXMgaGFwcGVucyBvdXRzaWRlIGEgcmVhY3Qgc3VidHJlZS5cbiAqIFJldHVybnMgcHJvcHMgdG8gcGFzcyB0byB0aGUgcm9vdCAobm9kZSkgb2YgdGhlIHN1YnRyZWUgd2Ugd2FudCB0byBjaGVjay5cbiAqLyBmdW5jdGlvbiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkdXNlRm9jdXNPdXRzaWRlKG9uRm9jdXNPdXRzaWRlLCBvd25lckRvY3VtZW50ID0gZ2xvYmFsVGhpcyA9PT0gbnVsbCB8fCBnbG9iYWxUaGlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBnbG9iYWxUaGlzLmRvY3VtZW50KSB7XG4gICAgY29uc3QgaGFuZGxlRm9jdXNPdXRzaWRlID0gJGtxd3BIJHVzZUNhbGxiYWNrUmVmKG9uRm9jdXNPdXRzaWRlKTtcbiAgICBjb25zdCBpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmID0gJGtxd3BIJHVzZVJlZihmYWxzZSk7XG4gICAgJGtxd3BIJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBoYW5kbGVGb2N1cyA9IChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgJiYgIWlzRm9jdXNJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50RGV0YWlsID0ge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJEZPQ1VTX09VVFNJREUsIGhhbmRsZUZvY3VzT3V0c2lkZSwgZXZlbnREZXRhaWwsIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzY3JldGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIG93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzKTtcbiAgICAgICAgcmV0dXJuICgpPT5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBoYW5kbGVGb2N1cylcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgb3duZXJEb2N1bWVudCxcbiAgICAgICAgaGFuZGxlRm9jdXNPdXRzaWRlXG4gICAgXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb25Gb2N1c0NhcHR1cmU6ICgpPT5pc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICxcbiAgICAgICAgb25CbHVyQ2FwdHVyZTogKCk9PmlzRm9jdXNJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfTtcbn1cbmZ1bmN0aW9uICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRkaXNwYXRjaFVwZGF0ZSgpIHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudCgkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUpO1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuZnVuY3Rpb24gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQobmFtZSwgaGFuZGxlciwgZGV0YWlsLCB7IGRpc2NyZXRlOiBkaXNjcmV0ZSAgfSkge1xuICAgIGNvbnN0IHRhcmdldCA9IGRldGFpbC5vcmlnaW5hbEV2ZW50LnRhcmdldDtcbiAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudChuYW1lLCB7XG4gICAgICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICBkZXRhaWw6IGRldGFpbFxuICAgIH0pO1xuICAgIGlmIChoYW5kbGVyKSB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyLCB7XG4gICAgICAgIG9uY2U6IHRydWVcbiAgICB9KTtcbiAgICBpZiAoZGlzY3JldGUpICRrcXdwSCRkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQodGFyZ2V0LCBldmVudCk7XG4gICAgZWxzZSB0YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7XG59XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCQxNzdmYjYyZmYzZWMxZjIyO1xuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGFlY2IyZGRjYjU1Yzk1YmUgPSAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyODtcblxuXG5cblxuZXhwb3J0IHskNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMiBhcyBEaXNtaXNzYWJsZUxheWVyLCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyOCBhcyBEaXNtaXNzYWJsZUxheWVyQnJhbmNoLCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkYWVjYjJkZGNiNTVjOTViZSBhcyBCcmFuY2h9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VFZmZlY3QgYXMgJGhQU1E1JHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICRoUFNRNSR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5cblxuXG4vKipcbiAqIExpc3RlbnMgZm9yIHdoZW4gdGhlIGVzY2FwZSBrZXkgaXMgZG93blxuICovIGZ1bmN0aW9uICRhZGRjMTZlMWJiZTU4ZmQwJGV4cG9ydCQzYTcyYTU3MjQ0ZDZlNzY1KG9uRXNjYXBlS2V5RG93blByb3AsIG93bmVyRG9jdW1lbnQgPSBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdsb2JhbFRoaXMuZG9jdW1lbnQpIHtcbiAgICBjb25zdCBvbkVzY2FwZUtleURvd24gPSAkaFBTUTUkdXNlQ2FsbGJhY2tSZWYob25Fc2NhcGVLZXlEb3duUHJvcCk7XG4gICAgJGhQU1E1JHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIG9uRXNjYXBlS2V5RG93bihldmVudCk7XG4gICAgICAgIH07XG4gICAgICAgIG93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pO1xuICAgICAgICByZXR1cm4gKCk9Pm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uRXNjYXBlS2V5RG93bixcbiAgICAgICAgb3duZXJEb2N1bWVudFxuICAgIF0pO1xufVxuXG5cblxuXG5leHBvcnQgeyRhZGRjMTZlMWJiZTU4ZmQwJGV4cG9ydCQzYTcyYTU3MjQ0ZDZlNzY1IGFzIHVzZUVzY2FwZUtleWRvd259O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ0NVFIdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ0NVFIdiRmb3J3YXJkUmVmLCB1c2VTdGF0ZSBhcyAkNDVRSHYkdXNlU3RhdGUsIHVzZVJlZiBhcyAkNDVRSHYkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDQ1UUh2JHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgYXMgJDQ1UUh2JHVzZUNhbGxiYWNrLCBjcmVhdGVFbGVtZW50IGFzICQ0NVFIdiRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ0NVFIdiR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkNDVRSHYkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkNDVRSHYkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuXG5cblxuXG5cblxuY29uc3QgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9NT1VOVCA9ICdmb2N1c1Njb3BlLmF1dG9Gb2N1c09uTW91bnQnO1xuY29uc3QgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5UID0gJ2ZvY3VzU2NvcGUuYXV0b0ZvY3VzT25Vbm1vdW50JztcbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRFVkVOVF9PUFRJT05TID0ge1xuICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgIGNhbmNlbGFibGU6IHRydWVcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBGb2N1c1Njb3BlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRGT0NVU19TQ09QRV9OQU1FID0gJ0ZvY3VzU2NvcGUnO1xuY29uc3QgJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JDIwZTQwMjg5NjQxZmJiYjYgPSAvKiNfX1BVUkVfXyovICQ0NVFIdiRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgbG9vcDogbG9vcCA9IGZhbHNlICwgdHJhcHBlZDogdHJhcHBlZCA9IGZhbHNlICwgb25Nb3VudEF1dG9Gb2N1czogb25Nb3VudEF1dG9Gb2N1c1Byb3AgLCBvblVubW91bnRBdXRvRm9jdXM6IG9uVW5tb3VudEF1dG9Gb2N1c1Byb3AgLCAuLi5zY29wZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBbY29udGFpbmVyMSwgc2V0Q29udGFpbmVyXSA9ICQ0NVFIdiR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBvbk1vdW50QXV0b0ZvY3VzID0gJDQ1UUh2JHVzZUNhbGxiYWNrUmVmKG9uTW91bnRBdXRvRm9jdXNQcm9wKTtcbiAgICBjb25zdCBvblVubW91bnRBdXRvRm9jdXMgPSAkNDVRSHYkdXNlQ2FsbGJhY2tSZWYob25Vbm1vdW50QXV0b0ZvY3VzUHJvcCk7XG4gICAgY29uc3QgbGFzdEZvY3VzZWRFbGVtZW50UmVmID0gJDQ1UUh2JHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNDVRSHYkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRDb250YWluZXIobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IGZvY3VzU2NvcGUgPSAkNDVRSHYkdXNlUmVmKHtcbiAgICAgICAgcGF1c2VkOiBmYWxzZSxcbiAgICAgICAgcGF1c2UgKCkge1xuICAgICAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICByZXN1bWUgKCkge1xuICAgICAgICAgICAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pLmN1cnJlbnQ7IC8vIFRha2VzIGNhcmUgb2YgdHJhcHBpbmcgZm9jdXMgaWYgZm9jdXMgaXMgbW92ZWQgb3V0c2lkZSBwcm9ncmFtbWF0aWNhbGx5IGZvciBleGFtcGxlXG4gICAgJDQ1UUh2JHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAodHJhcHBlZCkge1xuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlRm9jdXNJbihldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c1Njb3BlLnBhdXNlZCB8fCAhY29udGFpbmVyMSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyMS5jb250YWlucyh0YXJnZXQpKSBsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCA9IHRhcmdldDtcbiAgICAgICAgICAgICAgICBlbHNlICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzT3V0KGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGZvY3VzU2NvcGUucGF1c2VkIHx8ICFjb250YWluZXIxKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7IC8vIEEgYGZvY3Vzb3V0YCBldmVudCB3aXRoIGEgYG51bGxgIGByZWxhdGVkVGFyZ2V0YCB3aWxsIGhhcHBlbiBpbiBhdCBsZWFzdCB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyAxLiBXaGVuIHRoZSB1c2VyIHN3aXRjaGVzIGFwcC90YWJzL3dpbmRvd3MvdGhlIGJyb3dzZXIgaXRzZWxmIGxvc2VzIGZvY3VzLlxuICAgICAgICAgICAgICAgIC8vIDIuIEluIEdvb2dsZSBDaHJvbWUsIHdoZW4gdGhlIGZvY3VzZWQgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIFdlIGxldCB0aGUgYnJvd3NlciBkbyBpdHMgdGhpbmcgaGVyZSBiZWNhdXNlOlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gMS4gVGhlIGJyb3dzZXIgYWxyZWFkeSBrZWVwcyBhIG1lbW9yeSBvZiB3aGF0J3MgZm9jdXNlZCBmb3Igd2hlbiB0aGUgcGFnZSBnZXRzIHJlZm9jdXNlZC5cbiAgICAgICAgICAgICAgICAvLyAyLiBJbiBHb29nbGUgQ2hyb21lLCBpZiB3ZSB0cnkgdG8gZm9jdXMgdGhlIGRlbGV0ZWQgZm9jdXNlZCBlbGVtZW50IChhcyBwZXIgYmVsb3cpLCBpdFxuICAgICAgICAgICAgICAgIC8vICAgIHRocm93cyB0aGUgQ1BVIHRvIDEwMCUsIHNvIHdlIGF2b2lkIGRvaW5nIGFueXRoaW5nIGZvciB0aGlzIHJlYXNvbiBoZXJlIHRvby5cbiAgICAgICAgICAgICAgICBpZiAocmVsYXRlZFRhcmdldCA9PT0gbnVsbCkgcmV0dXJuOyAvLyBJZiB0aGUgZm9jdXMgaGFzIG1vdmVkIHRvIGFuIGFjdHVhbCBsZWdpdGltYXRlIGVsZW1lbnQgKGByZWxhdGVkVGFyZ2V0ICE9PSBudWxsYClcbiAgICAgICAgICAgICAgICAvLyB0aGF0IGlzIG91dHNpZGUgdGhlIGNvbnRhaW5lciwgd2UgbW92ZSBmb2N1cyB0byB0aGUgbGFzdCB2YWxpZCBmb2N1c2VkIGVsZW1lbnQgaW5zaWRlLlxuICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVyMS5jb250YWlucyhyZWxhdGVkVGFyZ2V0KSkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGxhc3RGb2N1c2VkRWxlbWVudFJlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSAvLyBXaGVuIHRoZSBmb2N1c2VkIGVsZW1lbnQgZ2V0cyByZW1vdmVkIGZyb20gdGhlIERPTSwgYnJvd3NlcnMgbW92ZSBmb2N1c1xuICAgICAgICAgICAgLy8gYmFjayB0byB0aGUgZG9jdW1lbnQuYm9keS4gSW4gdGhpcyBjYXNlLCB3ZSBtb3ZlIGZvY3VzIHRvIHRoZSBjb250YWluZXJcbiAgICAgICAgICAgIC8vIHRvIGtlZXAgZm9jdXMgdHJhcHBlZCBjb3JyZWN0bHkuXG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVNdXRhdGlvbnMobXV0YXRpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLnJlbW92ZWROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShjb250YWluZXIxICE9PSBudWxsICYmIGNvbnRhaW5lcjEgIT09IHZvaWQgMCAmJiBjb250YWluZXIxLmNvbnRhaW5zKGZvY3VzZWRFbGVtZW50KSkpICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhjb250YWluZXIxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBoYW5kbGVGb2N1c0luKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXQpO1xuICAgICAgICAgICAgY29uc3QgbXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGhhbmRsZU11dGF0aW9ucyk7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyMSkgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcjEsIHtcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBoYW5kbGVGb2N1c091dCk7XG4gICAgICAgICAgICAgICAgbXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICB0cmFwcGVkLFxuICAgICAgICBjb250YWluZXIxLFxuICAgICAgICBmb2N1c1Njb3BlLnBhdXNlZFxuICAgIF0pO1xuICAgICQ0NVFIdiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRhaW5lcjEpIHtcbiAgICAgICAgICAgICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c1Njb3Blc1N0YWNrLmFkZChmb2N1c1Njb3BlKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBoYXNGb2N1c2VkQ2FuZGlkYXRlID0gY29udGFpbmVyMS5jb250YWlucyhwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCFoYXNGb2N1c2VkQ2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW91bnRFdmVudCA9IG5ldyBDdXN0b21FdmVudCgkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5ULCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRVZFTlRfT1BUSU9OUyk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyMS5hZGRFdmVudExpc3RlbmVyKCRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fTU9VTlQsIG9uTW91bnRBdXRvRm9jdXMpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEuZGlzcGF0Y2hFdmVudChtb3VudEV2ZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoIW1vdW50RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNGaXJzdCgkZDM4NjNjNDZhMTdlOGEyOCR2YXIkcmVtb3ZlTGlua3MoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlQ2FuZGlkYXRlcyhjb250YWluZXIxKSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGNvbnRhaW5lcjEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEucmVtb3ZlRXZlbnRMaXN0ZW5lcigkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5ULCBvbk1vdW50QXV0b0ZvY3VzKTsgLy8gV2UgaGl0IGEgcmVhY3QgYnVnIChmaXhlZCBpbiB2MTcpIHdpdGggZm9jdXNpbmcgaW4gdW5tb3VudC5cbiAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGRlbGF5IHRoZSBmb2N1cyBhIGxpdHRsZSB0byBnZXQgYXJvdW5kIGl0IGZvciBub3cuXG4gICAgICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE3ODk0XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bm1vdW50RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5ULCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRVZFTlRfT1BUSU9OUyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEuYWRkRXZlbnRMaXN0ZW5lcigkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX1VOTU9VTlQsIG9uVW5tb3VudEF1dG9Gb2N1cyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEuZGlzcGF0Y2hFdmVudCh1bm1vdW50RXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXVubW91bnRFdmVudC5kZWZhdWx0UHJldmVudGVkKSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMocHJldmlvdXNseUZvY3VzZWRFbGVtZW50ICE9PSBudWxsICYmIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCAhPT0gdm9pZCAwID8gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50IDogZG9jdW1lbnQuYm9keSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZW1vdmUgdGhlIGxpc3RlbmVyIGFmdGVyIHdlIGBkaXNwYXRjaEV2ZW50YFxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5ULCBvblVubW91bnRBdXRvRm9jdXMpO1xuICAgICAgICAgICAgICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNTY29wZXNTdGFjay5yZW1vdmUoZm9jdXNTY29wZSk7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250YWluZXIxLFxuICAgICAgICBvbk1vdW50QXV0b0ZvY3VzLFxuICAgICAgICBvblVubW91bnRBdXRvRm9jdXMsXG4gICAgICAgIGZvY3VzU2NvcGVcbiAgICBdKTsgLy8gVGFrZXMgY2FyZSBvZiBsb29waW5nIGZvY3VzICh3aGVuIHRhYmJpbmcgd2hpbHN0IGF0IHRoZSBlZGdlcylcbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gJDQ1UUh2JHVzZUNhbGxiYWNrKChldmVudCk9PntcbiAgICAgICAgaWYgKCFsb29wICYmICF0cmFwcGVkKSByZXR1cm47XG4gICAgICAgIGlmIChmb2N1c1Njb3BlLnBhdXNlZCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBpc1RhYktleSA9IGV2ZW50LmtleSA9PT0gJ1RhYicgJiYgIWV2ZW50LmFsdEtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtleTtcbiAgICAgICAgY29uc3QgZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICBpZiAoaXNUYWJLZXkgJiYgZm9jdXNlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICBjb25zdCBbZmlyc3QsIGxhc3RdID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlRWRnZXMoY29udGFpbmVyKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1RhYmJhYmxlRWxlbWVudHNJbnNpZGUgPSBmaXJzdCAmJiBsYXN0OyAvLyB3ZSBjYW4gb25seSB3cmFwIGZvY3VzIGlmIHdlIGhhdmUgdGFiYmFibGUgZWRnZXNcbiAgICAgICAgICAgIGlmICghaGFzVGFiYmFibGVFbGVtZW50c0luc2lkZSkge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkRWxlbWVudCA9PT0gY29udGFpbmVyKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5ICYmIGZvY3VzZWRFbGVtZW50ID09PSBsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb29wKSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMoZmlyc3QsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIGZvY3VzZWRFbGVtZW50ID09PSBmaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9vcCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGxhc3QsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGxvb3AsXG4gICAgICAgIHRyYXBwZWQsXG4gICAgICAgIGZvY3VzU2NvcGUucGF1c2VkXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDQ1UUh2JGNyZWF0ZUVsZW1lbnQoJDQ1UUh2JFByaW1pdGl2ZS5kaXYsICQ0NVFIdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHRhYkluZGV4OiAtMVxuICAgIH0sIHNjb3BlUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uS2V5RG93bjogaGFuZGxlS2V5RG93blxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCQyMGU0MDI4OTY0MWZiYmI2LCB7XG4gICAgZGlzcGxheU5hbWU6ICRkMzg2M2M0NmExN2U4YTI4JHZhciRGT0NVU19TQ09QRV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFV0aWxzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIC8qKlxuICogQXR0ZW1wdHMgZm9jdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYSBsaXN0IG9mIGNhbmRpZGF0ZXMuXG4gKiBTdG9wcyB3aGVuIGZvY3VzIGhhcyBhY3R1YWxseSBtb3ZlZC5cbiAqLyBmdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNGaXJzdChjYW5kaWRhdGVzLCB7IHNlbGVjdDogc2VsZWN0ID0gZmFsc2UgIH0gPSB7fSkge1xuICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcyl7XG4gICAgICAgICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhjYW5kaWRhdGUsIHtcbiAgICAgICAgICAgIHNlbGVjdDogc2VsZWN0XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50KSByZXR1cm47XG4gICAgfVxufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBhbmQgbGFzdCB0YWJiYWJsZSBlbGVtZW50cyBpbnNpZGUgYSBjb250YWluZXIuXG4gKi8gZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlRWRnZXMoY29udGFpbmVyKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlcyA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyKTtcbiAgICBjb25zdCBmaXJzdCA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRmaW5kVmlzaWJsZShjYW5kaWRhdGVzLCBjb250YWluZXIpO1xuICAgIGNvbnN0IGxhc3QgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZmluZFZpc2libGUoY2FuZGlkYXRlcy5yZXZlcnNlKCksIGNvbnRhaW5lcik7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZmlyc3QsXG4gICAgICAgIGxhc3RcbiAgICBdO1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBwb3RlbnRpYWwgdGFiYmFibGUgY2FuZGlkYXRlcy5cbiAqXG4gKiBOT1RFOiBUaGlzIGlzIG9ubHkgYSBjbG9zZSBhcHByb3hpbWF0aW9uLiBGb3IgZXhhbXBsZSBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IGNhc2VzIGxpa2Ugd2hlblxuICogZWxlbWVudHMgYXJlIG5vdCB2aXNpYmxlLiBUaGlzIGNhbm5vdCBiZSB3b3JrZWQgb3V0IGVhc2lseSBieSBqdXN0IHJlYWRpbmcgYSBwcm9wZXJ0eSwgYnV0IHJhdGhlclxuICogbmVjZXNzaXRhdGUgcnVudGltZSBrbm93bGVkZ2UgKGNvbXB1dGVkIHN0eWxlcywgZXRjKS4gV2UgZGVhbCB3aXRoIHRoZXNlIGNhc2VzIHNlcGFyYXRlbHkuXG4gKlxuICogU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVHJlZVdhbGtlclxuICogQ3JlZGl0OiBodHRwczovL2dpdGh1Yi5jb20vZGlzY29yZC9mb2N1cy1sYXllcnMvYmxvYi9tYXN0ZXIvc3JjL3V0aWwvd3JhcEZvY3VzLnRzeCNMMVxuICovIGZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgICBjb25zdCB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGNvbnRhaW5lciwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIHtcbiAgICAgICAgYWNjZXB0Tm9kZTogKG5vZGUpPT57XG4gICAgICAgICAgICBjb25zdCBpc0hpZGRlbklucHV0ID0gbm9kZS50YWdOYW1lID09PSAnSU5QVVQnICYmIG5vZGUudHlwZSA9PT0gJ2hpZGRlbic7XG4gICAgICAgICAgICBpZiAobm9kZS5kaXNhYmxlZCB8fCBub2RlLmhpZGRlbiB8fCBpc0hpZGRlbklucHV0KSByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDsgLy8gYC50YWJJbmRleGAgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBgdGFiaW5kZXhgIGF0dHJpYnV0ZS4gSXQgd29ya3Mgb24gdGhlXG4gICAgICAgICAgICAvLyBydW50aW1lJ3MgdW5kZXJzdGFuZGluZyBvZiB0YWJiYWJpbGl0eSwgc28gdGhpcyBhdXRvbWF0aWNhbGx5IGFjY291bnRzXG4gICAgICAgICAgICAvLyBmb3IgYW55IGtpbmQgb2YgZWxlbWVudCB0aGF0IGNvdWxkIGJlIHRhYmJlZCB0by5cbiAgICAgICAgICAgIHJldHVybiBub2RlLnRhYkluZGV4ID49IDAgPyBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQgOiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgd2hpbGUod2Fsa2VyLm5leHROb2RlKCkpbm9kZXMucHVzaCh3YWxrZXIuY3VycmVudE5vZGUpOyAvLyB3ZSBkbyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIG9yZGVyIG9mIG5vZGVzIHdpdGggcG9zaXRpdmUgYHRhYkluZGV4YCBhcyBpdFxuICAgIC8vIGhpbmRlcnMgYWNjZXNzaWJpbGl0eSB0byBoYXZlIHRhYiBvcmRlciBkaWZmZXJlbnQgZnJvbSB2aXN1YWwgb3JkZXIuXG4gICAgcmV0dXJuIG5vZGVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCB2aXNpYmxlIGVsZW1lbnQgaW4gYSBsaXN0LlxuICogTk9URTogT25seSBjaGVja3MgdmlzaWJpbGl0eSB1cCB0byB0aGUgYGNvbnRhaW5lcmAuXG4gKi8gZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZpbmRWaXNpYmxlKGVsZW1lbnRzLCBjb250YWluZXIpIHtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpe1xuICAgICAgICAvLyB3ZSBzdG9wIGNoZWNraW5nIGlmIGl0J3MgaGlkZGVuIGF0IHRoZSBgY29udGFpbmVyYCBsZXZlbCAoZXhjbHVkaW5nKVxuICAgICAgICBpZiAoISRkMzg2M2M0NmExN2U4YTI4JHZhciRpc0hpZGRlbihlbGVtZW50LCB7XG4gICAgICAgICAgICB1cFRvOiBjb250YWluZXJcbiAgICAgICAgfSkpIHJldHVybiBlbGVtZW50O1xuICAgIH1cbn1cbmZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRpc0hpZGRlbihub2RlLCB7IHVwVG86IHVwVG8gIH0pIHtcbiAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS52aXNpYmlsaXR5ID09PSAnaGlkZGVuJykgcmV0dXJuIHRydWU7XG4gICAgd2hpbGUobm9kZSl7XG4gICAgICAgIC8vIHdlIHN0b3AgYXQgYHVwVG9gIChleGNsdWRpbmcgaXQpXG4gICAgICAgIGlmICh1cFRvICE9PSB1bmRlZmluZWQgJiYgbm9kZSA9PT0gdXBUbykgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5kaXNwbGF5ID09PSAnbm9uZScpIHJldHVybiB0cnVlO1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNTZWxlY3RhYmxlSW5wdXQoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiAnc2VsZWN0JyBpbiBlbGVtZW50O1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGVsZW1lbnQsIHsgc2VsZWN0OiBzZWxlY3QgPSBmYWxzZSAgfSA9IHt9KSB7XG4gICAgLy8gb25seSBmb2N1cyBpZiB0aGF0IGVsZW1lbnQgaXMgZm9jdXNhYmxlXG4gICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5mb2N1cykge1xuICAgICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50OyAvLyBOT1RFOiB3ZSBwcmV2ZW50IHNjcm9sbGluZyBvbiBmb2N1cywgdG8gbWluaW1pemUgamFycmluZyB0cmFuc2l0aW9ucyBmb3IgdXNlcnNcbiAgICAgICAgZWxlbWVudC5mb2N1cyh7XG4gICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgIH0pOyAvLyBvbmx5IHNlbGVjdCBpZiBpdHMgbm90IHRoZSBzYW1lIGVsZW1lbnQsIGl0IHN1cHBvcnRzIHNlbGVjdGlvbiBhbmQgd2UgbmVlZCB0byBzZWxlY3RcbiAgICAgICAgaWYgKGVsZW1lbnQgIT09IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCAmJiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNTZWxlY3RhYmxlSW5wdXQoZWxlbWVudCkgJiYgc2VsZWN0KSBlbGVtZW50LnNlbGVjdCgpO1xuICAgIH1cbn1cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEZvY3VzU2NvcGUgc3RhY2tcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzU2NvcGVzU3RhY2sgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkY3JlYXRlRm9jdXNTY29wZXNTdGFjaygpO1xuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2soKSB7XG4gICAgLyoqIEEgc3RhY2sgb2YgZm9jdXMgc2NvcGVzLCB3aXRoIHRoZSBhY3RpdmUgb25lIGF0IHRoZSB0b3AgKi8gbGV0IHN0YWNrID0gW107XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWRkIChmb2N1c1Njb3BlKSB7XG4gICAgICAgICAgICAvLyBwYXVzZSB0aGUgY3VycmVudGx5IGFjdGl2ZSBmb2N1cyBzY29wZSAoYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2spXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVGb2N1c1Njb3BlID0gc3RhY2tbMF07XG4gICAgICAgICAgICBpZiAoZm9jdXNTY29wZSAhPT0gYWN0aXZlRm9jdXNTY29wZSkgYWN0aXZlRm9jdXNTY29wZSA9PT0gbnVsbCB8fCBhY3RpdmVGb2N1c1Njb3BlID09PSB2b2lkIDAgfHwgYWN0aXZlRm9jdXNTY29wZS5wYXVzZSgpO1xuICAgICAgICAgICAgIC8vIHJlbW92ZSBpbiBjYXNlIGl0IGFscmVhZHkgZXhpc3RzIChiZWNhdXNlIHdlJ2xsIHJlLWFkZCBpdCBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjaylcbiAgICAgICAgICAgIHN0YWNrID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGFycmF5UmVtb3ZlKHN0YWNrLCBmb2N1c1Njb3BlKTtcbiAgICAgICAgICAgIHN0YWNrLnVuc2hpZnQoZm9jdXNTY29wZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZSAoZm9jdXNTY29wZSkge1xuICAgICAgICAgICAgdmFyIF9zdGFjayQ7XG4gICAgICAgICAgICBzdGFjayA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRhcnJheVJlbW92ZShzdGFjaywgZm9jdXNTY29wZSk7XG4gICAgICAgICAgICAoX3N0YWNrJCA9IHN0YWNrWzBdKSA9PT0gbnVsbCB8fCBfc3RhY2skID09PSB2b2lkIDAgfHwgX3N0YWNrJC5yZXN1bWUoKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkYXJyYXlSZW1vdmUoYXJyYXksIGl0ZW0pIHtcbiAgICBjb25zdCB1cGRhdGVkQXJyYXkgPSBbXG4gICAgICAgIC4uLmFycmF5XG4gICAgXTtcbiAgICBjb25zdCBpbmRleCA9IHVwZGF0ZWRBcnJheS5pbmRleE9mKGl0ZW0pO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHVwZGF0ZWRBcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiB1cGRhdGVkQXJyYXk7XG59XG5mdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkcmVtb3ZlTGlua3MoaXRlbXMpIHtcbiAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKT0+aXRlbS50YWdOYW1lICE9PSAnQSdcbiAgICApO1xufVxuY29uc3QgJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNjtcblxuXG5cblxuZXhwb3J0IHskZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNiBhcyBGb2N1c1Njb3BlLCAkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkN1NYbDIkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkN1NYbDIkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkN1NYbDIkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgJDdTWGwyJHJlYWN0ZG9tIGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ3U1hsMiRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9ydGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRmMTcwMWJlYWUwODNkYmFlJHZhciRQT1JUQUxfTkFNRSA9ICdQb3J0YWwnO1xuY29uc3QgJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAvKiNfX1BVUkVfXyovICQ3U1hsMiRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIHZhciBfZ2xvYmFsVGhpcyRkb2N1bWVudDtcbiAgICBjb25zdCB7IGNvbnRhaW5lcjogY29udGFpbmVyID0gZ2xvYmFsVGhpcyA9PT0gbnVsbCB8fCBnbG9iYWxUaGlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2dsb2JhbFRoaXMkZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50KSA9PT0gbnVsbCB8fCBfZ2xvYmFsVGhpcyRkb2N1bWVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2dsb2JhbFRoaXMkZG9jdW1lbnQuYm9keSAsIC4uLnBvcnRhbFByb3BzIH0gPSBwcm9wcztcbiAgICByZXR1cm4gY29udGFpbmVyID8gLyojX19QVVJFX18qLyAkN1NYbDIkcmVhY3Rkb20uY3JlYXRlUG9ydGFsKC8qI19fUFVSRV9fKi8gJDdTWGwyJGNyZWF0ZUVsZW1lbnQoJDdTWGwyJFByaW1pdGl2ZS5kaXYsICQ3U1hsMiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9ydGFsUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSksIGNvbnRhaW5lcikgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMsIHtcbiAgICBkaXNwbGF5TmFtZTogJGYxNzAxYmVhZTA4M2RiYWUkdmFyJFBPUlRBTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYztcblxuXG5cblxuZXhwb3J0IHskZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyBhcyBQb3J0YWwsICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHtDaGlsZHJlbiBhcyAkaXFxM3IkQ2hpbGRyZW4sIGNsb25lRWxlbWVudCBhcyAkaXFxM3IkY2xvbmVFbGVtZW50LCB1c2VTdGF0ZSBhcyAkaXFxM3IkdXNlU3RhdGUsIHVzZVJlZiBhcyAkaXFxM3IkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGlxcTNyJHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgYXMgJGlxcTNyJHVzZUNhbGxiYWNrLCB1c2VSZWR1Y2VyIGFzICRpcXEzciR1c2VSZWR1Y2VyfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Zmx1c2hTeW5jIGFzICRpcXEzciRmbHVzaFN5bmN9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICRpcXEzciR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkaXFxM3IkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5cblxuXG5cblxuXG5mdW5jdGlvbiAkZmU5NjNiMzU1MzQ3Y2M2OCRleHBvcnQkM2U2NTQzZGUxNGY4NjE0Zihpbml0aWFsU3RhdGUsIG1hY2hpbmUpIHtcbiAgICByZXR1cm4gJGlxcTNyJHVzZVJlZHVjZXIoKHN0YXRlLCBldmVudCk9PntcbiAgICAgICAgY29uc3QgbmV4dFN0YXRlID0gbWFjaGluZVtzdGF0ZV1bZXZlbnRdO1xuICAgICAgICByZXR1cm4gbmV4dFN0YXRlICE9PSBudWxsICYmIG5leHRTdGF0ZSAhPT0gdm9pZCAwID8gbmV4dFN0YXRlIDogc3RhdGU7XG4gICAgfSwgaW5pdGlhbFN0YXRlKTtcbn1cblxuXG5jb25zdCAkOTIxYTg4OWNlZTZkZjdlOCRleHBvcnQkOTljMmI3NzlhYTRlOGI4YiA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IHByZXNlbnQ6IHByZXNlbnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICBjb25zdCBwcmVzZW5jZSA9ICQ5MjFhODg5Y2VlNmRmN2U4JHZhciR1c2VQcmVzZW5jZShwcmVzZW50KTtcbiAgICBjb25zdCBjaGlsZCA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkcmVuKHtcbiAgICAgICAgcHJlc2VudDogcHJlc2VuY2UuaXNQcmVzZW50XG4gICAgfSkgOiAkaXFxM3IkQ2hpbGRyZW4ub25seShjaGlsZHJlbik7XG4gICAgY29uc3QgcmVmID0gJGlxcTNyJHVzZUNvbXBvc2VkUmVmcyhwcmVzZW5jZS5yZWYsIGNoaWxkLnJlZik7XG4gICAgY29uc3QgZm9yY2VNb3VudCA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJztcbiAgICByZXR1cm4gZm9yY2VNb3VudCB8fCBwcmVzZW5jZS5pc1ByZXNlbnQgPyAvKiNfX1BVUkVfXyovICRpcXEzciRjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgcmVmOiByZWZcbiAgICB9KSA6IG51bGw7XG59O1xuJDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIuZGlzcGxheU5hbWUgPSAnUHJlc2VuY2UnO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogdXNlUHJlc2VuY2VcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gZnVuY3Rpb24gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJHVzZVByZXNlbmNlKHByZXNlbnQpIHtcbiAgICBjb25zdCBbbm9kZTEsIHNldE5vZGVdID0gJGlxcTNyJHVzZVN0YXRlKCk7XG4gICAgY29uc3Qgc3R5bGVzUmVmID0gJGlxcTNyJHVzZVJlZih7fSk7XG4gICAgY29uc3QgcHJldlByZXNlbnRSZWYgPSAkaXFxM3IkdXNlUmVmKHByZXNlbnQpO1xuICAgIGNvbnN0IHByZXZBbmltYXRpb25OYW1lUmVmID0gJGlxcTNyJHVzZVJlZignbm9uZScpO1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHByZXNlbnQgPyAnbW91bnRlZCcgOiAndW5tb3VudGVkJztcbiAgICBjb25zdCBbc3RhdGUsIHNlbmRdID0gJGZlOTYzYjM1NTM0N2NjNjgkZXhwb3J0JDNlNjU0M2RlMTRmODYxNGYoaW5pdGlhbFN0YXRlLCB7XG4gICAgICAgIG1vdW50ZWQ6IHtcbiAgICAgICAgICAgIFVOTU9VTlQ6ICd1bm1vdW50ZWQnLFxuICAgICAgICAgICAgQU5JTUFUSU9OX09VVDogJ3VubW91bnRTdXNwZW5kZWQnXG4gICAgICAgIH0sXG4gICAgICAgIHVubW91bnRTdXNwZW5kZWQ6IHtcbiAgICAgICAgICAgIE1PVU5UOiAnbW91bnRlZCcsXG4gICAgICAgICAgICBBTklNQVRJT05fRU5EOiAndW5tb3VudGVkJ1xuICAgICAgICB9LFxuICAgICAgICB1bm1vdW50ZWQ6IHtcbiAgICAgICAgICAgIE1PVU5UOiAnbW91bnRlZCdcbiAgICAgICAgfVxuICAgIH0pO1xuICAgICRpcXEzciR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXNSZWYuY3VycmVudCk7XG4gICAgICAgIHByZXZBbmltYXRpb25OYW1lUmVmLmN1cnJlbnQgPSBzdGF0ZSA9PT0gJ21vdW50ZWQnID8gY3VycmVudEFuaW1hdGlvbk5hbWUgOiAnbm9uZSc7XG4gICAgfSwgW1xuICAgICAgICBzdGF0ZVxuICAgIF0pO1xuICAgICRpcXEzciR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgc3R5bGVzID0gc3R5bGVzUmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IHdhc1ByZXNlbnQgPSBwcmV2UHJlc2VudFJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBoYXNQcmVzZW50Q2hhbmdlZCA9IHdhc1ByZXNlbnQgIT09IHByZXNlbnQ7XG4gICAgICAgIGlmIChoYXNQcmVzZW50Q2hhbmdlZCkge1xuICAgICAgICAgICAgY29uc3QgcHJldkFuaW1hdGlvbk5hbWUgPSBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXMpO1xuICAgICAgICAgICAgaWYgKHByZXNlbnQpIHNlbmQoJ01PVU5UJyk7XG4gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50QW5pbWF0aW9uTmFtZSA9PT0gJ25vbmUnIHx8IChzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMuZGlzcGxheSkgPT09ICdub25lJykgLy8gSWYgdGhlcmUgaXMgbm8gZXhpdCBhbmltYXRpb24gb3IgdGhlIGVsZW1lbnQgaXMgaGlkZGVuLCBhbmltYXRpb25zIHdvbid0IHJ1blxuICAgICAgICAgICAgLy8gc28gd2UgdW5tb3VudCBpbnN0YW50bHlcbiAgICAgICAgICAgIHNlbmQoJ1VOTU9VTlQnKTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgKiBXaGVuIGBwcmVzZW50YCBjaGFuZ2VzIHRvIGBmYWxzZWAsIHdlIGNoZWNrIGNoYW5nZXMgdG8gYW5pbWF0aW9uLW5hbWUgdG9cbiAgICAgICAgICogZGV0ZXJtaW5lIHdoZXRoZXIgYW4gYW5pbWF0aW9uIGhhcyBzdGFydGVkLiBXZSBjaG9zZSB0aGlzIGFwcHJvYWNoIChyZWFkaW5nXG4gICAgICAgICAqIGNvbXB1dGVkIHN0eWxlcykgYmVjYXVzZSB0aGVyZSBpcyBubyBgYW5pbWF0aW9ucnVuYCBldmVudCBhbmQgYGFuaW1hdGlvbnN0YXJ0YFxuICAgICAgICAgKiBmaXJlcyBhZnRlciBgYW5pbWF0aW9uLWRlbGF5YCBoYXMgZXhwaXJlZCB3aGljaCB3b3VsZCBiZSB0b28gbGF0ZS5cbiAgICAgICAgICovIGNvbnN0IGlzQW5pbWF0aW5nID0gcHJldkFuaW1hdGlvbk5hbWUgIT09IGN1cnJlbnRBbmltYXRpb25OYW1lO1xuICAgICAgICAgICAgICAgIGlmICh3YXNQcmVzZW50ICYmIGlzQW5pbWF0aW5nKSBzZW5kKCdBTklNQVRJT05fT1VUJyk7XG4gICAgICAgICAgICAgICAgZWxzZSBzZW5kKCdVTk1PVU5UJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2UHJlc2VudFJlZi5jdXJyZW50ID0gcHJlc2VudDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJlc2VudCxcbiAgICAgICAgc2VuZFxuICAgIF0pO1xuICAgICRpcXEzciR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKG5vZGUxKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAqIFRyaWdnZXJpbmcgYW4gQU5JTUFUSU9OX09VVCBkdXJpbmcgYW4gQU5JTUFUSU9OX0lOIHdpbGwgZmlyZSBhbiBgYW5pbWF0aW9uY2FuY2VsYFxuICAgICAgICogZXZlbnQgZm9yIEFOSU1BVElPTl9JTiBhZnRlciB3ZSBoYXZlIGVudGVyZWQgYHVubW91bnRTdXNwZW5kZWRgIHN0YXRlLiBTbywgd2VcbiAgICAgICAqIG1ha2Ugc3VyZSB3ZSBvbmx5IHRyaWdnZXIgQU5JTUFUSU9OX0VORCBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgYW5pbWF0aW9uLlxuICAgICAgICovIGNvbnN0IGhhbmRsZUFuaW1hdGlvbkVuZCA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50QW5pbWF0aW9uTmFtZSA9ICQ5MjFhODg5Y2VlNmRmN2U4JHZhciRnZXRBbmltYXRpb25OYW1lKHN0eWxlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRBbmltYXRpb24gPSBjdXJyZW50QW5pbWF0aW9uTmFtZS5pbmNsdWRlcyhldmVudC5hbmltYXRpb25OYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBub2RlMSAmJiBpc0N1cnJlbnRBbmltYXRpb24pIC8vIFdpdGggUmVhY3QgMTggY29uY3VycmVuY3kgdGhpcyB1cGRhdGUgaXMgYXBwbGllZFxuICAgICAgICAgICAgICAgIC8vIGEgZnJhbWUgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBlbmRzLCBjcmVhdGluZyBhIGZsYXNoIG9mIHZpc2libGUgY29udGVudC5cbiAgICAgICAgICAgICAgICAvLyBCeSBtYW51YWxseSBmbHVzaGluZyB3ZSBlbnN1cmUgdGhleSBzeW5jIHdpdGhpbiBhIGZyYW1lLCByZW1vdmluZyB0aGUgZmxhc2guXG4gICAgICAgICAgICAgICAgJGlxcTNyJGZsdXNoU3luYygoKT0+c2VuZCgnQU5JTUFUSU9OX0VORCcpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVBbmltYXRpb25TdGFydCA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBub2RlMSkgLy8gaWYgYW5pbWF0aW9uIG9jY3VycmVkLCBzdG9yZSBpdHMgbmFtZSBhcyB0aGUgcHJldmlvdXMgYW5pbWF0aW9uLlxuICAgICAgICAgICAgICAgIHByZXZBbmltYXRpb25OYW1lUmVmLmN1cnJlbnQgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXNSZWYuY3VycmVudCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbm9kZTEuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uc3RhcnQnLCBoYW5kbGVBbmltYXRpb25TdGFydCk7XG4gICAgICAgICAgICBub2RlMS5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgICAgICAgbm9kZTEuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgICAgIG5vZGUxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbnN0YXJ0JywgaGFuZGxlQW5pbWF0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgIG5vZGUxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmNhbmNlbCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgbm9kZTEucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSAvLyBUcmFuc2l0aW9uIHRvIHRoZSB1bm1vdW50ZWQgc3RhdGUgaWYgdGhlIG5vZGUgaXMgcmVtb3ZlZCBwcmVtYXR1cmVseS5cbiAgICAgICAgLy8gV2UgYXZvaWQgZG9pbmcgc28gZHVyaW5nIGNsZWFudXAgYXMgdGhlIG5vZGUgbWF5IGNoYW5nZSBidXQgc3RpbGwgZXhpc3QuXG4gICAgICAgIHNlbmQoJ0FOSU1BVElPTl9FTkQnKTtcbiAgICB9LCBbXG4gICAgICAgIG5vZGUxLFxuICAgICAgICBzZW5kXG4gICAgXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaXNQcmVzZW50OiBbXG4gICAgICAgICAgICAnbW91bnRlZCcsXG4gICAgICAgICAgICAndW5tb3VudFN1c3BlbmRlZCdcbiAgICAgICAgXS5pbmNsdWRlcyhzdGF0ZSksXG4gICAgICAgIHJlZjogJGlxcTNyJHVzZUNhbGxiYWNrKChub2RlKT0+e1xuICAgICAgICAgICAgaWYgKG5vZGUpIHN0eWxlc1JlZi5jdXJyZW50ID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICAgICAgICAgIHNldE5vZGUobm9kZSk7XG4gICAgICAgIH0sIFtdKVxuICAgIH07XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICQ5MjFhODg5Y2VlNmRmN2U4JHZhciRnZXRBbmltYXRpb25OYW1lKHN0eWxlcykge1xuICAgIHJldHVybiAoc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmFuaW1hdGlvbk5hbWUpIHx8ICdub25lJztcbn1cblxuXG5cblxuZXhwb3J0IHskOTIxYTg4OWNlZTZkZjdlOCRleHBvcnQkOTljMmI3NzlhYTRlOGI4YiBhcyBQcmVzZW5jZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUVmZmVjdCBhcyAkMXdFcnokdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcblxuXG4vKiogTnVtYmVyIG9mIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSByZXF1ZXN0ZWQgaW50ZXJlc3QgdG8gaGF2ZSBmb2N1cyBndWFyZHMgKi8gbGV0ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudCA9IDA7XG5mdW5jdGlvbiAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5Yihwcm9wcykge1xuICAgICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRiN2VjZTI0YTIyYWVkYThjKCk7XG4gICAgcmV0dXJuIHByb3BzLmNoaWxkcmVuO1xufVxuLyoqXG4gKiBJbmplY3RzIGEgcGFpciBvZiBmb2N1cyBndWFyZHMgYXQgdGhlIGVkZ2VzIG9mIHRoZSB3aG9sZSBET00gdHJlZVxuICogdG8gZW5zdXJlIGBmb2N1c2luYCAmIGBmb2N1c291dGAgZXZlbnRzIGNhbiBiZSBjYXVnaHQgY29uc2lzdGVudGx5LlxuICovIGZ1bmN0aW9uICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRiN2VjZTI0YTIyYWVkYThjKCkge1xuICAgICQxd0VyeiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgdmFyIF9lZGdlR3VhcmRzJCwgX2VkZ2VHdWFyZHMkMjtcbiAgICAgICAgY29uc3QgZWRnZUd1YXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJhZGl4LWZvY3VzLWd1YXJkXScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJiZWdpbicsIChfZWRnZUd1YXJkcyQgPSBlZGdlR3VhcmRzWzBdKSAhPT0gbnVsbCAmJiBfZWRnZUd1YXJkcyQgIT09IHZvaWQgMCA/IF9lZGdlR3VhcmRzJCA6ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkpO1xuICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudCgnYmVmb3JlZW5kJywgKF9lZGdlR3VhcmRzJDIgPSBlZGdlR3VhcmRzWzFdKSAhPT0gbnVsbCAmJiBfZWRnZUd1YXJkcyQyICE9PSB2b2lkIDAgPyBfZWRnZUd1YXJkcyQyIDogJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQoKSk7XG4gICAgICAgICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudCsrO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIGlmICgkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQgPT09IDEpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJhZGl4LWZvY3VzLWd1YXJkXScpLmZvckVhY2goKG5vZGUpPT5ub2RlLnJlbW92ZSgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50LS07XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xufVxuZnVuY3Rpb24gJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQoKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1yYWRpeC1mb2N1cy1ndWFyZCcsICcnKTtcbiAgICBlbGVtZW50LnRhYkluZGV4ID0gMDtcbiAgICBlbGVtZW50LnN0eWxlLmNzc1RleHQgPSAnb3V0bGluZTogbm9uZTsgb3BhY2l0eTogMDsgcG9zaXRpb246IGZpeGVkOyBwb2ludGVyLWV2ZW50czogbm9uZSc7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59XG5jb25zdCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRhYzViNTgwNDNiNzk0NDliO1xuXG5cblxuXG5leHBvcnQgeyQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRhYzViNTgwNDNiNzk0NDliIGFzIEZvY3VzR3VhcmRzLCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YyBhcyB1c2VGb2N1c0d1YXJkc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHMsXHJcbiAgICBfX2Fzc2lnbixcclxuICAgIF9fcmVzdCxcclxuICAgIF9fZGVjb3JhdGUsXHJcbiAgICBfX3BhcmFtLFxyXG4gICAgX19tZXRhZGF0YSxcclxuICAgIF9fYXdhaXRlcixcclxuICAgIF9fZ2VuZXJhdG9yLFxyXG4gICAgX19jcmVhdGVCaW5kaW5nLFxyXG4gICAgX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXMsXHJcbiAgICBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZCxcclxuICAgIF9fc3ByZWFkQXJyYXlzLFxyXG4gICAgX19zcHJlYWRBcnJheSxcclxuICAgIF9fYXdhaXQsXHJcbiAgICBfX2FzeW5jR2VuZXJhdG9yLFxyXG4gICAgX19hc3luY0RlbGVnYXRvcixcclxuICAgIF9fYXN5bmNWYWx1ZXMsXHJcbiAgICBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcixcclxuICAgIF9faW1wb3J0RGVmYXVsdCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG59O1xyXG4iLCJleHBvcnQgdmFyIHplcm9SaWdodENsYXNzTmFtZSA9ICdyaWdodC1zY3JvbGwtYmFyLXBvc2l0aW9uJztcbmV4cG9ydCB2YXIgZnVsbFdpZHRoQ2xhc3NOYW1lID0gJ3dpZHRoLWJlZm9yZS1zY3JvbGwtYmFyJztcbmV4cG9ydCB2YXIgbm9TY3JvbGxiYXJzQ2xhc3NOYW1lID0gJ3dpdGgtc2Nyb2xsLWJhcnMtaGlkZGVuJztcbi8qKlxuICogTmFtZSBvZiBhIENTUyB2YXJpYWJsZSBjb250YWluaW5nIHRoZSBhbW91bnQgb2YgXCJoaWRkZW5cIiBzY3JvbGxiYXJcbiAqICEgbWlnaHQgYmUgdW5kZWZpbmVkICEgdXNlIHdpbGwgZmFsbGJhY2shXG4gKi9cbmV4cG9ydCB2YXIgcmVtb3ZlZEJhclNpemVWYXJpYWJsZSA9ICctLXJlbW92ZWQtYm9keS1zY3JvbGwtYmFyLXNpemUnO1xuIiwiaW1wb3J0IHsgYXNzaWduUmVmIH0gZnJvbSAnLi9hc3NpZ25SZWYnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2tSZWYgfSBmcm9tICcuL3VzZVJlZic7XG4vKipcbiAqIE1lcmdlcyB0d28gb3IgbW9yZSByZWZzIHRvZ2V0aGVyIHByb3ZpZGluZyBhIHNpbmdsZSBpbnRlcmZhY2UgdG8gc2V0IHRoZWlyIHZhbHVlXG4gKiBAcGFyYW0ge1JlZk9iamVjdHxSZWZ9IHJlZnNcbiAqIEByZXR1cm5zIHtNdXRhYmxlUmVmT2JqZWN0fSAtIGEgbmV3IHJlZiwgd2hpY2ggdHJhbnNsYXRlcyBhbGwgY2hhbmdlcyB0byB7cmVmc31cbiAqXG4gKiBAc2VlIHtAbGluayBtZXJnZVJlZnN9IGEgdmVyc2lvbiB3aXRob3V0IGJ1aXQtaW4gbWVtb2l6YXRpb25cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3RoZUthc2hleS91c2UtY2FsbGJhY2stcmVmI3VzZW1lcmdlcmVmc1xuICogQGV4YW1wbGVcbiAqIGNvbnN0IENvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcbiAqICAgY29uc3Qgb3duUmVmID0gdXNlUmVmKCk7XG4gKiAgIGNvbnN0IGRvbVJlZiA9IHVzZU1lcmdlUmVmcyhbcmVmLCBvd25SZWZdKTsgLy8g8J+RiCBtZXJnZSB0b2dldGhlclxuICogICByZXR1cm4gPGRpdiByZWY9e2RvbVJlZn0+Li4uPC9kaXY+XG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZXJnZVJlZnMocmVmcywgZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuIHVzZUNhbGxiYWNrUmVmKGRlZmF1bHRWYWx1ZSB8fCBudWxsLCBmdW5jdGlvbiAobmV3VmFsdWUpIHsgcmV0dXJuIHJlZnMuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7IHJldHVybiBhc3NpZ25SZWYocmVmLCBuZXdWYWx1ZSk7IH0pOyB9KTtcbn1cbiIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBjcmVhdGVzIGEgTXV0YWJsZVJlZiB3aXRoIHJlZiBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSBpbml0aWFsVmFsdWUgLSBpbml0aWFsIHJlZiB2YWx1ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgLSBhIGNhbGxiYWNrIHRvIHJ1biB3aGVuIHZhbHVlIGNoYW5nZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVmID0gdXNlQ2FsbGJhY2tSZWYoMCwgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4gY29uc29sZS5sb2cob2xkVmFsdWUsICctPicsIG5ld1ZhbHVlKTtcbiAqIHJlZi5jdXJyZW50ID0gMTtcbiAqIC8vIHByaW50cyAwIC0+IDFcbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9ob29rcy1yZWZlcmVuY2UuaHRtbCN1c2VyZWZcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3RoZUthc2hleS91c2UtY2FsbGJhY2stcmVmI3VzZWNhbGxiYWNrcmVmLS0tdG8tcmVwbGFjZS1yZWFjdHVzZXJlZlxuICogQHJldHVybnMge011dGFibGVSZWZPYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDYWxsYmFja1JlZihpbml0aWFsVmFsdWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHJlZiA9IHVzZVN0YXRlKGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgICAgIC8vIHZhbHVlXG4gICAgICAgIHZhbHVlOiBpbml0aWFsVmFsdWUsXG4gICAgICAgIC8vIGxhc3QgY2FsbGJhY2tcbiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAvLyBcIm1lbW9pemVkXCIgcHVibGljIGludGVyZmFjZVxuICAgICAgICBmYWNhZGU6IHtcbiAgICAgICAgICAgIGdldCBjdXJyZW50KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWYudmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IGN1cnJlbnQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdCA9IHJlZi52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5jYWxsYmFjayh2YWx1ZSwgbGFzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9KTsgfSlbMF07XG4gICAgLy8gdXBkYXRlIGNhbGxiYWNrXG4gICAgcmVmLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgcmV0dXJuIHJlZi5mYWNhZGU7XG59XG4iLCIvKipcbiAqIEFzc2lnbnMgYSB2YWx1ZSBmb3IgYSBnaXZlbiByZWYsIG5vIG1hdHRlciBvZiB0aGUgcmVmIGZvcm1hdFxuICogQHBhcmFtIHtSZWZPYmplY3R9IHJlZiAtIGEgY2FsbGJhY2sgZnVuY3Rpb24gb3IgcmVmIG9iamVjdFxuICogQHBhcmFtIHZhbHVlIC0gYSBuZXcgdmFsdWVcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiNhc3NpZ25yZWZcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZWZPYmplY3QgPSB1c2VSZWYoKTtcbiAqIGNvbnN0IHJlZkZuID0gKHJlZikgPT4gey4uLi59XG4gKlxuICogYXNzaWduUmVmKHJlZk9iamVjdCwgXCJyZWZWYWx1ZVwiKTtcbiAqIGFzc2lnblJlZihyZWZGbiwgXCJyZWZWYWx1ZVwiKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnblJlZihyZWYsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVmKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocmVmKSB7XG4gICAgICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZWY7XG59XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuZnVuY3Rpb24gSXRvSShhKSB7XG4gICAgcmV0dXJuIGE7XG59XG5mdW5jdGlvbiBpbm5lckNyZWF0ZU1lZGl1bShkZWZhdWx0cywgbWlkZGxld2FyZSkge1xuICAgIGlmIChtaWRkbGV3YXJlID09PSB2b2lkIDApIHsgbWlkZGxld2FyZSA9IEl0b0k7IH1cbiAgICB2YXIgYnVmZmVyID0gW107XG4gICAgdmFyIGFzc2lnbmVkID0gZmFsc2U7XG4gICAgdmFyIG1lZGl1bSA9IHtcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGFzc2lnbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWRlY2FyOiBjb3VsZCBub3QgYHJlYWRgIGZyb20gYW4gYGFzc2lnbmVkYCBtZWRpdW0uIGByZWFkYCBjb3VsZCBiZSB1c2VkIG9ubHkgd2l0aCBgdXNlTWVkaXVtYC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcltidWZmZXIubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdHM7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZU1lZGl1bTogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBpdGVtID0gbWlkZGxld2FyZShkYXRhLCBhc3NpZ25lZCk7XG4gICAgICAgICAgICBidWZmZXIucHVzaChpdGVtKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gYnVmZmVyLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4geCAhPT0gaXRlbTsgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBhc3NpZ25TeW5jTWVkaXVtOiBmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgICAgIGFzc2lnbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHdoaWxlIChidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNicyA9IGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICBidWZmZXIgPSBbXTtcbiAgICAgICAgICAgICAgICBjYnMuZm9yRWFjaChjYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmZXIgPSB7XG4gICAgICAgICAgICAgICAgcHVzaDogZnVuY3Rpb24gKHgpIHsgcmV0dXJuIGNiKHgpOyB9LFxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKCkgeyByZXR1cm4gYnVmZmVyOyB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgYXNzaWduTWVkaXVtOiBmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgICAgIGFzc2lnbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwZW5kaW5nUXVldWUgPSBbXTtcbiAgICAgICAgICAgIGlmIChidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNicyA9IGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICBidWZmZXIgPSBbXTtcbiAgICAgICAgICAgICAgICBjYnMuZm9yRWFjaChjYik7XG4gICAgICAgICAgICAgICAgcGVuZGluZ1F1ZXVlID0gYnVmZmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGV4ZWN1dGVRdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2JzID0gcGVuZGluZ1F1ZXVlO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdRdWV1ZSA9IFtdO1xuICAgICAgICAgICAgICAgIGNicy5mb3JFYWNoKGNiKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgY3ljbGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGV4ZWN1dGVRdWV1ZSk7IH07XG4gICAgICAgICAgICBjeWNsZSgpO1xuICAgICAgICAgICAgYnVmZmVyID0ge1xuICAgICAgICAgICAgICAgIHB1c2g6IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdRdWV1ZS5wdXNoKHgpO1xuICAgICAgICAgICAgICAgICAgICBjeWNsZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdRdWV1ZSA9IHBlbmRpbmdRdWV1ZS5maWx0ZXIoZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBtZWRpdW07XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVkaXVtKGRlZmF1bHRzLCBtaWRkbGV3YXJlKSB7XG4gICAgaWYgKG1pZGRsZXdhcmUgPT09IHZvaWQgMCkgeyBtaWRkbGV3YXJlID0gSXRvSTsgfVxuICAgIHJldHVybiBpbm5lckNyZWF0ZU1lZGl1bShkZWZhdWx0cywgbWlkZGxld2FyZSk7XG59XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpZGVjYXJNZWRpdW0ob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIG1lZGl1bSA9IGlubmVyQ3JlYXRlTWVkaXVtKG51bGwpO1xuICAgIG1lZGl1bS5vcHRpb25zID0gX19hc3NpZ24oeyBhc3luYzogdHJ1ZSwgc3NyOiBmYWxzZSB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gbWVkaXVtO1xufVxuIiwiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xudmFyIFNpZGVDYXIgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgc2lkZUNhciA9IF9hLnNpZGVDYXIsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInNpZGVDYXJcIl0pO1xuICAgIGlmICghc2lkZUNhcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpZGVjYXI6IHBsZWFzZSBwcm92aWRlIGBzaWRlQ2FyYCBwcm9wZXJ0eSB0byBpbXBvcnQgdGhlIHJpZ2h0IGNhcicpO1xuICAgIH1cbiAgICB2YXIgVGFyZ2V0ID0gc2lkZUNhci5yZWFkKCk7XG4gICAgaWYgKCFUYXJnZXQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWRlY2FyIG1lZGl1bSBub3QgZm91bmQnKTtcbiAgICB9XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFyZ2V0LCBfX2Fzc2lnbih7fSwgcmVzdCkpO1xufTtcblNpZGVDYXIuaXNTaWRlQ2FyRXhwb3J0ID0gdHJ1ZTtcbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRTaWRlY2FyKG1lZGl1bSwgZXhwb3J0ZWQpIHtcbiAgICBtZWRpdW0udXNlTWVkaXVtKGV4cG9ydGVkKTtcbiAgICByZXR1cm4gU2lkZUNhcjtcbn1cbiIsImltcG9ydCB7IGNyZWF0ZVNpZGVjYXJNZWRpdW0gfSBmcm9tICd1c2Utc2lkZWNhcic7XG5leHBvcnQgdmFyIGVmZmVjdENhciA9IGNyZWF0ZVNpZGVjYXJNZWRpdW0oKTtcbiIsImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGZ1bGxXaWR0aENsYXNzTmFtZSwgemVyb1JpZ2h0Q2xhc3NOYW1lIH0gZnJvbSAncmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvY29uc3RhbnRzJztcbmltcG9ydCB7IHVzZU1lcmdlUmVmcyB9IGZyb20gJ3VzZS1jYWxsYmFjay1yZWYnO1xuaW1wb3J0IHsgZWZmZWN0Q2FyIH0gZnJvbSAnLi9tZWRpdW0nO1xudmFyIG5vdGhpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuO1xufTtcbi8qKlxuICogUmVtb3ZlcyBzY3JvbGxiYXIgZnJvbSB0aGUgcGFnZSBhbmQgY29udGFpbiB0aGUgc2Nyb2xsIHdpdGhpbiB0aGUgTG9ja1xuICovXG52YXIgUmVtb3ZlU2Nyb2xsID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHBhcmVudFJlZikge1xuICAgIHZhciByZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoe1xuICAgICAgICBvblNjcm9sbENhcHR1cmU6IG5vdGhpbmcsXG4gICAgICAgIG9uV2hlZWxDYXB0dXJlOiBub3RoaW5nLFxuICAgICAgICBvblRvdWNoTW92ZUNhcHR1cmU6IG5vdGhpbmcsXG4gICAgfSksIGNhbGxiYWNrcyA9IF9hWzBdLCBzZXRDYWxsYmFja3MgPSBfYVsxXTtcbiAgICB2YXIgZm9yd2FyZFByb3BzID0gcHJvcHMuZm9yd2FyZFByb3BzLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHJlbW92ZVNjcm9sbEJhciA9IHByb3BzLnJlbW92ZVNjcm9sbEJhciwgZW5hYmxlZCA9IHByb3BzLmVuYWJsZWQsIHNoYXJkcyA9IHByb3BzLnNoYXJkcywgc2lkZUNhciA9IHByb3BzLnNpZGVDYXIsIG5vSXNvbGF0aW9uID0gcHJvcHMubm9Jc29sYXRpb24sIGluZXJ0ID0gcHJvcHMuaW5lcnQsIGFsbG93UGluY2hab29tID0gcHJvcHMuYWxsb3dQaW5jaFpvb20sIF9iID0gcHJvcHMuYXMsIENvbnRhaW5lciA9IF9iID09PSB2b2lkIDAgPyAnZGl2JyA6IF9iLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJmb3J3YXJkUHJvcHNcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcInJlbW92ZVNjcm9sbEJhclwiLCBcImVuYWJsZWRcIiwgXCJzaGFyZHNcIiwgXCJzaWRlQ2FyXCIsIFwibm9Jc29sYXRpb25cIiwgXCJpbmVydFwiLCBcImFsbG93UGluY2hab29tXCIsIFwiYXNcIl0pO1xuICAgIHZhciBTaWRlQ2FyID0gc2lkZUNhcjtcbiAgICB2YXIgY29udGFpbmVyUmVmID0gdXNlTWVyZ2VSZWZzKFtyZWYsIHBhcmVudFJlZl0pO1xuICAgIHZhciBjb250YWluZXJQcm9wcyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN0KSwgY2FsbGJhY2tzKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIGVuYWJsZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2lkZUNhciwgeyBzaWRlQ2FyOiBlZmZlY3RDYXIsIHJlbW92ZVNjcm9sbEJhcjogcmVtb3ZlU2Nyb2xsQmFyLCBzaGFyZHM6IHNoYXJkcywgbm9Jc29sYXRpb246IG5vSXNvbGF0aW9uLCBpbmVydDogaW5lcnQsIHNldENhbGxiYWNrczogc2V0Q2FsbGJhY2tzLCBhbGxvd1BpbmNoWm9vbTogISFhbGxvd1BpbmNoWm9vbSwgbG9ja1JlZjogcmVmIH0pKSxcbiAgICAgICAgZm9yd2FyZFByb3BzID8gKFJlYWN0LmNsb25lRWxlbWVudChSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKSwgX19hc3NpZ24oX19hc3NpZ24oe30sIGNvbnRhaW5lclByb3BzKSwgeyByZWY6IGNvbnRhaW5lclJlZiB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGFpbmVyLCBfX2Fzc2lnbih7fSwgY29udGFpbmVyUHJvcHMsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIHJlZjogY29udGFpbmVyUmVmIH0pLCBjaGlsZHJlbikpKSk7XG59KTtcblJlbW92ZVNjcm9sbC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICByZW1vdmVTY3JvbGxCYXI6IHRydWUsXG4gICAgaW5lcnQ6IGZhbHNlLFxufTtcblJlbW92ZVNjcm9sbC5jbGFzc05hbWVzID0ge1xuICAgIGZ1bGxXaWR0aDogZnVsbFdpZHRoQ2xhc3NOYW1lLFxuICAgIHplcm9SaWdodDogemVyb1JpZ2h0Q2xhc3NOYW1lLFxufTtcbmV4cG9ydCB7IFJlbW92ZVNjcm9sbCB9O1xuIiwiaW1wb3J0IHsgZ2V0Tm9uY2UgfSBmcm9tICdnZXQtbm9uY2UnO1xuZnVuY3Rpb24gbWFrZVN0eWxlVGFnKCkge1xuICAgIGlmICghZG9jdW1lbnQpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIHZhciB0YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHRhZy50eXBlID0gJ3RleHQvY3NzJztcbiAgICB2YXIgbm9uY2UgPSBnZXROb25jZSgpO1xuICAgIGlmIChub25jZSkge1xuICAgICAgICB0YWcuc2V0QXR0cmlidXRlKCdub25jZScsIG5vbmNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhZztcbn1cbmZ1bmN0aW9uIGluamVjdFN0eWxlcyh0YWcsIGNzcykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGFnLnN0eWxlU2hlZXQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0YWcuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGluc2VydFN0eWxlVGFnKHRhZykge1xuICAgIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQodGFnKTtcbn1cbmV4cG9ydCB2YXIgc3R5bGVzaGVldFNpbmdsZXRvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY291bnRlciA9IDA7XG4gICAgdmFyIHN0eWxlc2hlZXQgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFkZDogZnVuY3Rpb24gKHN0eWxlKSB7XG4gICAgICAgICAgICBpZiAoY291bnRlciA9PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKChzdHlsZXNoZWV0ID0gbWFrZVN0eWxlVGFnKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGluamVjdFN0eWxlcyhzdHlsZXNoZWV0LCBzdHlsZSk7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydFN0eWxlVGFnKHN0eWxlc2hlZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjb3VudGVyLS07XG4gICAgICAgICAgICBpZiAoIWNvdW50ZXIgJiYgc3R5bGVzaGVldCkge1xuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQucGFyZW50Tm9kZSAmJiBzdHlsZXNoZWV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVzaGVldCk7XG4gICAgICAgICAgICAgICAgc3R5bGVzaGVldCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfTtcbn07XG4iLCJ2YXIgY3VycmVudE5vbmNlO1xuZXhwb3J0IHZhciBzZXROb25jZSA9IGZ1bmN0aW9uIChub25jZSkge1xuICAgIGN1cnJlbnROb25jZSA9IG5vbmNlO1xufTtcbmV4cG9ydCB2YXIgZ2V0Tm9uY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGN1cnJlbnROb25jZSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vbmNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gX193ZWJwYWNrX25vbmNlX187XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuIiwiaW1wb3J0IHsgc3R5bGVIb29rU2luZ2xldG9uIH0gZnJvbSAnLi9ob29rJztcbi8qKlxuICogY3JlYXRlIGEgQ29tcG9uZW50IHRvIGFkZCBzdHlsZXMgb24gZGVtYW5kXG4gKiAtIHN0eWxlcyBhcmUgYWRkZWQgd2hlbiBmaXJzdCBpbnN0YW5jZSBpcyBtb3VudGVkXG4gKiAtIHN0eWxlcyBhcmUgcmVtb3ZlZCB3aGVuIHRoZSBsYXN0IGluc3RhbmNlIGlzIHVubW91bnRlZFxuICogLSBjaGFuZ2luZyBzdHlsZXMgaW4gcnVudGltZSBkb2VzIG5vdGhpbmcgdW5sZXNzIGR5bmFtaWMgaXMgc2V0LiBCdXQgd2l0aCBtdWx0aXBsZSBjb21wb25lbnRzIHRoYXQgY2FuIGxlYWQgdG8gdGhlIHVuZGVmaW5lZCBiZWhhdmlvclxuICovXG5leHBvcnQgdmFyIHN0eWxlU2luZ2xldG9uID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB1c2VTdHlsZSA9IHN0eWxlSG9va1NpbmdsZXRvbigpO1xuICAgIHZhciBTaGVldCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgc3R5bGVzID0gX2Euc3R5bGVzLCBkeW5hbWljID0gX2EuZHluYW1pYztcbiAgICAgICAgdXNlU3R5bGUoc3R5bGVzLCBkeW5hbWljKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gU2hlZXQ7XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc3R5bGVzaGVldFNpbmdsZXRvbiB9IGZyb20gJy4vc2luZ2xldG9uJztcbi8qKlxuICogY3JlYXRlcyBhIGhvb2sgdG8gY29udHJvbCBzdHlsZSBzaW5nbGV0b25cbiAqIEBzZWUge0BsaW5rIHN0eWxlU2luZ2xldG9ufSBmb3IgYSBzYWZlciBjb21wb25lbnQgdmVyc2lvblxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgdXNlU3R5bGUgPSBzdHlsZUhvb2tTaW5nbGV0b24oKTtcbiAqIC8vL1xuICogdXNlU3R5bGUoJ2JvZHkgeyBvdmVyZmxvdzogaGlkZGVufScpO1xuICovXG5leHBvcnQgdmFyIHN0eWxlSG9va1NpbmdsZXRvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXQgPSBzdHlsZXNoZWV0U2luZ2xldG9uKCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzdHlsZXMsIGlzRHluYW1pYykge1xuICAgICAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hlZXQuYWRkKHN0eWxlcyk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNoZWV0LnJlbW92ZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgW3N0eWxlcyAmJiBpc0R5bmFtaWNdKTtcbiAgICB9O1xufTtcbiIsImV4cG9ydCB2YXIgemVyb0dhcCA9IHtcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBnYXA6IDAsXG59O1xudmFyIHBhcnNlID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHBhcnNlSW50KHggfHwgJycsIDEwKSB8fCAwOyB9O1xudmFyIGdldE9mZnNldCA9IGZ1bmN0aW9uIChnYXBNb2RlKSB7XG4gICAgdmFyIGNzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSk7XG4gICAgdmFyIGxlZnQgPSBjc1tnYXBNb2RlID09PSAncGFkZGluZycgPyAncGFkZGluZ0xlZnQnIDogJ21hcmdpbkxlZnQnXTtcbiAgICB2YXIgdG9wID0gY3NbZ2FwTW9kZSA9PT0gJ3BhZGRpbmcnID8gJ3BhZGRpbmdUb3AnIDogJ21hcmdpblRvcCddO1xuICAgIHZhciByaWdodCA9IGNzW2dhcE1vZGUgPT09ICdwYWRkaW5nJyA/ICdwYWRkaW5nUmlnaHQnIDogJ21hcmdpblJpZ2h0J107XG4gICAgcmV0dXJuIFtwYXJzZShsZWZ0KSwgcGFyc2UodG9wKSwgcGFyc2UocmlnaHQpXTtcbn07XG5leHBvcnQgdmFyIGdldEdhcFdpZHRoID0gZnVuY3Rpb24gKGdhcE1vZGUpIHtcbiAgICBpZiAoZ2FwTW9kZSA9PT0gdm9pZCAwKSB7IGdhcE1vZGUgPSAnbWFyZ2luJzsgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gemVyb0dhcDtcbiAgICB9XG4gICAgdmFyIG9mZnNldHMgPSBnZXRPZmZzZXQoZ2FwTW9kZSk7XG4gICAgdmFyIGRvY3VtZW50V2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgdmFyIHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogb2Zmc2V0c1swXSxcbiAgICAgICAgdG9wOiBvZmZzZXRzWzFdLFxuICAgICAgICByaWdodDogb2Zmc2V0c1syXSxcbiAgICAgICAgZ2FwOiBNYXRoLm1heCgwLCB3aW5kb3dXaWR0aCAtIGRvY3VtZW50V2lkdGggKyBvZmZzZXRzWzJdIC0gb2Zmc2V0c1swXSksXG4gICAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzdHlsZVNpbmdsZXRvbiB9IGZyb20gJ3JlYWN0LXN0eWxlLXNpbmdsZXRvbic7XG5pbXBvcnQgeyBmdWxsV2lkdGhDbGFzc05hbWUsIHplcm9SaWdodENsYXNzTmFtZSwgbm9TY3JvbGxiYXJzQ2xhc3NOYW1lLCByZW1vdmVkQmFyU2l6ZVZhcmlhYmxlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0R2FwV2lkdGggfSBmcm9tICcuL3V0aWxzJztcbnZhciBTdHlsZSA9IHN0eWxlU2luZ2xldG9uKCk7XG4vLyBpbXBvcnRhbnQgdGlwIC0gb25jZSB3ZSBtZWFzdXJlIHNjcm9sbEJhciB3aWR0aCBhbmQgcmVtb3ZlIHRoZW1cbi8vIHdlIGNvdWxkIG5vdCByZXBlYXQgdGhpcyBvcGVyYXRpb25cbi8vIHRodXMgd2UgYXJlIHVzaW5nIHN0eWxlLXNpbmdsZXRvbiAtIG9ubHkgdGhlIGZpcnN0IFwieWV0IGNvcnJlY3RcIiBzdHlsZSB3aWxsIGJlIGFwcGxpZWQuXG52YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24gKF9hLCBhbGxvd1JlbGF0aXZlLCBnYXBNb2RlLCBpbXBvcnRhbnQpIHtcbiAgICB2YXIgbGVmdCA9IF9hLmxlZnQsIHRvcCA9IF9hLnRvcCwgcmlnaHQgPSBfYS5yaWdodCwgZ2FwID0gX2EuZ2FwO1xuICAgIGlmIChnYXBNb2RlID09PSB2b2lkIDApIHsgZ2FwTW9kZSA9ICdtYXJnaW4nOyB9XG4gICAgcmV0dXJuIFwiXFxuICAuXCIuY29uY2F0KG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSwgXCIge1xcbiAgIG92ZXJmbG93OiBoaWRkZW4gXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgIHBhZGRpbmctcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gIH1cXG4gIGJvZHkge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuIFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcXG4gICAgXCIpLmNvbmNhdChbXG4gICAgICAgIGFsbG93UmVsYXRpdmUgJiYgXCJwb3NpdGlvbjogcmVsYXRpdmUgXCIuY29uY2F0KGltcG9ydGFudCwgXCI7XCIpLFxuICAgICAgICBnYXBNb2RlID09PSAnbWFyZ2luJyAmJlxuICAgICAgICAgICAgXCJcXG4gICAgcGFkZGluZy1sZWZ0OiBcIi5jb25jYXQobGVmdCwgXCJweDtcXG4gICAgcGFkZGluZy10b3A6IFwiKS5jb25jYXQodG9wLCBcInB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiBcIikuY29uY2F0KHJpZ2h0LCBcInB4O1xcbiAgICBtYXJnaW4tbGVmdDowO1xcbiAgICBtYXJnaW4tdG9wOjA7XFxuICAgIG1hcmdpbi1yaWdodDogXCIpLmNvbmNhdChnYXAsIFwicHggXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgICBcIiksXG4gICAgICAgIGdhcE1vZGUgPT09ICdwYWRkaW5nJyAmJiBcInBhZGRpbmctcmlnaHQ6IFwiLmNvbmNhdChnYXAsIFwicHggXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1wiKSxcbiAgICBdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJycpLCBcIlxcbiAgfVxcbiAgXFxuICAuXCIpLmNvbmNhdCh6ZXJvUmlnaHRDbGFzc05hbWUsIFwiIHtcXG4gICAgcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gIH1cXG4gIFxcbiAgLlwiKS5jb25jYXQoZnVsbFdpZHRoQ2xhc3NOYW1lLCBcIiB7XFxuICAgIG1hcmdpbi1yaWdodDogXCIpLmNvbmNhdChnYXAsIFwicHggXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgfVxcbiAgXFxuICAuXCIpLmNvbmNhdCh6ZXJvUmlnaHRDbGFzc05hbWUsIFwiIC5cIikuY29uY2F0KHplcm9SaWdodENsYXNzTmFtZSwgXCIge1xcbiAgICByaWdodDogMCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBcXG4gIC5cIikuY29uY2F0KGZ1bGxXaWR0aENsYXNzTmFtZSwgXCIgLlwiKS5jb25jYXQoZnVsbFdpZHRoQ2xhc3NOYW1lLCBcIiB7XFxuICAgIG1hcmdpbi1yaWdodDogMCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBcXG4gIGJvZHkge1xcbiAgICBcIikuY29uY2F0KHJlbW92ZWRCYXJTaXplVmFyaWFibGUsIFwiOiBcIikuY29uY2F0KGdhcCwgXCJweDtcXG4gIH1cXG5cIik7XG59O1xuLyoqXG4gKiBSZW1vdmVzIHBhZ2Ugc2Nyb2xsYmFyIGFuZCBibG9ja3MgcGFnZSBzY3JvbGwgd2hlbiBtb3VudGVkXG4gKi9cbmV4cG9ydCB2YXIgUmVtb3ZlU2Nyb2xsQmFyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG5vUmVsYXRpdmUgPSBwcm9wcy5ub1JlbGF0aXZlLCBub0ltcG9ydGFudCA9IHByb3BzLm5vSW1wb3J0YW50LCBfYSA9IHByb3BzLmdhcE1vZGUsIGdhcE1vZGUgPSBfYSA9PT0gdm9pZCAwID8gJ21hcmdpbicgOiBfYTtcbiAgICAvKlxuICAgICBnYXAgd2lsbCBiZSBtZWFzdXJlZCBvbiBldmVyeSBjb21wb25lbnQgbW91bnRcbiAgICAgaG93ZXZlciBpdCB3aWxsIGJlIHVzZWQgb25seSBieSB0aGUgXCJmaXJzdFwiIGludm9jYXRpb25cbiAgICAgZHVlIHRvIHNpbmdsZXRvbiBuYXR1cmUgb2YgPFN0eWxlXG4gICAgICovXG4gICAgdmFyIGdhcCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0R2FwV2lkdGgoZ2FwTW9kZSk7IH0sIFtnYXBNb2RlXSk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGUsIHsgc3R5bGVzOiBnZXRTdHlsZXMoZ2FwLCAhbm9SZWxhdGl2ZSwgZ2FwTW9kZSwgIW5vSW1wb3J0YW50ID8gJyFpbXBvcnRhbnQnIDogJycpIH0pO1xufTtcbiIsInZhciBwYXNzaXZlU3VwcG9ydGVkID0gZmFsc2U7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3Bhc3NpdmUnLCB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBwYXNzaXZlU3VwcG9ydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0Jywgb3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCBvcHRpb25zLCBvcHRpb25zKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBwYXNzaXZlU3VwcG9ydGVkID0gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0IHZhciBub25QYXNzaXZlID0gcGFzc2l2ZVN1cHBvcnRlZCA/IHsgcGFzc2l2ZTogZmFsc2UgfSA6IGZhbHNlO1xuIiwidmFyIGFsd2F5c0NvbnRhaW5zU2Nyb2xsID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAvLyB0ZXh0YXJlYSB3aWxsIGFsd2F5cyBfY29udGFpbl8gc2Nyb2xsIGluc2lkZSBzZWxmLiBJdCBvbmx5IGNhbiBiZSBoaWRkZW5cbiAgICByZXR1cm4gbm9kZS50YWdOYW1lID09PSAnVEVYVEFSRUEnO1xufTtcbnZhciBlbGVtZW50Q2FuQmVTY3JvbGxlZCA9IGZ1bmN0aW9uIChub2RlLCBvdmVyZmxvdykge1xuICAgIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICByZXR1cm4gKFxuICAgIC8vIG5vdC1ub3Qtc2Nyb2xsYWJsZVxuICAgIHN0eWxlc1tvdmVyZmxvd10gIT09ICdoaWRkZW4nICYmXG4gICAgICAgIC8vIGNvbnRhaW5zIHNjcm9sbCBpbnNpZGUgc2VsZlxuICAgICAgICAhKHN0eWxlcy5vdmVyZmxvd1kgPT09IHN0eWxlcy5vdmVyZmxvd1ggJiYgIWFsd2F5c0NvbnRhaW5zU2Nyb2xsKG5vZGUpICYmIHN0eWxlc1tvdmVyZmxvd10gPT09ICd2aXNpYmxlJykpO1xufTtcbnZhciBlbGVtZW50Q291bGRCZVZTY3JvbGxlZCA9IGZ1bmN0aW9uIChub2RlKSB7IHJldHVybiBlbGVtZW50Q2FuQmVTY3JvbGxlZChub2RlLCAnb3ZlcmZsb3dZJyk7IH07XG52YXIgZWxlbWVudENvdWxkQmVIU2Nyb2xsZWQgPSBmdW5jdGlvbiAobm9kZSkgeyByZXR1cm4gZWxlbWVudENhbkJlU2Nyb2xsZWQobm9kZSwgJ292ZXJmbG93WCcpOyB9O1xuZXhwb3J0IHZhciBsb2NhdGlvbkNvdWxkQmVTY3JvbGxlZCA9IGZ1bmN0aW9uIChheGlzLCBub2RlKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBub2RlO1xuICAgIGRvIHtcbiAgICAgICAgLy8gU2tpcCBvdmVyIHNoYWRvdyByb290XG4gICAgICAgIGlmICh0eXBlb2YgU2hhZG93Um9vdCAhPT0gJ3VuZGVmaW5lZCcgJiYgY3VycmVudCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lmhvc3Q7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlzU2Nyb2xsYWJsZSA9IGVsZW1lbnRDb3VsZEJlU2Nyb2xsZWQoYXhpcywgY3VycmVudCk7XG4gICAgICAgIGlmIChpc1Njcm9sbGFibGUpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IGdldFNjcm9sbFZhcmlhYmxlcyhheGlzLCBjdXJyZW50KSwgcyA9IF9hWzFdLCBkID0gX2FbMl07XG4gICAgICAgICAgICBpZiAocyA+IGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnROb2RlO1xuICAgIH0gd2hpbGUgKGN1cnJlbnQgJiYgY3VycmVudCAhPT0gZG9jdW1lbnQuYm9keSk7XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcbnZhciBnZXRWU2Nyb2xsVmFyaWFibGVzID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNjcm9sbFRvcCA9IF9hLnNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0ID0gX2Euc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgPSBfYS5jbGllbnRIZWlnaHQ7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2Nyb2xsVG9wLFxuICAgICAgICBzY3JvbGxIZWlnaHQsXG4gICAgICAgIGNsaWVudEhlaWdodCxcbiAgICBdO1xufTtcbnZhciBnZXRIU2Nyb2xsVmFyaWFibGVzID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNjcm9sbExlZnQgPSBfYS5zY3JvbGxMZWZ0LCBzY3JvbGxXaWR0aCA9IF9hLnNjcm9sbFdpZHRoLCBjbGllbnRXaWR0aCA9IF9hLmNsaWVudFdpZHRoO1xuICAgIHJldHVybiBbXG4gICAgICAgIHNjcm9sbExlZnQsXG4gICAgICAgIHNjcm9sbFdpZHRoLFxuICAgICAgICBjbGllbnRXaWR0aCxcbiAgICBdO1xufTtcbnZhciBlbGVtZW50Q291bGRCZVNjcm9sbGVkID0gZnVuY3Rpb24gKGF4aXMsIG5vZGUpIHtcbiAgICByZXR1cm4gYXhpcyA9PT0gJ3YnID8gZWxlbWVudENvdWxkQmVWU2Nyb2xsZWQobm9kZSkgOiBlbGVtZW50Q291bGRCZUhTY3JvbGxlZChub2RlKTtcbn07XG52YXIgZ2V0U2Nyb2xsVmFyaWFibGVzID0gZnVuY3Rpb24gKGF4aXMsIG5vZGUpIHtcbiAgICByZXR1cm4gYXhpcyA9PT0gJ3YnID8gZ2V0VlNjcm9sbFZhcmlhYmxlcyhub2RlKSA6IGdldEhTY3JvbGxWYXJpYWJsZXMobm9kZSk7XG59O1xudmFyIGdldERpcmVjdGlvbkZhY3RvciA9IGZ1bmN0aW9uIChheGlzLCBkaXJlY3Rpb24pIHtcbiAgICAvKipcbiAgICAgKiBJZiB0aGUgZWxlbWVudCdzIGRpcmVjdGlvbiBpcyBydGwgKHJpZ2h0LXRvLWxlZnQpLCB0aGVuIHNjcm9sbExlZnQgaXMgMCB3aGVuIHRoZSBzY3JvbGxiYXIgaXMgYXQgaXRzIHJpZ2h0bW9zdCBwb3NpdGlvbixcbiAgICAgKiBhbmQgdGhlbiBpbmNyZWFzaW5nbHkgbmVnYXRpdmUgYXMgeW91IHNjcm9sbCB0b3dhcmRzIHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQuXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9zY3JvbGxMZWZ0XG4gICAgICovXG4gICAgcmV0dXJuIGF4aXMgPT09ICdoJyAmJiBkaXJlY3Rpb24gPT09ICdydGwnID8gLTEgOiAxO1xufTtcbmV4cG9ydCB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKGF4aXMsIGVuZFRhcmdldCwgZXZlbnQsIHNvdXJjZURlbHRhLCBub092ZXJzY3JvbGwpIHtcbiAgICB2YXIgZGlyZWN0aW9uRmFjdG9yID0gZ2V0RGlyZWN0aW9uRmFjdG9yKGF4aXMsIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVuZFRhcmdldCkuZGlyZWN0aW9uKTtcbiAgICB2YXIgZGVsdGEgPSBkaXJlY3Rpb25GYWN0b3IgKiBzb3VyY2VEZWx0YTtcbiAgICAvLyBmaW5kIHNjcm9sbGFibGUgdGFyZ2V0XG4gICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICB2YXIgdGFyZ2V0SW5Mb2NrID0gZW5kVGFyZ2V0LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgdmFyIHNob3VsZENhbmNlbFNjcm9sbCA9IGZhbHNlO1xuICAgIHZhciBpc0RlbHRhUG9zaXRpdmUgPSBkZWx0YSA+IDA7XG4gICAgdmFyIGF2YWlsYWJsZVNjcm9sbCA9IDA7XG4gICAgdmFyIGF2YWlsYWJsZVNjcm9sbFRvcCA9IDA7XG4gICAgZG8ge1xuICAgICAgICB2YXIgX2EgPSBnZXRTY3JvbGxWYXJpYWJsZXMoYXhpcywgdGFyZ2V0KSwgcG9zaXRpb24gPSBfYVswXSwgc2Nyb2xsXzEgPSBfYVsxXSwgY2FwYWNpdHkgPSBfYVsyXTtcbiAgICAgICAgdmFyIGVsZW1lbnRTY3JvbGwgPSBzY3JvbGxfMSAtIGNhcGFjaXR5IC0gZGlyZWN0aW9uRmFjdG9yICogcG9zaXRpb247XG4gICAgICAgIGlmIChwb3NpdGlvbiB8fCBlbGVtZW50U2Nyb2xsKSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudENvdWxkQmVTY3JvbGxlZChheGlzLCB0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlU2Nyb2xsICs9IGVsZW1lbnRTY3JvbGw7XG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlU2Nyb2xsVG9wICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlO1xuICAgIH0gd2hpbGUgKFxuICAgIC8vIHBvcnRhbGVkIGNvbnRlbnRcbiAgICAoIXRhcmdldEluTG9jayAmJiB0YXJnZXQgIT09IGRvY3VtZW50LmJvZHkpIHx8XG4gICAgICAgIC8vIHNlbGYgY29udGVudFxuICAgICAgICAodGFyZ2V0SW5Mb2NrICYmIChlbmRUYXJnZXQuY29udGFpbnModGFyZ2V0KSB8fCBlbmRUYXJnZXQgPT09IHRhcmdldCkpKTtcbiAgICBpZiAoaXNEZWx0YVBvc2l0aXZlICYmICgobm9PdmVyc2Nyb2xsICYmIGF2YWlsYWJsZVNjcm9sbCA9PT0gMCkgfHwgKCFub092ZXJzY3JvbGwgJiYgZGVsdGEgPiBhdmFpbGFibGVTY3JvbGwpKSkge1xuICAgICAgICBzaG91bGRDYW5jZWxTY3JvbGwgPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIGlmICghaXNEZWx0YVBvc2l0aXZlICYmXG4gICAgICAgICgobm9PdmVyc2Nyb2xsICYmIGF2YWlsYWJsZVNjcm9sbFRvcCA9PT0gMCkgfHwgKCFub092ZXJzY3JvbGwgJiYgLWRlbHRhID4gYXZhaWxhYmxlU2Nyb2xsVG9wKSkpIHtcbiAgICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHNob3VsZENhbmNlbFNjcm9sbDtcbn07XG4iLCJpbXBvcnQgeyBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZW1vdmVTY3JvbGxCYXIgfSBmcm9tICdyZWFjdC1yZW1vdmUtc2Nyb2xsLWJhcic7XG5pbXBvcnQgeyBzdHlsZVNpbmdsZXRvbiB9IGZyb20gJ3JlYWN0LXN0eWxlLXNpbmdsZXRvbic7XG5pbXBvcnQgeyBub25QYXNzaXZlIH0gZnJvbSAnLi9hZ2dyZXNpdmVDYXB0dXJlJztcbmltcG9ydCB7IGhhbmRsZVNjcm9sbCwgbG9jYXRpb25Db3VsZEJlU2Nyb2xsZWQgfSBmcm9tICcuL2hhbmRsZVNjcm9sbCc7XG5leHBvcnQgdmFyIGdldFRvdWNoWFkgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2NoYW5nZWRUb3VjaGVzJyBpbiBldmVudCA/IFtldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYLCBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZXSA6IFswLCAwXTtcbn07XG5leHBvcnQgdmFyIGdldERlbHRhWFkgPSBmdW5jdGlvbiAoZXZlbnQpIHsgcmV0dXJuIFtldmVudC5kZWx0YVgsIGV2ZW50LmRlbHRhWV07IH07XG52YXIgZXh0cmFjdFJlZiA9IGZ1bmN0aW9uIChyZWYpIHtcbiAgICByZXR1cm4gcmVmICYmICdjdXJyZW50JyBpbiByZWYgPyByZWYuY3VycmVudCA6IHJlZjtcbn07XG52YXIgZGVsdGFDb21wYXJlID0gZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHhbMF0gPT09IHlbMF0gJiYgeFsxXSA9PT0geVsxXTsgfTtcbnZhciBnZW5lcmF0ZVN0eWxlID0gZnVuY3Rpb24gKGlkKSB7IHJldHVybiBcIlxcbiAgLmJsb2NrLWludGVyYWN0aXZpdHktXCIuY29uY2F0KGlkLCBcIiB7cG9pbnRlci1ldmVudHM6IG5vbmU7fVxcbiAgLmFsbG93LWludGVyYWN0aXZpdHktXCIpLmNvbmNhdChpZCwgXCIge3BvaW50ZXItZXZlbnRzOiBhbGw7fVxcblwiKTsgfTtcbnZhciBpZENvdW50ZXIgPSAwO1xudmFyIGxvY2tTdGFjayA9IFtdO1xuZXhwb3J0IGZ1bmN0aW9uIFJlbW92ZVNjcm9sbFNpZGVDYXIocHJvcHMpIHtcbiAgICB2YXIgc2hvdWxkUHJldmVudFF1ZXVlID0gUmVhY3QudXNlUmVmKFtdKTtcbiAgICB2YXIgdG91Y2hTdGFydFJlZiA9IFJlYWN0LnVzZVJlZihbMCwgMF0pO1xuICAgIHZhciBhY3RpdmVBeGlzID0gUmVhY3QudXNlUmVmKCk7XG4gICAgdmFyIGlkID0gUmVhY3QudXNlU3RhdGUoaWRDb3VudGVyKyspWzBdO1xuICAgIHZhciBTdHlsZSA9IFJlYWN0LnVzZVN0YXRlKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0eWxlU2luZ2xldG9uKCk7IH0pWzBdO1xuICAgIHZhciBsYXN0UHJvcHMgPSBSZWFjdC51c2VSZWYocHJvcHMpO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxhc3RQcm9wcy5jdXJyZW50ID0gcHJvcHM7XG4gICAgfSwgW3Byb3BzXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHByb3BzLmluZXJ0KSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJibG9jay1pbnRlcmFjdGl2aXR5LVwiLmNvbmNhdChpZCkpO1xuICAgICAgICAgICAgdmFyIGFsbG93XzEgPSBfX3NwcmVhZEFycmF5KFtwcm9wcy5sb2NrUmVmLmN1cnJlbnRdLCAocHJvcHMuc2hhcmRzIHx8IFtdKS5tYXAoZXh0cmFjdFJlZiksIHRydWUpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICAgIGFsbG93XzEuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmNsYXNzTGlzdC5hZGQoXCJhbGxvdy1pbnRlcmFjdGl2aXR5LVwiLmNvbmNhdChpZCkpOyB9KTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiYmxvY2staW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTtcbiAgICAgICAgICAgICAgICBhbGxvd18xLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5jbGFzc0xpc3QucmVtb3ZlKFwiYWxsb3ctaW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTsgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9LCBbcHJvcHMuaW5lcnQsIHByb3BzLmxvY2tSZWYuY3VycmVudCwgcHJvcHMuc2hhcmRzXSk7XG4gICAgdmFyIHNob3VsZENhbmNlbEV2ZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50LCBwYXJlbnQpIHtcbiAgICAgICAgaWYgKCd0b3VjaGVzJyBpbiBldmVudCAmJiBldmVudC50b3VjaGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgcmV0dXJuICFsYXN0UHJvcHMuY3VycmVudC5hbGxvd1BpbmNoWm9vbTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG91Y2ggPSBnZXRUb3VjaFhZKGV2ZW50KTtcbiAgICAgICAgdmFyIHRvdWNoU3RhcnQgPSB0b3VjaFN0YXJ0UmVmLmN1cnJlbnQ7XG4gICAgICAgIHZhciBkZWx0YVggPSAnZGVsdGFYJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWCA6IHRvdWNoU3RhcnRbMF0gLSB0b3VjaFswXTtcbiAgICAgICAgdmFyIGRlbHRhWSA9ICdkZWx0YVknIGluIGV2ZW50ID8gZXZlbnQuZGVsdGFZIDogdG91Y2hTdGFydFsxXSAtIHRvdWNoWzFdO1xuICAgICAgICB2YXIgY3VycmVudEF4aXM7XG4gICAgICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIHZhciBtb3ZlRGlyZWN0aW9uID0gTWF0aC5hYnMoZGVsdGFYKSA+IE1hdGguYWJzKGRlbHRhWSkgPyAnaCcgOiAndic7XG4gICAgICAgIC8vIGFsbG93IGhvcml6b250YWwgdG91Y2ggbW92ZSBvbiBSYW5nZSBpbnB1dHMuIFRoZXkgd2lsbCBub3QgY2F1c2UgYW55IHNjcm9sbFxuICAgICAgICBpZiAoJ3RvdWNoZXMnIGluIGV2ZW50ICYmIG1vdmVEaXJlY3Rpb24gPT09ICdoJyAmJiB0YXJnZXQudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW5CZVNjcm9sbGVkSW5NYWluRGlyZWN0aW9uID0gbG9jYXRpb25Db3VsZEJlU2Nyb2xsZWQobW92ZURpcmVjdGlvbiwgdGFyZ2V0KTtcbiAgICAgICAgaWYgKCFjYW5CZVNjcm9sbGVkSW5NYWluRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbikge1xuICAgICAgICAgICAgY3VycmVudEF4aXMgPSBtb3ZlRGlyZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudEF4aXMgPSBtb3ZlRGlyZWN0aW9uID09PSAndicgPyAnaCcgOiAndic7XG4gICAgICAgICAgICBjYW5CZVNjcm9sbGVkSW5NYWluRGlyZWN0aW9uID0gbG9jYXRpb25Db3VsZEJlU2Nyb2xsZWQobW92ZURpcmVjdGlvbiwgdGFyZ2V0KTtcbiAgICAgICAgICAgIC8vIG90aGVyIGF4aXMgbWlnaHQgYmUgbm90IHNjcm9sbGFibGVcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFjdGl2ZUF4aXMuY3VycmVudCAmJiAnY2hhbmdlZFRvdWNoZXMnIGluIGV2ZW50ICYmIChkZWx0YVggfHwgZGVsdGFZKSkge1xuICAgICAgICAgICAgYWN0aXZlQXhpcy5jdXJyZW50ID0gY3VycmVudEF4aXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJyZW50QXhpcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNhbmNlbGluZ0F4aXMgPSBhY3RpdmVBeGlzLmN1cnJlbnQgfHwgY3VycmVudEF4aXM7XG4gICAgICAgIHJldHVybiBoYW5kbGVTY3JvbGwoY2FuY2VsaW5nQXhpcywgcGFyZW50LCBldmVudCwgY2FuY2VsaW5nQXhpcyA9PT0gJ2gnID8gZGVsdGFYIDogZGVsdGFZLCB0cnVlKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIHNob3VsZFByZXZlbnQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoX2V2ZW50KSB7XG4gICAgICAgIHZhciBldmVudCA9IF9ldmVudDtcbiAgICAgICAgaWYgKCFsb2NrU3RhY2subGVuZ3RoIHx8IGxvY2tTdGFja1tsb2NrU3RhY2subGVuZ3RoIC0gMV0gIT09IFN0eWxlKSB7XG4gICAgICAgICAgICAvLyBub3QgdGhlIGxhc3QgYWN0aXZlXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbHRhID0gJ2RlbHRhWScgaW4gZXZlbnQgPyBnZXREZWx0YVhZKGV2ZW50KSA6IGdldFRvdWNoWFkoZXZlbnQpO1xuICAgICAgICB2YXIgc291cmNlRXZlbnQgPSBzaG91bGRQcmV2ZW50UXVldWUuY3VycmVudC5maWx0ZXIoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUubmFtZSA9PT0gZXZlbnQudHlwZSAmJiBlLnRhcmdldCA9PT0gZXZlbnQudGFyZ2V0ICYmIGRlbHRhQ29tcGFyZShlLmRlbHRhLCBkZWx0YSk7IH0pWzBdO1xuICAgICAgICAvLyBzZWxmIGV2ZW50LCBhbmQgc2hvdWxkIGJlIGNhbmNlbGVkXG4gICAgICAgIGlmIChzb3VyY2VFdmVudCAmJiBzb3VyY2VFdmVudC5zaG91bGQpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBvdXRzaWRlIG9yIHNoYXJkIGV2ZW50XG4gICAgICAgIGlmICghc291cmNlRXZlbnQpIHtcbiAgICAgICAgICAgIHZhciBzaGFyZE5vZGVzID0gKGxhc3RQcm9wcy5jdXJyZW50LnNoYXJkcyB8fCBbXSlcbiAgICAgICAgICAgICAgICAubWFwKGV4dHJhY3RSZWYpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHsgcmV0dXJuIG5vZGUuY29udGFpbnMoZXZlbnQudGFyZ2V0KTsgfSk7XG4gICAgICAgICAgICB2YXIgc2hvdWxkU3RvcCA9IHNoYXJkTm9kZXMubGVuZ3RoID4gMCA/IHNob3VsZENhbmNlbEV2ZW50KGV2ZW50LCBzaGFyZE5vZGVzWzBdKSA6ICFsYXN0UHJvcHMuY3VycmVudC5ub0lzb2xhdGlvbjtcbiAgICAgICAgICAgIGlmIChzaG91bGRTdG9wKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmNhbmNlbGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgdmFyIHNob3VsZENhbmNlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChuYW1lLCBkZWx0YSwgdGFyZ2V0LCBzaG91bGQpIHtcbiAgICAgICAgdmFyIGV2ZW50ID0geyBuYW1lOiBuYW1lLCBkZWx0YTogZGVsdGEsIHRhcmdldDogdGFyZ2V0LCBzaG91bGQ6IHNob3VsZCB9O1xuICAgICAgICBzaG91bGRQcmV2ZW50UXVldWUuY3VycmVudC5wdXNoKGV2ZW50KTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG91bGRQcmV2ZW50UXVldWUuY3VycmVudCA9IHNob3VsZFByZXZlbnRRdWV1ZS5jdXJyZW50LmZpbHRlcihmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSAhPT0gZXZlbnQ7IH0pO1xuICAgICAgICB9LCAxKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIHNjcm9sbFRvdWNoU3RhcnQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdG91Y2hTdGFydFJlZi5jdXJyZW50ID0gZ2V0VG91Y2hYWShldmVudCk7XG4gICAgICAgIGFjdGl2ZUF4aXMuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICB9LCBbXSk7XG4gICAgdmFyIHNjcm9sbFdoZWVsID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHNob3VsZENhbmNlbChldmVudC50eXBlLCBnZXREZWx0YVhZKGV2ZW50KSwgZXZlbnQudGFyZ2V0LCBzaG91bGRDYW5jZWxFdmVudChldmVudCwgcHJvcHMubG9ja1JlZi5jdXJyZW50KSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBzY3JvbGxUb3VjaE1vdmUgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgc2hvdWxkQ2FuY2VsKGV2ZW50LnR5cGUsIGdldFRvdWNoWFkoZXZlbnQpLCBldmVudC50YXJnZXQsIHNob3VsZENhbmNlbEV2ZW50KGV2ZW50LCBwcm9wcy5sb2NrUmVmLmN1cnJlbnQpKTtcbiAgICB9LCBbXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbG9ja1N0YWNrLnB1c2goU3R5bGUpO1xuICAgICAgICBwcm9wcy5zZXRDYWxsYmFja3Moe1xuICAgICAgICAgICAgb25TY3JvbGxDYXB0dXJlOiBzY3JvbGxXaGVlbCxcbiAgICAgICAgICAgIG9uV2hlZWxDYXB0dXJlOiBzY3JvbGxXaGVlbCxcbiAgICAgICAgICAgIG9uVG91Y2hNb3ZlQ2FwdHVyZTogc2Nyb2xsVG91Y2hNb3ZlLFxuICAgICAgICB9KTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBzaG91bGRQcmV2ZW50LCBub25QYXNzaXZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBzY3JvbGxUb3VjaFN0YXJ0LCBub25QYXNzaXZlKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvY2tTdGFjayA9IGxvY2tTdGFjay5maWx0ZXIoZnVuY3Rpb24gKGluc3QpIHsgcmV0dXJuIGluc3QgIT09IFN0eWxlOyB9KTtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBzaG91bGRQcmV2ZW50LCBub25QYXNzaXZlKTtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBzY3JvbGxUb3VjaFN0YXJ0LCBub25QYXNzaXZlKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIHJlbW92ZVNjcm9sbEJhciA9IHByb3BzLnJlbW92ZVNjcm9sbEJhciwgaW5lcnQgPSBwcm9wcy5pbmVydDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIGluZXJ0ID8gUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZSwgeyBzdHlsZXM6IGdlbmVyYXRlU3R5bGUoaWQpIH0pIDogbnVsbCxcbiAgICAgICAgcmVtb3ZlU2Nyb2xsQmFyID8gUmVhY3QuY3JlYXRlRWxlbWVudChSZW1vdmVTY3JvbGxCYXIsIHsgZ2FwTW9kZTogXCJtYXJnaW5cIiB9KSA6IG51bGwpKTtcbn1cbiIsImltcG9ydCB7IGV4cG9ydFNpZGVjYXIgfSBmcm9tICd1c2Utc2lkZWNhcic7XG5pbXBvcnQgeyBSZW1vdmVTY3JvbGxTaWRlQ2FyIH0gZnJvbSAnLi9TaWRlRWZmZWN0JztcbmltcG9ydCB7IGVmZmVjdENhciB9IGZyb20gJy4vbWVkaXVtJztcbmV4cG9ydCBkZWZhdWx0IGV4cG9ydFNpZGVjYXIoZWZmZWN0Q2FyLCBSZW1vdmVTY3JvbGxTaWRlQ2FyKTtcbiIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZW1vdmVTY3JvbGwgfSBmcm9tICcuL1VJJztcbmltcG9ydCBTaWRlQ2FyIGZyb20gJy4vc2lkZWNhcic7XG52YXIgUmVhY3RSZW1vdmVTY3JvbGwgPSBSZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZW1vdmVTY3JvbGwsIF9fYXNzaWduKHt9LCBwcm9wcywgeyByZWY6IHJlZiwgc2lkZUNhcjogU2lkZUNhciB9KSkpOyB9KTtcblJlYWN0UmVtb3ZlU2Nyb2xsLmNsYXNzTmFtZXMgPSBSZW1vdmVTY3JvbGwuY2xhc3NOYW1lcztcbmV4cG9ydCBkZWZhdWx0IFJlYWN0UmVtb3ZlU2Nyb2xsO1xuIiwidmFyIGdldERlZmF1bHRQYXJlbnQgPSBmdW5jdGlvbiAob3JpZ2luYWxUYXJnZXQpIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIHNhbXBsZVRhcmdldCA9IEFycmF5LmlzQXJyYXkob3JpZ2luYWxUYXJnZXQpID8gb3JpZ2luYWxUYXJnZXRbMF0gOiBvcmlnaW5hbFRhcmdldDtcbiAgICByZXR1cm4gc2FtcGxlVGFyZ2V0Lm93bmVyRG9jdW1lbnQuYm9keTtcbn07XG52YXIgY291bnRlck1hcCA9IG5ldyBXZWFrTWFwKCk7XG52YXIgdW5jb250cm9sbGVkTm9kZXMgPSBuZXcgV2Vha01hcCgpO1xudmFyIG1hcmtlck1hcCA9IHt9O1xudmFyIGxvY2tDb3VudCA9IDA7XG52YXIgdW53cmFwSG9zdCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUgJiYgKG5vZGUuaG9zdCB8fCB1bndyYXBIb3N0KG5vZGUucGFyZW50Tm9kZSkpO1xufTtcbnZhciBjb3JyZWN0VGFyZ2V0cyA9IGZ1bmN0aW9uIChwYXJlbnQsIHRhcmdldHMpIHtcbiAgICByZXR1cm4gdGFyZ2V0c1xuICAgICAgICAubWFwKGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgaWYgKHBhcmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb3JyZWN0ZWRUYXJnZXQgPSB1bndyYXBIb3N0KHRhcmdldCk7XG4gICAgICAgIGlmIChjb3JyZWN0ZWRUYXJnZXQgJiYgcGFyZW50LmNvbnRhaW5zKGNvcnJlY3RlZFRhcmdldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBjb3JyZWN0ZWRUYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcignYXJpYS1oaWRkZW4nLCB0YXJnZXQsICdpbiBub3QgY29udGFpbmVkIGluc2lkZScsIHBhcmVudCwgJy4gRG9pbmcgbm90aGluZycpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiBCb29sZWFuKHgpOyB9KTtcbn07XG4vKipcbiAqIE1hcmtzIGV2ZXJ5dGhpbmcgZXhjZXB0IGdpdmVuIG5vZGUob3Igbm9kZXMpIGFzIGFyaWEtaGlkZGVuXG4gKiBAcGFyYW0ge0VsZW1lbnQgfCBFbGVtZW50W119IG9yaWdpbmFsVGFyZ2V0IC0gZWxlbWVudHMgdG8ga2VlcCBvbiB0aGUgcGFnZVxuICogQHBhcmFtIFtwYXJlbnROb2RlXSAtIHRvcCBlbGVtZW50LCBkZWZhdWx0cyB0byBkb2N1bWVudC5ib2R5XG4gKiBAcGFyYW0ge1N0cmluZ30gW21hcmtlck5hbWVdIC0gYSBzcGVjaWFsIGF0dHJpYnV0ZSB0byBtYXJrIGV2ZXJ5IG5vZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbY29udHJvbEF0dHJpYnV0ZV0gLSBodG1sIEF0dHJpYnV0ZSB0byBjb250cm9sXG4gKiBAcmV0dXJuIHtVbmRvfSB1bmRvIGNvbW1hbmRcbiAqL1xudmFyIGFwcGx5QXR0cmlidXRlVG9PdGhlcnMgPSBmdW5jdGlvbiAob3JpZ2luYWxUYXJnZXQsIHBhcmVudE5vZGUsIG1hcmtlck5hbWUsIGNvbnRyb2xBdHRyaWJ1dGUpIHtcbiAgICB2YXIgdGFyZ2V0cyA9IGNvcnJlY3RUYXJnZXRzKHBhcmVudE5vZGUsIEFycmF5LmlzQXJyYXkob3JpZ2luYWxUYXJnZXQpID8gb3JpZ2luYWxUYXJnZXQgOiBbb3JpZ2luYWxUYXJnZXRdKTtcbiAgICBpZiAoIW1hcmtlck1hcFttYXJrZXJOYW1lXSkge1xuICAgICAgICBtYXJrZXJNYXBbbWFya2VyTmFtZV0gPSBuZXcgV2Vha01hcCgpO1xuICAgIH1cbiAgICB2YXIgbWFya2VyQ291bnRlciA9IG1hcmtlck1hcFttYXJrZXJOYW1lXTtcbiAgICB2YXIgaGlkZGVuTm9kZXMgPSBbXTtcbiAgICB2YXIgZWxlbWVudHNUb0tlZXAgPSBuZXcgU2V0KCk7XG4gICAgdmFyIGVsZW1lbnRzVG9TdG9wID0gbmV3IFNldCh0YXJnZXRzKTtcbiAgICB2YXIga2VlcCA9IGZ1bmN0aW9uIChlbCkge1xuICAgICAgICBpZiAoIWVsIHx8IGVsZW1lbnRzVG9LZWVwLmhhcyhlbCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50c1RvS2VlcC5hZGQoZWwpO1xuICAgICAgICBrZWVwKGVsLnBhcmVudE5vZGUpO1xuICAgIH07XG4gICAgdGFyZ2V0cy5mb3JFYWNoKGtlZXApO1xuICAgIHZhciBkZWVwID0gZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICBpZiAoIXBhcmVudCB8fCBlbGVtZW50c1RvU3RvcC5oYXMocGFyZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwocGFyZW50LmNoaWxkcmVuLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRzVG9LZWVwLmhhcyhub2RlKSkge1xuICAgICAgICAgICAgICAgIGRlZXAobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IG5vZGUuZ2V0QXR0cmlidXRlKGNvbnRyb2xBdHRyaWJ1dGUpO1xuICAgICAgICAgICAgICAgIHZhciBhbHJlYWR5SGlkZGVuID0gYXR0ciAhPT0gbnVsbCAmJiBhdHRyICE9PSAnZmFsc2UnO1xuICAgICAgICAgICAgICAgIHZhciBjb3VudGVyVmFsdWUgPSAoY291bnRlck1hcC5nZXQobm9kZSkgfHwgMCkgKyAxO1xuICAgICAgICAgICAgICAgIHZhciBtYXJrZXJWYWx1ZSA9IChtYXJrZXJDb3VudGVyLmdldChub2RlKSB8fCAwKSArIDE7XG4gICAgICAgICAgICAgICAgY291bnRlck1hcC5zZXQobm9kZSwgY291bnRlclZhbHVlKTtcbiAgICAgICAgICAgICAgICBtYXJrZXJDb3VudGVyLnNldChub2RlLCBtYXJrZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgaGlkZGVuTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoY291bnRlclZhbHVlID09PSAxICYmIGFscmVhZHlIaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdW5jb250cm9sbGVkTm9kZXMuc2V0KG5vZGUsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobWFya2VyVmFsdWUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobWFya2VyTmFtZSwgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFhbHJlYWR5SGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGNvbnRyb2xBdHRyaWJ1dGUsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGRlZXAocGFyZW50Tm9kZSk7XG4gICAgZWxlbWVudHNUb0tlZXAuY2xlYXIoKTtcbiAgICBsb2NrQ291bnQrKztcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBoaWRkZW5Ob2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICB2YXIgY291bnRlclZhbHVlID0gY291bnRlck1hcC5nZXQobm9kZSkgLSAxO1xuICAgICAgICAgICAgdmFyIG1hcmtlclZhbHVlID0gbWFya2VyQ291bnRlci5nZXQobm9kZSkgLSAxO1xuICAgICAgICAgICAgY291bnRlck1hcC5zZXQobm9kZSwgY291bnRlclZhbHVlKTtcbiAgICAgICAgICAgIG1hcmtlckNvdW50ZXIuc2V0KG5vZGUsIG1hcmtlclZhbHVlKTtcbiAgICAgICAgICAgIGlmICghY291bnRlclZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1bmNvbnRyb2xsZWROb2Rlcy5oYXMobm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoY29udHJvbEF0dHJpYnV0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVuY29udHJvbGxlZE5vZGVzLmRlbGV0ZShub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbWFya2VyVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShtYXJrZXJOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGxvY2tDb3VudC0tO1xuICAgICAgICBpZiAoIWxvY2tDb3VudCkge1xuICAgICAgICAgICAgLy8gY2xlYXJcbiAgICAgICAgICAgIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICAgICAgY291bnRlck1hcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgICAgICB1bmNvbnRyb2xsZWROb2RlcyA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgICAgICBtYXJrZXJNYXAgPSB7fTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuLyoqXG4gKiBNYXJrcyBldmVyeXRoaW5nIGV4Y2VwdCBnaXZlbiBub2RlKG9yIG5vZGVzKSBhcyBhcmlhLWhpZGRlblxuICogQHBhcmFtIHtFbGVtZW50IHwgRWxlbWVudFtdfSBvcmlnaW5hbFRhcmdldCAtIGVsZW1lbnRzIHRvIGtlZXAgb24gdGhlIHBhZ2VcbiAqIEBwYXJhbSBbcGFyZW50Tm9kZV0gLSB0b3AgZWxlbWVudCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQuYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFttYXJrZXJOYW1lXSAtIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayBldmVyeSBub2RlXG4gKiBAcmV0dXJuIHtVbmRvfSB1bmRvIGNvbW1hbmRcbiAqL1xuZXhwb3J0IHZhciBoaWRlT3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKSB7XG4gICAgaWYgKG1hcmtlck5hbWUgPT09IHZvaWQgMCkgeyBtYXJrZXJOYW1lID0gJ2RhdGEtYXJpYS1oaWRkZW4nOyB9XG4gICAgdmFyIHRhcmdldHMgPSBBcnJheS5mcm9tKEFycmF5LmlzQXJyYXkob3JpZ2luYWxUYXJnZXQpID8gb3JpZ2luYWxUYXJnZXQgOiBbb3JpZ2luYWxUYXJnZXRdKTtcbiAgICB2YXIgYWN0aXZlUGFyZW50Tm9kZSA9IHBhcmVudE5vZGUgfHwgZ2V0RGVmYXVsdFBhcmVudChvcmlnaW5hbFRhcmdldCk7XG4gICAgaWYgKCFhY3RpdmVQYXJlbnROb2RlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsOyB9O1xuICAgIH1cbiAgICAvLyB3ZSBzaG91bGQgbm90IGhpZGUgYXJpYUxpdmUgZWxlbWVudHMgLSBodHRwczovL2dpdGh1Yi5jb20vdGhlS2FzaGV5L2FyaWEtaGlkZGVuL2lzc3Vlcy8xMFxuICAgIHRhcmdldHMucHVzaC5hcHBseSh0YXJnZXRzLCBBcnJheS5mcm9tKGFjdGl2ZVBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbCgnW2FyaWEtbGl2ZV0nKSkpO1xuICAgIHJldHVybiBhcHBseUF0dHJpYnV0ZVRvT3RoZXJzKHRhcmdldHMsIGFjdGl2ZVBhcmVudE5vZGUsIG1hcmtlck5hbWUsICdhcmlhLWhpZGRlbicpO1xufTtcbi8qKlxuICogTWFya3MgZXZlcnl0aGluZyBleGNlcHQgZ2l2ZW4gbm9kZShvciBub2RlcykgYXMgaW5lcnRcbiAqIEBwYXJhbSB7RWxlbWVudCB8IEVsZW1lbnRbXX0gb3JpZ2luYWxUYXJnZXQgLSBlbGVtZW50cyB0byBrZWVwIG9uIHRoZSBwYWdlXG4gKiBAcGFyYW0gW3BhcmVudE5vZGVdIC0gdG9wIGVsZW1lbnQsIGRlZmF1bHRzIHRvIGRvY3VtZW50LmJvZHlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbbWFya2VyTmFtZV0gLSBhIHNwZWNpYWwgYXR0cmlidXRlIHRvIG1hcmsgZXZlcnkgbm9kZVxuICogQHJldHVybiB7VW5kb30gdW5kbyBjb21tYW5kXG4gKi9cbmV4cG9ydCB2YXIgaW5lcnRPdGhlcnMgPSBmdW5jdGlvbiAob3JpZ2luYWxUYXJnZXQsIHBhcmVudE5vZGUsIG1hcmtlck5hbWUpIHtcbiAgICBpZiAobWFya2VyTmFtZSA9PT0gdm9pZCAwKSB7IG1hcmtlck5hbWUgPSAnZGF0YS1pbmVydC1lZCc7IH1cbiAgICB2YXIgYWN0aXZlUGFyZW50Tm9kZSA9IHBhcmVudE5vZGUgfHwgZ2V0RGVmYXVsdFBhcmVudChvcmlnaW5hbFRhcmdldCk7XG4gICAgaWYgKCFhY3RpdmVQYXJlbnROb2RlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsOyB9O1xuICAgIH1cbiAgICByZXR1cm4gYXBwbHlBdHRyaWJ1dGVUb090aGVycyhvcmlnaW5hbFRhcmdldCwgYWN0aXZlUGFyZW50Tm9kZSwgbWFya2VyTmFtZSwgJ2luZXJ0Jyk7XG59O1xuLyoqXG4gKiBAcmV0dXJucyBpZiBjdXJyZW50IGJyb3dzZXIgc3VwcG9ydHMgaW5lcnRcbiAqL1xuZXhwb3J0IHZhciBzdXBwb3J0c0luZXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0eXBlb2YgSFRNTEVsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmIEhUTUxFbGVtZW50LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnaW5lcnQnKTtcbn07XG4vKipcbiAqIEF1dG9tYXRpYyBmdW5jdGlvbiB0byBcInN1cHByZXNzXCIgRE9NIGVsZW1lbnRzIC0gX2hpZGVfIG9yIF9pbmVydF8gaW4gdGhlIGJlc3QgcG9zc2libGUgd2F5XG4gKiBAcGFyYW0ge0VsZW1lbnQgfCBFbGVtZW50W119IG9yaWdpbmFsVGFyZ2V0IC0gZWxlbWVudHMgdG8ga2VlcCBvbiB0aGUgcGFnZVxuICogQHBhcmFtIFtwYXJlbnROb2RlXSAtIHRvcCBlbGVtZW50LCBkZWZhdWx0cyB0byBkb2N1bWVudC5ib2R5XG4gKiBAcGFyYW0ge1N0cmluZ30gW21hcmtlck5hbWVdIC0gYSBzcGVjaWFsIGF0dHJpYnV0ZSB0byBtYXJrIGV2ZXJ5IG5vZGVcbiAqIEByZXR1cm4ge1VuZG99IHVuZG8gY29tbWFuZFxuICovXG5leHBvcnQgdmFyIHN1cHByZXNzT3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKSB7XG4gICAgaWYgKG1hcmtlck5hbWUgPT09IHZvaWQgMCkgeyBtYXJrZXJOYW1lID0gJ2RhdGEtc3VwcHJlc3NlZCc7IH1cbiAgICByZXR1cm4gKHN1cHBvcnRzSW5lcnQoKSA/IGluZXJ0T3RoZXJzIDogaGlkZU90aGVycykob3JpZ2luYWxUYXJnZXQsIHBhcmVudE5vZGUsIG1hcmtlck5hbWUpO1xufTtcbiIsImltcG9ydCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7dXNlUmVmIGFzICQ2N1VIbSR1c2VSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDY3VUhtJGNyZWF0ZUVsZW1lbnQsIHVzZUNhbGxiYWNrIGFzICQ2N1VIbSR1c2VDYWxsYmFjaywgZm9yd2FyZFJlZiBhcyAkNjdVSG0kZm9yd2FyZFJlZiwgQ2hpbGRyZW4gYXMgJDY3VUhtJENoaWxkcmVuLCB1c2VFZmZlY3QgYXMgJDY3VUhtJHVzZUVmZmVjdCwgRnJhZ21lbnQgYXMgJDY3VUhtJEZyYWdtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDY3VUhtJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ2N1VIbSRjcmVhdGVDb250ZXh0U2NvcGUsIGNyZWF0ZUNvbnRleHQgYXMgJDY3VUhtJGNyZWF0ZUNvbnRleHR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VJZCBhcyAkNjdVSG0kdXNlSWR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWRcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDY3VUhtJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7RGlzbWlzc2FibGVMYXllciBhcyAkNjdVSG0kRGlzbWlzc2FibGVMYXllcn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXNtaXNzYWJsZS1sYXllclwiO1xuaW1wb3J0IHtGb2N1c1Njb3BlIGFzICQ2N1VIbSRGb2N1c1Njb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWZvY3VzLXNjb3BlXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkNjdVSG0kUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkNjdVSG0kUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ2N1VIbSRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUZvY3VzR3VhcmRzIGFzICQ2N1VIbSR1c2VGb2N1c0d1YXJkc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1mb2N1cy1ndWFyZHNcIjtcbmltcG9ydCB7UmVtb3ZlU2Nyb2xsIGFzICQ2N1VIbSRSZW1vdmVTY3JvbGx9IGZyb20gXCJyZWFjdC1yZW1vdmUtc2Nyb2xsXCI7XG5pbXBvcnQge2hpZGVPdGhlcnMgYXMgJDY3VUhtJGhpZGVPdGhlcnN9IGZyb20gXCJhcmlhLWhpZGRlblwiO1xuaW1wb3J0IHtTbG90IGFzICQ2N1VIbSRTbG90fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERJQUxPR19OQU1FID0gJ0RpYWxvZyc7XG5jb25zdCBbJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGNyZWF0ZURpYWxvZ0NvbnRleHQsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjYzcwMjc3M2I4ZWEzZTQxXSA9ICQ2N1VIbSRjcmVhdGVDb250ZXh0U2NvcGUoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERJQUxPR19OQU1FKTtcbmNvbnN0IFskNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nUHJvdmlkZXIsICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0XSA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRjcmVhdGVEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRSk7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkM2RkZjJkMTc0Y2UwMTE1MyA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBvcGVuOiBvcGVuUHJvcCAsIGRlZmF1bHRPcGVuOiBkZWZhdWx0T3BlbiAsIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgbW9kYWw6IG1vZGFsID0gdHJ1ZSAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSAkNjdVSG0kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkNjdVSG0kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtvcGVuID0gZmFsc2UsIHNldE9wZW5dID0gJDY3VUhtJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogb3BlblByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0T3BlbixcbiAgICAgICAgb25DaGFuZ2U6IG9uT3BlbkNoYW5nZVxuICAgIH0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZURpYWxvZyxcbiAgICAgICAgdHJpZ2dlclJlZjogdHJpZ2dlclJlZixcbiAgICAgICAgY29udGVudFJlZjogY29udGVudFJlZixcbiAgICAgICAgY29udGVudElkOiAkNjdVSG0kdXNlSWQoKSxcbiAgICAgICAgdGl0bGVJZDogJDY3VUhtJHVzZUlkKCksXG4gICAgICAgIGRlc2NyaXB0aW9uSWQ6ICQ2N1VIbSR1c2VJZCgpLFxuICAgICAgICBvcGVuOiBvcGVuLFxuICAgICAgICBvbk9wZW5DaGFuZ2U6IHNldE9wZW4sXG4gICAgICAgIG9uT3BlblRvZ2dsZTogJDY3VUhtJHVzZUNhbGxiYWNrKCgpPT5zZXRPcGVuKChwcmV2T3Blbik9PiFwcmV2T3BlblxuICAgICAgICAgICAgKVxuICAgICAgICAsIFtcbiAgICAgICAgICAgIHNldE9wZW5cbiAgICAgICAgXSksXG4gICAgICAgIG1vZGFsOiBtb2RhbFxuICAgIH0sIGNoaWxkcmVuKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDNkZGYyZDE3NGNlMDExNTMsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERJQUxPR19OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ1RyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRSSUdHRVJfTkFNRSA9ICdEaWFsb2dUcmlnZ2VyJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4ID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkVFJJR0dFUl9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCBjb21wb3NlZFRyaWdnZXJSZWYgPSAkNjdVSG0kdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC50cmlnZ2VyUmVmKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJpbWl0aXZlLmJ1dHRvbiwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwiZGlhbG9nXCIsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBjb250ZXh0Lm9wZW4sXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRnZXRTdGF0ZShjb250ZXh0Lm9wZW4pXG4gICAgfSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRUcmlnZ2VyUmVmLFxuICAgICAgICBvbkNsaWNrOiAkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgY29udGV4dC5vbk9wZW5Ub2dnbGUpXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDJlMWUxMTIyY2YwY2JhODgsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FID0gJ0RpYWxvZ1BvcnRhbCc7XG5jb25zdCBbJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBvcnRhbFByb3ZpZGVyLCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlUG9ydGFsQ29udGV4dF0gPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkY3JlYXRlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkUE9SVEFMX05BTUUsIHtcbiAgICBmb3JjZU1vdW50OiB1bmRlZmluZWRcbn0pO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGRhZDdjOTU1NDJiYWNjZTAgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgZm9yY2VNb3VudDogZm9yY2VNb3VudCAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIGNvbnRhaW5lcjogY29udGFpbmVyICB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRSwgX19zY29wZURpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBvcnRhbFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlRGlhbG9nLFxuICAgICAgICBmb3JjZU1vdW50OiBmb3JjZU1vdW50XG4gICAgfSwgJDY3VUhtJENoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkKT0+LyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJlc2VuY2UsIHtcbiAgICAgICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFBvcnRhbCwge1xuICAgICAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyXG4gICAgICAgIH0sIGNoaWxkKSlcbiAgICApKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGRhZDdjOTU1NDJiYWNjZTAsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ092ZXJsYXlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRSA9ICdEaWFsb2dPdmVybGF5JztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZDFkMDZjNzliZTE5ZTE3ID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBwb3J0YWxDb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVBvcnRhbENvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRSwgcHJvcHMuX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgeyBmb3JjZU1vdW50OiBmb3JjZU1vdW50ID0gcG9ydGFsQ29udGV4dC5mb3JjZU1vdW50ICwgLi4ub3ZlcmxheVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRSwgcHJvcHMuX19zY29wZURpYWxvZyk7XG4gICAgcmV0dXJuIGNvbnRleHQubW9kYWwgPyAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQub3BlblxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ092ZXJsYXlJbXBsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIG92ZXJsYXlQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJkMWQwNmM3OWJlMTllMTcsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRVxufSk7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nT3ZlcmxheUltcGwgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZURpYWxvZzogX19zY29wZURpYWxvZyAsIC4uLm92ZXJsYXlQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybigvKiNfX1BVUkVfXyovIC8vIE1ha2Ugc3VyZSBgQ29udGVudGAgaXMgc2Nyb2xsYWJsZSBldmVuIHdoZW4gaXQgZG9lc24ndCBsaXZlIGluc2lkZSBgUmVtb3ZlU2Nyb2xsYFxuICAgIC8vIGllLiB3aGVuIGBPdmVybGF5YCBhbmQgYENvbnRlbnRgIGFyZSBzaWJsaW5nc1xuICAgICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRSZW1vdmVTY3JvbGwsIHtcbiAgICAgICAgYXM6ICQ2N1VIbSRTbG90LFxuICAgICAgICBhbGxvd1BpbmNoWm9vbTogdHJ1ZSxcbiAgICAgICAgc2hhcmRzOiBbXG4gICAgICAgICAgICBjb250ZXh0LmNvbnRlbnRSZWZcbiAgICAgICAgXVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByaW1pdGl2ZS5kaXYsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKVxuICAgIH0sIG92ZXJsYXlQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZiAvLyBXZSByZS1lbmFibGUgcG9pbnRlci1ldmVudHMgcHJldmVudGVkIGJ5IGBEaWFsb2cuQ29udGVudGAgdG8gYWxsb3cgc2Nyb2xsaW5nIHRoZSBvdmVybGF5LlxuICAgICAgICAsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnYXV0bycsXG4gICAgICAgICAgICAuLi5vdmVybGF5UHJvcHMuc3R5bGVcbiAgICAgICAgfVxuICAgIH0pKSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUgPSAnRGlhbG9nQ29udGVudCc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYjZkOTU2NWRlMWUwNjhjZiA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgcG9ydGFsQ29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VQb3J0YWxDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQub3BlblxuICAgIH0sIGNvbnRleHQubW9kYWwgPyAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50TW9kYWwsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpIDogLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE5vbk1vZGFsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYjZkOTU2NWRlMWUwNjhjZiwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRNb2RhbCA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkNjdVSG0kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2N1VIbSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZXh0LmNvbnRlbnRSZWYsIGNvbnRlbnRSZWYpOyAvLyBhcmlhLWhpZGUgZXZlcnl0aGluZyBleGNlcHQgdGhlIGNvbnRlbnQgKGJldHRlciBzdXBwb3J0ZWQgZXF1aXZhbGVudCB0byBzZXR0aW5nIGFyaWEtbW9kYWwpXG4gICAgJDY3VUhtJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBjb250ZW50ID0gY29udGVudFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoY29udGVudCkgcmV0dXJuICQ2N1VIbSRoaWRlT3RoZXJzKGNvbnRlbnQpO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudEltcGwsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMgLy8gd2UgbWFrZSBzdXJlIGZvY3VzIGlzbid0IHRyYXBwZWQgb25jZSBgRGlhbG9nQ29udGVudGAgaGFzIGJlZW4gY2xvc2VkXG4gICAgICAgICxcbiAgICAgICAgdHJhcEZvY3VzOiBjb250ZXh0Lm9wZW4sXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICAgICAgb25DbG9zZUF1dG9Gb2N1czogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xvc2VBdXRvRm9jdXMsIChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfY29udGV4dCR0cmlnZ2VyUmVmJGM7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgKF9jb250ZXh0JHRyaWdnZXJSZWYkYyA9IGNvbnRleHQudHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMgPT09IHZvaWQgMCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMuZm9jdXMoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiAkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Qb2ludGVyRG93bk91dHNpZGUsIChldmVudCk9PntcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRXZlbnQgPSBldmVudC5kZXRhaWwub3JpZ2luYWxFdmVudDtcbiAgICAgICAgICAgIGNvbnN0IGN0cmxMZWZ0Q2xpY2sgPSBvcmlnaW5hbEV2ZW50LmJ1dHRvbiA9PT0gMCAmJiBvcmlnaW5hbEV2ZW50LmN0cmxLZXkgPT09IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpc1JpZ2h0Q2xpY2sgPSBvcmlnaW5hbEV2ZW50LmJ1dHRvbiA9PT0gMiB8fCBjdHJsTGVmdENsaWNrOyAvLyBJZiB0aGUgZXZlbnQgaXMgYSByaWdodC1jbGljaywgd2Ugc2hvdWxkbid0IGNsb3NlIGJlY2F1c2VcbiAgICAgICAgICAgIC8vIGl0IGlzIGVmZmVjdGl2ZWx5IGFzIGlmIHdlIHJpZ2h0LWNsaWNrZWQgdGhlIGBPdmVybGF5YC5cbiAgICAgICAgICAgIGlmIChpc1JpZ2h0Q2xpY2spIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0pIC8vIFdoZW4gZm9jdXMgaXMgdHJhcHBlZCwgYSBgZm9jdXNvdXRgIGV2ZW50IG1heSBzdGlsbCBoYXBwZW4uXG4gICAgICAgICxcbiAgICAgICAgb25Gb2N1c091dHNpZGU6ICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkZvY3VzT3V0c2lkZSwgKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICApXG4gICAgfSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50Tm9uTW9kYWwgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZiA9ICQ2N1VIbSR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhc1BvaW50ZXJEb3duT3V0c2lkZVJlZiA9ICQ2N1VIbSR1c2VSZWYoZmFsc2UpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50SW1wbCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgdHJhcEZvY3VzOiBmYWxzZSxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgICAgb25DbG9zZUF1dG9Gb2N1czogKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9wcm9wcyRvbkNsb3NlQXV0b0ZvYztcbiAgICAgICAgICAgIChfcHJvcHMkb25DbG9zZUF1dG9Gb2MgPSBwcm9wcy5vbkNsb3NlQXV0b0ZvY3VzKSA9PT0gbnVsbCB8fCBfcHJvcHMkb25DbG9zZUF1dG9Gb2MgPT09IHZvaWQgMCB8fCBfcHJvcHMkb25DbG9zZUF1dG9Gb2MuY2FsbChwcm9wcywgZXZlbnQpO1xuICAgICAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jb250ZXh0JHRyaWdnZXJSZWYkYzI7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50KSAoX2NvbnRleHQkdHJpZ2dlclJlZiRjMiA9IGNvbnRleHQudHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMyID09PSB2b2lkIDAgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMi5mb2N1cygpOyAvLyBBbHdheXMgcHJldmVudCBhdXRvIGZvY3VzIGJlY2F1c2Ugd2UgZWl0aGVyIGZvY3VzIG1hbnVhbGx5IG9yIHdhbnQgdXNlciBhZ2VudCBmb2N1c1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBvbkludGVyYWN0T3V0c2lkZTogKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9wcm9wcyRvbkludGVyYWN0T3V0cywgX2NvbnRleHQkdHJpZ2dlclJlZiRjMztcbiAgICAgICAgICAgIChfcHJvcHMkb25JbnRlcmFjdE91dHMgPSBwcm9wcy5vbkludGVyYWN0T3V0c2lkZSkgPT09IG51bGwgfHwgX3Byb3BzJG9uSW50ZXJhY3RPdXRzID09PSB2b2lkIDAgfHwgX3Byb3BzJG9uSW50ZXJhY3RPdXRzLmNhbGwocHJvcHMsIGV2ZW50KTtcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIGhhc0ludGVyYWN0ZWRPdXRzaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlID09PSAncG9pbnRlcmRvd24nKSBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB9IC8vIFByZXZlbnQgZGlzbWlzc2luZyB3aGVuIGNsaWNraW5nIHRoZSB0cmlnZ2VyLlxuICAgICAgICAgICAgLy8gQXMgdGhlIHRyaWdnZXIgaXMgYWxyZWFkeSBzZXR1cCB0byBjbG9zZSwgd2l0aG91dCBkb2luZyBzbyB3b3VsZFxuICAgICAgICAgICAgLy8gY2F1c2UgaXQgdG8gY2xvc2UgYW5kIGltbWVkaWF0ZWx5IG9wZW4uXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRJc1RyaWdnZXIgPSAoX2NvbnRleHQkdHJpZ2dlclJlZiRjMyA9IGNvbnRleHQudHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGV4dCR0cmlnZ2VyUmVmJGMzLmNvbnRhaW5zKHRhcmdldCk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0SXNUcmlnZ2VyKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBPbiBTYWZhcmkgaWYgdGhlIHRyaWdnZXIgaXMgaW5zaWRlIGEgY29udGFpbmVyIHdpdGggdGFiSW5kZXg9ezB9LCB3aGVuIGNsaWNrZWRcbiAgICAgICAgICAgIC8vIHdlIHdpbGwgZ2V0IHRoZSBwb2ludGVyIGRvd24gb3V0c2lkZSBldmVudCBvbiB0aGUgdHJpZ2dlciwgYnV0IHRoZW4gYSBzdWJzZXF1ZW50XG4gICAgICAgICAgICAvLyBmb2N1cyBvdXRzaWRlIGV2ZW50IG9uIHRoZSBjb250YWluZXIsIHdlIGlnbm9yZSBhbnkgZm9jdXMgb3V0c2lkZSBldmVudCB3aGVuIHdlJ3ZlXG4gICAgICAgICAgICAvLyBhbHJlYWR5IGhhZCBhIHBvaW50ZXIgZG93biBvdXRzaWRlIGV2ZW50LlxuICAgICAgICAgICAgaWYgKGV2ZW50LmRldGFpbC5vcmlnaW5hbEV2ZW50LnR5cGUgPT09ICdmb2N1c2luJyAmJiBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYuY3VycmVudCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZURpYWxvZzogX19zY29wZURpYWxvZyAsIHRyYXBGb2N1czogdHJhcEZvY3VzICwgb25PcGVuQXV0b0ZvY3VzOiBvbk9wZW5BdXRvRm9jdXMgLCBvbkNsb3NlQXV0b0ZvY3VzOiBvbkNsb3NlQXV0b0ZvY3VzICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgY29udGVudFJlZiA9ICQ2N1VIbSR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDY3VUhtJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRlbnRSZWYpOyAvLyBNYWtlIHN1cmUgdGhlIHdob2xlIHRyZWUgaGFzIGZvY3VzIGd1YXJkcyBhcyBvdXIgYERpYWxvZ2Agd2lsbCBiZVxuICAgIC8vIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIERPTSAoYmVhY3VzZSBvZiB0aGUgYFBvcnRhbGApXG4gICAgJDY3VUhtJHVzZUZvY3VzR3VhcmRzKCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJEZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRGb2N1c1Njb3BlLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGxvb3A6IHRydWUsXG4gICAgICAgIHRyYXBwZWQ6IHRyYXBGb2N1cyxcbiAgICAgICAgb25Nb3VudEF1dG9Gb2N1czogb25PcGVuQXV0b0ZvY3VzLFxuICAgICAgICBvblVubW91bnRBdXRvRm9jdXM6IG9uQ2xvc2VBdXRvRm9jdXNcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSREaXNtaXNzYWJsZUxheWVyLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICByb2xlOiBcImRpYWxvZ1wiLFxuICAgICAgICBpZDogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiBjb250ZXh0LmRlc2NyaXB0aW9uSWQsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGNvbnRleHQudGl0bGVJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRnZXRTdGF0ZShjb250ZXh0Lm9wZW4pXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkRpc21pc3M6ICgpPT5jb250ZXh0Lm9uT3BlbkNoYW5nZShmYWxzZSlcbiAgICB9KSkpLCBmYWxzZSk7XG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ1RpdGxlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FID0gJ0RpYWxvZ1RpdGxlJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQxNmY3NjM4ZTRhMzRiOTA5ID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi50aXRsZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUuaDIsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGlkOiBjb250ZXh0LnRpdGxlSWRcbiAgICB9LCB0aXRsZVByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDE2Zjc2MzhlNGEzNGI5MDksIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nRGVzY3JpcHRpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERFU0NSSVBUSU9OX05BTUUgPSAnRGlhbG9nRGVzY3JpcHRpb24nO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDk0ZTk0YzJlYzJjOTU0ZDUgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZURpYWxvZzogX19zY29wZURpYWxvZyAsIC4uLmRlc2NyaXB0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fTkFNRSwgX19zY29wZURpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByaW1pdGl2ZS5wLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBpZDogY29udGV4dC5kZXNjcmlwdGlvbklkXG4gICAgfSwgZGVzY3JpcHRpb25Qcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRERVNDUklQVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ0Nsb3NlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDTE9TRV9OQU1FID0gJ0RpYWxvZ0Nsb3NlJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi5jbG9zZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENMT1NFX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUuYnV0dG9uLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiXG4gICAgfSwgY2xvc2VQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgb25DbGljazogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xpY2ssICgpPT5jb250ZXh0Lm9uT3BlbkNoYW5nZShmYWxzZSlcbiAgICAgICAgKVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDTE9TRV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gZnVuY3Rpb24gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGdldFN0YXRlKG9wZW4pIHtcbiAgICByZXR1cm4gb3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnO1xufVxuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX1dBUk5JTkdfTkFNRSA9ICdEaWFsb2dUaXRsZVdhcm5pbmcnO1xuY29uc3QgWyQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ2OWI2MmE0OTM5MzkxN2Q2LCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlV2FybmluZ0NvbnRleHRdID0gJDY3VUhtJGNyZWF0ZUNvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX1dBUk5JTkdfTkFNRSwge1xuICAgIGNvbnRlbnROYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLFxuICAgIHRpdGxlTmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX05BTUUsXG4gICAgZG9jc1NsdWc6ICdkaWFsb2cnXG59KTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUaXRsZVdhcm5pbmcgPSAoeyB0aXRsZUlkOiB0aXRsZUlkICB9KT0+e1xuICAgIGNvbnN0IHRpdGxlV2FybmluZ0NvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlV2FybmluZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX1dBUk5JTkdfTkFNRSk7XG4gICAgY29uc3QgTUVTU0FHRSA9IGBcXGAke3RpdGxlV2FybmluZ0NvbnRleHQuY29udGVudE5hbWV9XFxgIHJlcXVpcmVzIGEgXFxgJHt0aXRsZVdhcm5pbmdDb250ZXh0LnRpdGxlTmFtZX1cXGAgZm9yIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzaWJsZSBmb3Igc2NyZWVuIHJlYWRlciB1c2Vycy5cblxuSWYgeW91IHdhbnQgdG8gaGlkZSB0aGUgXFxgJHt0aXRsZVdhcm5pbmdDb250ZXh0LnRpdGxlTmFtZX1cXGAsIHlvdSBjYW4gd3JhcCBpdCB3aXRoIG91ciBWaXN1YWxseUhpZGRlbiBjb21wb25lbnQuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9yYWRpeC11aS5jb20vcHJpbWl0aXZlcy9kb2NzL2NvbXBvbmVudHMvJHt0aXRsZVdhcm5pbmdDb250ZXh0LmRvY3NTbHVnfWA7XG4gICAgJDY3VUhtJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAodGl0bGVJZCkge1xuICAgICAgICAgICAgY29uc3QgaGFzVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aXRsZUlkKTtcbiAgICAgICAgICAgIGlmICghaGFzVGl0bGUpIHRocm93IG5ldyBFcnJvcihNRVNTQUdFKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgTUVTU0FHRSxcbiAgICAgICAgdGl0bGVJZFxuICAgIF0pO1xuICAgIHJldHVybiBudWxsO1xufTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRERVNDUklQVElPTl9XQVJOSU5HX05BTUUgPSAnRGlhbG9nRGVzY3JpcHRpb25XYXJuaW5nJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREZXNjcmlwdGlvbldhcm5pbmcgPSAoeyBjb250ZW50UmVmOiBjb250ZW50UmVmICwgZGVzY3JpcHRpb25JZDogZGVzY3JpcHRpb25JZCAgfSk9PntcbiAgICBjb25zdCBkZXNjcmlwdGlvbldhcm5pbmdDb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRERVNDUklQVElPTl9XQVJOSU5HX05BTUUpO1xuICAgIGNvbnN0IE1FU1NBR0UgPSBgV2FybmluZzogTWlzc2luZyBcXGBEZXNjcmlwdGlvblxcYCBvciBcXGBhcmlhLWRlc2NyaWJlZGJ5PXt1bmRlZmluZWR9XFxgIGZvciB7JHtkZXNjcmlwdGlvbldhcm5pbmdDb250ZXh0LmNvbnRlbnROYW1lfX0uYDtcbiAgICAkNjdVSG0kdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHZhciBfY29udGVudFJlZiRjdXJyZW50O1xuICAgICAgICBjb25zdCBkZXNjcmliZWRCeUlkID0gKF9jb250ZW50UmVmJGN1cnJlbnQgPSBjb250ZW50UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jb250ZW50UmVmJGN1cnJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50UmVmJGN1cnJlbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7IC8vIGlmIHdlIGhhdmUgYW4gaWQgYW5kIHRoZSB1c2VyIGhhc24ndCBzZXQgYXJpYS1kZXNjcmliZWRieT17dW5kZWZpbmVkfVxuICAgICAgICBpZiAoZGVzY3JpcHRpb25JZCAmJiBkZXNjcmliZWRCeUlkKSB7XG4gICAgICAgICAgICBjb25zdCBoYXNEZXNjcmlwdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRlc2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgaWYgKCFoYXNEZXNjcmlwdGlvbikgY29uc29sZS53YXJuKE1FU1NBR0UpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBNRVNTQUdFLFxuICAgICAgICBjb250ZW50UmVmLFxuICAgICAgICBkZXNjcmlwdGlvbklkXG4gICAgXSk7XG4gICAgcmV0dXJuIG51bGw7XG59O1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkM2RkZjJkMTc0Y2UwMTE1MztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0ID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDJlMWUxMTIyY2YwY2JhODg7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmQxZDA2Yzc5YmUxOWUxNztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2Y7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQxNmY3NjM4ZTRhMzRiOTA5O1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkOTRlOTRjMmVjMmM5NTRkNTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmMzljMmQxNjVjZDg2MWZlID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGZiYTJmYjdjZDc4MWI3YWM7XG5cblxuXG5cbmV4cG9ydCB7JDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGNjNzAyNzczYjhlYTNlNDEgYXMgY3JlYXRlRGlhbG9nU2NvcGUsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQzZGRmMmQxNzRjZTAxMTUzIGFzIERpYWxvZywgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDJlMWUxMTIyY2YwY2JhODggYXMgRGlhbG9nVHJpZ2dlciwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGRhZDdjOTU1NDJiYWNjZTAgYXMgRGlhbG9nUG9ydGFsLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmQxZDA2Yzc5YmUxOWUxNyBhcyBEaWFsb2dPdmVybGF5LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYjZkOTU2NWRlMWUwNjhjZiBhcyBEaWFsb2dDb250ZW50LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOSBhcyBEaWFsb2dUaXRsZSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDk0ZTk0YzJlYzJjOTU0ZDUgYXMgRGlhbG9nRGVzY3JpcHRpb24sICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjIGFzIERpYWxvZ0Nsb3NlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCBhcyBUcmlnZ2VyLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyBhcyBQb3J0YWwsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjNmZkYjgzN2IwNzBiNGZmIGFzIE92ZXJsYXksICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwIGFzIFRpdGxlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMzkzZWRjNzk4YzQ3Mzc5ZCBhcyBEZXNjcmlwdGlvbiwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGYzOWMyZDE2NWNkODYxZmUgYXMgQ2xvc2UsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ2OWI2MmE0OTM5MzkxN2Q2IGFzIFdhcm5pbmdQcm92aWRlcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2NyZWF0ZUVsZW1lbnQgYXMgJDRrNEQwJGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgYXMgJDRrNEQwJGZvcndhcmRSZWYsIHVzZVJlZiBhcyAkNGs0RDAkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDRrNEQwJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkNGs0RDAkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ0azREMCR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZURpYWxvZ1Njb3BlIGFzICQ0azREMCRjcmVhdGVEaWFsb2dTY29wZSwgUm9vdCBhcyAkNGs0RDAkUm9vdCwgVHJpZ2dlciBhcyAkNGs0RDAkVHJpZ2dlciwgUG9ydGFsIGFzICQ0azREMCRQb3J0YWwsIE92ZXJsYXkgYXMgJDRrNEQwJE92ZXJsYXksIFdhcm5pbmdQcm92aWRlciBhcyAkNGs0RDAkV2FybmluZ1Byb3ZpZGVyLCBDb250ZW50IGFzICQ0azREMCRDb250ZW50LCBUaXRsZSBhcyAkNGs0RDAkVGl0bGUsIERlc2NyaXB0aW9uIGFzICQ0azREMCREZXNjcmlwdGlvbiwgQ2xvc2UgYXMgJDRrNEQwJENsb3NlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpYWxvZ1wiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3R0YWJsZSBhcyAkNGs0RDAkU2xvdHRhYmxlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRST09UX05BTUUgPSAnQWxlcnREaWFsb2cnO1xuY29uc3QgWyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRjcmVhdGVBbGVydERpYWxvZ0NvbnRleHQsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiODg5MTg4MDc1MWMyYzViXSA9ICQ0azREMCRjcmVhdGVDb250ZXh0U2NvcGUoJDkwNWY0YWU5MThhYWIxYWEkdmFyJFJPT1RfTkFNRSwgW1xuICAgICQ0azREMCRjcmVhdGVEaWFsb2dTY29wZVxuXSk7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUgPSAkNGs0RDAkY3JlYXRlRGlhbG9nU2NvcGUoKTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRkZTQ2NmRkODMxN2IwYjc1ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5hbGVydERpYWxvZ1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRSb290LCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCBhbGVydERpYWxvZ1Byb3BzLCB7XG4gICAgICAgIG1vZGFsOiB0cnVlXG4gICAgfSkpO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZGU0NjZkZDgzMTdiMGI3NSwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkUk9PVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nVHJpZ2dlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVFJJR0dFUl9OQU1FID0gJ0FsZXJ0RGlhbG9nVHJpZ2dlcic7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNmVkZDdhNjIzZWYwZjQwYiA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLnRyaWdnZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkVHJpZ2dlciwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDZlZGQ3YTYyM2VmMGY0MGIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ1BvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkUE9SVEFMX05BTUUgPSAnQWxlcnREaWFsb2dQb3J0YWwnO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmMgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLnBvcnRhbFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRQb3J0YWwsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIHBvcnRhbFByb3BzKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2NjBmMmJmZGI5ODY3MDZjLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ092ZXJsYXlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJE9WRVJMQVlfTkFNRSA9ICdBbGVydERpYWxvZ092ZXJsYXknO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGE3MDdhNDg5NWNlMjMyNTYgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5vdmVybGF5UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJE92ZXJsYXksICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIG92ZXJsYXlQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRPVkVSTEFZX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUUgPSAnQWxlcnREaWFsb2dDb250ZW50JztcbmNvbnN0IFskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQWxlcnREaWFsb2dDb250ZW50UHJvdmlkZXIsICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VBbGVydERpYWxvZ0NvbnRlbnRDb250ZXh0XSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRjcmVhdGVBbGVydERpYWxvZ0NvbnRleHQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRSk7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZCA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDRrNEQwJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNGs0RDAkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGVudFJlZik7XG4gICAgY29uc3QgY2FuY2VsUmVmID0gJDRrNEQwJHVzZVJlZihudWxsKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkV2FybmluZ1Byb3ZpZGVyLCB7XG4gICAgICAgIGNvbnRlbnROYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FLFxuICAgICAgICB0aXRsZU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUSVRMRV9OQU1FLFxuICAgICAgICBkb2NzU2x1ZzogXCJhbGVydC1kaWFsb2dcIlxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFsZXJ0RGlhbG9nQ29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlQWxlcnREaWFsb2csXG4gICAgICAgIGNhbmNlbFJlZjogY2FuY2VsUmVmXG4gICAgfSwgLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkQ29udGVudCwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJhbGVydGRpYWxvZ1wiXG4gICAgfSwgZGlhbG9nU2NvcGUsIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25PcGVuQXV0b0ZvY3VzOiAkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnMoY29udGVudFByb3BzLm9uT3BlbkF1dG9Gb2N1cywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9jYW5jZWxSZWYkY3VycmVudDtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAoX2NhbmNlbFJlZiRjdXJyZW50ID0gY2FuY2VsUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jYW5jZWxSZWYkY3VycmVudCA9PT0gdm9pZCAwIHx8IF9jYW5jZWxSZWYkY3VycmVudC5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAsXG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlOiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJFNsb3R0YWJsZSwgbnVsbCwgY2hpbGRyZW4pLCBmYWxzZSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ5NGU2YWY0NWYwYWY0ZWZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dUaXRsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVElUTEVfTkFNRSA9ICdBbGVydERpYWxvZ1RpdGxlJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi50aXRsZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRUaXRsZSwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgdGl0bGVQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRJVExFX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dEZXNjcmlwdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkREVTQ1JJUFRJT05fTkFNRSA9ICdBbGVydERpYWxvZ0Rlc2NyaXB0aW9uJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhMjNiNTVjZGU1NWFkOWE1ID0gLyojX19QVVJFX18qLyAkNGs0RDAkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgLi4uZGVzY3JpcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkRGVzY3JpcHRpb24sICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGRlc2NyaXB0aW9uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTIzYjU1Y2RlNTVhZDlhNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkREVTQ1JJUFRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ0FjdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQUNUSU9OX05BTUUgPSAnQWxlcnREaWFsb2dBY3Rpb24nO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI0NTRmODE4YzU4ZWU4NWQgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5hY3Rpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkQ2xvc2UsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGFjdGlvblByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI0NTRmODE4YzU4ZWU4NWQsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFDVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nQ2FuY2VsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDQU5DRUxfTkFNRSA9ICdBbGVydERpYWxvZ0NhbmNlbCc7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMmY2N2E5MjM1NzFhYWVhMCA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLmNhbmNlbFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IGNhbmNlbFJlZjogY2FuY2VsUmVmICB9ID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZUFsZXJ0RGlhbG9nQ29udGVudENvbnRleHQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJENBTkNFTF9OQU1FLCBfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgY29uc3QgcmVmID0gJDRrNEQwJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNhbmNlbFJlZik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJENsb3NlLCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCBjYW5jZWxQcm9wcywge1xuICAgICAgICByZWY6IHJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyZjY3YTkyMzU3MWFhZWEwLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDQU5DRUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciREZXNjcmlwdGlvbldhcm5pbmcgPSAoeyBjb250ZW50UmVmOiBjb250ZW50UmVmICB9KT0+e1xuICAgIGNvbnN0IE1FU1NBR0UgPSBgXFxgJHskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FfVxcYCByZXF1aXJlcyBhIGRlc2NyaXB0aW9uIGZvciB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2libGUgZm9yIHNjcmVlbiByZWFkZXIgdXNlcnMuXG5cbllvdSBjYW4gYWRkIGEgZGVzY3JpcHRpb24gdG8gdGhlIFxcYCR7JDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRX1cXGAgYnkgcGFzc2luZyBhIFxcYCR7JDkwNWY0YWU5MThhYWIxYWEkdmFyJERFU0NSSVBUSU9OX05BTUV9XFxgIGNvbXBvbmVudCBhcyBhIGNoaWxkLCB3aGljaCBhbHNvIGJlbmVmaXRzIHNpZ2h0ZWQgdXNlcnMgYnkgYWRkaW5nIHZpc2libGUgY29udGV4dCB0byB0aGUgZGlhbG9nLlxuXG5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB5b3VyIG93biBjb21wb25lbnQgYXMgYSBkZXNjcmlwdGlvbiBieSBhc3NpZ25pbmcgaXQgYW4gXFxgaWRcXGAgYW5kIHBhc3NpbmcgdGhlIHNhbWUgdmFsdWUgdG8gdGhlIFxcYGFyaWEtZGVzY3JpYmVkYnlcXGAgcHJvcCBpbiBcXGAkeyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUV9XFxgLiBJZiB0aGUgZGVzY3JpcHRpb24gaXMgY29uZnVzaW5nIG9yIGR1cGxpY2F0aXZlIGZvciBzaWdodGVkIHVzZXJzLCB5b3UgY2FuIHVzZSB0aGUgXFxgQHJhZGl4LXVpL3JlYWN0LXZpc3VhbGx5LWhpZGRlblxcYCBwcmltaXRpdmUgYXMgYSB3cmFwcGVyIGFyb3VuZCB5b3VyIGRlc2NyaXB0aW9uIGNvbXBvbmVudC5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL3JhZGl4LXVpLmNvbS9wcmltaXRpdmVzL2RvY3MvY29tcG9uZW50cy9hbGVydC1kaWFsb2dgO1xuICAgICQ0azREMCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgdmFyIF9jb250ZW50UmVmJGN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoKF9jb250ZW50UmVmJGN1cnJlbnQgPSBjb250ZW50UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jb250ZW50UmVmJGN1cnJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50UmVmJGN1cnJlbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JykpO1xuICAgICAgICBpZiAoIWhhc0Rlc2NyaXB0aW9uKSBjb25zb2xlLndhcm4oTUVTU0FHRSk7XG4gICAgfSwgW1xuICAgICAgICBNRVNTQUdFLFxuICAgICAgICBjb250ZW50UmVmXG4gICAgXSk7XG4gICAgcmV0dXJuIG51bGw7XG59O1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZGU0NjZkZDgzMTdiMGI3NTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0ID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDZlZGQ3YTYyM2VmMGY0MGI7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2NjBmMmJmZGI5ODY3MDZjO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTcwN2E0ODk1Y2UyMzI1NjtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQ7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZTE5Y2Q1ZjkzNzZmOGNlZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiNDU0ZjgxOGM1OGVlODVkO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDg0OGM5YjdlYWQwZGY5NjcgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMmY2N2E5MjM1NzFhYWVhMDtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTU7XG5cblxuXG5cbmV4cG9ydCB7JDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI4ODkxODgwNzUxYzJjNWIgYXMgY3JlYXRlQWxlcnREaWFsb2dTY29wZSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGRlNDY2ZGQ4MzE3YjBiNzUgYXMgQWxlcnREaWFsb2csICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2ZWRkN2E2MjNlZjBmNDBiIGFzIEFsZXJ0RGlhbG9nVHJpZ2dlciwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmMgYXMgQWxlcnREaWFsb2dQb3J0YWwsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2IGFzIEFsZXJ0RGlhbG9nT3ZlcmxheSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQgYXMgQWxlcnREaWFsb2dDb250ZW50LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjQ1NGY4MThjNThlZTg1ZCBhcyBBbGVydERpYWxvZ0FjdGlvbiwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDJmNjdhOTIzNTcxYWFlYTAgYXMgQWxlcnREaWFsb2dDYW5jZWwsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcgYXMgQWxlcnREaWFsb2dUaXRsZSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTUgYXMgQWxlcnREaWFsb2dEZXNjcmlwdGlvbiwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiBhcyBPdmVybGF5LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZTE5Y2Q1ZjkzNzZmOGNlZSBhcyBBY3Rpb24sICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ4NDhjOWI3ZWFkMGRmOTY3IGFzIENhbmNlbCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAgYXMgVGl0bGUsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkIGFzIERlc2NyaXB0aW9ufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsIi8qIVxuXHRDb3B5cmlnaHQgKGMpIDIwMTggSmVkIFdhdHNvbi5cblx0TGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcblx0aHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblx0dmFyIG5hdGl2ZUNvZGVTdHJpbmcgPSAnW25hdGl2ZSBjb2RlXSc7XG5cblx0ZnVuY3Rpb24gY2xhc3NOYW1lcygpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0aWYgKGFyZy5sZW5ndGgpIHtcblx0XHRcdFx0XHR2YXIgaW5uZXIgPSBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0XHRcdFx0aWYgKGlubmVyKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goaW5uZXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRpZiAoYXJnLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nICYmICFhcmcudG9TdHJpbmcudG9TdHJpbmcoKS5pbmNsdWRlcygnW25hdGl2ZSBjb2RlXScpKSB7XG5cdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZy50b1N0cmluZygpKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goa2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDgyXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDgyKVwiPlxuPHBhdGggZD1cIk0xMiAxMy4wNTM4TDYuOTI2ODkgMTguMTI2OUM2Ljc4ODQ0IDE4LjI2NTQgNi42MTQ0IDE4LjMzNjIgNi40MDQ3OSAxOC4zMzk0QzYuMTk1MTkgMTguMzQyNiA2LjAxNzk1IDE4LjI3MTggNS44NzMwOSAxOC4xMjY5QzUuNzI4MiAxNy45ODIgNS42NTU3NiAxNy44MDY0IDUuNjU1NzYgMTcuNkM1LjY1NTc2IDE3LjM5MzYgNS43MjgyIDE3LjIxOCA1Ljg3MzA5IDE3LjA3MzFMMTAuOTQ2MiAxMkw1Ljg3MzA5IDYuOTI2ODlDNS43MzQ2MiA2Ljc4ODQ0IDUuNjYzNzkgNi42MTQ0IDUuNjYwNTkgNi40MDQ3OUM1LjY1NzM3IDYuMTk1MTkgNS43MjgyIDYuMDE3OTUgNS44NzMwOSA1Ljg3MzA5QzYuMDE3OTUgNS43MjgyIDYuMTkzNTkgNS42NTU3NiA2LjM5OTk5IDUuNjU1NzZDNi42MDYzOSA1LjY1NTc2IDYuNzgyMDIgNS43MjgyIDYuOTI2ODkgNS44NzMwOUwxMiAxMC45NDYyTDE3LjA3MzEgNS44NzMwOUMxNy4yMTE1IDUuNzM0NjIgMTcuMzg1NiA1LjY2Mzc5IDE3LjU5NTIgNS42NjA1OUMxNy44MDQ4IDUuNjU3MzcgMTcuOTgyIDUuNzI4MiAxOC4xMjY5IDUuODczMDlDMTguMjcxOCA2LjAxNzk1IDE4LjM0NDIgNi4xOTM1OSAxOC4zNDQyIDYuMzk5OTlDMTguMzQ0MiA2LjYwNjM5IDE4LjI3MTggNi43ODIwMiAxOC4xMjY5IDYuOTI2ODlMMTMuMDUzOCAxMkwxOC4xMjY5IDE3LjA3MzFDMTguMjY1NCAxNy4yMTE1IDE4LjMzNjIgMTcuMzg1NiAxOC4zMzk0IDE3LjU5NTJDMTguMzQyNiAxNy44MDQ4IDE4LjI3MTggMTcuOTgyIDE4LjEyNjkgMTguMTI2OUMxNy45ODIgMTguMjcxOCAxNy44MDY0IDE4LjM0NDIgMTcuNiAxOC4zNDQyQzE3LjM5MzYgMTguMzQ0MiAxNy4yMTggMTguMjcxOCAxNy4wNzMxIDE4LjEyNjlMMTIgMTMuMDUzOFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIixudWxsLG51bGwsImltcG9ydCB7dXNlUmVmIGFzICQ4THZ2SyR1c2VSZWYsIHVzZU1lbW8gYXMgJDhMdnZLJHVzZU1lbW99IGZyb20gXCJyZWFjdFwiO1xuXG5cbmZ1bmN0aW9uICQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiKHZhbHVlKSB7XG4gICAgY29uc3QgcmVmID0gJDhMdnZLJHVzZVJlZih7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgcHJldmlvdXM6IHZhbHVlXG4gICAgfSk7IC8vIFdlIGNvbXBhcmUgdmFsdWVzIGJlZm9yZSBtYWtpbmcgYW4gdXBkYXRlIHRvIGVuc3VyZSB0aGF0XG4gICAgLy8gYSBjaGFuZ2UgaGFzIGJlZW4gbWFkZS4gVGhpcyBlbnN1cmVzIHRoZSBwcmV2aW91cyB2YWx1ZSBpc1xuICAgIC8vIHBlcnNpc3RlZCBjb3JyZWN0bHkgYmV0d2VlbiByZW5kZXJzLlxuICAgIHJldHVybiAkOEx2dkskdXNlTWVtbygoKT0+e1xuICAgICAgICBpZiAocmVmLmN1cnJlbnQudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICByZWYuY3VycmVudC5wcmV2aW91cyA9IHJlZi5jdXJyZW50LnZhbHVlO1xuICAgICAgICAgICAgcmVmLmN1cnJlbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmLmN1cnJlbnQucHJldmlvdXM7XG4gICAgfSwgW1xuICAgICAgICB2YWx1ZVxuICAgIF0pO1xufVxuXG5cblxuXG5leHBvcnQgeyQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiIGFzIHVzZVByZXZpb3VzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlU3RhdGUgYXMgJDlneUdSJHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICQ5Z3lHUiR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcblxuXG5cbmZ1bmN0aW9uICRkYjZjMzQ4NTE1MGI4ZTY2JGV4cG9ydCQxYWI3YWU3MTQ2OThjNGI4KGVsZW1lbnQpIHtcbiAgICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSAkOWd5R1IkdXNlU3RhdGUodW5kZWZpbmVkKTtcbiAgICAkOWd5R1IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBwcm92aWRlIHNpemUgYXMgZWFybHkgYXMgcG9zc2libGVcbiAgICAgICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiBlbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogZWxlbWVudC5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpPT57XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIG9ubHkgb2JzZXJ2ZSB0aGUgb25lIGVsZW1lbnQsIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIHRoZVxuICAgICAgICAgICAgICAgIC8vIGFycmF5XG4gICAgICAgICAgICAgICAgaWYgKCFlbnRyaWVzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGg7XG4gICAgICAgICAgICAgICAgbGV0IGhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAoJ2JvcmRlckJveFNpemUnIGluIGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclNpemVFbnRyeSA9IGVudHJ5Wydib3JkZXJCb3hTaXplJ107IC8vIGlyb24gb3V0IGRpZmZlcmVuY2VzIGJldHdlZW4gYnJvd3NlcnNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyU2l6ZSA9IEFycmF5LmlzQXJyYXkoYm9yZGVyU2l6ZUVudHJ5KSA/IGJvcmRlclNpemVFbnRyeVswXSA6IGJvcmRlclNpemVFbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBib3JkZXJTaXplWydpbmxpbmVTaXplJ107XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGJvcmRlclNpemVbJ2Jsb2NrU2l6ZSddO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBicm93c2VycyB0aGF0IGRvbid0IHN1cHBvcnQgYGJvcmRlckJveFNpemVgXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGNhbGN1bGF0ZSBpdCBvdXJzZWx2ZXMgdG8gZ2V0IHRoZSBjb3JyZWN0IGJvcmRlciBib3guXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge1xuICAgICAgICAgICAgICAgIGJveDogJ2JvcmRlci1ib3gnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+cmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgIH0gZWxzZSAvLyBXZSBvbmx5IHdhbnQgdG8gcmVzZXQgdG8gYHVuZGVmaW5lZGAgd2hlbiB0aGUgZWxlbWVudCBiZWNvbWVzIGBudWxsYCxcbiAgICAgICAgLy8gbm90IGlmIGl0IGNoYW5nZXMgdG8gYW5vdGhlciBlbGVtZW50LlxuICAgICAgICBzZXRTaXplKHVuZGVmaW5lZCk7XG4gICAgfSwgW1xuICAgICAgICBlbGVtZW50XG4gICAgXSk7XG4gICAgcmV0dXJuIHNpemU7XG59XG5cblxuXG5cbmV4cG9ydCB7JGRiNmMzNDg1MTUwYjhlNjYkZXhwb3J0JDFhYjdhZTcxNDY5OGM0YjggYXMgdXNlU2l6ZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDFicHZTJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDFicHZTJGZvcndhcmRSZWYsIHVzZVN0YXRlIGFzICQxYnB2UyR1c2VTdGF0ZSwgdXNlUmVmIGFzICQxYnB2UyR1c2VSZWYsIHVzZUVmZmVjdCBhcyAkMWJwdlMkdXNlRWZmZWN0LCBjcmVhdGVFbGVtZW50IGFzICQxYnB2UyRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQxYnB2UyR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkMWJwdlMkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDFicHZTJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkMWJwdlMkdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHt1c2VQcmV2aW91cyBhcyAkMWJwdlMkdXNlUHJldmlvdXN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXByZXZpb3VzXCI7XG5pbXBvcnQge3VzZVNpemUgYXMgJDFicHZTJHVzZVNpemV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXNpemVcIjtcbmltcG9ydCB7UHJlc2VuY2UgYXMgJDFicHZTJFByZXNlbmNlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkMWJwdlMkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENoZWNrYm94XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlNjk4YTcyZTkzMjQwMzQ2JHZhciRDSEVDS0JPWF9OQU1FID0gJ0NoZWNrYm94JztcbmNvbnN0IFskZTY5OGE3MmU5MzI0MDM0NiR2YXIkY3JlYXRlQ2hlY2tib3hDb250ZXh0LCAkZTY5OGE3MmU5MzI0MDM0NiRleHBvcnQkYjU2NmM0ZmY1NDg4ZWEwMV0gPSAkMWJwdlMkY3JlYXRlQ29udGV4dFNjb3BlKCRlNjk4YTcyZTkzMjQwMzQ2JHZhciRDSEVDS0JPWF9OQU1FKTtcbmNvbnN0IFskZTY5OGE3MmU5MzI0MDM0NiR2YXIkQ2hlY2tib3hQcm92aWRlciwgJGU2OThhNzJlOTMyNDAzNDYkdmFyJHVzZUNoZWNrYm94Q29udGV4dF0gPSAkZTY5OGE3MmU5MzI0MDM0NiR2YXIkY3JlYXRlQ2hlY2tib3hDb250ZXh0KCRlNjk4YTcyZTkzMjQwMzQ2JHZhciRDSEVDS0JPWF9OQU1FKTtcbmNvbnN0ICRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCQ0ODUxM2Y2YjlmOGNlNjJkID0gLyojX19QVVJFX18qLyAkMWJwdlMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVDaGVja2JveDogX19zY29wZUNoZWNrYm94ICwgbmFtZTogbmFtZSAsIGNoZWNrZWQ6IGNoZWNrZWRQcm9wICwgZGVmYXVsdENoZWNrZWQ6IGRlZmF1bHRDaGVja2VkICwgcmVxdWlyZWQ6IHJlcXVpcmVkICwgZGlzYWJsZWQ6IGRpc2FibGVkICwgdmFsdWU6IHZhbHVlID0gJ29uJyAsIG9uQ2hlY2tlZENoYW5nZTogb25DaGVja2VkQ2hhbmdlICwgLi4uY2hlY2tib3hQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2J1dHRvbiwgc2V0QnV0dG9uXSA9ICQxYnB2UyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMWJwdlMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRCdXR0b24obm9kZSlcbiAgICApO1xuICAgIGNvbnN0IGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmID0gJDFicHZTJHVzZVJlZihmYWxzZSk7IC8vIFdlIHNldCB0aGlzIHRvIHRydWUgYnkgZGVmYXVsdCBzbyB0aGF0IGV2ZW50cyBidWJibGUgdG8gZm9ybXMgd2l0aG91dCBKUyAoU1NSKVxuICAgIGNvbnN0IGlzRm9ybUNvbnRyb2wgPSBidXR0b24gPyBCb29sZWFuKGJ1dHRvbi5jbG9zZXN0KCdmb3JtJykpIDogdHJ1ZTtcbiAgICBjb25zdCBbY2hlY2tlZCA9IGZhbHNlLCBzZXRDaGVja2VkXSA9ICQxYnB2UyR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IGNoZWNrZWRQcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdENoZWNrZWQsXG4gICAgICAgIG9uQ2hhbmdlOiBvbkNoZWNrZWRDaGFuZ2VcbiAgICB9KTtcbiAgICBjb25zdCBpbml0aWFsQ2hlY2tlZFN0YXRlUmVmID0gJDFicHZTJHVzZVJlZihjaGVja2VkKTtcbiAgICAkMWJwdlMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGZvcm0gPSBidXR0b24gPT09IG51bGwgfHwgYnV0dG9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBidXR0b24uZm9ybTtcbiAgICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc2V0ID0gKCk9PnNldENoZWNrZWQoaW5pdGlhbENoZWNrZWRTdGF0ZVJlZi5jdXJyZW50KVxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgZm9ybS5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsIHJlc2V0KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+Zm9ybS5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNldCcsIHJlc2V0KVxuICAgICAgICAgICAgO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBidXR0b24sXG4gICAgICAgIHNldENoZWNrZWRcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMWJwdlMkY3JlYXRlRWxlbWVudCgkZTY5OGE3MmU5MzI0MDM0NiR2YXIkQ2hlY2tib3hQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZUNoZWNrYm94LFxuICAgICAgICBzdGF0ZTogY2hlY2tlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkXG4gICAgfSwgLyojX19QVVJFX18qLyAkMWJwdlMkY3JlYXRlRWxlbWVudCgkMWJwdlMkUHJpbWl0aXZlLmJ1dHRvbiwgJDFicHZTJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgcm9sZTogXCJjaGVja2JveFwiLFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiAkZTY5OGE3MmU5MzI0MDM0NiR2YXIkaXNJbmRldGVybWluYXRlKGNoZWNrZWQpID8gJ21peGVkJyA6IGNoZWNrZWQsXG4gICAgICAgIFwiYXJpYS1yZXF1aXJlZFwiOiByZXF1aXJlZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICRlNjk4YTcyZTkzMjQwMzQ2JHZhciRnZXRTdGF0ZShjaGVja2VkKSxcbiAgICAgICAgXCJkYXRhLWRpc2FibGVkXCI6IGRpc2FibGVkID8gJycgOiB1bmRlZmluZWQsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgfSwgY2hlY2tib3hQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25LZXlEb3duOiAkMWJwdlMkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gV0FJIEFSSUEsIENoZWNrYm94ZXMgZG9uJ3QgYWN0aXZhdGUgb24gZW50ZXIga2V5cHJlc3NcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkNsaWNrOiAkMWJwdlMkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgc2V0Q2hlY2tlZCgocHJldkNoZWNrZWQpPT4kZTY5OGE3MmU5MzI0MDM0NiR2YXIkaXNJbmRldGVybWluYXRlKHByZXZDaGVja2VkKSA/IHRydWUgOiAhcHJldkNoZWNrZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaXNGb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQgPSBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyAvLyBpZiBjaGVja2JveCBpcyBpbiBhIGZvcm0sIHN0b3AgcHJvcGFnYXRpb24gZnJvbSB0aGUgYnV0dG9uIHNvIHRoYXQgd2Ugb25seSBwcm9wYWdhdGVcbiAgICAgICAgICAgICAgICAvLyBvbmUgY2xpY2sgZXZlbnQgKGZyb20gdGhlIGlucHV0KS4gV2UgcHJvcGFnYXRlIGNoYW5nZXMgZnJvbSBhbiBpbnB1dCBzbyB0aGF0IG5hdGl2ZVxuICAgICAgICAgICAgICAgIC8vIGZvcm0gdmFsaWRhdGlvbiB3b3JrcyBhbmQgZm9ybSBldmVudHMgcmVmbGVjdCBjaGVja2JveCB1cGRhdGVzLlxuICAgICAgICAgICAgICAgIGlmICghaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpLCBpc0Zvcm1Db250cm9sICYmIC8qI19fUFVSRV9fKi8gJDFicHZTJGNyZWF0ZUVsZW1lbnQoJGU2OThhNzJlOTMyNDAzNDYkdmFyJEJ1YmJsZUlucHV0LCB7XG4gICAgICAgIGNvbnRyb2w6IGJ1dHRvbixcbiAgICAgICAgYnViYmxlczogIWhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQsXG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQgLy8gV2UgdHJhbnNmb3JtIGJlY2F1c2UgdGhlIGlucHV0IGlzIGFic29sdXRlbHkgcG9zaXRpb25lZCBidXQgd2UgaGF2ZVxuICAgICAgICAsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKSdcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCQ0ODUxM2Y2YjlmOGNlNjJkLCB7XG4gICAgZGlzcGxheU5hbWU6ICRlNjk4YTcyZTkzMjQwMzQ2JHZhciRDSEVDS0JPWF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENoZWNrYm94SW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlNjk4YTcyZTkzMjQwMzQ2JHZhciRJTkRJQ0FUT1JfTkFNRSA9ICdDaGVja2JveEluZGljYXRvcic7XG5jb25zdCAkZTY5OGE3MmU5MzI0MDM0NiRleHBvcnQkNTlhYWQ3MzhmNTFkMWMwNSA9IC8qI19fUFVSRV9fKi8gJDFicHZTJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQ2hlY2tib3g6IF9fc2NvcGVDaGVja2JveCAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCAuLi5pbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRlNjk4YTcyZTkzMjQwMzQ2JHZhciR1c2VDaGVja2JveENvbnRleHQoJGU2OThhNzJlOTMyNDAzNDYkdmFyJElORElDQVRPUl9OQU1FLCBfX3Njb3BlQ2hlY2tib3gpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxYnB2UyRjcmVhdGVFbGVtZW50KCQxYnB2UyRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8ICRlNjk4YTcyZTkzMjQwMzQ2JHZhciRpc0luZGV0ZXJtaW5hdGUoY29udGV4dC5zdGF0ZSkgfHwgY29udGV4dC5zdGF0ZSA9PT0gdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDFicHZTJGNyZWF0ZUVsZW1lbnQoJDFicHZTJFByaW1pdGl2ZS5zcGFuLCAkMWJwdlMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJGU2OThhNzJlOTMyNDAzNDYkdmFyJGdldFN0YXRlKGNvbnRleHQuc3RhdGUpLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogY29udGV4dC5kaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkXG4gICAgfSwgaW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZVxuICAgICAgICB9XG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCQ1OWFhZDczOGY1MWQxYzA1LCB7XG4gICAgZGlzcGxheU5hbWU6ICRlNjk4YTcyZTkzMjQwMzQ2JHZhciRJTkRJQ0FUT1JfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGNvbnN0ICRlNjk4YTcyZTkzMjQwMzQ2JHZhciRCdWJibGVJbnB1dCA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IGNvbnRyb2w6IGNvbnRyb2wgLCBjaGVja2VkOiBjaGVja2VkICwgYnViYmxlczogYnViYmxlcyA9IHRydWUgLCAuLi5pbnB1dFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCByZWYgPSAkMWJwdlMkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZXZDaGVja2VkID0gJDFicHZTJHVzZVByZXZpb3VzKGNoZWNrZWQpO1xuICAgIGNvbnN0IGNvbnRyb2xTaXplID0gJDFicHZTJHVzZVNpemUoY29udHJvbCk7IC8vIEJ1YmJsZSBjaGVja2VkIGNoYW5nZSB0byBwYXJlbnRzIChlLmcgZm9ybSBjaGFuZ2UgZXZlbnQpXG4gICAgJDFicHZTJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBpbnB1dCA9IHJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBpbnB1dFByb3RvID0gd2luZG93LkhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpbnB1dFByb3RvLCAnY2hlY2tlZCcpO1xuICAgICAgICBjb25zdCBzZXRDaGVja2VkID0gZGVzY3JpcHRvci5zZXQ7XG4gICAgICAgIGlmIChwcmV2Q2hlY2tlZCAhPT0gY2hlY2tlZCAmJiBzZXRDaGVja2VkKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IG5ldyBFdmVudCgnY2xpY2snLCB7XG4gICAgICAgICAgICAgICAgYnViYmxlczogYnViYmxlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpbnB1dC5pbmRldGVybWluYXRlID0gJGU2OThhNzJlOTMyNDAzNDYkdmFyJGlzSW5kZXRlcm1pbmF0ZShjaGVja2VkKTtcbiAgICAgICAgICAgIHNldENoZWNrZWQuY2FsbChpbnB1dCwgJGU2OThhNzJlOTMyNDAzNDYkdmFyJGlzSW5kZXRlcm1pbmF0ZShjaGVja2VkKSA/IGZhbHNlIDogY2hlY2tlZCk7XG4gICAgICAgICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJldkNoZWNrZWQsXG4gICAgICAgIGNoZWNrZWQsXG4gICAgICAgIGJ1YmJsZXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMWJwdlMkY3JlYXRlRWxlbWVudChcImlucHV0XCIsICQxYnB2UyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICBkZWZhdWx0Q2hlY2tlZDogJGU2OThhNzJlOTMyNDAzNDYkdmFyJGlzSW5kZXRlcm1pbmF0ZShjaGVja2VkKSA/IGZhbHNlIDogY2hlY2tlZFxuICAgIH0sIGlucHV0UHJvcHMsIHtcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgICAgICAgLi4uY29udHJvbFNpemUsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICBtYXJnaW46IDBcbiAgICAgICAgfVxuICAgIH0pKTtcbn07XG5mdW5jdGlvbiAkZTY5OGE3MmU5MzI0MDM0NiR2YXIkaXNJbmRldGVybWluYXRlKGNoZWNrZWQpIHtcbiAgICByZXR1cm4gY2hlY2tlZCA9PT0gJ2luZGV0ZXJtaW5hdGUnO1xufVxuZnVuY3Rpb24gJGU2OThhNzJlOTMyNDAzNDYkdmFyJGdldFN0YXRlKGNoZWNrZWQpIHtcbiAgICByZXR1cm4gJGU2OThhNzJlOTMyNDAzNDYkdmFyJGlzSW5kZXRlcm1pbmF0ZShjaGVja2VkKSA/ICdpbmRldGVybWluYXRlJyA6IGNoZWNrZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJztcbn1cbmNvbnN0ICRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JDQ4NTEzZjZiOWY4Y2U2MmQ7XG5jb25zdCAkZTY5OGE3MmU5MzI0MDM0NiRleHBvcnQkYWRiNTg0NzM3ZDcxMmI3MCA9ICRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCQ1OWFhZDczOGY1MWQxYzA1O1xuXG5cblxuXG5leHBvcnQgeyRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCRiNTY2YzRmZjU0ODhlYTAxIGFzIGNyZWF0ZUNoZWNrYm94U2NvcGUsICRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCQ0ODUxM2Y2YjlmOGNlNjJkIGFzIENoZWNrYm94LCAkZTY5OGE3MmU5MzI0MDM0NiRleHBvcnQkNTlhYWQ3MzhmNTFkMWMwNSBhcyBDaGVja2JveEluZGljYXRvciwgJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAgYXMgSW5kaWNhdG9yfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwODVcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwODUpXCI+XG48cGF0aCBkPVwiTTExLjk5OTcgMTguNzVDMTEuNzg3MSAxOC43NSAxMS42MDkgMTguNjc4MSAxMS40NjU0IDE4LjUzNDRDMTEuMzIxOCAxOC4zOTA2IDExLjI1IDE4LjIxMjUgMTEuMjUgMThWMTIuNzVINS45OTk5N0M1Ljc4NzQ3IDEyLjc1IDUuNjA5MzYgMTIuNjc4IDUuNDY1NjMgMTIuNTM0MkM1LjMyMTg4IDEyLjM5MDQgNS4yNSAxMi4yMTIyIDUuMjUgMTEuOTk5N0M1LjI1IDExLjc4NzEgNS4zMjE4OCAxMS42MDkgNS40NjU2MyAxMS40NjU0QzUuNjA5MzYgMTEuMzIxOCA1Ljc4NzQ3IDExLjI1IDUuOTk5OTcgMTEuMjVIMTEuMjVWNS45OTk5N0MxMS4yNSA1Ljc4NzQ3IDExLjMyMTkgNS42MDkzNSAxMS40NjU3IDUuNDY1NkMxMS42MDk1IDUuMzIxODcgMTEuNzg3NyA1LjI1IDEyLjAwMDMgNS4yNUMxMi4yMTI5IDUuMjUgMTIuMzkxIDUuMzIxODcgMTIuNTM0NiA1LjQ2NTZDMTIuNjc4MiA1LjYwOTM1IDEyLjc0OTkgNS43ODc0NyAxMi43NDk5IDUuOTk5OTdWMTEuMjVIMThDMTguMjEyNSAxMS4yNSAxOC4zOTA2IDExLjMyMTkgMTguNTM0NCAxMS40NjU3QzE4LjY3ODEgMTEuNjA5NSAxOC43NSAxMS43ODc3IDE4Ljc1IDEyLjAwMDNDMTguNzUgMTIuMjEyOSAxOC42NzgxIDEyLjM5MSAxOC41MzQ0IDEyLjUzNDZDMTguMzkwNiAxMi42NzgyIDE4LjIxMjUgMTIuNzUgMTggMTIuNzVIMTIuNzQ5OVYxOEMxMi43NDk5IDE4LjIxMjUgMTIuNjc4IDE4LjM5MDYgMTIuNTM0MiAxOC41MzQ0QzEyLjM5MDQgMTguNjc4MSAxMi4yMTIyIDE4Ljc1IDExLjk5OTcgMTguNzVaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNMTIgMTQuNjc3YS45My45MyAwIDAgMS0uMzQtLjA2Ni44NC44NCAwIDAgMS0uMjkzLS4xOUw2Ljg3MyA5LjkyN2EuNzE3LjcxNyAwIDAgMS0uMjE3LS41MjdjMC0uMjA2LjA3Mi0uMzgyLjIxNy0uNTI3YS43MTcuNzE3IDAgMCAxIC41MjctLjIxN2MuMjA2IDAgLjM4Mi4wNzIuNTI3LjIxN0wxMiAxMi45NDZsNC4wNzMtNC4wNzNhLjcxNy43MTcgMCAwIDEgLjUyNy0uMjE3Yy4yMDYgMCAuMzgyLjA3Mi41MjcuMjE3LjE0NS4xNDUuMjE3LjMyLjIxNy41MjdhLjcxNy43MTcgMCAwIDEtLjIxNy41MjdsLTQuNDk0IDQuNDk0YS44My44MyAwIDAgMS0uNjMzLjI1NlpcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPGcgaWQ9XCJpY29uOiBhcnJvdy1sZWZ0IChyZWd1bGFyKSBbRkFdXCIgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF83NjZfMjU5MClcIj5cbjxwYXRoIGlkPVwicGF0aFwiIGQ9XCJNOS4yMDc0MSAxNi41Njk2TDkuOTAzNDcgMTUuODczNUMxMC4wNjgyIDE1LjcwODggMTAuMDY4MiAxNS40NDE2IDkuOTAzNDcgMTUuMjc2OUw0LjQ0OTY4IDkuODIzMTJIMTYuNDUzMUMxNi42ODYxIDkuODIzMTIgMTYuODc1IDkuNjM0MjMgMTYuODc1IDkuNDAxMjVWOC40MTY4N0MxNi44NzUgOC4xODM4OSAxNi42ODYxIDcuOTk1IDE2LjQ1MzEgNy45OTVINC40NDk2OEw5LjkwMzQ3IDIuNTQxMjJDMTAuMDY4MiAyLjM3NjQ3IDEwLjA2ODIgMi4xMDkzNiA5LjkwMzQ3IDEuOTQ0NThMOS4yMDc0MSAxLjI0ODU2QzkuMDQyNjcgMS4wODM4MSA4Ljc3NTU1IDEuMDgzODEgOC42MTA3NyAxLjI0ODU2TDEuMjQ4NTYgOC42MTA3NkMxLjA4MzgxIDguNzc1NSAxLjA4MzgxIDkuMDQyNjIgMS4yNDg1NiA5LjIwNzRMOC42MTA3NyAxNi41Njk2QzguNzc1NTEgMTYuNzM0MyA5LjA0MjYzIDE2LjczNDMgOS4yMDc0MSAxNi41Njk2WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPGRlZnM+XG48Y2xpcFBhdGggaWQ9XCJjbGlwMF83NjZfMjU5MFwiPlxuPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cIndoaXRlXCIvPlxuPC9jbGlwUGF0aD5cbjwvZGVmcz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzIwMl85MDk0XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfMjAyXzkwOTQpXCI+XG48cGF0aCBkPVwiTTEyLjAwMTYgMjEuNUMxMC42ODc3IDIxLjUgOS40NTI2OCAyMS4yNTA2IDguMjk2NTUgMjAuNzUyQzcuMTQwNCAyMC4yNTMzIDYuMTM0NzIgMTkuNTc2NSA1LjI3OTUgMTguNzIxN0M0LjQyNDI3IDE3Ljg2NjkgMy43NDcyMSAxNi44NjE2IDMuMjQ4MzMgMTUuNzA2QzIuNzQ5NDQgMTQuNTUwNCAyLjUgMTMuMzE1NiAyLjUgMTIuMDAxN0MyLjUgMTAuNjg3NyAyLjc0OTMzIDkuNDUyNjggMy4yNDggOC4yOTY1NUMzLjc0NjY3IDcuMTQwNCA0LjQyMzQyIDYuMTM0NzIgNS4yNzgyNSA1LjI3OTVDNi4xMzMxIDQuNDI0MjcgNy4xMzgzNCAzLjc0NzIxIDguMjkzOTggMy4yNDgzM0M5LjQ0OTU5IDIuNzQ5NDQgMTAuNjg0NCAyLjUgMTEuOTk4MyAyLjVDMTMuMzEyMiAyLjUgMTQuNTQ3MyAyLjc0OTMzIDE1LjcwMzQgMy4yNDhDMTYuODU5NiAzLjc0NjY3IDE3Ljg2NTIgNC40MjM0MiAxOC43MjA1IDUuMjc4MjVDMTkuNTc1NyA2LjEzMzEgMjAuMjUyNyA3LjEzODM0IDIwLjc1MTYgOC4yOTM5OEMyMS4yNTA1IDkuNDQ5NTkgMjEuNSAxMC42ODQ0IDIxLjUgMTEuOTk4M0MyMS41IDEzLjMxMjIgMjEuMjUwNiAxNC41NDczIDIwLjc1MiAxNS43MDM0QzIwLjI1MzMgMTYuODU5NiAxOS41NzY1IDE3Ljg2NTIgMTguNzIxNyAxOC43MjA1QzE3Ljg2NjkgMTkuNTc1NyAxNi44NjE2IDIwLjI1MjcgMTUuNzA2IDIwLjc1MTZDMTQuNTUwNCAyMS4yNTA1IDEzLjMxNTYgMjEuNSAxMi4wMDE2IDIxLjVaTTEyIDIwQzE0LjIzMzMgMjAgMTYuMTI1IDE5LjIyNSAxNy42NzUgMTcuNjc1QzE5LjIyNSAxNi4xMjUgMjAgMTQuMjMzMyAyMCAxMkMyMCAxMS4wNjE4IDE5LjgzOTcgMTAuMTU4MyAxOS41MTkyIDkuMjg5NThDMTkuMTk4NyA4LjQyMDg2IDE4Ljc0MSA3LjYyNjg4IDE4LjE0NjEgNi45MDc2NUw2LjkwNzY1IDE4LjE0NjFDNy42MjY4OCAxOC43NDc0IDguNDIwODYgMTkuMjA2NyA5LjI4OTU4IDE5LjUyNEMxMC4xNTgzIDE5Ljg0MTMgMTEuMDYxOCAyMCAxMiAyMFpNNS44NTM4MyAxNy4wOTIzTDE3LjA5MjMgNS44NTM4MkMxNi4zNzk1IDUuMjQ2MTQgMTUuNTg3NyA0Ljc4NTI0IDE0LjcxNjkgNC40NzExM0MxMy44NDYxIDQuMTU3MDMgMTIuOTQwNCAzLjk5OTk3IDEyIDMuOTk5OTdDOS43NjY2NCAzLjk5OTk3IDcuODc0OTggNC43NzQ5OCA2LjMyNDk4IDYuMzI0OThDNC43NzQ5OCA3Ljg3NDk4IDMuOTk5OTggOS43NjY2NCAzLjk5OTk4IDEyQzMuOTk5OTggMTIuOTM4MiA0LjE1ODYzIDEzLjg0MTcgNC40NzU5NSAxNC43MTA0QzQuNzkzMjUgMTUuNTc5MSA1LjI1MjU0IDE2LjM3MzEgNS44NTM4MyAxNy4wOTIzWlwiIGZpbGw9XCIjNDI0NTRCXCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDcwXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDcwKVwiPlxuPHBhdGggZD1cIk0zIDE0LjVDMi44NjY2NyAxNC41IDIuNzUgMTQuNDUgMi42NSAxNC4zNUMyLjU1IDE0LjI1IDIuNSAxNC4xMzMzIDIuNSAxNEMyLjUgMTMuODY2NyAyLjU1IDEzLjc1IDIuNjUgMTMuNjVDMi43NSAxMy41NSAyLjg2NjY3IDEzLjUgMyAxMy41QzMuMTMzMzMgMTMuNSAzLjI1IDEzLjU1IDMuMzUgMTMuNjVDMy40NSAxMy43NSAzLjUgMTMuODY2NyAzLjUgMTRDMy41IDE0LjEzMzMgMy40NSAxNC4yNSAzLjM1IDE0LjM1QzMuMjUgMTQuNDUgMy4xMzMzMyAxNC41IDMgMTQuNVpNMyAxMC41QzIuODY2NjcgMTAuNSAyLjc1IDEwLjQ1IDIuNjUgMTAuMzVDMi41NSAxMC4yNSAyLjUgMTAuMTMzMyAyLjUgMTBDMi41IDkuODY2NjcgMi41NSA5Ljc1IDIuNjUgOS42NUMyLjc1IDkuNTUgMi44NjY2NyA5LjUgMyA5LjVDMy4xMzMzMyA5LjUgMy4yNSA5LjU1IDMuMzUgOS42NUMzLjQ1IDkuNzUgMy41IDkuODY2NjcgMy41IDEwQzMuNSAxMC4xMzMzIDMuNDUgMTAuMjUgMy4zNSAxMC4zNUMzLjI1IDEwLjQ1IDMuMTMzMzMgMTAuNSAzIDEwLjVaTTYgMTguOTIzMUM1LjczODQ3IDE4LjkyMzEgNS41MTkyMyAxOC44MzQ2IDUuMzQyMyAxOC42NTc3QzUuMTY1MzggMTguNDgwOCA1LjA3NjkzIDE4LjI2MTUgNS4wNzY5MyAxOEM1LjA3NjkzIDE3LjczODUgNS4xNjUzOCAxNy41MTkyIDUuMzQyMyAxNy4zNDIzQzUuNTE5MjMgMTcuMTY1NCA1LjczODQ3IDE3LjA3NjkgNiAxNy4wNzY5QzYuMjYxNTMgMTcuMDc2OSA2LjQ4MDc3IDE3LjE2NTQgNi42NTc3IDE3LjM0MjNDNi44MzQ2MiAxNy41MTkyIDYuOTIzMDggMTcuNzM4NSA2LjkyMzA4IDE4QzYuOTIzMDggMTguMjYxNSA2LjgzNDYyIDE4LjQ4MDggNi42NTc3IDE4LjY1NzdDNi40ODA3NyAxOC44MzQ2IDYuMjYxNTMgMTguOTIzMSA2IDE4LjkyMzFaTTYgMTQuOTIzMUM1LjczODQ3IDE0LjkyMzEgNS41MTkyMyAxNC44MzQ2IDUuMzQyMyAxNC42NTc3QzUuMTY1MzggMTQuNDgwOCA1LjA3NjkzIDE0LjI2MTUgNS4wNzY5MyAxNEM1LjA3NjkzIDEzLjczODUgNS4xNjUzOCAxMy41MTkyIDUuMzQyMyAxMy4zNDIzQzUuNTE5MjMgMTMuMTY1NCA1LjczODQ3IDEzLjA3NjkgNiAxMy4wNzY5QzYuMjYxNTMgMTMuMDc2OSA2LjQ4MDc3IDEzLjE2NTQgNi42NTc3IDEzLjM0MjNDNi44MzQ2MiAxMy41MTkyIDYuOTIzMDggMTMuNzM4NSA2LjkyMzA4IDE0QzYuOTIzMDggMTQuMjYxNSA2LjgzNDYyIDE0LjQ4MDggNi42NTc3IDE0LjY1NzdDNi40ODA3NyAxNC44MzQ2IDYuMjYxNTMgMTQuOTIzMSA2IDE0LjkyMzFaTTYgMTAuOTIzMUM1LjczODQ3IDEwLjkyMzEgNS41MTkyMyAxMC44MzQ2IDUuMzQyMyAxMC42NTc3QzUuMTY1MzggMTAuNDgwOCA1LjA3NjkzIDEwLjI2MTUgNS4wNzY5MyAxMEM1LjA3NjkzIDkuNzM4NDcgNS4xNjUzOCA5LjUxOTI0IDUuMzQyMyA5LjM0MjMyQzUuNTE5MjMgOS4xNjUzOSA1LjczODQ3IDkuMDc2OTIgNiA5LjA3NjkyQzYuMjYxNTMgOS4wNzY5MiA2LjQ4MDc3IDkuMTY1MzkgNi42NTc3IDkuMzQyMzJDNi44MzQ2MiA5LjUxOTI0IDYuOTIzMDggOS43Mzg0NyA2LjkyMzA4IDEwQzYuOTIzMDggMTAuMjYxNSA2LjgzNDYyIDEwLjQ4MDggNi42NTc3IDEwLjY1NzdDNi40ODA3NyAxMC44MzQ2IDYuMjYxNTMgMTAuOTIzMSA2IDEwLjkyMzFaTTYgNi45MjMwOEM1LjczODQ3IDYuOTIzMDggNS41MTkyMyA2LjgzNDYxIDUuMzQyMyA2LjY1NzY4QzUuMTY1MzggNi40ODA3NiA1LjA3NjkzIDYuMjYxNTMgNS4wNzY5MyA2QzUuMDc2OTMgNS43Mzg0NyA1LjE2NTM4IDUuNTE5MjQgNS4zNDIzIDUuMzQyMzJDNS41MTkyMyA1LjE2NTM5IDUuNzM4NDcgNS4wNzY5MyA2IDUuMDc2OTNDNi4yNjE1MyA1LjA3NjkzIDYuNDgwNzcgNS4xNjUzOSA2LjY1NzcgNS4zNDIzMkM2LjgzNDYyIDUuNTE5MjQgNi45MjMwOCA1LjczODQ3IDYuOTIzMDggNkM2LjkyMzA4IDYuMjYxNTMgNi44MzQ2MiA2LjQ4MDc2IDYuNjU3NyA2LjY1NzY4QzYuNDgwNzcgNi44MzQ2MSA2LjI2MTUzIDYuOTIzMDggNiA2LjkyMzA4Wk0xMC4wMDIzIDE1LjM0NjJDOS42Mjg5NyAxNS4zNDYyIDkuMzEwOTEgMTUuMjE1NSA5LjA0ODA4IDE0Ljk1NDJDOC43ODUyNiAxNC42OTI5IDguNjUzODUgMTQuMzc1NiA4LjY1Mzg1IDE0LjAwMjNDOC42NTM4NSAxMy42MjkgOC43ODQ1MSAxMy4zMTA5IDkuMDQ1ODMgMTMuMDQ4MUM5LjMwNzE0IDEyLjc4NTMgOS42MjQ0NCAxMi42NTM4IDkuOTk3NzMgMTIuNjUzOEMxMC4zNzEgMTIuNjUzOCAxMC42ODkxIDEyLjc4NDUgMTAuOTUxOSAxMy4wNDU4QzExLjIxNDcgMTMuMzA3MSAxMS4zNDYyIDEzLjYyNDQgMTEuMzQ2MiAxMy45OTc3QzExLjM0NjIgMTQuMzcxIDExLjIxNTUgMTQuNjg5MSAxMC45NTQyIDE0Ljk1MTlDMTAuNjkyOSAxNS4yMTQ3IDEwLjM3NTYgMTUuMzQ2MiAxMC4wMDIzIDE1LjM0NjJaTTEwLjAwMjMgMTEuMzQ2MkM5LjYyODk3IDExLjM0NjIgOS4zMTA5MSAxMS4yMTU1IDkuMDQ4MDggMTAuOTU0MkM4Ljc4NTI2IDEwLjY5MjkgOC42NTM4NSAxMC4zNzU2IDguNjUzODUgMTAuMDAyM0M4LjY1Mzg1IDkuNjI4OTcgOC43ODQ1MSA5LjMxMDkxIDkuMDQ1ODMgOS4wNDgwOEM5LjMwNzE0IDguNzg1MjYgOS42MjQ0NCA4LjY1Mzg1IDkuOTk3NzMgOC42NTM4NUMxMC4zNzEgOC42NTM4NSAxMC42ODkxIDguNzg0NTEgMTAuOTUxOSA5LjA0NTgzQzExLjIxNDcgOS4zMDcxMyAxMS4zNDYyIDkuNjI0NDIgMTEuMzQ2MiA5Ljk5NzczQzExLjM0NjIgMTAuMzcxIDExLjIxNTUgMTAuNjg5MSAxMC45NTQyIDEwLjk1MTlDMTAuNjkyOSAxMS4yMTQ3IDEwLjM3NTYgMTEuMzQ2MiAxMC4wMDIzIDExLjM0NjJaTTEwIDE4LjkyMzFDOS43Mzg0NyAxOC45MjMxIDkuNTE5MjMgMTguODM0NiA5LjM0MjMgMTguNjU3N0M5LjE2NTM4IDE4LjQ4MDggOS4wNzY5MiAxOC4yNjE1IDkuMDc2OTIgMThDOS4wNzY5MiAxNy43Mzg1IDkuMTY1MzggMTcuNTE5MiA5LjM0MjMgMTcuMzQyM0M5LjUxOTIzIDE3LjE2NTQgOS43Mzg0NyAxNy4wNzY5IDEwIDE3LjA3NjlDMTAuMjYxNSAxNy4wNzY5IDEwLjQ4MDggMTcuMTY1NCAxMC42NTc3IDE3LjM0MjNDMTAuODM0NiAxNy41MTkyIDEwLjkyMzEgMTcuNzM4NSAxMC45MjMxIDE4QzEwLjkyMzEgMTguMjYxNSAxMC44MzQ2IDE4LjQ4MDggMTAuNjU3NyAxOC42NTc3QzEwLjQ4MDggMTguODM0NiAxMC4yNjE1IDE4LjkyMzEgMTAgMTguOTIzMVpNMTAgNi45MjMwOEM5LjczODQ3IDYuOTIzMDggOS41MTkyMyA2LjgzNDYxIDkuMzQyMyA2LjY1NzY4QzkuMTY1MzggNi40ODA3NiA5LjA3NjkyIDYuMjYxNTMgOS4wNzY5MiA2QzkuMDc2OTIgNS43Mzg0NyA5LjE2NTM4IDUuNTE5MjQgOS4zNDIzIDUuMzQyMzJDOS41MTkyMyA1LjE2NTM5IDkuNzM4NDcgNS4wNzY5MyAxMCA1LjA3NjkzQzEwLjI2MTUgNS4wNzY5MyAxMC40ODA4IDUuMTY1MzkgMTAuNjU3NyA1LjM0MjMyQzEwLjgzNDYgNS41MTkyNCAxMC45MjMxIDUuNzM4NDcgMTAuOTIzMSA2QzEwLjkyMzEgNi4yNjE1MyAxMC44MzQ2IDYuNDgwNzYgMTAuNjU3NyA2LjY1NzY4QzEwLjQ4MDggNi44MzQ2MSAxMC4yNjE1IDYuOTIzMDggMTAgNi45MjMwOFpNMTAgMjEuNUM5Ljg2NjY3IDIxLjUgOS43NSAyMS40NSA5LjY1IDIxLjM1QzkuNTUgMjEuMjUgOS41IDIxLjEzMzMgOS41IDIxQzkuNSAyMC44NjY3IDkuNTUgMjAuNzUgOS42NSAyMC42NUM5Ljc1IDIwLjU1IDkuODY2NjcgMjAuNSAxMCAyMC41QzEwLjEzMzMgMjAuNSAxMC4yNSAyMC41NSAxMC4zNSAyMC42NUMxMC40NSAyMC43NSAxMC41IDIwLjg2NjcgMTAuNSAyMUMxMC41IDIxLjEzMzMgMTAuNDUgMjEuMjUgMTAuMzUgMjEuMzVDMTAuMjUgMjEuNDUgMTAuMTMzMyAyMS41IDEwIDIxLjVaTTEwIDMuNUM5Ljg2NjY3IDMuNSA5Ljc1IDMuNDUgOS42NSAzLjM1QzkuNTUgMy4yNSA5LjUgMy4xMzMzMyA5LjUgM0M5LjUgMi44NjY2NyA5LjU1IDIuNzUgOS42NSAyLjY1QzkuNzUgMi41NSA5Ljg2NjY3IDIuNSAxMCAyLjVDMTAuMTMzMyAyLjUgMTAuMjUgMi41NSAxMC4zNSAyLjY1QzEwLjQ1IDIuNzUgMTAuNSAyLjg2NjY3IDEwLjUgM0MxMC41IDMuMTMzMzMgMTAuNDUgMy4yNSAxMC4zNSAzLjM1QzEwLjI1IDMuNDUgMTAuMTMzMyAzLjUgMTAgMy41Wk0xNC4wMDIzIDE1LjM0NjJDMTMuNjI5IDE1LjM0NjIgMTMuMzEwOSAxNS4yMTU1IDEzLjA0ODEgMTQuOTU0MkMxMi43ODUzIDE0LjY5MjkgMTIuNjUzOCAxNC4zNzU2IDEyLjY1MzggMTQuMDAyM0MxMi42NTM4IDEzLjYyOSAxMi43ODQ1IDEzLjMxMDkgMTMuMDQ1OCAxMy4wNDgxQzEzLjMwNzEgMTIuNzg1MyAxMy42MjQ0IDEyLjY1MzggMTMuOTk3NyAxMi42NTM4QzE0LjM3MSAxMi42NTM4IDE0LjY4OTEgMTIuNzg0NSAxNC45NTE5IDEzLjA0NThDMTUuMjE0NyAxMy4zMDcxIDE1LjM0NjIgMTMuNjI0NCAxNS4zNDYyIDEzLjk5NzdDMTUuMzQ2MiAxNC4zNzEgMTUuMjE1NSAxNC42ODkxIDE0Ljk1NDIgMTQuOTUxOUMxNC42OTI5IDE1LjIxNDcgMTQuMzc1NiAxNS4zNDYyIDE0LjAwMjMgMTUuMzQ2MlpNMTQuMDAyMyAxMS4zNDYyQzEzLjYyOSAxMS4zNDYyIDEzLjMxMDkgMTEuMjE1NSAxMy4wNDgxIDEwLjk1NDJDMTIuNzg1MyAxMC42OTI5IDEyLjY1MzggMTAuMzc1NiAxMi42NTM4IDEwLjAwMjNDMTIuNjUzOCA5LjYyODk3IDEyLjc4NDUgOS4zMTA5MSAxMy4wNDU4IDkuMDQ4MDhDMTMuMzA3MSA4Ljc4NTI2IDEzLjYyNDQgOC42NTM4NSAxMy45OTc3IDguNjUzODVDMTQuMzcxIDguNjUzODUgMTQuNjg5MSA4Ljc4NDUxIDE0Ljk1MTkgOS4wNDU4M0MxNS4yMTQ3IDkuMzA3MTMgMTUuMzQ2MiA5LjYyNDQyIDE1LjM0NjIgOS45OTc3M0MxNS4zNDYyIDEwLjM3MSAxNS4yMTU1IDEwLjY4OTEgMTQuOTU0MiAxMC45NTE5QzE0LjY5MjkgMTEuMjE0NyAxNC4zNzU2IDExLjM0NjIgMTQuMDAyMyAxMS4zNDYyWk0xNCAxOC45MjMxQzEzLjczODUgMTguOTIzMSAxMy41MTkyIDE4LjgzNDYgMTMuMzQyMyAxOC42NTc3QzEzLjE2NTQgMTguNDgwOCAxMy4wNzY5IDE4LjI2MTUgMTMuMDc2OSAxOEMxMy4wNzY5IDE3LjczODUgMTMuMTY1NCAxNy41MTkyIDEzLjM0MjMgMTcuMzQyM0MxMy41MTkyIDE3LjE2NTQgMTMuNzM4NSAxNy4wNzY5IDE0IDE3LjA3NjlDMTQuMjYxNSAxNy4wNzY5IDE0LjQ4MDggMTcuMTY1NCAxNC42NTc3IDE3LjM0MjNDMTQuODM0NiAxNy41MTkyIDE0LjkyMzEgMTcuNzM4NSAxNC45MjMxIDE4QzE0LjkyMzEgMTguMjYxNSAxNC44MzQ2IDE4LjQ4MDggMTQuNjU3NyAxOC42NTc3QzE0LjQ4MDggMTguODM0NiAxNC4yNjE1IDE4LjkyMzEgMTQgMTguOTIzMVpNMTQgNi45MjMwOEMxMy43Mzg1IDYuOTIzMDggMTMuNTE5MiA2LjgzNDYxIDEzLjM0MjMgNi42NTc2OEMxMy4xNjU0IDYuNDgwNzYgMTMuMDc2OSA2LjI2MTUzIDEzLjA3NjkgNkMxMy4wNzY5IDUuNzM4NDcgMTMuMTY1NCA1LjUxOTI0IDEzLjM0MjMgNS4zNDIzMkMxMy41MTkyIDUuMTY1MzkgMTMuNzM4NSA1LjA3NjkzIDE0IDUuMDc2OTNDMTQuMjYxNSA1LjA3NjkzIDE0LjQ4MDggNS4xNjUzOSAxNC42NTc3IDUuMzQyMzJDMTQuODM0NiA1LjUxOTI0IDE0LjkyMzEgNS43Mzg0NyAxNC45MjMxIDZDMTQuOTIzMSA2LjI2MTUzIDE0LjgzNDYgNi40ODA3NiAxNC42NTc3IDYuNjU3NjhDMTQuNDgwOCA2LjgzNDYxIDE0LjI2MTUgNi45MjMwOCAxNCA2LjkyMzA4Wk0xNCAyMS41QzEzLjg2NjcgMjEuNSAxMy43NSAyMS40NSAxMy42NSAyMS4zNUMxMy41NSAyMS4yNSAxMy41IDIxLjEzMzMgMTMuNSAyMUMxMy41IDIwLjg2NjcgMTMuNTUgMjAuNzUgMTMuNjUgMjAuNjVDMTMuNzUgMjAuNTUgMTMuODY2NyAyMC41IDE0IDIwLjVDMTQuMTMzMyAyMC41IDE0LjI1IDIwLjU1IDE0LjM1IDIwLjY1QzE0LjQ1IDIwLjc1IDE0LjUgMjAuODY2NyAxNC41IDIxQzE0LjUgMjEuMTMzMyAxNC40NSAyMS4yNSAxNC4zNSAyMS4zNUMxNC4yNSAyMS40NSAxNC4xMzMzIDIxLjUgMTQgMjEuNVpNMTQgMy41QzEzLjg2NjcgMy41IDEzLjc1IDMuNDUgMTMuNjUgMy4zNUMxMy41NSAzLjI1IDEzLjUgMy4xMzMzMyAxMy41IDNDMTMuNSAyLjg2NjY3IDEzLjU1IDIuNzUgMTMuNjUgMi42NUMxMy43NSAyLjU1IDEzLjg2NjcgMi41IDE0IDIuNUMxNC4xMzMzIDIuNSAxNC4yNSAyLjU1IDE0LjM1IDIuNjVDMTQuNDUgMi43NSAxNC41IDIuODY2NjcgMTQuNSAzQzE0LjUgMy4xMzMzMyAxNC40NSAzLjI1IDE0LjM1IDMuMzVDMTQuMjUgMy40NSAxNC4xMzMzIDMuNSAxNCAzLjVaTTE4IDE4LjkyMzFDMTcuNzM4NSAxOC45MjMxIDE3LjUxOTIgMTguODM0NiAxNy4zNDIzIDE4LjY1NzdDMTcuMTY1NCAxOC40ODA4IDE3LjA3NjkgMTguMjYxNSAxNy4wNzY5IDE4QzE3LjA3NjkgMTcuNzM4NSAxNy4xNjU0IDE3LjUxOTIgMTcuMzQyMyAxNy4zNDIzQzE3LjUxOTIgMTcuMTY1NCAxNy43Mzg1IDE3LjA3NjkgMTggMTcuMDc2OUMxOC4yNjE1IDE3LjA3NjkgMTguNDgwOCAxNy4xNjU0IDE4LjY1NzcgMTcuMzQyM0MxOC44MzQ2IDE3LjUxOTIgMTguOTIzMSAxNy43Mzg1IDE4LjkyMzEgMThDMTguOTIzMSAxOC4yNjE1IDE4LjgzNDYgMTguNDgwOCAxOC42NTc3IDE4LjY1NzdDMTguNDgwOCAxOC44MzQ2IDE4LjI2MTUgMTguOTIzMSAxOCAxOC45MjMxWk0xOCAxNC45MjMxQzE3LjczODUgMTQuOTIzMSAxNy41MTkyIDE0LjgzNDYgMTcuMzQyMyAxNC42NTc3QzE3LjE2NTQgMTQuNDgwOCAxNy4wNzY5IDE0LjI2MTUgMTcuMDc2OSAxNEMxNy4wNzY5IDEzLjczODUgMTcuMTY1NCAxMy41MTkyIDE3LjM0MjMgMTMuMzQyM0MxNy41MTkyIDEzLjE2NTQgMTcuNzM4NSAxMy4wNzY5IDE4IDEzLjA3NjlDMTguMjYxNSAxMy4wNzY5IDE4LjQ4MDggMTMuMTY1NCAxOC42NTc3IDEzLjM0MjNDMTguODM0NiAxMy41MTkyIDE4LjkyMzEgMTMuNzM4NSAxOC45MjMxIDE0QzE4LjkyMzEgMTQuMjYxNSAxOC44MzQ2IDE0LjQ4MDggMTguNjU3NyAxNC42NTc3QzE4LjQ4MDggMTQuODM0NiAxOC4yNjE1IDE0LjkyMzEgMTggMTQuOTIzMVpNMTggMTAuOTIzMUMxNy43Mzg1IDEwLjkyMzEgMTcuNTE5MiAxMC44MzQ2IDE3LjM0MjMgMTAuNjU3N0MxNy4xNjU0IDEwLjQ4MDggMTcuMDc2OSAxMC4yNjE1IDE3LjA3NjkgMTBDMTcuMDc2OSA5LjczODQ3IDE3LjE2NTQgOS41MTkyNCAxNy4zNDIzIDkuMzQyMzJDMTcuNTE5MiA5LjE2NTM5IDE3LjczODUgOS4wNzY5MiAxOCA5LjA3NjkyQzE4LjI2MTUgOS4wNzY5MiAxOC40ODA4IDkuMTY1MzkgMTguNjU3NyA5LjM0MjMyQzE4LjgzNDYgOS41MTkyNCAxOC45MjMxIDkuNzM4NDcgMTguOTIzMSAxMEMxOC45MjMxIDEwLjI2MTUgMTguODM0NiAxMC40ODA4IDE4LjY1NzcgMTAuNjU3N0MxOC40ODA4IDEwLjgzNDYgMTguMjYxNSAxMC45MjMxIDE4IDEwLjkyMzFaTTE4IDYuOTIzMDhDMTcuNzM4NSA2LjkyMzA4IDE3LjUxOTIgNi44MzQ2MSAxNy4zNDIzIDYuNjU3NjhDMTcuMTY1NCA2LjQ4MDc2IDE3LjA3NjkgNi4yNjE1MyAxNy4wNzY5IDZDMTcuMDc2OSA1LjczODQ3IDE3LjE2NTQgNS41MTkyNCAxNy4zNDIzIDUuMzQyMzJDMTcuNTE5MiA1LjE2NTM5IDE3LjczODUgNS4wNzY5MyAxOCA1LjA3NjkzQzE4LjI2MTUgNS4wNzY5MyAxOC40ODA4IDUuMTY1MzkgMTguNjU3NyA1LjM0MjMyQzE4LjgzNDYgNS41MTkyNCAxOC45MjMxIDUuNzM4NDcgMTguOTIzMSA2QzE4LjkyMzEgNi4yNjE1MyAxOC44MzQ2IDYuNDgwNzYgMTguNjU3NyA2LjY1NzY4QzE4LjQ4MDggNi44MzQ2MSAxOC4yNjE1IDYuOTIzMDggMTggNi45MjMwOFpNMjEgMTQuNUMyMC44NjY3IDE0LjUgMjAuNzUgMTQuNDUgMjAuNjUgMTQuMzVDMjAuNTUgMTQuMjUgMjAuNSAxNC4xMzMzIDIwLjUgMTRDMjAuNSAxMy44NjY3IDIwLjU1IDEzLjc1IDIwLjY1IDEzLjY1QzIwLjc1IDEzLjU1IDIwLjg2NjcgMTMuNSAyMSAxMy41QzIxLjEzMzMgMTMuNSAyMS4yNSAxMy41NSAyMS4zNSAxMy42NUMyMS40NSAxMy43NSAyMS41IDEzLjg2NjcgMjEuNSAxNEMyMS41IDE0LjEzMzMgMjEuNDUgMTQuMjUgMjEuMzUgMTQuMzVDMjEuMjUgMTQuNDUgMjEuMTMzMyAxNC41IDIxIDE0LjVaTTIxIDEwLjVDMjAuODY2NyAxMC41IDIwLjc1IDEwLjQ1IDIwLjY1IDEwLjM1QzIwLjU1IDEwLjI1IDIwLjUgMTAuMTMzMyAyMC41IDEwQzIwLjUgOS44NjY2NyAyMC41NSA5Ljc1IDIwLjY1IDkuNjVDMjAuNzUgOS41NSAyMC44NjY3IDkuNSAyMSA5LjVDMjEuMTMzMyA5LjUgMjEuMjUgOS41NSAyMS4zNSA5LjY1QzIxLjQ1IDkuNzUgMjEuNSA5Ljg2NjY3IDIxLjUgMTBDMjEuNSAxMC4xMzMzIDIxLjQ1IDEwLjI1IDIxLjM1IDEwLjM1QzIxLjI1IDEwLjQ1IDIxLjEzMzMgMTAuNSAyMSAxMC41WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDkxXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDkxKVwiPlxuPHBhdGggZD1cIk0xMi4wNSAxOS43NUM5Ljg4NzE5IDE5Ljc1IDguMDQ2NDkgMTguOTk3NCA2LjUyNzkxIDE3LjQ5MjNDNS4wMDkzMyAxNS45ODcxIDQuMjUwMDQgMTQuMTU2NCA0LjI1MDA0IDEyVjExLjIxOTJMMi45MjY5MSAxMi41NDIzQzIuNzg4NDYgMTIuNjgwNyAyLjYxNDQzIDEyLjc1MTYgMi40MDQ4MSAxMi43NTQ4QzIuMTk1MjEgMTIuNzU4IDIuMDE3OTggMTIuNjg3MSAxLjg3MzExIDEyLjU0MjNDMS43MjgyMSAxMi4zOTc0IDEuNjU1NzYgMTIuMjIxOCAxLjY1NTc2IDEyLjAxNTNDMS42NTU3NiAxMS44MDg5IDEuNzI4MiAxMS42MzMzIDEuODczMDkgMTEuNDg4NUw0LjM2NzMxIDguOTk0MjJDNC41NDgwOCA4LjgxMzQ2IDQuNzU4OTcgOC43MjMwOCA0Ljk5OTk5IDguNzIzMDhDNS4yNDEgOC43MjMwOCA1LjQ1MTg5IDguODEzNDYgNS42MzI2NiA4Ljk5NDIyTDguMTI2ODkgMTEuNDg4NUM4LjI2NTM1IDExLjYyNjkgOC4zMzYxOSAxMS44MDA5IDguMzM5MzkgMTIuMDEwNUM4LjM0MjYgMTIuMjIwMiA4LjI3MTc3IDEyLjM5NzQgOC4xMjY4OSAxMi41NDIzQzcuOTgyMDIgMTIuNjg3MSA3LjgwNjM5IDEyLjc1OTYgNy41OTk5OSAxMi43NTk2QzcuMzkzNTkgMTIuNzU5NiA3LjIxNzk1IDEyLjY4NzEgNy4wNzMwOSAxMi41NDIzTDUuNzQ5OTYgMTEuMjE5MlYxMkM1Ljc0OTk2IDEzLjczNzIgNi4zNjE1IDE1LjIxMzEgNy41ODQ1OSAxNi40Mjc5QzguODA3NjkgMTcuNjQyNiAxMC4yOTYyIDE4LjI1IDEyLjA1IDE4LjI1QzEyLjM0MjMgMTguMjUgMTIuNjMzNyAxOC4yMzAxIDEyLjkyNDEgMTguMTkwNEMxMy4yMTQ0IDE4LjE1MDYgMTMuNTAwNyAxOC4wODI3IDEzLjc4MjcgMTcuOTg2NUMxMy45OTU1IDE3LjkyMjQgMTQuMTk2NSAxNy45MjkyIDE0LjM4NTYgMTguMDA2N0MxNC41NzQ3IDE4LjA4NDMgMTQuNzE2NyAxOC4yMTYgMTQuODExNSAxOC40MDE5QzE0LjkwNjQgMTguNTk4MSAxNC45MTI1IDE4Ljc5MzIgMTQuODI5OCAxOC45ODc1QzE0Ljc0NzEgMTkuMTgxNyAxNC41OTk0IDE5LjMxMDkgMTQuMzg2NSAxOS4zNzVDMTQuMDA5NiAxOS41MDgzIDEzLjYyNDQgMTkuNjA0MSAxMy4yMzA4IDE5LjY2MjVDMTIuODM3MiAxOS43MjA4IDEyLjQ0MzYgMTkuNzUgMTIuMDUgMTkuNzVaTTExLjk1IDUuNzQ5OTVDMTEuNjU3NyA1Ljc0OTk1IDExLjM2NjMgNS43Njk4MiAxMS4wNzYgNS44MDk1N0MxMC43ODU2IDUuODQ5MzIgMTAuNDk5NCA1LjkxNzI3IDEwLjIxNzMgNi4wMTM0MkMxMC4wMDQ1IDYuMDc3NTIgOS44MDA5NyA2LjA3MDc5IDkuNjA2NzQgNS45OTMyM0M5LjQxMjUyIDUuOTE1NjYgOS4yNjc5OCA1Ljc4MzkzIDkuMTczMTEgNS41OTgwNUM5LjA3ODIzIDUuNDEyMTUgOS4wNzA1NCA1LjIyMjA5IDkuMTUwMDQgNS4wMjc4N0M5LjIyOTUyIDQuODMzNjQgOS4zNzA1NCA0LjcwNDQ3IDkuNTczMDkgNC42NDAzN0M5Ljk2MDI3IDQuNTA3MDQgMTAuMzUyMyA0LjQwODY0IDEwLjc0OTEgNC4zNDUxOEMxMS4xNDU4IDQuMjgxNzMgMTEuNTQ2MiA0LjI1IDExLjk1IDQuMjVDMTQuMTEyOCA0LjI1IDE1Ljk1MzUgNS4wMDI1NiAxNy40NzIxIDYuNTA3NjhDMTguOTkwNyA4LjAxMjgxIDE5Ljc1IDkuODQzNTcgMTkuNzUgMTJWMTIuNzgwOEwyMS4wNzMxIDExLjQ1NzdDMjEuMjExNiAxMS4zMTkyIDIxLjM4NTYgMTEuMjQ4NCAyMS41OTUyIDExLjI0NTJDMjEuODA0OCAxMS4yNDIgMjEuOTgyIDExLjMxMjggMjIuMTI2OSAxMS40NTc3QzIyLjI3MTggMTEuNjAyNSAyMi4zNDQyIDExLjc3ODIgMjIuMzQ0MiAxMS45ODQ2QzIyLjM0NDIgMTIuMTkxIDIyLjI3MTggMTIuMzY2NiAyMi4xMjY5IDEyLjUxMTVMMTkuNjMyNyAxNS4wMDU3QzE5LjQ1MTkgMTUuMTg2NSAxOS4yNDEgMTUuMjc2OSAxOSAxNS4yNzY5QzE4Ljc1OSAxNS4yNzY5IDE4LjU0ODEgMTUuMTg2NSAxOC4zNjczIDE1LjAwNTdMMTUuODczMSAxMi41MTE1QzE1LjczNDYgMTIuMzczMSAxNS42NjM4IDEyLjE5OSAxNS42NjA2IDExLjk4OTRDMTUuNjU3NCAxMS43Nzk4IDE1LjcyODIgMTEuNjAyNSAxNS44NzMxIDExLjQ1NzdDMTYuMDE4IDExLjMxMjggMTYuMTkzNiAxMS4yNDA0IDE2LjQgMTEuMjQwNEMxNi42MDY0IDExLjI0MDQgMTYuNzgyIDExLjMxMjggMTYuOTI2OSAxMS40NTc3TDE4LjI1IDEyLjc4MDhWMTJDMTguMjUgMTAuMjYyOCAxNy42Mzg1IDguNzg2ODMgMTYuNDE1NCA3LjU3MjA3QzE1LjE5MjMgNi4zNTczMiAxMy43MDM5IDUuNzQ5OTUgMTEuOTUgNS43NDk5NVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48ZyBpZD1cImNhbGVuZGFyX21vbnRoX2ZpbGxcIj5cbjxtYXNrIGlkPVwibWFzazBfNzI1XzExMzYzXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIj5cbjxyZWN0IGlkPVwiQm91bmRpbmcgYm94XCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF83MjVfMTEzNjMpXCI+XG48cGF0aCBpZD1cImNhbGVuZGFyX21vbnRoXCIgZD1cIk02LjY2NjY3IDI5LjMzMzJDNS45MzMzMyAyOS4zMzMyIDUuMzA1NTYgMjkuMDcyMSA0Ljc4MzMzIDI4LjU0OThDNC4yNjExMSAyOC4wMjc2IDQgMjcuMzk5OCA0IDI2LjY2NjVWNy45OTk4NEM0IDcuMjY2NSA0LjI2MTExIDYuNjM4NzMgNC43ODMzMyA2LjExNjVDNS4zMDU1NiA1LjU5NDI4IDUuOTMzMzMgNS4zMzMxNyA2LjY2NjY3IDUuMzMzMTdIOFYzLjk5OTg0QzggMy42MjIwNiA4LjEyNzc4IDMuMzA1MzkgOC4zODMzMyAzLjA0OTg0QzguNjM4ODkgMi43OTQyOCA4Ljk1NTU2IDIuNjY2NSA5LjMzMzMzIDIuNjY2NUM5LjcxMTExIDIuNjY2NSAxMC4wMjc4IDIuNzk0MjggMTAuMjgzMyAzLjA0OTg0QzEwLjUzODkgMy4zMDUzOSAxMC42NjY3IDMuNjIyMDYgMTAuNjY2NyAzLjk5OTg0VjUuMzMzMTdIMjEuMzMzM1YzLjk5OTg0QzIxLjMzMzMgMy42MjIwNiAyMS40NjExIDMuMzA1MzkgMjEuNzE2NyAzLjA0OTg0QzIxLjk3MjIgMi43OTQyOCAyMi4yODg5IDIuNjY2NSAyMi42NjY3IDIuNjY2NUMyMy4wNDQ0IDIuNjY2NSAyMy4zNjExIDIuNzk0MjggMjMuNjE2NyAzLjA0OTg0QzIzLjg3MjIgMy4zMDUzOSAyNCAzLjYyMjA2IDI0IDMuOTk5ODRWNS4zMzMxN0gyNS4zMzMzQzI2LjA2NjcgNS4zMzMxNyAyNi42OTQ0IDUuNTk0MjggMjcuMjE2NyA2LjExNjVDMjcuNzM4OSA2LjYzODczIDI4IDcuMjY2NSAyOCA3Ljk5OTg0VjI2LjY2NjVDMjggMjcuMzk5OCAyNy43Mzg5IDI4LjAyNzYgMjcuMjE2NyAyOC41NDk4QzI2LjY5NDQgMjkuMDcyMSAyNi4wNjY3IDI5LjMzMzIgMjUuMzMzMyAyOS4zMzMySDYuNjY2NjdaTTYuNjY2NjcgMjYuNjY2NUgyNS4zMzMzVjEzLjMzMzJINi42NjY2N1YyNi42NjY1Wk0xNiAxOC42NjY1QzE1LjYyMjIgMTguNjY2NSAxNS4zMDU2IDE4LjUzODcgMTUuMDUgMTguMjgzMkMxNC43OTQ0IDE4LjAyNzYgMTQuNjY2NyAxNy43MTA5IDE0LjY2NjcgMTcuMzMzMkMxNC42NjY3IDE2Ljk1NTQgMTQuNzk0NCAxNi42Mzg3IDE1LjA1IDE2LjM4MzJDMTUuMzA1NiAxNi4xMjc2IDE1LjYyMjIgMTUuOTk5OCAxNiAxNS45OTk4QzE2LjM3NzggMTUuOTk5OCAxNi42OTQ0IDE2LjEyNzYgMTYuOTUgMTYuMzgzMkMxNy4yMDU2IDE2LjYzODcgMTcuMzMzMyAxNi45NTU0IDE3LjMzMzMgMTcuMzMzMkMxNy4zMzMzIDE3LjcxMDkgMTcuMjA1NiAxOC4wMjc2IDE2Ljk1IDE4LjI4MzJDMTYuNjk0NCAxOC41Mzg3IDE2LjM3NzggMTguNjY2NSAxNiAxOC42NjY1Wk0xMC42NjY3IDE4LjY2NjVDMTAuMjg4OSAxOC42NjY1IDkuOTcyMjIgMTguNTM4NyA5LjcxNjY3IDE4LjI4MzJDOS40NjExMSAxOC4wMjc2IDkuMzMzMzMgMTcuNzEwOSA5LjMzMzMzIDE3LjMzMzJDOS4zMzMzMyAxNi45NTU0IDkuNDYxMTEgMTYuNjM4NyA5LjcxNjY3IDE2LjM4MzJDOS45NzIyMiAxNi4xMjc2IDEwLjI4ODkgMTUuOTk5OCAxMC42NjY3IDE1Ljk5OThDMTEuMDQ0NCAxNS45OTk4IDExLjM2MTEgMTYuMTI3NiAxMS42MTY3IDE2LjM4MzJDMTEuODcyMiAxNi42Mzg3IDEyIDE2Ljk1NTQgMTIgMTcuMzMzMkMxMiAxNy43MTA5IDExLjg3MjIgMTguMDI3NiAxMS42MTY3IDE4LjI4MzJDMTEuMzYxMSAxOC41Mzg3IDExLjA0NDQgMTguNjY2NSAxMC42NjY3IDE4LjY2NjVaTTIxLjMzMzMgMTguNjY2NUMyMC45NTU2IDE4LjY2NjUgMjAuNjM4OSAxOC41Mzg3IDIwLjM4MzMgMTguMjgzMkMyMC4xMjc4IDE4LjAyNzYgMjAgMTcuNzEwOSAyMCAxNy4zMzMyQzIwIDE2Ljk1NTQgMjAuMTI3OCAxNi42Mzg3IDIwLjM4MzMgMTYuMzgzMkMyMC42Mzg5IDE2LjEyNzYgMjAuOTU1NiAxNS45OTk4IDIxLjMzMzMgMTUuOTk5OEMyMS43MTExIDE1Ljk5OTggMjIuMDI3OCAxNi4xMjc2IDIyLjI4MzMgMTYuMzgzMkMyMi41Mzg5IDE2LjYzODcgMjIuNjY2NyAxNi45NTU0IDIyLjY2NjcgMTcuMzMzMkMyMi42NjY3IDE3LjcxMDkgMjIuNTM4OSAxOC4wMjc2IDIyLjI4MzMgMTguMjgzMkMyMi4wMjc4IDE4LjUzODcgMjEuNzExMSAxOC42NjY1IDIxLjMzMzMgMTguNjY2NVpNMTYgMjMuOTk5OEMxNS42MjIyIDIzLjk5OTggMTUuMzA1NiAyMy44NzIxIDE1LjA1IDIzLjYxNjVDMTQuNzk0NCAyMy4zNjEgMTQuNjY2NyAyMy4wNDQzIDE0LjY2NjcgMjIuNjY2NUMxNC42NjY3IDIyLjI4ODcgMTQuNzk0NCAyMS45NzIxIDE1LjA1IDIxLjcxNjVDMTUuMzA1NiAyMS40NjA5IDE1LjYyMjIgMjEuMzMzMiAxNiAyMS4zMzMyQzE2LjM3NzggMjEuMzMzMiAxNi42OTQ0IDIxLjQ2MDkgMTYuOTUgMjEuNzE2NUMxNy4yMDU2IDIxLjk3MjEgMTcuMzMzMyAyMi4yODg3IDE3LjMzMzMgMjIuNjY2NUMxNy4zMzMzIDIzLjA0NDMgMTcuMjA1NiAyMy4zNjEgMTYuOTUgMjMuNjE2NUMxNi42OTQ0IDIzLjg3MjEgMTYuMzc3OCAyMy45OTk4IDE2IDIzLjk5OThaTTEwLjY2NjcgMjMuOTk5OEMxMC4yODg5IDIzLjk5OTggOS45NzIyMiAyMy44NzIxIDkuNzE2NjcgMjMuNjE2NUM5LjQ2MTExIDIzLjM2MSA5LjMzMzMzIDIzLjA0NDMgOS4zMzMzMyAyMi42NjY1QzkuMzMzMzMgMjIuMjg4NyA5LjQ2MTExIDIxLjk3MjEgOS43MTY2NyAyMS43MTY1QzkuOTcyMjIgMjEuNDYwOSAxMC4yODg5IDIxLjMzMzIgMTAuNjY2NyAyMS4zMzMyQzExLjA0NDQgMjEuMzMzMiAxMS4zNjExIDIxLjQ2MDkgMTEuNjE2NyAyMS43MTY1QzExLjg3MjIgMjEuOTcyMSAxMiAyMi4yODg3IDEyIDIyLjY2NjVDMTIgMjMuMDQ0MyAxMS44NzIyIDIzLjM2MSAxMS42MTY3IDIzLjYxNjVDMTEuMzYxMSAyMy44NzIxIDExLjA0NDQgMjMuOTk5OCAxMC42NjY3IDIzLjk5OThaTTIxLjMzMzMgMjMuOTk5OEMyMC45NTU2IDIzLjk5OTggMjAuNjM4OSAyMy44NzIxIDIwLjM4MzMgMjMuNjE2NUMyMC4xMjc4IDIzLjM2MSAyMCAyMy4wNDQzIDIwIDIyLjY2NjVDMjAgMjIuMjg4NyAyMC4xMjc4IDIxLjk3MjEgMjAuMzgzMyAyMS43MTY1QzIwLjYzODkgMjEuNDYwOSAyMC45NTU2IDIxLjMzMzIgMjEuMzMzMyAyMS4zMzMyQzIxLjcxMTEgMjEuMzMzMiAyMi4wMjc4IDIxLjQ2MDkgMjIuMjgzMyAyMS43MTY1QzIyLjUzODkgMjEuOTcyMSAyMi42NjY3IDIyLjI4ODcgMjIuNjY2NyAyMi42NjY1QzIyLjY2NjcgMjMuMDQ0MyAyMi41Mzg5IDIzLjM2MSAyMi4yODMzIDIzLjYxNjVDMjIuMDI3OCAyMy44NzIxIDIxLjcxMTEgMjMuOTk5OCAyMS4zMzMzIDIzLjk5OThaXCIgZmlsbD1cIiMxMUIwNkVcIi8+XG48L2c+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICA8bWFzayBpZD1cIm1hc2swXzU1MDVfMTgzNFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG4gICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjbWFzazBfNTUwNV8xODM0KVwiPlxuICAgIDxwYXRoIGQ9XCJNMTAuNiAxMy40TDguNDUgMTEuMjVDOC4yNjY2NyAxMS4wNjY3IDguMDMzMzMgMTAuOTc1IDcuNzUgMTAuOTc1QzcuNDY2NjcgMTAuOTc1IDcuMjMzMzMgMTEuMDY2NyA3LjA1IDExLjI1QzYuODY2NjcgMTEuNDMzMyA2Ljc3NSAxMS42NjY3IDYuNzc1IDExLjk1QzYuNzc1IDEyLjIzMzMgNi44NjY2NyAxMi40NjY3IDcuMDUgMTIuNjVMOS45IDE1LjVDMTAuMSAxNS43IDEwLjMzMzMgMTUuOCAxMC42IDE1LjhDMTAuODY2NyAxNS44IDExLjEgMTUuNyAxMS4zIDE1LjVMMTYuOTUgOS44NUMxNy4xMzMzIDkuNjY2NjcgMTcuMjI1IDkuNDMzMzMgMTcuMjI1IDkuMTVDMTcuMjI1IDguODY2NjcgMTcuMTMzMyA4LjYzMzMzIDE2Ljk1IDguNDVDMTYuNzY2NyA4LjI2NjY3IDE2LjUzMzMgOC4xNzUgMTYuMjUgOC4xNzVDMTUuOTY2NyA4LjE3NSAxNS43MzMzIDguMjY2NjcgMTUuNTUgOC40NUwxMC42IDEzLjRaTTUgMjFDNC40NSAyMSAzLjk3OTE3IDIwLjgwNDIgMy41ODc1IDIwLjQxMjVDMy4xOTU4MyAyMC4wMjA4IDMgMTkuNTUgMyAxOVY1QzMgNC40NSAzLjE5NTgzIDMuOTc5MTcgMy41ODc1IDMuNTg3NUMzLjk3OTE3IDMuMTk1ODMgNC40NSAzIDUgM0gxOUMxOS41NSAzIDIwLjAyMDggMy4xOTU4MyAyMC40MTI1IDMuNTg3NUMyMC44MDQyIDMuOTc5MTcgMjEgNC40NSAyMSA1VjE5QzIxIDE5LjU1IDIwLjgwNDIgMjAuMDIwOCAyMC40MTI1IDIwLjQxMjVDMjAuMDIwOCAyMC44MDQyIDE5LjU1IDIxIDE5IDIxSDVaXCIgZmlsbD1cIiMwMkJGNkZcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICA8bWFzayBpZD1cIm1hc2swXzU1MDVfMTkwM1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG4gICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjbWFzazBfNTUwNV8xOTAzKVwiPlxuICAgIDxwYXRoIGQ9XCJNNSAyMUM0LjQ1IDIxIDMuOTc5MTcgMjAuODA0MiAzLjU4NzUgMjAuNDEyNUMzLjE5NTgzIDIwLjAyMDggMyAxOS41NSAzIDE5VjVDMyA0LjQ1IDMuMTk1ODMgMy45NzkxNyAzLjU4NzUgMy41ODc1QzMuOTc5MTcgMy4xOTU4MyA0LjQ1IDMgNSAzSDE5QzE5LjU1IDMgMjAuMDIwOCAzLjE5NTgzIDIwLjQxMjUgMy41ODc1QzIwLjgwNDIgMy45NzkxNyAyMSA0LjQ1IDIxIDVWMTlDMjEgMTkuNTUgMjAuODA0MiAyMC4wMjA4IDIwLjQxMjUgMjAuNDEyNUMyMC4wMjA4IDIwLjgwNDIgMTkuNTUgMjEgMTkgMjFINVpNNSAxOUgxOVY1SDVWMTlaXCIgZmlsbD1cIiM4MzhCOTdcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJtMTAuNTggMTQuMTQ2LTIuMzIyLTIuMzIzYS43MjQuNzI0IDAgMCAwLS41MjItLjIxMi43MDcuNzA3IDAgMCAwLS41MzIuMjEyLjcxNy43MTcgMCAwIDAtLjIxNy41MjdjMCAuMjA2LjA3Mi4zODIuMjE3LjUyN2wyLjc0NCAyLjc0NGEuODcuODcgMCAwIDAgLjYzMy4yNzFjLjI0IDAgLjQ1Mi0uMDkuNjMyLS4yN2w1LjU2NC01LjU2NGEuNzI1LjcyNSAwIDAgMCAuMjEyLS41MjIuNzA3LjcwNyAwIDAgMC0uMjEyLS41MzIuNzE4LjcxOCAwIDAgMC0uNTI3LS4yMTcuNzE3LjcxNyAwIDAgMC0uNTI3LjIxN2wtNS4xNDIgNS4xNDJabTEuNDIyIDcuMzU0YTkuMjU1IDkuMjU1IDAgMCAxLTMuNzA1LS43NDggOS41OTggOS41OTggMCAwIDEtMy4wMTgtMi4wMyA5LjU5MSA5LjU5MSAwIDAgMS0yLjAzLTMuMDE2IDkuMjQ1IDkuMjQ1IDAgMCAxLS43NDktMy43MDRjMC0xLjMxNC4yNS0yLjU1Ljc0OC0zLjcwNWE5LjU5NyA5LjU5NyAwIDAgMSAyLjAzLTMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxIDMuMDE2LTIuMDMgOS4yNDUgOS4yNDUgMCAwIDEgMy43MDQtLjc0OWMxLjMxNCAwIDIuNTUuMjUgMy43MDUuNzQ4YTkuNTk3IDkuNTk3IDAgMCAxIDMuMDE4IDIuMDMgOS41OTIgOS41OTIgMCAwIDEgMi4wMyAzLjAxNiA5LjI0NSA5LjI0NSAwIDAgMSAuNzQ5IDMuNzA0YzAgMS4zMTQtLjI1IDIuNTUtLjc0OCAzLjcwNWE5LjU5OCA5LjU5OCAwIDAgMS0yLjAzIDMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxLTMuMDE2IDIuMDMgOS4yNDUgOS4yNDUgMCAwIDEtMy43MDQuNzQ5WlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48ZyBpZD1cImNsb2NrXCI+XG48bWFzayBpZD1cIm1hc2swXzcyNV8xMTMyN1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCBpZD1cIkJvdW5kaW5nIGJveFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNzI1XzExMzI3KVwiPlxuPHBhdGggaWQ9XCJzY2hlZHVsZVwiIGQ9XCJNMTMgMTEuNlY4QzEzIDcuNzE2NjcgMTIuOTA0MiA3LjQ3OTE3IDEyLjcxMjUgNy4yODc1QzEyLjUyMDggNy4wOTU4MyAxMi4yODMzIDcgMTIgN0MxMS43MTY3IDcgMTEuNDc5MiA3LjA5NTgzIDExLjI4NzUgNy4yODc1QzExLjA5NTggNy40NzkxNyAxMSA3LjcxNjY3IDExIDhWMTEuOTc1QzExIDEyLjEwODMgMTEuMDI1IDEyLjIzNzUgMTEuMDc1IDEyLjM2MjVDMTEuMTI1IDEyLjQ4NzUgMTEuMiAxMi42IDExLjMgMTIuN0wxNC42IDE2QzE0Ljc4MzMgMTYuMTgzMyAxNS4wMTY3IDE2LjI3NSAxNS4zIDE2LjI3NUMxNS41ODMzIDE2LjI3NSAxNS44MTY3IDE2LjE4MzMgMTYgMTZDMTYuMTgzMyAxNS44MTY3IDE2LjI3NSAxNS41ODMzIDE2LjI3NSAxNS4zQzE2LjI3NSAxNS4wMTY3IDE2LjE4MzMgMTQuNzgzMyAxNiAxNC42TDEzIDExLjZaTTEyIDIyQzEwLjYxNjcgMjIgOS4zMTY2NyAyMS43Mzc1IDguMSAyMS4yMTI1QzYuODgzMzMgMjAuNjg3NSA1LjgyNSAxOS45NzUgNC45MjUgMTkuMDc1QzQuMDI1IDE4LjE3NSAzLjMxMjUgMTcuMTE2NyAyLjc4NzUgMTUuOUMyLjI2MjUgMTQuNjgzMyAyIDEzLjM4MzMgMiAxMkMyIDEwLjYxNjcgMi4yNjI1IDkuMzE2NjcgMi43ODc1IDguMUMzLjMxMjUgNi44ODMzMyA0LjAyNSA1LjgyNSA0LjkyNSA0LjkyNUM1LjgyNSA0LjAyNSA2Ljg4MzMzIDMuMzEyNSA4LjEgMi43ODc1QzkuMzE2NjcgMi4yNjI1IDEwLjYxNjcgMiAxMiAyQzEzLjM4MzMgMiAxNC42ODMzIDIuMjYyNSAxNS45IDIuNzg3NUMxNy4xMTY3IDMuMzEyNSAxOC4xNzUgNC4wMjUgMTkuMDc1IDQuOTI1QzE5Ljk3NSA1LjgyNSAyMC42ODc1IDYuODgzMzMgMjEuMjEyNSA4LjFDMjEuNzM3NSA5LjMxNjY3IDIyIDEwLjYxNjcgMjIgMTJDMjIgMTMuMzgzMyAyMS43Mzc1IDE0LjY4MzMgMjEuMjEyNSAxNS45QzIwLjY4NzUgMTcuMTE2NyAxOS45NzUgMTguMTc1IDE5LjA3NSAxOS4wNzVDMTguMTc1IDE5Ljk3NSAxNy4xMTY3IDIwLjY4NzUgMTUuOSAyMS4yMTI1QzE0LjY4MzMgMjEuNzM3NSAxMy4zODMzIDIyIDEyIDIyWk0xMiAyMEMxNC4yMTY3IDIwIDE2LjEwNDIgMTkuMjIwOCAxNy42NjI1IDE3LjY2MjVDMTkuMjIwOCAxNi4xMDQyIDIwIDE0LjIxNjcgMjAgMTJDMjAgOS43ODMzMyAxOS4yMjA4IDcuODk1ODMgMTcuNjYyNSA2LjMzNzVDMTYuMTA0MiA0Ljc3OTE3IDE0LjIxNjcgNCAxMiA0QzkuNzgzMzMgNCA3Ljg5NTgzIDQuNzc5MTcgNi4zMzc1IDYuMzM3NUM0Ljc3OTE3IDcuODk1ODMgNCA5Ljc4MzMzIDQgMTJDNCAxNC4yMTY3IDQuNzc5MTcgMTYuMTA0MiA2LjMzNzUgMTcuNjYyNUM3Ljg5NTgzIDE5LjIyMDggOS43ODMzMyAyMCAxMiAyMFpcIiBmaWxsPVwiIzAyQkY2RlwiLz5cbjwvZz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48ZyBpZD1cImN1c3RvbWl6ZVwiPlxuPG1hc2sgaWQ9XCJtYXNrMF80XzE4NDRcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3QgaWQ9XCJCb3VuZGluZyBib3hcIiB4PVwiMC41XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF80XzE4NDQpXCI+XG48cGF0aCBpZD1cImRyYXdcIiBkPVwiTTE0LjUgMjFDMTQuMjE2NyAyMSAxMy45NzkyIDIwLjkwNDIgMTMuNzg3NSAyMC43MTI1QzEzLjU5NTggMjAuNTIwOCAxMy41IDIwLjI4MzMgMTMuNSAyMEMxMy41IDE5LjcxNjcgMTMuNTk1OCAxOS40NzkyIDEzLjc4NzUgMTkuMjg3NUMxMy45NzkyIDE5LjA5NTggMTQuMjE2NyAxOSAxNC41IDE5QzE1LjI4MzMgMTkgMTUuOTc5MiAxOC44NDU4IDE2LjU4NzUgMTguNTM3NUMxNy4xOTU4IDE4LjIyOTIgMTcuNSAxNy44ODMzIDE3LjUgMTcuNUMxNy41IDE3LjI2NjcgMTcuMzkxNyAxNy4wNSAxNy4xNzUgMTYuODVDMTYuOTU4MyAxNi42NSAxNi42NTgzIDE2LjQ2NjcgMTYuMjc1IDE2LjNMMTcuNzUgMTQuODI1QzE4LjI4MzMgMTUuMTQxNyAxOC43MDgzIDE1LjUxNjcgMTkuMDI1IDE1Ljk1QzE5LjM0MTcgMTYuMzgzMyAxOS41IDE2LjkgMTkuNSAxNy41QzE5LjUgMTguNiAxOC45NzUgMTkuNDU4MyAxNy45MjUgMjAuMDc1QzE2Ljg3NSAyMC42OTE3IDE1LjczMzMgMjEgMTQuNSAyMVpNNS4wNzUgMTMuMzVDNC41OTE2NyAxMy4wNjY3IDQuMjA4MzMgMTIuNzM3NSAzLjkyNSAxMi4zNjI1QzMuNjQxNjcgMTEuOTg3NSAzLjUgMTEuNTMzMyAzLjUgMTFDMy41IDEwLjMgMy43NTgzMyA5LjcxMjUgNC4yNzUgOS4yMzc1QzQuNzkxNjcgOC43NjI1IDUuNzE2NjcgOC4yMzMzMyA3LjA1IDcuNjVDOC4xIDcuMTY2NjcgOC43NzA4MyA2LjgyOTE3IDkuMDYyNSA2LjYzNzVDOS4zNTQxNyA2LjQ0NTgzIDkuNSA2LjIzMzMzIDkuNSA2QzkuNSA1LjczMzMzIDkuMzM3NSA1LjUgOS4wMTI1IDUuM0M4LjY4NzUgNS4xIDguMTgzMzMgNSA3LjUgNUM3LjA4MzMzIDUgNi43MzMzMyA1LjA1IDYuNDUgNS4xNUM2LjE2NjY3IDUuMjUgNS45MDgzMyA1LjQxNjY3IDUuNjc1IDUuNjVDNS40OTE2NyA1LjgzMzMzIDUuMjY2NjcgNS45NDE2NyA1IDUuOTc1QzQuNzMzMzMgNi4wMDgzMyA0LjQ5MTY3IDUuOTMzMzMgNC4yNzUgNS43NUM0LjA1ODMzIDUuNTgzMzMgMy45MzMzMyA1LjM2NjY3IDMuOSA1LjFDMy44NjY2NyA0LjgzMzMzIDMuOTQxNjcgNC41OTE2NyA0LjEyNSA0LjM3NUM0LjQ0MTY3IDMuOTkxNjcgNC44OTU4MyAzLjY2NjY3IDUuNDg3NSAzLjRDNi4wNzkxNyAzLjEzMzMzIDYuNzUgMyA3LjUgM0M4LjcgMyA5LjY2NjY3IDMuMjcwODMgMTAuNCAzLjgxMjVDMTEuMTMzMyA0LjM1NDE3IDExLjUgNS4wODMzMyAxMS41IDZDMTEuNSA2LjY1IDExLjI1ODMgNy4yMzMzMyAxMC43NzUgNy43NUMxMC4yOTE3IDguMjY2NjcgOS4zMTY2NyA4Ljg0MTY3IDcuODUgOS40NzVDNi44ODMzMyA5Ljg5MTY3IDYuMjUgMTAuMiA1Ljk1IDEwLjRDNS42NSAxMC42IDUuNSAxMC44IDUuNSAxMUM1LjUgMTEuMTUgNS41OTU4MyAxMS4yOTU4IDUuNzg3NSAxMS40Mzc1QzUuOTc5MTcgMTEuNTc5MiA2LjI0MTY3IDExLjcxNjcgNi41NzUgMTEuODVMNS4wNzUgMTMuMzVaTTE5LjM1IDEwLjRMMTUuMSA2LjE1TDE2LjE1IDUuMUMxNi41NSA0LjcgMTcuMDI5MiA0LjUgMTcuNTg3NSA0LjVDMTguMTQ1OCA0LjUgMTguNjE2NyA0LjcgMTkgNS4xTDIwLjQgNi41QzIwLjggNi44ODMzMyAyMSA3LjM1NDE3IDIxIDcuOTEyNUMyMSA4LjQ3MDgzIDIwLjggOC45NSAyMC40IDkuMzVMMTkuMzUgMTAuNFpNNi41IDE5SDcuOUwxNS4xIDExLjhMMTMuNyAxMC40TDYuNSAxNy42VjE5Wk01IDIxQzQuODY2NjcgMjEgNC43NSAyMC45NSA0LjY1IDIwLjg1QzQuNTUgMjAuNzUgNC41IDIwLjYzMzMgNC41IDIwLjVWMTYuOTVDNC41IDE2LjkxNjcgNC41NSAxNi44IDQuNjUgMTYuNkwxMy43IDcuNTVMMTcuOTUgMTEuOEw4LjkgMjAuODVDOC44NjY2NyAyMC44ODMzIDguNzUgMjAuOTMzMyA4LjU1IDIxSDVaXCIgZmlsbD1cIiMwMkJGNkZcIi8+XG48L2c+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNNy4zMDggMjAuNWMtLjUwNSAwLS45MzMtLjE3NS0xLjI4My0uNTI1YTEuNzQ1IDEuNzQ1IDAgMCAxLS41MjUtMS4yODNWNmgtLjI1YS43MjYuNzI2IDAgMCAxLS41MzUtLjIxNS43MjYuNzI2IDAgMCAxLS4yMTUtLjUzNS43My43MyAwIDAgMSAuMjE1LS41MzUuNzI2LjcyNiAwIDAgMSAuNTM1LS4yMTVIOWEuODQuODQgMCAwIDEgLjI2My0uNjMuODg5Ljg4OSAwIDAgMSAuNjQtLjI1NWg0LjE5M2MuMjUxIDAgLjQ2NS4wODUuNjQuMjU0QS44NC44NCAwIDAgMSAxNSA0LjVoMy43NWEuNzMuNzMgMCAwIDEgLjUzNS4yMTUuNzI2LjcyNiAwIDAgMSAuMjE1LjUzNS43MjYuNzI2IDAgMCAxLS4yMTUuNTM1LjcyNi43MjYgMCAwIDEtLjUzNS4yMTVoLS4yNXYxMi42OTJjMCAuNTA2LS4xNzUuOTMzLS41MjUgMS4yODMtLjM1LjM1LS43NzguNTI1LTEuMjgzLjUyNUg3LjMwOFpNNyA2djEyLjY5MmEuMy4zIDAgMCAwIC4wODcuMjIxLjMuMyAwIDAgMCAuMjIuMDg3aDkuMzg1YS4zLjMgMCAwIDAgLjIyMS0uMDg3LjMuMyAwIDAgMCAuMDg3LS4yMlY2SDdabTIuNDA0IDEwLjI1YS43My43MyAwIDAgMCAuMjE1LjUzNS43MjYuNzI2IDAgMCAwIC41MzUuMjE1LjcyNi43MjYgMCAwIDAgLjUzNC0uMjE1LjcyNi43MjYgMCAwIDAgLjIxNi0uNTM1di03LjVhLjcyNi43MjYgMCAwIDAtLjIxNi0uNTM1LjcyNi43MjYgMCAwIDAtLjUzNC0uMjE1LjcyNi43MjYgMCAwIDAtLjUzNS4yMTUuNzI2LjcyNiAwIDAgMC0uMjE1LjUzNXY3LjVabTMuNjkyIDBjMCAuMjEzLjA3Mi4zOTEuMjE2LjUzNWEuNzI2LjcyNiAwIDAgMCAuNTM0LjIxNS43MjYuNzI2IDAgMCAwIC41MzUtLjIxNS43MjYuNzI2IDAgMCAwIC4yMTUtLjUzNXYtNy41YS43MjYuNzI2IDAgMCAwLS4yMTUtLjUzNS43MjYuNzI2IDAgMCAwLS41MzUtLjIxNS43MjYuNzI2IDAgMCAwLS41MzQuMjE1LjcyNi43MjYgMCAwIDAtLjIxNi41MzV2Ny41Wk03IDZ2MTIuNjkyYS4zLjMgMCAwIDAgLjA4Ny4yMjEuMy4zIDAgMCAwIC4yMi4wODdIN1Y2WlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48ZyBpZD1cImV2ZW50X2RldGFpbHNcIj5cbjxtYXNrIGlkPVwibWFzazBfNF8xNzI2XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIj5cbjxyZWN0IGlkPVwiQm91bmRpbmcgYm94XCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF80XzE3MjYpXCI+XG48cGF0aCBpZD1cInRleHRfYWRcIiBkPVwiTTUuMzMzMzMgMjYuNjY2N0M0LjYgMjYuNjY2NyAzLjk3MjIyIDI2LjQwNTYgMy40NSAyNS44ODMzQzIuOTI3NzggMjUuMzYxMSAyLjY2NjY3IDI0LjczMzMgMi42NjY2NyAyNFY4QzIuNjY2NjcgNy4yNjY2NyAyLjkyNzc4IDYuNjM4ODkgMy40NSA2LjExNjY3QzMuOTcyMjIgNS41OTQ0NCA0LjYgNS4zMzMzMyA1LjMzMzMzIDUuMzMzMzNIMjYuNjY2N0MyNy40IDUuMzMzMzMgMjguMDI3OCA1LjU5NDQ0IDI4LjU1IDYuMTE2NjdDMjkuMDcyMiA2LjYzODg5IDI5LjMzMzMgNy4yNjY2NyAyOS4zMzMzIDhWMjRDMjkuMzMzMyAyNC43MzMzIDI5LjA3MjIgMjUuMzYxMSAyOC41NSAyNS44ODMzQzI4LjAyNzggMjYuNDA1NiAyNy40IDI2LjY2NjcgMjYuNjY2NyAyNi42NjY3SDUuMzMzMzNaTTUuMzMzMzMgMjRIMjYuNjY2N1Y4SDUuMzMzMzNWMjRaTTggMjIuNjY2N0gyNEMyNC4zNzc4IDIyLjY2NjcgMjQuNjk0NCAyMi41Mzg5IDI0Ljk1IDIyLjI4MzNDMjUuMjA1NiAyMi4wMjc4IDI1LjMzMzMgMjEuNzExMSAyNS4zMzMzIDIxLjMzMzNDMjUuMzMzMyAyMC45NTU2IDI1LjIwNTYgMjAuNjM4OSAyNC45NSAyMC4zODMzQzI0LjY5NDQgMjAuMTI3OCAyNC4zNzc4IDIwIDI0IDIwSDhDNy42MjIyMiAyMCA3LjMwNTU2IDIwLjEyNzggNy4wNSAyMC4zODMzQzYuNzk0NDQgMjAuNjM4OSA2LjY2NjY3IDIwLjk1NTYgNi42NjY2NyAyMS4zMzMzQzYuNjY2NjcgMjEuNzExMSA2Ljc5NDQ0IDIyLjAyNzggNy4wNSAyMi4yODMzQzcuMzA1NTYgMjIuNTM4OSA3LjYyMjIyIDIyLjY2NjcgOCAyMi42NjY3Wk04IDE3LjMzMzNIMjRDMjQuMzc3OCAxNy4zMzMzIDI0LjY5NDQgMTcuMjA1NiAyNC45NSAxNi45NUMyNS4yMDU2IDE2LjY5NDQgMjUuMzMzMyAxNi4zNzc4IDI1LjMzMzMgMTZDMjUuMzMzMyAxNS42MjIyIDI1LjIwNTYgMTUuMzA1NiAyNC45NSAxNS4wNUMyNC42OTQ0IDE0Ljc5NDQgMjQuMzc3OCAxNC42NjY3IDI0IDE0LjY2NjdIOEM3LjYyMjIyIDE0LjY2NjcgNy4zMDU1NiAxNC43OTQ0IDcuMDUgMTUuMDVDNi43OTQ0NCAxNS4zMDU2IDYuNjY2NjcgMTUuNjIyMiA2LjY2NjY3IDE2QzYuNjY2NjcgMTYuMzc3OCA2Ljc5NDQ0IDE2LjY5NDQgNy4wNSAxNi45NUM3LjMwNTU2IDE3LjIwNTYgNy42MjIyMiAxNy4zMzMzIDggMTcuMzMzM1pNOCAxMkgxOC42NjY3QzE5LjA0NDQgMTIgMTkuMzYxMSAxMS44NzIyIDE5LjYxNjcgMTEuNjE2N0MxOS44NzIyIDExLjM2MTEgMjAgMTEuMDQ0NCAyMCAxMC42NjY3QzIwIDEwLjI4ODkgMTkuODcyMiA5Ljk3MjIyIDE5LjYxNjcgOS43MTY2N0MxOS4zNjExIDkuNDYxMTEgMTkuMDQ0NCA5LjMzMzMzIDE4LjY2NjcgOS4zMzMzM0g4QzcuNjIyMjIgOS4zMzMzMyA3LjMwNTU2IDkuNDYxMTEgNy4wNSA5LjcxNjY3QzYuNzk0NDQgOS45NzIyMiA2LjY2NjY3IDEwLjI4ODkgNi42NjY2NyAxMC42NjY3QzYuNjY2NjcgMTEuMDQ0NCA2Ljc5NDQ0IDExLjM2MTEgNy4wNSAxMS42MTY3QzcuMzA1NTYgMTEuODcyMiA3LjYyMjIyIDEyIDggMTJaXCIgZmlsbD1cIiMxMUIwNkVcIi8+XG48L2c+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPGcgaWQ9XCJldmVudF9yZXBlYXRcIj5cbjxtYXNrIGlkPVwibWFzazBfNF8xOTc0XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IGlkPVwiQm91bmRpbmcgYm94XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF80XzE5NzQpXCI+XG48cGF0aCBpZD1cImV2ZW50X3JlcGVhdF8yXCIgZD1cIk01IDIyQzQuNDUgMjIgMy45NzkxNyAyMS44MDQyIDMuNTg3NSAyMS40MTI1QzMuMTk1ODMgMjEuMDIwOCAzIDIwLjU1IDMgMjBWNkMzIDUuNDUgMy4xOTU4MyA0Ljk3OTE3IDMuNTg3NSA0LjU4NzVDMy45NzkxNyA0LjE5NTgzIDQuNDUgNCA1IDRINlYzQzYgMi43MTY2NyA2LjA5NTgzIDIuNDc5MTcgNi4yODc1IDIuMjg3NUM2LjQ3OTE3IDIuMDk1ODMgNi43MTY2NyAyIDcgMkM3LjI4MzMzIDIgNy41MjA4MyAyLjA5NTgzIDcuNzEyNSAyLjI4NzVDNy45MDQxNyAyLjQ3OTE3IDggMi43MTY2NyA4IDNWNEgxNlYzQzE2IDIuNzE2NjcgMTYuMDk1OCAyLjQ3OTE3IDE2LjI4NzUgMi4yODc1QzE2LjQ3OTIgMi4wOTU4MyAxNi43MTY3IDIgMTcgMkMxNy4yODMzIDIgMTcuNTIwOCAyLjA5NTgzIDE3LjcxMjUgMi4yODc1QzE3LjkwNDIgMi40NzkxNyAxOCAyLjcxNjY3IDE4IDNWNEgxOUMxOS41NSA0IDIwLjAyMDggNC4xOTU4MyAyMC40MTI1IDQuNTg3NUMyMC44MDQyIDQuOTc5MTcgMjEgNS40NSAyMSA2VjExQzIxIDExLjI4MzMgMjAuOTA0MiAxMS41MjA4IDIwLjcxMjUgMTEuNzEyNUMyMC41MjA4IDExLjkwNDIgMjAuMjgzMyAxMiAyMCAxMkMxOS43MTY3IDEyIDE5LjQ3OTIgMTEuOTA0MiAxOS4yODc1IDExLjcxMjVDMTkuMDk1OCAxMS41MjA4IDE5IDExLjI4MzMgMTkgMTFWMTBINVYyMEgxMUMxMS4yODMzIDIwIDExLjUyMDggMjAuMDk1OCAxMS43MTI1IDIwLjI4NzVDMTEuOTA0MiAyMC40NzkyIDEyIDIwLjcxNjcgMTIgMjFDMTIgMjEuMjgzMyAxMS45MDQyIDIxLjUyMDggMTEuNzEyNSAyMS43MTI1QzExLjUyMDggMjEuOTA0MiAxMS4yODMzIDIyIDExIDIySDVaTTE5IDI0QzE3LjkzMzMgMjQgMTYuOTc5MiAyMy43MDQyIDE2LjEzNzUgMjMuMTEyNUMxNS4yOTU4IDIyLjUyMDggMTQuNjkxNyAyMS43NSAxNC4zMjUgMjAuOEMxNC4yNDE3IDIwLjYxNjcgMTQuMjYyNSAyMC40Mzc1IDE0LjM4NzUgMjAuMjYyNUMxNC41MTI1IDIwLjA4NzUgMTQuNjc1IDIwIDE0Ljg3NSAyMEMxNS4xMDgzIDIwIDE1LjMyMDggMjAuMDcwOCAxNS41MTI1IDIwLjIxMjVDMTUuNzA0MiAyMC4zNTQyIDE1Ljg1ODMgMjAuNTMzMyAxNS45NzUgMjAuNzVDMTYuMjc1IDIxLjI4MzMgMTYuNjkxNyAyMS43MDgzIDE3LjIyNSAyMi4wMjVDMTcuNzU4MyAyMi4zNDE3IDE4LjM1IDIyLjUgMTkgMjIuNUMxOS45NjY3IDIyLjUgMjAuNzkxNyAyMi4xNTgzIDIxLjQ3NSAyMS40NzVDMjIuMTU4MyAyMC43OTE3IDIyLjUgMTkuOTY2NyAyMi41IDE5QzIyLjUgMTguMDMzMyAyMi4xNTgzIDE3LjIwODMgMjEuNDc1IDE2LjUyNUMyMC43OTE3IDE1Ljg0MTcgMTkuOTY2NyAxNS41IDE5IDE1LjVDMTguNTE2NyAxNS41IDE4LjA2NjcgMTUuNTg3NSAxNy42NSAxNS43NjI1QzE3LjIzMzMgMTUuOTM3NSAxNi44NjY3IDE2LjE4MzMgMTYuNTUgMTYuNUgxNy4yNUMxNy40NjY3IDE2LjUgMTcuNjQ1OCAxNi41NzA4IDE3Ljc4NzUgMTYuNzEyNUMxNy45MjkyIDE2Ljg1NDIgMTggMTcuMDMzMyAxOCAxNy4yNUMxOCAxNy40NjY3IDE3LjkyOTIgMTcuNjQ1OCAxNy43ODc1IDE3Ljc4NzVDMTcuNjQ1OCAxNy45MjkyIDE3LjQ2NjcgMTggMTcuMjUgMThIMTVDMTQuNzE2NyAxOCAxNC40NzkyIDE3LjkwNDIgMTQuMjg3NSAxNy43MTI1QzE0LjA5NTggMTcuNTIwOCAxNCAxNy4yODMzIDE0IDE3VjE0Ljc1QzE0IDE0LjUzMzMgMTQuMDcwOCAxNC4zNTQyIDE0LjIxMjUgMTQuMjEyNUMxNC4zNTQyIDE0LjA3MDggMTQuNTMzMyAxNCAxNC43NSAxNEMxNC45NjY3IDE0IDE1LjE0NTggMTQuMDcwOCAxNS4yODc1IDE0LjIxMjVDMTUuNDI5MiAxNC4zNTQyIDE1LjUgMTQuNTMzMyAxNS41IDE0Ljc1VjE1LjQyNUMxNS45NSAxNC45OTE3IDE2LjQ3NSAxNC42NDU4IDE3LjA3NSAxNC4zODc1QzE3LjY3NSAxNC4xMjkyIDE4LjMxNjcgMTQgMTkgMTRDMjAuMzgzMyAxNCAyMS41NjI1IDE0LjQ4NzUgMjIuNTM3NSAxNS40NjI1QzIzLjUxMjUgMTYuNDM3NSAyNCAxNy42MTY3IDI0IDE5QzI0IDIwLjM4MzMgMjMuNTEyNSAyMS41NjI1IDIyLjUzNzUgMjIuNTM3NUMyMS41NjI1IDIzLjUxMjUgMjAuMzgzMyAyNCAxOSAyNFpNNSA4SDE5VjZINVY4WlwiIGZpbGw9XCIjNkM3MzdBXCIvPlxuPC9nPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgPG1hc2sgaWQ9XCJhXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeD1cIjBcIiB5PVwiMFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIj5cbiAgICA8cGF0aCBmaWxsPVwiI0Q5RDlEOVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxuICA8L21hc2s+XG4gIDxnIG1hc2s9XCJ1cmwoI2EpXCI+XG4gICAgPHBhdGggZmlsbD1cIiMyQzMzMzZcIiBkPVwiTTEyIDE2Ljc1YS43MjYuNzI2IDAgMCAwIC41MzUtLjIxNi43MjYuNzI2IDAgMCAwIC4yMTUtLjUzNHYtNC4yNWEuNzI2LjcyNiAwIDAgMC0uMjE2LS41MzRBLjcyNy43MjcgMCAwIDAgMTIgMTFhLjcyNS43MjUgMCAwIDAtLjUzNS4yMTYuNzI2LjcyNiAwIDAgMC0uMjE1LjUzNFYxNmMwIC4yMTIuMDcyLjM5LjIxNi41MzRhLjcyNi43MjYgMCAwIDAgLjUzNC4yMTZabTAtNy40NjJhLjc4Ljc4IDAgMCAwIC41NzUtLjIzMi43ODEuNzgxIDAgMCAwIC4yMzMtLjU3NS43ODIuNzgyIDAgMCAwLS4yMzItLjU3Ni43ODIuNzgyIDAgMCAwLS41NzYtLjIzMi43ODEuNzgxIDAgMCAwLS41NzUuMjMyLjc4Mi43ODIgMCAwIDAtLjIzMy41NzZjMCAuMjI5LjA3OC40Mi4yMzIuNTc1YS43ODEuNzgxIDAgMCAwIC41NzYuMjMyWm0uMDAyIDEyLjIxMmE5LjI1NSA5LjI1NSAwIDAgMS0zLjcwNS0uNzQ4IDkuNTk4IDkuNTk4IDAgMCAxLTMuMDE4LTIuMDMgOS41OTEgOS41OTEgMCAwIDEtMi4wMy0zLjAxNiA5LjI0NSA5LjI0NSAwIDAgMS0uNzQ5LTMuNzA0YzAtMS4zMTQuMjUtMi41NS43NDgtMy43MDVhOS41OTcgOS41OTcgMCAwIDEgMi4wMy0zLjAxOCA5LjU5MiA5LjU5MiAwIDAgMSAzLjAxNi0yLjAzIDkuMjQ1IDkuMjQ1IDAgMCAxIDMuNzA0LS43NDljMS4zMTQgMCAyLjU1LjI1IDMuNzA1Ljc0OGE5LjU5NyA5LjU5NyAwIDAgMSAzLjAxOCAyLjAzIDkuNTkyIDkuNTkyIDAgMCAxIDIuMDMgMy4wMTYgOS4yNDUgOS4yNDUgMCAwIDEgLjc0OSAzLjcwNGMwIDEuMzE0LS4yNSAyLjU1LS43NDggMy43MDVhOS41OTggOS41OTggMCAwIDEtMi4wMyAzLjAxOCA5LjU5MiA5LjU5MiAwIDAgMS0zLjAxNiAyLjAzIDkuMjQ1IDkuMjQ1IDAgMCAxLTMuNzA0Ljc0OVpNMTIgMjBjMi4yMzMgMCA0LjEyNS0uNzc1IDUuNjc1LTIuMzI1QzE5LjIyNSAxNi4xMjUgMjAgMTQuMjMzIDIwIDEyYzAtMi4yMzMtLjc3NS00LjEyNS0yLjMyNS01LjY3NUMxNi4xMjUgNC43NzUgMTQuMjMzIDQgMTIgNGMtMi4yMzMgMC00LjEyNS43NzUtNS42NzUgMi4zMjVDNC43NzUgNy44NzUgNCA5Ljc2NyA0IDEyYzAgMi4yMzMuNzc1IDQuMTI1IDIuMzI1IDUuNjc1QzcuODc1IDE5LjIyNSA5Ljc2NyAyMCAxMiAyMFpcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNMTIgMTdhLjk3Ljk3IDAgMCAwIC43MTMtLjI4OEEuOTY4Ljk2OCAwIDAgMCAxMyAxNnYtNGEuOTY4Ljk2OCAwIDAgMC0uMjg3LS43MTNBLjk2OC45NjggMCAwIDAgMTIgMTFhLjk2OC45NjggMCAwIDAtLjcxMy4yODdBLjk2OC45NjggMCAwIDAgMTEgMTJ2NGMwIC4yODMuMDk2LjUyLjI4Ny43MTIuMTkyLjE5Mi40My4yODguNzEzLjI4OFptMC04Yy4yODMgMCAuNTItLjA5Ni43MTMtLjI4N0EuOTY3Ljk2NyAwIDAgMCAxMyA4YS45NjcuOTY3IDAgMCAwLS4yODctLjcxM0EuOTY4Ljk2OCAwIDAgMCAxMiA3YS45NjguOTY4IDAgMCAwLS43MTMuMjg3QS45NjcuOTY3IDAgMCAwIDExIDhjMCAuMjgzLjA5Ni41Mi4yODcuNzEzLjE5Mi4xOTEuNDMuMjg3LjcxMy4yODdabTAgMTNhOS43MzggOS43MzggMCAwIDEtMy45LS43ODggMTAuMDk5IDEwLjA5OSAwIDAgMS0zLjE3NS0yLjEzN2MtLjktLjktMS42MTItMS45NTgtMi4xMzctMy4xNzVBOS43MzggOS43MzggMCAwIDEgMiAxMmE5Ljc0IDkuNzQgMCAwIDEgLjc4OC0zLjkgMTAuMDk5IDEwLjA5OSAwIDAgMSAyLjEzNy0zLjE3NWMuOS0uOSAxLjk1OC0xLjYxMiAzLjE3NS0yLjEzN0E5LjczOCA5LjczOCAwIDAgMSAxMiAyYTkuNzQgOS43NCAwIDAgMSAzLjkuNzg4IDEwLjA5OCAxMC4wOTggMCAwIDEgMy4xNzUgMi4xMzdjLjkuOSAxLjYxMyAxLjk1OCAyLjEzNyAzLjE3NUE5LjczOCA5LjczOCAwIDAgMSAyMiAxMmE5LjczOCA5LjczOCAwIDAgMS0uNzg4IDMuOSAxMC4wOTggMTAuMDk4IDAgMCAxLTIuMTM3IDMuMTc1Yy0uOS45LTEuOTU4IDEuNjEzLTMuMTc1IDIuMTM3QTkuNzM4IDkuNzM4IDAgMCAxIDEyIDIyWlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48cGF0aCBpZD1cInBhdGhcIiBkPVwiTTIzLjM0MTEgMy41NzU2MkwyMC40MjQ1IDAuNjU5MDYzQzE5Ljk4NDggMC4yMTk4NDQgMTkuNDA5MiAwIDE4LjgzMzYgMEMxOC4yNTc1IDAgMTcuNjgxOCAwLjIxOTg0NCAxNy4yNDI2IDAuNjU5MDYzTDAuNjU5MTggMTcuMjQyNUMtMC4yMTk3MjcgMTguMTIxNCAtMC4yMTk3MjcgMTkuNTQ1OSAwLjY1OTE4IDIwLjQyNDRMMy41NzU3NCAyMy4zNDA5QzQuMDE0OTYgMjMuNzgwMiA0LjU5MTA1IDI0IDUuMTY2NjggMjRDNS43NDIzIDI0IDYuMzE4NCAyMy43ODAyIDYuNzU3NjIgMjMuMzQwOUwyMy4zNDA2IDYuNzU3NUMyNC4yMiA1Ljg3OTA2IDI0LjIyIDQuNDU0NTMgMjMuMzQxMSAzLjU3NTYyWk01LjE2NzE1IDIxLjc1TDIuMjUwMTIgMTguODMzNEwxMi43NDU0IDguMzM2NzJMMTUuNjYyOSAxMS4yNTQyTDUuMTY3MTUgMjEuNzVaTTE3LjI1MzkgOS42NjI4MUwxNC4zMzY0IDYuNzQ1MzFMMTguODMxMiAyLjI1SDE4LjgzMzZMMjEuNzUwMSA1LjE2NjU2TDE3LjI1MzkgOS42NjI4MVpNMjAuMjUwMSAxMy41TDE5LjAwMDQgMTUuOTk5OEwxNi41MDAxIDE3LjI1TDE5LjAwMDQgMTguNTAwMkwyMC4yNTAxIDIxTDIxLjQ5OTggMTguNTAwMkwyNC4wMDAxIDE3LjI1TDIxLjQ5OTggMTUuOTk5OEwyMC4yNTAxIDEzLjVaTTEwLjUwMDEgNC41TDExLjI1MDEgM0wxMi43NTAxIDIuMjVMMTEuMjUwMSAxLjVMMTAuNTAwMSAwTDkuNzUwMTIgMS41TDguMjUwMTIgMi4yNUw5Ljc1MDEyIDNMMTAuNTAwMSA0LjVaTTMuNzUwMTIgNy41TDQuOTk5OCA1LjAwMDE2TDcuNTAwMTIgMy43NUw0Ljk5OTggMi40OTk4NEwzLjc1MDEyIDBMMi41MDA0MyAyLjQ5OTg0TDAuMDAwMTE3MTY4IDMuNzVMMi41MDA0MyA1LjAwMDE2TDMuNzUwMTIgNy41WlwiIGZpbGw9XCIjMDJCRjZGXCIvPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxnIGlkPVwibWF0ZXJpYWxzXCI+XG48bWFzayBpZD1cIm1hc2swXzRfMTgzOFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCBpZD1cIkJvdW5kaW5nIGJveFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNF8xODM4KVwiPlxuPHBhdGggaWQ9XCJtZWRpYV9saW5rXCIgZD1cIk0xMC44MjUgMTcuNDI1TDguMjc1IDE5LjAyNUM4LjEwODMzIDE5LjEyNSA3LjkzNzUgMTkuMTI5MiA3Ljc2MjUgMTkuMDM3NUM3LjU4NzUgMTguOTQ1OCA3LjUgMTguOCA3LjUgMTguNlYxNS40QzcuNSAxNS4yIDcuNTg3NSAxNS4wNTQyIDcuNzYyNSAxNC45NjI1QzcuOTM3NSAxNC44NzA4IDguMTA4MzMgMTQuODc1IDguMjc1IDE0Ljk3NUwxMC44MjUgMTYuNTc1QzEwLjk5MTcgMTYuNjc1IDExLjA3NSAxNi44MTY3IDExLjA3NSAxN0MxMS4wNzUgMTcuMTgzMyAxMC45OTE3IDE3LjMyNSAxMC44MjUgMTcuNDI1Wk0xMyAxMEMxMi4xNjY3IDEwIDExLjQ1ODMgOS43MDgzMyAxMC44NzUgOS4xMjVDMTAuMjkxNyA4LjU0MTY3IDEwIDcuODMzMzMgMTAgN0MxMCA2LjE2NjY3IDEwLjI5MTcgNS40NTgzMyAxMC44NzUgNC44NzVDMTEuNDU4MyA0LjI5MTY3IDEyLjE2NjcgNCAxMyA0SDEzLjVDMTMuNzE2NyA0IDEzLjg5NTggNC4wNzA4MyAxNC4wMzc1IDQuMjEyNUMxNC4xNzkyIDQuMzU0MTcgMTQuMjUgNC41MzMzMyAxNC4yNSA0Ljc1QzE0LjI1IDQuOTY2NjcgMTQuMTc5MiA1LjE0NTgzIDE0LjAzNzUgNS4yODc1QzEzLjg5NTggNS40MjkxNyAxMy43MTY3IDUuNSAxMy41IDUuNUgxM0MxMi41ODMzIDUuNSAxMi4yMjkyIDUuNjQ1ODMgMTEuOTM3NSA1LjkzNzVDMTEuNjQ1OCA2LjIyOTE3IDExLjUgNi41ODMzMyAxMS41IDdDMTEuNSA3LjQxNjY3IDExLjY0NTggNy43NzA4MyAxMS45Mzc1IDguMDYyNUMxMi4yMjkyIDguMzU0MTcgMTIuNTgzMyA4LjUgMTMgOC41SDEzLjVDMTMuNzE2NyA4LjUgMTMuODk1OCA4LjU3MDgzIDE0LjAzNzUgOC43MTI1QzE0LjE3OTIgOC44NTQxNyAxNC4yNSA5LjAzMzMzIDE0LjI1IDkuMjVDMTQuMjUgOS40NjY2NyAxNC4xNzkyIDkuNjQ1ODMgMTQuMDM3NSA5Ljc4NzVDMTMuODk1OCA5LjkyOTE3IDEzLjcxNjcgMTAgMTMuNSAxMEgxM1pNMTcgMTBIMTYuNUMxNi4yODMzIDEwIDE2LjEwNDIgOS45MjkxNyAxNS45NjI1IDkuNzg3NUMxNS44MjA4IDkuNjQ1ODMgMTUuNzUgOS40NjY2NyAxNS43NSA5LjI1QzE1Ljc1IDkuMDMzMzMgMTUuODIwOCA4Ljg1NDE3IDE1Ljk2MjUgOC43MTI1QzE2LjEwNDIgOC41NzA4MyAxNi4yODMzIDguNSAxNi41IDguNUgxN0MxNy40MTY3IDguNSAxNy43NzA4IDguMzU0MTcgMTguMDYyNSA4LjA2MjVDMTguMzU0MiA3Ljc3MDgzIDE4LjUgNy40MTY2NyAxOC41IDdDMTguNSA2LjU4MzMzIDE4LjM1NDIgNi4yMjkxNyAxOC4wNjI1IDUuOTM3NUMxNy43NzA4IDUuNjQ1ODMgMTcuNDE2NyA1LjUgMTcgNS41SDE2LjVDMTYuMjgzMyA1LjUgMTYuMTA0MiA1LjQyOTE3IDE1Ljk2MjUgNS4yODc1QzE1LjgyMDggNS4xNDU4MyAxNS43NSA0Ljk2NjY3IDE1Ljc1IDQuNzVDMTUuNzUgNC41MzMzMyAxNS44MjA4IDQuMzU0MTcgMTUuOTYyNSA0LjIxMjVDMTYuMTA0MiA0LjA3MDgzIDE2LjI4MzMgNCAxNi41IDRIMTdDMTcuODMzMyA0IDE4LjU0MTcgNC4yOTE2NyAxOS4xMjUgNC44NzVDMTkuNzA4MyA1LjQ1ODMzIDIwIDYuMTY2NjcgMjAgN0MyMCA3LjgzMzMzIDE5LjcwODMgOC41NDE2NyAxOS4xMjUgOS4xMjVDMTguNTQxNyA5LjcwODMzIDE3LjgzMzMgMTAgMTcgMTBaTTE2LjI1IDcuNzVIMTMuNzVDMTMuNTMzMyA3Ljc1IDEzLjM1NDIgNy42NzkxNyAxMy4yMTI1IDcuNTM3NUMxMy4wNzA4IDcuMzk1ODMgMTMgNy4yMTY2NyAxMyA3QzEzIDYuNzgzMzMgMTMuMDcwOCA2LjYwNDE3IDEzLjIxMjUgNi40NjI1QzEzLjM1NDIgNi4zMjA4MyAxMy41MzMzIDYuMjUgMTMuNzUgNi4yNUgxNi4yNUMxNi40NjY3IDYuMjUgMTYuNjQ1OCA2LjMyMDgzIDE2Ljc4NzUgNi40NjI1QzE2LjkyOTIgNi42MDQxNyAxNyA2Ljc4MzMzIDE3IDdDMTcgNy4yMTY2NyAxNi45MjkyIDcuMzk1ODMgMTYuNzg3NSA3LjUzNzVDMTYuNjQ1OCA3LjY3OTE3IDE2LjQ2NjcgNy43NSAxNi4yNSA3Ljc1Wk0xNi4xIDE0VjEySDIxVjNIOVYxMkg3VjNDNyAyLjQ1IDcuMTk1ODMgMS45NzkxNyA3LjU4NzUgMS41ODc1QzcuOTc5MTcgMS4xOTU4MyA4LjQ1IDEgOSAxSDIxQzIxLjU1IDEgMjIuMDIwOCAxLjE5NTgzIDIyLjQxMjUgMS41ODc1QzIyLjgwNDIgMS45NzkxNyAyMyAyLjQ1IDIzIDNWMTJDMjMgMTIuNTUgMjIuODA0MiAxMy4wMjA4IDIyLjQxMjUgMTMuNDEyNUMyMi4wMjA4IDEzLjgwNDIgMjEuNTUgMTQgMjEgMTRIMTYuMVpNMyAyM0MyLjQ1IDIzIDEuOTc5MTcgMjIuODA0MiAxLjU4NzUgMjIuNDEyNUMxLjE5NTgzIDIyLjAyMDggMSAyMS41NSAxIDIxVjEzQzEgMTIuNDUgMS4xOTU4MyAxMS45NzkyIDEuNTg3NSAxMS41ODc1QzEuOTc5MTcgMTEuMTk1OCAyLjQ1IDExIDMgMTFIMTVDMTUuNTUgMTEgMTYuMDIwOCAxMS4xOTU4IDE2LjQxMjUgMTEuNTg3NUMxNi44MDQyIDExLjk3OTIgMTcgMTIuNDUgMTcgMTNWMjFDMTcgMjEuNTUgMTYuODA0MiAyMi4wMjA4IDE2LjQxMjUgMjIuNDEyNUMxNi4wMjA4IDIyLjgwNDIgMTUuNTUgMjMgMTUgMjNIM1pNMyAyMUgxNVYxM0gzVjIxWlwiIGZpbGw9XCIjMDJCRjZGXCIvPlxuPC9nPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDczXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDczKVwiPlxuPHBhdGggZD1cIk0xNy4yNDAzIDE0LjE4MDdMMTYuMTM2NSAxMy4wNTc2QzE2LjI0MTcgMTIuODY1MyAxNi4zMzU2IDEyLjY1MzUgMTYuNDE4MiAxMi40MjIxQzE2LjUwMDkgMTIuMTkwNyAxNi41NjA5IDExLjk0NjEgMTYuNTk4IDExLjY4ODRDMTYuNjM1MiAxMS40OTYxIDE2LjcyNCAxMS4zMzMzIDE2Ljg2NDQgMTEuMkMxNy4wMDQ4IDExLjA2NjYgMTcuMTY2IDExIDE3LjM0OCAxMUMxNy41ODE0IDExIDE3Ljc3MjQgMTEuMDc5NSAxNy45MjExIDExLjIzODRDMTguMDY5OCAxMS4zOTc0IDE4LjEyODggMTEuNTgzMyAxOC4wOTggMTEuNzk2MUMxOC4wNDAzIDEyLjI1MjUgMTcuOTM3MSAxMi42NzY1IDE3Ljc4ODQgMTMuMDY4MkMxNy42Mzk3IDEzLjQ1OTkgMTcuNDU3IDEzLjgzMDcgMTcuMjQwMyAxNC4xODA3Wk0xNC4wMjExIDEwLjkzMDdMMTIuNjQ0MiA5LjU1Mzc4VjQuOTk5OTdDMTIuNjQ0MiA0LjcxNjY0IDEyLjU0ODQgNC40NzkxNCAxMi4zNTY3IDQuMjg3NDdDMTIuMTY1IDQuMDk1ODEgMTEuOTI3NSAzLjk5OTk3IDExLjY0NDIgMy45OTk5N0MxMS4zNjA5IDMuOTk5OTcgMTEuMTIzNCA0LjA5NTgxIDEwLjkzMTcgNC4yODc0N0MxMC43NCA0LjQ3OTE0IDEwLjY0NDIgNC43MTY2NCAxMC42NDQyIDQuOTk5OTdWNy41MzQ1NUw5LjE0NDI0IDYuMDM0NTdWNC45OTk5N0M5LjE0NDI0IDQuMzAxMjggOS4zODYyMyAzLjcwOTkzIDkuODcwMTkgMy4yMjU5NUMxMC4zNTQyIDIuNzQxOTggMTAuOTQ1NSAyLjUgMTEuNjQ0MiAyLjVDMTIuMzQyOSAyLjUgMTIuOTM0MyAyLjc0MTk4IDEzLjQxODIgMy4yMjU5NUMxMy45MDIyIDMuNzA5OTMgMTQuMTQ0MiA0LjMwMTI4IDE0LjE0NDIgNC45OTk5N1YxMC4zNDYxQzE0LjE0NDIgMTAuNDU4OSAxNC4xMzEzIDEwLjU2MTUgMTQuMTA1NyAxMC42NTM4QzE0LjA4MDEgMTAuNzQ2MSAxNC4wNTE5IDEwLjgzODQgMTQuMDIxMSAxMC45MzA3Wk0xOS4zNDA0IDIxLjE4ODRMMi4yMDU3NyA0LjA1Mzc1QzIuMDY3MzIgMy45MTUzIDEuOTk2NDggMy43NDEyNyAxLjk5MzI3IDMuNTMxNjVDMS45OTAwNyAzLjMyMjA1IDIuMDYwOSAzLjE0NDgyIDIuMjA1NzcgMi45OTk5NUMyLjM1MDYzIDIuODU1MDcgMi41MjYyNyAyLjc4MjYyIDIuNzMyNjcgMi43ODI2MkMyLjkzOTA4IDIuNzgyNjIgMy4xMTQ3MyAyLjg1NTA3IDMuMjU5NTkgMi45OTk5NUwyMC4zOTQyIDIwLjEzNDZDMjAuNTMyNyAyMC4yNzMgMjAuNjAzNSAyMC40NDcxIDIwLjYwNjcgMjAuNjU2N0MyMC42MDk5IDIwLjg2NjMgMjAuNTM5MSAyMS4wNDM1IDIwLjM5NDIgMjEuMTg4NEMyMC4yNDkzIDIxLjMzMzMgMjAuMDczNyAyMS40MDU3IDE5Ljg2NzMgMjEuNDA1N0MxOS42NjA5IDIxLjQwNTcgMTkuNDg1MyAyMS4zMzMzIDE5LjM0MDQgMjEuMTg4NFpNMTAuODk0MiAyMFYxNy40NTM4QzkuMzgyNjggMTcuMjc1NiA4LjA5ODA3IDE2LjY1OTIgNy4wNDAzNyAxNS42MDQ3QzUuOTgyNjggMTQuNTUwMyA1LjM2NjAzIDEzLjI4MDcgNS4xOTAzOSAxMS43OTYxQzUuMTU5NjMgMTEuNTgzMyA1LjIxODYgMTEuMzk3NCA1LjM2NzMyIDExLjIzODRDNS41MTYwMiAxMS4wNzk1IDUuNzEyMTYgMTEgNS45NTU3NCAxMUM2LjEzMTM5IDExIDYuMjg4NDQgMTEuMDY2NiA2LjQyNjg5IDExLjJDNi41NjUzNiAxMS4zMzMzIDYuNjUzMTggMTEuNDk2MSA2LjY5MDM0IDExLjY4ODRDNi44NTU3MyAxMi45MDY0IDcuNDA2MzcgMTMuOTI5NSA4LjM0MjI3IDE0Ljc1NzdDOS4yNzgxNyAxNS41ODU5IDEwLjM3ODggMTYgMTEuNjQ0MiAxNkMxMi4yODc4IDE2IDEyLjg5MjYgMTUuODg1MiAxMy40NTg2IDE1LjY1NTdDMTQuMDI0NyAxNS40MjYyIDE0LjUyNTYgMTUuMTA4MyAxNC45NjE1IDE0LjcwMTlMMTYuMDMwNyAxNS43NzExQzE1LjU0NzQgMTYuMjI0OSAxNC45OTc0IDE2LjYwMTIgMTQuMzgwNyAxNi45QzEzLjc2NDEgMTcuMTk4NyAxMy4xMDE5IDE3LjM4MzMgMTIuMzk0MiAxNy40NTM4VjIwQzEyLjM5NDIgMjAuMjEyOCAxMi4zMjI0IDIwLjM5MSAxMi4xNzg4IDIwLjUzNDZDMTIuMDM1MiAyMC42NzgyIDExLjg1NyAyMC43NSAxMS42NDQyIDIwLjc1QzExLjQzMTQgMjAuNzUgMTEuMjUzMiAyMC42NzgyIDExLjEwOTYgMjAuNTM0NkMxMC45NjYgMjAuMzkxIDEwLjg5NDIgMjAuMjEyOCAxMC44OTQyIDIwWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDY3XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDY3KVwiPlxuPHBhdGggZD1cIk0xNy4yNDAzIDE0LjE4MDdMMTYuMTM2NSAxMy4wNTc2QzE2LjI0MTcgMTIuODY1MyAxNi4zMzU2IDEyLjY1MzUgMTYuNDE4MiAxMi40MjIxQzE2LjUwMDkgMTIuMTkwNyAxNi41NjA5IDExLjk0NjEgMTYuNTk4IDExLjY4ODRDMTYuNjM1MiAxMS40OTYxIDE2LjcyNCAxMS4zMzMzIDE2Ljg2NDQgMTEuMkMxNy4wMDQ4IDExLjA2NjYgMTcuMTY2IDExIDE3LjM0OCAxMUMxNy41ODE0IDExIDE3Ljc3MjQgMTEuMDc5NSAxNy45MjExIDExLjIzODRDMTguMDY5OCAxMS4zOTc0IDE4LjEyODggMTEuNTgzMyAxOC4wOTggMTEuNzk2MUMxOC4wNDAzIDEyLjI1MjUgMTcuOTM3MSAxMi42NzY1IDE3Ljc4ODQgMTMuMDY4MkMxNy42Mzk3IDEzLjQ1OTkgMTcuNDU3IDEzLjgzMDcgMTcuMjQwMyAxNC4xODA3Wk0xNC4wMjExIDEwLjkzMDdMOS4xNDQyNCA2LjAzNDU3VjQuOTk5OTdDOS4xNDQyNCA0LjMwMTI4IDkuMzg2MjMgMy43MDk5MyA5Ljg3MDE5IDMuMjI1OTVDMTAuMzU0MiAyLjc0MTk4IDEwLjk0NTUgMi41IDExLjY0NDIgMi41QzEyLjM0MjkgMi41IDEyLjkzNDMgMi43NDE5OCAxMy40MTgyIDMuMjI1OTVDMTMuOTAyMiAzLjcwOTkzIDE0LjE0NDIgNC4zMDEyOCAxNC4xNDQyIDQuOTk5OTdWMTAuMzQ2MUMxNC4xNDQyIDEwLjQ1ODkgMTQuMTMxMyAxMC41NjE1IDE0LjEwNTcgMTAuNjUzOEMxNC4wODAxIDEwLjc0NjEgMTQuMDUxOSAxMC44Mzg0IDE0LjAyMTEgMTAuOTMwN1pNMTkuMzQwNCAyMS4xODg0TDIuMjA1NzcgNC4wNTM3NUMyLjA2NzMyIDMuOTE1MyAxLjk5NjQ4IDMuNzQxMjcgMS45OTMyNyAzLjUzMTY1QzEuOTkwMDcgMy4zMjIwNSAyLjA2MDkgMy4xNDQ4MiAyLjIwNTc3IDIuOTk5OTVDMi4zNTA2MyAyLjg1NTA3IDIuNTI2MjcgMi43ODI2MiAyLjczMjY3IDIuNzgyNjJDMi45MzkwOCAyLjc4MjYyIDMuMTE0NzMgMi44NTUwNyAzLjI1OTU5IDIuOTk5OTVMMjAuMzk0MiAyMC4xMzQ2QzIwLjUzMjcgMjAuMjczIDIwLjYwMzUgMjAuNDQ3MSAyMC42MDY3IDIwLjY1NjdDMjAuNjA5OSAyMC44NjYzIDIwLjUzOTEgMjEuMDQzNSAyMC4zOTQyIDIxLjE4ODRDMjAuMjQ5MyAyMS4zMzMzIDIwLjA3MzcgMjEuNDA1NyAxOS44NjczIDIxLjQwNTdDMTkuNjYwOSAyMS40MDU3IDE5LjQ4NTMgMjEuMzMzMyAxOS4zNDA0IDIxLjE4ODRaTTEwLjg5NDIgMjBWMTcuNDU3NkM5LjM4MjY4IDE3LjI4MzMgOC4wOTgwNyAxNi42NjczIDcuMDQwMzcgMTUuNjA5NkM1Ljk4MjY4IDE0LjU1MTkgNS4zNjYwMyAxMy4yODA3IDUuMTkwMzkgMTEuNzk2MUM1LjE1OTYzIDExLjU4MzMgNS4yMTg2IDExLjM5NzQgNS4zNjczMiAxMS4yMzg0QzUuNTE2MDIgMTEuMDc5NSA1LjcxMjE2IDExIDUuOTU1NzQgMTFDNi4xMzEzOSAxMSA2LjI4ODQ0IDExLjA2NjYgNi40MjY4OSAxMS4yQzYuNTY1MzYgMTEuMzMzMyA2LjY1MzE4IDExLjQ5NjEgNi42OTAzNCAxMS42ODg0QzYuODU1NzMgMTIuOTA2NCA3LjQwNjM3IDEzLjkyOTUgOC4zNDIyNyAxNC43NTc3QzkuMjc4MTcgMTUuNTg1OSAxMC4zNzg4IDE2IDExLjY0NDIgMTZDMTIuMjg3OCAxNiAxMi44OTI2IDE1Ljg4NTIgMTMuNDU4NiAxNS42NTU3QzE0LjAyNDcgMTUuNDI2MiAxNC41MjU2IDE1LjEwODMgMTQuOTYxNSAxNC43MDE5TDE2LjAzMDcgMTUuNzcxMUMxNS41NDc0IDE2LjIyNDkgMTQuOTk3NCAxNi41OTg2IDE0LjM4MDcgMTYuODkyMkMxMy43NjQxIDE3LjE4NTggMTMuMTAxOSAxNy4zNzQzIDEyLjM5NDIgMTcuNDU3NlYyMEMxMi4zOTQyIDIwLjIxMjggMTIuMzIyNCAyMC4zOTEgMTIuMTc4OCAyMC41MzQ2QzEyLjAzNTIgMjAuNjc4MiAxMS44NTcgMjAuNzUgMTEuNjQ0MiAyMC43NUMxMS40MzE0IDIwLjc1IDExLjI1MzIgMjAuNjc4MiAxMS4xMDk2IDIwLjUzNDZDMTAuOTY2IDIwLjM5MSAxMC44OTQyIDIwLjIxMjggMTAuODk0MiAyMFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA2MVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA2MSlcIj5cbjxwYXRoIGQ9XCJNMTEuOTk5OCAxMy41QzExLjMwMTEgMTMuNSAxMC43MDk4IDEzLjI1OCAxMC4yMjU4IDEyLjc3NEM5Ljc0MTgxIDEyLjI5IDkuNDk5ODMgMTEuNjk4NyA5LjQ5OTgzIDExVjQuOTk5OTdDOS40OTk4MyA0LjMwMTI3IDkuNzQxODEgMy43MDk5MyAxMC4yMjU4IDMuMjI1OTVDMTAuNzA5OCAyLjc0MTk4IDExLjMwMTEgMi41IDExLjk5OTggMi41QzEyLjY5ODUgMi41IDEzLjI4OTggMi43NDE5OCAxMy43NzM4IDMuMjI1OTVDMTQuMjU3OCAzLjcwOTkzIDE0LjQ5OTggNC4zMDEyNyAxNC40OTk4IDQuOTk5OTdWMTFDMTQuNDk5OCAxMS42OTg3IDE0LjI1NzggMTIuMjkgMTMuNzczOCAxMi43NzRDMTMuMjg5OCAxMy4yNTggMTIuNjk4NSAxMy41IDExLjk5OTggMTMuNVpNMTEuOTk5OCAyMC43NUMxMS43ODcgMjAuNzUgMTEuNjA4OCAyMC42NzgyIDExLjQ2NTIgMjAuNTM0NkMxMS4zMjE2IDIwLjM5MSAxMS4yNDk4IDIwLjIxMjggMTEuMjQ5OCAyMFYxNy40NTM4QzkuNzM4MyAxNy4yNzU2IDguNDUzNjggMTYuNjU5MiA3LjM5NTk4IDE1LjYwNDdDNi4zMzgzIDE0LjU1MDMgNS43MjE2NCAxMy4yODA3IDUuNTQ2IDExLjc5NjFDNS41MTUyMiAxMS41ODMzIDUuNTc0MTkgMTEuMzk3NCA1LjcyMjkgMTEuMjM4NEM1Ljg3MTYyIDExLjA3OTUgNi4wNjc3NyAxMSA2LjMxMTM1IDExQzYuNDg2OTkgMTEgNi42NDQwNCAxMS4wNjY2IDYuNzgyNSAxMS4yQzYuOTIwOTUgMTEuMzMzMyA3LjAwODc3IDExLjQ5NjEgNy4wNDU5NSAxMS42ODg0QzcuMjExMzQgMTIuOTA2NCA3Ljc2MTk4IDEzLjkyOTUgOC42OTc4OCAxNC43NTc3QzkuNjMzNzggMTUuNTg1OSAxMC43MzQ0IDE2IDExLjk5OTggMTZDMTMuMjY1MiAxNiAxNC4zNjU4IDE1LjU4NTkgMTUuMzAxNyAxNC43NTc3QzE2LjIzNzYgMTMuOTI5NSAxNi43ODgzIDEyLjkwNjQgMTYuOTUzNyAxMS42ODg0QzE2Ljk5MDggMTEuNDk2MSAxNy4wNzk2IDExLjMzMzMgMTcuMjIgMTEuMkMxNy4zNjA0IDExLjA2NjYgMTcuNTIxNiAxMSAxNy43MDM2IDExQzE3LjkzNyAxMSAxOC4xMjggMTEuMDc5NSAxOC4yNzY3IDExLjIzODRDMTguNDI1NCAxMS4zOTc0IDE4LjQ4NDQgMTEuNTgzMyAxOC40NTM2IDExLjc5NjFDMTguMjc4IDEzLjI4MDcgMTcuNjYxMyAxNC41NTAzIDE2LjYwMzYgMTUuNjA0N0MxNS41NDU5IDE2LjY1OTIgMTQuMjYxMyAxNy4yNzU2IDEyLjc0OTggMTcuNDUzOFYyMEMxMi43NDk4IDIwLjIxMjggMTIuNjc4IDIwLjM5MSAxMi41MzQ0IDIwLjUzNDZDMTIuMzkwOCAyMC42NzgyIDEyLjIxMjYgMjAuNzUgMTEuOTk5OCAyMC43NVpNMTEuOTk5OCAxMkMxMi4yODMxIDEyIDEyLjUyMDYgMTEuOTA0MSAxMi43MTIzIDExLjcxMjVDMTIuOTA0IDExLjUyMDggMTIuOTk5OCAxMS4yODMzIDEyLjk5OTggMTFWNC45OTk5N0MxMi45OTk4IDQuNzE2NjQgMTIuOTA0IDQuNDc5MTQgMTIuNzEyMyA0LjI4NzQ3QzEyLjUyMDYgNC4wOTU4MSAxMi4yODMxIDMuOTk5OTcgMTEuOTk5OCAzLjk5OTk3QzExLjcxNjUgMy45OTk5NyAxMS40NzkgNC4wOTU4MSAxMS4yODczIDQuMjg3NDdDMTEuMDk1NiA0LjQ3OTE0IDEwLjk5OTggNC43MTY2NCAxMC45OTk4IDQuOTk5OTdWMTFDMTAuOTk5OCAxMS4yODMzIDExLjA5NTYgMTEuNTIwOCAxMS4yODczIDExLjcxMjVDMTEuNDc5IDExLjkwNDEgMTEuNzE2NSAxMiAxMS45OTk4IDEyWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDY0XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDY0KVwiPlxuPHBhdGggZD1cIk0xMS45OTk4IDEzLjVDMTEuMzAxMSAxMy41IDEwLjcwOTggMTMuMjU4IDEwLjIyNTggMTIuNzc0QzkuNzQxODEgMTIuMjkgOS40OTk4MyAxMS42OTg3IDkuNDk5ODMgMTFWNC45OTk5N0M5LjQ5OTgzIDQuMzAxMjcgOS43NDE4MSAzLjcwOTkzIDEwLjIyNTggMy4yMjU5NUMxMC43MDk4IDIuNzQxOTggMTEuMzAxMSAyLjUgMTEuOTk5OCAyLjVDMTIuNjk4NSAyLjUgMTMuMjg5OCAyLjc0MTk4IDEzLjc3MzggMy4yMjU5NUMxNC4yNTc4IDMuNzA5OTMgMTQuNDk5OCA0LjMwMTI3IDE0LjQ5OTggNC45OTk5N1YxMUMxNC40OTk4IDExLjY5ODcgMTQuMjU3OCAxMi4yOSAxMy43NzM4IDEyLjc3NEMxMy4yODk4IDEzLjI1OCAxMi42OTg1IDEzLjUgMTEuOTk5OCAxMy41Wk0xMS45OTk4IDIwLjc1QzExLjc4NyAyMC43NSAxMS42MDg4IDIwLjY3ODIgMTEuNDY1MiAyMC41MzQ2QzExLjMyMTYgMjAuMzkxIDExLjI0OTggMjAuMjEyOCAxMS4yNDk4IDIwVjE3LjQ1NzZDOS43MzgzIDE3LjI4MzMgOC40NTM2OCAxNi42NjczIDcuMzk1OTggMTUuNjA5NkM2LjMzODMgMTQuNTUxOSA1LjcyMTY0IDEzLjI4MDcgNS41NDYgMTEuNzk2MUM1LjUxNTIyIDExLjU4MzMgNS41NzQxOSAxMS4zOTc0IDUuNzIyOSAxMS4yMzg0QzUuODcxNjIgMTEuMDc5NSA2LjA2Nzc3IDExIDYuMzExMzUgMTFDNi40ODY5OSAxMSA2LjY0NDA0IDExLjA2NjYgNi43ODI1IDExLjJDNi45MjA5NSAxMS4zMzMzIDcuMDA4NzcgMTEuNDk2MSA3LjA0NTk1IDExLjY4ODRDNy4yMTEzNCAxMi45MDY0IDcuNzYxOTggMTMuOTI5NSA4LjY5Nzg4IDE0Ljc1NzdDOS42MzM3OCAxNS41ODU5IDEwLjczNDQgMTYgMTEuOTk5OCAxNkMxMy4yNjUyIDE2IDE0LjM2NTggMTUuNTg1OSAxNS4zMDE3IDE0Ljc1NzdDMTYuMjM3NiAxMy45Mjk1IDE2Ljc4ODMgMTIuOTA2NCAxNi45NTM3IDExLjY4ODRDMTYuOTkwOCAxMS40OTYxIDE3LjA3OTYgMTEuMzMzMyAxNy4yMiAxMS4yQzE3LjM2MDQgMTEuMDY2NiAxNy41MjE2IDExIDE3LjcwMzYgMTFDMTcuOTM3IDExIDE4LjEyOCAxMS4wNzk1IDE4LjI3NjcgMTEuMjM4NEMxOC40MjU0IDExLjM5NzQgMTguNDg0NCAxMS41ODMzIDE4LjQ1MzYgMTEuNzk2MUMxOC4yNzggMTMuMjgwNyAxNy42NjEzIDE0LjU1MTkgMTYuNjAzNiAxNS42MDk2QzE1LjU0NTkgMTYuNjY3MyAxNC4yNjEzIDE3LjI4MzMgMTIuNzQ5OCAxNy40NTc2VjIwQzEyLjc0OTggMjAuMjEyOCAxMi42NzggMjAuMzkxIDEyLjUzNDQgMjAuNTM0NkMxMi4zOTA4IDIwLjY3ODIgMTIuMjEyNiAyMC43NSAxMS45OTk4IDIwLjc1WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnICB2aWV3Qm94PVwiMCAwIDIyIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgPjxwYXRoIGQ9XCJNMTEgMi4zMzVhOS43NyA5Ljc3IDAgMDE4LjgyIDUuNSA5Ljc2IDkuNzYgMCAwMS04LjgyIDUuNSA5Ljc2IDkuNzYgMCAwMS04LjgyLTUuNSA5Ljc3IDkuNzcgMCAwMTguODItNS41em0wLTJjLTUgMC05LjI3IDMuMTEtMTEgNy41IDEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXptMCA1YTIuNSAyLjUgMCAwMTAgNSAyLjUgMi41IDAgMDEwLTV6bTAtMmMtMi40OCAwLTQuNSAyLjAyLTQuNSA0LjVzMi4wMiA0LjUgNC41IDQuNSA0LjUtMi4wMiA0LjUtNC41LTIuMDItNC41LTQuNS00LjV6XCIgZmlsbD1cIiM4MzhCOTdcIj48L3BhdGg+PC9zdmc+IiwiPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgPlxuICA8cGF0aCBkPVwiTTIzLjc3NSAxNy44OThMMS4zNS4zNjdBLjYuNiAwIDAwLjUwNy40NkwuMTMyLjkzYS42LjYgMCAwMC4wOTMuODQ0bDIyLjQyNSAxNy41M2EuNi42IDAgMDAuODQzLS4wOTNsLjM3NS0uNDY4YS42LjYgMCAwMC0uMDkzLS44NDR6TTExLjEzIDUuNzI4bDUuMDU0IDMuOTUyYTQuMTg5IDQuMTg5IDAgMDAtNS4wNTUtMy45NTJ6bTEuNzQgOC4yMTVMNy44MTYgOS45OWE0LjE5IDQuMTkgMCAwMDUuMDU0IDMuOTUyek0xMiA0LjQzNWMzLjcgMCA3LjA5IDIuMDYzIDguOTIyIDUuNGExMC43MSAxMC43MSAwIDAxLTEuNjUgMi4yNThsMS40MTYgMS4xMDZhMTIuNTE4IDEyLjUxOCAwIDAwMS45ODMtMi44MTcgMS4yMTQgMS4yMTQgMCAwMDAtMS4wOTRDMjAuNjM2IDUuMzIgMTYuNjEgMi42MzUgMTIgMi42MzVjLTEuMzc2IDAtMi42OS4yNjMtMy45MjQuNzA2bDEuNzQgMS4zNkE5Ljg0MyA5Ljg0MyAwIDAxMTIgNC40MzV6bTAgMTAuOGMtMy43IDAtNy4wOS0yLjA2Mi04LjkyMi01LjQuNDUtLjgyMSAxLjAwNC0xLjU4IDEuNjUxLTIuMjU3TDMuMzE0IDYuNDcyYTEyLjUxIDEyLjUxIDAgMDAtMS45ODMgMi44MTYgMS4yMTMgMS4yMTMgMCAwMDAgMS4wOTVDMy4zNjQgMTQuMzUgNy4zOSAxNy4wMzUgMTIgMTcuMDM1YzEuMzc2IDAgMi42ODktLjI2NCAzLjkyNC0uNzA1bC0xLjc0LTEuMzZhOS44NiA5Ljg2IDAgMDEtMi4xODQuMjY1elwiIGZpbGw9XCIjODM4Qjk3XCI+PC9wYXRoPlxuPC9zdmc+IiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XG4gIDxwYXRoIGZpbGw9XCIjNDI0NTRCXCIgZD1cIm0xNS4yNjIgNi43MDgtMTEtNi41MDNDMy4zNy0uMzIzIDIgLjE5IDIgMS40OTVWMTQuNWMwIDEuMTcyIDEuMjcyIDEuODc4IDIuMjYzIDEuMjlsMTEtNi41Yy45OC0uNTc4Ljk4NC0yLjAwMiAwLTIuNThaXCIvPlxuPC9zdmc+IiwiPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggaWQ9XCJwYXRoXCIgZD1cIk0xMCAwLjMxMjVDNC42NDg0NCAwLjMxMjUgMC4zMTI1IDQuNjQ4NDQgMC4zMTI1IDEwQzAuMzEyNSAxNS4zNTE2IDQuNjQ4NDQgMTkuNjg3NSAxMCAxOS42ODc1QzE1LjM1MTYgMTkuNjg3NSAxOS42ODc1IDE1LjM1MTYgMTkuNjg3NSAxMEMxOS42ODc1IDQuNjQ4NDQgMTUuMzUxNiAwLjMxMjUgMTAgMC4zMTI1Wk0xMCAxNy44MTI1QzUuNjkxNDEgMTcuODEyNSAyLjE4NzUgMTQuMzA4NiAyLjE4NzUgMTBDMi4xODc1IDUuNjkxNDEgNS42OTE0MSAyLjE4NzUgMTAgMi4xODc1QzE0LjMwODYgMi4xODc1IDE3LjgxMjUgNS42OTE0MSAxNy44MTI1IDEwQzE3LjgxMjUgMTQuMzA4NiAxNC4zMDg2IDE3LjgxMjUgMTAgMTcuODEyNVpNNi44NzUgOS4zNzVDNy41NjY0MSA5LjM3NSA4LjEyNSA4LjgxNjQxIDguMTI1IDguMTI1QzguMTI1IDcuNDMzNTkgNy41NjY0MSA2Ljg3NSA2Ljg3NSA2Ljg3NUM2LjE4MzU5IDYuODc1IDUuNjI1IDcuNDMzNTkgNS42MjUgOC4xMjVDNS42MjUgOC44MTY0MSA2LjE4MzU5IDkuMzc1IDYuODc1IDkuMzc1Wk0xMy4xMjUgOS4zNzVDMTMuODE2NCA5LjM3NSAxNC4zNzUgOC44MTY0MSAxNC4zNzUgOC4xMjVDMTQuMzc1IDcuNDMzNTkgMTMuODE2NCA2Ljg3NSAxMy4xMjUgNi44NzVDMTIuNDMzNiA2Ljg3NSAxMS44NzUgNy40MzM1OSAxMS44NzUgOC4xMjVDMTEuODc1IDguODE2NDEgMTIuNDMzNiA5LjM3NSAxMy4xMjUgOS4zNzVaTTEzLjI4MTIgMTIuMjEwOUMxMi40Njg4IDEzLjE4NzUgMTEuMjY5NSAxMy43NSAxMCAxMy43NUM4LjczMDQ3IDEzLjc1IDcuNTMxMjUgMTMuMTkxNCA2LjcxODc1IDEyLjIxMDlDNi4zODY3MiAxMS44MTI1IDUuNzkyOTcgMTEuNzYxNyA1LjM5ODQ0IDEyLjA4OThDNSAxMi40MjE5IDQuOTQ5MjIgMTMuMDExNyA1LjI3NzM0IDEzLjQxMDJDNi40NDkyMiAxNC44MTY0IDguMTcxODggMTUuNjIxMSAxMCAxNS42MjExQzExLjgyODEgMTUuNjIxMSAxMy41NTA4IDE0LjgxNjQgMTQuNzIyNyAxMy40MTAyQzE1LjA1NDcgMTMuMDExNyAxNSAxMi40MjE5IDE0LjYwMTYgMTIuMDg5OEMxNC4yMDcgMTEuNzYxNyAxMy42MTMzIDExLjgxMjUgMTMuMjgxMiAxMi4yMTA5WlwiIGZpbGw9XCIjOUZBNkFEXCIvPjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48ZyBpZD1cInN0YWNrZWRfZW1haWxcIj5cbjxtYXNrIGlkPVwibWFzazBfNF8xODUwXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IGlkPVwiQm91bmRpbmcgYm94XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF80XzE4NTApXCI+XG48cGF0aCBpZD1cInN0YWNrZWRfZW1haWxfMlwiIGQ9XCJNNyAxN0M2LjQ1IDE3IDUuOTc5MTcgMTYuODA0MiA1LjU4NzUgMTYuNDEyNUM1LjE5NTgzIDE2LjAyMDggNSAxNS41NSA1IDE1VjVDNSA0LjQ1IDUuMTk1ODMgMy45NzkxNyA1LjU4NzUgMy41ODc1QzUuOTc5MTcgMy4xOTU4MyA2LjQ1IDMgNyAzSDIxQzIxLjU1IDMgMjIuMDIwOCAzLjE5NTgzIDIyLjQxMjUgMy41ODc1QzIyLjgwNDIgMy45NzkxNyAyMyA0LjQ1IDIzIDVWMTVDMjMgMTUuNTUgMjIuODA0MiAxNi4wMjA4IDIyLjQxMjUgMTYuNDEyNUMyMi4wMjA4IDE2LjgwNDIgMjEuNTUgMTcgMjEgMTdIN1pNMTMuNDI1IDExLjlMNyA3LjQyNVYxNUgyMVY3LjQyNUwxNC41NzUgMTEuOUMxNC4zOTE3IDEyLjAzMzMgMTQuMiAxMi4xIDE0IDEyLjFDMTMuOCAxMi4xIDEzLjYwODMgMTIuMDMzMyAxMy40MjUgMTEuOVpNMTQgOS44NUwyMSA1SDdMMTQgOS44NVpNMyAyMUMyLjQ1IDIxIDEuOTc5MTcgMjAuODA0MiAxLjU4NzUgMjAuNDEyNUMxLjE5NTgzIDIwLjAyMDggMSAxOS41NSAxIDE5VjcuNUMxIDcuMjE2NjcgMS4wOTU4MyA2Ljk3OTE3IDEuMjg3NSA2Ljc4NzVDMS40NzkxNyA2LjU5NTgzIDEuNzE2NjcgNi41IDIgNi41QzIuMjgzMzMgNi41IDIuNTIwODMgNi41OTU4MyAyLjcxMjUgNi43ODc1QzIuOTA0MTcgNi45NzkxNyAzIDcuMjE2NjcgMyA3LjVWMTlIMTguNUMxOC43ODMzIDE5IDE5LjAyMDggMTkuMDk1OCAxOS4yMTI1IDE5LjI4NzVDMTkuNDA0MiAxOS40NzkyIDE5LjUgMTkuNzE2NyAxOS41IDIwQzE5LjUgMjAuMjgzMyAxOS40MDQyIDIwLjUyMDggMTkuMjEyNSAyMC43MTI1QzE5LjAyMDggMjAuOTA0MiAxOC43ODMzIDIxIDE4LjUgMjFIM1pcIiBmaWxsPVwiIzAyQkY2RlwiLz5cbjwvZz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48ZyBpZD1cInRvZGF5XCI+XG48bWFzayBpZD1cIm1hc2swXzRfMTk2NlwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCBpZD1cIkJvdW5kaW5nIGJveFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNF8xOTY2KVwiPlxuPHBhdGggaWQ9XCJ0b2RheV8yXCIgZD1cIk05IDE2LjVDOC4zIDE2LjUgNy43MDgzMyAxNi4yNTgzIDcuMjI1IDE1Ljc3NUM2Ljc0MTY3IDE1LjI5MTcgNi41IDE0LjcgNi41IDE0QzYuNSAxMy4zIDYuNzQxNjcgMTIuNzA4MyA3LjIyNSAxMi4yMjVDNy43MDgzMyAxMS43NDE3IDguMyAxMS41IDkgMTEuNUM5LjcgMTEuNSAxMC4yOTE3IDExLjc0MTcgMTAuNzc1IDEyLjIyNUMxMS4yNTgzIDEyLjcwODMgMTEuNSAxMy4zIDExLjUgMTRDMTEuNSAxNC43IDExLjI1ODMgMTUuMjkxNyAxMC43NzUgMTUuNzc1QzEwLjI5MTcgMTYuMjU4MyA5LjcgMTYuNSA5IDE2LjVaTTUgMjJDNC40NSAyMiAzLjk3OTE3IDIxLjgwNDIgMy41ODc1IDIxLjQxMjVDMy4xOTU4MyAyMS4wMjA4IDMgMjAuNTUgMyAyMFY2QzMgNS40NSAzLjE5NTgzIDQuOTc5MTcgMy41ODc1IDQuNTg3NUMzLjk3OTE3IDQuMTk1ODMgNC40NSA0IDUgNEg2VjNDNiAyLjcxNjY3IDYuMDk1ODMgMi40NzkxNyA2LjI4NzUgMi4yODc1QzYuNDc5MTcgMi4wOTU4MyA2LjcxNjY3IDIgNyAyQzcuMjgzMzMgMiA3LjUyMDgzIDIuMDk1ODMgNy43MTI1IDIuMjg3NUM3LjkwNDE3IDIuNDc5MTcgOCAyLjcxNjY3IDggM1Y0SDE2VjNDMTYgMi43MTY2NyAxNi4wOTU4IDIuNDc5MTcgMTYuMjg3NSAyLjI4NzVDMTYuNDc5MiAyLjA5NTgzIDE2LjcxNjcgMiAxNyAyQzE3LjI4MzMgMiAxNy41MjA4IDIuMDk1ODMgMTcuNzEyNSAyLjI4NzVDMTcuOTA0MiAyLjQ3OTE3IDE4IDIuNzE2NjcgMTggM1Y0SDE5QzE5LjU1IDQgMjAuMDIwOCA0LjE5NTgzIDIwLjQxMjUgNC41ODc1QzIwLjgwNDIgNC45NzkxNyAyMSA1LjQ1IDIxIDZWMjBDMjEgMjAuNTUgMjAuODA0MiAyMS4wMjA4IDIwLjQxMjUgMjEuNDEyNUMyMC4wMjA4IDIxLjgwNDIgMTkuNTUgMjIgMTkgMjJINVpNNSAyMEgxOVYxMEg1VjIwWk01IDhIMTlWNkg1VjhaXCIgZmlsbD1cIiMwMkJGNkZcIi8+XG48L2c+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwMzdcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwMzcpXCI+XG48cGF0aCBkPVwiTTIwLjUwNTkgMTUuODUxOEwxNy43Njk0IDEzLjExNTNWMTUuMDExNUwxNi4yNjk1IDEzLjUxMTVWNi4zMDc2OEMxNi4yNjk1IDYuMjE3OTMgMTYuMjQwNiA2LjE0NDIgMTYuMTgyOSA2LjA4NjVDMTYuMTI1MiA2LjAyODggMTYuMDUxNSA1Ljk5OTk1IDE1Ljk2MTcgNS45OTk5NUg4Ljc1Nzg4TDcuMjU3OTMgNC40OTk5OEgxNS45NjE3QzE2LjQ2NjkgNC40OTk5OCAxNi44OTQ0IDQuNjc0OTggMTcuMjQ0NCA1LjAyNDk4QzE3LjU5NDQgNS4zNzQ5OCAxNy43Njk0IDUuODAyNTQgMTcuNzY5NCA2LjMwNzY4VjEwLjg4NDZMMjAuNTA1OSA4LjE0ODA4QzIwLjY1OTggNy45OTQyNCAyMC44Mjg3IDcuOTU3MzggMjEuMDEyNyA4LjAzNzVDMjEuMTk2NiA4LjExNzYzIDIxLjI4ODYgOC4yNjQ3NSAyMS4yODg2IDguNDc4ODVWMTUuNTIxMUMyMS4yODg2IDE1LjczNTIgMjEuMTk2NiAxNS44ODIzIDIxLjAxMjcgMTUuOTYyNEMyMC44Mjg3IDE2LjA0MjUgMjAuNjU5OCAxNi4wMDU3IDIwLjUwNTkgMTUuODUxOFpNMTkuNDQ2MyAyMS42MzA3TDIuMDM2OCA0LjIyMTFDMS44OTgzMyA0LjA4MjY1IDEuODI5MSAzLjkxNTM1IDEuODI5MSAzLjcxOTJDMS44MjkxIDMuNTIzMDUgMS45MDY2NyAzLjM0NzQyIDIuMDYxOCAzLjE5MjNDMi4yMDY2NyAzLjA0NzQyIDIuMzgyMyAyLjk3NDk4IDIuNTg4NyAyLjk3NDk4QzIuNzk1MSAyLjk3NDk4IDIuOTcwNzMgMy4wNDc0MiAzLjExNTYgMy4xOTIzTDIwLjUyNTIgMjAuNjAxOEMyMC42NjM2IDIwLjc0MDMgMjAuNzMyOCAyMC45MDc2IDIwLjczMjggMjEuMTAzN0MyMC43MzI4IDIxLjI5OTkgMjAuNjU1MyAyMS40NzU1IDIwLjUwMDIgMjEuNjMwN0MyMC4zNTUzIDIxLjc3NTUgMjAuMTc4IDIxLjg0NzkgMTkuOTY4NCAyMS44NDc5QzE5Ljc1ODggMjEuODQ3OSAxOS41ODQ4IDIxLjc3NTUgMTkuNDQ2MyAyMS42MzA3Wk00LjQ0MjU1IDQuNTE5MjNMNS45MjMyOCA1Ljk5OTk1SDQuNTc3MThDNC40ODc0MyA1Ljk5OTk1IDQuNDEzNyA2LjAyODggNC4zNTYgNi4wODY1QzQuMjk4MyA2LjE0NDIgNC4yNjk0NSA2LjIxNzkzIDQuMjY5NDUgNi4zMDc2OFYxNy42OTIyQzQuMjY5NDUgMTcuNzgyIDQuMjk4MyAxNy44NTU3IDQuMzU2IDE3LjkxMzRDNC40MTM3IDE3Ljk3MTEgNC40ODc0MyAxOCA0LjU3NzE4IDE4SDE1Ljk2MTdDMTYuMDUxNSAxOCAxNi4xMjUyIDE3Ljk3MTEgMTYuMTgyOSAxNy45MTM0QzE2LjI0MDYgMTcuODU1NyAxNi4yNjk1IDE3Ljc4MiAxNi4yNjk1IDE3LjY5MjJWMTYuMzQ2MUwxNy43NTAyIDE3LjgyNjhDMTcuNzE4MSAxOC4yOTM1IDE3LjUzMTkgMTguNjg5IDE3LjE5MTUgMTkuMDEzNEMxNi44NTExIDE5LjMzNzcgMTYuNDQxMiAxOS40OTk5IDE1Ljk2MTcgMTkuNDk5OUg0LjU3NzE4QzQuMDcyMDQgMTkuNDk5OSAzLjY0NDQ4IDE5LjMyNDkgMy4yOTQ0OCAxOC45NzQ5QzIuOTQ0NDggMTguNjI0OSAyLjc2OTQ4IDE4LjE5NzQgMi43Njk0OCAxNy42OTIyVjYuMzA3NjhDMi43Njk0OCA1LjgyODE5IDIuOTMxNjYgNS40MTgyNiAzLjI1NjAzIDUuMDc3ODhDMy41ODAzOCA0LjczNzQ5IDMuOTc1ODkgNC41NTEyOCA0LjQ0MjU1IDQuNTE5MjNaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNDNcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNDMpXCI+XG48cGF0aCBkPVwiTTE5LjQ3MTIgMjEuNjMwN0wyLjA2MTcgNC4yMjExQzEuOTIzMjQgNC4wODI2NSAxLjg1NCAzLjkxNTM1IDEuODU0IDMuNzE5MkMxLjg1NCAzLjUyMzA1IDEuOTMxNTcgMy4zNDc0MiAyLjA4NjcgMy4xOTIzQzIuMjMxNTcgMy4wNDc0MiAyLjQwNzIgMi45NzQ5OCAyLjYxMzYgMi45NzQ5OEMyLjgyIDIuOTc0OTggMi45OTU2NCAzLjA0NzQyIDMuMTQwNSAzLjE5MjNMMjAuNTUwMSAyMC42MDE4QzIwLjY4ODUgMjAuNzQwMyAyMC43NTc3IDIwLjkwNzYgMjAuNzU3NyAyMS4xMDM3QzIwLjc1NzcgMjEuMjk5OSAyMC42ODAyIDIxLjQ3NTUgMjAuNTI1MSAyMS42MzA3QzIwLjM4MDIgMjEuNzc1NSAyMC4yMDQ1IDIxLjg0NjQgMTkuOTk4MSAyMS44NDMyQzE5Ljc5MTcgMjEuODM5OSAxOS42MTYxIDIxLjc2OTEgMTkuNDcxMiAyMS42MzA3Wk0xNy43OTQzIDE1LjAxMTVMNy4yODI4MyA0LjQ5OTk4SDE1Ljk4NjZDMTYuNDkxOCA0LjQ5OTk4IDE2LjkxOTMgNC42NzQ5OCAxNy4yNjkzIDUuMDI0OThDMTcuNjE5MyA1LjM3NDk4IDE3Ljc5NDMgNS44MDI1NCAxNy43OTQzIDYuMzA3NjhWMTAuODg0NkwyMC41MzA4IDguMTQ4MDhDMjAuNjc0NCA4LjAwNDQ5IDIwLjg0MDggNy45NzAyIDIxLjAyOTkgOC4wNDUyQzIxLjIxOSA4LjEyMDIgMjEuMzEzNSA4LjI2NDc1IDIxLjMxMzUgOC40Nzg4NVYxNS41MjExQzIxLjMxMzUgMTUuNzM1MiAyMS4yMTkgMTUuODc5NyAyMS4wMjk5IDE1Ljk1NDdDMjAuODQwOCAxNi4wMjk3IDIwLjY3NDQgMTUuOTk1NCAyMC41MzA4IDE1Ljg1MThMMTcuNzk0MyAxMy4xMTUzVjE1LjAxMTVaTTQuNDY3NDUgNC41MTkyM0wxNy43NzUxIDE3LjgyNjhDMTcuNzU4NCAxOC4yODMzIDE3LjU2NjEgMTguNjc2MiAxNy4xOTgyIDE5LjAwNTdDMTYuODMwMiAxOS4zMzUyIDE2LjQxOCAxOS40OTk5IDE1Ljk2MTYgMTkuNDk5OUg0LjU3NzA4QzQuMDcxOTUgMTkuNDk5OSAzLjY0NDM4IDE5LjMyNDkgMy4yOTQzOCAxOC45NzQ5QzIuOTQ0MzggMTguNjI0OSAyLjc2OTM4IDE4LjE5NzQgMi43NjkzOCAxNy42OTIyVjYuMzA3NjhDMi43NjkzOCA1Ljg1MTI2IDIuOTM2NjkgNS40MzkwOCAzLjI3MTMgNS4wNzExNUMzLjYwNTkyIDQuNzAzMiA0LjAwNDY0IDQuNTE5MjMgNC40Njc0NSA0LjUxOTIzWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDM0XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDM0KVwiPlxuPHBhdGggZD1cIk00LjU0NzkxIDE5LjVDNC4wNDI3OCAxOS41IDMuNjE1MjEgMTkuMzI1IDMuMjY1MjEgMTguOTc1QzIuOTE1MjMgMTguNjI1IDIuNzQwMjMgMTguMTk3NCAyLjc0MDIzIDE3LjY5MjJWNi4zMDc3QzIuNzQwMjMgNS44MDI1NyAyLjkxNTIzIDUuMzc1IDMuMjY1MjEgNS4wMjVDMy42MTUyMSA0LjY3NSA0LjA0Mjc4IDQuNSA0LjU0NzkxIDQuNUgxNS45MzI1QzE2LjQzNzYgNC41IDE2Ljg2NTIgNC42NzUgMTcuMjE1MiA1LjAyNUMxNy41NjUyIDUuMzc1IDE3Ljc0MDIgNS44MDI1NyAxNy43NDAyIDYuMzA3N1YxMC44ODQ2TDIwLjQ3NjcgOC4xNDgxQzIwLjYzMDUgNy45OTQyNyAyMC43OTk0IDcuOTU3NDEgMjAuOTgzNCA4LjAzNzUzQzIxLjE2NzQgOC4xMTc2NiAyMS4yNTkzIDguMjY0NzcgMjEuMjU5MyA4LjQ3ODg3VjE1LjUyMTFDMjEuMjU5MyAxNS43MzUyIDIxLjE2NzQgMTUuODgyMyAyMC45ODM0IDE1Ljk2MjRDMjAuNzk5NCAxNi4wNDI1IDIwLjYzMDUgMTYuMDA1NyAyMC40NzY3IDE1Ljg1MTlMMTcuNzQwMiAxMy4xMTUzVjE3LjY5MjJDMTcuNzQwMiAxOC4xOTc0IDE3LjU2NTIgMTguNjI1IDE3LjIxNTIgMTguOTc1QzE2Ljg2NTIgMTkuMzI1IDE2LjQzNzYgMTkuNSAxNS45MzI1IDE5LjVINC41NDc5MVpNNC41NDc5MSAxOEgxNS45MzI1QzE2LjAyMjIgMTggMTYuMDk2IDE3Ljk3MTEgMTYuMTUzNiAxNy45MTM0QzE2LjIxMTMgMTcuODU1NyAxNi4yNDAyIDE3Ljc4MiAxNi4yNDAyIDE3LjY5MjJWNi4zMDc3QzE2LjI0MDIgNi4yMTc5NSAxNi4yMTEzIDYuMTQ0MjMgMTYuMTUzNiA2LjA4NjUyQzE2LjA5NiA2LjAyODgyIDE2LjAyMjIgNS45OTk5NyAxNS45MzI1IDUuOTk5OTdINC41NDc5MUM0LjQ1ODE2IDUuOTk5OTcgNC4zODQ0MyA2LjAyODgyIDQuMzI2NzMgNi4wODY1MkM0LjI2OTAzIDYuMTQ0MjMgNC4yNDAxOCA2LjIxNzk1IDQuMjQwMTggNi4zMDc3VjE3LjY5MjJDNC4yNDAxOCAxNy43ODIgNC4yNjkwMyAxNy44NTU3IDQuMzI2NzMgMTcuOTEzNEM0LjM4NDQzIDE3Ljk3MTEgNC40NTgxNiAxOCA0LjU0NzkxIDE4WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDQwXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDQwKVwiPlxuPHBhdGggZD1cIk00LjU0NzkxIDE5LjVDNC4wNDI3OCAxOS41IDMuNjE1MjEgMTkuMzI1IDMuMjY1MjEgMTguOTc1QzIuOTE1MjMgMTguNjI1IDIuNzQwMjMgMTguMTk3NCAyLjc0MDIzIDE3LjY5MjJWNi4zMDc3QzIuNzQwMjMgNS44MDI1NyAyLjkxNTIzIDUuMzc1IDMuMjY1MjEgNS4wMjVDMy42MTUyMSA0LjY3NSA0LjA0Mjc4IDQuNSA0LjU0NzkxIDQuNUgxNS45MzI1QzE2LjQzNzYgNC41IDE2Ljg2NTIgNC42NzUgMTcuMjE1MiA1LjAyNUMxNy41NjUyIDUuMzc1IDE3Ljc0MDIgNS44MDI1NyAxNy43NDAyIDYuMzA3N1YxMC44ODQ2TDIwLjQ3NjcgOC4xNDgxQzIwLjYyMDIgOC4wMDQ1MiAyMC43ODY2IDcuOTcwMjIgMjAuOTc1NyA4LjA0NTIyQzIxLjE2NDggOC4xMjAyMiAyMS4yNTkzIDguMjY0NzcgMjEuMjU5MyA4LjQ3ODg3VjE1LjUyMTFDMjEuMjU5MyAxNS43MzUyIDIxLjE2NDggMTUuODc5NyAyMC45NzU3IDE1Ljk1NDdDMjAuNzg2NiAxNi4wMjk3IDIwLjYyMDIgMTUuOTk1NCAyMC40NzY3IDE1Ljg1MTlMMTcuNzQwMiAxMy4xMTUzVjE3LjY5MjJDMTcuNzQwMiAxOC4xOTc0IDE3LjU2NTIgMTguNjI1IDE3LjIxNTIgMTguOTc1QzE2Ljg2NTIgMTkuMzI1IDE2LjQzNzYgMTkuNSAxNS45MzI1IDE5LjVINC41NDc5MVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA1NVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA1NSlcIj5cbjxwYXRoIGQ9XCJNMTguOTQ2MiAyMS42MTE1TDE2LjQ1NzcgMTkuMTIzMUMxNi4yNSAxOS4yNDM2IDE2LjA0MzkgMTkuMzU4MyAxNS44Mzk0IDE5LjQ2NzNDMTUuNjM1IDE5LjU3NjIgMTUuNDIwNiAxOS42Nzc1IDE1LjE5NjIgMTkuNzcxMUMxNC45NDYyIDE5Ljg3MjQgMTQuNzEzMiAxOS44NDE5IDE0LjQ5NzIgMTkuNjc5OEMxNC4yODEyIDE5LjUxNzYgMTQuMTczMiAxOS4yOTI5IDE0LjE3MzIgMTkuMDA1OEMxNC4xNzMyIDE4Ljg2NzMgMTQuMjE0NSAxOC43NDY1IDE0LjI5NzIgMTguNjQzM0MxNC4zNzk5IDE4LjU0MDEgMTQuNDgyMSAxOC40NjE1IDE0LjYwMzkgMTguNDA3N0MxNC43MzcyIDE4LjM1NzcgMTQuODY4IDE4LjMwMTkgMTQuOTk2MiAxOC4yNDA0QzE1LjEyNDQgMTguMTc4OSAxNS4yNTAxIDE4LjExMTUgMTUuMzczMSAxOC4wMzg1TDExLjc4ODUgMTQuNDUzOFYxNi42MDM4QzExLjc4ODUgMTcuMDA4OSAxMS42MDM2IDE3LjI4OTMgMTEuMjMzNyAxNy40NDUxQzEwLjg2MzggMTcuNjAwOSAxMC41MzY2IDE3LjUzNjUgMTAuMjUyIDE3LjI1MTlMNy41MDAwOCAxNC41SDQuNjkyNEM0LjQzNDcyIDE0LjUgNC4yMTk2NiAxNC40MTM4IDQuMDQ3MjMgMTQuMjQxM0MzLjg3NDc5IDE0LjA2ODkgMy43ODg1OCAxMy44NTM4IDMuNzg4NTggMTMuNTk2MVYxMC40MDM5QzMuNzg4NTggMTAuMTQ2MiAzLjg3NDc5IDkuOTMxMTQgNC4wNDcyMyA5Ljc1ODcxQzQuMjE5NjYgOS41ODYyNiA0LjQzNDcyIDkuNTAwMDMgNC42OTI0IDkuNTAwMDNINi44MzQ3TDIuNTIzMTUgNS4xODg0OEMyLjM4NDcgNS4wNTAwMyAyLjMxMzg3IDQuODc2IDIuMzEwNjUgNC42NjYzOEMyLjMwNzQ1IDQuNDU2NzggMi4zNzgyOCA0LjI3OTU0IDIuNTIzMTUgNC4xMzQ2NkMyLjY2ODAyIDMuOTg5NzkgMi44NDM2NiAzLjkxNzM2IDMuMDUwMDggMy45MTczNkMzLjI1NjQ4IDMuOTE3MzYgMy40MzIxMSAzLjk4OTc5IDMuNTc2OTggNC4xMzQ2NkwyMCAyMC41NTc3QzIwLjEzODUgMjAuNjk2MiAyMC4yMDkzIDIwLjg3MDIgMjAuMjEyNSAyMS4wNzk4QzIwLjIxNTcgMjEuMjg5NCAyMC4xNDQ5IDIxLjQ2NjcgMjAgMjEuNjExNUMxOS44NTUxIDIxLjc1NjQgMTkuNjc5NSAyMS44Mjg4IDE5LjQ3MzEgMjEuODI4OEMxOS4yNjY3IDIxLjgyODggMTkuMDkxMSAyMS43NTY0IDE4Ljk0NjIgMjEuNjExNVpNMTUuMTk2MiA0LjE3ODg4QzE2Ljc4NzIgNC44MzY1OCAxOC4wNjU3IDUuODY1NzUgMTkuMDMxOCA3LjI2NjM4QzE5Ljk5NzggOC42NjcwMiAyMC40ODA4IDEwLjIzNjYgMjAuNDgwOCAxMS45NzVDMjAuNDgwOCAxMi44NTE5IDIwLjM1MDMgMTMuNjkzOSAyMC4wODk0IDE0LjUwMUMxOS44Mjg1IDE1LjMwOCAxOS40NjAzIDE2LjA1MTkgMTguOTg0NiAxNi43MzI3TDE3LjkwOTYgMTUuNjU3N0MxOC4yNTcxIDE1LjExNTQgMTguNTIyNSAxNC41MzM3IDE4LjcwNTggMTMuOTEyNUMxOC44ODkyIDEzLjI5MTQgMTguOTgwOCAxMi42NDU1IDE4Ljk4MDggMTEuOTc1QzE4Ljk4MDggMTAuNTM0IDE4LjU4MTUgOS4yMzQ5NiAxNy43ODI4IDguMDc3OTFDMTYuOTg0IDYuOTIwODYgMTUuOTI0NCA2LjA3NTY3IDE0LjYwMzkgNS41NDIzM0MxNC40NjU0IDUuNDg4NDggMTQuMzU5IDUuNDA1NzkgMTQuMjg0NyA1LjI5NDI2QzE0LjIxMDMgNS4xODI3MiAxNC4xNzMyIDUuMDU3NzIgMTQuMTczMiA0LjkxOTI2QzE0LjE3MzIgNC42NDIzNCAxNC4yODEyIDQuNDI0NCAxNC40OTcyIDQuMjY1NDNDMTQuNzEzMiA0LjEwNjQ3IDE0Ljk0NjIgNC4wNzc2MiAxNS4xOTYyIDQuMTc4ODhaTTE1LjkyMzEgMTMuNjcxMkwxNC4xNzMyIDExLjkyMTJWOC4yOTYxOEMxNC44NDc1IDguNjYyODUgMTUuMzY4NiA5LjE3OTE5IDE1LjczNjYgOS44NDUyMUMxNi4xMDQ1IDEwLjUxMTIgMTYuMjg4NSAxMS4yMjk1IDE2LjI4ODUgMTJDMTYuMjg4NSAxMi4yOTQ5IDE2LjI1OCAxMi41ODI0IDE2LjE5NzIgMTIuODYyNUMxNi4xMzYzIDEzLjE0MjYgMTYuMDQ0OSAxMy40MTIyIDE1LjkyMzEgMTMuNjcxMlpNMTEuNzg4NSA5LjUzNjU4TDkuNjMwODMgNy4zNjkyOEwxMC4yNTIgNi43NDgxNkMxMC41MzY2IDYuNDYzNTQgMTAuODYzOCA2LjM5OTEyIDExLjIzMzcgNi41NTQ4OEMxMS42MDM2IDYuNzEwNjcgMTEuNzg4NSA2Ljk5MTEyIDExLjc4ODUgNy4zOTYyM1Y5LjUzNjU4Wk0xMC4yODg1IDE1LjE1VjEyLjk1MzlMOC4zMzQ2OCAxMUg1LjI4ODUzVjEzSDguMTM4NTNMMTAuMjg4NSAxNS4xNVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA1MlwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA1MilcIj5cbjxwYXRoIGQ9XCJNMTguOTQ2MiAyMS42MTE1TDE2LjQ1NzcgMTkuMTIzMUMxNi4yNSAxOS4yNDM2IDE2LjA0MzkgMTkuMzU4MyAxNS44Mzk0IDE5LjQ2NzNDMTUuNjM1IDE5LjU3NjIgMTUuNDIwNiAxOS42Nzc1IDE1LjE5NjIgMTkuNzcxMUMxNC45NDYyIDE5Ljg3MjQgMTQuNzEzMiAxOS44NDE5IDE0LjQ5NzIgMTkuNjc5OEMxNC4yODEyIDE5LjUxNzYgMTQuMTczMiAxOS4yOTI5IDE0LjE3MzIgMTkuMDA1OEMxNC4xNzMyIDE4Ljg2NzMgMTQuMjE0NSAxOC43NDY1IDE0LjI5NzIgMTguNjQzM0MxNC4zNzk5IDE4LjU0MDEgMTQuNDgyMSAxOC40NjE1IDE0LjYwMzkgMTguNDA3N0MxNC43MzcyIDE4LjM1NzcgMTQuODY4IDE4LjMwMTkgMTQuOTk2MiAxOC4yNDA0QzE1LjEyNDQgMTguMTc4OSAxNS4yNTAxIDE4LjExMTUgMTUuMzczMSAxOC4wMzg1TDExLjc4ODUgMTQuNDUzOFYxNi42MDM4QzExLjc4ODUgMTcuMDA4OSAxMS42MDM2IDE3LjI4OTMgMTEuMjMzNyAxNy40NDUxQzEwLjg2MzggMTcuNjAwOSAxMC41MzY2IDE3LjUzNjUgMTAuMjUyIDE3LjI1MTlMNy41MDAwOCAxNC41SDQuNjkyNEM0LjQzNDcyIDE0LjUgNC4yMTk2NiAxNC40MTM4IDQuMDQ3MjMgMTQuMjQxM0MzLjg3NDc5IDE0LjA2ODkgMy43ODg1OCAxMy44NTM4IDMuNzg4NTggMTMuNTk2MVYxMC40MDM5QzMuNzg4NTggMTAuMTQ2MiAzLjg3NDc5IDkuOTMxMTQgNC4wNDcyMyA5Ljc1ODcxQzQuMjE5NjYgOS41ODYyNiA0LjQzNDcyIDkuNTAwMDMgNC42OTI0IDkuNTAwMDNINi44MzQ3TDIuNTIzMTUgNS4xODg0OEMyLjM4NDcgNS4wNTAwMyAyLjMxMzg3IDQuODc2IDIuMzEwNjUgNC42NjYzOEMyLjMwNzQ1IDQuNDU2NzggMi4zNzgyOCA0LjI3OTU0IDIuNTIzMTUgNC4xMzQ2NkMyLjY2ODAyIDMuOTg5NzkgMi44NDM2NiAzLjkxNzM2IDMuMDUwMDggMy45MTczNkMzLjI1NjQ4IDMuOTE3MzYgMy40MzIxMSAzLjk4OTc5IDMuNTc2OTggNC4xMzQ2NkwyMCAyMC41NTc3QzIwLjEzODUgMjAuNjk2MiAyMC4yMDkzIDIwLjg3MDIgMjAuMjEyNSAyMS4wNzk4QzIwLjIxNTcgMjEuMjg5NCAyMC4xNDQ5IDIxLjQ2NjcgMjAgMjEuNjExNUMxOS44NTUxIDIxLjc1NjQgMTkuNjc5NSAyMS44Mjg4IDE5LjQ3MzEgMjEuODI4OEMxOS4yNjY3IDIxLjgyODggMTkuMDkxMSAyMS43NTY0IDE4Ljk0NjIgMjEuNjExNVpNMTUuMTk2MiA0LjE3ODg4QzE2Ljc4NzIgNC44MzY1OCAxOC4wNjU3IDUuODY1NzUgMTkuMDMxOCA3LjI2NjM4QzE5Ljk5NzggOC42NjcwMiAyMC40ODA4IDEwLjIzNjYgMjAuNDgwOCAxMS45NzVDMjAuNDgwOCAxMi44NTE5IDIwLjM1MDMgMTMuNjkzOSAyMC4wODk0IDE0LjUwMUMxOS44Mjg1IDE1LjMwOCAxOS40NjAzIDE2LjA1MTkgMTguOTg0NiAxNi43MzI3TDE3LjkwOTYgMTUuNjU3N0MxOC4yNTcxIDE1LjExNTQgMTguNTIyNSAxNC41MzM3IDE4LjcwNTggMTMuOTEyNUMxOC44ODkyIDEzLjI5MTQgMTguOTgwOCAxMi42NDU1IDE4Ljk4MDggMTEuOTc1QzE4Ljk4MDggMTAuNTM0IDE4LjU4MTUgOS4yMzQ5NiAxNy43ODI4IDguMDc3OTFDMTYuOTg0IDYuOTIwODYgMTUuOTI0NCA2LjA3NTY3IDE0LjYwMzkgNS41NDIzM0MxNC40NjU0IDUuNDg4NDggMTQuMzU5IDUuNDA1NzkgMTQuMjg0NyA1LjI5NDI2QzE0LjIxMDMgNS4xODI3MiAxNC4xNzMyIDUuMDU3NzIgMTQuMTczMiA0LjkxOTI2QzE0LjE3MzIgNC42NDIzNCAxNC4yODEyIDQuNDI0NCAxNC40OTcyIDQuMjY1NDNDMTQuNzEzMiA0LjEwNjQ3IDE0Ljk0NjIgNC4wNzc2MiAxNS4xOTYyIDQuMTc4ODhaTTE1LjkyMzEgMTMuNjcxMkwxNC4xNzMyIDExLjkyMTJWOC4yOTYxOEMxNC44NDc1IDguNjYyODUgMTUuMzY4NiA5LjE3OTE5IDE1LjczNjYgOS44NDUyMUMxNi4xMDQ1IDEwLjUxMTIgMTYuMjg4NSAxMS4yMjk1IDE2LjI4ODUgMTJDMTYuMjg4NSAxMi4yOTQ5IDE2LjI1OCAxMi41ODI0IDE2LjE5NzIgMTIuODYyNUMxNi4xMzYzIDEzLjE0MjYgMTYuMDQ0OSAxMy40MTIyIDE1LjkyMzEgMTMuNjcxMlpNMTEuNzg4NSA5LjUzNjU4TDkuNjMwODMgNy4zNjkyOEwxMC4yNTIgNi43NDgxNkMxMC41MzY2IDYuNDYzNTQgMTAuODYzOCA2LjM5OTEyIDExLjIzMzcgNi41NTQ4OEMxMS42MDM2IDYuNzEwNjcgMTEuNzg4NSA2Ljk5MTEyIDExLjc4ODUgNy4zOTYyM1Y5LjUzNjU4WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDU4XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDU4KVwiPlxuPHBhdGggZD1cIk0xNS4wNjE0IDE5Ljc3MTFDMTQuODExNCAxOS44NzI0IDE0LjU3ODQgMTkuODQxOCAxNC4zNjI0IDE5LjY3OTNDMTQuMTQ2NCAxOS41MTY4IDE0LjAzODQgMTkuMjkxOCAxNC4wMzg0IDE5LjAwNDNDMTQuMDM4NCAxOC44NjY4IDE0LjA3OTcgMTguNzQ2NCAxNC4xNjI0IDE4LjY0MzJDMTQuMjQ1MSAxOC41NCAxNC4zNDczIDE4LjQ2MTUgMTQuNDY5MSAxOC40MDc3QzE1Ljc4OTYgMTcuODc0MyAxNi44NDkzIDE3LjAyOTEgMTcuNjQ4IDE1Ljg3MjFDMTguNDQ2NyAxNC43MTUgMTguODQ2MSAxMy40MTYgMTguODQ2MSAxMS45NzVDMTguODQ2MSAxMC41MzQgMTguNDQ2NyA5LjIzNDk0IDE3LjY0OCA4LjA3Nzg5QzE2Ljg0OTMgNi45MjA4NCAxNS43ODk2IDYuMDc1NjQgMTQuNDY5MSA1LjU0MjMxQzE0LjMzMDcgNS40ODg0NiAxNC4yMjQzIDUuNDA1MiAxNC4xNDk5IDUuMjkyNTRDMTQuMDc1NiA1LjE3OTg3IDE0LjAzODQgNS4wNTQ2OSAxNC4wMzg0IDQuOTE2OTlDMTQuMDM4NCA0LjY0MTU3IDE0LjE0NjQgNC40MjQzOCAxNC4zNjI0IDQuMjY1NDFDMTQuNTc4NCA0LjEwNjQ0IDE0LjgxMTQgNC4wNzc1OSAxNS4wNjE0IDQuMTc4ODZDMTYuNjQ2IDQuODM2NTYgMTcuOTIyOSA1Ljg2NTAzIDE4Ljg5MjIgNy4yNjQyNkMxOS44NjE0IDguNjYzNDggMjAuMzQ2IDEwLjIzMzcgMjAuMzQ2IDExLjk3NUMyMC4zNDYgMTMuNzE2MyAxOS44NjE0IDE1LjI4NjUgMTguODkyMiAxNi42ODU3QzE3LjkyMjkgMTguMDg0OSAxNi42NDYgMTkuMTEzNCAxNS4wNjE0IDE5Ljc3MTFaTTQuNTU3NjMgMTQuNUM0LjMwMTU1IDE0LjUgNC4wODY4OSAxNC40MTMzIDMuOTEzNjYgMTQuMjQwMUMzLjc0MDQzIDE0LjA2NjkgMy42NTM4MSAxMy44NTIyIDMuNjUzODEgMTMuNTk2MVYxMC40MDM5QzMuNjUzODEgMTAuMTQ3OCAzLjc0MDQzIDkuOTMzMTIgMy45MTM2NiA5Ljc1OTg5QzQuMDg2ODkgOS41ODY2NCA0LjMwMTU1IDkuNTAwMDEgNC41NTc2MyA5LjUwMDAxSDcuMzY1MzFMMTAuMTE3MiA2Ljc0ODE0QzEwLjQwMTggNi40NjM1MiAxMC43MjkxIDYuMzk5NTkgMTEuMDk4OSA2LjU1NjM2QzExLjQ2ODggNi43MTMxNCAxMS42NTM3IDYuOTkzMDkgMTEuNjUzNyA3LjM5NjIxVjE2LjYwMzhDMTEuNjUzNyAxNy4wMDY5IDExLjQ2ODggMTcuMjg2OCAxMS4wOTg5IDE3LjQ0MzZDMTAuNzI5MSAxNy42MDA0IDEwLjQwMTggMTcuNTM2NSAxMC4xMTcyIDE3LjI1MThMNy4zNjUzMSAxNC41SDQuNTU3NjNaTTE0LjAzODQgMTUuNjUzOFY4LjI5NjE2QzE0LjY4NTggOC42NDYxNiAxNS4yMDAyIDkuMTU0MTcgMTUuNTgxNiA5LjgyMDE5QzE1Ljk2MyAxMC40ODYyIDE2LjE1MzcgMTEuMjEyOCAxNi4xNTM3IDEyQzE2LjE1MzcgMTIuNzg3MiAxNS45NjMgMTMuNTA1NCAxNS41ODE2IDE0LjE1NDhDMTUuMjAwMiAxNC44MDQxIDE0LjY4NTggMTUuMzAzOCAxNC4wMzg0IDE1LjY1MzhaTTEwLjE1MzggOC44NDk5OUw4LjAwMzc2IDExSDUuMTUzNzZWMTNIOC4wMDM3NkwxMC4xNTM4IDE1LjE1VjguODQ5OTlaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNDZcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNDYpXCI+XG48cGF0aCBkPVwiTTE1LjA2MTQgMTkuNzcxMUMxNC44MTE0IDE5Ljg3MjQgMTQuNTc4NCAxOS44NDE5IDE0LjM2MjQgMTkuNjc5OEMxNC4xNDY0IDE5LjUxNzYgMTQuMDM4NCAxOS4yOTI5IDE0LjAzODQgMTkuMDA1N0MxNC4wMzg0IDE4Ljg2NzMgMTQuMDc5NyAxOC43NDY0IDE0LjE2MjQgMTguNjQzMkMxNC4yNDUxIDE4LjU0IDE0LjM0NzMgMTguNDYxNSAxNC40NjkxIDE4LjQwNzdDMTUuNzg5NiAxNy44NzQzIDE2Ljg0OTMgMTcuMDI5MSAxNy42NDggMTUuODcyMUMxOC40NDY3IDE0LjcxNSAxOC44NDYxIDEzLjQxNiAxOC44NDYxIDExLjk3NUMxOC44NDYxIDEwLjUzNCAxOC40NDY3IDkuMjM0OTQgMTcuNjQ4IDguMDc3ODlDMTYuODQ5MyA2LjkyMDg0IDE1Ljc4OTYgNi4wNzU2NCAxNC40NjkxIDUuNTQyMzFDMTQuMzMwNyA1LjQ4ODQ2IDE0LjIyNDMgNS40MDU3NyAxNC4xNDk5IDUuMjk0MjRDMTQuMDc1NiA1LjE4MjcgMTQuMDM4NCA1LjA1NzcgMTQuMDM4NCA0LjkxOTI0QzE0LjAzODQgNC42NDIzMiAxNC4xNDY0IDQuNDI0MzggMTQuMzYyNCA0LjI2NTQxQzE0LjU3ODQgNC4xMDY0NCAxNC44MTE0IDQuMDc3NTkgMTUuMDYxNCA0LjE3ODg2QzE2LjY0NiA0LjgzNjU2IDE3LjkyMjkgNS44NjU3MyAxOC44OTIyIDcuMjY2MzZDMTkuODYxNCA4LjY2Njk5IDIwLjM0NiAxMC4yMzY1IDIwLjM0NiAxMS45NzVDMjAuMzQ2IDEzLjcxMzQgMTkuODYxNCAxNS4yODMgMTguODkyMiAxNi42ODM2QzE3LjkyMjkgMTguMDg0MiAxNi42NDYgMTkuMTEzNCAxNS4wNjE0IDE5Ljc3MTFaTTQuNTU3NjMgMTQuNUM0LjI5OTk1IDE0LjUgNC4wODQ4OSAxNC40MTM3IDMuOTEyNDYgMTQuMjQxM0MzLjc0MDAzIDE0LjA2ODkgMy42NTM4MSAxMy44NTM4IDMuNjUzODEgMTMuNTk2MVYxMC40MDM5QzMuNjUzODEgMTAuMTQ2MiAzLjc0MDAzIDkuOTMxMTIgMy45MTI0NiA5Ljc1ODY5QzQuMDg0ODkgOS41ODYyNCA0LjI5OTk1IDkuNTAwMDEgNC41NTc2MyA5LjUwMDAxSDcuMzY1MzFMMTAuMTE3MiA2Ljc0ODE0QzEwLjQwMTggNi40NjM1MiAxMC43MjkxIDYuMzk5MDkgMTEuMDk4OSA2LjU1NDg2QzExLjQ2ODggNi43MTA2NCAxMS42NTM3IDYuOTkxMDkgMTEuNjUzNyA3LjM5NjIxVjE2LjYwMzhDMTEuNjUzNyAxNy4wMDg5IDExLjQ2ODggMTcuMjg5MyAxMS4wOTg5IDE3LjQ0NTFDMTAuNzI5MSAxNy42MDA5IDEwLjQwMTggMTcuNTM2NSAxMC4xMTcyIDE3LjI1MThMNy4zNjUzMSAxNC41SDQuNTU3NjNaTTE0LjAzODQgMTUuNjUzOFY4LjI5NjE2QzE0LjY4NTggOC42NDYxNiAxNS4yMDAyIDkuMTU0MTcgMTUuNTgxNiA5LjgyMDE5QzE1Ljk2MyAxMC40ODYyIDE2LjE1MzcgMTEuMjEyOCAxNi4xNTM3IDEyQzE2LjE1MzcgMTIuNzg3MiAxNS45NjMgMTMuNTA1NCAxNS41ODE2IDE0LjE1NDhDMTUuMjAwMiAxNC44MDQxIDE0LjY4NTggMTUuMzAzOCAxNC4wMzg0IDE1LjY1MzhaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF81NTVfMzM2N1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzU1NV8zMzY3KVwiPlxuPHBhdGggZD1cIk0zLjQyNTU1IDIwLjVDMy4yNTYwNSAyMC41IDMuMTAzODIgMjAuNDU4NiAyLjk2ODg3IDIwLjM3NTdDMi44MzM5MiAyMC4yOTI5IDIuNzI4OTcgMjAuMTgzNiAyLjY1NCAyMC4wNDgxQzIuNTc2MDIgMTkuOTEzNSAyLjUzMzEyIDE5Ljc2NzYgMi41MjUzMiAxOS42MTA2QzIuNTE3NTIgMTkuNDUzNSAyLjU1OTkgMTkuMjk4IDIuNjUyNDUgMTkuMTQ0TDExLjIxMzIgNC4zNTYxNkMxMS4zMDU3IDQuMjAyMTIgMTEuNDIxNiA0LjA4ODI1IDExLjU2MDcgNC4wMTQ1M0MxMS42OTk4IDMuOTQwOCAxMS44NDYyIDMuOTAzOTMgMTIuMDAwMSAzLjkwMzkzQzEyLjE1MzkgMy45MDM5MyAxMi4zMDA0IDMuOTQwOCAxMi40Mzk1IDQuMDE0NTNDMTIuNTc4NiA0LjA4ODI1IDEyLjY5NDQgNC4yMDIxMiAxMi43ODcgNC4zNTYxNkwyMS4zNDc3IDE5LjE0NEMyMS40NDAzIDE5LjI5OCAyMS40ODI3IDE5LjQ1MzUgMjEuNDc0OSAxOS42MTA2QzIxLjQ2NzEgMTkuNzY3NiAyMS40MjQyIDE5LjkxMzUgMjEuMzQ2MiAyMC4wNDgxQzIxLjI3MTIgMjAuMTgzNiAyMS4xNjYzIDIwLjI5MjkgMjEuMDMxMyAyMC4zNzU3QzIwLjg5NjQgMjAuNDU4NiAyMC43NDQxIDIwLjUgMjAuNTc0NiAyMC41SDMuNDI1NTVaTTQuNDUwMSAxOUgxOS41NTAxTDEyLjAwMDEgNi4wMDAwM0w0LjQ1MDEgMTlaTTEyLjAwMDEgMTcuODA3N0MxMi4yMjg5IDE3LjgwNzcgMTIuNDIwOCAxNy43MzAzIDEyLjU3NTYgMTcuNTc1NUMxMi43MzA0IDE3LjQyMDcgMTIuODA3OCAxNy4yMjg5IDEyLjgwNzggMTdDMTIuODA3OCAxNi43NzEyIDEyLjczMDQgMTYuNTc5NCAxMi41NzU2IDE2LjQyNDZDMTIuNDIwOCAxNi4yNjk4IDEyLjIyODkgMTYuMTkyNCAxMi4wMDAxIDE2LjE5MjRDMTEuNzcxMiAxNi4xOTI0IDExLjU3OTQgMTYuMjY5OCAxMS40MjQ2IDE2LjQyNDZDMTEuMjY5OCAxNi41Nzk0IDExLjE5MjQgMTYuNzcxMiAxMS4xOTI0IDE3QzExLjE5MjQgMTcuMjI4OSAxMS4yNjk4IDE3LjQyMDcgMTEuNDI0NiAxNy41NzU1QzExLjU3OTQgMTcuNzMwMyAxMS43NzEyIDE3LjgwNzcgMTIuMDAwMSAxNy44MDc3Wk0xMi4wMDA0IDE1LjE5MjRDMTIuMjEzIDE1LjE5MjQgMTIuMzkxMSAxNS4xMjA1IDEyLjUzNDcgMTQuOTc2N0MxMi42NzgzIDE0LjgzMyAxMi43NTAxIDE0LjY1NDkgMTIuNzUwMSAxNC40NDI0VjEwLjk0MjNDMTIuNzUwMSAxMC43Mjk4IDEyLjY3ODIgMTAuNTUxNyAxMi41MzQ0IDEwLjQwOEMxMi4zOTA2IDEwLjI2NDIgMTIuMjEyNCAxMC4xOTI0IDExLjk5OTggMTAuMTkyNEMxMS43ODcyIDEwLjE5MjQgMTEuNjA5MSAxMC4yNjQyIDExLjQ2NTUgMTAuNDA4QzExLjMyMTkgMTAuNTUxNyAxMS4yNTAxIDEwLjcyOTggMTEuMjUwMSAxMC45NDIzVjE0LjQ0MjRDMTEuMjUwMSAxNC42NTQ5IDExLjMyMiAxNC44MzMgMTEuNDY1OCAxNC45NzY3QzExLjYwOTYgMTUuMTIwNSAxMS43ODc4IDE1LjE5MjQgMTIuMDAwNCAxNS4xOTI0WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgPG1hc2sgaWQ9XCJhXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeD1cIjBcIiB5PVwiMFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIj5cbiAgICA8cGF0aCBmaWxsPVwiI0Q5RDlEOVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxuICA8L21hc2s+XG4gIDxnIG1hc2s9XCJ1cmwoI2EpXCI+XG4gICAgPHBhdGggZmlsbD1cIiMyQzMzMzZcIiBkPVwiTTIuNzI1IDIxYS45NzMuOTczIDAgMCAxLS44NS0uNSAxLjA5OCAxLjA5OCAwIDAgMS0uMTM4LS40ODguODk4Ljg5OCAwIDAgMSAuMTM4LS41MTJsOS4yNS0xNmEuOTguOTggMCAwIDEgLjM4Ny0uMzc1QzExLjY3MSAzLjA0MiAxMS44MzMgMyAxMiAzYy4xNjYgMCAuMzI5LjA0Mi40ODcuMTI1YS45ODMuOTgzIDAgMCAxIC4zODguMzc1bDkuMjUgMTZjLjEuMTY3LjE0Ni4zMzcuMTM3LjUxMmExLjA5OCAxLjA5OCAwIDAgMS0uMTM3LjQ4OC45NzMuOTczIDAgMCAxLS44NS41SDIuNzI1Wk0xMiAxOGMuMjgzIDAgLjUyLS4wOTYuNzEyLS4yODhBLjk2OC45NjggMCAwIDAgMTMgMTdhLjk2OC45NjggMCAwIDAtLjI4OC0uNzEyQS45NjguOTY4IDAgMCAwIDEyIDE2YS45NjguOTY4IDAgMCAwLS43MTMuMjg4QS45NjguOTY4IDAgMCAwIDExIDE3YzAgLjI4My4wOTYuNTIuMjg3LjcxMi4xOTIuMTkyLjQzLjI4OC43MTMuMjg4Wm0wLTNhLjk3Ljk3IDAgMCAwIC43MTItLjI4N0EuOTY4Ljk2OCAwIDAgMCAxMyAxNHYtM2EuOTY4Ljk2OCAwIDAgMC0uMjg4LS43MTNBLjk2OC45NjggMCAwIDAgMTIgMTBhLjk2OC45NjggMCAwIDAtLjcxMy4yODdBLjk2OC45NjggMCAwIDAgMTEgMTF2M2MwIC4yODMuMDk2LjUyLjI4Ny43MTMuMTkyLjE5MS40My4yODcuNzEzLjI4N1pcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsImltcG9ydCAkN1Y0SlokYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkN1Y0SlokZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkN1Y0SlokY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkN1Y0SlokUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBMYWJlbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYjczYTZjNjY4NWU3MjE4NCR2YXIkTkFNRSA9ICdMYWJlbCc7XG5jb25zdCAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNSA9IC8qI19fUFVSRV9fKi8gJDdWNEpaJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDdWNEpaJGNyZWF0ZUVsZW1lbnQoJDdWNEpaJFByaW1pdGl2ZS5sYWJlbCwgJDdWNEpaJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgb25Nb3VzZURvd246IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25Nb3VzZURvd247XG4gICAgICAgICAgICAoX3Byb3BzJG9uTW91c2VEb3duID0gcHJvcHMub25Nb3VzZURvd24pID09PSBudWxsIHx8IF9wcm9wcyRvbk1vdXNlRG93biA9PT0gdm9pZCAwIHx8IF9wcm9wcyRvbk1vdXNlRG93bi5jYWxsKHByb3BzLCBldmVudCk7IC8vIHByZXZlbnQgdGV4dCBzZWxlY3Rpb24gd2hlbiBkb3VibGUgY2xpY2tpbmcgbGFiZWxcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCAmJiBldmVudC5kZXRhaWwgPiAxKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjUsIHtcbiAgICBkaXNwbGF5TmFtZTogJGI3M2E2YzY2ODVlNzIxODQkdmFyJE5BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1O1xuXG5cblxuXG5leHBvcnQgeyRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1IGFzIExhYmVsLCAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsbnVsbCxudWxsLG51bGwsImZ1bmN0aW9uIGdldEFsaWdubWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufVxuXG5mdW5jdGlvbiBnZXRMZW5ndGhGcm9tQXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5cbmZ1bmN0aW9uIGdldFNpZGUocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn1cblxuZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKSA/ICd4JyA6ICd5Jztcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoX3JlZiwgcGxhY2VtZW50LCBydGwpIHtcbiAgbGV0IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgbGVuZ3RoID0gZ2V0TGVuZ3RoRnJvbUF4aXMobWFpbkF4aXMpO1xuICBjb25zdCBjb21tb25BbGlnbiA9IHJlZmVyZW5jZVtsZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2xlbmd0aF0gLyAyO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gbWFpbkF4aXMgPT09ICd4JztcbiAgbGV0IGNvb3JkcztcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBmbG9hdGluZy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZmxvYXRpbmcud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cbiAgc3dpdGNoIChnZXRBbGlnbm1lbnQocGxhY2VtZW50KSkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIGNvb3Jkc1ttYWluQXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1ttYWluQXhpc10gKz0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGNvb3Jkcztcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgcmVmZXJlbmNlIGVsZW1lbnQgd2hlbiBpdCBpcyBnaXZlbiBhIGNlcnRhaW4gcG9zaXRpb25pbmcgc3RyYXRlZ3kuXG4gKlxuICogVGhpcyBleHBvcnQgZG9lcyBub3QgaGF2ZSBhbnkgYHBsYXRmb3JtYCBpbnRlcmZhY2UgbG9naWMuIFlvdSB3aWxsIG5lZWQgdG9cbiAqIHdyaXRlIG9uZSBmb3IgdGhlIHBsYXRmb3JtIHlvdSBhcmUgdXNpbmcgRmxvYXRpbmcgVUkgd2l0aC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gYXN5bmMgKHJlZmVyZW5jZSwgZmxvYXRpbmcsIGNvbmZpZykgPT4ge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50ID0gJ2JvdHRvbScsXG4gICAgc3RyYXRlZ3kgPSAnYWJzb2x1dGUnLFxuICAgIG1pZGRsZXdhcmUgPSBbXSxcbiAgICBwbGF0Zm9ybVxuICB9ID0gY29uZmlnO1xuICBjb25zdCB2YWxpZE1pZGRsZXdhcmUgPSBtaWRkbGV3YXJlLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChmbG9hdGluZykpO1xuICBsZXQgcmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZyxcbiAgICBzdHJhdGVneVxuICB9KTtcbiAgbGV0IHtcbiAgICB4LFxuICAgIHlcbiAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBwbGFjZW1lbnQsIHJ0bCk7XG4gIGxldCBzdGF0ZWZ1bFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgbGV0IG1pZGRsZXdhcmVEYXRhID0ge307XG4gIGxldCByZXNldENvdW50ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWxpZE1pZGRsZXdhcmUubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB7XG4gICAgICBuYW1lLFxuICAgICAgZm5cbiAgICB9ID0gdmFsaWRNaWRkbGV3YXJlW2ldO1xuICAgIGNvbnN0IHtcbiAgICAgIHg6IG5leHRYLFxuICAgICAgeTogbmV4dFksXG4gICAgICBkYXRhLFxuICAgICAgcmVzZXRcbiAgICB9ID0gYXdhaXQgZm4oe1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBpbml0aWFsUGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgIGZsb2F0aW5nXG4gICAgICB9XG4gICAgfSk7XG4gICAgeCA9IG5leHRYICE9IG51bGwgPyBuZXh0WCA6IHg7XG4gICAgeSA9IG5leHRZICE9IG51bGwgPyBuZXh0WSA6IHk7XG4gICAgbWlkZGxld2FyZURhdGEgPSB7XG4gICAgICAuLi5taWRkbGV3YXJlRGF0YSxcbiAgICAgIFtuYW1lXToge1xuICAgICAgICAuLi5taWRkbGV3YXJlRGF0YVtuYW1lXSxcbiAgICAgICAgLi4uZGF0YVxuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHJlc2V0ICYmIHJlc2V0Q291bnQgPD0gNTApIHtcbiAgICAgIHJlc2V0Q291bnQrKztcbiAgICAgIGlmICh0eXBlb2YgcmVzZXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChyZXNldC5wbGFjZW1lbnQpIHtcbiAgICAgICAgICBzdGF0ZWZ1bFBsYWNlbWVudCA9IHJlc2V0LnBsYWNlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzZXQucmVjdHMpIHtcbiAgICAgICAgICByZWN0cyA9IHJlc2V0LnJlY3RzID09PSB0cnVlID8gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIGZsb2F0aW5nLFxuICAgICAgICAgICAgc3RyYXRlZ3lcbiAgICAgICAgICB9KSA6IHJlc2V0LnJlY3RzO1xuICAgICAgICB9XG4gICAgICAgICh7XG4gICAgICAgICAgeCxcbiAgICAgICAgICB5XG4gICAgICAgIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgc3RhdGVmdWxQbGFjZW1lbnQsIHJ0bCkpO1xuICAgICAgfVxuICAgICAgaSA9IC0xO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGV2YWx1YXRlKHZhbHVlLCBwYXJhbSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocGFyYW0pIDogdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFNpZGVPYmplY3RGcm9tUGFkZGluZyhwYWRkaW5nKSB7XG4gIHJldHVybiB0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIDoge1xuICAgIHRvcDogcGFkZGluZyxcbiAgICByaWdodDogcGFkZGluZyxcbiAgICBib3R0b206IHBhZGRpbmcsXG4gICAgbGVmdDogcGFkZGluZ1xuICB9O1xufVxuXG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5yZWN0LFxuICAgIHRvcDogcmVjdC55LFxuICAgIGxlZnQ6IHJlY3QueCxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0XG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFNpZGVPYmplY3RGcm9tUGFkZGluZyhwYWRkaW5nKTtcbiAgY29uc3QgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8gJ3JlZmVyZW5jZScgOiAnZmxvYXRpbmcnO1xuICBjb25zdCBlbGVtZW50ID0gZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICBjb25zdCBjbGlwcGluZ0NsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KGF3YWl0IHBsYXRmb3JtLmdldENsaXBwaW5nUmVjdCh7XG4gICAgZWxlbWVudDogKChfYXdhaXQkcGxhdGZvcm0kaXNFbGUgPSBhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoZWxlbWVudCkpKSAhPSBudWxsID8gX2F3YWl0JHBsYXRmb3JtJGlzRWxlIDogdHJ1ZSkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCAoYXdhaXQgKHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkpLFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9KSk7XG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/IHtcbiAgICAuLi5yZWN0cy5mbG9hdGluZyxcbiAgICB4LFxuICAgIHlcbiAgfSA6IHJlY3RzLnJlZmVyZW5jZTtcbiAgY29uc3Qgb2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IG9mZnNldFNjYWxlID0gKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSkgPyAoYXdhaXQgKHBsYXRmb3JtLmdldFNjYWxlID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRTY2FsZShvZmZzZXRQYXJlbnQpKSkgfHwge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9IDoge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCBlbGVtZW50Q2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QocGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QgPyBhd2FpdCBwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCh7XG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSkgOiByZWN0KTtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IChjbGlwcGluZ0NsaWVudFJlY3QudG9wIC0gZWxlbWVudENsaWVudFJlY3QudG9wICsgcGFkZGluZ09iamVjdC50b3ApIC8gb2Zmc2V0U2NhbGUueSxcbiAgICBib3R0b206IChlbGVtZW50Q2xpZW50UmVjdC5ib3R0b20gLSBjbGlwcGluZ0NsaWVudFJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIC8gb2Zmc2V0U2NhbGUueSxcbiAgICBsZWZ0OiAoY2xpcHBpbmdDbGllbnRSZWN0LmxlZnQgLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgcGFkZGluZ09iamVjdC5sZWZ0KSAvIG9mZnNldFNjYWxlLngsXG4gICAgcmlnaHQ6IChlbGVtZW50Q2xpZW50UmVjdC5yaWdodCAtIGNsaXBwaW5nQ2xpZW50UmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQpIC8gb2Zmc2V0U2NhbGUueFxuICB9O1xufVxuXG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuXG5mdW5jdGlvbiB3aXRoaW4obWluJDEsIHZhbHVlLCBtYXgkMSkge1xuICByZXR1cm4gbWF4KG1pbiQxLCBtaW4odmFsdWUsIG1heCQxKSk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzXG4gICAgfSA9IHN0YXRlO1xuICAgIC8vIFNpbmNlIGBlbGVtZW50YCBpcyByZXF1aXJlZCwgd2UgZG9uJ3QgUGFydGlhbDw+IHRoZSB0eXBlLlxuICAgIGNvbnN0IHtcbiAgICAgIGVsZW1lbnQsXG4gICAgICBwYWRkaW5nID0gMFxuICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSkgfHwge307XG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0U2lkZU9iamVjdEZyb21QYWRkaW5nKHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0TGVuZ3RoRnJvbUF4aXMoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IHdpdGhpbihtaW4kMSwgY2VudGVyLCBtYXgpO1xuXG4gICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBzbWFsbCBlbm91Z2ggdGhhdCB0aGUgYXJyb3cncyBwYWRkaW5nIGNhdXNlcyBpdCB0b1xuICAgIC8vIHRvIHBvaW50IHRvIG5vdGhpbmcgZm9yIGFuIGFsaWduZWQgcGxhY2VtZW50LCBhZGp1c3QgdGhlIG9mZnNldCBvZiB0aGVcbiAgICAvLyBmbG9hdGluZyBlbGVtZW50IGl0c2VsZi4gVGhpcyBzdG9wcyBgc2hpZnQoKWAgZnJvbSB0YWtpbmcgYWN0aW9uLCBidXQgY2FuXG4gICAgLy8gYmUgd29ya2VkIGFyb3VuZCBieSBjYWxsaW5nIGl0IGFnYWluIGFmdGVyIHRoZSBgYXJyb3coKWAgaWYgZGVzaXJlZC5cbiAgICBjb25zdCBzaG91bGRBZGRPZmZzZXQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSAhPSBudWxsICYmIGNlbnRlciAhPSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IG1pbiQxIC0gY2VudGVyIDogbWF4IC0gY2VudGVyIDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gLSBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldFxuICAgICAgfVxuICAgIH07XG4gIH1cbn0pO1xuXG5jb25zdCBzaWRlcyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5jb25zdCBhbGxQbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1zdGFydFwiLCBzaWRlICsgXCItZW5kXCIpLCBbXSk7XG5cbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBzaWRlID0+IG9wcG9zaXRlU2lkZU1hcFtzaWRlXSk7XG59XG5cbmZ1bmN0aW9uIGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCkge1xuICBpZiAocnRsID09PSB2b2lkIDApIHtcbiAgICBydGwgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgbGVuZ3RoID0gZ2V0TGVuZ3RoRnJvbUF4aXMobWFpbkF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYWxpZ25tZW50ID09PSAocnRsID8gJ2VuZCcgOiAnc3RhcnQnKSA/ICdyaWdodCcgOiAnbGVmdCcgOiBhbGlnbm1lbnQgPT09ICdzdGFydCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICBpZiAocmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gPiByZWN0cy5mbG9hdGluZ1tsZW5ndGhdKSB7XG4gICAgbWFpbkFsaWdubWVudFNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBtYWluOiBtYWluQWxpZ25tZW50U2lkZSxcbiAgICBjcm9zczogZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpXG4gIH07XG59XG5cbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBhbGlnbm1lbnQgPT4gb3Bwb3NpdGVBbGlnbm1lbnRNYXBbYWxpZ25tZW50XSk7XG59XG5cbmZ1bmN0aW9uIGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50LCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykge1xuICBjb25zdCBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50ID0gYWxpZ25tZW50ID8gWy4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCksIC4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT09IGFsaWdubWVudCldIDogYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRTaWRlKHBsYWNlbWVudCkgPT09IHBsYWNlbWVudCk7XG4gIHJldHVybiBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50LmZpbHRlcihwbGFjZW1lbnQgPT4ge1xuICAgIGlmIChhbGlnbm1lbnQpIHtcbiAgICAgIHJldHVybiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50IHx8IChhdXRvQWxpZ25tZW50ID8gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSAhPT0gcGxhY2VtZW50IDogZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59XG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXV0b1BsYWNlbWVudCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhdXRvUCwgX21pZGRsZXdhcmVEYXRhJGF1dG9QMiwgX3BsYWNlbWVudHNUaGF0Rml0T25FO1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBhbGlnbm1lbnQsXG4gICAgICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gYWxsUGxhY2VtZW50cyxcbiAgICAgICAgYXV0b0FsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gYWxsUGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW2N1cnJlbnRJbmRleF07XG4gICAgICBpZiAoY3VycmVudFBsYWNlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbixcbiAgICAgICAgY3Jvc3NcbiAgICAgIH0gPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50c1swXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRPdmVyZmxvd3MgPSBbb3ZlcmZsb3dbZ2V0U2lkZShjdXJyZW50UGxhY2VtZW50KV0sIG92ZXJmbG93W21haW5dLCBvdmVyZmxvd1tjcm9zc11dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tjdXJyZW50SW5kZXggKyAxXTtcblxuICAgICAgLy8gVGhlcmUgYXJlIG1vcmUgcGxhY2VtZW50cyB0byBjaGVjay5cbiAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogbmV4dFBsYWNlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZSA9IGFsbE92ZXJmbG93cy5tYXAoZCA9PiB7XG4gICAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChkLnBsYWNlbWVudCk7XG4gICAgICAgIHJldHVybiBbZC5wbGFjZW1lbnQsIGFsaWdubWVudCAmJiBjcm9zc0F4aXMgP1xuICAgICAgICAvLyBDaGVjayBhbG9uZyB0aGUgbWFpbkF4aXMgYW5kIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGQub3ZlcmZsb3dzLnNsaWNlKDAsIDIpLnJlZHVjZSgoYWNjLCB2KSA9PiBhY2MgKyB2LCAwKSA6XG4gICAgICAgIC8vIENoZWNrIG9ubHkgdGhlIG1haW5BeGlzLlxuICAgICAgICBkLm92ZXJmbG93c1swXSwgZC5vdmVyZmxvd3NdO1xuICAgICAgfSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pO1xuICAgICAgY29uc3QgcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlID0gcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlLmZpbHRlcihkID0+IGRbMl0uc2xpY2UoMCxcbiAgICAgIC8vIEFsaWduZWQgcGxhY2VtZW50cyBzaG91bGQgbm90IGNoZWNrIHRoZWlyIG9wcG9zaXRlIGNyb3NzQXhpc1xuICAgICAgLy8gc2lkZS5cbiAgICAgIGdldEFsaWdubWVudChkWzBdKSA/IDIgOiAzKS5ldmVyeSh2ID0+IHYgPD0gMCkpO1xuICAgICAgY29uc3QgcmVzZXRQbGFjZW1lbnQgPSAoKF9wbGFjZW1lbnRzVGhhdEZpdE9uRSA9IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wbGFjZW1lbnRzVGhhdEZpdE9uRVswXSkgfHwgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlWzBdWzBdO1xuICAgICAgaWYgKHJlc2V0UGxhY2VtZW50ICE9PSBwbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRFeHBhbmRlZFBsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGNvbnN0IG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cblxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZmxpcCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgaW5pdGlhbFBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWUsXG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgICBmYWxsYmFja1N0cmF0ZWd5ID0gJ2Jlc3RGaXQnLFxuICAgICAgICBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gJ25vbmUnLFxuICAgICAgICBmbGlwQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzQmFzZVBsYWNlbWVudCA9IGdldFNpZGUoaW5pdGlhbFBsYWNlbWVudCkgPT09IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICBjb25zdCBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcEFsaWdubWVudCA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChpbml0aWFsUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZFBsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCkpO1xuICAgICAgaWYgKCFzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgJiYgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiAhPT0gJ25vbmUnKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgbWFpbixcbiAgICAgICAgICBjcm9zc1xuICAgICAgICB9ID0gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKTtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbbWFpbl0sIG92ZXJmbG93W2Nyb3NzXSk7XG4gICAgICB9XG4gICAgICBvdmVyZmxvd3NEYXRhID0gWy4uLm92ZXJmbG93c0RhdGEsIHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3NcbiAgICAgIH1dO1xuXG4gICAgICAvLyBPbmUgb3IgbW9yZSBzaWRlcyBpcyBvdmVyZmxvd2luZy5cbiAgICAgIGlmICghb3ZlcmZsb3dzLmV2ZXJ5KHNpZGUgPT4gc2lkZSA8PSAwKSkge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGZsaXAyLCBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXI7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9ICgoKF9taWRkbGV3YXJlRGF0YSRmbGlwMiA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcDIuaW5kZXgpIHx8IDApICsgMTtcbiAgICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHNbbmV4dEluZGV4XTtcbiAgICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgICAvLyBUcnkgbmV4dCBwbGFjZW1lbnQgYW5kIHJlLXJ1biB0aGUgbGlmZWN5Y2xlLlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGluZGV4OiBuZXh0SW5kZXgsXG4gICAgICAgICAgICAgIG92ZXJmbG93czogb3ZlcmZsb3dzRGF0YVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogbmV4dFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaXJzdCwgZmluZCB0aGUgY2FuZGlkYXRlcyB0aGF0IGZpdCBvbiB0aGUgbWFpbkF4aXMgc2lkZSBvZiBvdmVyZmxvdyxcbiAgICAgICAgLy8gdGhlbiBmaW5kIHRoZSBwbGFjZW1lbnQgdGhhdCBmaXRzIHRoZSBiZXN0IG9uIHRoZSBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBsZXQgcmVzZXRQbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoZCA9PiBkLm92ZXJmbG93c1swXSA8PSAwKS5zb3J0KChhLCBiKSA9PiBhLm92ZXJmbG93c1sxXSAtIGIub3ZlcmZsb3dzWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlci5wbGFjZW1lbnQ7XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGxiYWNrLlxuICAgICAgICBpZiAoIXJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgc3dpdGNoIChmYWxsYmFja1N0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdiZXN0Rml0JzpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhciBfb3ZlcmZsb3dzRGF0YSRtYXAkc287XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJG1hcCRzbyA9IG92ZXJmbG93c0RhdGEubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJG1hcCRzb1swXTtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2luaXRpYWxQbGFjZW1lbnQnOlxuICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50ICE9PSByZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGhcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gc2lkZXMuc29tZShzaWRlID0+IG92ZXJmbG93W3NpZGVdID49IDApO1xufVxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2hpZGUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RyYXRlZ3kgPSAncmVmZXJlbmNlSGlkZGVuJyxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlICdyZWZlcmVuY2VIaWRkZW4nOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5yZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbk9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2VzY2FwZWQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLmZsb2F0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICBlc2NhcGVkOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ1JlY3QocmVjdHMpIHtcbiAgY29uc3QgbWluWCA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgY29uc3QgbWluWSA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnRvcCkpO1xuICBjb25zdCBtYXhYID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgY29uc3QgbWF4WSA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmJvdHRvbSkpO1xuICByZXR1cm4ge1xuICAgIHg6IG1pblgsXG4gICAgeTogbWluWSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UmVjdHNCeUxpbmUocmVjdHMpIHtcbiAgY29uc3Qgc29ydGVkUmVjdHMgPSByZWN0cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IGEueSAtIGIueSk7XG4gIGNvbnN0IGdyb3VwcyA9IFtdO1xuICBsZXQgcHJldlJlY3QgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZFJlY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcmVjdCA9IHNvcnRlZFJlY3RzW2ldO1xuICAgIGlmICghcHJldlJlY3QgfHwgcmVjdC55IC0gcHJldlJlY3QueSA+IHByZXZSZWN0LmhlaWdodCAvIDIpIHtcbiAgICAgIGdyb3Vwcy5wdXNoKFtyZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0ucHVzaChyZWN0KTtcbiAgICB9XG4gICAgcHJldlJlY3QgPSByZWN0O1xuICB9XG4gIHJldHVybiBncm91cHMubWFwKHJlY3QgPT4gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QocmVjdCkpKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaW5saW5lJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgZWxlbWVudHMsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIC8vIEEgTW91c2VFdmVudCdzIGNsaWVudHtYLFl9IGNvb3JkcyBjYW4gYmUgdXAgdG8gMiBwaXhlbHMgb2ZmIGFcbiAgICAgIC8vIENsaWVudFJlY3QncyBib3VuZHMsIGRlc3BpdGUgdGhlIGV2ZW50IGxpc3RlbmVyIGJlaW5nIHRyaWdnZXJlZC4gQVxuICAgICAgLy8gcGFkZGluZyBvZiAyIHNlZW1zIHRvIGhhbmRsZSB0aGlzIGlzc3VlLlxuICAgICAgY29uc3Qge1xuICAgICAgICBwYWRkaW5nID0gMixcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG5hdGl2ZUNsaWVudFJlY3RzID0gQXJyYXkuZnJvbSgoYXdhaXQgKHBsYXRmb3JtLmdldENsaWVudFJlY3RzID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyhlbGVtZW50cy5yZWZlcmVuY2UpKSkgfHwgW10pO1xuICAgICAgY29uc3QgY2xpZW50UmVjdHMgPSBnZXRSZWN0c0J5TGluZShuYXRpdmVDbGllbnRSZWN0cyk7XG4gICAgICBjb25zdCBmYWxsYmFjayA9IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KG5hdGl2ZUNsaWVudFJlY3RzKSk7XG4gICAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0U2lkZU9iamVjdEZyb21QYWRkaW5nKHBhZGRpbmcpO1xuICAgICAgZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkge1xuICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHJlY3RzIGFuZCB0aGV5IGFyZSBkaXNqb2luZWQuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPT09IDIgJiYgY2xpZW50UmVjdHNbMF0ubGVmdCA+IGNsaWVudFJlY3RzWzFdLnJpZ2h0ICYmIHggIT0gbnVsbCAmJiB5ICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCByZWN0IGluIHdoaWNoIHRoZSBwb2ludCBpcyBmdWxseSBpbnNpZGUuXG4gICAgICAgICAgcmV0dXJuIGNsaWVudFJlY3RzLmZpbmQocmVjdCA9PiB4ID4gcmVjdC5sZWZ0IC0gcGFkZGluZ09iamVjdC5sZWZ0ICYmIHggPCByZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCAmJiB5ID4gcmVjdC50b3AgLSBwYWRkaW5nT2JqZWN0LnRvcCAmJiB5IDwgcmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgfHwgZmFsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGVyZSBhcmUgMiBvciBtb3JlIGNvbm5lY3RlZCByZWN0cy5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgaWYgKGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpID09PSAneCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGNsaWVudFJlY3RzWzBdO1xuICAgICAgICAgICAgY29uc3QgbGFzdFJlY3QgPSBjbGllbnRSZWN0c1tjbGllbnRSZWN0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGlzVG9wID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAndG9wJztcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IGZpcnN0UmVjdC50b3A7XG4gICAgICAgICAgICBjb25zdCBib3R0b20gPSBsYXN0UmVjdC5ib3R0b207XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gaXNUb3AgPyBmaXJzdFJlY3QubGVmdCA6IGxhc3RSZWN0LmxlZnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGlzVG9wID8gZmlyc3RSZWN0LnJpZ2h0IDogbGFzdFJlY3QucmlnaHQ7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0xlZnRTaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAnbGVmdCc7XG4gICAgICAgICAgY29uc3QgbWF4UmlnaHQgPSBtYXgoLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICAgICAgICAgIGNvbnN0IG1pbkxlZnQgPSBtaW4oLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gICAgICAgICAgY29uc3QgbWVhc3VyZVJlY3RzID0gY2xpZW50UmVjdHMuZmlsdGVyKHJlY3QgPT4gaXNMZWZ0U2lkZSA/IHJlY3QubGVmdCA9PT0gbWluTGVmdCA6IHJlY3QucmlnaHQgPT09IG1heFJpZ2h0KTtcbiAgICAgICAgICBjb25zdCB0b3AgPSBtZWFzdXJlUmVjdHNbMF0udG9wO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IG1lYXN1cmVSZWN0c1ttZWFzdXJlUmVjdHMubGVuZ3RoIC0gMV0uYm90dG9tO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBtaW5MZWZ0O1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gbWF4UmlnaHQ7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc2V0UmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICByZWZlcmVuY2U6IHtcbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RcbiAgICAgICAgfSxcbiAgICAgICAgZmxvYXRpbmc6IGVsZW1lbnRzLmZsb2F0aW5nLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSk7XG4gICAgICBpZiAocmVjdHMucmVmZXJlbmNlLnggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnggfHwgcmVjdHMucmVmZXJlbmNlLnkgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnkgfHwgcmVjdHMucmVmZXJlbmNlLndpZHRoICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS53aWR0aCB8fCByZWN0cy5yZWZlcmVuY2UuaGVpZ2h0ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHJlc2V0UmVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gJ3gnO1xuICBjb25zdCBtYWluQXhpc011bHRpID0gWydsZWZ0JywgJ3RvcCddLmluY2x1ZGVzKHNpZGUpID8gLTEgOiAxO1xuICBjb25zdCBjcm9zc0F4aXNNdWx0aSA9IHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxO1xuICBjb25zdCByYXdWYWx1ZSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCB7XG4gICAgbWFpbkF4aXMsXG4gICAgY3Jvc3NBeGlzLFxuICAgIGFsaWdubWVudEF4aXNcbiAgfSA9IHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcicgPyB7XG4gICAgbWFpbkF4aXM6IHJhd1ZhbHVlLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsXG4gIH0gOiB7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGwsXG4gICAgLi4ucmF3VmFsdWVcbiAgfTtcbiAgaWYgKGFsaWdubWVudCAmJiB0eXBlb2YgYWxpZ25tZW50QXhpcyA9PT0gJ251bWJlcicpIHtcbiAgICBjcm9zc0F4aXMgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gYWxpZ25tZW50QXhpcyAqIC0xIDogYWxpZ25tZW50QXhpcztcbiAgfVxuICByZXR1cm4gaXNWZXJ0aWNhbCA/IHtcbiAgICB4OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aSxcbiAgICB5OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGlcbiAgfSA6IHtcbiAgICB4OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGksXG4gICAgeTogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGlcbiAgfTtcbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29mZnNldCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCBkaWZmQ29vcmRzID0gYXdhaXQgY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCArIGRpZmZDb29yZHMueCxcbiAgICAgICAgeTogeSArIGRpZmZDb29yZHMueSxcbiAgICAgICAgZGF0YTogZGlmZkNvb3Jkc1xuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRDcm9zc0F4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NoaWZ0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgbGltaXRlciA9IHtcbiAgICAgICAgICBmbjogX3JlZiA9PiB7XG4gICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldENyb3NzQXhpcyhtYWluQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBtYWluQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IG1haW5BeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgbWFpbkF4aXNDb29yZCA9IHdpdGhpbihtaW4sIG1haW5BeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gY3Jvc3NBeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gY3Jvc3NBeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSB3aXRoaW4obWluLCBjcm9zc0F4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbWl0ZWRDb29yZHMgPSBsaW1pdGVyLmZuKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saW1pdGVkQ29vcmRzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgeDogbGltaXRlZENvb3Jkcy54IC0geCxcbiAgICAgICAgICB5OiBsaW1pdGVkQ29vcmRzLnkgLSB5XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBvZmZzZXQgPSAwLFxuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldENyb3NzQXhpcyhtYWluQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGNvbnN0IHJhd09mZnNldCA9IGV2YWx1YXRlKG9mZnNldCwgc3RhdGUpO1xuICAgICAgY29uc3QgY29tcHV0ZWRPZmZzZXQgPSB0eXBlb2YgcmF3T2Zmc2V0ID09PSAnbnVtYmVyJyA/IHtcbiAgICAgICAgbWFpbkF4aXM6IHJhd09mZnNldCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwXG4gICAgICB9IDoge1xuICAgICAgICBtYWluQXhpczogMCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwLFxuICAgICAgICAuLi5yYXdPZmZzZXRcbiAgICAgIH07XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dIC0gY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGlmIChtYWluQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAobWFpbkF4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJG9mZnNlMjtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgY29uc3QgaXNPcmlnaW5TaWRlID0gWyd0b3AnLCAnbGVmdCddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgKGlzT3JpZ2luU2lkZSA/ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlW2Nyb3NzQXhpc10pIHx8IDAgOiAwKSArIChpc09yaWdpblNpZGUgPyAwIDogY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzKTtcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dICsgKGlzT3JpZ2luU2lkZSA/IDAgOiAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZTIgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UyW2Nyb3NzQXhpc10pIHx8IDApIC0gKGlzT3JpZ2luU2lkZSA/IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyA6IDApO1xuICAgICAgICBpZiAoY3Jvc3NBeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpemUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFwcGx5ID0gKCkgPT4ge30sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc1hBeGlzID0gYXhpcyA9PT0gJ3gnO1xuICAgICAgY29uc3Qge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gcmVjdHMuZmxvYXRpbmc7XG4gICAgICBsZXQgaGVpZ2h0U2lkZTtcbiAgICAgIGxldCB3aWR0aFNpZGU7XG4gICAgICBpZiAoc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IHNpZGU7XG4gICAgICAgIHdpZHRoU2lkZSA9IGFsaWdubWVudCA9PT0gKChhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpID8gJ3N0YXJ0JyA6ICdlbmQnKSA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aWR0aFNpZGUgPSBzaWRlO1xuICAgICAgICBoZWlnaHRTaWRlID0gYWxpZ25tZW50ID09PSAnZW5kJyA/ICd0b3AnIDogJ2JvdHRvbSc7XG4gICAgICB9XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93W2hlaWdodFNpZGVdO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gb3ZlcmZsb3dbd2lkdGhTaWRlXTtcbiAgICAgIGNvbnN0IG5vU2hpZnQgPSAhc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQ7XG4gICAgICBsZXQgYXZhaWxhYmxlSGVpZ2h0ID0gb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQ7XG4gICAgICBsZXQgYXZhaWxhYmxlV2lkdGggPSBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoO1xuICAgICAgaWYgKGlzWEF4aXMpIHtcbiAgICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93LmxlZnQgLSBvdmVyZmxvdy5yaWdodDtcbiAgICAgICAgYXZhaWxhYmxlV2lkdGggPSBhbGlnbm1lbnQgfHwgbm9TaGlmdCA/IG1pbihvdmVyZmxvd0F2YWlsYWJsZVdpZHRoLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCkgOiBtYXhpbXVtQ2xpcHBpbmdXaWR0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQsIG1heGltdW1DbGlwcGluZ0hlaWdodCkgOiBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWEF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHJlY3RUb0NsaWVudFJlY3QsIHNoaWZ0LCBzaXplIH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlJztcblxuZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiAoKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5cbmZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUkMShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgcmV0dXJuIGlzTm9kZShub2RlKSA/IChub2RlLm5vZGVOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpIDogJyc7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5IVE1MRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc1NoYWRvd1Jvb3Qobm9kZSkge1xuICAvLyBCcm93c2VycyB3aXRob3V0IGBTaGFkb3dSb290YCBzdXBwb3J0LlxuICBpZiAodHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuU2hhZG93Um9vdDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBTaGFkb3dSb290O1xufVxuZnVuY3Rpb24gaXNPdmVyZmxvd0VsZW1lbnQoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgb3ZlcmZsb3csXG4gICAgb3ZlcmZsb3dYLFxuICAgIG92ZXJmbG93WSxcbiAgICBkaXNwbGF5XG4gIH0gPSBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICBjb25zdCBzYWZhcmkgPSBpc1NhZmFyaSgpO1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCk7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgcmV0dXJuIGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCAhc2FmYXJpICYmIChjc3MuYmFja2Ryb3BGaWx0ZXIgPyBjc3MuYmFja2Ryb3BGaWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCAhc2FmYXJpICYmIChjc3MuZmlsdGVyID8gY3NzLmZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IFsndHJhbnNmb3JtJywgJ3BlcnNwZWN0aXZlJywgJ2ZpbHRlciddLnNvbWUodmFsdWUgPT4gKGNzcy53aWxsQ2hhbmdlIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpIHx8IFsncGFpbnQnLCAnbGF5b3V0JywgJ3N0cmljdCcsICdjb250ZW50J10uc29tZSh2YWx1ZSA9PiAoY3NzLmNvbnRhaW4gfHwgJycpLmluY2x1ZGVzKHZhbHVlKSk7XG59XG5mdW5jdGlvbiBpc1NhZmFyaSgpIHtcbiAgaWYgKHR5cGVvZiBDU1MgPT09ICd1bmRlZmluZWQnIHx8ICFDU1Muc3VwcG9ydHMpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIENTUy5zdXBwb3J0cygnLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXInLCAnbm9uZScpO1xufVxuZnVuY3Rpb24gaXNMYXN0VHJhdmVyc2FibGVOb2RlKG5vZGUpIHtcbiAgcmV0dXJuIFsnaHRtbCcsICdib2R5JywgJyNkb2N1bWVudCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKG5vZGUpKTtcbn1cblxuY29uc3QgbWluID0gTWF0aC5taW47XG5jb25zdCBtYXggPSBNYXRoLm1heDtcbmNvbnN0IHJvdW5kID0gTWF0aC5yb3VuZDtcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUkMShlbGVtZW50KTtcbiAgLy8gSW4gdGVzdGluZyBlbnZpcm9ubWVudHMsIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBwcm9wZXJ0aWVzIGFyZSBlbXB0eVxuICAvLyBzdHJpbmdzIGZvciBTVkcgZWxlbWVudHMsIHJldHVybmluZyBOYU4uIEZhbGxiYWNrIHRvIGAwYCBpbiB0aGlzIGNhc2UuXG4gIGxldCB3aWR0aCA9IHBhcnNlRmxvYXQoY3NzLndpZHRoKSB8fCAwO1xuICBsZXQgaGVpZ2h0ID0gcGFyc2VGbG9hdChjc3MuaGVpZ2h0KSB8fCAwO1xuICBjb25zdCBoYXNPZmZzZXQgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBvZmZzZXRXaWR0aCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0V2lkdGggOiB3aWR0aDtcbiAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRIZWlnaHQgOiBoZWlnaHQ7XG4gIGNvbnN0IHNob3VsZEZhbGxiYWNrID0gcm91bmQod2lkdGgpICE9PSBvZmZzZXRXaWR0aCB8fCByb3VuZChoZWlnaHQpICE9PSBvZmZzZXRIZWlnaHQ7XG4gIGlmIChzaG91bGRGYWxsYmFjaykge1xuICAgIHdpZHRoID0gb2Zmc2V0V2lkdGg7XG4gICAgaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIGZhbGxiYWNrOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuY29uc3QgRkFMTEJBQ0tfU0NBTEUgPSB7XG4gIHg6IDEsXG4gIHk6IDFcbn07XG5mdW5jdGlvbiBnZXRTY2FsZShlbGVtZW50KSB7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZG9tRWxlbWVudCkpIHtcbiAgICByZXR1cm4gRkFMTEJBQ0tfU0NBTEU7XG4gIH1cbiAgY29uc3QgcmVjdCA9IGRvbUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgZmFsbGJhY2tcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZG9tRWxlbWVudCk7XG4gIGxldCB4ID0gKGZhbGxiYWNrID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9IChmYWxsYmFjayA/IHJvdW5kKHJlY3QuaGVpZ2h0KSA6IHJlY3QuaGVpZ2h0KSAvIGhlaWdodDtcblxuICAvLyAwLCBOYU4sIG9yIEluZmluaXR5IHNob3VsZCBhbHdheXMgZmFsbGJhY2sgdG8gMS5cblxuICBpZiAoIXggfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkge1xuICAgIHggPSAxO1xuICB9XG4gIGlmICgheSB8fCAhTnVtYmVyLmlzRmluaXRlKHkpKSB7XG4gICAgeSA9IDE7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuY29uc3Qgbm9PZmZzZXRzID0ge1xuICB4OiAwLFxuICB5OiAwXG59O1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICB2YXIgX3dpbiR2aXN1YWxWaWV3cG9ydCwgX3dpbiR2aXN1YWxWaWV3cG9ydDI7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gdHJ1ZTtcbiAgfVxuICBpZiAoIWlzU2FmYXJpKCkpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIGNvbnN0IHdpbiA9IGVsZW1lbnQgPyBnZXRXaW5kb3coZWxlbWVudCkgOiB3aW5kb3c7XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gd2luKSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6ICgoX3dpbiR2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW4kdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCkgfHwgMCxcbiAgICB5OiAoKF93aW4kdmlzdWFsVmlld3BvcnQyID0gd2luLnZpc3VhbFZpZXdwb3J0KSA9PSBudWxsID8gdm9pZCAwIDogX3dpbiR2aXN1YWxWaWV3cG9ydDIub2Zmc2V0VG9wKSB8fCAwXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgbGV0IHNjYWxlID0gRkFMTEJBQ0tfU0NBTEU7XG4gIGlmIChpbmNsdWRlU2NhbGUpIHtcbiAgICBpZiAob2Zmc2V0UGFyZW50KSB7XG4gICAgICBpZiAoaXNFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50LCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSB3aW4uZnJhbWVFbGVtZW50O1xuICAgIHdoaWxlIChjdXJyZW50SUZyYW1lICYmIG9mZnNldFBhcmVudCAmJiBvZmZzZXRXaW4gIT09IHdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGlmcmFtZVJlY3QueCArPSAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBpZnJhbWVSZWN0LnkgKz0gKGN1cnJlbnRJRnJhbWUuY2xpZW50VG9wICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ1RvcCkpICogaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIHkgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHdpZHRoICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICBoZWlnaHQgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKz0gaWZyYW1lUmVjdC54O1xuICAgICAgeSArPSBpZnJhbWVSZWN0Lnk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0V2luZG93KGN1cnJlbnRJRnJhbWUpLmZyYW1lRWxlbWVudDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3Qoe1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChub2RlKSB7XG4gIHJldHVybiAoKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpIHtcbiAgaWYgKGlzRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB7XG4gICAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQucGFnZVhPZmZzZXQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnBhZ2VZT2Zmc2V0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQpIHtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGxldCBzY2FsZSA9IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiBzdHJhdGVneSAhPT0gJ2ZpeGVkJykge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZSQxKGJvZHkpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKSAtIHdpZHRoO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKG5vZGUpO1xuICBpZiAoaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgLy8gYGdldFBhcmVudE5vZGVgIHdpbGwgbmV2ZXIgcmV0dXJuIGEgYERvY3VtZW50YCBkdWUgdG8gdGhlIGZhbGxiYWNrXG4gICAgLy8gY2hlY2ssIHNvIGl0J3MgZWl0aGVyIHRoZSA8aHRtbD4gb3IgPGJvZHk+IGVsZW1lbnQuXG4gICAgcmV0dXJuIHBhcmVudE5vZGUub3duZXJEb2N1bWVudC5ib2R5O1xuICB9XG4gIGlmIChpc0hUTUxFbGVtZW50KHBhcmVudE5vZGUpICYmIGlzT3ZlcmZsb3dFbGVtZW50KHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKHBhcmVudE5vZGUpO1xufVxuXG5mdW5jdGlvbiBnZXRPdmVyZmxvd0FuY2VzdG9ycyhub2RlLCBsaXN0KSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50O1xuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG4gIGNvbnN0IHNjcm9sbGFibGVBbmNlc3RvciA9IGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpO1xuICBjb25zdCBpc0JvZHkgPSBzY3JvbGxhYmxlQW5jZXN0b3IgPT09ICgoX25vZGUkb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvcikpO1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgbGV0IHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgbGV0IGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgY29uc3QgdmlzdWFsVmlld3BvcnRCYXNlZCA9IGlzU2FmYXJpKCk7XG4gICAgaWYgKCF2aXN1YWxWaWV3cG9ydEJhc2VkIHx8IHZpc3VhbFZpZXdwb3J0QmFzZWQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbi8vIFJldHVybnMgdGhlIGlubmVyIGNsaWVudCByZWN0LCBzdWJ0cmFjdGluZyBzY3JvbGxiYXJzIGlmIHByZXNlbnQuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgY29uc3QgdG9wID0gY2xpZW50UmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgY29uc3QgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgY29uc3Qgc2NhbGUgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0U2NhbGUoZWxlbWVudCkgOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAqIHNjYWxlLng7XG4gIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICogc2NhbGUueTtcbiAgY29uc3QgeCA9IGxlZnQgKiBzY2FsZS54O1xuICBjb25zdCB5ID0gdG9wICogc2NhbGUueTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpIHtcbiAgbGV0IHJlY3Q7XG4gIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAndmlld3BvcnQnKSB7XG4gICAgcmVjdCA9IGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSk7XG4gIH0gZWxzZSBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ2RvY3VtZW50Jykge1xuICAgIHJlY3QgPSBnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQoY2xpcHBpbmdBbmNlc3RvcikpIHtcbiAgICByZWN0ID0gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpO1xuICAgIHJlY3QgPSB7XG4gICAgICAuLi5jbGlwcGluZ0FuY2VzdG9yLFxuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlJDEocGFyZW50Tm9kZSkucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cblxuLy8gQSBcImNsaXBwaW5nIGFuY2VzdG9yXCIgaXMgYW4gYG92ZXJmbG93YCBlbGVtZW50IHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBjaGlsZCBlbGVtZW50cy4gVGhpcyByZXR1cm5zIGFsbCBjbGlwcGluZyBhbmNlc3RvcnNcbi8vIG9mIHRoZSBnaXZlbiBlbGVtZW50IHVwIHRoZSB0cmVlLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIGNhY2hlKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCc7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGN1cnJlbnROb2RlKTtcbiAgICBjb25zdCBjdXJyZW50Tm9kZUlzQ29udGFpbmluZyA9IGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKTtcbiAgICBpZiAoIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgc2hvdWxkRHJvcEN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIDogIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnICYmICEhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgJiYgWydhYnNvbHV0ZScsICdmaXhlZCddLmluY2x1ZGVzKGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlLnBvc2l0aW9uKSB8fCBpc092ZXJmbG93RWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBjdXJyZW50Tm9kZSk7XG4gICAgaWYgKHNob3VsZERyb3BDdXJyZW50Tm9kZSkge1xuICAgICAgLy8gRHJvcCBub24tY29udGFpbmluZyBibG9ja3MuXG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGFuY2VzdG9yID0+IGFuY2VzdG9yICE9PSBjdXJyZW50Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlY29yZCBsYXN0IGNvbnRhaW5pbmcgYmxvY2sgZm9yIG5leHQgaXRlcmF0aW9uLlxuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBjb21wdXRlZFN0eWxlO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIGNhY2hlLnNldChlbGVtZW50LCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBhbmNlc3RvcnMuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ1JlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnQsXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBlbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nQW5jZXN0b3JzJyA/IGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCB0aGlzLl9jKSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIGNvbnN0IGNsaXBwaW5nQW5jZXN0b3JzID0gWy4uLmVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycywgcm9vdEJvdW5kYXJ5XTtcbiAgY29uc3QgZmlyc3RDbGlwcGluZ0FuY2VzdG9yID0gY2xpcHBpbmdBbmNlc3RvcnNbMF07XG4gIGNvbnN0IGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nQW5jZXN0b3JzLnJlZHVjZSgoYWNjUmVjdCwgY2xpcHBpbmdBbmNlc3RvcikgPT4ge1xuICAgIGNvbnN0IHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBmaXJzdENsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIGhlaWdodDogY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3AsXG4gICAgeDogY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgeTogY2xpcHBpbmdSZWN0LnRvcFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IGdldENvbXB1dGVkU3R5bGUkMShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChwb2x5ZmlsbCkge1xuICAgIHJldHVybiBwb2x5ZmlsbChlbGVtZW50KTtcbiAgfVxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59XG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICBsZXQgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBpZiAoaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuICBsZXQgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCk7XG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBnZXRDb21wdXRlZFN0eWxlJDEob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCwgcG9seWZpbGwpO1xuICB9XG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdodG1sJyB8fCBnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnYm9keScgJiYgZ2V0Q29tcHV0ZWRTdHlsZSQxKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luZG93O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gb2Zmc2V0cy54LFxuICAgIHk6IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gIH07XG59XG5cbmNvbnN0IHBsYXRmb3JtID0ge1xuICBnZXRDbGlwcGluZ1JlY3QsXG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBpc0VsZW1lbnQsXG4gIGdldERpbWVuc2lvbnMsXG4gIGdldE9mZnNldFBhcmVudCxcbiAgZ2V0RG9jdW1lbnRFbGVtZW50LFxuICBnZXRTY2FsZSxcbiAgYXN5bmMgZ2V0RWxlbWVudFJlY3RzKF9yZWYpIHtcbiAgICBsZXQge1xuICAgICAgcmVmZXJlbmNlLFxuICAgICAgZmxvYXRpbmcsXG4gICAgICBzdHJhdGVneVxuICAgIH0gPSBfcmVmO1xuICAgIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICAgIGNvbnN0IGdldERpbWVuc2lvbnNGbiA9IHRoaXMuZ2V0RGltZW5zaW9ucztcbiAgICByZXR1cm4ge1xuICAgICAgcmVmZXJlbmNlOiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChyZWZlcmVuY2UsIGF3YWl0IGdldE9mZnNldFBhcmVudEZuKGZsb2F0aW5nKSwgc3RyYXRlZ3kpLFxuICAgICAgZmxvYXRpbmc6IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgLi4uKGF3YWl0IGdldERpbWVuc2lvbnNGbihmbG9hdGluZykpXG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgZ2V0Q2xpZW50UmVjdHM6IGVsZW1lbnQgPT4gQXJyYXkuZnJvbShlbGVtZW50LmdldENsaWVudFJlY3RzKCkpLFxuICBpc1JUTDogZWxlbWVudCA9PiBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJ1xufTtcblxuLyoqXG4gKiBBdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gbmVjZXNzYXJ5LlxuICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgbW91bnRlZCBvbiB0aGUgRE9NIG9yXG4gKiB2aXNpYmxlIG9uIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpc1xuICogcmVtb3ZlZCBmcm9tIHRoZSBET00gb3IgaGlkZGVuIGZyb20gdGhlIHNjcmVlbi5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvVXBkYXRlXG4gKi9cbmZ1bmN0aW9uIGF1dG9VcGRhdGUocmVmZXJlbmNlLCBmbG9hdGluZywgdXBkYXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGFuY2VzdG9yU2Nyb2xsID0gdHJ1ZSxcbiAgICBhbmNlc3RvclJlc2l6ZSA9IHRydWUsXG4gICAgZWxlbWVudFJlc2l6ZSA9IHRydWUsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgYW5jZXN0b3JzID0gYW5jZXN0b3JTY3JvbGwgfHwgYW5jZXN0b3JSZXNpemUgPyBbLi4uKGlzRWxlbWVudChyZWZlcmVuY2UpID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocmVmZXJlbmNlKSA6IHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkgOiBbXSksIC4uLmdldE92ZXJmbG93QW5jZXN0b3JzKGZsb2F0aW5nKV0gOiBbXTtcbiAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgIC8vIGlnbm9yZXMgV2luZG93LCBjaGVja3MgZm9yIFtvYmplY3QgVmlzdWFsVmlld3BvcnRdXG4gICAgY29uc3QgaXNWaXN1YWxWaWV3cG9ydCA9ICFpc0VsZW1lbnQoYW5jZXN0b3IpICYmIGFuY2VzdG9yLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1YnKTtcbiAgICBpZiAoYW5jZXN0b3JTY3JvbGwgJiYgKGFuaW1hdGlvbkZyYW1lID8gaXNWaXN1YWxWaWV3cG9ydCA6IHRydWUpKSB7XG4gICAgICBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUsIHtcbiAgICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gIH0pO1xuICBsZXQgb2JzZXJ2ZXIgPSBudWxsO1xuICBpZiAoZWxlbWVudFJlc2l6ZSkge1xuICAgIG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlzRWxlbWVudChyZWZlcmVuY2UpICYmICFhbmltYXRpb25GcmFtZSAmJiBvYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZSk7XG4gICAgaWYgKCFpc0VsZW1lbnQocmVmZXJlbmNlKSAmJiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgJiYgIWFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCk7XG4gICAgfVxuICAgIG9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICB9XG4gIGxldCBmcmFtZUlkO1xuICBsZXQgcHJldlJlZlJlY3QgPSBhbmltYXRpb25GcmFtZSA/IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpIDogbnVsbDtcbiAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgZnJhbWVMb29wKCk7XG4gIH1cbiAgZnVuY3Rpb24gZnJhbWVMb29wKCkge1xuICAgIGNvbnN0IG5leHRSZWZSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSk7XG4gICAgaWYgKHByZXZSZWZSZWN0ICYmIChuZXh0UmVmUmVjdC54ICE9PSBwcmV2UmVmUmVjdC54IHx8IG5leHRSZWZSZWN0LnkgIT09IHByZXZSZWZSZWN0LnkgfHwgbmV4dFJlZlJlY3Qud2lkdGggIT09IHByZXZSZWZSZWN0LndpZHRoIHx8IG5leHRSZWZSZWN0LmhlaWdodCAhPT0gcHJldlJlZlJlY3QuaGVpZ2h0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfb2JzZXJ2ZXI7XG4gICAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKTtcbiAgICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gICAgfSk7XG4gICAgKF9vYnNlcnZlciA9IG9ic2VydmVyKSA9PSBudWxsID8gdm9pZCAwIDogX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICBvYnNlcnZlciA9IG51bGw7XG4gICAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIENTUyBwb3NpdGlvbmluZ1xuICogc3RyYXRlZ3kuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgcGxhdGZvcm0gfTtcbiIsImltcG9ydCB7IGFycm93IGFzIGFycm93JDEsIGNvbXB1dGVQb3NpdGlvbiB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuZXhwb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUxheW91dEVmZmVjdCwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBUaGlzIHdyYXBzIHRoZSBjb3JlIGBhcnJvd2AgbWlkZGxld2FyZSB0byBhbGxvdyBSZWFjdCByZWZzIGFzIHRoZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiB7XG4gIGZ1bmN0aW9uIGlzUmVmKHZhbHVlKSB7XG4gICAgcmV0dXJuIHt9Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjdXJyZW50Jyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXJyb3cnLFxuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZ1xuICAgICAgfSA9IHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucyhzdGF0ZSkgOiBvcHRpb25zO1xuICAgICAgaWYgKGVsZW1lbnQgJiYgaXNSZWYoZWxlbWVudCkpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGFycm93JDEoe1xuICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudC5jdXJyZW50LFxuICAgICAgICAgICAgcGFkZGluZ1xuICAgICAgICAgIH0pLmZuKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge307XG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGFycm93JDEoe1xuICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgcGFkZGluZ1xuICAgICAgICB9KS5mbihzdGF0ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxudmFyIGluZGV4ID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA/IHVzZUxheW91dEVmZmVjdCA6IHVzZUVmZmVjdDtcblxuLy8gRm9yayBvZiBgZmFzdC1kZWVwLWVxdWFsYCB0aGF0IG9ubHkgZG9lcyB0aGUgY29tcGFyaXNvbnMgd2UgbmVlZCBhbmQgY29tcGFyZXNcbi8vIGZ1bmN0aW9uc1xuZnVuY3Rpb24gZGVlcEVxdWFsKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2YgYSA9PT0gJ2Z1bmN0aW9uJyAmJiBhLnRvU3RyaW5nKCkgPT09IGIudG9TdHJpbmcoKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxldCBsZW5ndGgsIGksIGtleXM7XG4gIGlmIChhICYmIGIgJiYgdHlwZW9mIGEgPT0gJ29iamVjdCcpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgICAgbGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgICAgaWYgKCFkZWVwRXF1YWwoYVtpXSwgYltpXSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBrZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gICAgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCAhPT0gT2JqZWN0LmtleXMoYikubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgaWYgKCF7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIGtleXNbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgaWYgKGtleSA9PT0gJ19vd25lcicgJiYgYS4kJHR5cGVvZikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICghZGVlcEVxdWFsKGFba2V5XSwgYltrZXldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBhICE9PSBhICYmIGIgIT09IGI7XG59XG5cbmZ1bmN0aW9uIGdldERQUihlbGVtZW50KSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHdpbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xufVxuXG5mdW5jdGlvbiByb3VuZEJ5RFBSKGVsZW1lbnQsIHZhbHVlKSB7XG4gIGNvbnN0IGRwciA9IGdldERQUihlbGVtZW50KTtcbiAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBkcHIpIC8gZHByO1xufVxuXG5mdW5jdGlvbiB1c2VMYXRlc3RSZWYodmFsdWUpIHtcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmKHZhbHVlKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVmO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYSBmbG9hdGluZyBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3JlYWN0XG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgcGxhY2VtZW50ID0gJ2JvdHRvbScsXG4gICAgc3RyYXRlZ3kgPSAnYWJzb2x1dGUnLFxuICAgIG1pZGRsZXdhcmUgPSBbXSxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50czoge1xuICAgICAgcmVmZXJlbmNlOiBleHRlcm5hbFJlZmVyZW5jZSxcbiAgICAgIGZsb2F0aW5nOiBleHRlcm5hbEZsb2F0aW5nXG4gICAgfSA9IHt9LFxuICAgIHRyYW5zZm9ybSA9IHRydWUsXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQsXG4gICAgb3BlblxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICBzdHJhdGVneSxcbiAgICBwbGFjZW1lbnQsXG4gICAgbWlkZGxld2FyZURhdGE6IHt9LFxuICAgIGlzUG9zaXRpb25lZDogZmFsc2VcbiAgfSk7XG4gIGNvbnN0IFtsYXRlc3RNaWRkbGV3YXJlLCBzZXRMYXRlc3RNaWRkbGV3YXJlXSA9IFJlYWN0LnVzZVN0YXRlKG1pZGRsZXdhcmUpO1xuICBpZiAoIWRlZXBFcXVhbChsYXRlc3RNaWRkbGV3YXJlLCBtaWRkbGV3YXJlKSkge1xuICAgIHNldExhdGVzdE1pZGRsZXdhcmUobWlkZGxld2FyZSk7XG4gIH1cbiAgY29uc3QgW19yZWZlcmVuY2UsIF9zZXRSZWZlcmVuY2VdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtfZmxvYXRpbmcsIF9zZXRGbG9hdGluZ10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3Qgc2V0UmVmZXJlbmNlID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgaWYgKG5vZGUgIT0gcmVmZXJlbmNlUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIF9zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgfVxuICB9LCBbX3NldFJlZmVyZW5jZV0pO1xuICBjb25zdCBzZXRGbG9hdGluZyA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGlmIChub2RlICE9PSBmbG9hdGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICBmbG9hdGluZ1JlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIF9zZXRGbG9hdGluZyhub2RlKTtcbiAgICB9XG4gIH0sIFtfc2V0RmxvYXRpbmddKTtcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSBleHRlcm5hbFJlZmVyZW5jZSB8fCBfcmVmZXJlbmNlO1xuICBjb25zdCBmbG9hdGluZ0VsID0gZXh0ZXJuYWxGbG9hdGluZyB8fCBfZmxvYXRpbmc7XG4gIGNvbnN0IHJlZmVyZW5jZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgZmxvYXRpbmdSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGRhdGFSZWYgPSBSZWFjdC51c2VSZWYoZGF0YSk7XG4gIGNvbnN0IHdoaWxlRWxlbWVudHNNb3VudGVkUmVmID0gdXNlTGF0ZXN0UmVmKHdoaWxlRWxlbWVudHNNb3VudGVkKTtcbiAgY29uc3QgcGxhdGZvcm1SZWYgPSB1c2VMYXRlc3RSZWYocGxhdGZvcm0pO1xuICBjb25zdCB1cGRhdGUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFyZWZlcmVuY2VSZWYuY3VycmVudCB8fCAhZmxvYXRpbmdSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBwbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmU6IGxhdGVzdE1pZGRsZXdhcmVcbiAgICB9O1xuICAgIGlmIChwbGF0Zm9ybVJlZi5jdXJyZW50KSB7XG4gICAgICBjb25maWcucGxhdGZvcm0gPSBwbGF0Zm9ybVJlZi5jdXJyZW50O1xuICAgIH1cbiAgICBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlUmVmLmN1cnJlbnQsIGZsb2F0aW5nUmVmLmN1cnJlbnQsIGNvbmZpZykudGhlbihkYXRhID0+IHtcbiAgICAgIGNvbnN0IGZ1bGxEYXRhID0ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBpc1Bvc2l0aW9uZWQ6IHRydWVcbiAgICAgIH07XG4gICAgICBpZiAoaXNNb3VudGVkUmVmLmN1cnJlbnQgJiYgIWRlZXBFcXVhbChkYXRhUmVmLmN1cnJlbnQsIGZ1bGxEYXRhKSkge1xuICAgICAgICBkYXRhUmVmLmN1cnJlbnQgPSBmdWxsRGF0YTtcbiAgICAgICAgUmVhY3RET00uZmx1c2hTeW5jKCgpID0+IHtcbiAgICAgICAgICBzZXREYXRhKGZ1bGxEYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtsYXRlc3RNaWRkbGV3YXJlLCBwbGFjZW1lbnQsIHN0cmF0ZWd5LCBwbGF0Zm9ybVJlZl0pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKG9wZW4gPT09IGZhbHNlICYmIGRhdGFSZWYuY3VycmVudC5pc1Bvc2l0aW9uZWQpIHtcbiAgICAgIGRhdGFSZWYuY3VycmVudC5pc1Bvc2l0aW9uZWQgPSBmYWxzZTtcbiAgICAgIHNldERhdGEoZGF0YSA9PiAoe1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBpc1Bvc2l0aW9uZWQ6IGZhbHNlXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCBbb3Blbl0pO1xuICBjb25zdCBpc01vdW50ZWRSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChyZWZlcmVuY2VFbCkgcmVmZXJlbmNlUmVmLmN1cnJlbnQgPSByZWZlcmVuY2VFbDtcbiAgICBpZiAoZmxvYXRpbmdFbCkgZmxvYXRpbmdSZWYuY3VycmVudCA9IGZsb2F0aW5nRWw7XG4gICAgaWYgKHJlZmVyZW5jZUVsICYmIGZsb2F0aW5nRWwpIHtcbiAgICAgIGlmICh3aGlsZUVsZW1lbnRzTW91bnRlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybiB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZi5jdXJyZW50KHJlZmVyZW5jZUVsLCBmbG9hdGluZ0VsLCB1cGRhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVmZXJlbmNlRWwsIGZsb2F0aW5nRWwsIHVwZGF0ZSwgd2hpbGVFbGVtZW50c01vdW50ZWRSZWZdKTtcbiAgY29uc3QgcmVmcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZVJlZixcbiAgICBmbG9hdGluZzogZmxvYXRpbmdSZWYsXG4gICAgc2V0UmVmZXJlbmNlLFxuICAgIHNldEZsb2F0aW5nXG4gIH0pLCBbc2V0UmVmZXJlbmNlLCBzZXRGbG9hdGluZ10pO1xuICBjb25zdCBlbGVtZW50cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZUVsLFxuICAgIGZsb2F0aW5nOiBmbG9hdGluZ0VsXG4gIH0pLCBbcmVmZXJlbmNlRWwsIGZsb2F0aW5nRWxdKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LFxuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMFxuICAgIH07XG4gICAgaWYgKCFlbGVtZW50cy5mbG9hdGluZykge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHggPSByb3VuZEJ5RFBSKGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLngpO1xuICAgIGNvbnN0IHkgPSByb3VuZEJ5RFBSKGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLnkpO1xuICAgIGlmICh0cmFuc2Zvcm0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXMsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweClcIixcbiAgICAgICAgLi4uKGdldERQUihlbGVtZW50cy5mbG9hdGluZykgPj0gMS41ICYmIHtcbiAgICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJ1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgIGxlZnQ6IHgsXG4gICAgICB0b3A6IHlcbiAgICB9O1xuICB9LCBbc3RyYXRlZ3ksIHRyYW5zZm9ybSwgZWxlbWVudHMuZmxvYXRpbmcsIGRhdGEueCwgZGF0YS55XSk7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgLi4uZGF0YSxcbiAgICB1cGRhdGUsXG4gICAgcmVmcyxcbiAgICBlbGVtZW50cyxcbiAgICBmbG9hdGluZ1N0eWxlc1xuICB9KSwgW2RhdGEsIHVwZGF0ZSwgcmVmcywgZWxlbWVudHMsIGZsb2F0aW5nU3R5bGVzXSk7XG59XG5cbmV4cG9ydCB7IGFycm93LCB1c2VGbG9hdGluZyB9O1xuIiwiaW1wb3J0ICRqYm5FeCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICRqYm5FeCRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICRqYm5FeCRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRqYm5FeCRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFycm93XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ3ZThmNWNkMDcxODc4MDNlJHZhciROQU1FID0gJ0Fycm93JztcbmNvbnN0ICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1ID0gLyojX19QVVJFX18qLyAkamJuRXgkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IGNoaWxkcmVuOiBjaGlsZHJlbiAsIHdpZHRoOiB3aWR0aCA9IDEwICwgaGVpZ2h0OiBoZWlnaHQgPSA1ICwgLi4uYXJyb3dQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGpibkV4JGNyZWF0ZUVsZW1lbnQoJGpibkV4JFByaW1pdGl2ZS5zdmcsICRqYm5FeCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgYXJyb3dQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgdmlld0JveDogXCIwIDAgMzAgMTBcIixcbiAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbzogXCJub25lXCJcbiAgICB9KSwgcHJvcHMuYXNDaGlsZCA/IGNoaWxkcmVuIDogLyojX19QVVJFX18qLyAkamJuRXgkY3JlYXRlRWxlbWVudChcInBvbHlnb25cIiwge1xuICAgICAgICBwb2ludHM6IFwiMCwwIDMwLDAgMTUsMTBcIlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ3ZThmNWNkMDcxODc4MDNlJHZhciROQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNTtcblxuXG5cblxuZXhwb3J0IHskN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSBhcyBBcnJvdywgJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJGtZOTNWJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge3VzZVN0YXRlIGFzICRrWTkzViR1c2VTdGF0ZSwgY3JlYXRlRWxlbWVudCBhcyAka1k5M1YkY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiBhcyAka1k5M1YkZm9yd2FyZFJlZiwgdXNlUmVmIGFzICRrWTkzViR1c2VSZWYsIHVzZUVmZmVjdCBhcyAka1k5M1YkdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlRmxvYXRpbmcgYXMgJGtZOTNWJHVzZUZsb2F0aW5nLCBhdXRvVXBkYXRlIGFzICRrWTkzViRhdXRvVXBkYXRlLCBvZmZzZXQgYXMgJGtZOTNWJG9mZnNldCwgc2hpZnQgYXMgJGtZOTNWJHNoaWZ0LCBsaW1pdFNoaWZ0IGFzICRrWTkzViRsaW1pdFNoaWZ0LCBmbGlwIGFzICRrWTkzViRmbGlwLCBzaXplIGFzICRrWTkzViRzaXplLCBhcnJvdyBhcyAka1k5M1YkYXJyb3csIGhpZGUgYXMgJGtZOTNWJGhpZGV9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQge1Jvb3QgYXMgJGtZOTNWJFJvb3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtYXJyb3dcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICRrWTkzViR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAka1k5M1YkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRrWTkzViRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICRrWTkzViR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAka1k5M1YkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5pbXBvcnQge3VzZVNpemUgYXMgJGtZOTNWJHVzZVNpemV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXNpemVcIjtcblxuXG5cblxuXG5cblxuXG5cblxuXG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMzZmMDA4NmRhMDljNGI5ZiA9IFtcbiAgICAndG9wJyxcbiAgICAncmlnaHQnLFxuICAgICdib3R0b20nLFxuICAgICdsZWZ0J1xuXTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQzNjcxZmZhYjdiMzAyZmM5ID0gW1xuICAgICdzdGFydCcsXG4gICAgJ2NlbnRlcicsXG4gICAgJ2VuZCdcbl07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BwZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FID0gJ1BvcHBlcic7XG5jb25zdCBbJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGNyZWF0ZVBvcHBlckNvbnRleHQsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3MjJhYWMxOTRhZTkyM10gPSAka1k5M1YkY3JlYXRlQ29udGV4dFNjb3BlKCRjZjFhYzVkOWZlMGU4MjA2JHZhciRQT1BQRVJfTkFNRSk7XG5jb25zdCBbJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlclByb3ZpZGVyLCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdXNlUG9wcGVyQ29udGV4dF0gPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkY3JlYXRlUG9wcGVyQ29udGV4dCgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUpO1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJhZGFjOWFkYTNhMGJkZjkgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wcGVyOiBfX3Njb3BlUG9wcGVyICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2FuY2hvciwgc2V0QW5jaG9yXSA9ICRrWTkzViR1c2VTdGF0ZShudWxsKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVQb3BwZXIsXG4gICAgICAgIGFuY2hvcjogYW5jaG9yLFxuICAgICAgICBvbkFuY2hvckNoYW5nZTogc2V0QW5jaG9yXG4gICAgfSwgY2hpbGRyZW4pO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmFkYWM5YWRhM2EwYmRmOSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wcGVyQW5jaG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRBTkNIT1JfTkFNRSA9ICdQb3BwZXJBbmNob3InO1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGVjZDRlMWNjYWI2ZWQ2ZCA9IC8qI19fUFVSRV9fKi8gJGtZOTNWJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wcGVyOiBfX3Njb3BlUG9wcGVyICwgdmlydHVhbFJlZjogdmlydHVhbFJlZiAsIC4uLmFuY2hvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZVBvcHBlckNvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJEFOQ0hPUl9OQU1FLCBfX3Njb3BlUG9wcGVyKTtcbiAgICBjb25zdCByZWYgPSAka1k5M1YkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRrWTkzViR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgICRrWTkzViR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgLy8gQ29uc3VtZXIgY2FuIGFuY2hvciB0aGUgcG9wcGVyIHRvIHNvbWV0aGluZyB0aGF0IGlzbid0XG4gICAgICAgIC8vIGEgRE9NIG5vZGUgZS5nLiBwb2ludGVyIHBvc2l0aW9uLCBzbyB3ZSBvdmVycmlkZSB0aGVcbiAgICAgICAgLy8gYGFuY2hvclJlZmAgd2l0aCB0aGVpciB2aXJ0dWFsIHJlZiBpbiB0aGlzIGNhc2UuXG4gICAgICAgIGNvbnRleHQub25BbmNob3JDaGFuZ2UoKHZpcnR1YWxSZWYgPT09IG51bGwgfHwgdmlydHVhbFJlZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmlydHVhbFJlZi5jdXJyZW50KSB8fCByZWYuY3VycmVudCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHZpcnR1YWxSZWYgPyBudWxsIDogLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgka1k5M1YkUHJpbWl0aXZlLmRpdiwgJGtZOTNWJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBhbmNob3JQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJEFOQ0hPUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckNvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJENPTlRFTlRfTkFNRSA9ICdQb3BwZXJDb250ZW50JztcbmNvbnN0IFskY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyQ29udGVudFByb3ZpZGVyLCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdXNlQ29udGVudENvbnRleHRdID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGNyZWF0ZVBvcHBlckNvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJENPTlRFTlRfTkFNRSk7XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmM0YWU1ODU1ZDNjNGZjID0gLyojX19QVVJFX18qLyAka1k5M1YkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICB2YXIgX2Fycm93U2l6ZSR3aWR0aCwgX2Fycm93U2l6ZSRoZWlnaHQsIF9taWRkbGV3YXJlRGF0YSRhcnJvdywgX21pZGRsZXdhcmVEYXRhJGFycm93MiwgX21pZGRsZXdhcmVEYXRhJGFycm93MywgX21pZGRsZXdhcmVEYXRhJHRyYW5zLCBfbWlkZGxld2FyZURhdGEkdHJhbnMyLCBfbWlkZGxld2FyZURhdGEkaGlkZTtcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BwZXI6IF9fc2NvcGVQb3BwZXIgLCBzaWRlOiBzaWRlID0gJ2JvdHRvbScgLCBzaWRlT2Zmc2V0OiBzaWRlT2Zmc2V0ID0gMCAsIGFsaWduOiBhbGlnbiA9ICdjZW50ZXInICwgYWxpZ25PZmZzZXQ6IGFsaWduT2Zmc2V0ID0gMCAsIGFycm93UGFkZGluZzogYXJyb3dQYWRkaW5nID0gMCAsIGNvbGxpc2lvbkJvdW5kYXJ5OiBjb2xsaXNpb25Cb3VuZGFyeSA9IFtdICwgY29sbGlzaW9uUGFkZGluZzogY29sbGlzaW9uUGFkZGluZ1Byb3AgPSAwICwgc3RpY2t5OiBzdGlja3kgPSAncGFydGlhbCcgLCBoaWRlV2hlbkRldGFjaGVkOiBoaWRlV2hlbkRldGFjaGVkID0gZmFsc2UgLCBhdm9pZENvbGxpc2lvbnM6IGF2b2lkQ29sbGlzaW9ucyA9IHRydWUgLCBvblBsYWNlZDogb25QbGFjZWQgLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdXNlUG9wcGVyQ29udGV4dCgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlUG9wcGVyKTtcbiAgICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSAka1k5M1YkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJGtZOTNWJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0Q29udGVudChub2RlKVxuICAgICk7XG4gICAgY29uc3QgW2Fycm93LCBzZXRBcnJvd10gPSAka1k5M1YkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgYXJyb3dTaXplID0gJGtZOTNWJHVzZVNpemUoYXJyb3cpO1xuICAgIGNvbnN0IGFycm93V2lkdGggPSAoX2Fycm93U2l6ZSR3aWR0aCA9IGFycm93U2l6ZSA9PT0gbnVsbCB8fCBhcnJvd1NpemUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFycm93U2l6ZS53aWR0aCkgIT09IG51bGwgJiYgX2Fycm93U2l6ZSR3aWR0aCAhPT0gdm9pZCAwID8gX2Fycm93U2l6ZSR3aWR0aCA6IDA7XG4gICAgY29uc3QgYXJyb3dIZWlnaHQgPSAoX2Fycm93U2l6ZSRoZWlnaHQgPSBhcnJvd1NpemUgPT09IG51bGwgfHwgYXJyb3dTaXplID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcnJvd1NpemUuaGVpZ2h0KSAhPT0gbnVsbCAmJiBfYXJyb3dTaXplJGhlaWdodCAhPT0gdm9pZCAwID8gX2Fycm93U2l6ZSRoZWlnaHQgOiAwO1xuICAgIGNvbnN0IGRlc2lyZWRQbGFjZW1lbnQgPSBzaWRlICsgKGFsaWduICE9PSAnY2VudGVyJyA/ICctJyArIGFsaWduIDogJycpO1xuICAgIGNvbnN0IGNvbGxpc2lvblBhZGRpbmcgPSB0eXBlb2YgY29sbGlzaW9uUGFkZGluZ1Byb3AgPT09ICdudW1iZXInID8gY29sbGlzaW9uUGFkZGluZ1Byb3AgOiB7XG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgLi4uY29sbGlzaW9uUGFkZGluZ1Byb3BcbiAgICB9O1xuICAgIGNvbnN0IGJvdW5kYXJ5ID0gQXJyYXkuaXNBcnJheShjb2xsaXNpb25Cb3VuZGFyeSkgPyBjb2xsaXNpb25Cb3VuZGFyeSA6IFtcbiAgICAgICAgY29sbGlzaW9uQm91bmRhcnlcbiAgICBdO1xuICAgIGNvbnN0IGhhc0V4cGxpY2l0Qm91bmRhcmllcyA9IGJvdW5kYXJ5Lmxlbmd0aCA+IDA7XG4gICAgY29uc3QgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zID0ge1xuICAgICAgICBwYWRkaW5nOiBjb2xsaXNpb25QYWRkaW5nLFxuICAgICAgICBib3VuZGFyeTogYm91bmRhcnkuZmlsdGVyKCRjZjFhYzVkOWZlMGU4MjA2JHZhciRpc05vdE51bGwpLFxuICAgICAgICAvLyB3aXRoIGBzdHJhdGVneTogJ2ZpeGVkJ2AsIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGdldCBpdCB0byByZXNwZWN0IGJvdW5kYXJpZXNcbiAgICAgICAgYWx0Qm91bmRhcnk6IGhhc0V4cGxpY2l0Qm91bmRhcmllc1xuICAgIH07XG4gICAgY29uc3QgeyByZWZzOiByZWZzICwgZmxvYXRpbmdTdHlsZXM6IGZsb2F0aW5nU3R5bGVzICwgcGxhY2VtZW50OiBwbGFjZW1lbnQgLCBpc1Bvc2l0aW9uZWQ6IGlzUG9zaXRpb25lZCAsIG1pZGRsZXdhcmVEYXRhOiBtaWRkbGV3YXJlRGF0YSAgfSA9ICRrWTkzViR1c2VGbG9hdGluZyh7XG4gICAgICAgIC8vIGRlZmF1bHQgdG8gYGZpeGVkYCBzdHJhdGVneSBzbyB1c2VycyBkb24ndCBoYXZlIHRvIHBpY2sgYW5kIHdlIGFsc28gYXZvaWQgZm9jdXMgc2Nyb2xsIGlzc3Vlc1xuICAgICAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICAgICAgcGxhY2VtZW50OiBkZXNpcmVkUGxhY2VtZW50LFxuICAgICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogJGtZOTNWJGF1dG9VcGRhdGUsXG4gICAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgICAgICByZWZlcmVuY2U6IGNvbnRleHQuYW5jaG9yXG4gICAgICAgIH0sXG4gICAgICAgIG1pZGRsZXdhcmU6IFtcbiAgICAgICAgICAgICRrWTkzViRvZmZzZXQoe1xuICAgICAgICAgICAgICAgIG1haW5BeGlzOiBzaWRlT2Zmc2V0ICsgYXJyb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgYWxpZ25tZW50QXhpczogYWxpZ25PZmZzZXRcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYXZvaWRDb2xsaXNpb25zICYmICRrWTkzViRzaGlmdCh7XG4gICAgICAgICAgICAgICAgbWFpbkF4aXM6IHRydWUsXG4gICAgICAgICAgICAgICAgY3Jvc3NBeGlzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsaW1pdGVyOiBzdGlja3kgPT09ICdwYXJ0aWFsJyA/ICRrWTkzViRsaW1pdFNoaWZ0KCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGF2b2lkQ29sbGlzaW9ucyAmJiAka1k5M1YkZmxpcCh7XG4gICAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICRrWTkzViRzaXplKHtcbiAgICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgICAgYXBwbHk6ICh7IGVsZW1lbnRzOiBlbGVtZW50cyAsIHJlY3RzOiByZWN0cyAsIGF2YWlsYWJsZVdpZHRoOiBhdmFpbGFibGVXaWR0aCAsIGF2YWlsYWJsZUhlaWdodDogYXZhaWxhYmxlSGVpZ2h0ICB9KT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoOiBhbmNob3JXaWR0aCAsIGhlaWdodDogYW5jaG9ySGVpZ2h0ICB9ID0gcmVjdHMucmVmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50U3R5bGUgPSBlbGVtZW50cy5mbG9hdGluZy5zdHlsZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtd2lkdGgnLCBgJHthdmFpbGFibGVXaWR0aH1weGApO1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50U3R5bGUuc2V0UHJvcGVydHkoJy0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQnLCBgJHthdmFpbGFibGVIZWlnaHR9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hbmNob3Itd2lkdGgnLCBgJHthbmNob3JXaWR0aH1weGApO1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50U3R5bGUuc2V0UHJvcGVydHkoJy0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQnLCBgJHthbmNob3JIZWlnaHR9cHhgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGFycm93ICYmICRrWTkzViRhcnJvdyh7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogYXJyb3csXG4gICAgICAgICAgICAgICAgcGFkZGluZzogYXJyb3dQYWRkaW5nXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICRjZjFhYzVkOWZlMGU4MjA2JHZhciR0cmFuc2Zvcm1PcmlnaW4oe1xuICAgICAgICAgICAgICAgIGFycm93V2lkdGg6IGFycm93V2lkdGgsXG4gICAgICAgICAgICAgICAgYXJyb3dIZWlnaHQ6IGFycm93SGVpZ2h0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhpZGVXaGVuRGV0YWNoZWQgJiYgJGtZOTNWJGhpZGUoe1xuICAgICAgICAgICAgICAgIHN0cmF0ZWd5OiAncmVmZXJlbmNlSGlkZGVuJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgIH0pO1xuICAgIGNvbnN0IFtwbGFjZWRTaWRlLCBwbGFjZWRBbGlnbl0gPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGhhbmRsZVBsYWNlZCA9ICRrWTkzViR1c2VDYWxsYmFja1JlZihvblBsYWNlZCk7XG4gICAgJGtZOTNWJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoaXNQb3NpdGlvbmVkKSBoYW5kbGVQbGFjZWQgPT09IG51bGwgfHwgaGFuZGxlUGxhY2VkID09PSB2b2lkIDAgfHwgaGFuZGxlUGxhY2VkKCk7XG4gICAgfSwgW1xuICAgICAgICBpc1Bvc2l0aW9uZWQsXG4gICAgICAgIGhhbmRsZVBsYWNlZFxuICAgIF0pO1xuICAgIGNvbnN0IGFycm93WCA9IChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXJyb3cueDtcbiAgICBjb25zdCBhcnJvd1kgPSAoX21pZGRsZXdhcmVEYXRhJGFycm93MiA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkYXJyb3cyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXJyb3cyLnk7XG4gICAgY29uc3QgY2Fubm90Q2VudGVyQXJyb3cgPSAoKF9taWRkbGV3YXJlRGF0YSRhcnJvdzMgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93MyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93My5jZW50ZXJPZmZzZXQpICE9PSAwO1xuICAgIGNvbnN0IFtjb250ZW50WkluZGV4LCBzZXRDb250ZW50WkluZGV4XSA9ICRrWTkzViR1c2VTdGF0ZSgpO1xuICAgICRrWTkzViR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnQpIHNldENvbnRlbnRaSW5kZXgod2luZG93LmdldENvbXB1dGVkU3R5bGUoY29udGVudCkuekluZGV4KTtcbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnRcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHJlZjogcmVmcy5zZXRGbG9hdGluZyxcbiAgICAgICAgXCJkYXRhLXJhZGl4LXBvcHBlci1jb250ZW50LXdyYXBwZXJcIjogXCJcIixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmZsb2F0aW5nU3R5bGVzLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBpc1Bvc2l0aW9uZWQgPyBmbG9hdGluZ1N0eWxlcy50cmFuc2Zvcm0gOiAndHJhbnNsYXRlKDAsIC0yMDAlKScsXG4gICAgICAgICAgICAvLyBrZWVwIG9mZiB0aGUgcGFnZSB3aGVuIG1lYXN1cmluZ1xuICAgICAgICAgICAgbWluV2lkdGg6ICdtYXgtY29udGVudCcsXG4gICAgICAgICAgICB6SW5kZXg6IGNvbnRlbnRaSW5kZXgsXG4gICAgICAgICAgICBbJy0tcmFkaXgtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4nXTogW1xuICAgICAgICAgICAgICAgIChfbWlkZGxld2FyZURhdGEkdHJhbnMgPSBtaWRkbGV3YXJlRGF0YS50cmFuc2Zvcm1PcmlnaW4pID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSR0cmFucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJHRyYW5zLngsXG4gICAgICAgICAgICAgICAgKF9taWRkbGV3YXJlRGF0YSR0cmFuczIgPSBtaWRkbGV3YXJlRGF0YS50cmFuc2Zvcm1PcmlnaW4pID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSR0cmFuczIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSR0cmFuczIueVxuICAgICAgICAgICAgXS5qb2luKCcgJylcbiAgICAgICAgfSAvLyBGbG9hdGluZyBVSSBpbnRlcmFsbHkgY2FsY3VsYXRlcyBsb2dpY2FsIGFsaWdubWVudCBiYXNlZCB0aGUgYGRpcmAgYXR0cmlidXRlIG9uXG4gICAgICAgICxcbiAgICAgICAgZGlyOiBwcm9wcy5kaXJcbiAgICB9LCAvKiNfX1BVUkVfXyovICRrWTkzViRjcmVhdGVFbGVtZW50KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRQb3BwZXJDb250ZW50UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVQb3BwZXIsXG4gICAgICAgIHBsYWNlZFNpZGU6IHBsYWNlZFNpZGUsXG4gICAgICAgIG9uQXJyb3dDaGFuZ2U6IHNldEFycm93LFxuICAgICAgICBhcnJvd1g6IGFycm93WCxcbiAgICAgICAgYXJyb3dZOiBhcnJvd1ksXG4gICAgICAgIHNob3VsZEhpZGVBcnJvdzogY2Fubm90Q2VudGVyQXJyb3dcbiAgICB9LCAvKiNfX1BVUkVfXyovICRrWTkzViRjcmVhdGVFbGVtZW50KCRrWTkzViRQcmltaXRpdmUuZGl2LCAka1k5M1YkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc2lkZVwiOiBwbGFjZWRTaWRlLFxuICAgICAgICBcImRhdGEtYWxpZ25cIjogcGxhY2VkQWxpZ25cbiAgICB9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5jb250ZW50UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAvLyBpZiB0aGUgUG9wcGVyQ29udGVudCBoYXNuJ3QgYmVlbiBwbGFjZWQgeWV0IChub3QgYWxsIG1lYXN1cmVtZW50cyBkb25lKVxuICAgICAgICAgICAgLy8gd2UgcHJldmVudCBhbmltYXRpb25zIHNvIHRoYXQgdXNlcnMncyBhbmltYXRpb24gZG9uJ3Qga2ljayBpbiB0b28gZWFybHkgcmVmZXJyaW5nIHdyb25nIHNpZGVzXG4gICAgICAgICAgICBhbmltYXRpb246ICFpc1Bvc2l0aW9uZWQgPyAnbm9uZScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAvLyBoaWRlIHRoZSBjb250ZW50IGlmIHVzaW5nIHRoZSBoaWRlIG1pZGRsZXdhcmUgYW5kIHNob3VsZCBiZSBoaWRkZW5cbiAgICAgICAgICAgIG9wYWNpdHk6IChfbWlkZGxld2FyZURhdGEkaGlkZSA9IG1pZGRsZXdhcmVEYXRhLmhpZGUpICE9PSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRoaWRlICE9PSB2b2lkIDAgJiYgX21pZGRsZXdhcmVEYXRhJGhpZGUucmVmZXJlbmNlSGlkZGVuID8gMCA6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmM0YWU1ODU1ZDNjNGZjLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wcGVyQXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJEFSUk9XX05BTUUgPSAnUG9wcGVyQXJyb3cnO1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJE9QUE9TSVRFX1NJREUgPSB7XG4gICAgdG9wOiAnYm90dG9tJyxcbiAgICByaWdodDogJ2xlZnQnLFxuICAgIGJvdHRvbTogJ3RvcCcsXG4gICAgbGVmdDogJ3JpZ2h0J1xufTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3OWQ2MmNkNGUxMGEzZmQwID0gLyojX19QVVJFX18qLyAka1k5M1YkZm9yd2FyZFJlZihmdW5jdGlvbiAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMChwcm9wcywgZm9yd2FyZGVkUmVmKSB7XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wcGVyOiBfX3Njb3BlUG9wcGVyICwgLi4uYXJyb3dQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdXNlQ29udGVudENvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVQb3BwZXIpO1xuICAgIGNvbnN0IGJhc2VTaWRlID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJE9QUE9TSVRFX1NJREVbY29udGVudENvbnRleHQucGxhY2VkU2lkZV07XG4gICAgcmV0dXJuKC8qI19fUFVSRV9fKi8gLy8gd2UgaGF2ZSB0byB1c2UgYW4gZXh0cmEgd3JhcHBlciBiZWNhdXNlIGBSZXNpemVPYnNlcnZlcmAgKHVzZWQgYnkgYHVzZVNpemVgKVxuICAgIC8vIGRvZXNuJ3QgcmVwb3J0IHNpemUgYXMgd2UnZCBleHBlY3Qgb24gU1ZHIGVsZW1lbnRzLlxuICAgIC8vIGl0IHJlcG9ydHMgdGhlaXIgYm91bmRpbmcgYm94IHdoaWNoIGlzIGVmZmVjdGl2ZWx5IHRoZSBsYXJnZXN0IHBhdGggaW5zaWRlIHRoZSBTVkcuXG4gICAgJGtZOTNWJGNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgcmVmOiBjb250ZW50Q29udGV4dC5vbkFycm93Q2hhbmdlLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICBsZWZ0OiBjb250ZW50Q29udGV4dC5hcnJvd1gsXG4gICAgICAgICAgICB0b3A6IGNvbnRlbnRDb250ZXh0LmFycm93WSxcbiAgICAgICAgICAgIFtiYXNlU2lkZV06IDAsXG4gICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46IHtcbiAgICAgICAgICAgICAgICB0b3A6ICcnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnMCAwJyxcbiAgICAgICAgICAgICAgICBib3R0b206ICdjZW50ZXIgMCcsXG4gICAgICAgICAgICAgICAgbGVmdDogJzEwMCUgMCdcbiAgICAgICAgICAgIH1bY29udGVudENvbnRleHQucGxhY2VkU2lkZV0sXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHtcbiAgICAgICAgICAgICAgICB0b3A6ICd0cmFuc2xhdGVZKDEwMCUpJyxcbiAgICAgICAgICAgICAgICByaWdodDogJ3RyYW5zbGF0ZVkoNTAlKSByb3RhdGUoOTBkZWcpIHRyYW5zbGF0ZVgoLTUwJSknLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogYHJvdGF0ZSgxODBkZWcpYCxcbiAgICAgICAgICAgICAgICBsZWZ0OiAndHJhbnNsYXRlWSg1MCUpIHJvdGF0ZSgtOTBkZWcpIHRyYW5zbGF0ZVgoNTAlKSdcbiAgICAgICAgICAgIH1bY29udGVudENvbnRleHQucGxhY2VkU2lkZV0sXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBjb250ZW50Q29udGV4dC5zaG91bGRIaWRlQXJyb3cgPyAnaGlkZGVuJyA6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfSwgLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgka1k5M1YkUm9vdCwgJGtZOTNWJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBhcnJvd1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4uYXJyb3dQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIC8vIGVuc3VyZXMgdGhlIGVsZW1lbnQgY2FuIGJlIG1lYXN1cmVkIGNvcnJlY3RseSAobW9zdGx5IGZvciBpZiBTVkcpXG4gICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICAgIH1cbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3OWQ2MmNkNGUxMGEzZmQwLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRBUlJPV19OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gZnVuY3Rpb24gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGlzTm90TnVsbCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbDtcbn1cbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciR0cmFuc2Zvcm1PcmlnaW4gPSAob3B0aW9ucyk9Pih7XG4gICAgICAgIG5hbWU6ICd0cmFuc2Zvcm1PcmlnaW4nLFxuICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICBmbiAoZGF0YSkge1xuICAgICAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhcnJvdzQsIF9taWRkbGV3YXJlRGF0YSRhcnJvdzUsIF9taWRkbGV3YXJlRGF0YSRhcnJvdzYsIF9taWRkbGV3YXJlRGF0YSRhcnJvdzcsIF9taWRkbGV3YXJlRGF0YSRhcnJvdzg7XG4gICAgICAgICAgICBjb25zdCB7IHBsYWNlbWVudDogcGxhY2VtZW50ICwgcmVjdHM6IHJlY3RzICwgbWlkZGxld2FyZURhdGE6IG1pZGRsZXdhcmVEYXRhICB9ID0gZGF0YTtcbiAgICAgICAgICAgIGNvbnN0IGNhbm5vdENlbnRlckFycm93ID0gKChfbWlkZGxld2FyZURhdGEkYXJyb3c0ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzQuY2VudGVyT2Zmc2V0KSAhPT0gMDtcbiAgICAgICAgICAgIGNvbnN0IGlzQXJyb3dIaWRkZW4gPSBjYW5ub3RDZW50ZXJBcnJvdztcbiAgICAgICAgICAgIGNvbnN0IGFycm93V2lkdGggPSBpc0Fycm93SGlkZGVuID8gMCA6IG9wdGlvbnMuYXJyb3dXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGFycm93SGVpZ2h0ID0gaXNBcnJvd0hpZGRlbiA/IDAgOiBvcHRpb25zLmFycm93SGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgW3BsYWNlZFNpZGUsIHBsYWNlZEFsaWduXSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRnZXRTaWRlQW5kQWxpZ25Gcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBub0Fycm93QWxpZ24gPSB7XG4gICAgICAgICAgICAgICAgc3RhcnQ6ICcwJScsXG4gICAgICAgICAgICAgICAgY2VudGVyOiAnNTAlJyxcbiAgICAgICAgICAgICAgICBlbmQ6ICcxMDAlJ1xuICAgICAgICAgICAgfVtwbGFjZWRBbGlnbl07XG4gICAgICAgICAgICBjb25zdCBhcnJvd1hDZW50ZXIgPSAoKF9taWRkbGV3YXJlRGF0YSRhcnJvdzUgPSAoX21pZGRsZXdhcmVEYXRhJGFycm93NiA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkYXJyb3c2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXJyb3c2LngpICE9PSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdzUgIT09IHZvaWQgMCA/IF9taWRkbGV3YXJlRGF0YSRhcnJvdzUgOiAwKSArIGFycm93V2lkdGggLyAyO1xuICAgICAgICAgICAgY29uc3QgYXJyb3dZQ2VudGVyID0gKChfbWlkZGxld2FyZURhdGEkYXJyb3c3ID0gKF9taWRkbGV3YXJlRGF0YSRhcnJvdzggPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93OCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93OC55KSAhPT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3c3ICE9PSB2b2lkIDAgPyBfbWlkZGxld2FyZURhdGEkYXJyb3c3IDogMCkgKyBhcnJvd0hlaWdodCAvIDI7XG4gICAgICAgICAgICBsZXQgeCA9ICcnO1xuICAgICAgICAgICAgbGV0IHkgPSAnJztcbiAgICAgICAgICAgIGlmIChwbGFjZWRTaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgIHggPSBpc0Fycm93SGlkZGVuID8gbm9BcnJvd0FsaWduIDogYCR7YXJyb3dYQ2VudGVyfXB4YDtcbiAgICAgICAgICAgICAgICB5ID0gYCR7LWFycm93SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhY2VkU2lkZSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICB4ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WENlbnRlcn1weGA7XG4gICAgICAgICAgICAgICAgeSA9IGAke3JlY3RzLmZsb2F0aW5nLmhlaWdodCArIGFycm93SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhY2VkU2lkZSA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgIHggPSBgJHstYXJyb3dIZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgIHkgPSBpc0Fycm93SGlkZGVuID8gbm9BcnJvd0FsaWduIDogYCR7YXJyb3dZQ2VudGVyfXB4YDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhY2VkU2lkZSA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgeCA9IGAke3JlY3RzLmZsb2F0aW5nLndpZHRoICsgYXJyb3dIZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgIHkgPSBpc0Fycm93SGlkZGVuID8gbm9BcnJvd0FsaWduIDogYCR7YXJyb3dZQ2VudGVyfXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICB4OiB4LFxuICAgICAgICAgICAgICAgICAgICB5OiB5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0pXG47XG5mdW5jdGlvbiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgICBjb25zdCBbc2lkZSwgYWxpZ24gPSAnY2VudGVyJ10gPSBwbGFjZW1lbnQuc3BsaXQoJy0nKTtcbiAgICByZXR1cm4gW1xuICAgICAgICBzaWRlLFxuICAgICAgICBhbGlnblxuICAgIF07XG59XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYWRhYzlhZGEzYTBiZGY5O1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGI2ODgyNTM5NThiOGRmZTcgPSAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkZWNkNGUxY2NhYjZlZDZkO1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgPSAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmM0YWU1ODU1ZDNjNGZjO1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgPSAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMDtcblxuXG5cblxuZXhwb3J0IHskY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzIyYWFjMTk0YWU5MjMgYXMgY3JlYXRlUG9wcGVyU2NvcGUsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYWRhYzlhZGEzYTBiZGY5IGFzIFBvcHBlciwgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGVjZDRlMWNjYWI2ZWQ2ZCBhcyBQb3BwZXJBbmNob3IsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYzRhZTU4NTVkM2M0ZmMgYXMgUG9wcGVyQ29udGVudCwgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDAgYXMgUG9wcGVyQXJyb3csICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3IGFzIEFuY2hvciwgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgYXMgQ29udGVudCwgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3csICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQzNmYwMDg2ZGEwOWM0YjlmIGFzIFNJREVfT1BUSU9OUywgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDM2NzFmZmFiN2IzMDJmYzkgYXMgQUxJR05fT1BUSU9OU307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJGFtNmdtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge3VzZVJlZiBhcyAkYW02Z20kdXNlUmVmLCB1c2VTdGF0ZSBhcyAkYW02Z20kdXNlU3RhdGUsIGNyZWF0ZUVsZW1lbnQgYXMgJGFtNmdtJGNyZWF0ZUVsZW1lbnQsIHVzZUNhbGxiYWNrIGFzICRhbTZnbSR1c2VDYWxsYmFjaywgZm9yd2FyZFJlZiBhcyAkYW02Z20kZm9yd2FyZFJlZiwgdXNlRWZmZWN0IGFzICRhbTZnbSR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkYW02Z20kY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkYW02Z20kdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGFtNmdtJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge0Rpc21pc3NhYmxlTGF5ZXIgYXMgJGFtNmdtJERpc21pc3NhYmxlTGF5ZXJ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXJcIjtcbmltcG9ydCB7dXNlRm9jdXNHdWFyZHMgYXMgJGFtNmdtJHVzZUZvY3VzR3VhcmRzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWZvY3VzLWd1YXJkc1wiO1xuaW1wb3J0IHtGb2N1c1Njb3BlIGFzICRhbTZnbSRGb2N1c1Njb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWZvY3VzLXNjb3BlXCI7XG5pbXBvcnQge3VzZUlkIGFzICRhbTZnbSR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJTY29wZSBhcyAkYW02Z20kY3JlYXRlUG9wcGVyU2NvcGUsIFJvb3QgYXMgJGFtNmdtJFJvb3QsIEFuY2hvciBhcyAkYW02Z20kQW5jaG9yLCBDb250ZW50IGFzICRhbTZnbSRDb250ZW50LCBBcnJvdyBhcyAkYW02Z20kQXJyb3d9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wcGVyXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkYW02Z20kUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkYW02Z20kUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRhbTZnbSRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3QgYXMgJGFtNmdtJFNsb3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkYW02Z20kdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHtoaWRlT3RoZXJzIGFzICRhbTZnbSRoaWRlT3RoZXJzfSBmcm9tIFwiYXJpYS1oaWRkZW5cIjtcbmltcG9ydCB7UmVtb3ZlU2Nyb2xsIGFzICRhbTZnbSRSZW1vdmVTY3JvbGx9IGZyb20gXCJyZWFjdC1yZW1vdmUtc2Nyb2xsXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcG92ZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBPUE9WRVJfTkFNRSA9ICdQb3BvdmVyJztcbmNvbnN0IFskY2I1Y2MyNzBiNTBjNmZjZCR2YXIkY3JlYXRlUG9wb3ZlckNvbnRleHQsICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRjODM5M2M5ZTczMjg2OTMyXSA9ICRhbTZnbSRjcmVhdGVDb250ZXh0U2NvcGUoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBPUE9WRVJfTkFNRSwgW1xuICAgICRhbTZnbSRjcmVhdGVQb3BwZXJTY29wZVxuXSk7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9wcGVyU2NvcGUgPSAkYW02Z20kY3JlYXRlUG9wcGVyU2NvcGUoKTtcbmNvbnN0IFskY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUG9wb3ZlclByb3ZpZGVyLCAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9wb3ZlckNvbnRleHRdID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJGNyZWF0ZVBvcG92ZXJDb250ZXh0KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQT1BPVkVSX05BTUUpO1xuY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDViNmIxOTQwNWE4M2ZmOWQgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wb3ZlcjogX19zY29wZVBvcG92ZXIgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBvcGVuOiBvcGVuUHJvcCAsIGRlZmF1bHRPcGVuOiBkZWZhdWx0T3BlbiAsIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgbW9kYWw6IG1vZGFsID0gZmFsc2UgIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlUG9wb3Zlcik7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9ICRhbTZnbSR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW2hhc0N1c3RvbUFuY2hvciwgc2V0SGFzQ3VzdG9tQW5jaG9yXSA9ICRhbTZnbSR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW29wZW4gPSBmYWxzZSwgc2V0T3Blbl0gPSAkYW02Z20kdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBvcGVuUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRPcGVuLFxuICAgICAgICBvbkNoYW5nZTogb25PcGVuQ2hhbmdlXG4gICAgfSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGFtNmdtJFJvb3QsIHBvcHBlclNjb3BlLCAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3BvdmVyUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVQb3BvdmVyLFxuICAgICAgICBjb250ZW50SWQ6ICRhbTZnbSR1c2VJZCgpLFxuICAgICAgICB0cmlnZ2VyUmVmOiB0cmlnZ2VyUmVmLFxuICAgICAgICBvcGVuOiBvcGVuLFxuICAgICAgICBvbk9wZW5DaGFuZ2U6IHNldE9wZW4sXG4gICAgICAgIG9uT3BlblRvZ2dsZTogJGFtNmdtJHVzZUNhbGxiYWNrKCgpPT5zZXRPcGVuKChwcmV2T3Blbik9PiFwcmV2T3BlblxuICAgICAgICAgICAgKVxuICAgICAgICAsIFtcbiAgICAgICAgICAgIHNldE9wZW5cbiAgICAgICAgXSksXG4gICAgICAgIGhhc0N1c3RvbUFuY2hvcjogaGFzQ3VzdG9tQW5jaG9yLFxuICAgICAgICBvbkN1c3RvbUFuY2hvckFkZDogJGFtNmdtJHVzZUNhbGxiYWNrKCgpPT5zZXRIYXNDdXN0b21BbmNob3IodHJ1ZSlcbiAgICAgICAgLCBbXSksXG4gICAgICAgIG9uQ3VzdG9tQW5jaG9yUmVtb3ZlOiAkYW02Z20kdXNlQ2FsbGJhY2soKCk9PnNldEhhc0N1c3RvbUFuY2hvcihmYWxzZSlcbiAgICAgICAgLCBbXSksXG4gICAgICAgIG1vZGFsOiBtb2RhbFxuICAgIH0sIGNoaWxkcmVuKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ1YjZiMTk0MDVhODNmZjlkLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQT1BPVkVSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wb3ZlckFuY2hvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkQU5DSE9SX05BTUUgPSAnUG9wb3ZlckFuY2hvcic7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkOTZlNTM4MWY0MjUyMWE3OSA9IC8qI19fUFVSRV9fKi8gJGFtNmdtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wb3ZlcjogX19zY29wZVBvcG92ZXIgLCAuLi5hbmNob3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BvdmVyQ29udGV4dCgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkQU5DSE9SX05BTUUsIF9fc2NvcGVQb3BvdmVyKTtcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlUG9wb3Zlcik7XG4gICAgY29uc3QgeyBvbkN1c3RvbUFuY2hvckFkZDogb25DdXN0b21BbmNob3JBZGQgLCBvbkN1c3RvbUFuY2hvclJlbW92ZTogb25DdXN0b21BbmNob3JSZW1vdmUgIH0gPSBjb250ZXh0O1xuICAgICRhbTZnbSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgb25DdXN0b21BbmNob3JBZGQoKTtcbiAgICAgICAgcmV0dXJuICgpPT5vbkN1c3RvbUFuY2hvclJlbW92ZSgpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uQ3VzdG9tQW5jaG9yQWRkLFxuICAgICAgICBvbkN1c3RvbUFuY2hvclJlbW92ZVxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRhbTZnbSRBbmNob3IsICRhbTZnbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIGFuY2hvclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDk2ZTUzODFmNDI1MjFhNzksIHtcbiAgICBkaXNwbGF5TmFtZTogJGNiNWNjMjcwYjUwYzZmY2QkdmFyJEFOQ0hPUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcG92ZXJUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRUUklHR0VSX05BTUUgPSAnUG9wb3ZlclRyaWdnZXInO1xuY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDdkYWNiMDVkMjY0NjZjMyA9IC8qI19fUFVSRV9fKi8gJGFtNmdtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wb3ZlcjogX19zY29wZVBvcG92ZXIgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9wb3ZlckNvbnRleHQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVBvcG92ZXIpO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVQb3BvdmVyKTtcbiAgICBjb25zdCBjb21wb3NlZFRyaWdnZXJSZWYgPSAkYW02Z20kdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC50cmlnZ2VyUmVmKTtcbiAgICBjb25zdCB0cmlnZ2VyID0gLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kUHJpbWl0aXZlLmJ1dHRvbiwgJGFtNmdtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwiZGlhbG9nXCIsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBjb250ZXh0Lm9wZW4sXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRnZXRTdGF0ZShjb250ZXh0Lm9wZW4pXG4gICAgfSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRUcmlnZ2VyUmVmLFxuICAgICAgICBvbkNsaWNrOiAkYW02Z20kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgY29udGV4dC5vbk9wZW5Ub2dnbGUpXG4gICAgfSkpO1xuICAgIHJldHVybiBjb250ZXh0Lmhhc0N1c3RvbUFuY2hvciA/IHRyaWdnZXIgOiAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRhbTZnbSRBbmNob3IsICRhbTZnbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwb3BwZXJTY29wZSksIHRyaWdnZXIpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDdkYWNiMDVkMjY0NjZjMywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkVFJJR0dFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcG92ZXJQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBPUlRBTF9OQU1FID0gJ1BvcG92ZXJQb3J0YWwnO1xuY29uc3QgWyRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3J0YWxQcm92aWRlciwgJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcnRhbENvbnRleHRdID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJGNyZWF0ZVBvcG92ZXJDb250ZXh0KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQT1JUQUxfTkFNRSwge1xuICAgIGZvcmNlTW91bnQ6IHVuZGVmaW5lZFxufSk7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZGQ2NzlmZmI0MzYyZDJkNCA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BvdmVyOiBfX3Njb3BlUG9wb3ZlciAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBjb250YWluZXI6IGNvbnRhaW5lciAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9wb3ZlckNvbnRleHQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBPUlRBTF9OQU1FLCBfX3Njb3BlUG9wb3Zlcik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcnRhbFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUG9wb3ZlcixcbiAgICAgICAgZm9yY2VNb3VudDogZm9yY2VNb3VudFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGFtNmdtJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kUG9ydGFsLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyXG4gICAgfSwgY2hpbGRyZW4pKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRkZDY3OWZmYjQzNjJkMmQ0LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BvdmVyQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkQ09OVEVOVF9OQU1FID0gJ1BvcG92ZXJDb250ZW50JztcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRkN2UxZjQyMGIyNTU0OWZmID0gLyojX19QVVJFX18qLyAkYW02Z20kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBwb3J0YWxDb250ZXh0ID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcnRhbENvbnRleHQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVBvcG92ZXIpO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BvdmVyQ29udGV4dCgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlUG9wb3Zlcik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGFtNmdtJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgY29udGV4dC5tb2RhbCA/IC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcG92ZXJDb250ZW50TW9kYWwsICRhbTZnbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpIDogLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUG9wb3ZlckNvbnRlbnROb25Nb2RhbCwgJGFtNmdtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGQ3ZTFmNDIwYjI1NTQ5ZmYsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNiNWNjMjcwYjUwYzZmY2QkdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3BvdmVyQ29udGVudE1vZGFsID0gLyojX19QVVJFX18qLyAkYW02Z20kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcG92ZXJDb250ZXh0KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVQb3BvdmVyKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJGFtNmdtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkYW02Z20kdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGVudFJlZik7XG4gICAgY29uc3QgaXNSaWdodENsaWNrT3V0c2lkZVJlZiA9ICRhbTZnbSR1c2VSZWYoZmFsc2UpOyAvLyBhcmlhLWhpZGUgZXZlcnl0aGluZyBleGNlcHQgdGhlIGNvbnRlbnQgKGJldHRlciBzdXBwb3J0ZWQgZXF1aXZhbGVudCB0byBzZXR0aW5nIGFyaWEtbW9kYWwpXG4gICAgJGFtNmdtJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBjb250ZW50ID0gY29udGVudFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoY29udGVudCkgcmV0dXJuICRhbTZnbSRoaWRlT3RoZXJzKGNvbnRlbnQpO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kUmVtb3ZlU2Nyb2xsLCB7XG4gICAgICAgIGFzOiAkYW02Z20kU2xvdCxcbiAgICAgICAgYWxsb3dQaW5jaFpvb206IHRydWVcbiAgICB9LCAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3BvdmVyQ29udGVudEltcGwsICRhbTZnbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMgLy8gd2UgbWFrZSBzdXJlIHdlJ3JlIG5vdCB0cmFwcGluZyBvbmNlIGl0J3MgYmVlbiBjbG9zZWRcbiAgICAgICAgLFxuICAgICAgICB0cmFwRm9jdXM6IGNvbnRleHQub3BlbixcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiB0cnVlLFxuICAgICAgICBvbkNsb3NlQXV0b0ZvY3VzOiAkYW02Z20kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbG9zZUF1dG9Gb2N1cywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9jb250ZXh0JHRyaWdnZXJSZWYkYztcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoIWlzUmlnaHRDbGlja091dHNpZGVSZWYuY3VycmVudCkgKF9jb250ZXh0JHRyaWdnZXJSZWYkYyA9IGNvbnRleHQudHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMgPT09IHZvaWQgMCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMuZm9jdXMoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiAkYW02Z20kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Qb2ludGVyRG93bk91dHNpZGUsIChldmVudCk9PntcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRXZlbnQgPSBldmVudC5kZXRhaWwub3JpZ2luYWxFdmVudDtcbiAgICAgICAgICAgIGNvbnN0IGN0cmxMZWZ0Q2xpY2sgPSBvcmlnaW5hbEV2ZW50LmJ1dHRvbiA9PT0gMCAmJiBvcmlnaW5hbEV2ZW50LmN0cmxLZXkgPT09IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpc1JpZ2h0Q2xpY2sgPSBvcmlnaW5hbEV2ZW50LmJ1dHRvbiA9PT0gMiB8fCBjdHJsTGVmdENsaWNrO1xuICAgICAgICAgICAgaXNSaWdodENsaWNrT3V0c2lkZVJlZi5jdXJyZW50ID0gaXNSaWdodENsaWNrO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQ6IGZhbHNlXG4gICAgICAgIH0pIC8vIFdoZW4gZm9jdXMgaXMgdHJhcHBlZCwgYSBgZm9jdXNvdXRgIGV2ZW50IG1heSBzdGlsbCBoYXBwZW4uXG4gICAgICAgICxcbiAgICAgICAgb25Gb2N1c091dHNpZGU6ICRhbTZnbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkZvY3VzT3V0c2lkZSwgKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAsIHtcbiAgICAgICAgICAgIGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZDogZmFsc2VcbiAgICAgICAgfSlcbiAgICB9KSkpO1xufSk7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUG9wb3ZlckNvbnRlbnROb25Nb2RhbCA9IC8qI19fUFVSRV9fKi8gJGFtNmdtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGV4dCA9ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BvdmVyQ29udGV4dCgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlUG9wb3Zlcik7XG4gICAgY29uc3QgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYgPSAkYW02Z20kdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYgPSAkYW02Z20kdXNlUmVmKGZhbHNlKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUG9wb3ZlckNvbnRlbnRJbXBsLCAkYW02Z20kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICB0cmFwRm9jdXM6IGZhbHNlLFxuICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IGZhbHNlLFxuICAgICAgICBvbkNsb3NlQXV0b0ZvY3VzOiAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jO1xuICAgICAgICAgICAgKF9wcm9wcyRvbkNsb3NlQXV0b0ZvYyA9IHByb3BzLm9uQ2xvc2VBdXRvRm9jdXMpID09PSBudWxsIHx8IF9wcm9wcyRvbkNsb3NlQXV0b0ZvYyA9PT0gdm9pZCAwIHx8IF9wcm9wcyRvbkNsb3NlQXV0b0ZvYy5jYWxsKHByb3BzLCBldmVudCk7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2NvbnRleHQkdHJpZ2dlclJlZiRjMjtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0ludGVyYWN0ZWRPdXRzaWRlUmVmLmN1cnJlbnQpIChfY29udGV4dCR0cmlnZ2VyUmVmJGMyID0gY29udGV4dC50cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jb250ZXh0JHRyaWdnZXJSZWYkYzIgPT09IHZvaWQgMCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMyLmZvY3VzKCk7IC8vIEFsd2F5cyBwcmV2ZW50IGF1dG8gZm9jdXMgYmVjYXVzZSB3ZSBlaXRoZXIgZm9jdXMgbWFudWFsbHkgb3Igd2FudCB1c2VyIGFnZW50IGZvY3VzXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhc0ludGVyYWN0ZWRPdXRzaWRlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGhhc1BvaW50ZXJEb3duT3V0c2lkZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlOiAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX3Byb3BzJG9uSW50ZXJhY3RPdXRzLCBfY29udGV4dCR0cmlnZ2VyUmVmJGMzO1xuICAgICAgICAgICAgKF9wcm9wcyRvbkludGVyYWN0T3V0cyA9IHByb3BzLm9uSW50ZXJhY3RPdXRzaWRlKSA9PT0gbnVsbCB8fCBfcHJvcHMkb25JbnRlcmFjdE91dHMgPT09IHZvaWQgMCB8fCBfcHJvcHMkb25JbnRlcmFjdE91dHMuY2FsbChwcm9wcywgZXZlbnQpO1xuICAgICAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRldGFpbC5vcmlnaW5hbEV2ZW50LnR5cGUgPT09ICdwb2ludGVyZG93bicpIGhhc1BvaW50ZXJEb3duT3V0c2lkZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gLy8gUHJldmVudCBkaXNtaXNzaW5nIHdoZW4gY2xpY2tpbmcgdGhlIHRyaWdnZXIuXG4gICAgICAgICAgICAvLyBBcyB0aGUgdHJpZ2dlciBpcyBhbHJlYWR5IHNldHVwIHRvIGNsb3NlLCB3aXRob3V0IGRvaW5nIHNvIHdvdWxkXG4gICAgICAgICAgICAvLyBjYXVzZSBpdCB0byBjbG9zZSBhbmQgaW1tZWRpYXRlbHkgb3Blbi5cbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldElzVHJpZ2dlciA9IChfY29udGV4dCR0cmlnZ2VyUmVmJGMzID0gY29udGV4dC50cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jb250ZXh0JHRyaWdnZXJSZWYkYzMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZXh0JHRyaWdnZXJSZWYkYzMuY29udGFpbnModGFyZ2V0KTtcbiAgICAgICAgICAgIGlmICh0YXJnZXRJc1RyaWdnZXIpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIE9uIFNhZmFyaSBpZiB0aGUgdHJpZ2dlciBpcyBpbnNpZGUgYSBjb250YWluZXIgd2l0aCB0YWJJbmRleD17MH0sIHdoZW4gY2xpY2tlZFxuICAgICAgICAgICAgLy8gd2Ugd2lsbCBnZXQgdGhlIHBvaW50ZXIgZG93biBvdXRzaWRlIGV2ZW50IG9uIHRoZSB0cmlnZ2VyLCBidXQgdGhlbiBhIHN1YnNlcXVlbnRcbiAgICAgICAgICAgIC8vIGZvY3VzIG91dHNpZGUgZXZlbnQgb24gdGhlIGNvbnRhaW5lciwgd2UgaWdub3JlIGFueSBmb2N1cyBvdXRzaWRlIGV2ZW50IHdoZW4gd2UndmVcbiAgICAgICAgICAgIC8vIGFscmVhZHkgaGFkIGEgcG9pbnRlciBkb3duIG91dHNpZGUgZXZlbnQuXG4gICAgICAgICAgICBpZiAoZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQudHlwZSA9PT0gJ2ZvY3VzaW4nICYmIGhhc1BvaW50ZXJEb3duT3V0c2lkZVJlZi5jdXJyZW50KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3BvdmVyQ29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICRhbTZnbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVBvcG92ZXI6IF9fc2NvcGVQb3BvdmVyICwgdHJhcEZvY3VzOiB0cmFwRm9jdXMgLCBvbk9wZW5BdXRvRm9jdXM6IG9uT3BlbkF1dG9Gb2N1cyAsIG9uQ2xvc2VBdXRvRm9jdXM6IG9uQ2xvc2VBdXRvRm9jdXMgLCBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyAsIG9uRXNjYXBlS2V5RG93bjogb25Fc2NhcGVLZXlEb3duICwgb25Qb2ludGVyRG93bk91dHNpZGU6IG9uUG9pbnRlckRvd25PdXRzaWRlICwgb25Gb2N1c091dHNpZGU6IG9uRm9jdXNPdXRzaWRlICwgb25JbnRlcmFjdE91dHNpZGU6IG9uSW50ZXJhY3RPdXRzaWRlICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcG92ZXJDb250ZXh0KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVQb3BvdmVyKTtcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlUG9wb3Zlcik7IC8vIE1ha2Ugc3VyZSB0aGUgd2hvbGUgdHJlZSBoYXMgZm9jdXMgZ3VhcmRzIGFzIG91ciBgUG9wb3ZlcmAgbWF5IGJlXG4gICAgLy8gdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgRE9NIChiZWFjdXNlIG9mIHRoZSBgUG9ydGFsYClcbiAgICAkYW02Z20kdXNlRm9jdXNHdWFyZHMoKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kRm9jdXNTY29wZSwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlLFxuICAgICAgICBsb29wOiB0cnVlLFxuICAgICAgICB0cmFwcGVkOiB0cmFwRm9jdXMsXG4gICAgICAgIG9uTW91bnRBdXRvRm9jdXM6IG9uT3BlbkF1dG9Gb2N1cyxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzOiBvbkNsb3NlQXV0b0ZvY3VzXG4gICAgfSwgLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kRGlzbWlzc2FibGVMYXllciwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlLFxuICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxcbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGU6IG9uSW50ZXJhY3RPdXRzaWRlLFxuICAgICAgICBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93bixcbiAgICAgICAgb25Qb2ludGVyRG93bk91dHNpZGU6IG9uUG9pbnRlckRvd25PdXRzaWRlLFxuICAgICAgICBvbkZvY3VzT3V0c2lkZTogb25Gb2N1c091dHNpZGUsXG4gICAgICAgIG9uRGlzbWlzczogKCk9PmNvbnRleHQub25PcGVuQ2hhbmdlKGZhbHNlKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGFtNmdtJENvbnRlbnQsICRhbTZnbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKSxcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgaWQ6IGNvbnRleHQuY29udGVudElkXG4gICAgfSwgcG9wcGVyU2NvcGUsIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnRQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICctLXJhZGl4LXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luJzogJ3ZhcigtLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKScsXG4gICAgICAgICAgICAnLS1yYWRpeC1wb3BvdmVyLWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXBvcG92ZXItY29udGVudC1hdmFpbGFibGUtaGVpZ2h0JzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KScsXG4gICAgICAgICAgICAnLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci13aWR0aCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYW5jaG9yLWhlaWdodCknXG4gICAgICAgIH1cbiAgICB9KSkpKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wb3ZlckNsb3NlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRDTE9TRV9OQU1FID0gJ1BvcG92ZXJDbG9zZSc7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZDZhYzQzZWJhYTQwZDUzZSA9IC8qI19fUFVSRV9fKi8gJGFtNmdtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wb3ZlcjogX19zY29wZVBvcG92ZXIgLCAuLi5jbG9zZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcG92ZXJDb250ZXh0KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRDTE9TRV9OQU1FLCBfX3Njb3BlUG9wb3Zlcik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGFtNmdtJFByaW1pdGl2ZS5idXR0b24sICRhbTZnbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCJcbiAgICB9LCBjbG9zZVByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBvbkNsaWNrOiAkYW02Z20kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgKCk9PmNvbnRleHQub25PcGVuQ2hhbmdlKGZhbHNlKVxuICAgICAgICApXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGQ2YWM0M2ViYWE0MGQ1M2UsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNiNWNjMjcwYjUwYzZmY2QkdmFyJENMT1NFX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wb3ZlckFycm93XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRBUlJPV19OQU1FID0gJ1BvcG92ZXJBcnJvdyc7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkMzE1Mjg0MTExNWUwNjFiMiA9IC8qI19fUFVSRV9fKi8gJGFtNmdtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wb3ZlcjogX19zY29wZVBvcG92ZXIgLCAuLi5hcnJvd1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlUG9wb3Zlcik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGFtNmdtJEFycm93LCAkYW02Z20kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcHBlclNjb3BlLCBhcnJvd1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDMxNTI4NDExMTVlMDYxYjIsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNiNWNjMjcwYjUwYzZmY2QkdmFyJEFSUk9XX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkZ2V0U3RhdGUob3Blbikge1xuICAgIHJldHVybiBvcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCc7XG59XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ1YjZiMTk0MDVhODNmZjlkO1xuY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGI2ODgyNTM5NThiOGRmZTcgPSAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkOTZlNTM4MWY0MjUyMWE3OTtcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0ID0gJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDdkYWNiMDVkMjY0NjZjMztcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjID0gJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGRkNjc5ZmZiNDM2MmQyZDQ7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiA9ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRkN2UxZjQyMGIyNTU0OWZmO1xuY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGYzOWMyZDE2NWNkODYxZmUgPSAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZDZhYzQzZWJhYTQwZDUzZTtcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1ID0gJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDMxNTI4NDExMTVlMDYxYjI7XG5cblxuXG5cbmV4cG9ydCB7JGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGM4MzkzYzllNzMyODY5MzIgYXMgY3JlYXRlUG9wb3ZlclNjb3BlLCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkNWI2YjE5NDA1YTgzZmY5ZCBhcyBQb3BvdmVyLCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkOTZlNTM4MWY0MjUyMWE3OSBhcyBQb3BvdmVyQW5jaG9yLCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkN2RhY2IwNWQyNjQ2NmMzIGFzIFBvcG92ZXJUcmlnZ2VyLCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZGQ2NzlmZmI0MzYyZDJkNCBhcyBQb3BvdmVyUG9ydGFsLCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZDdlMWY0MjBiMjU1NDlmZiBhcyBQb3BvdmVyQ29udGVudCwgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGQ2YWM0M2ViYWE0MGQ1M2UgYXMgUG9wb3ZlckNsb3NlLCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkMzE1Mjg0MTExNWUwNjFiMiBhcyBQb3BvdmVyQXJyb3csICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3IGFzIEFuY2hvciwgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZjM5YzJkMTY1Y2Q4NjFmZSBhcyBDbG9zZSwgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3d9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLCJpbXBvcnQgJGswM3dJJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJGswM3dJJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJGswM3dJJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGswM3dJJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkazAzd0kkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByb2dyZXNzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FID0gJ1Byb2dyZXNzJztcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRERUZBVUxUX01BWCA9IDEwMDtcbmNvbnN0IFskNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0LCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZl0gPSAkazAzd0kkY3JlYXRlQ29udGV4dFNjb3BlKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FKTtcbmNvbnN0IFskNjc4MjRkOTgyNDUyMDhhMCR2YXIkUHJvZ3Jlc3NQcm92aWRlciwgJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJHVzZVByb2dyZXNzQ29udGV4dF0gPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0KCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FKTtcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiID0gLyojX19QVVJFX18qLyAkazAzd0kkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQcm9ncmVzczogX19zY29wZVByb2dyZXNzICwgdmFsdWU6IHZhbHVlUHJvcCAsIG1heDogbWF4UHJvcCAsIGdldFZhbHVlTGFiZWw6IGdldFZhbHVlTGFiZWwgPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwgLCAuLi5wcm9ncmVzc1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBtYXggPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihtYXhQcm9wKSA/IG1heFByb3AgOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVg7XG4gICAgY29uc3QgdmFsdWUgPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlUHJvcCwgbWF4KSA/IHZhbHVlUHJvcCA6IG51bGw7XG4gICAgY29uc3QgdmFsdWVMYWJlbCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkgPyBnZXRWYWx1ZUxhYmVsKHZhbHVlLCBtYXgpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQcm9ncmVzc1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUHJvZ3Jlc3MsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgbWF4OiBtYXhcbiAgICB9LCAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCRrMDN3SSRQcmltaXRpdmUuZGl2LCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogbWF4LFxuICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogMCxcbiAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLXZhbHVldGV4dFwiOiB2YWx1ZUxhYmVsLFxuICAgICAgICByb2xlOiBcInByb2dyZXNzYmFyXCIsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0UHJvZ3Jlc3NTdGF0ZSh2YWx1ZSwgbWF4KSxcbiAgICAgICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLW1heFwiOiBtYXhcbiAgICB9LCBwcm9ncmVzc1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FXG59KTtcbiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiLnByb3BUeXBlcyA9IHtcbiAgICBtYXggKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBjb25zdCBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IFN0cmluZyhwcm9wVmFsdWUpO1xuICAgICAgICBpZiAocHJvcFZhbHVlICYmICEkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihwcm9wVmFsdWUpKSByZXR1cm4gbmV3IEVycm9yKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3Ioc3RyVmFsLCBjb21wb25lbnROYW1lKSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgdmFsdWUgKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBjb25zdCB2YWx1ZVByb3AgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IFN0cmluZyh2YWx1ZVByb3ApO1xuICAgICAgICBjb25zdCBtYXggPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihwcm9wcy5tYXgpID8gcHJvcHMubWF4IDogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYO1xuICAgICAgICBpZiAodmFsdWVQcm9wICE9IG51bGwgJiYgISQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkVmFsdWVOdW1iZXIodmFsdWVQcm9wLCBtYXgpKSByZXR1cm4gbmV3IEVycm9yKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkVmFsdWVFcnJvcihzdHJWYWwsIGNvbXBvbmVudE5hbWUpKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByb2dyZXNzSW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRJTkRJQ0FUT1JfTkFNRSA9ICdQcm9ncmVzc0luZGljYXRvcic7XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCA9IC8qI19fUFVSRV9fKi8gJGswM3dJJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9jb250ZXh0JHZhbHVlO1xuICAgIGNvbnN0IHsgX19zY29wZVByb2dyZXNzOiBfX3Njb3BlUHJvZ3Jlc3MgLCAuLi5pbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciR1c2VQcm9ncmVzc0NvbnRleHQoJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJElORElDQVRPUl9OQU1FLCBfX3Njb3BlUHJvZ3Jlc3MpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCRrMDN3SSRQcmltaXRpdmUuZGl2LCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldFByb2dyZXNzU3RhdGUoY29udGV4dC52YWx1ZSwgY29udGV4dC5tYXgpLFxuICAgICAgICBcImRhdGEtdmFsdWVcIjogKF9jb250ZXh0JHZhbHVlID0gY29udGV4dC52YWx1ZSkgIT09IG51bGwgJiYgX2NvbnRleHQkdmFsdWUgIT09IHZvaWQgMCA/IF9jb250ZXh0JHZhbHVlIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtbWF4XCI6IGNvbnRleHQubWF4XG4gICAgfSwgaW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkSU5ESUNBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyBmdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwodmFsdWUsIG1heCkge1xuICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKHZhbHVlIC8gbWF4ICogMTAwKX0lYDtcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRQcm9ncmVzc1N0YXRlKHZhbHVlLCBtYXhWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJ2luZGV0ZXJtaW5hdGUnIDogdmFsdWUgPT09IG1heFZhbHVlID8gJ2NvbXBsZXRlJyA6ICdsb2FkaW5nJztcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuZnVuY3Rpb24gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRNYXhOdW1iZXIobWF4KSB7XG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgcmV0dXJuICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcihtYXgpICYmICFpc05hTihtYXgpICYmIG1heCA+IDA7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlLCBtYXgpIHtcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICByZXR1cm4gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzTnVtYmVyKHZhbHVlKSAmJiAhaXNOYU4odmFsdWUpICYmIHZhbHVlIDw9IG1heCAmJiB2YWx1ZSA+PSAwO1xufSAvLyBTcGxpdCB0aGlzIG91dCBmb3IgY2xlYXJlciByZWFkYWJpbGl0eSBvZiB0aGUgZXJyb3IgbWVzc2FnZS5cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3IocHJvcFZhbHVlLCBjb21wb25lbnROYW1lKSB7XG4gICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgbWF4XFxgIG9mIHZhbHVlIFxcYCR7cHJvcFZhbHVlfVxcYCBzdXBwbGllZCB0byBcXGAke2NvbXBvbmVudE5hbWV9XFxgLiBPbmx5IG51bWJlcnMgZ3JlYXRlciB0aGFuIDAgYXJlIHZhbGlkIG1heCB2YWx1ZXMuIERlZmF1bHRpbmcgdG8gXFxgJHskNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVh9XFxgLmA7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0SW52YWxpZFZhbHVlRXJyb3IocHJvcFZhbHVlLCBjb21wb25lbnROYW1lKSB7XG4gICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgdmFsdWVcXGAgb2YgdmFsdWUgXFxgJHtwcm9wVmFsdWV9XFxgIHN1cHBsaWVkIHRvIFxcYCR7Y29tcG9uZW50TmFtZX1cXGAuIFRoZSBcXGB2YWx1ZVxcYCBwcm9wIG11c3QgYmU6XG4gIC0gYSBwb3NpdGl2ZSBudW1iZXJcbiAgLSBsZXNzIHRoYW4gdGhlIHZhbHVlIHBhc3NlZCB0byBcXGBtYXhcXGAgKG9yICR7JDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYfSBpZiBubyBcXGBtYXhcXGAgcHJvcCBpcyBzZXQpXG4gIC0gXFxgbnVsbFxcYCBpZiB0aGUgcHJvZ3Jlc3MgaXMgaW5kZXRlcm1pbmF0ZS5cblxuRGVmYXVsdGluZyB0byBcXGBudWxsXFxgLmA7XG59XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiO1xuY29uc3QgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAgPSAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZDtcblxuXG5cblxuZXhwb3J0IHskNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZiBhcyBjcmVhdGVQcm9ncmVzc1Njb3BlLCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYjI1YTMwNGVjN2Q3NDZiYiBhcyBQcm9ncmVzcywgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JDJiNzc2ZjdlN2VlNjBkYmQgYXMgUHJvZ3Jlc3NJbmRpY2F0b3IsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRhZGI1ODQ3MzdkNzEyYjcwIGFzIEluZGljYXRvcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDZ2WWhVJHJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJDZ2WWhVJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkNnZZaFUkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtTbG90IGFzICQ2dlloVSRTbG90fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcblxuXG5cblxuXG4vLyBXZSBoYXZlIHJlc29ydGVkIHRvIHJldHVybmluZyBzbG90cyBkaXJlY3RseSByYXRoZXIgdGhhbiBleHBvc2luZyBwcmltaXRpdmVzIHRoYXQgY2FuIHRoZW5cbi8vIGJlIHNsb3R0ZWQgbGlrZSBgPENvbGxlY3Rpb25JdGVtIGFzPXtTbG90fT7igKY8L0NvbGxlY3Rpb25JdGVtPmAuXG4vLyBUaGlzIGlzIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgaXNzdWVzIHdpdGggZ2VuZXJpYyB0eXBlcyB0aGF0IGNhbm5vdCBiZSBzdGF0aWNhbGx5IGFuYWx5c2VkXG4vLyBkdWUgdG8gY3JlYXRpbmcgdGhlbSBkeW5hbWljYWxseSB2aWEgY3JlYXRlQ29sbGVjdGlvbi5cbmZ1bmN0aW9uICRlMDJhN2Q5Y2IxZGMxMjhjJGV4cG9ydCRjNzQxMjVhOGUzYWY2YmIyKG5hbWUpIHtcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBDb2xsZWN0aW9uUHJvdmlkZXJcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgUFJPVklERVJfTkFNRSA9IG5hbWUgKyAnQ29sbGVjdGlvblByb3ZpZGVyJztcbiAgICBjb25zdCBbY3JlYXRlQ29sbGVjdGlvbkNvbnRleHQsIGNyZWF0ZUNvbGxlY3Rpb25TY29wZV0gPSAkNnZZaFUkY3JlYXRlQ29udGV4dFNjb3BlKFBST1ZJREVSX05BTUUpO1xuICAgIGNvbnN0IFtDb2xsZWN0aW9uUHJvdmlkZXJJbXBsLCB1c2VDb2xsZWN0aW9uQ29udGV4dF0gPSBjcmVhdGVDb2xsZWN0aW9uQ29udGV4dChQUk9WSURFUl9OQU1FLCB7XG4gICAgICAgIGNvbGxlY3Rpb25SZWY6IHtcbiAgICAgICAgICAgIGN1cnJlbnQ6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgaXRlbU1hcDogbmV3IE1hcCgpXG4gICAgfSk7XG4gICAgY29uc3QgQ29sbGVjdGlvblByb3ZpZGVyID0gKHByb3BzKT0+e1xuICAgICAgICBjb25zdCB7IHNjb3BlOiBzY29wZSAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCByZWYgPSAkNnZZaFUkcmVhY3QudXNlUmVmKG51bGwpO1xuICAgICAgICBjb25zdCBpdGVtTWFwID0gJDZ2WWhVJHJlYWN0LnVzZVJlZihuZXcgTWFwKCkpLmN1cnJlbnQ7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2dlloVSRyZWFjdC5jcmVhdGVFbGVtZW50KENvbGxlY3Rpb25Qcm92aWRlckltcGwsIHtcbiAgICAgICAgICAgIHNjb3BlOiBzY29wZSxcbiAgICAgICAgICAgIGl0ZW1NYXA6IGl0ZW1NYXAsXG4gICAgICAgICAgICBjb2xsZWN0aW9uUmVmOiByZWZcbiAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH07XG4gICAgLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKENvbGxlY3Rpb25Qcm92aWRlciwge1xuICAgICAgICBkaXNwbGF5TmFtZTogUFJPVklERVJfTkFNRVxuICAgIH0pO1xuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIENvbGxlY3Rpb25TbG90XG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0IENPTExFQ1RJT05fU0xPVF9OQU1FID0gbmFtZSArICdDb2xsZWN0aW9uU2xvdCc7XG4gICAgY29uc3QgQ29sbGVjdGlvblNsb3QgPSAvKiNfX1BVUkVfXyovICQ2dlloVSRyZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgICAgICBjb25zdCB7IHNjb3BlOiBzY29wZSAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdXNlQ29sbGVjdGlvbkNvbnRleHQoQ09MTEVDVElPTl9TTE9UX05BTUUsIHNjb3BlKTtcbiAgICAgICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDZ2WWhVJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQuY29sbGVjdGlvblJlZik7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2dlloVSRyZWFjdC5jcmVhdGVFbGVtZW50KCQ2dlloVSRTbG90LCB7XG4gICAgICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgICAgICB9LCBjaGlsZHJlbik7XG4gICAgfSk7XG4gICAgLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKENvbGxlY3Rpb25TbG90LCB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiBDT0xMRUNUSU9OX1NMT1RfTkFNRVxuICAgIH0pO1xuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIENvbGxlY3Rpb25JdGVtXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0IElURU1fU0xPVF9OQU1FID0gbmFtZSArICdDb2xsZWN0aW9uSXRlbVNsb3QnO1xuICAgIGNvbnN0IElURU1fREFUQV9BVFRSID0gJ2RhdGEtcmFkaXgtY29sbGVjdGlvbi1pdGVtJztcbiAgICBjb25zdCBDb2xsZWN0aW9uSXRlbVNsb3QgPSAvKiNfX1BVUkVfXyovICQ2dlloVSRyZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgICAgICBjb25zdCB7IHNjb3BlOiBzY29wZSAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIC4uLml0ZW1EYXRhIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgcmVmID0gJDZ2WWhVJHJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAgICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDZ2WWhVJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB1c2VDb2xsZWN0aW9uQ29udGV4dChJVEVNX1NMT1RfTkFNRSwgc2NvcGUpO1xuICAgICAgICAkNnZZaFUkcmVhY3QudXNlRWZmZWN0KCgpPT57XG4gICAgICAgICAgICBjb250ZXh0Lml0ZW1NYXAuc2V0KHJlZiwge1xuICAgICAgICAgICAgICAgIHJlZjogcmVmLFxuICAgICAgICAgICAgICAgIC4uLml0ZW1EYXRhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+dm9pZCBjb250ZXh0Lml0ZW1NYXAuZGVsZXRlKHJlZilcbiAgICAgICAgICAgIDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2dlloVSRyZWFjdC5jcmVhdGVFbGVtZW50KCQ2dlloVSRTbG90LCB7XG4gICAgICAgICAgICBbSVRFTV9EQVRBX0FUVFJdOiAnJyxcbiAgICAgICAgICAgIHJlZjogY29tcG9zZWRSZWZzXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9KTtcbiAgICAvKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oQ29sbGVjdGlvbkl0ZW1TbG90LCB7XG4gICAgICAgIGRpc3BsYXlOYW1lOiBJVEVNX1NMT1RfTkFNRVxuICAgIH0pO1xuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIHVzZUNvbGxlY3Rpb25cbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gZnVuY3Rpb24gdXNlQ29sbGVjdGlvbihzY29wZSkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdXNlQ29sbGVjdGlvbkNvbnRleHQobmFtZSArICdDb2xsZWN0aW9uQ29uc3VtZXInLCBzY29wZSk7XG4gICAgICAgIGNvbnN0IGdldEl0ZW1zID0gJDZ2WWhVJHJlYWN0LnVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uTm9kZSA9IGNvbnRleHQuY29sbGVjdGlvblJlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKCFjb2xsZWN0aW9uTm9kZSkgcmV0dXJuIFtdO1xuICAgICAgICAgICAgY29uc3Qgb3JkZXJlZE5vZGVzID0gQXJyYXkuZnJvbShjb2xsZWN0aW9uTm9kZS5xdWVyeVNlbGVjdG9yQWxsKGBbJHtJVEVNX0RBVEFfQVRUUn1dYCkpO1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBBcnJheS5mcm9tKGNvbnRleHQuaXRlbU1hcC52YWx1ZXMoKSk7XG4gICAgICAgICAgICBjb25zdCBvcmRlcmVkSXRlbXMgPSBpdGVtcy5zb3J0KChhLCBiKT0+b3JkZXJlZE5vZGVzLmluZGV4T2YoYS5yZWYuY3VycmVudCkgLSBvcmRlcmVkTm9kZXMuaW5kZXhPZihiLnJlZi5jdXJyZW50KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBvcmRlcmVkSXRlbXM7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIGNvbnRleHQuY29sbGVjdGlvblJlZixcbiAgICAgICAgICAgIGNvbnRleHQuaXRlbU1hcFxuICAgICAgICBdKTtcbiAgICAgICAgcmV0dXJuIGdldEl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgICBQcm92aWRlcjogQ29sbGVjdGlvblByb3ZpZGVyLFxuICAgICAgICAgICAgU2xvdDogQ29sbGVjdGlvblNsb3QsXG4gICAgICAgICAgICBJdGVtU2xvdDogQ29sbGVjdGlvbkl0ZW1TbG90XG4gICAgICAgIH0sXG4gICAgICAgIHVzZUNvbGxlY3Rpb24sXG4gICAgICAgIGNyZWF0ZUNvbGxlY3Rpb25TY29wZVxuICAgIF07XG59XG5cblxuXG5cbmV4cG9ydCB7JGUwMmE3ZDljYjFkYzEyOGMkZXhwb3J0JGM3NDEyNWE4ZTNhZjZiYjIgYXMgY3JlYXRlQ29sbGVjdGlvbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge2NyZWF0ZUNvbnRleHQgYXMgJDdHamNkJGNyZWF0ZUNvbnRleHQsIGNyZWF0ZUVsZW1lbnQgYXMgJDdHamNkJGNyZWF0ZUVsZW1lbnQsIHVzZUNvbnRleHQgYXMgJDdHamNkJHVzZUNvbnRleHR9IGZyb20gXCJyZWFjdFwiO1xuXG5cbmNvbnN0ICRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0ID0gLyojX19QVVJFX18qLyAkN0dqY2QkY3JlYXRlQ29udGV4dCh1bmRlZmluZWQpO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlyZWN0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRjNzYwYzA5ZmRkNTU4MzUxID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgZGlyOiBkaXIgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkN0dqY2QkY3JlYXRlRWxlbWVudCgkZjYzMTY2M2RiMzI5NGFjZSR2YXIkRGlyZWN0aW9uQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogZGlyXG4gICAgfSwgY2hpbGRyZW4pO1xufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gZnVuY3Rpb24gJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JGIzOTEyNmQ1MWQ5NGU2ZjMobG9jYWxEaXIpIHtcbiAgICBjb25zdCBnbG9iYWxEaXIgPSAkN0dqY2QkdXNlQ29udGV4dCgkZjYzMTY2M2RiMzI5NGFjZSR2YXIkRGlyZWN0aW9uQ29udGV4dCk7XG4gICAgcmV0dXJuIGxvY2FsRGlyIHx8IGdsb2JhbERpciB8fCAnbHRyJztcbn1cbmNvbnN0ICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCQyODgxNDk5ZTM3Yjc1YjlhID0gJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JGM3NjBjMDlmZGQ1NTgzNTE7XG5cblxuXG5cbmV4cG9ydCB7JGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JGIzOTEyNmQ1MWQ5NGU2ZjMgYXMgdXNlRGlyZWN0aW9uLCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkMjg4MTQ5OWUzN2I3NWI5YSBhcyBQcm92aWRlciwgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JGM3NjBjMDlmZGQ1NTgzNTEgYXMgRGlyZWN0aW9uUHJvdmlkZXJ9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ5OEl5ZSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ5OEl5ZSRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICQ5OEl5ZSRjcmVhdGVFbGVtZW50LCB1c2VSZWYgYXMgJDk4SXllJHVzZVJlZiwgdXNlU3RhdGUgYXMgJDk4SXllJHVzZVN0YXRlLCB1c2VFZmZlY3QgYXMgJDk4SXllJHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgYXMgJDk4SXllJHVzZUNhbGxiYWNrfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtjcmVhdGVDb2xsZWN0aW9uIGFzICQ5OEl5ZSRjcmVhdGVDb2xsZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb25cIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ5OEl5ZSR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkOThJeWUkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlSWQgYXMgJDk4SXllJHVzZUlkfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWlkXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkOThJeWUkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkOThJeWUkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkOThJeWUkdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHt1c2VEaXJlY3Rpb24gYXMgJDk4SXllJHVzZURpcmVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXJlY3Rpb25cIjtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRFTlRSWV9GT0NVUyA9ICdyb3ZpbmdGb2N1c0dyb3VwLm9uRW50cnlGb2N1cyc7XG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkRVZFTlRfT1BUSU9OUyA9IHtcbiAgICBidWJibGVzOiBmYWxzZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlXG59O1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUm92aW5nRm9jdXNHcm91cFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRSA9ICdSb3ZpbmdGb2N1c0dyb3VwJztcbmNvbnN0IFskZDdiZGZiOWViMGZkZjMxMSR2YXIkQ29sbGVjdGlvbiwgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZUNvbGxlY3Rpb24sICRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGVdID0gJDk4SXllJGNyZWF0ZUNvbGxlY3Rpb24oJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUUpO1xuY29uc3QgWyRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dCwgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGM3MTA5NDg5NTUxYTRmNF0gPSAkOThJeWUkY3JlYXRlQ29udGV4dFNjb3BlKCRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FLCBbXG4gICAgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZVxuXSk7XG5jb25zdCBbJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzUHJvdmlkZXIsICRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VSb3ZpbmdGb2N1c0NvbnRleHRdID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBDb250ZXh0KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FKTtcbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ4Njk5ZjdjOGFmMTQ4MzM4ID0gLyojX19QVVJFX18qLyAkOThJeWUkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkQ29sbGVjdGlvbi5Qcm92aWRlciwge1xuICAgICAgICBzY29wZTogcHJvcHMuX19zY29wZVJvdmluZ0ZvY3VzR3JvdXBcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRDb2xsZWN0aW9uLlNsb3QsIHtcbiAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwXG4gICAgfSwgLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNHcm91cEltcGwsICQ5OEl5ZSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ4Njk5ZjdjOGFmMTQ4MzM4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzR3JvdXBJbXBsID0gLyojX19QVVJFX18qLyAkOThJeWUkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwOiBfX3Njb3BlUm92aW5nRm9jdXNHcm91cCAsIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbiAsIGxvb3A6IGxvb3AgPSBmYWxzZSAsIGRpcjogZGlyICwgY3VycmVudFRhYlN0b3BJZDogY3VycmVudFRhYlN0b3BJZFByb3AgLCBkZWZhdWx0Q3VycmVudFRhYlN0b3BJZDogZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQgLCBvbkN1cnJlbnRUYWJTdG9wSWRDaGFuZ2U6IG9uQ3VycmVudFRhYlN0b3BJZENoYW5nZSAsIG9uRW50cnlGb2N1czogb25FbnRyeUZvY3VzICwgLi4uZ3JvdXBQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcmVmID0gJDk4SXllJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOThJeWUkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSAkOThJeWUkdXNlRGlyZWN0aW9uKGRpcik7XG4gICAgY29uc3QgW2N1cnJlbnRUYWJTdG9wSWQgPSBudWxsLCBzZXRDdXJyZW50VGFiU3RvcElkXSA9ICQ5OEl5ZSR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IGN1cnJlbnRUYWJTdG9wSWRQcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQsXG4gICAgICAgIG9uQ2hhbmdlOiBvbkN1cnJlbnRUYWJTdG9wSWRDaGFuZ2VcbiAgICB9KTtcbiAgICBjb25zdCBbaXNUYWJiaW5nQmFja091dCwgc2V0SXNUYWJiaW5nQmFja091dF0gPSAkOThJeWUkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGhhbmRsZUVudHJ5Rm9jdXMgPSAkOThJeWUkdXNlQ2FsbGJhY2tSZWYob25FbnRyeUZvY3VzKTtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwKTtcbiAgICBjb25zdCBpc0NsaWNrRm9jdXNSZWYgPSAkOThJeWUkdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBbZm9jdXNhYmxlSXRlbXNDb3VudCwgc2V0Rm9jdXNhYmxlSXRlbXNDb3VudF0gPSAkOThJeWUkdXNlU3RhdGUoMCk7XG4gICAgJDk4SXllJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBub2RlID0gcmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVOVFJZX0ZPQ1VTLCBoYW5kbGVFbnRyeUZvY3VzKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+bm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCRkN2JkZmI5ZWIwZmRmMzExJHZhciRFTlRSWV9GT0NVUywgaGFuZGxlRW50cnlGb2N1cylcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgaGFuZGxlRW50cnlGb2N1c1xuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUm92aW5nRm9jdXNHcm91cCxcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uLFxuICAgICAgICBkaXI6IGRpcmVjdGlvbixcbiAgICAgICAgbG9vcDogbG9vcCxcbiAgICAgICAgY3VycmVudFRhYlN0b3BJZDogY3VycmVudFRhYlN0b3BJZCxcbiAgICAgICAgb25JdGVtRm9jdXM6ICQ5OEl5ZSR1c2VDYWxsYmFjaygodGFiU3RvcElkKT0+c2V0Q3VycmVudFRhYlN0b3BJZCh0YWJTdG9wSWQpXG4gICAgICAgICwgW1xuICAgICAgICAgICAgc2V0Q3VycmVudFRhYlN0b3BJZFxuICAgICAgICBdKSxcbiAgICAgICAgb25JdGVtU2hpZnRUYWI6ICQ5OEl5ZSR1c2VDYWxsYmFjaygoKT0+c2V0SXNUYWJiaW5nQmFja091dCh0cnVlKVxuICAgICAgICAsIFtdKSxcbiAgICAgICAgb25Gb2N1c2FibGVJdGVtQWRkOiAkOThJeWUkdXNlQ2FsbGJhY2soKCk9PnNldEZvY3VzYWJsZUl0ZW1zQ291bnQoKHByZXZDb3VudCk9PnByZXZDb3VudCArIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgLCBbXSksXG4gICAgICAgIG9uRm9jdXNhYmxlSXRlbVJlbW92ZTogJDk4SXllJHVzZUNhbGxiYWNrKCgpPT5zZXRGb2N1c2FibGVJdGVtc0NvdW50KChwcmV2Q291bnQpPT5wcmV2Q291bnQgLSAxXG4gICAgICAgICAgICApXG4gICAgICAgICwgW10pXG4gICAgfSwgLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkOThJeWUkUHJpbWl0aXZlLmRpdiwgJDk4SXllJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdGFiSW5kZXg6IGlzVGFiYmluZ0JhY2tPdXQgfHwgZm9jdXNhYmxlSXRlbXNDb3VudCA9PT0gMCA/IC0xIDogMCxcbiAgICAgICAgXCJkYXRhLW9yaWVudGF0aW9uXCI6IG9yaWVudGF0aW9uXG4gICAgfSwgZ3JvdXBQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlXG4gICAgICAgIH0sXG4gICAgICAgIG9uTW91c2VEb3duOiAkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Nb3VzZURvd24sICgpPT57XG4gICAgICAgICAgICBpc0NsaWNrRm9jdXNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gV2Ugbm9ybWFsbHkgd291bGRuJ3QgbmVlZCB0aGlzIGNoZWNrLCBiZWNhdXNlIHdlIGFscmVhZHkgY2hlY2tcbiAgICAgICAgICAgIC8vIHRoYXQgdGhlIGZvY3VzIGlzIG9uIHRoZSBjdXJyZW50IHRhcmdldCBhbmQgbm90IGJ1YmJsaW5nIHRvIGl0LlxuICAgICAgICAgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIFNhZmFyaSBkb2Vzbid0IGZvY3VzIGJ1dHRvbnMgd2hlbiBjbGlja2VkLCBhbmRcbiAgICAgICAgICAgIC8vIGluc3RlYWQsIHRoZSB3cmFwcGVyIHdpbGwgZ2V0IGZvY3VzZWQgYW5kIG5vdCB0aHJvdWdoIGEgYnViYmxpbmcgZXZlbnQuXG4gICAgICAgICAgICBjb25zdCBpc0tleWJvYXJkRm9jdXMgPSAhaXNDbGlja0ZvY3VzUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmIGlzS2V5Ym9hcmRGb2N1cyAmJiAhaXNUYWJiaW5nQmFja091dCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5Rm9jdXNFdmVudCA9IG5ldyBDdXN0b21FdmVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMsICRkN2JkZmI5ZWIwZmRmMzExJHZhciRFVkVOVF9PUFRJT05TKTtcbiAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmRpc3BhdGNoRXZlbnQoZW50cnlGb2N1c0V2ZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoIWVudHJ5Rm9jdXNFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pPT5pdGVtLmZvY3VzYWJsZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gaXRlbXMuZmluZCgoaXRlbSk9Pml0ZW0uYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gaXRlbXMuZmluZCgoaXRlbSk9Pml0ZW0uaWQgPT09IGN1cnJlbnRUYWJTdG9wSWRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlSXRlbXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtc1xuICAgICAgICAgICAgICAgICAgICBdLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlTm9kZXMgPSBjYW5kaWRhdGVJdGVtcy5tYXAoKGl0ZW0pPT5pdGVtLnJlZi5jdXJyZW50XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICRkN2JkZmI5ZWIwZmRmMzExJHZhciRmb2N1c0ZpcnN0KGNhbmRpZGF0ZU5vZGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpc0NsaWNrRm9jdXNSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgb25CbHVyOiAkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyLCAoKT0+c2V0SXNUYWJiaW5nQmFja091dChmYWxzZSlcbiAgICAgICAgKVxuICAgIH0pKSk7XG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJvdmluZ0ZvY3VzR3JvdXBJdGVtXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRJVEVNX05BTUUgPSAnUm92aW5nRm9jdXNHcm91cEl0ZW0nO1xuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NCA9IC8qI19fUFVSRV9fKi8gJDk4SXllJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUm92aW5nRm9jdXNHcm91cDogX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAgLCBmb2N1c2FibGU6IGZvY3VzYWJsZSA9IHRydWUgLCBhY3RpdmU6IGFjdGl2ZSA9IGZhbHNlICwgdGFiU3RvcElkOiB0YWJTdG9wSWQgLCAuLi5pdGVtUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGF1dG9JZCA9ICQ5OEl5ZSR1c2VJZCgpO1xuICAgIGNvbnN0IGlkID0gdGFiU3RvcElkIHx8IGF1dG9JZDtcbiAgICBjb25zdCBjb250ZXh0ID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZVJvdmluZ0ZvY3VzQ29udGV4dCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkSVRFTV9OQU1FLCBfX3Njb3BlUm92aW5nRm9jdXNHcm91cCk7XG4gICAgY29uc3QgaXNDdXJyZW50VGFiU3RvcCA9IGNvbnRleHQuY3VycmVudFRhYlN0b3BJZCA9PT0gaWQ7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlUm92aW5nRm9jdXNHcm91cCk7XG4gICAgY29uc3QgeyBvbkZvY3VzYWJsZUl0ZW1BZGQ6IG9uRm9jdXNhYmxlSXRlbUFkZCAsIG9uRm9jdXNhYmxlSXRlbVJlbW92ZTogb25Gb2N1c2FibGVJdGVtUmVtb3ZlICB9ID0gY29udGV4dDtcbiAgICAkOThJeWUkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChmb2N1c2FibGUpIHtcbiAgICAgICAgICAgIG9uRm9jdXNhYmxlSXRlbUFkZCgpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT5vbkZvY3VzYWJsZUl0ZW1SZW1vdmUoKVxuICAgICAgICAgICAgO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBmb2N1c2FibGUsXG4gICAgICAgIG9uRm9jdXNhYmxlSXRlbUFkZCxcbiAgICAgICAgb25Gb2N1c2FibGVJdGVtUmVtb3ZlXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24uSXRlbVNsb3QsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwLFxuICAgICAgICBpZDogaWQsXG4gICAgICAgIGZvY3VzYWJsZTogZm9jdXNhYmxlLFxuICAgICAgICBhY3RpdmU6IGFjdGl2ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJDk4SXllJFByaW1pdGl2ZS5zcGFuLCAkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0YWJJbmRleDogaXNDdXJyZW50VGFiU3RvcCA/IDAgOiAtMSxcbiAgICAgICAgXCJkYXRhLW9yaWVudGF0aW9uXCI6IGNvbnRleHQub3JpZW50YXRpb25cbiAgICB9LCBpdGVtUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uTW91c2VEb3duOiAkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Nb3VzZURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIFdlIHByZXZlbnQgZm9jdXNpbmcgbm9uLWZvY3VzYWJsZSBpdGVtcyBvbiBgbW91c2Vkb3duYC5cbiAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHRoZSBpdGVtIGhhcyB0YWJJbmRleD17LTF9LCB0aGF0IG9ubHkgbWVhbnMgdGFrZSBpdCBvdXQgb2YgdGhlIHRhYiBvcmRlci5cbiAgICAgICAgICAgIGlmICghZm9jdXNhYmxlKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBTYWZhcmkgZG9lc24ndCBmb2N1cyBhIGJ1dHRvbiB3aGVuIGNsaWNrZWQgc28gd2UgcnVuIG91ciBsb2dpYyBvbiBtb3VzZWRvd24gYWxzb1xuICAgICAgICAgICAgZWxzZSBjb250ZXh0Lm9uSXRlbUZvY3VzKGlkKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uRm9jdXM6ICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkZvY3VzLCAoKT0+Y29udGV4dC5vbkl0ZW1Gb2N1cyhpZClcbiAgICAgICAgKSxcbiAgICAgICAgb25LZXlEb3duOiAkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJyAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQub25JdGVtU2hpZnRUYWIoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0KSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBmb2N1c0ludGVudCA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRnZXRGb2N1c0ludGVudChldmVudCwgY29udGV4dC5vcmllbnRhdGlvbiwgY29udGV4dC5kaXIpO1xuICAgICAgICAgICAgaWYgKGZvY3VzSW50ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pPT5pdGVtLmZvY3VzYWJsZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbGV0IGNhbmRpZGF0ZU5vZGVzID0gaXRlbXMubWFwKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGZvY3VzSW50ZW50ID09PSAnbGFzdCcpIGNhbmRpZGF0ZU5vZGVzLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmb2N1c0ludGVudCA9PT0gJ3ByZXYnIHx8IGZvY3VzSW50ZW50ID09PSAnbmV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzSW50ZW50ID09PSAncHJldicpIGNhbmRpZGF0ZU5vZGVzLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY2FuZGlkYXRlTm9kZXMuaW5kZXhPZihldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlTm9kZXMgPSBjb250ZXh0Lmxvb3AgPyAkZDdiZGZiOWViMGZkZjMxMSR2YXIkd3JhcEFycmF5KGNhbmRpZGF0ZU5vZGVzLCBjdXJyZW50SW5kZXggKyAxKSA6IGNhbmRpZGF0ZU5vZGVzLnNsaWNlKGN1cnJlbnRJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICogSW1wZXJhdGl2ZSBmb2N1cyBkdXJpbmcga2V5ZG93biBpcyByaXNreSBzbyB3ZSBwcmV2ZW50IFJlYWN0J3MgYmF0Y2hpbmcgdXBkYXRlc1xuICAgICAgICAgKiB0byBhdm9pZCBwb3RlbnRpYWwgYnVncy4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzIwMzMyXG4gICAgICAgICAqLyBzZXRUaW1lb3V0KCgpPT4kZDdiZGZiOWViMGZkZjMxMSR2YXIkZm9jdXNGaXJzdChjYW5kaWRhdGVOb2RlcylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYWI5ZGY3YzUzZmU4NDU0LCB7XG4gICAgZGlzcGxheU5hbWU6ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRJVEVNX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAvLyBwcmV0dGllci1pZ25vcmVcbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRNQVBfS0VZX1RPX0ZPQ1VTX0lOVEVOVCA9IHtcbiAgICBBcnJvd0xlZnQ6ICdwcmV2JyxcbiAgICBBcnJvd1VwOiAncHJldicsXG4gICAgQXJyb3dSaWdodDogJ25leHQnLFxuICAgIEFycm93RG93bjogJ25leHQnLFxuICAgIFBhZ2VVcDogJ2ZpcnN0JyxcbiAgICBIb21lOiAnZmlyc3QnLFxuICAgIFBhZ2VEb3duOiAnbGFzdCcsXG4gICAgRW5kOiAnbGFzdCdcbn07XG5mdW5jdGlvbiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0RGlyZWN0aW9uQXdhcmVLZXkoa2V5LCBkaXIpIHtcbiAgICBpZiAoZGlyICE9PSAncnRsJykgcmV0dXJuIGtleTtcbiAgICByZXR1cm4ga2V5ID09PSAnQXJyb3dMZWZ0JyA/ICdBcnJvd1JpZ2h0JyA6IGtleSA9PT0gJ0Fycm93UmlnaHQnID8gJ0Fycm93TGVmdCcgOiBrZXk7XG59XG5mdW5jdGlvbiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0Rm9jdXNJbnRlbnQoZXZlbnQsIG9yaWVudGF0aW9uLCBkaXIpIHtcbiAgICBjb25zdCBrZXkgPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0RGlyZWN0aW9uQXdhcmVLZXkoZXZlbnQua2V5LCBkaXIpO1xuICAgIGlmIChvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiBbXG4gICAgICAgICdBcnJvd0xlZnQnLFxuICAgICAgICAnQXJyb3dSaWdodCdcbiAgICBdLmluY2x1ZGVzKGtleSkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKG9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgW1xuICAgICAgICAnQXJyb3dVcCcsXG4gICAgICAgICdBcnJvd0Rvd24nXG4gICAgXS5pbmNsdWRlcyhrZXkpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkTUFQX0tFWV9UT19GT0NVU19JTlRFTlRba2V5XTtcbn1cbmZ1bmN0aW9uICRkN2JkZmI5ZWIwZmRmMzExJHZhciRmb2N1c0ZpcnN0KGNhbmRpZGF0ZXMpIHtcbiAgICBjb25zdCBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcyl7XG4gICAgICAgIC8vIGlmIGZvY3VzIGlzIGFscmVhZHkgd2hlcmUgd2Ugd2FudCB0byBnbywgd2UgZG9uJ3Qgd2FudCB0byBrZWVwIGdvaW5nIHRocm91Z2ggdGhlIGNhbmRpZGF0ZXNcbiAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQpIHJldHVybjtcbiAgICAgICAgY2FuZGlkYXRlLmZvY3VzKCk7XG4gICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCkgcmV0dXJuO1xuICAgIH1cbn1cbi8qKlxuICogV3JhcHMgYW4gYXJyYXkgYXJvdW5kIGl0c2VsZiBhdCBhIGdpdmVuIHN0YXJ0IGluZGV4XG4gKiBFeGFtcGxlOiBgd3JhcEFycmF5KFsnYScsICdiJywgJ2MnLCAnZCddLCAyKSA9PT0gWydjJywgJ2QnLCAnYScsICdiJ11gXG4gKi8gZnVuY3Rpb24gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHdyYXBBcnJheShhcnJheSwgc3RhcnRJbmRleCkge1xuICAgIHJldHVybiBhcnJheS5tYXAoKF8sIGluZGV4KT0+YXJyYXlbKHN0YXJ0SW5kZXggKyBpbmRleCkgJSBhcnJheS5sZW5ndGhdXG4gICAgKTtcbn1cbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzg7XG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiA9ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRhYjlkZjdjNTNmZTg0NTQ7XG5cblxuXG5cbmV4cG9ydCB7JGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGM3MTA5NDg5NTUxYTRmNCBhcyBjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUsICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ4Njk5ZjdjOGFmMTQ4MzM4IGFzIFJvdmluZ0ZvY3VzR3JvdXAsICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRhYjlkZjdjNTNmZTg0NTQgYXMgUm92aW5nRm9jdXNHcm91cEl0ZW0sICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyIGFzIEl0ZW19O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ4V29sdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ4V29sdiRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICQ4V29sdiRjcmVhdGVFbGVtZW50LCB1c2VSZWYgYXMgJDhXb2x2JHVzZVJlZiwgdXNlRWZmZWN0IGFzICQ4V29sdiR1c2VFZmZlY3QsIHVzZVN0YXRlIGFzICQ4V29sdiR1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ4V29sdiRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ4V29sdiR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkOFdvbHYkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ4V29sdiRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge2NyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSBhcyAkOFdvbHYkY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlLCBSb290IGFzICQ4V29sdiRSb290LCBJdGVtIGFzICQ4V29sdiRJdGVtfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXJvdmluZy1mb2N1c1wiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkOFdvbHYkdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHt1c2VEaXJlY3Rpb24gYXMgJDhXb2x2JHVzZURpcmVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXJlY3Rpb25cIjtcbmltcG9ydCB7dXNlU2l6ZSBhcyAkOFdvbHYkdXNlU2l6ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2Utc2l6ZVwiO1xuaW1wb3J0IHt1c2VQcmV2aW91cyBhcyAkOFdvbHYkdXNlUHJldmlvdXN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXByZXZpb3VzXCI7XG5pbXBvcnQge1ByZXNlbmNlIGFzICQ4V29sdiRQcmVzZW5jZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmVzZW5jZVwiO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJhZGlvXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZTc3YTg5NjFiNDFiZTllJHZhciRSQURJT19OQU1FID0gJ1JhZGlvJztcbmNvbnN0IFskY2U3N2E4OTYxYjQxYmU5ZSR2YXIkY3JlYXRlUmFkaW9Db250ZXh0LCAkY2U3N2E4OTYxYjQxYmU5ZSRleHBvcnQkNjdkMjI5NjQ2MGYxYjAwMl0gPSAkOFdvbHYkY3JlYXRlQ29udGV4dFNjb3BlKCRjZTc3YTg5NjFiNDFiZTllJHZhciRSQURJT19OQU1FKTtcbmNvbnN0IFskY2U3N2E4OTYxYjQxYmU5ZSR2YXIkUmFkaW9Qcm92aWRlciwgJGNlNzdhODk2MWI0MWJlOWUkdmFyJHVzZVJhZGlvQ29udGV4dF0gPSAkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkY3JlYXRlUmFkaW9Db250ZXh0KCRjZTc3YTg5NjFiNDFiZTllJHZhciRSQURJT19OQU1FKTtcbmNvbnN0ICRjZTc3YTg5NjFiNDFiZTllJGV4cG9ydCRkN2IxMmM0MTA3YmUwZDYxID0gLyojX19QVVJFX18qLyAkOFdvbHYkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVSYWRpbzogX19zY29wZVJhZGlvICwgbmFtZTogbmFtZSAsIGNoZWNrZWQ6IGNoZWNrZWQgPSBmYWxzZSAsIHJlcXVpcmVkOiByZXF1aXJlZCAsIGRpc2FibGVkOiBkaXNhYmxlZCAsIHZhbHVlOiB2YWx1ZSA9ICdvbicgLCBvbkNoZWNrOiBvbkNoZWNrICwgLi4ucmFkaW9Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2J1dHRvbiwgc2V0QnV0dG9uXSA9ICQ4V29sdiR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOFdvbHYkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRCdXR0b24obm9kZSlcbiAgICApO1xuICAgIGNvbnN0IGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmID0gJDhXb2x2JHVzZVJlZihmYWxzZSk7IC8vIFdlIHNldCB0aGlzIHRvIHRydWUgYnkgZGVmYXVsdCBzbyB0aGF0IGV2ZW50cyBidWJibGUgdG8gZm9ybXMgd2l0aG91dCBKUyAoU1NSKVxuICAgIGNvbnN0IGlzRm9ybUNvbnRyb2wgPSBidXR0b24gPyBCb29sZWFuKGJ1dHRvbi5jbG9zZXN0KCdmb3JtJykpIDogdHJ1ZTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOFdvbHYkY3JlYXRlRWxlbWVudCgkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkUmFkaW9Qcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVJhZGlvLFxuICAgICAgICBjaGVja2VkOiBjaGVja2VkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KCQ4V29sdiRQcmltaXRpdmUuYnV0dG9uLCAkOFdvbHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICByb2xlOiBcInJhZGlvXCIsXG4gICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IGNoZWNrZWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkZ2V0U3RhdGUoY2hlY2tlZCksXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0sIHJhZGlvUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uQ2xpY2s6ICQ4V29sdiRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyByYWRpb3MgY2Fubm90IGJlIHVuY2hlY2tlZCBzbyB3ZSBvbmx5IGNvbW11bmljYXRlIGEgY2hlY2tlZCBzdGF0ZVxuICAgICAgICAgICAgaWYgKCFjaGVja2VkKSBvbkNoZWNrID09PSBudWxsIHx8IG9uQ2hlY2sgPT09IHZvaWQgMCB8fCBvbkNoZWNrKCk7XG4gICAgICAgICAgICBpZiAoaXNGb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQgPSBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyAvLyBpZiByYWRpbyBpcyBpbiBhIGZvcm0sIHN0b3AgcHJvcGFnYXRpb24gZnJvbSB0aGUgYnV0dG9uIHNvIHRoYXQgd2Ugb25seSBwcm9wYWdhdGVcbiAgICAgICAgICAgICAgICAvLyBvbmUgY2xpY2sgZXZlbnQgKGZyb20gdGhlIGlucHV0KS4gV2UgcHJvcGFnYXRlIGNoYW5nZXMgZnJvbSBhbiBpbnB1dCBzbyB0aGF0IG5hdGl2ZVxuICAgICAgICAgICAgICAgIC8vIGZvcm0gdmFsaWRhdGlvbiB3b3JrcyBhbmQgZm9ybSBldmVudHMgcmVmbGVjdCByYWRpbyB1cGRhdGVzLlxuICAgICAgICAgICAgICAgIGlmICghaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpLCBpc0Zvcm1Db250cm9sICYmIC8qI19fUFVSRV9fKi8gJDhXb2x2JGNyZWF0ZUVsZW1lbnQoJGNlNzdhODk2MWI0MWJlOWUkdmFyJEJ1YmJsZUlucHV0LCB7XG4gICAgICAgIGNvbnRyb2w6IGJ1dHRvbixcbiAgICAgICAgYnViYmxlczogIWhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQsXG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQgLy8gV2UgdHJhbnNmb3JtIGJlY2F1c2UgdGhlIGlucHV0IGlzIGFic29sdXRlbHkgcG9zaXRpb25lZCBidXQgd2UgaGF2ZVxuICAgICAgICAsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKSdcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjZTc3YTg5NjFiNDFiZTllJGV4cG9ydCRkN2IxMmM0MTA3YmUwZDYxLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjZTc3YTg5NjFiNDFiZTllJHZhciRSQURJT19OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJhZGlvSW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZTc3YTg5NjFiNDFiZTllJHZhciRJTkRJQ0FUT1JfTkFNRSA9ICdSYWRpb0luZGljYXRvcic7XG5jb25zdCAkY2U3N2E4OTYxYjQxYmU5ZSRleHBvcnQkZDM1YTlmZmE5YTA0ZjllNyA9IC8qI19fUFVSRV9fKi8gJDhXb2x2JGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUmFkaW86IF9fc2NvcGVSYWRpbyAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCAuLi5pbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjZTc3YTg5NjFiNDFiZTllJHZhciR1c2VSYWRpb0NvbnRleHQoJGNlNzdhODk2MWI0MWJlOWUkdmFyJElORElDQVRPUl9OQU1FLCBfX3Njb3BlUmFkaW8pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KCQ4V29sdiRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQuY2hlY2tlZFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDhXb2x2JGNyZWF0ZUVsZW1lbnQoJDhXb2x2JFByaW1pdGl2ZS5zcGFuLCAkOFdvbHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJGNlNzdhODk2MWI0MWJlOWUkdmFyJGdldFN0YXRlKGNvbnRleHQuY2hlY2tlZCksXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBjb250ZXh0LmRpc2FibGVkID8gJycgOiB1bmRlZmluZWRcbiAgICB9LCBpbmRpY2F0b3JQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2U3N2E4OTYxYjQxYmU5ZSRleHBvcnQkZDM1YTlmZmE5YTA0ZjllNywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkSU5ESUNBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyBjb25zdCAkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkQnViYmxlSW5wdXQgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBjb250cm9sOiBjb250cm9sICwgY2hlY2tlZDogY2hlY2tlZCAsIGJ1YmJsZXM6IGJ1YmJsZXMgPSB0cnVlICwgLi4uaW5wdXRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcmVmID0gJDhXb2x2JHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmV2Q2hlY2tlZCA9ICQ4V29sdiR1c2VQcmV2aW91cyhjaGVja2VkKTtcbiAgICBjb25zdCBjb250cm9sU2l6ZSA9ICQ4V29sdiR1c2VTaXplKGNvbnRyb2wpOyAvLyBCdWJibGUgY2hlY2tlZCBjaGFuZ2UgdG8gcGFyZW50cyAoZS5nIGZvcm0gY2hhbmdlIGV2ZW50KVxuICAgICQ4V29sdiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaW5wdXQgPSByZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgaW5wdXRQcm90byA9IHdpbmRvdy5IVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaW5wdXRQcm90bywgJ2NoZWNrZWQnKTtcbiAgICAgICAgY29uc3Qgc2V0Q2hlY2tlZCA9IGRlc2NyaXB0b3Iuc2V0O1xuICAgICAgICBpZiAocHJldkNoZWNrZWQgIT09IGNoZWNrZWQgJiYgc2V0Q2hlY2tlZCkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NsaWNrJywge1xuICAgICAgICAgICAgICAgIGJ1YmJsZXM6IGJ1YmJsZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0Q2hlY2tlZC5jYWxsKGlucHV0LCBjaGVja2VkKTtcbiAgICAgICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBwcmV2Q2hlY2tlZCxcbiAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgYnViYmxlc1xuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwgJDhXb2x2JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJyYWRpb1wiLFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgIGRlZmF1bHRDaGVja2VkOiBjaGVja2VkXG4gICAgfSwgaW5wdXRQcm9wcywge1xuICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgIHJlZjogcmVmLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAuLi5jb250cm9sU2l6ZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgIG1hcmdpbjogMFxuICAgICAgICB9XG4gICAgfSkpO1xufTtcbmZ1bmN0aW9uICRjZTc3YTg5NjFiNDFiZTllJHZhciRnZXRTdGF0ZShjaGVja2VkKSB7XG4gICAgcmV0dXJuIGNoZWNrZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJztcbn1cblxuXG5jb25zdCAkZjk5YThjNzg1MDcxNjVmNyR2YXIkQVJST1dfS0VZUyA9IFtcbiAgICAnQXJyb3dVcCcsXG4gICAgJ0Fycm93RG93bicsXG4gICAgJ0Fycm93TGVmdCcsXG4gICAgJ0Fycm93UmlnaHQnXG5dO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUmFkaW9Hcm91cFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjk5YThjNzg1MDcxNjVmNyR2YXIkUkFESU9fR1JPVVBfTkFNRSA9ICdSYWRpb0dyb3VwJztcbmNvbnN0IFskZjk5YThjNzg1MDcxNjVmNyR2YXIkY3JlYXRlUmFkaW9Hcm91cENvbnRleHQsICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCRjNTQ3MDkzZjExYjc2ZGEyXSA9ICQ4V29sdiRjcmVhdGVDb250ZXh0U2NvcGUoJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJFJBRElPX0dST1VQX05BTUUsIFtcbiAgICAkOFdvbHYkY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlLFxuICAgICRjZTc3YTg5NjFiNDFiZTllJGV4cG9ydCQ2N2QyMjk2NDYwZjFiMDAyXG5dKTtcbmNvbnN0ICRmOTlhOGM3ODUwNzE2NWY3JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUgPSAkOFdvbHYkY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlKCk7XG5jb25zdCAkZjk5YThjNzg1MDcxNjVmNyR2YXIkdXNlUmFkaW9TY29wZSA9ICRjZTc3YTg5NjFiNDFiZTllJGV4cG9ydCQ2N2QyMjk2NDYwZjFiMDAyKCk7XG5jb25zdCBbJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJFJhZGlvR3JvdXBQcm92aWRlciwgJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJHVzZVJhZGlvR3JvdXBDb250ZXh0XSA9ICRmOTlhOGM3ODUwNzE2NWY3JHZhciRjcmVhdGVSYWRpb0dyb3VwQ29udGV4dCgkZjk5YThjNzg1MDcxNjVmNyR2YXIkUkFESU9fR1JPVVBfTkFNRSk7XG5jb25zdCAkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkYTk4ZjBkY2I0M2E2OGEyNSA9IC8qI19fUFVSRV9fKi8gJDhXb2x2JGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUmFkaW9Hcm91cDogX19zY29wZVJhZGlvR3JvdXAgLCBuYW1lOiBuYW1lICwgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUgLCB2YWx1ZTogdmFsdWVQcm9wICwgcmVxdWlyZWQ6IHJlcXVpcmVkID0gZmFsc2UgLCBkaXNhYmxlZDogZGlzYWJsZWQgPSBmYWxzZSAsIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbiAsIGRpcjogZGlyICwgbG9vcDogbG9vcCA9IHRydWUgLCBvblZhbHVlQ2hhbmdlOiBvblZhbHVlQ2hhbmdlICwgLi4uZ3JvdXBQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3Qgcm92aW5nRm9jdXNHcm91cFNjb3BlID0gJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJHVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZShfX3Njb3BlUmFkaW9Hcm91cCk7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gJDhXb2x2JHVzZURpcmVjdGlvbihkaXIpO1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gJDhXb2x2JHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogdmFsdWVQcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFZhbHVlLFxuICAgICAgICBvbkNoYW5nZTogb25WYWx1ZUNoYW5nZVxuICAgIH0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KCRmOTlhOGM3ODUwNzE2NWY3JHZhciRSYWRpb0dyb3VwUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVSYWRpb0dyb3VwLFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWQsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBvblZhbHVlQ2hhbmdlOiBzZXRWYWx1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDhXb2x2JGNyZWF0ZUVsZW1lbnQoJDhXb2x2JFJvb3QsICQ4V29sdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUsIHtcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uLFxuICAgICAgICBkaXI6IGRpcmVjdGlvbixcbiAgICAgICAgbG9vcDogbG9vcFxuICAgIH0pLCAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KCQ4V29sdiRQcmltaXRpdmUuZGl2LCAkOFdvbHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICByb2xlOiBcInJhZGlvZ3JvdXBcIixcbiAgICAgICAgXCJhcmlhLXJlcXVpcmVkXCI6IHJlcXVpcmVkLFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogb3JpZW50YXRpb24sXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICBkaXI6IGRpcmVjdGlvblxuICAgIH0sIGdyb3VwUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCRhOThmMGRjYjQzYTY4YTI1LCB7XG4gICAgZGlzcGxheU5hbWU6ICRmOTlhOGM3ODUwNzE2NWY3JHZhciRSQURJT19HUk9VUF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJhZGlvR3JvdXBJdGVtXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRmOTlhOGM3ODUwNzE2NWY3JHZhciRJVEVNX05BTUUgPSAnUmFkaW9Hcm91cEl0ZW0nO1xuY29uc3QgJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JDlmODY2YzEwMGVmNTE5ZTQgPSAvKiNfX1BVUkVfXyovICQ4V29sdiRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVJhZGlvR3JvdXA6IF9fc2NvcGVSYWRpb0dyb3VwICwgZGlzYWJsZWQ6IGRpc2FibGVkICwgLi4uaXRlbVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJHVzZVJhZGlvR3JvdXBDb250ZXh0KCRmOTlhOGM3ODUwNzE2NWY3JHZhciRJVEVNX05BTUUsIF9fc2NvcGVSYWRpb0dyb3VwKTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gY29udGV4dC5kaXNhYmxlZCB8fCBkaXNhYmxlZDtcbiAgICBjb25zdCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUgPSAkZjk5YThjNzg1MDcxNjVmNyR2YXIkdXNlUm92aW5nRm9jdXNHcm91cFNjb3BlKF9fc2NvcGVSYWRpb0dyb3VwKTtcbiAgICBjb25zdCByYWRpb1Njb3BlID0gJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJHVzZVJhZGlvU2NvcGUoX19zY29wZVJhZGlvR3JvdXApO1xuICAgIGNvbnN0IHJlZiA9ICQ4V29sdiR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDhXb2x2JHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgY29uc3QgY2hlY2tlZCA9IGNvbnRleHQudmFsdWUgPT09IGl0ZW1Qcm9wcy52YWx1ZTtcbiAgICBjb25zdCBpc0Fycm93S2V5UHJlc3NlZFJlZiA9ICQ4V29sdiR1c2VSZWYoZmFsc2UpO1xuICAgICQ4V29sdiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudCk9PntcbiAgICAgICAgICAgIGlmICgkZjk5YThjNzg1MDcxNjVmNyR2YXIkQVJST1dfS0VZUy5pbmNsdWRlcyhldmVudC5rZXkpKSBpc0Fycm93S2V5UHJlc3NlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgaGFuZGxlS2V5VXAgPSAoKT0+aXNBcnJvd0tleVByZXNzZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIDtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUtleVVwKTtcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bik7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUtleVVwKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDhXb2x2JGNyZWF0ZUVsZW1lbnQoJDhXb2x2JEl0ZW0sICQ4V29sdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUsIHtcbiAgICAgICAgZm9jdXNhYmxlOiAhaXNEaXNhYmxlZCxcbiAgICAgICAgYWN0aXZlOiBjaGVja2VkXG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDhXb2x2JGNyZWF0ZUVsZW1lbnQoJGNlNzdhODk2MWI0MWJlOWUkZXhwb3J0JGQ3YjEyYzQxMDdiZTBkNjEsICQ4V29sdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICByZXF1aXJlZDogY29udGV4dC5yZXF1aXJlZCxcbiAgICAgICAgY2hlY2tlZDogY2hlY2tlZFxuICAgIH0sIHJhZGlvU2NvcGUsIGl0ZW1Qcm9wcywge1xuICAgICAgICBuYW1lOiBjb250ZXh0Lm5hbWUsXG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkNoZWNrOiAoKT0+Y29udGV4dC5vblZhbHVlQ2hhbmdlKGl0ZW1Qcm9wcy52YWx1ZSlcbiAgICAgICAgLFxuICAgICAgICBvbktleURvd246ICQ4V29sdiRjb21wb3NlRXZlbnRIYW5kbGVycygoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gV0FJIEFSSUEsIHJhZGlvIGdyb3VwcyBkb24ndCBhY3RpdmF0ZSBpdGVtcyBvbiBlbnRlciBrZXlwcmVzc1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uRm9jdXM6ICQ4V29sdiRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25Gb2N1cywgKCk9PntcbiAgICAgICAgICAgIHZhciBfcmVmJGN1cnJlbnQ7XG4gICAgICAgICAgICAvKipcbiAgICAgICAqIE91ciBgUm92aW5nRm9jdXNHcm91cGAgd2lsbCBmb2N1cyB0aGUgcmFkaW8gd2hlbiBuYXZpZ2F0aW5nIHdpdGggYXJyb3cga2V5c1xuICAgICAgICogYW5kIHdlIG5lZWQgdG8gXCJjaGVja1wiIGl0IGluIHRoYXQgY2FzZS4gV2UgY2xpY2sgaXQgdG8gXCJjaGVja1wiIGl0IChpbnN0ZWFkXG4gICAgICAgKiBvZiB1cGRhdGluZyBgY29udGV4dC52YWx1ZWApIHNvIHRoYXQgdGhlIHJhZGlvIGNoYW5nZSBldmVudCBmaXJlcy5cbiAgICAgICAqLyBpZiAoaXNBcnJvd0tleVByZXNzZWRSZWYuY3VycmVudCkgKF9yZWYkY3VycmVudCA9IHJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfcmVmJGN1cnJlbnQgPT09IHZvaWQgMCB8fCBfcmVmJGN1cnJlbnQuY2xpY2soKTtcbiAgICAgICAgfSlcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JDlmODY2YzEwMGVmNTE5ZTQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJElURU1fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBSYWRpb0dyb3VwSW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRmOTlhOGM3ODUwNzE2NWY3JHZhciRJTkRJQ0FUT1JfTkFNRSA9ICdSYWRpb0dyb3VwSW5kaWNhdG9yJztcbmNvbnN0ICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCQ1ZmI1NGM2NzFhNjVjODggPSAvKiNfX1BVUkVfXyovICQ4V29sdiRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVJhZGlvR3JvdXA6IF9fc2NvcGVSYWRpb0dyb3VwICwgLi4uaW5kaWNhdG9yUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJhZGlvU2NvcGUgPSAkZjk5YThjNzg1MDcxNjVmNyR2YXIkdXNlUmFkaW9TY29wZShfX3Njb3BlUmFkaW9Hcm91cCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDhXb2x2JGNyZWF0ZUVsZW1lbnQoJGNlNzdhODk2MWI0MWJlOWUkZXhwb3J0JGQzNWE5ZmZhOWEwNGY5ZTcsICQ4V29sdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcmFkaW9TY29wZSwgaW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkNWZiNTRjNjcxYTY1Yzg4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRmOTlhOGM3ODUwNzE2NWY3JHZhciRJTkRJQ0FUT1JfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGNvbnN0ICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JGE5OGYwZGNiNDNhNjhhMjU7XG5jb25zdCAkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiA9ICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCQ5Zjg2NmMxMDBlZjUxOWU0O1xuY29uc3QgJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAgPSAkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkNWZiNTRjNjcxYTY1Yzg4O1xuXG5cblxuXG5leHBvcnQgeyRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCRjNTQ3MDkzZjExYjc2ZGEyIGFzIGNyZWF0ZVJhZGlvR3JvdXBTY29wZSwgJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JGE5OGYwZGNiNDNhNjhhMjUgYXMgUmFkaW9Hcm91cCwgJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JDlmODY2YzEwMGVmNTE5ZTQgYXMgUmFkaW9Hcm91cEl0ZW0sICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCQ1ZmI1NGM2NzFhNjVjODggYXMgUmFkaW9Hcm91cEluZGljYXRvciwgJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIgYXMgSXRlbSwgJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAgYXMgSW5kaWNhdG9yfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkaXJQSWwkZm9yd2FyZFJlZiwgdXNlU3RhdGUgYXMgJGlyUElsJHVzZVN0YXRlLCB1c2VSZWYgYXMgJGlyUElsJHVzZVJlZiwgY3JlYXRlRWxlbWVudCBhcyAkaXJQSWwkY3JlYXRlRWxlbWVudCwgdXNlRWZmZWN0IGFzICRpclBJbCR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkaXJQSWwkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkaXJQSWwkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGlyUElsJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICRpclBJbCR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge3VzZVByZXZpb3VzIGFzICRpclBJbCR1c2VQcmV2aW91c30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXNcIjtcbmltcG9ydCB7dXNlU2l6ZSBhcyAkaXJQSWwkdXNlU2l6ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2Utc2l6ZVwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJGlyUElsJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcblxuXG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU3dpdGNoXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSA9ICdTd2l0Y2gnO1xuY29uc3QgWyQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRjcmVhdGVTd2l0Y2hDb250ZXh0LCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkY2Y3ZjVmMTdmNjljYmQ0M10gPSAkaXJQSWwkY3JlYXRlQ29udGV4dFNjb3BlKCQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSk7XG5jb25zdCBbJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFN3aXRjaFByb3ZpZGVyLCAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkdXNlU3dpdGNoQ29udGV4dF0gPSAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkY3JlYXRlU3dpdGNoQ29udGV4dCgkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU1dJVENIX05BTUUpO1xuY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGI1ZDVjZjg5MjdhYjcyNjIgPSAvKiNfX1BVUkVfXyovICRpclBJbCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVN3aXRjaDogX19zY29wZVN3aXRjaCAsIG5hbWU6IG5hbWUgLCBjaGVja2VkOiBjaGVja2VkUHJvcCAsIGRlZmF1bHRDaGVja2VkOiBkZWZhdWx0Q2hlY2tlZCAsIHJlcXVpcmVkOiByZXF1aXJlZCAsIGRpc2FibGVkOiBkaXNhYmxlZCAsIHZhbHVlOiB2YWx1ZSA9ICdvbicgLCBvbkNoZWNrZWRDaGFuZ2U6IG9uQ2hlY2tlZENoYW5nZSAsIC4uLnN3aXRjaFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBbYnV0dG9uLCBzZXRCdXR0b25dID0gJGlyUElsJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRpclBJbCR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldEJ1dHRvbihub2RlKVxuICAgICk7XG4gICAgY29uc3QgaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYgPSAkaXJQSWwkdXNlUmVmKGZhbHNlKTsgLy8gV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBieSBkZWZhdWx0IHNvIHRoYXQgZXZlbnRzIGJ1YmJsZSB0byBmb3JtcyB3aXRob3V0IEpTIChTU1IpXG4gICAgY29uc3QgaXNGb3JtQ29udHJvbCA9IGJ1dHRvbiA/IEJvb2xlYW4oYnV0dG9uLmNsb3Nlc3QoJ2Zvcm0nKSkgOiB0cnVlO1xuICAgIGNvbnN0IFtjaGVja2VkID0gZmFsc2UsIHNldENoZWNrZWRdID0gJGlyUElsJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogY2hlY2tlZFByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0Q2hlY2tlZCxcbiAgICAgICAgb25DaGFuZ2U6IG9uQ2hlY2tlZENoYW5nZVxuICAgIH0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRpclBJbCRjcmVhdGVFbGVtZW50KCQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTd2l0Y2hQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVN3aXRjaCxcbiAgICAgICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkXG4gICAgfSwgLyojX19QVVJFX18qLyAkaXJQSWwkY3JlYXRlRWxlbWVudCgkaXJQSWwkUHJpbWl0aXZlLmJ1dHRvbiwgJGlyUElsJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgcm9sZTogXCJzd2l0Y2hcIixcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogY2hlY2tlZCxcbiAgICAgICAgXCJhcmlhLXJlcXVpcmVkXCI6IHJlcXVpcmVkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGdldFN0YXRlKGNoZWNrZWQpLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICB9LCBzd2l0Y2hQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25DbGljazogJGlyUElsJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xpY2ssIChldmVudCk9PntcbiAgICAgICAgICAgIHNldENoZWNrZWQoKHByZXZDaGVja2VkKT0+IXByZXZDaGVja2VkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGlzRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50ID0gZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTsgLy8gaWYgc3dpdGNoIGlzIGluIGEgZm9ybSwgc3RvcCBwcm9wYWdhdGlvbiBmcm9tIHRoZSBidXR0b24gc28gdGhhdCB3ZSBvbmx5IHByb3BhZ2F0ZVxuICAgICAgICAgICAgICAgIC8vIG9uZSBjbGljayBldmVudCAoZnJvbSB0aGUgaW5wdXQpLiBXZSBwcm9wYWdhdGUgY2hhbmdlcyBmcm9tIGFuIGlucHV0IHNvIHRoYXQgbmF0aXZlXG4gICAgICAgICAgICAgICAgLy8gZm9ybSB2YWxpZGF0aW9uIHdvcmtzIGFuZCBmb3JtIGV2ZW50cyByZWZsZWN0IHN3aXRjaCB1cGRhdGVzLlxuICAgICAgICAgICAgICAgIGlmICghaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpLCBpc0Zvcm1Db250cm9sICYmIC8qI19fUFVSRV9fKi8gJGlyUElsJGNyZWF0ZUVsZW1lbnQoJDZiZTQ5NjZmZDliYmM2OTgkdmFyJEJ1YmJsZUlucHV0LCB7XG4gICAgICAgIGNvbnRyb2w6IGJ1dHRvbixcbiAgICAgICAgYnViYmxlczogIWhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQsXG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQgLy8gV2UgdHJhbnNmb3JtIGJlY2F1c2UgdGhlIGlucHV0IGlzIGFic29sdXRlbHkgcG9zaXRpb25lZCBidXQgd2UgaGF2ZVxuICAgICAgICAsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKSdcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiNWQ1Y2Y4OTI3YWI3MjYyLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTd2l0Y2hUaHVtYlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkVEhVTUJfTkFNRSA9ICdTd2l0Y2hUaHVtYic7XG5jb25zdCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNGQwN2JmNjUzZWE2OTEwNiA9IC8qI19fUFVSRV9fKi8gJGlyUElsJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU3dpdGNoOiBfX3Njb3BlU3dpdGNoICwgLi4udGh1bWJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciR1c2VTd2l0Y2hDb250ZXh0KCQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRUSFVNQl9OQU1FLCBfX3Njb3BlU3dpdGNoKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkaXJQSWwkY3JlYXRlRWxlbWVudCgkaXJQSWwkUHJpbWl0aXZlLnNwYW4sICRpclBJbCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUoY29udGV4dC5jaGVja2VkKSxcbiAgICAgICAgXCJkYXRhLWRpc2FibGVkXCI6IGNvbnRleHQuZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZFxuICAgIH0sIHRodW1iUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNGQwN2JmNjUzZWE2OTEwNiwge1xuICAgIGRpc3BsYXlOYW1lOiAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkVEhVTUJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRCdWJibGVJbnB1dCA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IGNvbnRyb2w6IGNvbnRyb2wgLCBjaGVja2VkOiBjaGVja2VkICwgYnViYmxlczogYnViYmxlcyA9IHRydWUgLCAuLi5pbnB1dFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCByZWYgPSAkaXJQSWwkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZXZDaGVja2VkID0gJGlyUElsJHVzZVByZXZpb3VzKGNoZWNrZWQpO1xuICAgIGNvbnN0IGNvbnRyb2xTaXplID0gJGlyUElsJHVzZVNpemUoY29udHJvbCk7IC8vIEJ1YmJsZSBjaGVja2VkIGNoYW5nZSB0byBwYXJlbnRzIChlLmcgZm9ybSBjaGFuZ2UgZXZlbnQpXG4gICAgJGlyUElsJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBpbnB1dCA9IHJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBpbnB1dFByb3RvID0gd2luZG93LkhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpbnB1dFByb3RvLCAnY2hlY2tlZCcpO1xuICAgICAgICBjb25zdCBzZXRDaGVja2VkID0gZGVzY3JpcHRvci5zZXQ7XG4gICAgICAgIGlmIChwcmV2Q2hlY2tlZCAhPT0gY2hlY2tlZCAmJiBzZXRDaGVja2VkKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IG5ldyBFdmVudCgnY2xpY2snLCB7XG4gICAgICAgICAgICAgICAgYnViYmxlczogYnViYmxlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZXRDaGVja2VkLmNhbGwoaW5wdXQsIGNoZWNrZWQpO1xuICAgICAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHByZXZDaGVja2VkLFxuICAgICAgICBjaGVja2VkLFxuICAgICAgICBidWJibGVzXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGlyUElsJGNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCAkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICAgICAgZGVmYXVsdENoZWNrZWQ6IGNoZWNrZWRcbiAgICB9LCBpbnB1dFByb3BzLCB7XG4gICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgcmVmOiByZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIC4uLmNvbnRyb2xTaXplLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgbWFyZ2luOiAwXG4gICAgICAgIH1cbiAgICB9KSk7XG59O1xuZnVuY3Rpb24gJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGdldFN0YXRlKGNoZWNrZWQpIHtcbiAgICByZXR1cm4gY2hlY2tlZCA/ICdjaGVja2VkJyA6ICd1bmNoZWNrZWQnO1xufVxuY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MjtcbmNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ2NTIxNDMzZWQxNWEzNGRiID0gJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDRkMDdiZjY1M2VhNjkxMDY7XG5cblxuXG5cbmV4cG9ydCB7JDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGNmN2Y1ZjE3ZjY5Y2JkNDMgYXMgY3JlYXRlU3dpdGNoU2NvcGUsICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiNWQ1Y2Y4OTI3YWI3MjYyIGFzIFN3aXRjaCwgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDRkMDdiZjY1M2VhNjkxMDYgYXMgU3dpdGNoVGh1bWIsICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ2NTIxNDMzZWQxNWEzNGRiIGFzIFRodW1ifTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAka1Z3bnckYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAka1Z3bnckZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAka1Z3bnckY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAka1Z3bnckUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBWaXN1YWxseUhpZGRlblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZWExZWY1OTRjZjU3MGQ4MyR2YXIkTkFNRSA9ICdWaXN1YWxseUhpZGRlbic7XG5jb25zdCAkZWExZWY1OTRjZjU3MGQ4MyRleHBvcnQkNDM5ZDI5YTRlMTEwYTE2NCA9IC8qI19fUFVSRV9fKi8gJGtWd253JGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtWd253JGNyZWF0ZUVsZW1lbnQoJGtWd253JFByaW1pdGl2ZS5zcGFuLCAka1Z3bnckYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvc2Nzcy9taXhpbnMvX3NjcmVlbi1yZWFkZXIuc2Nzc1xuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICBtYXJnaW46IC0xLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgY2xpcDogJ3JlY3QoMCwgMCwgMCwgMCknLFxuICAgICAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgICAgICB3b3JkV3JhcDogJ25vcm1hbCcsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZVxuICAgICAgICB9XG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGVhMWVmNTk0Y2Y1NzBkODMkdmFyJE5BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZWExZWY1OTRjZjU3MGQ4MyRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0O1xuXG5cblxuXG5leHBvcnQgeyRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0IGFzIFZpc3VhbGx5SGlkZGVuLCAkZWExZWY1OTRjZjU3MGQ4MyRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7dXNlU3RhdGUgYXMgJDh3ZXBLJHVzZVN0YXRlLCB1c2VSZWYgYXMgJDh3ZXBLJHVzZVJlZiwgdXNlRWZmZWN0IGFzICQ4d2VwSyR1c2VFZmZlY3QsIGNyZWF0ZUVsZW1lbnQgYXMgJDh3ZXBLJGNyZWF0ZUVsZW1lbnQsIHVzZUNhbGxiYWNrIGFzICQ4d2VwSyR1c2VDYWxsYmFjaywgdXNlTWVtbyBhcyAkOHdlcEskdXNlTWVtbywgZm9yd2FyZFJlZiBhcyAkOHdlcEskZm9yd2FyZFJlZn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ4d2VwSyRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ4d2VwSyR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkOHdlcEskY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7RGlzbWlzc2FibGVMYXllciBhcyAkOHdlcEskRGlzbWlzc2FibGVMYXllcn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXNtaXNzYWJsZS1sYXllclwiO1xuaW1wb3J0IHt1c2VJZCBhcyAkOHdlcEskdXNlSWR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWRcIjtcbmltcG9ydCB7Y3JlYXRlUG9wcGVyU2NvcGUgYXMgJDh3ZXBLJGNyZWF0ZVBvcHBlclNjb3BlLCBSb290IGFzICQ4d2VwSyRSb290LCBBbmNob3IgYXMgJDh3ZXBLJEFuY2hvciwgQ29udGVudCBhcyAkOHdlcEskQ29udGVudCwgQXJyb3cgYXMgJDh3ZXBLJEFycm93fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcHBlclwiO1xuaW1wb3J0IHtQb3J0YWwgYXMgJDh3ZXBLJFBvcnRhbH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3J0YWxcIjtcbmltcG9ydCB7UHJlc2VuY2UgYXMgJDh3ZXBLJFByZXNlbmNlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkOHdlcEskUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHtTbG90dGFibGUgYXMgJDh3ZXBLJFNsb3R0YWJsZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQ4d2VwSyR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge1Jvb3QgYXMgJDh3ZXBLJFJvb3QxfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXZpc3VhbGx5LWhpZGRlblwiO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5jb25zdCBbJGEwOTNjN2UxZWMyNWEwNTckdmFyJGNyZWF0ZVRvb2x0aXBDb250ZXh0LCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMWM1NDBhMjIyNGYwZDg2NV0gPSAkOHdlcEskY3JlYXRlQ29udGV4dFNjb3BlKCdUb29sdGlwJywgW1xuICAgICQ4d2VwSyRjcmVhdGVQb3BwZXJTY29wZVxuXSk7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUgPSAkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUoKTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBQcm92aWRlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUFJPVklERVJfTkFNRSA9ICdUb29sdGlwUHJvdmlkZXInO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJERFRkFVTFRfREVMQVlfRFVSQVRJT04gPSA3MDA7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOID0gJ3Rvb2x0aXAub3Blbic7XG5jb25zdCBbJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBQcm92aWRlckNvbnRleHRQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHRdID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGNyZWF0ZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRmNzg2NDlmYjljYTU2NmI4ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgZGVsYXlEdXJhdGlvbjogZGVsYXlEdXJhdGlvbiA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRERUZBVUxUX0RFTEFZX0RVUkFUSU9OICwgc2tpcERlbGF5RHVyYXRpb246IHNraXBEZWxheUR1cmF0aW9uID0gMzAwICwgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6IGRpc2FibGVIb3ZlcmFibGVDb250ZW50ID0gZmFsc2UgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICBjb25zdCBbaXNPcGVuRGVsYXllZCwgc2V0SXNPcGVuRGVsYXllZF0gPSAkOHdlcEskdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgaXNQb2ludGVySW5UcmFuc2l0UmVmID0gJDh3ZXBLJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qgc2tpcERlbGF5VGltZXJSZWYgPSAkOHdlcEskdXNlUmVmKDApO1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgc2tpcERlbGF5VGltZXIgPSBza2lwRGVsYXlUaW1lclJlZi5jdXJyZW50O1xuICAgICAgICByZXR1cm4gKCk9PndpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXIpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBQcm92aWRlckNvbnRleHRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVRvb2x0aXAsXG4gICAgICAgIGlzT3BlbkRlbGF5ZWQ6IGlzT3BlbkRlbGF5ZWQsXG4gICAgICAgIGRlbGF5RHVyYXRpb246IGRlbGF5RHVyYXRpb24sXG4gICAgICAgIG9uT3BlbjogJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHNraXBEZWxheVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgc2V0SXNPcGVuRGVsYXllZChmYWxzZSk7XG4gICAgICAgIH0sIFtdKSxcbiAgICAgICAgb25DbG9zZTogJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHNraXBEZWxheVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpPT5zZXRJc09wZW5EZWxheWVkKHRydWUpXG4gICAgICAgICAgICAsIHNraXBEZWxheUR1cmF0aW9uKTtcbiAgICAgICAgfSwgW1xuICAgICAgICAgICAgc2tpcERlbGF5RHVyYXRpb25cbiAgICAgICAgXSksXG4gICAgICAgIGlzUG9pbnRlckluVHJhbnNpdFJlZjogaXNQb2ludGVySW5UcmFuc2l0UmVmLFxuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2U6ICQ4d2VwSyR1c2VDYWxsYmFjaygoaW5UcmFuc2l0KT0+e1xuICAgICAgICAgICAgaXNQb2ludGVySW5UcmFuc2l0UmVmLmN1cnJlbnQgPSBpblRyYW5zaXQ7XG4gICAgICAgIH0sIFtdKSxcbiAgICAgICAgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6IGRpc2FibGVIb3ZlcmFibGVDb250ZW50XG4gICAgfSwgY2hpbGRyZW4pO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZjc4NjQ5ZmI5Y2E1NjZiOCwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUFJPVklERVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX05BTUUgPSAnVG9vbHRpcCc7XG5jb25zdCBbJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZXh0UHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dF0gPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSk7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjhjNjYwYzYzYjc5MmRlYSA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIG9wZW46IG9wZW5Qcm9wICwgZGVmYXVsdE9wZW46IGRlZmF1bHRPcGVuID0gZmFsc2UgLCBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZSAsIGRpc2FibGVIb3ZlcmFibGVDb250ZW50OiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFByb3AgLCBkZWxheUR1cmF0aW9uOiBkZWxheUR1cmF0aW9uUHJvcCAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHByb3ZpZGVyQ29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwUHJvdmlkZXJDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX05BTUUsIHByb3BzLl9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgW3RyaWdnZXIsIHNldFRyaWdnZXJdID0gJDh3ZXBLJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbnRlbnRJZCA9ICQ4d2VwSyR1c2VJZCgpO1xuICAgIGNvbnN0IG9wZW5UaW1lclJlZiA9ICQ4d2VwSyR1c2VSZWYoMCk7XG4gICAgY29uc3QgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQgPSBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFByb3AgIT09IG51bGwgJiYgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRQcm9wICE9PSB2b2lkIDAgPyBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFByb3AgOiBwcm92aWRlckNvbnRleHQuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ7XG4gICAgY29uc3QgZGVsYXlEdXJhdGlvbiA9IGRlbGF5RHVyYXRpb25Qcm9wICE9PSBudWxsICYmIGRlbGF5RHVyYXRpb25Qcm9wICE9PSB2b2lkIDAgPyBkZWxheUR1cmF0aW9uUHJvcCA6IHByb3ZpZGVyQ29udGV4dC5kZWxheUR1cmF0aW9uO1xuICAgIGNvbnN0IHdhc09wZW5EZWxheWVkUmVmID0gJDh3ZXBLJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW29wZW4xID0gZmFsc2UsIHNldE9wZW5dID0gJDh3ZXBLJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogb3BlblByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0T3BlbixcbiAgICAgICAgb25DaGFuZ2U6IChvcGVuKT0+e1xuICAgICAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlckNvbnRleHQub25PcGVuKCk7IC8vIGFzIGBvbkNoYW5nZWAgaXMgY2FsbGVkIHdpdGhpbiBhIGxpZmVjeWNsZSBtZXRob2Qgd2VcbiAgICAgICAgICAgICAgICAvLyBhdm9pZCBkaXNwYXRjaGluZyB2aWEgYGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudGAuXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfT1BFTikpO1xuICAgICAgICAgICAgfSBlbHNlIHByb3ZpZGVyQ29udGV4dC5vbkNsb3NlKCk7XG4gICAgICAgICAgICBvbk9wZW5DaGFuZ2UgPT09IG51bGwgfHwgb25PcGVuQ2hhbmdlID09PSB2b2lkIDAgfHwgb25PcGVuQ2hhbmdlKG9wZW4pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgc3RhdGVBdHRyaWJ1dGUgPSAkOHdlcEskdXNlTWVtbygoKT0+e1xuICAgICAgICByZXR1cm4gb3BlbjEgPyB3YXNPcGVuRGVsYXllZFJlZi5jdXJyZW50ID8gJ2RlbGF5ZWQtb3BlbicgOiAnaW5zdGFudC1vcGVuJyA6ICdjbG9zZWQnO1xuICAgIH0sIFtcbiAgICAgICAgb3BlbjFcbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVPcGVuID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQob3BlblRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICB3YXNPcGVuRGVsYXllZFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIHNldE9wZW4odHJ1ZSk7XG4gICAgfSwgW1xuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgY29uc3QgaGFuZGxlQ2xvc2UgPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgIH0sIFtcbiAgICAgICAgc2V0T3BlblxuICAgIF0pO1xuICAgIGNvbnN0IGhhbmRsZURlbGF5ZWRPcGVuID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQob3BlblRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICBvcGVuVGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICB3YXNPcGVuRGVsYXllZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldE9wZW4odHJ1ZSk7XG4gICAgICAgIH0sIGRlbGF5RHVyYXRpb24pO1xuICAgIH0sIFtcbiAgICAgICAgZGVsYXlEdXJhdGlvbixcbiAgICAgICAgc2V0T3BlblxuICAgIF0pO1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT53aW5kb3cuY2xlYXJUaW1lb3V0KG9wZW5UaW1lclJlZi5jdXJyZW50KVxuICAgICAgICA7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRSb290LCBwb3BwZXJTY29wZSwgLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcENvbnRleHRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVRvb2x0aXAsXG4gICAgICAgIGNvbnRlbnRJZDogY29udGVudElkLFxuICAgICAgICBvcGVuOiBvcGVuMSxcbiAgICAgICAgc3RhdGVBdHRyaWJ1dGU6IHN0YXRlQXR0cmlidXRlLFxuICAgICAgICB0cmlnZ2VyOiB0cmlnZ2VyLFxuICAgICAgICBvblRyaWdnZXJDaGFuZ2U6IHNldFRyaWdnZXIsXG4gICAgICAgIG9uVHJpZ2dlckVudGVyOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIGlmIChwcm92aWRlckNvbnRleHQuaXNPcGVuRGVsYXllZCkgaGFuZGxlRGVsYXllZE9wZW4oKTtcbiAgICAgICAgICAgIGVsc2UgaGFuZGxlT3BlbigpO1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBwcm92aWRlckNvbnRleHQuaXNPcGVuRGVsYXllZCxcbiAgICAgICAgICAgIGhhbmRsZURlbGF5ZWRPcGVuLFxuICAgICAgICAgICAgaGFuZGxlT3BlblxuICAgICAgICBdKSxcbiAgICAgICAgb25UcmlnZ2VyTGVhdmU6ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICAgICAgaWYgKGRpc2FibGVIb3ZlcmFibGVDb250ZW50KSBoYW5kbGVDbG9zZSgpO1xuICAgICAgICAgICAgZWxzZSAvLyBDbGVhciB0aGUgdGltZXIgaW4gY2FzZSB0aGUgcG9pbnRlciBsZWF2ZXMgdGhlIHRyaWdnZXIgYmVmb3JlIHRoZSB0b29sdGlwIGlzIG9wZW5lZC5cbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQob3BlblRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSxcbiAgICAgICAgICAgIGRpc2FibGVIb3ZlcmFibGVDb250ZW50XG4gICAgICAgIF0pLFxuICAgICAgICBvbk9wZW46IGhhbmRsZU9wZW4sXG4gICAgICAgIG9uQ2xvc2U6IGhhbmRsZUNsb3NlLFxuICAgICAgICBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICB9LCBjaGlsZHJlbikpO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjhjNjYwYzYzYjc5MmRlYSwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUUklHR0VSX05BTUUgPSAnVG9vbHRpcFRyaWdnZXInO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDhjNjEwNzQ0ZWZjZjhhMWQgPSAvKiNfX1BVUkVfXyovICQ4d2VwSyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwcm92aWRlckNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHJlZiA9ICQ4d2VwSyR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDh3ZXBLJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZiwgY29udGV4dC5vblRyaWdnZXJDaGFuZ2UpO1xuICAgIGNvbnN0IGlzUG9pbnRlckRvd25SZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBoYXNQb2ludGVyTW92ZU9wZW5lZFJlZiA9ICQ4d2VwSyR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJVcCA9ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+aXNQb2ludGVyRG93blJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAsIFtdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJldHVybiAoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwKVxuICAgICAgICA7XG4gICAgfSwgW1xuICAgICAgICBoYW5kbGVQb2ludGVyVXBcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskQW5jaG9yLCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcG9wcGVyU2NvcGUpLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRQcmltaXRpdmUuYnV0dG9uLCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICAvLyBXZSBwdXJwb3NlZnVsbHkgYXZvaWQgYWRkaW5nIGB0eXBlPWJ1dHRvbmAgaGVyZSBiZWNhdXNlIHRvb2x0aXAgdHJpZ2dlcnMgYXJlIGFsc29cbiAgICAgICAgLy8gY29tbW9ubHkgYW5jaG9ycyBhbmQgdGhlIGFuY2hvciBgdHlwZWAgYXR0cmlidXRlIHNpZ25pZmllcyBNSU1FIHR5cGUuXG4gICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiBjb250ZXh0Lm9wZW4gPyBjb250ZXh0LmNvbnRlbnRJZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGNvbnRleHQuc3RhdGVBdHRyaWJ1dGVcbiAgICB9LCB0cmlnZ2VyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uUG9pbnRlck1vdmU6ICQ4d2VwSyRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vblBvaW50ZXJNb3ZlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQucG9pbnRlclR5cGUgPT09ICd0b3VjaCcpIHJldHVybjtcbiAgICAgICAgICAgIGlmICghaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCAmJiAhcHJvdmlkZXJDb250ZXh0LmlzUG9pbnRlckluVHJhbnNpdFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5vblRyaWdnZXJFbnRlcigpO1xuICAgICAgICAgICAgICAgIGhhc1BvaW50ZXJNb3ZlT3BlbmVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6ICQ4d2VwSyRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vblBvaW50ZXJMZWF2ZSwgKCk9PntcbiAgICAgICAgICAgIGNvbnRleHQub25UcmlnZ2VyTGVhdmUoKTtcbiAgICAgICAgICAgIGhhc1BvaW50ZXJNb3ZlT3BlbmVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckRvd246ICQ4d2VwSyRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vblBvaW50ZXJEb3duLCAoKT0+e1xuICAgICAgICAgICAgaXNQb2ludGVyRG93blJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIGhhbmRsZVBvaW50ZXJVcCwge1xuICAgICAgICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Gb2N1czogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXMsICgpPT57XG4gICAgICAgICAgICBpZiAoIWlzUG9pbnRlckRvd25SZWYuY3VycmVudCkgY29udGV4dC5vbk9wZW4oKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uQmx1cjogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQmx1ciwgY29udGV4dC5vbkNsb3NlKSxcbiAgICAgICAgb25DbGljazogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xpY2ssIGNvbnRleHQub25DbG9zZSlcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDhjNjEwNzQ0ZWZjZjhhMWQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwUG9ydGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRSA9ICdUb29sdGlwUG9ydGFsJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUG9ydGFsUHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3J0YWxDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUE9SVEFMX05BTUUsIHtcbiAgICBmb3JjZU1vdW50OiB1bmRlZmluZWRcbn0pO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdiMzZiOGY5MjVhYjc0OTcgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCBmb3JjZU1vdW50OiBmb3JjZU1vdW50ICwgY2hpbGRyZW46IGNoaWxkcmVuICwgY29udGFpbmVyOiBjb250YWluZXIgIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRSwgX19zY29wZVRvb2x0aXApO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRQb3J0YWxQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVRvb2x0aXAsXG4gICAgICAgIGZvcmNlTW91bnQ6IGZvcmNlTW91bnRcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQub3BlblxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFBvcnRhbCwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlLFxuICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lclxuICAgIH0sIGNoaWxkcmVuKSkpO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5Nywge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUE9SVEFMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcENvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRSA9ICdUb29sdGlwQ29udGVudCc7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZTkwMDNlMmJlMzdlYzA2MCA9IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgcG9ydGFsQ29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3J0YWxDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCB7IGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgPSBwb3J0YWxDb250ZXh0LmZvcmNlTW91bnQgLCBzaWRlOiBzaWRlID0gJ3RvcCcgLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQub3BlblxuICAgIH0sIGNvbnRleHQuZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQgPyAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEltcGwsICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHNpZGU6IHNpZGVcbiAgICB9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkgOiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEhvdmVyYWJsZSwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgc2lkZTogc2lkZVxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEhvdmVyYWJsZSA9IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcHJvdmlkZXJDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHJlZiA9ICQ4d2VwSyR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDh3ZXBLJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgY29uc3QgW3BvaW50ZXJHcmFjZUFyZWEsIHNldFBvaW50ZXJHcmFjZUFyZWFdID0gJDh3ZXBLJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IHsgdHJpZ2dlcjogdHJpZ2dlciAsIG9uQ2xvc2U6IG9uQ2xvc2UgIH0gPSBjb250ZXh0O1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWYuY3VycmVudDtcbiAgICBjb25zdCB7IG9uUG9pbnRlckluVHJhbnNpdENoYW5nZTogb25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlICB9ID0gcHJvdmlkZXJDb250ZXh0O1xuICAgIGNvbnN0IGhhbmRsZVJlbW92ZUdyYWNlQXJlYSA9ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICBzZXRQb2ludGVyR3JhY2VBcmVhKG51bGwpO1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UoZmFsc2UpO1xuICAgIH0sIFtcbiAgICAgICAgb25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlXG4gICAgXSk7XG4gICAgY29uc3QgaGFuZGxlQ3JlYXRlR3JhY2VBcmVhID0gJDh3ZXBLJHVzZUNhbGxiYWNrKChldmVudCwgaG92ZXJUYXJnZXQpPT57XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICBjb25zdCBleGl0UG9pbnQgPSB7XG4gICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBleGl0U2lkZSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0KGV4aXRQb2ludCwgY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgICAgIGNvbnN0IHBhZGRlZEV4aXRQb2ludHMgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0UGFkZGVkRXhpdFBvaW50cyhleGl0UG9pbnQsIGV4aXRTaWRlKTtcbiAgICAgICAgY29uc3QgaG92ZXJUYXJnZXRQb2ludHMgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0UG9pbnRzRnJvbVJlY3QoaG92ZXJUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICAgICAgICBjb25zdCBncmFjZUFyZWEgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbChbXG4gICAgICAgICAgICAuLi5wYWRkZWRFeGl0UG9pbnRzLFxuICAgICAgICAgICAgLi4uaG92ZXJUYXJnZXRQb2ludHNcbiAgICAgICAgXSk7XG4gICAgICAgIHNldFBvaW50ZXJHcmFjZUFyZWEoZ3JhY2VBcmVhKTtcbiAgICAgICAgb25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlKHRydWUpO1xuICAgIH0sIFtcbiAgICAgICAgb25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gKCk9PmhhbmRsZVJlbW92ZUdyYWNlQXJlYSgpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZVJlbW92ZUdyYWNlQXJlYVxuICAgIF0pO1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHRyaWdnZXIgJiYgY29udGVudCkge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlVHJpZ2dlckxlYXZlID0gKGV2ZW50KT0+aGFuZGxlQ3JlYXRlR3JhY2VBcmVhKGV2ZW50LCBjb250ZW50KVxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQ29udGVudExlYXZlID0gKGV2ZW50KT0+aGFuZGxlQ3JlYXRlR3JhY2VBcmVhKGV2ZW50LCB0cmlnZ2VyKVxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBoYW5kbGVUcmlnZ2VyTGVhdmUpO1xuICAgICAgICAgICAgY29udGVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBoYW5kbGVDb250ZW50TGVhdmUpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgdHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBoYW5kbGVUcmlnZ2VyTGVhdmUpO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmxlYXZlJywgaGFuZGxlQ29udGVudExlYXZlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHRyaWdnZXIsXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIGhhbmRsZUNyZWF0ZUdyYWNlQXJlYSxcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAocG9pbnRlckdyYWNlQXJlYSkge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlVHJhY2tQb2ludGVyR3JhY2UgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRW50ZXJlZFRhcmdldCA9ICh0cmlnZ2VyID09PSBudWxsIHx8IHRyaWdnZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRyaWdnZXIuY29udGFpbnModGFyZ2V0KSkgfHwgKGNvbnRlbnQgPT09IG51bGwgfHwgY29udGVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGVudC5jb250YWlucyh0YXJnZXQpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1BvaW50ZXJPdXRzaWRlR3JhY2VBcmVhID0gISRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uKHBvaW50ZXJQb3NpdGlvbiwgcG9pbnRlckdyYWNlQXJlYSk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0VudGVyZWRUYXJnZXQpIGhhbmRsZVJlbW92ZUdyYWNlQXJlYSgpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUG9pbnRlck91dHNpZGVHcmFjZUFyZWEpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhKCk7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgaGFuZGxlVHJhY2tQb2ludGVyR3JhY2UpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHRyaWdnZXIsXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIHBvaW50ZXJHcmFjZUFyZWEsXG4gICAgICAgIG9uQ2xvc2UsXG4gICAgICAgIGhhbmRsZVJlbW92ZUdyYWNlQXJlYVxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEltcGwsICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSk7XG59KTtcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVmlzdWFsbHlIaWRkZW5Db250ZW50Q29udGV4dFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVmlzdWFsbHlIaWRkZW5Db250ZW50Q29udGV4dF0gPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSwge1xuICAgIGlzSW5zaWRlOiBmYWxzZVxufSk7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcENvbnRlbnRJbXBsID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsICwgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24gLCBvblBvaW50ZXJEb3duT3V0c2lkZTogb25Qb2ludGVyRG93bk91dHNpZGUgLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCB7IG9uQ2xvc2U6IG9uQ2xvc2UgIH0gPSBjb250ZXh0OyAvLyBDbG9zZSB0aGlzIHRvb2x0aXAgaWYgYW5vdGhlciBvbmUgb3BlbnNcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfT1BFTiwgb25DbG9zZSk7XG4gICAgICAgIHJldHVybiAoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOLCBvbkNsb3NlKVxuICAgICAgICA7XG4gICAgfSwgW1xuICAgICAgICBvbkNsb3NlXG4gICAgXSk7IC8vIENsb3NlIHRoZSB0b29sdGlwIGlmIHRoZSB0cmlnZ2VyIGlzIHNjcm9sbGVkXG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGV4dC50cmlnZ2VyKSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgIT09IG51bGwgJiYgdGFyZ2V0ICE9PSB2b2lkIDAgJiYgdGFyZ2V0LmNvbnRhaW5zKGNvbnRleHQudHJpZ2dlcikpIG9uQ2xvc2UoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsLCB7XG4gICAgICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHtcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRleHQudHJpZ2dlcixcbiAgICAgICAgb25DbG9zZVxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyREaXNtaXNzYWJsZUxheWVyLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIG9uRXNjYXBlS2V5RG93bjogb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogb25Qb2ludGVyRG93bk91dHNpZGUsXG4gICAgICAgIG9uRm9jdXNPdXRzaWRlOiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICxcbiAgICAgICAgb25EaXNtaXNzOiBvbkNsb3NlXG4gICAgfSwgLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskQ29udGVudCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGNvbnRleHQuc3RhdGVBdHRyaWJ1dGVcbiAgICB9LCBwb3BwZXJTY29wZSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4uY29udGVudFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4nOiAndmFyKC0tcmFkaXgtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4pJyxcbiAgICAgICAgICAgICctLXJhZGl4LXRvb2x0aXAtY29udGVudC1hdmFpbGFibGUtd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXRvb2x0aXAtdHJpZ2dlci13aWR0aCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYW5jaG9yLXdpZHRoKScsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLXRyaWdnZXItaGVpZ2h0JzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3ItaGVpZ2h0KSdcbiAgICAgICAgfVxuICAgIH0pLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRTbG90dGFibGUsIG51bGwsIGNoaWxkcmVuKSwgLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVmlzdWFsbHlIaWRkZW5Db250ZW50Q29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgaXNJbnNpZGU6IHRydWVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRSb290MSwge1xuICAgICAgICBpZDogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIHJvbGU6IFwidG9vbHRpcFwiXG4gICAgfSwgYXJpYUxhYmVsIHx8IGNoaWxkcmVuKSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRlOTAwM2UyYmUzN2VjMDYwLCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcEFycm93XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRBUlJPV19OQU1FID0gJ1Rvb2x0aXBBcnJvdyc7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkYzI3ZWUwYWQ3MTBmNzU1OSA9IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCAuLi5hcnJvd1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgdmlzdWFsbHlIaWRkZW5Db250ZW50Q29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRBUlJPV19OQU1FLCBfX3Njb3BlVG9vbHRpcCk7IC8vIGlmIHRoZSBhcnJvdyBpcyBpbnNpZGUgdGhlIGBWaXN1YWxseUhpZGRlbmAsIHdlIGRvbid0IHdhbnQgdG8gcmVuZGVyIGl0IGFsbCB0b1xuICAgIC8vIHByZXZlbnQgaXNzdWVzIGluIHBvc2l0aW9uaW5nIHRoZSBhcnJvdyBkdWUgdG8gdGhlIGR1cGxpY2F0ZVxuICAgIHJldHVybiB2aXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0LmlzSW5zaWRlID8gbnVsbCA6IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJEFycm93LCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcHBlclNjb3BlLCBhcnJvd1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGMyN2VlMGFkNzEwZjc1NTksIHtcbiAgICBkaXNwbGF5TmFtZTogJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0RXhpdFNpZGVGcm9tUmVjdChwb2ludCwgcmVjdCkge1xuICAgIGNvbnN0IHRvcCA9IE1hdGguYWJzKHJlY3QudG9wIC0gcG9pbnQueSk7XG4gICAgY29uc3QgYm90dG9tID0gTWF0aC5hYnMocmVjdC5ib3R0b20gLSBwb2ludC55KTtcbiAgICBjb25zdCByaWdodCA9IE1hdGguYWJzKHJlY3QucmlnaHQgLSBwb2ludC54KTtcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5hYnMocmVjdC5sZWZ0IC0gcG9pbnQueCk7XG4gICAgc3dpdGNoKE1hdGgubWluKHRvcCwgYm90dG9tLCByaWdodCwgbGVmdCkpe1xuICAgICAgICBjYXNlIGxlZnQ6XG4gICAgICAgICAgICByZXR1cm4gJ2xlZnQnO1xuICAgICAgICBjYXNlIHJpZ2h0OlxuICAgICAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgICAgIGNhc2UgdG9wOlxuICAgICAgICAgICAgcmV0dXJuICd0b3AnO1xuICAgICAgICBjYXNlIGJvdHRvbTpcbiAgICAgICAgICAgIHJldHVybiAnYm90dG9tJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICB9XG59XG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0UGFkZGVkRXhpdFBvaW50cyhleGl0UG9pbnQsIGV4aXRTaWRlLCBwYWRkaW5nID0gNSkge1xuICAgIGNvbnN0IHBhZGRlZEV4aXRQb2ludHMgPSBbXTtcbiAgICBzd2l0Y2goZXhpdFNpZGUpe1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgcGFkZGVkRXhpdFBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgeDogZXhpdFBvaW50LnggKyBwYWRkaW5nLFxuICAgICAgICAgICAgICAgIHk6IGV4aXRQb2ludC55ICsgcGFkZGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgIHBhZGRlZEV4aXRQb2ludHMucHVzaCh7XG4gICAgICAgICAgICAgICAgeDogZXhpdFBvaW50LnggLSBwYWRkaW5nLFxuICAgICAgICAgICAgICAgIHk6IGV4aXRQb2ludC55IC0gcGFkZGluZ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54ICsgcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgcGFkZGVkRXhpdFBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgLSBwYWRkaW5nXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgeDogZXhpdFBvaW50LnggKyBwYWRkaW5nLFxuICAgICAgICAgICAgICAgIHk6IGV4aXRQb2ludC55ICsgcGFkZGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgcGFkZGVkRXhpdFBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgLSBwYWRkaW5nXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgeDogZXhpdFBvaW50LnggLSBwYWRkaW5nLFxuICAgICAgICAgICAgICAgIHk6IGV4aXRQb2ludC55ICsgcGFkZGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHBhZGRlZEV4aXRQb2ludHM7XG59XG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0UG9pbnRzRnJvbVJlY3QocmVjdCkge1xuICAgIGNvbnN0IHsgdG9wOiB0b3AgLCByaWdodDogcmlnaHQgLCBib3R0b206IGJvdHRvbSAsIGxlZnQ6IGxlZnQgIH0gPSByZWN0O1xuICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgeDogcmlnaHQsXG4gICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgeDogcmlnaHQsXG4gICAgICAgICAgICB5OiBib3R0b21cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IGJvdHRvbVxuICAgICAgICB9XG4gICAgXTtcbn0gLy8gRGV0ZXJtaW5lIGlmIGEgcG9pbnQgaXMgaW5zaWRlIG9mIGEgcG9seWdvbi5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9zdWJzdGFjay9wb2ludC1pbi1wb2x5Z29uXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkaXNQb2ludEluUG9seWdvbihwb2ludCwgcG9seWdvbikge1xuICAgIGNvbnN0IHsgeDogeCAsIHk6IHkgIH0gPSBwb2ludDtcbiAgICBsZXQgaW5zaWRlID0gZmFsc2U7XG4gICAgZm9yKGxldCBpID0gMCwgaiA9IHBvbHlnb24ubGVuZ3RoIC0gMTsgaSA8IHBvbHlnb24ubGVuZ3RoOyBqID0gaSsrKXtcbiAgICAgICAgY29uc3QgeGkgPSBwb2x5Z29uW2ldLng7XG4gICAgICAgIGNvbnN0IHlpID0gcG9seWdvbltpXS55O1xuICAgICAgICBjb25zdCB4aiA9IHBvbHlnb25bal0ueDtcbiAgICAgICAgY29uc3QgeWogPSBwb2x5Z29uW2pdLnk7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICBjb25zdCBpbnRlcnNlY3QgPSB5aSA+IHkgIT09IHlqID4geSAmJiB4IDwgKHhqIC0geGkpICogKHkgLSB5aSkgLyAoeWogLSB5aSkgKyB4aTtcbiAgICAgICAgaWYgKGludGVyc2VjdCkgaW5zaWRlID0gIWluc2lkZTtcbiAgICB9XG4gICAgcmV0dXJuIGluc2lkZTtcbn0gLy8gUmV0dXJucyBhIG5ldyBhcnJheSBvZiBwb2ludHMgcmVwcmVzZW50aW5nIHRoZSBjb252ZXggaHVsbCBvZiB0aGUgZ2l2ZW4gc2V0IG9mIHBvaW50cy5cbi8vIGh0dHBzOi8vd3d3Lm5heXVraS5pby9wYWdlL2NvbnZleC1odWxsLWFsZ29yaXRobVxuZnVuY3Rpb24gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGwocG9pbnRzKSB7XG4gICAgY29uc3QgbmV3UG9pbnRzID0gcG9pbnRzLnNsaWNlKCk7XG4gICAgbmV3UG9pbnRzLnNvcnQoKGEsIGIpPT57XG4gICAgICAgIGlmIChhLnggPCBiLngpIHJldHVybiAtMTtcbiAgICAgICAgZWxzZSBpZiAoYS54ID4gYi54KSByZXR1cm4gMTtcbiAgICAgICAgZWxzZSBpZiAoYS55IDwgYi55KSByZXR1cm4gLTE7XG4gICAgICAgIGVsc2UgaWYgKGEueSA+IGIueSkgcmV0dXJuIDE7XG4gICAgICAgIGVsc2UgcmV0dXJuIDA7XG4gICAgfSk7XG4gICAgcmV0dXJuICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsUHJlc29ydGVkKG5ld1BvaW50cyk7XG59IC8vIFJldHVybnMgdGhlIGNvbnZleCBodWxsLCBhc3N1bWluZyB0aGF0IGVhY2ggcG9pbnRzW2ldIDw9IHBvaW50c1tpICsgMV0uIFJ1bnMgaW4gTyhuKSB0aW1lLlxuZnVuY3Rpb24gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGxQcmVzb3J0ZWQocG9pbnRzKSB7XG4gICAgaWYgKHBvaW50cy5sZW5ndGggPD0gMSkgcmV0dXJuIHBvaW50cy5zbGljZSgpO1xuICAgIGNvbnN0IHVwcGVySHVsbCA9IFtdO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspe1xuICAgICAgICBjb25zdCBwID0gcG9pbnRzW2ldO1xuICAgICAgICB3aGlsZSh1cHBlckh1bGwubGVuZ3RoID49IDIpe1xuICAgICAgICAgICAgY29uc3QgcSA9IHVwcGVySHVsbFt1cHBlckh1bGwubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCByID0gdXBwZXJIdWxsW3VwcGVySHVsbC5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIGlmICgocS54IC0gci54KSAqIChwLnkgLSByLnkpID49IChxLnkgLSByLnkpICogKHAueCAtIHIueCkpIHVwcGVySHVsbC5wb3AoKTtcbiAgICAgICAgICAgIGVsc2UgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdXBwZXJIdWxsLnB1c2gocCk7XG4gICAgfVxuICAgIHVwcGVySHVsbC5wb3AoKTtcbiAgICBjb25zdCBsb3dlckh1bGwgPSBbXTtcbiAgICBmb3IobGV0IGkxID0gcG9pbnRzLmxlbmd0aCAtIDE7IGkxID49IDA7IGkxLS0pe1xuICAgICAgICBjb25zdCBwID0gcG9pbnRzW2kxXTtcbiAgICAgICAgd2hpbGUobG93ZXJIdWxsLmxlbmd0aCA+PSAyKXtcbiAgICAgICAgICAgIGNvbnN0IHEgPSBsb3dlckh1bGxbbG93ZXJIdWxsLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgciA9IGxvd2VySHVsbFtsb3dlckh1bGwubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICBpZiAoKHEueCAtIHIueCkgKiAocC55IC0gci55KSA+PSAocS55IC0gci55KSAqIChwLnggLSByLngpKSBsb3dlckh1bGwucG9wKCk7XG4gICAgICAgICAgICBlbHNlIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGxvd2VySHVsbC5wdXNoKHApO1xuICAgIH1cbiAgICBsb3dlckh1bGwucG9wKCk7XG4gICAgaWYgKHVwcGVySHVsbC5sZW5ndGggPT09IDEgJiYgbG93ZXJIdWxsLmxlbmd0aCA9PT0gMSAmJiB1cHBlckh1bGxbMF0ueCA9PT0gbG93ZXJIdWxsWzBdLnggJiYgdXBwZXJIdWxsWzBdLnkgPT09IGxvd2VySHVsbFswXS55KSByZXR1cm4gdXBwZXJIdWxsO1xuICAgIGVsc2UgcmV0dXJuIHVwcGVySHVsbC5jb25jYXQobG93ZXJIdWxsKTtcbn1cbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyODgxNDk5ZTM3Yjc1YjlhID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2Yjg7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZDtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdiMzZiOGY5MjVhYjc0OTc7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRlOTAwM2UyYmUzN2VjMDYwO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkYzI3ZWUwYWQ3MTBmNzU1OTtcblxuXG5cblxuZXhwb3J0IHskYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMWM1NDBhMjIyNGYwZDg2NSBhcyBjcmVhdGVUb29sdGlwU2NvcGUsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRmNzg2NDlmYjljYTU2NmI4IGFzIFRvb2x0aXBQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4YzY2MGM2M2I3OTJkZWEgYXMgVG9vbHRpcCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDhjNjEwNzQ0ZWZjZjhhMWQgYXMgVG9vbHRpcFRyaWdnZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YjM2YjhmOTI1YWI3NDk3IGFzIFRvb2x0aXBQb3J0YWwsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRlOTAwM2UyYmUzN2VjMDYwIGFzIFRvb2x0aXBDb250ZW50LCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkYzI3ZWUwYWQ3MTBmNzU1OSBhcyBUb29sdGlwQXJyb3csICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyODgxNDk5ZTM3Yjc1YjlhIGFzIFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCBhcyBUcmlnZ2VyLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyBhcyBQb3J0YWwsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1IGFzIEFycm93fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImZ1bmN0aW9uICRhZTY5MzNlNTM1MjQ3ZDNkJGV4cG9ydCQ3ZDE1YjY0Y2Y1YTNhNGM0KHZhbHVlLCBbbWluLCBtYXhdKSB7XG4gICAgcmV0dXJuIE1hdGgubWluKG1heCwgTWF0aC5tYXgobWluLCB2YWx1ZSkpO1xufVxuXG5cblxuXG5leHBvcnQgeyRhZTY5MzNlNTM1MjQ3ZDNkJGV4cG9ydCQ3ZDE1YjY0Y2Y1YTNhNGM0IGFzIGNsYW1wfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7dXNlU3RhdGUgYXMgJDAxYjljJHVzZVN0YXRlLCB1c2VSZWYgYXMgJDAxYjljJHVzZVJlZiwgY3JlYXRlRWxlbWVudCBhcyAkMDFiOWMkY3JlYXRlRWxlbWVudCwgdXNlQ2FsbGJhY2sgYXMgJDAxYjljJHVzZUNhbGxiYWNrLCBmb3J3YXJkUmVmIGFzICQwMWI5YyRmb3J3YXJkUmVmLCB1c2VFZmZlY3QgYXMgJDAxYjljJHVzZUVmZmVjdCwgRnJhZ21lbnQgYXMgJDAxYjljJEZyYWdtZW50LCB1c2VNZW1vIGFzICQwMWI5YyR1c2VNZW1vfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y3JlYXRlUG9ydGFsIGFzICQwMWI5YyRjcmVhdGVQb3J0YWx9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7Y2xhbXAgYXMgJDAxYjljJGNsYW1wfSBmcm9tIFwiQHJhZGl4LXVpL251bWJlclwiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge2NyZWF0ZUNvbGxlY3Rpb24gYXMgJDAxYjljJGNyZWF0ZUNvbGxlY3Rpb259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29sbGVjdGlvblwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDAxYjljJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQwMWI5YyRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VEaXJlY3Rpb24gYXMgJDAxYjljJHVzZURpcmVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXJlY3Rpb25cIjtcbmltcG9ydCB7RGlzbWlzc2FibGVMYXllciBhcyAkMDFiOWMkRGlzbWlzc2FibGVMYXllcn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXNtaXNzYWJsZS1sYXllclwiO1xuaW1wb3J0IHt1c2VGb2N1c0d1YXJkcyBhcyAkMDFiOWMkdXNlRm9jdXNHdWFyZHN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZm9jdXMtZ3VhcmRzXCI7XG5pbXBvcnQge0ZvY3VzU2NvcGUgYXMgJDAxYjljJEZvY3VzU2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZm9jdXMtc2NvcGVcIjtcbmltcG9ydCB7dXNlSWQgYXMgJDAxYjljJHVzZUlkfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWlkXCI7XG5pbXBvcnQge2NyZWF0ZVBvcHBlclNjb3BlIGFzICQwMWI5YyRjcmVhdGVQb3BwZXJTY29wZSwgUm9vdCBhcyAkMDFiOWMkUm9vdCwgQW5jaG9yIGFzICQwMWI5YyRBbmNob3IsIENvbnRlbnQgYXMgJDAxYjljJENvbnRlbnQsIEFycm93IGFzICQwMWI5YyRBcnJvd30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BwZXJcIjtcbmltcG9ydCB7UG9ydGFsIGFzICQwMWI5YyRQb3J0YWx9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9ydGFsXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkMDFiOWMkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHtTbG90IGFzICQwMWI5YyRTbG90fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJDAxYjljJHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDAxYjljJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICQwMWI5YyR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcbmltcG9ydCB7dXNlUHJldmlvdXMgYXMgJDAxYjljJHVzZVByZXZpb3VzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1wcmV2aW91c1wiO1xuaW1wb3J0IHtWaXN1YWxseUhpZGRlbiBhcyAkMDFiOWMkVmlzdWFsbHlIaWRkZW59IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuXCI7XG5pbXBvcnQge2hpZGVPdGhlcnMgYXMgJDAxYjljJGhpZGVPdGhlcnN9IGZyb20gXCJhcmlhLWhpZGRlblwiO1xuaW1wb3J0IHtSZW1vdmVTY3JvbGwgYXMgJDAxYjljJFJlbW92ZVNjcm9sbH0gZnJvbSBcInJlYWN0LXJlbW92ZS1zY3JvbGxcIjtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkT1BFTl9LRVlTID0gW1xuICAgICcgJyxcbiAgICAnRW50ZXInLFxuICAgICdBcnJvd1VwJyxcbiAgICAnQXJyb3dEb3duJ1xuXTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RJT05fS0VZUyA9IFtcbiAgICAnICcsXG4gICAgJ0VudGVyJ1xuXTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUgPSAnU2VsZWN0JztcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbiwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24sICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGVdID0gJDAxYjljJGNyZWF0ZUNvbGxlY3Rpb24oJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FKTtcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDI4NjcyN2E3NWRjMDM5YmRdID0gJDAxYjljJGNyZWF0ZUNvbnRleHRTY29wZSgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUsIFtcbiAgICAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlLFxuICAgICQwMWI5YyRjcmVhdGVQb3BwZXJTY29wZVxuXSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlUG9wcGVyU2NvcGUgPSAkMDFiOWMkY3JlYXRlUG9wcGVyU2NvcGUoKTtcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0XSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSk7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdE5hdGl2ZU9wdGlvbnNQcm92aWRlciwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdE5hdGl2ZU9wdGlvbnNDb250ZXh0XSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWY5YjFhNTllNTkyMjg4ZiA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBvcGVuOiBvcGVuUHJvcCAsIGRlZmF1bHRPcGVuOiBkZWZhdWx0T3BlbiAsIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgdmFsdWU6IHZhbHVlUHJvcCAsIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlICwgb25WYWx1ZUNoYW5nZTogb25WYWx1ZUNoYW5nZSAsIGRpcjogZGlyICwgbmFtZTogbmFtZSAsIGF1dG9Db21wbGV0ZTogYXV0b0NvbXBsZXRlICwgZGlzYWJsZWQ6IGRpc2FibGVkICwgcmVxdWlyZWQ6IHJlcXVpcmVkICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW3RyaWdnZXIsIHNldFRyaWdnZXJdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2YWx1ZU5vZGUsIHNldFZhbHVlTm9kZV0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3ZhbHVlTm9kZUhhc0NoaWxkcmVuLCBzZXRWYWx1ZU5vZGVIYXNDaGlsZHJlbl0gPSAkMDFiOWMkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9ICQwMWI5YyR1c2VEaXJlY3Rpb24oZGlyKTtcbiAgICBjb25zdCBbb3BlbiA9IGZhbHNlLCBzZXRPcGVuXSA9ICQwMWI5YyR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IG9wZW5Qcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdE9wZW4sXG4gICAgICAgIG9uQ2hhbmdlOiBvbk9wZW5DaGFuZ2VcbiAgICB9KTtcbiAgICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9ICQwMWI5YyR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IHZhbHVlUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgb25DaGFuZ2U6IG9uVmFsdWVDaGFuZ2VcbiAgICB9KTtcbiAgICBjb25zdCB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYgPSAkMDFiOWMkdXNlUmVmKG51bGwpOyAvLyBXZSBzZXQgdGhpcyB0byB0cnVlIGJ5IGRlZmF1bHQgc28gdGhhdCBldmVudHMgYnViYmxlIHRvIGZvcm1zIHdpdGhvdXQgSlMgKFNTUilcbiAgICBjb25zdCBpc0Zvcm1Db250cm9sID0gdHJpZ2dlciA/IEJvb2xlYW4odHJpZ2dlci5jbG9zZXN0KCdmb3JtJykpIDogdHJ1ZTtcbiAgICBjb25zdCBbbmF0aXZlT3B0aW9uc1NldCwgc2V0TmF0aXZlT3B0aW9uc1NldF0gPSAkMDFiOWMkdXNlU3RhdGUobmV3IFNldCgpKTsgLy8gVGhlIG5hdGl2ZSBgc2VsZWN0YCBvbmx5IGFzc29jaWF0ZXMgdGhlIGNvcnJlY3QgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgY29ycmVzcG9uZGluZ1xuICAgIC8vIGBvcHRpb25gIGlzIHJlbmRlcmVkIGFzIGEgY2hpbGQgKiphdCB0aGUgc2FtZSB0aW1lKiogYXMgaXRzZWxmLlxuICAgIC8vIEJlY2F1c2UgaXQgbWlnaHQgdGFrZSBhIGZldyByZW5kZXJzIGZvciBvdXIgaXRlbXMgdG8gZ2F0aGVyIHRoZSBpbmZvcm1hdGlvbiB0byBidWlsZFxuICAgIC8vIHRoZSBuYXRpdmUgYG9wdGlvbmAocyksIHdlIGdlbmVyYXRlIGEga2V5IG9uIHRoZSBgc2VsZWN0YCB0byBtYWtlIHN1cmUgUmVhY3QgcmUtYnVpbGRzIGl0XG4gICAgLy8gZWFjaCB0aW1lIHRoZSBvcHRpb25zIGNoYW5nZS5cbiAgICBjb25zdCBuYXRpdmVTZWxlY3RLZXkgPSBBcnJheS5mcm9tKG5hdGl2ZU9wdGlvbnNTZXQpLm1hcCgob3B0aW9uKT0+b3B0aW9uLnByb3BzLnZhbHVlXG4gICAgKS5qb2luKCc7Jyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFJvb3QsIHBvcHBlclNjb3BlLCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQcm92aWRlciwge1xuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWQsXG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0LFxuICAgICAgICB0cmlnZ2VyOiB0cmlnZ2VyLFxuICAgICAgICBvblRyaWdnZXJDaGFuZ2U6IHNldFRyaWdnZXIsXG4gICAgICAgIHZhbHVlTm9kZTogdmFsdWVOb2RlLFxuICAgICAgICBvblZhbHVlTm9kZUNoYW5nZTogc2V0VmFsdWVOb2RlLFxuICAgICAgICB2YWx1ZU5vZGVIYXNDaGlsZHJlbjogdmFsdWVOb2RlSGFzQ2hpbGRyZW4sXG4gICAgICAgIG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2U6IHNldFZhbHVlTm9kZUhhc0NoaWxkcmVuLFxuICAgICAgICBjb250ZW50SWQ6ICQwMWI5YyR1c2VJZCgpLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIG9uVmFsdWVDaGFuZ2U6IHNldFZhbHVlLFxuICAgICAgICBvcGVuOiBvcGVuLFxuICAgICAgICBvbk9wZW5DaGFuZ2U6IHNldE9wZW4sXG4gICAgICAgIGRpcjogZGlyZWN0aW9uLFxuICAgICAgICB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWY6IHRyaWdnZXJQb2ludGVyRG93blBvc1JlZixcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbi5Qcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdE5hdGl2ZU9wdGlvbnNQcm92aWRlciwge1xuICAgICAgICBzY29wZTogcHJvcHMuX19zY29wZVNlbGVjdCxcbiAgICAgICAgb25OYXRpdmVPcHRpb25BZGQ6ICQwMWI5YyR1c2VDYWxsYmFjaygob3B0aW9uKT0+e1xuICAgICAgICAgICAgc2V0TmF0aXZlT3B0aW9uc1NldCgocHJldik9Pm5ldyBTZXQocHJldikuYWRkKG9wdGlvbilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sIFtdKSxcbiAgICAgICAgb25OYXRpdmVPcHRpb25SZW1vdmU6ICQwMWI5YyR1c2VDYWxsYmFjaygob3B0aW9uKT0+e1xuICAgICAgICAgICAgc2V0TmF0aXZlT3B0aW9uc1NldCgocHJldik9PntcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zU2V0ID0gbmV3IFNldChwcmV2KTtcbiAgICAgICAgICAgICAgICBvcHRpb25zU2V0LmRlbGV0ZShvcHRpb24pO1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zU2V0O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIFtdKVxuICAgIH0sIGNoaWxkcmVuKSksIGlzRm9ybUNvbnRyb2wgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRCdWJibGVTZWxlY3QsIHtcbiAgICAgICAga2V5OiBuYXRpdmVTZWxlY3RLZXksXG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIGF1dG9Db21wbGV0ZTogYXV0b0NvbXBsZXRlLFxuICAgICAgICB2YWx1ZTogdmFsdWUgLy8gZW5hYmxlIGZvcm0gYXV0b2ZpbGxcbiAgICAgICAgLFxuICAgICAgICBvbkNoYW5nZTogKGV2ZW50KT0+c2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZFxuICAgIH0sIHZhbHVlID09PSB1bmRlZmluZWQgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIHtcbiAgICAgICAgdmFsdWU6IFwiXCJcbiAgICB9KSA6IG51bGwsIEFycmF5LmZyb20obmF0aXZlT3B0aW9uc1NldCkpIDogbnVsbCkpO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWY5YjFhNTllNTkyMjg4Ziwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0VHJpZ2dlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVFJJR0dFUl9OQU1FID0gJ1NlbGVjdFRyaWdnZXInO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDNhYzFlODhhMWMwYjlmMSA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgZGlzYWJsZWQ6IGRpc2FibGVkID0gZmFsc2UgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVFJJR0dFUl9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gY29udGV4dC5kaXNhYmxlZCB8fCBkaXNhYmxlZDtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5vblRyaWdnZXJDaGFuZ2UpO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW3NlYXJjaFJlZiwgaGFuZGxlVHlwZWFoZWFkU2VhcmNoLCByZXNldFR5cGVhaGVhZF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlVHlwZWFoZWFkU2VhcmNoKChzZWFyY2gpPT57XG4gICAgICAgIGNvbnN0IGVuYWJsZWRJdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+IWl0ZW0uZGlzYWJsZWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBlbmFibGVkSXRlbXMuZmluZCgoaXRlbSk9Pml0ZW0udmFsdWUgPT09IGNvbnRleHQudmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV4dEl0ZW0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkZmluZE5leHRJdGVtKGVuYWJsZWRJdGVtcywgc2VhcmNoLCBjdXJyZW50SXRlbSk7XG4gICAgICAgIGlmIChuZXh0SXRlbSAhPT0gdW5kZWZpbmVkKSBjb250ZXh0Lm9uVmFsdWVDaGFuZ2UobmV4dEl0ZW0udmFsdWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZU9wZW4gPSAoKT0+e1xuICAgICAgICBpZiAoIWlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnRleHQub25PcGVuQ2hhbmdlKHRydWUpOyAvLyByZXNldCB0eXBlYWhlYWQgd2hlbiB3ZSBvcGVuXG4gICAgICAgICAgICByZXNldFR5cGVhaGVhZCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkQW5jaG9yLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcG9wcGVyU2NvcGUpLCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuYnV0dG9uLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICByb2xlOiBcImNvbWJvYm94XCIsXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGNvbnRleHQub3BlbixcbiAgICAgICAgXCJhcmlhLXJlcXVpcmVkXCI6IGNvbnRleHQucmVxdWlyZWQsXG4gICAgICAgIFwiYXJpYS1hdXRvY29tcGxldGVcIjogXCJub25lXCIsXG4gICAgICAgIGRpcjogY29udGV4dC5kaXIsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiBjb250ZXh0Lm9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJyxcbiAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBpc0Rpc2FibGVkID8gJycgOiB1bmRlZmluZWQsXG4gICAgICAgIFwiZGF0YS1wbGFjZWhvbGRlclwiOiBjb250ZXh0LnZhbHVlID09PSB1bmRlZmluZWQgPyAnJyA6IHVuZGVmaW5lZFxuICAgIH0sIHRyaWdnZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyAvLyBFbmFibGUgY29tcGF0aWJpbGl0eSB3aXRoIG5hdGl2ZSBsYWJlbCBvciBjdXN0b20gYExhYmVsYCBcImNsaWNrXCIgZm9yIFNhZmFyaTpcbiAgICAgICAgLFxuICAgICAgICBvbkNsaWNrOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnModHJpZ2dlclByb3BzLm9uQ2xpY2ssIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIFdoaWxzdCBicm93c2VycyBnZW5lcmFsbHkgaGF2ZSBubyBpc3N1ZSBmb2N1c2luZyB0aGUgdHJpZ2dlciB3aGVuIGNsaWNraW5nXG4gICAgICAgICAgICAvLyBvbiBhIGxhYmVsLCBTYWZhcmkgc2VlbXMgdG8gc3RydWdnbGUgd2l0aCB0aGUgZmFjdCB0aGF0IHRoZXJlJ3Mgbm8gYG9uQ2xpY2tgLlxuICAgICAgICAgICAgLy8gV2UgZm9yY2UgYGZvY3VzYCBpbiB0aGlzIGNhc2UuIE5vdGU6IHRoaXMgZG9lc24ndCBjcmVhdGUgYW55IG90aGVyIHNpZGUtZWZmZWN0XG4gICAgICAgICAgICAvLyBiZWNhdXNlIHdlIGFyZSBwcmV2ZW50aW5nIGRlZmF1bHQgaW4gYG9uUG9pbnRlckRvd25gIHNvIGVmZmVjdGl2ZWx5XG4gICAgICAgICAgICAvLyB0aGlzIG9ubHkgcnVucyBmb3IgYSBsYWJlbCBcImNsaWNrXCJcbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuZm9jdXMoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckRvd246ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyh0cmlnZ2VyUHJvcHMub25Qb2ludGVyRG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gcHJldmVudCBpbXBsaWNpdCBwb2ludGVyIGNhcHR1cmVcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9wb2ludGVyZXZlbnRzMy8jaW1wbGljaXQtcG9pbnRlci1jYXB0dXJlXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBpZiAodGFyZ2V0Lmhhc1BvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCkpIHRhcmdldC5yZWxlYXNlUG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKTtcbiAgICAgICAgICAgICAvLyBvbmx5IGNhbGwgaGFuZGxlciBpZiBpdCdzIHRoZSBsZWZ0IGJ1dHRvbiAobW91c2Vkb3duIGdldHMgdHJpZ2dlcmVkIGJ5IGFsbCBtb3VzZSBidXR0b25zKVxuICAgICAgICAgICAgLy8gYnV0IG5vdCB3aGVuIHRoZSBjb250cm9sIGtleSBpcyBwcmVzc2VkIChhdm9pZGluZyBNYWNPUyByaWdodCBjbGljaylcbiAgICAgICAgICAgIGlmIChldmVudC5idXR0b24gPT09IDAgJiYgZXZlbnQuY3RybEtleSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVPcGVuKCk7XG4gICAgICAgICAgICAgICAgY29udGV4dC50cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogTWF0aC5yb3VuZChldmVudC5wYWdlWCksXG4gICAgICAgICAgICAgICAgICAgIHk6IE1hdGgucm91bmQoZXZlbnQucGFnZVkpXG4gICAgICAgICAgICAgICAgfTsgLy8gcHJldmVudCB0cmlnZ2VyIGZyb20gc3RlYWxpbmcgZm9jdXMgZnJvbSB0aGUgYWN0aXZlIGl0ZW0gYWZ0ZXIgb3BlbmluZy5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgb25LZXlEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnModHJpZ2dlclByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgY29uc3QgaXNUeXBpbmdBaGVhZCA9IHNlYXJjaFJlZi5jdXJyZW50ICE9PSAnJztcbiAgICAgICAgICAgIGNvbnN0IGlzTW9kaWZpZXJLZXkgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5tZXRhS2V5O1xuICAgICAgICAgICAgaWYgKCFpc01vZGlmaWVyS2V5ICYmIGV2ZW50LmtleS5sZW5ndGggPT09IDEpIGhhbmRsZVR5cGVhaGVhZFNlYXJjaChldmVudC5rZXkpO1xuICAgICAgICAgICAgaWYgKGlzVHlwaW5nQWhlYWQgJiYgZXZlbnQua2V5ID09PSAnICcpIHJldHVybjtcbiAgICAgICAgICAgIGlmICgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkT1BFTl9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVPcGVuKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDNhYzFlODhhMWMwYjlmMSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVFJJR0dFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFZhbHVlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRWQUxVRV9OQU1FID0gJ1NlbGVjdFZhbHVlJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlMjg4NzMxZmQ3MTI2NGYwID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAvLyBXZSBpZ25vcmUgYGNsYXNzTmFtZWAgYW5kIGBzdHlsZWAgYXMgdGhpcyBwYXJ0IHNob3VsZG4ndCBiZSBzdHlsZWQuXG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgY2xhc3NOYW1lOiBjbGFzc05hbWUgLCBzdHlsZTogc3R5bGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIgLCAuLi52YWx1ZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZBTFVFX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IHsgb25WYWx1ZU5vZGVIYXNDaGlsZHJlbkNoYW5nZTogb25WYWx1ZU5vZGVIYXNDaGlsZHJlbkNoYW5nZSAgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSBjaGlsZHJlbiAhPT0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZXh0Lm9uVmFsdWVOb2RlQ2hhbmdlKTtcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UoaGFzQ2hpbGRyZW4pO1xuICAgIH0sIFtcbiAgICAgICAgb25WYWx1ZU5vZGVIYXNDaGlsZHJlbkNoYW5nZSxcbiAgICAgICAgaGFzQ2hpbGRyZW5cbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLnNwYW4sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgdmFsdWVQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyAvLyB3ZSBkb24ndCB3YW50IGV2ZW50cyBmcm9tIHRoZSBwb3J0YWxsZWQgYFNlbGVjdFZhbHVlYCBjaGlsZHJlbiB0byBidWJibGVcbiAgICAgICAgLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnXG4gICAgICAgIH1cbiAgICB9KSwgY29udGV4dC52YWx1ZSA9PT0gdW5kZWZpbmVkICYmIHBsYWNlaG9sZGVyICE9PSB1bmRlZmluZWQgPyBwbGFjZWhvbGRlciA6IGNoaWxkcmVuKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlMjg4NzMxZmQ3MTI2NGYwLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRWQUxVRV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEljb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElDT05fTkFNRSA9ICdTZWxlY3RJY29uJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5pY29uUHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuc3BhbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gICAgfSwgaWNvblByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSksIGNoaWxkcmVuIHx8ICfilrwnKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJQ09OX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0UG9ydGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRQT1JUQUxfTkFNRSA9ICdTZWxlY3RQb3J0YWwnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGIyYWY2Yzk5NDQyOTYyMTMgPSAocHJvcHMpPT57XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFBvcnRhbCwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZVxuICAgIH0sIHByb3BzKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMmFmNmM5OTQ0Mjk2MjEzLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUgPSAnU2VsZWN0Q29udGVudCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYzk3M2E0YjNjYjg2YTAzZCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtmcmFnbWVudCwgc2V0RnJhZ21lbnRdID0gJDAxYjljJHVzZVN0YXRlKCk7IC8vIHNldHRpbmcgdGhlIGZyYWdtZW50IGluIGB1c2VMYXlvdXRFZmZlY3RgIGFzIGBEb2N1bWVudEZyYWdtZW50YCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBzZXJ2ZXJcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIHNldEZyYWdtZW50KG5ldyBEb2N1bWVudEZyYWdtZW50KCkpO1xuICAgIH0sIFtdKTtcbiAgICBpZiAoIWNvbnRleHQub3Blbikge1xuICAgICAgICBjb25zdCBmcmFnID0gZnJhZ21lbnQ7XG4gICAgICAgIHJldHVybiBmcmFnID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlUG9ydGFsKC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRQcm92aWRlciwge1xuICAgICAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVTZWxlY3RcbiAgICAgICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbi5TbG90LCB7XG4gICAgICAgICAgICBzY29wZTogcHJvcHMuX19zY29wZVNlbGVjdFxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwiZGl2XCIsIG51bGwsIHByb3BzLmNoaWxkcmVuKSkpLCBmcmFnKSA6IG51bGw7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50SW1wbCwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0Q29udGVudEltcGxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOID0gMTA7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRQcm92aWRlciwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0XSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUpO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfSU1QTF9OQU1FID0gJ1NlbGVjdENvbnRlbnRJbXBsJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50SW1wbCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgcG9zaXRpb246IHBvc2l0aW9uID0gJ2l0ZW0tYWxpZ25lZCcgLCBvbkNsb3NlQXV0b0ZvY3VzOiBvbkNsb3NlQXV0b0ZvY3VzICwgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24gLCBvblBvaW50ZXJEb3duT3V0c2lkZTogb25Qb2ludGVyRG93bk91dHNpZGUgLCBzaWRlOiAvL1xuICAgIC8vIFBvcHBlckNvbnRlbnQgcHJvcHNcbiAgICBzaWRlICwgc2lkZU9mZnNldDogc2lkZU9mZnNldCAsIGFsaWduOiBhbGlnbiAsIGFsaWduT2Zmc2V0OiBhbGlnbk9mZnNldCAsIGFycm93UGFkZGluZzogYXJyb3dQYWRkaW5nICwgY29sbGlzaW9uQm91bmRhcnk6IGNvbGxpc2lvbkJvdW5kYXJ5ICwgY29sbGlzaW9uUGFkZGluZzogY29sbGlzaW9uUGFkZGluZyAsIHN0aWNreTogc3RpY2t5ICwgaGlkZVdoZW5EZXRhY2hlZDogaGlkZVdoZW5EZXRhY2hlZCAsIGF2b2lkQ29sbGlzaW9uczogYXZvaWRDb2xsaXNpb25zICwgLy9cbiAgICAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3ZpZXdwb3J0LCBzZXRWaWV3cG9ydF0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0Q29udGVudChub2RlKVxuICAgICk7XG4gICAgY29uc3QgW3NlbGVjdGVkSXRlbSwgc2V0U2VsZWN0ZWRJdGVtXSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbc2VsZWN0ZWRJdGVtVGV4dCwgc2V0U2VsZWN0ZWRJdGVtVGV4dF0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbaXNQb3NpdGlvbmVkLCBzZXRJc1Bvc2l0aW9uZWRdID0gJDAxYjljJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmaXJzdFZhbGlkSXRlbUZvdW5kUmVmID0gJDAxYjljJHVzZVJlZihmYWxzZSk7IC8vIGFyaWEtaGlkZSBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgY29udGVudCAoYmV0dGVyIHN1cHBvcnRlZCBlcXVpdmFsZW50IHRvIHNldHRpbmcgYXJpYS1tb2RhbClcbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50KSByZXR1cm4gJDAxYjljJGhpZGVPdGhlcnMoY29udGVudCk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50XG4gICAgXSk7IC8vIE1ha2Ugc3VyZSB0aGUgd2hvbGUgdHJlZSBoYXMgZm9jdXMgZ3VhcmRzIGFzIG91ciBgU2VsZWN0YCBtYXkgYmVcbiAgICAvLyB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBET00gKGJlY2F1c2Ugb2YgdGhlIGBQb3J0YWxgKVxuICAgICQwMWI5YyR1c2VGb2N1c0d1YXJkcygpO1xuICAgIGNvbnN0IGZvY3VzRmlyc3QgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKGNhbmRpZGF0ZXMpPT57XG4gICAgICAgIGNvbnN0IFtmaXJzdEl0ZW0sIC4uLnJlc3RJdGVtc10gPSBnZXRJdGVtcygpLm1hcCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgW2xhc3RJdGVtXSA9IHJlc3RJdGVtcy5zbGljZSgtMSk7XG4gICAgICAgIGNvbnN0IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcyl7XG4gICAgICAgICAgICAvLyBpZiBmb2N1cyBpcyBhbHJlYWR5IHdoZXJlIHdlIHdhbnQgdG8gZ28sIHdlIGRvbid0IHdhbnQgdG8ga2VlcCBnb2luZyB0aHJvdWdoIHRoZSBjYW5kaWRhdGVzXG4gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09PSBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCkgcmV0dXJuO1xuICAgICAgICAgICAgY2FuZGlkYXRlID09PSBudWxsIHx8IGNhbmRpZGF0ZSA9PT0gdm9pZCAwIHx8IGNhbmRpZGF0ZS5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICAgICAgYmxvY2s6ICduZWFyZXN0J1xuICAgICAgICAgICAgfSk7IC8vIHZpZXdwb3J0IG1pZ2h0IGhhdmUgcGFkZGluZyBzbyBzY3JvbGwgdG8gaXRzIGVkZ2VzIHdoZW4gZm9jdXNpbmcgZmlyc3QvbGFzdCBpdGVtcy5cbiAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT09IGZpcnN0SXRlbSAmJiB2aWV3cG9ydCkgdmlld3BvcnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT09IGxhc3RJdGVtICYmIHZpZXdwb3J0KSB2aWV3cG9ydC5zY3JvbGxUb3AgPSB2aWV3cG9ydC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICAgICBjYW5kaWRhdGUgPT09IG51bGwgfHwgY2FuZGlkYXRlID09PSB2b2lkIDAgfHwgY2FuZGlkYXRlLmZvY3VzKCk7XG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQpIHJldHVybjtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgZ2V0SXRlbXMsXG4gICAgICAgIHZpZXdwb3J0XG4gICAgXSk7XG4gICAgY29uc3QgZm9jdXNTZWxlY3RlZEl0ZW0gPSAkMDFiOWMkdXNlQ2FsbGJhY2soKCk9PmZvY3VzRmlyc3QoW1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtLFxuICAgICAgICAgICAgY29udGVudFxuICAgICAgICBdKVxuICAgICwgW1xuICAgICAgICBmb2N1c0ZpcnN0LFxuICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICAgIGNvbnRlbnRcbiAgICBdKTsgLy8gU2luY2UgdGhpcyBpcyBub3QgZGVwZW5kZW50IG9uIGxheW91dCwgd2Ugd2FudCB0byBlbnN1cmUgdGhpcyBydW5zIGF0IHRoZSBzYW1lIHRpbWUgYXNcbiAgICAvLyBvdGhlciBlZmZlY3RzIGFjcm9zcyBjb21wb25lbnRzLiBIZW5jZSB3aHkgd2UgZG9uJ3QgY2FsbCBgZm9jdXNTZWxlY3RlZEl0ZW1gIGluc2lkZSBgcG9zaXRpb25gLlxuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGlzUG9zaXRpb25lZCkgZm9jdXNTZWxlY3RlZEl0ZW0oKTtcbiAgICB9LCBbXG4gICAgICAgIGlzUG9zaXRpb25lZCxcbiAgICAgICAgZm9jdXNTZWxlY3RlZEl0ZW1cbiAgICBdKTsgLy8gcHJldmVudCBzZWxlY3RpbmcgaXRlbXMgb24gYHBvaW50ZXJ1cGAgaW4gc29tZSBjYXNlcyBhZnRlciBvcGVuaW5nIGZyb20gYHBvaW50ZXJkb3duYFxuICAgIC8vIGFuZCBjbG9zZSBvbiBgcG9pbnRlcnVwYCBvdXRzaWRlLlxuICAgIGNvbnN0IHsgb25PcGVuQ2hhbmdlOiBvbk9wZW5DaGFuZ2UgLCB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWY6IHRyaWdnZXJQb2ludGVyRG93blBvc1JlZiAgfSA9IGNvbnRleHQ7XG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgbGV0IHBvaW50ZXJNb3ZlRGVsdGEgPSB7XG4gICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlUG9pbnRlck1vdmUgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgdmFyIF90cmlnZ2VyUG9pbnRlckRvd25QbywgX3RyaWdnZXJQb2ludGVyRG93blBvMiwgX3RyaWdnZXJQb2ludGVyRG93blBvMywgX3RyaWdnZXJQb2ludGVyRG93blBvNDtcbiAgICAgICAgICAgICAgICBwb2ludGVyTW92ZURlbHRhID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiBNYXRoLmFicyhNYXRoLnJvdW5kKGV2ZW50LnBhZ2VYKSAtICgoX3RyaWdnZXJQb2ludGVyRG93blBvID0gKF90cmlnZ2VyUG9pbnRlckRvd25QbzIgPSB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3RyaWdnZXJQb2ludGVyRG93blBvMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RyaWdnZXJQb2ludGVyRG93blBvMi54KSAhPT0gbnVsbCAmJiBfdHJpZ2dlclBvaW50ZXJEb3duUG8gIT09IHZvaWQgMCA/IF90cmlnZ2VyUG9pbnRlckRvd25QbyA6IDApKSxcbiAgICAgICAgICAgICAgICAgICAgeTogTWF0aC5hYnMoTWF0aC5yb3VuZChldmVudC5wYWdlWSkgLSAoKF90cmlnZ2VyUG9pbnRlckRvd25QbzMgPSAoX3RyaWdnZXJQb2ludGVyRG93blBvNCA9IHRyaWdnZXJQb2ludGVyRG93blBvc1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfdHJpZ2dlclBvaW50ZXJEb3duUG80ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdHJpZ2dlclBvaW50ZXJEb3duUG80LnkpICE9PSBudWxsICYmIF90cmlnZ2VyUG9pbnRlckRvd25QbzMgIT09IHZvaWQgMCA/IF90cmlnZ2VyUG9pbnRlckRvd25QbzMgOiAwKSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJVcCA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcG9pbnRlciBoYXNuJ3QgbW92ZWQgYnkgYSBjZXJ0YWluIHRocmVzaG9sZCB0aGVuIHdlIHByZXZlbnQgc2VsZWN0aW5nIGl0ZW0gb24gYHBvaW50ZXJ1cGAuXG4gICAgICAgICAgICAgICAgaWYgKHBvaW50ZXJNb3ZlRGVsdGEueCA8PSAxMCAmJiBwb2ludGVyTW92ZURlbHRhLnkgPD0gMTApIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZWxzZSAvLyBvdGhlcndpc2UsIGlmIHRoZSBldmVudCB3YXMgb3V0c2lkZSB0aGUgY29udGVudCwgY2xvc2UuXG4gICAgICAgICAgICAgICAgaWYgKCFjb250ZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIG9uT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVQb2ludGVyTW92ZSk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgaGFuZGxlUG9pbnRlck1vdmUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIGhhbmRsZVBvaW50ZXJVcCwge1xuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVBvaW50ZXJNb3ZlKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBoYW5kbGVQb2ludGVyVXAsIHtcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgb25PcGVuQ2hhbmdlLFxuICAgICAgICB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWZcbiAgICBdKTtcbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGNsb3NlID0gKCk9Pm9uT3BlbkNoYW5nZShmYWxzZSlcbiAgICAgICAgO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGNsb3NlKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlKTtcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIGNsb3NlKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjbG9zZSk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBvbk9wZW5DaGFuZ2VcbiAgICBdKTtcbiAgICBjb25zdCBbc2VhcmNoUmVmLCBoYW5kbGVUeXBlYWhlYWRTZWFyY2hdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVR5cGVhaGVhZFNlYXJjaCgoc2VhcmNoKT0+e1xuICAgICAgICBjb25zdCBlbmFibGVkSXRlbXMgPSBnZXRJdGVtcygpLmZpbHRlcigoaXRlbSk9PiFpdGVtLmRpc2FibGVkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gZW5hYmxlZEl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLnJlZi5jdXJyZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5leHRJdGVtID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGZpbmROZXh0SXRlbShlbmFibGVkSXRlbXMsIHNlYXJjaCwgY3VycmVudEl0ZW0pO1xuICAgICAgICBpZiAobmV4dEl0ZW0pIC8qKlxuICAgICAgICogSW1wZXJhdGl2ZSBmb2N1cyBkdXJpbmcga2V5ZG93biBpcyByaXNreSBzbyB3ZSBwcmV2ZW50IFJlYWN0J3MgYmF0Y2hpbmcgdXBkYXRlc1xuICAgICAgICogdG8gYXZvaWQgcG90ZW50aWFsIGJ1Z3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8yMDMzMlxuICAgICAgICovIHNldFRpbWVvdXQoKCk9Pm5leHRJdGVtLnJlZi5jdXJyZW50LmZvY3VzKClcbiAgICAgICAgKTtcbiAgICB9KTtcbiAgICBjb25zdCBpdGVtUmVmQ2FsbGJhY2sgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKG5vZGUsIHZhbHVlLCBkaXNhYmxlZCk9PntcbiAgICAgICAgY29uc3QgaXNGaXJzdFZhbGlkSXRlbSA9ICFmaXJzdFZhbGlkSXRlbUZvdW5kUmVmLmN1cnJlbnQgJiYgIWRpc2FibGVkO1xuICAgICAgICBjb25zdCBpc1NlbGVjdGVkSXRlbSA9IGNvbnRleHQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBjb250ZXh0LnZhbHVlID09PSB2YWx1ZTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRJdGVtIHx8IGlzRmlyc3RWYWxpZEl0ZW0pIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkSXRlbShub2RlKTtcbiAgICAgICAgICAgIGlmIChpc0ZpcnN0VmFsaWRJdGVtKSBmaXJzdFZhbGlkSXRlbUZvdW5kUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZXh0LnZhbHVlXG4gICAgXSk7XG4gICAgY29uc3QgaGFuZGxlSXRlbUxlYXZlID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT5jb250ZW50ID09PSBudWxsIHx8IGNvbnRlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRlbnQuZm9jdXMoKVxuICAgICwgW1xuICAgICAgICBjb250ZW50XG4gICAgXSk7XG4gICAgY29uc3QgaXRlbVRleHRSZWZDYWxsYmFjayA9ICQwMWI5YyR1c2VDYWxsYmFjaygobm9kZSwgdmFsdWUsIGRpc2FibGVkKT0+e1xuICAgICAgICBjb25zdCBpc0ZpcnN0VmFsaWRJdGVtID0gIWZpcnN0VmFsaWRJdGVtRm91bmRSZWYuY3VycmVudCAmJiAhZGlzYWJsZWQ7XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0ZWRJdGVtID0gY29udGV4dC52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIGNvbnRleHQudmFsdWUgPT09IHZhbHVlO1xuICAgICAgICBpZiAoaXNTZWxlY3RlZEl0ZW0gfHwgaXNGaXJzdFZhbGlkSXRlbSkgc2V0U2VsZWN0ZWRJdGVtVGV4dChub2RlKTtcbiAgICB9LCBbXG4gICAgICAgIGNvbnRleHQudmFsdWVcbiAgICBdKTtcbiAgICBjb25zdCBTZWxlY3RQb3NpdGlvbiA9IHBvc2l0aW9uID09PSAncG9wcGVyJyA/ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiA6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uOyAvLyBTaWxlbnRseSBpZ25vcmUgcHJvcHMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSBgU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbmBcbiAgICBjb25zdCBwb3BwZXJDb250ZW50UHJvcHMgPSBTZWxlY3RQb3NpdGlvbiA9PT0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFBvcHBlclBvc2l0aW9uID8ge1xuICAgICAgICBzaWRlOiBzaWRlLFxuICAgICAgICBzaWRlT2Zmc2V0OiBzaWRlT2Zmc2V0LFxuICAgICAgICBhbGlnbjogYWxpZ24sXG4gICAgICAgIGFsaWduT2Zmc2V0OiBhbGlnbk9mZnNldCxcbiAgICAgICAgYXJyb3dQYWRkaW5nOiBhcnJvd1BhZGRpbmcsXG4gICAgICAgIGNvbGxpc2lvbkJvdW5kYXJ5OiBjb2xsaXNpb25Cb3VuZGFyeSxcbiAgICAgICAgY29sbGlzaW9uUGFkZGluZzogY29sbGlzaW9uUGFkZGluZyxcbiAgICAgICAgc3RpY2t5OiBzdGlja3ksXG4gICAgICAgIGhpZGVXaGVuRGV0YWNoZWQ6IGhpZGVXaGVuRGV0YWNoZWQsXG4gICAgICAgIGF2b2lkQ29sbGlzaW9uczogYXZvaWRDb2xsaXNpb25zXG4gICAgfSA6IHt9O1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgIHZpZXdwb3J0OiB2aWV3cG9ydCxcbiAgICAgICAgb25WaWV3cG9ydENoYW5nZTogc2V0Vmlld3BvcnQsXG4gICAgICAgIGl0ZW1SZWZDYWxsYmFjazogaXRlbVJlZkNhbGxiYWNrLFxuICAgICAgICBzZWxlY3RlZEl0ZW06IHNlbGVjdGVkSXRlbSxcbiAgICAgICAgb25JdGVtTGVhdmU6IGhhbmRsZUl0ZW1MZWF2ZSxcbiAgICAgICAgaXRlbVRleHRSZWZDYWxsYmFjazogaXRlbVRleHRSZWZDYWxsYmFjayxcbiAgICAgICAgZm9jdXNTZWxlY3RlZEl0ZW06IGZvY3VzU2VsZWN0ZWRJdGVtLFxuICAgICAgICBzZWxlY3RlZEl0ZW1UZXh0OiBzZWxlY3RlZEl0ZW1UZXh0LFxuICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgIGlzUG9zaXRpb25lZDogaXNQb3NpdGlvbmVkLFxuICAgICAgICBzZWFyY2hSZWY6IHNlYXJjaFJlZlxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFJlbW92ZVNjcm9sbCwge1xuICAgICAgICBhczogJDAxYjljJFNsb3QsXG4gICAgICAgIGFsbG93UGluY2hab29tOiB0cnVlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkRm9jdXNTY29wZSwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlIC8vIHdlIG1ha2Ugc3VyZSB3ZSdyZSBub3QgdHJhcHBpbmcgb25jZSBpdCdzIGJlZW4gY2xvc2VkXG4gICAgICAgICxcbiAgICAgICAgdHJhcHBlZDogY29udGV4dC5vcGVuLFxuICAgICAgICBvbk1vdW50QXV0b0ZvY3VzOiAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyB3ZSBwcmV2ZW50IG9wZW4gYXV0b2ZvY3VzIGJlY2F1c2Ugd2UgbWFudWFsbHkgZm9jdXMgdGhlIHNlbGVjdGVkIGl0ZW1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uVW5tb3VudEF1dG9Gb2N1czogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uQ2xvc2VBdXRvRm9jdXMsIChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfY29udGV4dCR0cmlnZ2VyO1xuICAgICAgICAgICAgKF9jb250ZXh0JHRyaWdnZXIgPSBjb250ZXh0LnRyaWdnZXIpID09PSBudWxsIHx8IF9jb250ZXh0JHRyaWdnZXIgPT09IHZvaWQgMCB8fCBfY29udGV4dCR0cmlnZ2VyLmZvY3VzKHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0pXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkRGlzbWlzc2FibGVMYXllciwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlLFxuICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IHRydWUsXG4gICAgICAgIG9uRXNjYXBlS2V5RG93bjogb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogb25Qb2ludGVyRG93bk91dHNpZGUgLy8gV2hlbiBmb2N1cyBpcyB0cmFwcGVkLCBhIGZvY3Vzb3V0IGV2ZW50IG1heSBzdGlsbCBoYXBwZW4uXG4gICAgICAgICxcbiAgICAgICAgb25Gb2N1c091dHNpZGU6IChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgLFxuICAgICAgICBvbkRpc21pc3M6ICgpPT5jb250ZXh0Lm9uT3BlbkNoYW5nZShmYWxzZSlcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFNlbGVjdFBvc2l0aW9uLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICByb2xlOiBcImxpc3Rib3hcIixcbiAgICAgICAgaWQ6IGNvbnRleHQuY29udGVudElkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5vcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCcsXG4gICAgICAgIGRpcjogY29udGV4dC5kaXIsXG4gICAgICAgIG9uQ29udGV4dE1lbnU6IChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9LCBjb250ZW50UHJvcHMsIHBvcHBlckNvbnRlbnRQcm9wcywge1xuICAgICAgICBvblBsYWNlZDogKCk9PnNldElzUG9zaXRpb25lZCh0cnVlKVxuICAgICAgICAsXG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLy8gZmxleCBsYXlvdXQgc28gd2UgY2FuIHBsYWNlIHRoZSBzY3JvbGwgYnV0dG9ucyBwcm9wZXJseVxuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAvLyByZXNldCB0aGUgb3V0bGluZSBieSBkZWZhdWx0IGFzIHRoZSBjb250ZW50IE1BWSBnZXQgZm9jdXNlZFxuICAgICAgICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgICAgICAgLi4uY29udGVudFByb3BzLnN0eWxlXG4gICAgICAgIH0sXG4gICAgICAgIG9uS2V5RG93bjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGNvbnRlbnRQcm9wcy5vbktleURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIGNvbnN0IGlzTW9kaWZpZXJLZXkgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5tZXRhS2V5OyAvLyBzZWxlY3Qgc2hvdWxkIG5vdCBiZSBuYXZpZ2F0ZWQgdXNpbmcgdGFiIGtleSBzbyB3ZSBwcmV2ZW50IGl0XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICghaXNNb2RpZmllcktleSAmJiBldmVudC5rZXkubGVuZ3RoID09PSAxKSBoYW5kbGVUeXBlYWhlYWRTZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICAgIGlmIChbXG4gICAgICAgICAgICAgICAgJ0Fycm93VXAnLFxuICAgICAgICAgICAgICAgICdBcnJvd0Rvd24nLFxuICAgICAgICAgICAgICAgICdIb21lJyxcbiAgICAgICAgICAgICAgICAnRW5kJ1xuICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBnZXRJdGVtcygpLmZpbHRlcigoaXRlbSk9PiFpdGVtLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBsZXQgY2FuZGlkYXRlTm9kZXMgPSBpdGVtcy5tYXAoKGl0ZW0pPT5pdGVtLnJlZi5jdXJyZW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoW1xuICAgICAgICAgICAgICAgICAgICAnQXJyb3dVcCcsXG4gICAgICAgICAgICAgICAgICAgICdFbmQnXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5rZXkpKSBjYW5kaWRhdGVOb2RlcyA9IGNhbmRpZGF0ZU5vZGVzLnNsaWNlKCkucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChbXG4gICAgICAgICAgICAgICAgICAgICdBcnJvd1VwJyxcbiAgICAgICAgICAgICAgICAgICAgJ0Fycm93RG93bidcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGNhbmRpZGF0ZU5vZGVzLmluZGV4T2YoY3VycmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVOb2RlcyA9IGNhbmRpZGF0ZU5vZGVzLnNsaWNlKGN1cnJlbnRJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICogSW1wZXJhdGl2ZSBmb2N1cyBkdXJpbmcga2V5ZG93biBpcyByaXNreSBzbyB3ZSBwcmV2ZW50IFJlYWN0J3MgYmF0Y2hpbmcgdXBkYXRlc1xuICAgICAgICAgKiB0byBhdm9pZCBwb3RlbnRpYWwgYnVncy4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzIwMzMyXG4gICAgICAgICAqLyBzZXRUaW1lb3V0KCgpPT5mb2N1c0ZpcnN0KGNhbmRpZGF0ZU5vZGVzKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KSkpKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRJbXBsLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX0lNUExfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX0FMSUdORURfUE9TSVRJT05fTkFNRSA9ICdTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBvblBsYWNlZDogb25QbGFjZWQgLCAuLi5wb3BwZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtjb250ZW50V3JhcHBlciwgc2V0Q29udGVudFdyYXBwZXJdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjb250ZW50LCBzZXRDb250ZW50XSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRDb250ZW50KG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmID0gJDAxYjljJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qgc2hvdWxkUmVwb3NpdGlvblJlZiA9ICQwMWI5YyR1c2VSZWYodHJ1ZSk7XG4gICAgY29uc3QgeyB2aWV3cG9ydDogdmlld3BvcnQgLCBzZWxlY3RlZEl0ZW06IHNlbGVjdGVkSXRlbSAsIHNlbGVjdGVkSXRlbVRleHQ6IHNlbGVjdGVkSXRlbVRleHQgLCBmb2N1c1NlbGVjdGVkSXRlbTogZm9jdXNTZWxlY3RlZEl0ZW0gIH0gPSBjb250ZW50Q29udGV4dDtcbiAgICBjb25zdCBwb3NpdGlvbiA9ICQwMWI5YyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICBpZiAoY29udGV4dC50cmlnZ2VyICYmIGNvbnRleHQudmFsdWVOb2RlICYmIGNvbnRlbnRXcmFwcGVyICYmIGNvbnRlbnQgJiYgdmlld3BvcnQgJiYgc2VsZWN0ZWRJdGVtICYmIHNlbGVjdGVkSXRlbVRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJSZWN0ID0gY29udGV4dC50cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gIEhvcml6b250YWwgcG9zaXRpb25pbmdcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICBjb25zdCBjb250ZW50UmVjdCA9IGNvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZU5vZGVSZWN0ID0gY29udGV4dC52YWx1ZU5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBpdGVtVGV4dFJlY3QgPSBzZWxlY3RlZEl0ZW1UZXh0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgaWYgKGNvbnRleHQuZGlyICE9PSAncnRsJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1UZXh0T2Zmc2V0ID0gaXRlbVRleHRSZWN0LmxlZnQgLSBjb250ZW50UmVjdC5sZWZ0O1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSB2YWx1ZU5vZGVSZWN0LmxlZnQgLSBpdGVtVGV4dE9mZnNldDtcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0RGVsdGEgPSB0cmlnZ2VyUmVjdC5sZWZ0IC0gbGVmdDtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5Db250ZW50V2lkdGggPSB0cmlnZ2VyUmVjdC53aWR0aCArIGxlZnREZWx0YTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50V2lkdGggPSBNYXRoLm1heChtaW5Db250ZW50V2lkdGgsIGNvbnRlbnRSZWN0LndpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodEVkZ2UgPSB3aW5kb3cuaW5uZXJXaWR0aCAtICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTjtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkTGVmdCA9ICQwMWI5YyRjbGFtcChsZWZ0LCBbXG4gICAgICAgICAgICAgICAgICAgICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTixcbiAgICAgICAgICAgICAgICAgICAgcmlnaHRFZGdlIC0gY29udGVudFdpZHRoXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubWluV2lkdGggPSBtaW5Db250ZW50V2lkdGggKyAncHgnO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLmxlZnQgPSBjbGFtcGVkTGVmdCArICdweCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1UZXh0T2Zmc2V0ID0gY29udGVudFJlY3QucmlnaHQgLSBpdGVtVGV4dFJlY3QucmlnaHQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHQgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHZhbHVlTm9kZVJlY3QucmlnaHQgLSBpdGVtVGV4dE9mZnNldDtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodERlbHRhID0gd2luZG93LmlubmVyV2lkdGggLSB0cmlnZ2VyUmVjdC5yaWdodCAtIHJpZ2h0O1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbkNvbnRlbnRXaWR0aCA9IHRyaWdnZXJSZWN0LndpZHRoICsgcmlnaHREZWx0YTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50V2lkdGggPSBNYXRoLm1heChtaW5Db250ZW50V2lkdGgsIGNvbnRlbnRSZWN0LndpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0RWRnZSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWRSaWdodCA9ICQwMWI5YyRjbGFtcChyaWdodCwgW1xuICAgICAgICAgICAgICAgICAgICAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4sXG4gICAgICAgICAgICAgICAgICAgIGxlZnRFZGdlIC0gY29udGVudFdpZHRoXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubWluV2lkdGggPSBtaW5Db250ZW50V2lkdGggKyAncHgnO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLnJpZ2h0ID0gY2xhbXBlZFJpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIH0gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vIFZlcnRpY2FsIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBnZXRJdGVtcygpO1xuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOICogMjtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zSGVpZ2h0ID0gdmlld3BvcnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgY29udGVudFN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRlbnQpO1xuICAgICAgICAgICAgY29uc3QgY29udGVudEJvcmRlclRvcFdpZHRoID0gcGFyc2VJbnQoY29udGVudFN0eWxlcy5ib3JkZXJUb3BXaWR0aCwgMTApO1xuICAgICAgICAgICAgY29uc3QgY29udGVudFBhZGRpbmdUb3AgPSBwYXJzZUludChjb250ZW50U3R5bGVzLnBhZGRpbmdUb3AsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRCb3JkZXJCb3R0b21XaWR0aCA9IHBhcnNlSW50KGNvbnRlbnRTdHlsZXMuYm9yZGVyQm90dG9tV2lkdGgsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQYWRkaW5nQm90dG9tID0gcGFyc2VJbnQoY29udGVudFN0eWxlcy5wYWRkaW5nQm90dG9tLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBmdWxsQ29udGVudEhlaWdodCA9IGNvbnRlbnRCb3JkZXJUb3BXaWR0aCArIGNvbnRlbnRQYWRkaW5nVG9wICsgaXRlbXNIZWlnaHQgKyBjb250ZW50UGFkZGluZ0JvdHRvbSArIGNvbnRlbnRCb3JkZXJCb3R0b21XaWR0aDsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgICAgICBjb25zdCBtaW5Db250ZW50SGVpZ2h0ID0gTWF0aC5taW4oc2VsZWN0ZWRJdGVtLm9mZnNldEhlaWdodCAqIDUsIGZ1bGxDb250ZW50SGVpZ2h0KTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0U3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodmlld3BvcnQpO1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRQYWRkaW5nVG9wID0gcGFyc2VJbnQodmlld3BvcnRTdHlsZXMucGFkZGluZ1RvcCwgMTApO1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRQYWRkaW5nQm90dG9tID0gcGFyc2VJbnQodmlld3BvcnRTdHlsZXMucGFkZGluZ0JvdHRvbSwgMTApO1xuICAgICAgICAgICAgY29uc3QgdG9wRWRnZVRvVHJpZ2dlck1pZGRsZSA9IHRyaWdnZXJSZWN0LnRvcCArIHRyaWdnZXJSZWN0LmhlaWdodCAvIDIgLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU47XG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyTWlkZGxlVG9Cb3R0b21FZGdlID0gYXZhaWxhYmxlSGVpZ2h0IC0gdG9wRWRnZVRvVHJpZ2dlck1pZGRsZTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbUhhbGZIZWlnaHQgPSBzZWxlY3RlZEl0ZW0ub2Zmc2V0SGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1PZmZzZXRNaWRkbGUgPSBzZWxlY3RlZEl0ZW0ub2Zmc2V0VG9wICsgc2VsZWN0ZWRJdGVtSGFsZkhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRUb3BUb0l0ZW1NaWRkbGUgPSBjb250ZW50Qm9yZGVyVG9wV2lkdGggKyBjb250ZW50UGFkZGluZ1RvcCArIGl0ZW1PZmZzZXRNaWRkbGU7XG4gICAgICAgICAgICBjb25zdCBpdGVtTWlkZGxlVG9Db250ZW50Qm90dG9tID0gZnVsbENvbnRlbnRIZWlnaHQgLSBjb250ZW50VG9wVG9JdGVtTWlkZGxlO1xuICAgICAgICAgICAgY29uc3Qgd2lsbEFsaWduV2l0aG91dFRvcE92ZXJmbG93ID0gY29udGVudFRvcFRvSXRlbU1pZGRsZSA8PSB0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlO1xuICAgICAgICAgICAgaWYgKHdpbGxBbGlnbldpdGhvdXRUb3BPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTGFzdEl0ZW0gPSBzZWxlY3RlZEl0ZW0gPT09IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdLnJlZi5jdXJyZW50O1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLmJvdHRvbSA9IFwiMHB4XCI7XG4gICAgICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRPZmZzZXRCb3R0b20gPSBjb250ZW50LmNsaWVudEhlaWdodCAtIHZpZXdwb3J0Lm9mZnNldFRvcCAtIHZpZXdwb3J0Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkVHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZSA9IE1hdGgubWF4KHRyaWdnZXJNaWRkbGVUb0JvdHRvbUVkZ2UsIHNlbGVjdGVkSXRlbUhhbGZIZWlnaHQgKyAoaXNMYXN0SXRlbSA/IHZpZXdwb3J0UGFkZGluZ0JvdHRvbSA6IDApICsgdmlld3BvcnRPZmZzZXRCb3R0b20gKyBjb250ZW50Qm9yZGVyQm90dG9tV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGNvbnRlbnRUb3BUb0l0ZW1NaWRkbGUgKyBjbGFtcGVkVHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZTtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0ZpcnN0SXRlbSA9IHNlbGVjdGVkSXRlbSA9PT0gaXRlbXNbMF0ucmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUudG9wID0gXCIwcHhcIjtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkVG9wRWRnZVRvVHJpZ2dlck1pZGRsZSA9IE1hdGgubWF4KHRvcEVkZ2VUb1RyaWdnZXJNaWRkbGUsIGNvbnRlbnRCb3JkZXJUb3BXaWR0aCArIHZpZXdwb3J0Lm9mZnNldFRvcCArIChpc0ZpcnN0SXRlbSA/IHZpZXdwb3J0UGFkZGluZ1RvcCA6IDApICsgc2VsZWN0ZWRJdGVtSGFsZkhlaWdodCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gY2xhbXBlZFRvcEVkZ2VUb1RyaWdnZXJNaWRkbGUgKyBpdGVtTWlkZGxlVG9Db250ZW50Qm90dG9tO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7XG4gICAgICAgICAgICAgICAgdmlld3BvcnQuc2Nyb2xsVG9wID0gY29udGVudFRvcFRvSXRlbU1pZGRsZSAtIHRvcEVkZ2VUb1RyaWdnZXJNaWRkbGUgKyB2aWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5tYXJnaW4gPSBgJHskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU59cHggMGA7XG4gICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5taW5IZWlnaHQgPSBtaW5Db250ZW50SGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1heEhlaWdodCA9IGF2YWlsYWJsZUhlaWdodCArICdweCc7IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICBvblBsYWNlZCA9PT0gbnVsbCB8fCBvblBsYWNlZCA9PT0gdm9pZCAwIHx8IG9uUGxhY2VkKCk7IC8vIHdlIGRvbid0IHdhbnQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIGFkanVzdG1lbnQgdG8gdHJpZ2dlciBcImV4cGFuZCBvbiBzY3JvbGxcIlxuICAgICAgICAgICAgLy8gc28gd2UgZXhwbGljaXRseSB0dXJuIGl0IG9uIG9ubHkgYWZ0ZXIgdGhleSd2ZSByZWdpc3RlcmVkLlxuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5zaG91bGRFeHBhbmRPblNjcm9sbFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgZ2V0SXRlbXMsXG4gICAgICAgIGNvbnRleHQudHJpZ2dlcixcbiAgICAgICAgY29udGV4dC52YWx1ZU5vZGUsXG4gICAgICAgIGNvbnRlbnRXcmFwcGVyLFxuICAgICAgICBjb250ZW50LFxuICAgICAgICB2aWV3cG9ydCxcbiAgICAgICAgc2VsZWN0ZWRJdGVtLFxuICAgICAgICBzZWxlY3RlZEl0ZW1UZXh0LFxuICAgICAgICBjb250ZXh0LmRpcixcbiAgICAgICAgb25QbGFjZWRcbiAgICBdKTtcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT5wb3NpdGlvbigpXG4gICAgLCBbXG4gICAgICAgIHBvc2l0aW9uXG4gICAgXSk7IC8vIGNvcHkgei1pbmRleCBmcm9tIGNvbnRlbnQgdG8gd3JhcHBlclxuICAgIGNvbnN0IFtjb250ZW50WkluZGV4LCBzZXRDb250ZW50WkluZGV4XSA9ICQwMWI5YyR1c2VTdGF0ZSgpO1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnQpIHNldENvbnRlbnRaSW5kZXgod2luZG93LmdldENvbXB1dGVkU3R5bGUoY29udGVudCkuekluZGV4KTtcbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnRcbiAgICBdKTsgLy8gV2hlbiB0aGUgdmlld3BvcnQgYmVjb21lcyBzY3JvbGxhYmxlIGF0IHRoZSB0b3AsIHRoZSBzY3JvbGwgdXAgYnV0dG9uIHdpbGwgbW91bnQuXG4gICAgLy8gQmVjYXVzZSBpdCBpcyBwYXJ0IG9mIHRoZSBub3JtYWwgZmxvdywgaXQgd2lsbCBwdXNoIGRvd24gdGhlIHZpZXdwb3J0LCB0aHVzIHRocm93aW5nIG91clxuICAgIC8vIHRyaWdnZXIgPT4gc2VsZWN0ZWRJdGVtIGFsaWdubWVudCBvZmYgYnkgdGhlIGFtb3VudCB0aGUgdmlld3BvcnQgd2FzIHB1c2hlZCBkb3duLlxuICAgIC8vIFdlIHdhaXQgZm9yIHRoaXMgdG8gaGFwcGVuIGFuZCB0aGVuIHJlLXJ1biB0aGUgcG9zaXRpbmluZyBsb2dpYyBvbmUgbW9yZSB0aW1lIHRvIGFjY291bnQgZm9yIGl0LlxuICAgIGNvbnN0IGhhbmRsZVNjcm9sbEJ1dHRvbkNoYW5nZSA9ICQwMWI5YyR1c2VDYWxsYmFjaygobm9kZSk9PntcbiAgICAgICAgaWYgKG5vZGUgJiYgc2hvdWxkUmVwb3NpdGlvblJlZi5jdXJyZW50ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwb3NpdGlvbigpO1xuICAgICAgICAgICAgZm9jdXNTZWxlY3RlZEl0ZW0gPT09IG51bGwgfHwgZm9jdXNTZWxlY3RlZEl0ZW0gPT09IHZvaWQgMCB8fCBmb2N1c1NlbGVjdGVkSXRlbSgpO1xuICAgICAgICAgICAgc2hvdWxkUmVwb3NpdGlvblJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgICBmb2N1c1NlbGVjdGVkSXRlbVxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RWaWV3cG9ydFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0LFxuICAgICAgICBjb250ZW50V3JhcHBlcjogY29udGVudFdyYXBwZXIsXG4gICAgICAgIHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOiBzaG91bGRFeHBhbmRPblNjcm9sbFJlZixcbiAgICAgICAgb25TY3JvbGxCdXR0b25DaGFuZ2U6IGhhbmRsZVNjcm9sbEJ1dHRvbkNoYW5nZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICByZWY6IHNldENvbnRlbnRXcmFwcGVyLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgICAgICAgIHpJbmRleDogY29udGVudFpJbmRleFxuICAgICAgICB9XG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwb3BwZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgZ2V0IHRoZSBoZWlnaHQgb2YgdGhlIGNvbnRlbnQsIGl0IGluY2x1ZGVzIGJvcmRlcnMuIElmIHdlIHdlcmUgdG8gc2V0XG4gICAgICAgICAgICAvLyB0aGUgaGVpZ2h0IHdpdGhvdXQgaGF2aW5nIGBib3hTaXppbmc6ICdib3JkZXItYm94J2AgaXQgd291bGQgYmUgdG9vIGJpZy5cbiAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhlIGNvbnRlbnQgZG9lc24ndCBnZXQgdGFsbGVyIHRoYW4gdGhlIHdyYXBwZXJcbiAgICAgICAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgLi4ucG9wcGVyUHJvcHMuc3R5bGVcbiAgICAgICAgfVxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb24sIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fQUxJR05FRF9QT1NJVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFBvcHBlclBvc2l0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRQT1BQRVJfUE9TSVRJT05fTkFNRSA9ICdTZWxlY3RQb3BwZXJQb3NpdGlvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UG9wcGVyUG9zaXRpb24gPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGFsaWduOiBhbGlnbiA9ICdzdGFydCcgLCBjb2xsaXNpb25QYWRkaW5nOiBjb2xsaXNpb25QYWRkaW5nID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOICwgLi4ucG9wcGVyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVTZWxlY3QpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRDb250ZW50LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcHBlclNjb3BlLCBwb3BwZXJQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgYWxpZ246IGFsaWduLFxuICAgICAgICBjb2xsaXNpb25QYWRkaW5nOiBjb2xsaXNpb25QYWRkaW5nLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLy8gRW5zdXJlIGJvcmRlci1ib3ggZm9yIGZsb2F0aW5nLXVpIGNhbGN1bGF0aW9uc1xuICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgICAgICAgICAuLi5wb3BwZXJQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICctLXJhZGl4LXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4nOiAndmFyKC0tcmFkaXgtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4pJyxcbiAgICAgICAgICAgICctLXJhZGl4LXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKScsXG4gICAgICAgICAgICAnLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0JzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KScsXG4gICAgICAgICAgICAnLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYW5jaG9yLXdpZHRoKScsXG4gICAgICAgICAgICAnLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQpJ1xuICAgICAgICB9XG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFBvcHBlclBvc2l0aW9uLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRQT1BQRVJfUE9TSVRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RWaWV3cG9ydFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFZpZXdwb3J0UHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RWaWV3cG9ydENvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSwge30pO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZJRVdQT1JUX05BTUUgPSAnU2VsZWN0Vmlld3BvcnQnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLnZpZXdwb3J0UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Vmlld3BvcnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGVudENvbnRleHQub25WaWV3cG9ydENoYW5nZSk7XG4gICAgY29uc3QgcHJldlNjcm9sbFRvcFJlZiA9ICQwMWI5YyR1c2VSZWYoMCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge1xuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgICAgX19odG1sOiBgW2RhdGEtcmFkaXgtc2VsZWN0LXZpZXdwb3J0XXtzY3JvbGxiYXItd2lkdGg6bm9uZTstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZTstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDt9W2RhdGEtcmFkaXgtc2VsZWN0LXZpZXdwb3J0XTo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfWBcbiAgICAgICAgfVxuICAgIH0pLCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uLlNsb3QsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3RcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtcmFkaXgtc2VsZWN0LXZpZXdwb3J0XCI6IFwiXCIsXG4gICAgICAgIHJvbGU6IFwicHJlc2VudGF0aW9uXCJcbiAgICB9LCB2aWV3cG9ydFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLy8gd2UgdXNlIHBvc2l0aW9uOiAncmVsYXRpdmUnIGhlcmUgb24gdGhlIGB2aWV3cG9ydGAgc28gdGhhdCB3aGVuIHdlIGNhbGxcbiAgICAgICAgICAgIC8vIGBzZWxlY3RlZEl0ZW0ub2Zmc2V0VG9wYCBpbiBjYWxjdWxhdGlvbnMsIHRoZSBvZmZzZXQgaXMgcmVsYXRpdmUgdG8gdGhlIHZpZXdwb3J0XG4gICAgICAgICAgICAvLyAoaW5kZXBlbmRlbnQgb2YgdGhlIHNjcm9sbFVwQnV0dG9uKS5cbiAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgZmxleDogMSxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICAgICAgICAuLi52aWV3cG9ydFByb3BzLnN0eWxlXG4gICAgICAgIH0sXG4gICAgICAgIG9uU2Nyb2xsOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnModmlld3BvcnRQcm9wcy5vblNjcm9sbCwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgeyBjb250ZW50V3JhcHBlcjogY29udGVudFdyYXBwZXIgLCBzaG91bGRFeHBhbmRPblNjcm9sbFJlZjogc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYgIH0gPSB2aWV3cG9ydENvbnRleHQ7XG4gICAgICAgICAgICBpZiAoc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYgIT09IG51bGwgJiYgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYgIT09IHZvaWQgMCAmJiBzaG91bGRFeHBhbmRPblNjcm9sbFJlZi5jdXJyZW50ICYmIGNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsZWRCeSA9IE1hdGguYWJzKHByZXZTY3JvbGxUb3BSZWYuY3VycmVudCAtIHZpZXdwb3J0LnNjcm9sbFRvcCk7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbGVkQnkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTiAqIDI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNzc01pbkhlaWdodCA9IHBhcnNlRmxvYXQoY29udGVudFdyYXBwZXIuc3R5bGUubWluSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3NzSGVpZ2h0ID0gcGFyc2VGbG9hdChjb250ZW50V3JhcHBlci5zdHlsZS5oZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2SGVpZ2h0ID0gTWF0aC5tYXgoY3NzTWluSGVpZ2h0LCBjc3NIZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldkhlaWdodCA8IGF2YWlsYWJsZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dEhlaWdodCA9IHByZXZIZWlnaHQgKyBzY3JvbGxlZEJ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZE5leHRIZWlnaHQgPSBNYXRoLm1pbihhdmFpbGFibGVIZWlnaHQsIG5leHRIZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0RGlmZiA9IG5leHRIZWlnaHQgLSBjbGFtcGVkTmV4dEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLmhlaWdodCA9IGNsYW1wZWROZXh0SGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50V3JhcHBlci5zdHlsZS5ib3R0b20gPT09ICcwcHgnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnQuc2Nyb2xsVG9wID0gaGVpZ2h0RGlmZiA+IDAgPyBoZWlnaHREaWZmIDogMDsgLy8gZW5zdXJlIHRoZSBjb250ZW50IHN0YXlzIHBpbm5lZCB0byB0aGUgYm90dG9tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAnZmxleC1lbmQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJldlNjcm9sbFRvcFJlZi5jdXJyZW50ID0gdmlld3BvcnQuc2Nyb2xsVG9wO1xuICAgICAgICB9KVxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZJRVdQT1JUX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0R3JvdXBcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEdST1VQX05BTUUgPSAnU2VsZWN0R3JvdXAnO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RHcm91cENvbnRleHRQcm92aWRlciwgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEdyb3VwQ29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkR1JPVVBfTkFNRSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWUyNWEzMzRjNTVkZTFmNCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4uZ3JvdXBQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZ3JvdXBJZCA9ICQwMWI5YyR1c2VJZCgpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RHcm91cENvbnRleHRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgaWQ6IGdyb3VwSWRcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICByb2xlOiBcImdyb3VwXCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGdyb3VwSWRcbiAgICB9LCBncm91cFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZTI1YTMzNGM1NWRlMWY0LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRHUk9VUF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdExhYmVsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRMQUJFTF9OQU1FID0gJ1NlbGVjdExhYmVsJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmNjczMzhkMjliZDk3MmY4ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5sYWJlbFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBncm91cENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0R3JvdXBDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRMQUJFTF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgaWQ6IGdyb3VwQ29udGV4dC5pZFxuICAgIH0sIGxhYmVsUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjY3MzM4ZDI5YmQ5NzJmOCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkTEFCRUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RJdGVtXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX05BTUUgPSAnU2VsZWN0SXRlbSc7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1Db250ZXh0UHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RJdGVtQ29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FKTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxM2VmNDhhOTM0MjMwODk2ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCB2YWx1ZTogdmFsdWUgLCBkaXNhYmxlZDogZGlzYWJsZWQgPSBmYWxzZSAsIHRleHRWYWx1ZTogdGV4dFZhbHVlUHJvcCAsIC4uLml0ZW1Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBjb250ZXh0LnZhbHVlID09PSB2YWx1ZTtcbiAgICBjb25zdCBbdGV4dFZhbHVlLCBzZXRUZXh0VmFsdWVdID0gJDAxYjljJHVzZVN0YXRlKHRleHRWYWx1ZVByb3AgIT09IG51bGwgJiYgdGV4dFZhbHVlUHJvcCAhPT0gdm9pZCAwID8gdGV4dFZhbHVlUHJvcCA6ICcnKTtcbiAgICBjb25zdCBbaXNGb2N1c2VkLCBzZXRJc0ZvY3VzZWRdID0gJDAxYjljJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT57XG4gICAgICAgIHZhciBfY29udGVudENvbnRleHQkaXRlbVI7XG4gICAgICAgIHJldHVybiAoX2NvbnRlbnRDb250ZXh0JGl0ZW1SID0gY29udGVudENvbnRleHQuaXRlbVJlZkNhbGxiYWNrKSA9PT0gbnVsbCB8fCBfY29udGVudENvbnRleHQkaXRlbVIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50Q29udGV4dCRpdGVtUi5jYWxsKGNvbnRlbnRDb250ZXh0LCBub2RlLCB2YWx1ZSwgZGlzYWJsZWQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHRleHRJZCA9ICQwMWI5YyR1c2VJZCgpO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdCA9ICgpPT57XG4gICAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnRleHQub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICBjb250ZXh0Lm9uT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0LFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgdGV4dElkOiB0ZXh0SWQsXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgIG9uSXRlbVRleHRDaGFuZ2U6ICQwMWI5YyR1c2VDYWxsYmFjaygobm9kZSk9PntcbiAgICAgICAgICAgIHNldFRleHRWYWx1ZSgocHJldlRleHRWYWx1ZSk9PntcbiAgICAgICAgICAgICAgICB2YXIgX25vZGUkdGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZUZXh0VmFsdWUgfHwgKChfbm9kZSR0ZXh0Q29udGVudCA9IG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZS50ZXh0Q29udGVudCkgIT09IG51bGwgJiYgX25vZGUkdGV4dENvbnRlbnQgIT09IHZvaWQgMCA/IF9ub2RlJHRleHRDb250ZW50IDogJycpLnRyaW0oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBbXSlcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uLkl0ZW1TbG90LCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0LFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgdGV4dFZhbHVlOiB0ZXh0VmFsdWVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICByb2xlOiBcIm9wdGlvblwiLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiB0ZXh0SWQsXG4gICAgICAgIFwiZGF0YS1oaWdobGlnaHRlZFwiOiBpc0ZvY3VzZWQgPyAnJyA6IHVuZGVmaW5lZCAvLyBgaXNGb2N1c2VkYCBjYXZlYXQgZml4ZXMgc3R1dHRlcmluZyBpbiBWb2ljZU92ZXJcbiAgICAgICAgLFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogaXNTZWxlY3RlZCAmJiBpc0ZvY3VzZWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiBpc1NlbGVjdGVkID8gJ2NoZWNrZWQnIDogJ3VuY2hlY2tlZCcsXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZCB8fCB1bmRlZmluZWQsXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICB0YWJJbmRleDogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAtMVxuICAgIH0sIGl0ZW1Qcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25Gb2N1czogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vbkZvY3VzLCAoKT0+c2V0SXNGb2N1c2VkKHRydWUpXG4gICAgICAgICksXG4gICAgICAgIG9uQmx1cjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vbkJsdXIsICgpPT5zZXRJc0ZvY3VzZWQoZmFsc2UpXG4gICAgICAgICksXG4gICAgICAgIG9uUG9pbnRlclVwOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uUG9pbnRlclVwLCBoYW5kbGVTZWxlY3QpLFxuICAgICAgICBvblBvaW50ZXJNb3ZlOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uUG9pbnRlck1vdmUsIChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHZhciBfY29udGVudENvbnRleHQkb25JdGU7XG4gICAgICAgICAgICAgICAgKF9jb250ZW50Q29udGV4dCRvbkl0ZSA9IGNvbnRlbnRDb250ZXh0Lm9uSXRlbUxlYXZlKSA9PT0gbnVsbCB8fCBfY29udGVudENvbnRleHQkb25JdGUgPT09IHZvaWQgMCB8fCBfY29udGVudENvbnRleHQkb25JdGUuY2FsbChjb250ZW50Q29udGV4dCk7XG4gICAgICAgICAgICB9IGVsc2UgLy8gZXZlbiB0aG91Z2ggc2FmYXJpIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIG9wdGlvbiwgaXQncyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAvLyBhcyBpdCBvbmx5IG1lYW5zIGl0IG1pZ2h0IHNjcm9sbCBhIGZldyBwaXhlbHMgd2hlbiB1c2luZyB0aGUgcG9pbnRlci5cbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuZm9jdXMoe1xuICAgICAgICAgICAgICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25Qb2ludGVyTGVhdmUsIChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRvbkl0ZTI7XG4gICAgICAgICAgICAgICAgKF9jb250ZW50Q29udGV4dCRvbkl0ZTIgPSBjb250ZW50Q29udGV4dC5vbkl0ZW1MZWF2ZSkgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlMiA9PT0gdm9pZCAwIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZTIuY2FsbChjb250ZW50Q29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBvbktleURvd246ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JHNlYXJjO1xuICAgICAgICAgICAgY29uc3QgaXNUeXBpbmdBaGVhZCA9ICgoX2NvbnRlbnRDb250ZXh0JHNlYXJjID0gY29udGVudENvbnRleHQuc2VhcmNoUmVmKSA9PT0gbnVsbCB8fCBfY29udGVudENvbnRleHQkc2VhcmMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50Q29udGV4dCRzZWFyYy5jdXJyZW50KSAhPT0gJyc7XG4gICAgICAgICAgICBpZiAoaXNUeXBpbmdBaGVhZCAmJiBldmVudC5rZXkgPT09ICcgJykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RJT05fS0VZUy5pbmNsdWRlcyhldmVudC5rZXkpKSBoYW5kbGVTZWxlY3QoKTsgLy8gcHJldmVudCBwYWdlIHNjcm9sbCBpZiB1c2luZyB0aGUgc3BhY2Uga2V5IHRvIHNlbGVjdCBhbiBpdGVtXG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0pXG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMTNlZjQ4YTkzNDIzMDg5Niwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEl0ZW1UZXh0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRSA9ICdTZWxlY3RJdGVtVGV4dCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzU3MmZiMGZiODIxZmY0OSA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgLy8gV2UgaWdub3JlIGBjbGFzc05hbWVgIGFuZCBgc3R5bGVgIGFzIHRoaXMgcGFydCBzaG91bGRuJ3QgYmUgc3R5bGVkLlxuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGNsYXNzTmFtZTogY2xhc3NOYW1lICwgc3R5bGU6IHN0eWxlICwgLi4uaXRlbVRleHRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBpdGVtQ29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RJdGVtQ29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IG5hdGl2ZU9wdGlvbnNDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdE5hdGl2ZU9wdGlvbnNDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2l0ZW1UZXh0Tm9kZSwgc2V0SXRlbVRleHROb2RlXSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRJdGVtVGV4dE5vZGUobm9kZSlcbiAgICAsIGl0ZW1Db250ZXh0Lm9uSXRlbVRleHRDaGFuZ2UsIChub2RlKT0+e1xuICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JGl0ZW1UO1xuICAgICAgICByZXR1cm4gKF9jb250ZW50Q29udGV4dCRpdGVtVCA9IGNvbnRlbnRDb250ZXh0Lml0ZW1UZXh0UmVmQ2FsbGJhY2spID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRpdGVtVCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRlbnRDb250ZXh0JGl0ZW1ULmNhbGwoY29udGVudENvbnRleHQsIG5vZGUsIGl0ZW1Db250ZXh0LnZhbHVlLCBpdGVtQ29udGV4dC5kaXNhYmxlZCk7XG4gICAgfSk7XG4gICAgY29uc3QgdGV4dENvbnRlbnQgPSBpdGVtVGV4dE5vZGUgPT09IG51bGwgfHwgaXRlbVRleHROb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtVGV4dE5vZGUudGV4dENvbnRlbnQ7XG4gICAgY29uc3QgbmF0aXZlT3B0aW9uID0gJDAxYjljJHVzZU1lbW8oKCk9Pi8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIiwge1xuICAgICAgICAgICAga2V5OiBpdGVtQ29udGV4dC52YWx1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtQ29udGV4dC52YWx1ZSxcbiAgICAgICAgICAgIGRpc2FibGVkOiBpdGVtQ29udGV4dC5kaXNhYmxlZFxuICAgICAgICB9LCB0ZXh0Q29udGVudClcbiAgICAsIFtcbiAgICAgICAgaXRlbUNvbnRleHQuZGlzYWJsZWQsXG4gICAgICAgIGl0ZW1Db250ZXh0LnZhbHVlLFxuICAgICAgICB0ZXh0Q29udGVudFxuICAgIF0pO1xuICAgIGNvbnN0IHsgb25OYXRpdmVPcHRpb25BZGQ6IG9uTmF0aXZlT3B0aW9uQWRkICwgb25OYXRpdmVPcHRpb25SZW1vdmU6IG9uTmF0aXZlT3B0aW9uUmVtb3ZlICB9ID0gbmF0aXZlT3B0aW9uc0NvbnRleHQ7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBvbk5hdGl2ZU9wdGlvbkFkZChuYXRpdmVPcHRpb24pO1xuICAgICAgICByZXR1cm4gKCk9Pm9uTmF0aXZlT3B0aW9uUmVtb3ZlKG5hdGl2ZU9wdGlvbilcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgb25OYXRpdmVPcHRpb25BZGQsXG4gICAgICAgIG9uTmF0aXZlT3B0aW9uUmVtb3ZlLFxuICAgICAgICBuYXRpdmVPcHRpb25cbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5zcGFuLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBpZDogaXRlbUNvbnRleHQudGV4dElkXG4gICAgfSwgaXRlbVRleHRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgIH0pKSwgaXRlbUNvbnRleHQuaXNTZWxlY3RlZCAmJiBjb250ZXh0LnZhbHVlTm9kZSAmJiAhY29udGV4dC52YWx1ZU5vZGVIYXNDaGlsZHJlbiA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZVBvcnRhbChpdGVtVGV4dFByb3BzLmNoaWxkcmVuLCBjb250ZXh0LnZhbHVlTm9kZSkgOiBudWxsKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzNTcyZmIwZmI4MjFmZjQ5LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RJdGVtSW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX0lORElDQVRPUl9OQU1FID0gJ1NlbGVjdEl0ZW1JbmRpY2F0b3InO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDZiOTE5OGRlMTlhY2NmZTYgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLml0ZW1JbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgaXRlbUNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fSU5ESUNBVE9SX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIHJldHVybiBpdGVtQ29udGV4dC5pc1NlbGVjdGVkID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLnNwYW4sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICAgIH0sIGl0ZW1JbmRpY2F0b3JQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IG51bGw7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmI5MTk4ZGUxOWFjY2ZlNiwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9JTkRJQ0FUT1JfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RTY3JvbGxVcEJ1dHRvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX1VQX0JVVFRPTl9OQU1FID0gJ1NlbGVjdFNjcm9sbFVwQnV0dG9uJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX1VQX0JVVFRPTl9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Vmlld3BvcnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfVVBfQlVUVE9OX05BTUUsIHByb3BzLl9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtjYW5TY3JvbGxVcDEsIHNldENhblNjcm9sbFVwXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHZpZXdwb3J0Q29udGV4dC5vblNjcm9sbEJ1dHRvbkNoYW5nZSk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudENvbnRleHQudmlld3BvcnQgJiYgY29udGVudENvbnRleHQuaXNQb3NpdGlvbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0O1xuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhblNjcm9sbFVwID0gdmlld3BvcnQuc2Nyb2xsVG9wID4gMDtcbiAgICAgICAgICAgICAgICBzZXRDYW5TY3JvbGxVcChjYW5TY3JvbGxVcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYW5kbGVTY3JvbGwoKTtcbiAgICAgICAgICAgIHZpZXdwb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PnZpZXdwb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGVudENvbnRleHQudmlld3BvcnQsXG4gICAgICAgIGNvbnRlbnRDb250ZXh0LmlzUG9zaXRpb25lZFxuICAgIF0pO1xuICAgIHJldHVybiBjYW5TY3JvbGxVcDEgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkF1dG9TY3JvbGw6ICgpPT57XG4gICAgICAgICAgICBjb25zdCB7IHZpZXdwb3J0OiB2aWV3cG9ydCAsIHNlbGVjdGVkSXRlbTogc2VsZWN0ZWRJdGVtICB9ID0gY29udGVudENvbnRleHQ7XG4gICAgICAgICAgICBpZiAodmlld3BvcnQgJiYgc2VsZWN0ZWRJdGVtKSB2aWV3cG9ydC5zY3JvbGxUb3AgPSB2aWV3cG9ydC5zY3JvbGxUb3AgLSBzZWxlY3RlZEl0ZW0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9XG4gICAgfSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfVVBfQlVUVE9OX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0U2Nyb2xsRG93bkJ1dHRvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX0RPV05fQlVUVE9OX05BTUUgPSAnU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZmY5NTFlNDc2YzEyMTg5ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX0RPV05fQlVUVE9OX05BTUUsIHByb3BzLl9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IHZpZXdwb3J0Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RWaWV3cG9ydENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbY2FuU2Nyb2xsRG93bjEsIHNldENhblNjcm9sbERvd25dID0gJDAxYjljJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgdmlld3BvcnRDb250ZXh0Lm9uU2Nyb2xsQnV0dG9uQ2hhbmdlKTtcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50Q29udGV4dC52aWV3cG9ydCAmJiBjb250ZW50Q29udGV4dC5pc1Bvc2l0aW9uZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gY29udGVudENvbnRleHQudmlld3BvcnQ7XG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGwoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4U2Nyb2xsID0gdmlld3BvcnQuc2Nyb2xsSGVpZ2h0IC0gdmlld3BvcnQuY2xpZW50SGVpZ2h0OyAvLyB3ZSB1c2UgTWF0aC5jZWlsIGhlcmUgYmVjYXVzZSBpZiB0aGUgVUkgaXMgem9vbWVkLWluXG4gICAgICAgICAgICAgICAgLy8gYHNjcm9sbFRvcGAgaXMgbm90IGFsd2F5cyByZXBvcnRlZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgICAgICAgY29uc3QgY2FuU2Nyb2xsRG93biA9IE1hdGguY2VpbCh2aWV3cG9ydC5zY3JvbGxUb3ApIDwgbWF4U2Nyb2xsO1xuICAgICAgICAgICAgICAgIHNldENhblNjcm9sbERvd24oY2FuU2Nyb2xsRG93bik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYW5kbGVTY3JvbGwoKTtcbiAgICAgICAgICAgIHZpZXdwb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PnZpZXdwb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGVudENvbnRleHQudmlld3BvcnQsXG4gICAgICAgIGNvbnRlbnRDb250ZXh0LmlzUG9zaXRpb25lZFxuICAgIF0pO1xuICAgIHJldHVybiBjYW5TY3JvbGxEb3duMSA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFNjcm9sbEJ1dHRvbkltcGwsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uQXV0b1Njcm9sbDogKCk9PntcbiAgICAgICAgICAgIGNvbnN0IHsgdmlld3BvcnQ6IHZpZXdwb3J0ICwgc2VsZWN0ZWRJdGVtOiBzZWxlY3RlZEl0ZW0gIH0gPSBjb250ZW50Q29udGV4dDtcbiAgICAgICAgICAgIGlmICh2aWV3cG9ydCAmJiBzZWxlY3RlZEl0ZW0pIHZpZXdwb3J0LnNjcm9sbFRvcCA9IHZpZXdwb3J0LnNjcm9sbFRvcCArIHNlbGVjdGVkSXRlbS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9KSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX0RPV05fQlVUVE9OX05BTUVcbn0pO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFNjcm9sbEJ1dHRvbkltcGwgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIG9uQXV0b1Njcm9sbDogb25BdXRvU2Nyb2xsICwgLi4uc2Nyb2xsSW5kaWNhdG9yUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCdTZWxlY3RTY3JvbGxCdXR0b24nLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBhdXRvU2Nyb2xsVGltZXJSZWYgPSAkMDFiOWMkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY2xlYXJBdXRvU2Nyb2xsVGltZXIgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgaWYgKGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gKCk9PmNsZWFyQXV0b1Njcm9sbFRpbWVyKClcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgY2xlYXJBdXRvU2Nyb2xsVGltZXJcbiAgICBdKTsgLy8gV2hlbiB0aGUgdmlld3BvcnQgYmVjb21lcyBzY3JvbGxhYmxlIG9uIGVpdGhlciBzaWRlLCB0aGUgcmVsZXZhbnQgc2Nyb2xsIGJ1dHRvbiB3aWxsIG1vdW50LlxuICAgIC8vIEJlY2F1c2UgaXQgaXMgcGFydCBvZiB0aGUgbm9ybWFsIGZsb3csIGl0IHdpbGwgcHVzaCBkb3duICh0b3AgYnV0dG9uKSBvciBzaHJpbmsgKGJvdHRvbSBidXR0b24pXG4gICAgLy8gdGhlIHZpZXdwb3J0LCBwb3RlbnRpYWxseSBjYXVzaW5nIHRoZSBhY3RpdmUgaXRlbSB0byBub3cgYmUgcGFydGlhbGx5IG91dCBvZiB2aWV3LlxuICAgIC8vIFdlIHJlLXJ1biB0aGUgYHNjcm9sbEludG9WaWV3YCBsb2dpYyB0byBtYWtlIHN1cmUgaXQgc3RheXMgd2l0aGluIHRoZSB2aWV3cG9ydC5cbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIHZhciBfYWN0aXZlSXRlbSRyZWYkY3VycmU7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSBnZXRJdGVtcygpLmZpbmQoKGl0ZW0pPT5pdGVtLnJlZi5jdXJyZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG4gICAgICAgICk7XG4gICAgICAgIGFjdGl2ZUl0ZW0gPT09IG51bGwgfHwgYWN0aXZlSXRlbSA9PT0gdm9pZCAwIHx8IChfYWN0aXZlSXRlbSRyZWYkY3VycmUgPSBhY3RpdmVJdGVtLnJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYWN0aXZlSXRlbSRyZWYkY3VycmUgPT09IHZvaWQgMCB8fCBfYWN0aXZlSXRlbSRyZWYkY3VycmUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgYmxvY2s6ICduZWFyZXN0J1xuICAgICAgICB9KTtcbiAgICB9LCBbXG4gICAgICAgIGdldEl0ZW1zXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICAgIH0sIHNjcm9sbEluZGljYXRvclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZmxleFNocmluazogMCxcbiAgICAgICAgICAgIC4uLnNjcm9sbEluZGljYXRvclByb3BzLnN0eWxlXG4gICAgICAgIH0sXG4gICAgICAgIG9uUG9pbnRlckRvd246ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhzY3JvbGxJbmRpY2F0b3JQcm9wcy5vblBvaW50ZXJEb3duLCAoKT0+e1xuICAgICAgICAgICAgaWYgKGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ID09PSBudWxsKSBhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRJbnRlcnZhbChvbkF1dG9TY3JvbGwsIDUwKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlck1vdmU6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhzY3JvbGxJbmRpY2F0b3JQcm9wcy5vblBvaW50ZXJNb3ZlLCAoKT0+e1xuICAgICAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRvbkl0ZTM7XG4gICAgICAgICAgICAoX2NvbnRlbnRDb250ZXh0JG9uSXRlMyA9IGNvbnRlbnRDb250ZXh0Lm9uSXRlbUxlYXZlKSA9PT0gbnVsbCB8fCBfY29udGVudENvbnRleHQkb25JdGUzID09PSB2b2lkIDAgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlMy5jYWxsKGNvbnRlbnRDb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCA9PT0gbnVsbCkgYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwob25BdXRvU2Nyb2xsLCA1MCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHNjcm9sbEluZGljYXRvclByb3BzLm9uUG9pbnRlckxlYXZlLCAoKT0+e1xuICAgICAgICAgICAgY2xlYXJBdXRvU2Nyb2xsVGltZXIoKTtcbiAgICAgICAgfSlcbiAgICB9KSk7XG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFNlcGFyYXRvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VQQVJBVE9SX05BTUUgPSAnU2VsZWN0U2VwYXJhdG9yJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYmE0YjFkZjA3Y2IxZDMgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLnNlcGFyYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gICAgfSwgc2VwYXJhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWJhNGIxZGYwN2NiMWQzLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRVBBUkFUT1JfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RBcnJvd1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQVJST1dfTkFNRSA9ICdTZWxlY3RBcnJvdyc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzE0ZjRjYjhmODA5OTYyOCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4uYXJyb3dQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRBUlJPV19OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQVJST1dfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgcmV0dXJuIGNvbnRleHQub3BlbiAmJiBjb250ZW50Q29udGV4dC5wb3NpdGlvbiA9PT0gJ3BvcHBlcicgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRBcnJvdywgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwb3BwZXJTY29wZSwgYXJyb3dQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IG51bGw7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzE0ZjRjYjhmODA5OTYyOCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRCdWJibGVTZWxlY3QgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgdmFsdWU6IHZhbHVlICwgLi4uc2VsZWN0UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9ICQwMWI5YyR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgY29uc3QgcHJldlZhbHVlID0gJDAxYjljJHVzZVByZXZpb3VzKHZhbHVlKTsgLy8gQnViYmxlIHZhbHVlIGNoYW5nZSB0byBwYXJlbnRzIChlLmcgZm9ybSBjaGFuZ2UgZXZlbnQpXG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBzZWxlY3QgPSByZWYuY3VycmVudDtcbiAgICAgICAgY29uc3Qgc2VsZWN0UHJvdG8gPSB3aW5kb3cuSFRNTFNlbGVjdEVsZW1lbnQucHJvdG90eXBlO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxlY3RQcm90bywgJ3ZhbHVlJyk7XG4gICAgICAgIGNvbnN0IHNldFZhbHVlID0gZGVzY3JpcHRvci5zZXQ7XG4gICAgICAgIGlmIChwcmV2VmFsdWUgIT09IHZhbHVlICYmIHNldFZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IG5ldyBFdmVudCgnY2hhbmdlJywge1xuICAgICAgICAgICAgICAgIGJ1YmJsZXM6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0VmFsdWUuY2FsbChzZWxlY3QsIHZhbHVlKTtcbiAgICAgICAgICAgIHNlbGVjdC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJldlZhbHVlLFxuICAgICAgICB2YWx1ZVxuICAgIF0pO1xuICAgIC8qKlxuICAgKiBXZSBwdXJwb3NlZnVsbHkgdXNlIGEgYHNlbGVjdGAgaGVyZSB0byBzdXBwb3J0IGZvcm0gYXV0b2ZpbGwgYXMgbXVjaFxuICAgKiBhcyBwb3NzaWJsZS5cbiAgICpcbiAgICogV2UgcHVycG9zZWZ1bGx5IGRvIG5vdCBhZGQgdGhlIGB2YWx1ZWAgYXR0cmlidXRlIGhlcmUgdG8gYWxsb3cgdGhlIHZhbHVlXG4gICAqIHRvIGJlIHNldCBwcm9ncmFtYXRpY2FsbHkgYW5kIGJ1YmJsZSB0byBhbnkgcGFyZW50IGZvcm0gYG9uQ2hhbmdlYCBldmVudC5cbiAgICogQWRkaW5nIHRoZSBgdmFsdWVgIHdpbGwgY2F1c2UgUmVhY3QgdG8gY29uc2lkZXIgdGhlIHByb2dyYW1hdGljXG4gICAqIGRpc3BhdGNoIGEgZHVwbGljYXRlIGFuZCBpdCB3aWxsIGdldCBzd2FsbG93ZWQuXG4gICAqXG4gICAqIFdlIHVzZSBgVmlzdWFsbHlIaWRkZW5gIHJhdGhlciB0aGFuIGBkaXNwbGF5OiBcIm5vbmVcImAgYmVjYXVzZSBTYWZhcmkgYXV0b2ZpbGxcbiAgICogd29uJ3Qgd29yayBvdGhlcndpc2UuXG4gICAqLyByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkVmlzdWFsbHlIaWRkZW4sIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBzZWxlY3RQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB2YWx1ZVxuICAgIH0pKSk7XG59KTtcbiRjYzdlMDVhNDU5MDBlNzNmJHZhciRCdWJibGVTZWxlY3QuZGlzcGxheU5hbWUgPSAnQnViYmxlU2VsZWN0JztcbmZ1bmN0aW9uICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VUeXBlYWhlYWRTZWFyY2gob25TZWFyY2hDaGFuZ2UpIHtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hDaGFuZ2UgPSAkMDFiOWMkdXNlQ2FsbGJhY2tSZWYob25TZWFyY2hDaGFuZ2UpO1xuICAgIGNvbnN0IHNlYXJjaFJlZiA9ICQwMWI5YyR1c2VSZWYoJycpO1xuICAgIGNvbnN0IHRpbWVyUmVmID0gJDAxYjljJHVzZVJlZigwKTtcbiAgICBjb25zdCBoYW5kbGVUeXBlYWhlYWRTZWFyY2ggPSAkMDFiOWMkdXNlQ2FsbGJhY2soKGtleSk9PntcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gc2VhcmNoUmVmLmN1cnJlbnQgKyBrZXk7XG4gICAgICAgIGhhbmRsZVNlYXJjaENoYW5nZShzZWFyY2gpO1xuICAgICAgICAoZnVuY3Rpb24gdXBkYXRlU2VhcmNoKHZhbHVlKSB7XG4gICAgICAgICAgICBzZWFyY2hSZWYuY3VycmVudCA9IHZhbHVlO1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lclJlZi5jdXJyZW50KTsgLy8gUmVzZXQgYHNlYXJjaFJlZmAgMSBzZWNvbmQgYWZ0ZXIgaXQgd2FzIGxhc3QgdXBkYXRlZFxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSAnJykgdGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpPT51cGRhdGVTZWFyY2goJycpXG4gICAgICAgICAgICAsIDEwMDApO1xuICAgICAgICB9KShzZWFyY2gpO1xuICAgIH0sIFtcbiAgICAgICAgaGFuZGxlU2VhcmNoQ2hhbmdlXG4gICAgXSk7XG4gICAgY29uc3QgcmVzZXRUeXBlYWhlYWQgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgc2VhcmNoUmVmLmN1cnJlbnQgPSAnJztcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lclJlZi5jdXJyZW50KTtcbiAgICB9LCBbXSk7XG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gKCk9PndpbmRvdy5jbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudClcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gW1xuICAgICAgICBzZWFyY2hSZWYsXG4gICAgICAgIGhhbmRsZVR5cGVhaGVhZFNlYXJjaCxcbiAgICAgICAgcmVzZXRUeXBlYWhlYWRcbiAgICBdO1xufVxuLyoqXG4gKiBUaGlzIGlzIHRoZSBcIm1lYXRcIiBvZiB0aGUgdHlwZWFoZWFkIG1hdGNoaW5nIGxvZ2ljLiBJdCB0YWtlcyBpbiBhIGxpc3Qgb2YgaXRlbXMsXG4gKiB0aGUgc2VhcmNoIGFuZCB0aGUgY3VycmVudCBpdGVtLCBhbmQgcmV0dXJucyB0aGUgbmV4dCBpdGVtIChvciBgdW5kZWZpbmVkYCkuXG4gKlxuICogV2Ugbm9ybWFsaXplIHRoZSBzZWFyY2ggYmVjYXVzZSBpZiBhIHVzZXIgaGFzIHJlcGVhdGVkbHkgcHJlc3NlZCBhIGNoYXJhY3RlcixcbiAqIHdlIHdhbnQgdGhlIGV4YWN0IHNhbWUgYmVoYXZpb3IgYXMgaWYgd2Ugb25seSBoYWQgdGhhdCBvbmUgY2hhcmFjdGVyXG4gKiAoaWUuIGN5Y2xlIHRocm91Z2ggaXRlbXMgc3RhcnRpbmcgd2l0aCB0aGF0IGNoYXJhY3RlcilcbiAqXG4gKiBXZSBhbHNvIHJlb3JkZXIgdGhlIGl0ZW1zIGJ5IHdyYXBwaW5nIHRoZSBhcnJheSBhcm91bmQgdGhlIGN1cnJlbnQgaXRlbS5cbiAqIFRoaXMgaXMgc28gd2UgYWx3YXlzIGxvb2sgZm9yd2FyZCBmcm9tIHRoZSBjdXJyZW50IGl0ZW0sIGFuZCBwaWNraW5nIHRoZSBmaXJzdFxuICogaXRlbSB3aWxsIGFsd2F5cyBiZSB0aGUgY29ycmVjdCBvbmUuXG4gKlxuICogRmluYWxseSwgaWYgdGhlIG5vcm1hbGl6ZWQgc2VhcmNoIGlzIGV4YWN0bHkgb25lIGNoYXJhY3Rlciwgd2UgZXhjbHVkZSB0aGVcbiAqIGN1cnJlbnQgaXRlbSBmcm9tIHRoZSB2YWx1ZXMgYmVjYXVzZSBvdGhlcndpc2UgaXQgd291bGQgYmUgdGhlIGZpcnN0IHRvIG1hdGNoIGFsd2F5c1xuICogYW5kIGZvY3VzIHdvdWxkIG5ldmVyIG1vdmUuIFRoaXMgaXMgYXMgb3Bwb3NlZCB0byB0aGUgcmVndWxhciBjYXNlLCB3aGVyZSB3ZVxuICogZG9uJ3Qgd2FudCBmb2N1cyB0byBtb3ZlIGlmIHRoZSBjdXJyZW50IGl0ZW0gc3RpbGwgbWF0Y2hlcy5cbiAqLyBmdW5jdGlvbiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkZmluZE5leHRJdGVtKGl0ZW1zLCBzZWFyY2gsIGN1cnJlbnRJdGVtKSB7XG4gICAgY29uc3QgaXNSZXBlYXRlZCA9IHNlYXJjaC5sZW5ndGggPiAxICYmIEFycmF5LmZyb20oc2VhcmNoKS5ldmVyeSgoY2hhcik9PmNoYXIgPT09IHNlYXJjaFswXVxuICAgICk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNlYXJjaCA9IGlzUmVwZWF0ZWQgPyBzZWFyY2hbMF0gOiBzZWFyY2g7XG4gICAgY29uc3QgY3VycmVudEl0ZW1JbmRleCA9IGN1cnJlbnRJdGVtID8gaXRlbXMuaW5kZXhPZihjdXJyZW50SXRlbSkgOiAtMTtcbiAgICBsZXQgd3JhcHBlZEl0ZW1zID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHdyYXBBcnJheShpdGVtcywgTWF0aC5tYXgoY3VycmVudEl0ZW1JbmRleCwgMCkpO1xuICAgIGNvbnN0IGV4Y2x1ZGVDdXJyZW50SXRlbSA9IG5vcm1hbGl6ZWRTZWFyY2gubGVuZ3RoID09PSAxO1xuICAgIGlmIChleGNsdWRlQ3VycmVudEl0ZW0pIHdyYXBwZWRJdGVtcyA9IHdyYXBwZWRJdGVtcy5maWx0ZXIoKHYpPT52ICE9PSBjdXJyZW50SXRlbVxuICAgICk7XG4gICAgY29uc3QgbmV4dEl0ZW0gPSB3cmFwcGVkSXRlbXMuZmluZCgoaXRlbSk9Pml0ZW0udGV4dFZhbHVlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChub3JtYWxpemVkU2VhcmNoLnRvTG93ZXJDYXNlKCkpXG4gICAgKTtcbiAgICByZXR1cm4gbmV4dEl0ZW0gIT09IGN1cnJlbnRJdGVtID8gbmV4dEl0ZW0gOiB1bmRlZmluZWQ7XG59XG4vKipcbiAqIFdyYXBzIGFuIGFycmF5IGFyb3VuZCBpdHNlbGYgYXQgYSBnaXZlbiBzdGFydCBpbmRleFxuICogRXhhbXBsZTogYHdyYXBBcnJheShbJ2EnLCAnYicsICdjJywgJ2QnXSwgMikgPT09IFsnYycsICdkJywgJ2EnLCAnYiddYFxuICovIGZ1bmN0aW9uICRjYzdlMDVhNDU5MDBlNzNmJHZhciR3cmFwQXJyYXkoYXJyYXksIHN0YXJ0SW5kZXgpIHtcbiAgICByZXR1cm4gYXJyYXkubWFwKChfLCBpbmRleCk9PmFycmF5WyhzdGFydEluZGV4ICsgaW5kZXgpICUgYXJyYXkubGVuZ3RoXVxuICAgICk7XG59XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZjliMWE1OWU1OTIyODhmO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkM2FjMWU4OGExYzBiOWYxO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDRjOGQxYTU3YTc2MWVmOTQgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMDtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmMDRhNjEyOThhNDdhNDBmID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDk5YjQwMGNhYmI1OGM1MTU7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMmFmNmM5OTQ0Mjk2MjEzO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYzk3M2E0YjNjYjg2YTAzZDtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkNWM2YzA4ZGMyZDNjYTcgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOWVkNmU3YjQwMjQ4ZDM2ZDtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYjJmY2ZkYmQ3YmE5N2Q0ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVlMjVhMzM0YzU1ZGUxZjQ7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNSA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmNjczMzhkMjliZDk3MmY4O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMTNlZjQ4YTkzNDIzMDg5NjtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkNmU1YmY5YzQzZWE5MzE5ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYzM0NjhlMjcxNGQxNzVmYSA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2YjkxOThkZTE5YWNjZmU2O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDJmNjBkM2VjOWFkNDY4ZjIgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZjFhZWRjMzAzOWM4ZDYzID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxZmYzYzNmMDhhZTk2M2MwID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViYTRiMWRmMDdjYjFkMztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDMxNGY0Y2I4ZjgwOTk2Mjg7XG5cblxuXG5cbmV4cG9ydCB7JGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDI4NjcyN2E3NWRjMDM5YmQgYXMgY3JlYXRlU2VsZWN0U2NvcGUsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZjliMWE1OWU1OTIyODhmIGFzIFNlbGVjdCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDNhYzFlODhhMWMwYjlmMSBhcyBTZWxlY3RUcmlnZ2VyLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCBhcyBTZWxlY3RWYWx1ZSwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDk5YjQwMGNhYmI1OGM1MTUgYXMgU2VsZWN0SWNvbiwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGIyYWY2Yzk5NDQyOTYyMTMgYXMgU2VsZWN0UG9ydGFsLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYzk3M2E0YjNjYjg2YTAzZCBhcyBTZWxlY3RDb250ZW50LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOWVkNmU3YjQwMjQ4ZDM2ZCBhcyBTZWxlY3RWaWV3cG9ydCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVlMjVhMzM0YzU1ZGUxZjQgYXMgU2VsZWN0R3JvdXAsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmNjczMzhkMjliZDk3MmY4IGFzIFNlbGVjdExhYmVsLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMTNlZjQ4YTkzNDIzMDg5NiBhcyBTZWxlY3RJdGVtLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzU3MmZiMGZiODIxZmY0OSBhcyBTZWxlY3RJdGVtVGV4dCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDZiOTE5OGRlMTlhY2NmZTYgYXMgU2VsZWN0SXRlbUluZGljYXRvciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ4MTE3OTI3NjU4YWY2ZDcgYXMgU2VsZWN0U2Nyb2xsVXBCdXR0b24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODkgYXMgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViYTRiMWRmMDdjYjFkMyBhcyBTZWxlY3RTZXBhcmF0b3IsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzMTRmNGNiOGY4MDk5NjI4IGFzIFNlbGVjdEFycm93LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCBhcyBUcmlnZ2VyLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNGM4ZDFhNTdhNzYxZWY5NCBhcyBWYWx1ZSwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGYwNGE2MTI5OGE0N2E0MGYgYXMgSWNvbiwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDVjNmMwOGRjMmQzY2E3IGFzIFZpZXdwb3J0LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWIyZmNmZGJkN2JhOTdkNCBhcyBHcm91cCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjUgYXMgTGFiZWwsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyIGFzIEl0ZW0sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkNmU1YmY5YzQzZWE5MzE5IGFzIEl0ZW1UZXh0LCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYzM0NjhlMjcxNGQxNzVmYSBhcyBJdGVtSW5kaWNhdG9yLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMmY2MGQzZWM5YWQ0NjhmMiBhcyBTY3JvbGxVcEJ1dHRvbiwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJmMWFlZGMzMDM5YzhkNjMgYXMgU2Nyb2xsRG93bkJ1dHRvbiwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDFmZjNjM2YwOGFlOTYzYzAgYXMgU2VwYXJhdG9yLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSBhcyBBcnJvd307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLG51bGwsImltcG9ydCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkMUlIemskZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkMUlIemskY3JlYXRlRWxlbWVudCwgdXNlUmVmIGFzICQxSUh6ayR1c2VSZWYsIHVzZUVmZmVjdCBhcyAkMUlIemskdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJDFJSHprJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge2NyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSBhcyAkMUlIemskY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlLCBSb290IGFzICQxSUh6ayRSb290LCBJdGVtIGFzICQxSUh6ayRJdGVtfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXJvdmluZy1mb2N1c1wiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkMUlIemskUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQxSUh6ayRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZURpcmVjdGlvbiBhcyAkMUlIemskdXNlRGlyZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvblwiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkMUlIemskdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHt1c2VJZCBhcyAkMUlIemskdXNlSWR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWRcIjtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRhYnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRBQlNfTkFNRSA9ICdUYWJzJztcbmNvbnN0IFskNjljYjMwYmIwMDE3ZGYwNSR2YXIkY3JlYXRlVGFic0NvbnRleHQsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQzNTVmNWJkMjA5ZDdiMTNhXSA9ICQxSUh6ayRjcmVhdGVDb250ZXh0U2NvcGUoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRBQlNfTkFNRSwgW1xuICAgICQxSUh6ayRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGVcbl0pO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9ICQxSUh6ayRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUoKTtcbmNvbnN0IFskNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyLCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlVGFic0NvbnRleHRdID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJTX05BTUUpO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGIyNTM5YmVkNTAyM2MyMWMgPSAvKiNfX1BVUkVfXyovICQxSUh6ayRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRhYnM6IF9fc2NvcGVUYWJzICwgdmFsdWU6IHZhbHVlUHJvcCAsIG9uVmFsdWVDaGFuZ2U6IG9uVmFsdWVDaGFuZ2UgLCBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSAsIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJyAsIGRpcjogZGlyICwgYWN0aXZhdGlvbk1vZGU6IGFjdGl2YXRpb25Nb2RlID0gJ2F1dG9tYXRpYycgLCAuLi50YWJzUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9ICQxSUh6ayR1c2VEaXJlY3Rpb24oZGlyKTtcbiAgICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9ICQxSUh6ayR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IHZhbHVlUHJvcCxcbiAgICAgICAgb25DaGFuZ2U6IG9uVmFsdWVDaGFuZ2UsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0VmFsdWVcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVGFicyxcbiAgICAgICAgYmFzZUlkOiAkMUlIemskdXNlSWQoKSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBvblZhbHVlQ2hhbmdlOiBzZXRWYWx1ZSxcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uLFxuICAgICAgICBkaXI6IGRpcmVjdGlvbixcbiAgICAgICAgYWN0aXZhdGlvbk1vZGU6IGFjdGl2YXRpb25Nb2RlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmRpdiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBvcmllbnRhdGlvblxuICAgIH0sIHRhYnNQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYjI1MzliZWQ1MDIzYzIxYywge1xuICAgIGRpc3BsYXlOYW1lOiAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRhYnNMaXN0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJfTElTVF9OQU1FID0gJ1RhYnNMaXN0JztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIGxvb3A6IGxvb3AgPSB0cnVlICwgLi4ubGlzdFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJfTElTVF9OQU1FLCBfX3Njb3BlVGFicyk7XG4gICAgY29uc3Qgcm92aW5nRm9jdXNHcm91cFNjb3BlID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZShfX3Njb3BlVGFicyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFJvb3QsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUsIHtcbiAgICAgICAgb3JpZW50YXRpb246IGNvbnRleHQub3JpZW50YXRpb24sXG4gICAgICAgIGRpcjogY29udGV4dC5kaXIsXG4gICAgICAgIGxvb3A6IGxvb3BcbiAgICB9KSwgLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmRpdiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJ0YWJsaXN0XCIsXG4gICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBjb250ZXh0Lm9yaWVudGF0aW9uXG4gICAgfSwgbGlzdFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJfTElTVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRhYnNUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUUklHR0VSX05BTUUgPSAnVGFic1RyaWdnZXInO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDgxMTRiOWZkZmRmOWYzYmEgPSAvKiNfX1BVUkVfXyovICQxSUh6ayRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRhYnM6IF9fc2NvcGVUYWJzICwgdmFsdWU6IHZhbHVlICwgZGlzYWJsZWQ6IGRpc2FibGVkID0gZmFsc2UgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlVGFic0NvbnRleHQoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUoX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlVHJpZ2dlcklkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgY29udGVudElkID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VDb250ZW50SWQoY29udGV4dC5iYXNlSWQsIHZhbHVlKTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdmFsdWUgPT09IGNvbnRleHQudmFsdWU7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJEl0ZW0sICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUsIHtcbiAgICAgICAgZm9jdXNhYmxlOiAhZGlzYWJsZWQsXG4gICAgICAgIGFjdGl2ZTogaXNTZWxlY3RlZFxuICAgIH0pLCAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRQcmltaXRpdmUuYnV0dG9uLCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICByb2xlOiBcInRhYlwiLFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogaXNTZWxlY3RlZCxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGNvbnRlbnRJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGlzU2VsZWN0ZWQgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZScsXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIGlkOiB0cmlnZ2VySWRcbiAgICB9LCB0cmlnZ2VyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uTW91c2VEb3duOiAkMUlIemskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Nb3VzZURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIG9ubHkgY2FsbCBoYW5kbGVyIGlmIGl0J3MgdGhlIGxlZnQgYnV0dG9uIChtb3VzZWRvd24gZ2V0cyB0cmlnZ2VyZWQgYnkgYWxsIG1vdXNlIGJ1dHRvbnMpXG4gICAgICAgICAgICAvLyBidXQgbm90IHdoZW4gdGhlIGNvbnRyb2wga2V5IGlzIHByZXNzZWQgKGF2b2lkaW5nIE1hY09TIHJpZ2h0IGNsaWNrKVxuICAgICAgICAgICAgaWYgKCFkaXNhYmxlZCAmJiBldmVudC5idXR0b24gPT09IDAgJiYgZXZlbnQuY3RybEtleSA9PT0gZmFsc2UpIGNvbnRleHQub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICBlbHNlIC8vIHByZXZlbnQgZm9jdXMgdG8gYXZvaWQgYWNjaWRlbnRhbCBhY3RpdmF0aW9uXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25LZXlEb3duOiAkMUlIemskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoW1xuICAgICAgICAgICAgICAgICcgJyxcbiAgICAgICAgICAgICAgICAnRW50ZXInXG4gICAgICAgICAgICBdLmluY2x1ZGVzKGV2ZW50LmtleSkpIGNvbnRleHQub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkMUlIemskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PntcbiAgICAgICAgICAgIC8vIGhhbmRsZSBcImF1dG9tYXRpY1wiIGFjdGl2YXRpb24gaWYgbmVjZXNzYXJ5XG4gICAgICAgICAgICAvLyBpZS4gYWN0aXZhdGUgdGFiIGZvbGxvd2luZyBmb2N1c1xuICAgICAgICAgICAgY29uc3QgaXNBdXRvbWF0aWNBY3RpdmF0aW9uID0gY29udGV4dC5hY3RpdmF0aW9uTW9kZSAhPT0gJ21hbnVhbCc7XG4gICAgICAgICAgICBpZiAoIWlzU2VsZWN0ZWQgJiYgIWRpc2FibGVkICYmIGlzQXV0b21hdGljQWN0aXZhdGlvbikgY29udGV4dC5vblZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSlcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDgxMTRiOWZkZmRmOWYzYmEsIHtcbiAgICBkaXNwbGF5TmFtZTogJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkQ09OVEVOVF9OQU1FID0gJ1RhYnNDb250ZW50JztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZDkwNWQ3MGU4ZmQyZWJiID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIHZhbHVlOiB2YWx1ZSAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlVGFic0NvbnRleHQoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlVHJpZ2dlcklkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgY29udGVudElkID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VDb250ZW50SWQoY29udGV4dC5iYXNlSWQsIHZhbHVlKTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdmFsdWUgPT09IGNvbnRleHQudmFsdWU7XG4gICAgY29uc3QgaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZiA9ICQxSUh6ayR1c2VSZWYoaXNTZWxlY3RlZCk7XG4gICAgJDFJSHprJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCByQUYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PmlzTW91bnRBbmltYXRpb25QcmV2ZW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiAoKT0+Y2FuY2VsQW5pbWF0aW9uRnJhbWUockFGKVxuICAgICAgICA7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGlzU2VsZWN0ZWRcbiAgICB9LCAoeyBwcmVzZW50OiBwcmVzZW50ICB9KT0+LyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmRpdiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgICAgIFwiZGF0YS1zdGF0ZVwiOiBpc1NlbGVjdGVkID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnLFxuICAgICAgICAgICAgXCJkYXRhLW9yaWVudGF0aW9uXCI6IGNvbnRleHQub3JpZW50YXRpb24sXG4gICAgICAgICAgICByb2xlOiBcInRhYnBhbmVsXCIsXG4gICAgICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiB0cmlnZ2VySWQsXG4gICAgICAgICAgICBoaWRkZW46ICFwcmVzZW50LFxuICAgICAgICAgICAgaWQ6IGNvbnRlbnRJZCxcbiAgICAgICAgICAgIHRhYkluZGV4OiAwXG4gICAgICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBpc01vdW50QW5pbWF0aW9uUHJldmVudGVkUmVmLmN1cnJlbnQgPyAnMHMnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLCBwcmVzZW50ICYmIGNoaWxkcmVuKVxuICAgICk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmQ5MDVkNzBlOGZkMmViYiwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gZnVuY3Rpb24gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VUcmlnZ2VySWQoYmFzZUlkLCB2YWx1ZSkge1xuICAgIHJldHVybiBgJHtiYXNlSWR9LXRyaWdnZXItJHt2YWx1ZX1gO1xufVxuZnVuY3Rpb24gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VDb250ZW50SWQoYmFzZUlkLCB2YWx1ZSkge1xuICAgIHJldHVybiBgJHtiYXNlSWR9LWNvbnRlbnQtJHt2YWx1ZX1gO1xufVxuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYjI1MzliZWQ1MDIzYzIxYztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1ID0gJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDk3MTJkMjJlZGMwZDc4YzE7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ4MTE0YjlmZGZkZjlmM2JhO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgPSAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmQ5MDVkNzBlOGZkMmViYjtcblxuXG5cblxuZXhwb3J0IHskNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkMzU1ZjViZDIwOWQ3YjEzYSBhcyBjcmVhdGVUYWJzU2NvcGUsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiMjUzOWJlZDUwMjNjMjFjIGFzIFRhYnMsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxIGFzIFRhYnNMaXN0LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkODExNGI5ZmRmZGY5ZjNiYSBhcyBUYWJzVHJpZ2dlciwgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJkOTA1ZDcwZThmZDJlYmIgYXMgVGFic0NvbnRlbnQsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1IGFzIExpc3QsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IGFzIFRyaWdnZXIsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnR9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sIm5hbWVzIjpbIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsInRoaXMiLCIkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkNTBjN2I0ZTlkOWYxOWMxIiwic2NvcGVOYW1lIiwiY3JlYXRlQ29udGV4dFNjb3BlRGVwcyIsImRlZmF1bHRDb250ZXh0cyIsImNyZWF0ZVNjb3BlIiwic2NvcGVDb250ZXh0cyIsIm1hcCIsImRlZmF1bHRDb250ZXh0IiwiJDNia0FLJGNyZWF0ZUNvbnRleHQiLCJzY29wZSIsImNvbnRleHRzIiwiJDNia0FLJHVzZU1lbW8iLCJ1c2VNZW1vIiwicm9vdENvbXBvbmVudE5hbWUiLCJCYXNlQ29udGV4dCIsImluZGV4IiwiUHJvdmlkZXIiLCJwcm9wcyIsImNoaWxkcmVuIiwiY29udGV4dCIsIkNvbnRleHQiLCJ2YWx1ZSIsInZhbHVlcyIsIiQzYmtBSyRjcmVhdGVFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImRpc3BsYXlOYW1lIiwiY29uc3VtZXJOYW1lIiwiJDNia0FLJHVzZUNvbnRleHQiLCJ1bmRlZmluZWQiLCJFcnJvciIsIiRjNTEyYzI3YWIwMmVmODk1JHZhciRjb21wb3NlQ29udGV4dFNjb3BlcyIsInNjb3BlcyIsImJhc2VTY29wZSIsImNyZWF0ZVNjb3BlMSIsInNjb3BlSG9va3MiLCJ1c2VTY29wZSIsIm92ZXJyaWRlU2NvcGVzIiwibmV4dFNjb3BlczEiLCJyZWR1Y2UiLCJuZXh0U2NvcGVzIiwiJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JDQzZTQ0NmQzMmIzZDIxYWYiLCJyZWZzIiwibm9kZSIsImZvckVhY2giLCJyZWYiLCJjdXJyZW50IiwiJDZlZDA0MDY4ODhmNzNmYzQkdmFyJHNldFJlZiIsIiQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCRjN2IyY2JlMzU1MmEwZDA1IiwiJDN2cW1yJHVzZUNhbGxiYWNrIiwidXNlQ2FsbGJhY2siLCIkZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMCIsIm9yaWdpbmFsRXZlbnRIYW5kbGVyIiwib3VyRXZlbnRIYW5kbGVyIiwiY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkIiwiZXZlbnQiLCJkZWZhdWx0UHJldmVudGVkIiwiJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMiLCJCb29sZWFuIiwiZ2xvYmFsVGhpcyIsImRvY3VtZW50IiwiJGR4bHdIJHVzZUxheW91dEVmZmVjdCIsIiQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkIiwiJDJBT0R4JHJlYWN0IiwidG9TdHJpbmciLCIkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkY291bnQiLCIkMTc0NmEzNDVmM2Q3M2JiNyRleHBvcnQkZjY4MDg3N2EzNDcxMWUzNyIsImRldGVybWluaXN0aWNJZCIsImlkIiwic2V0SWQiLCJ1c2VTdGF0ZSIsIiQyQU9EeCR1c2VMYXlvdXRFZmZlY3QiLCJyZWFjdElkIiwiU3RyaW5nIiwiJGIxYjIzMTRmNWY5YTFkODQkZXhwb3J0JDI1YmVjOGM2ZjU0ZWU3OWEiLCJjYWxsYmFjayIsImNhbGxiYWNrUmVmIiwiJGx3aVdqJHVzZVJlZiIsIiRsd2lXaiR1c2VFZmZlY3QiLCIkbHdpV2okdXNlTWVtbyIsImFyZ3MiLCJfY2FsbGJhY2tSZWYkY3VycmVudCIsIiQ3MWNkNzZjYzYwZTA0NTRlJGV4cG9ydCQ2ZjMyMTM1MDgwY2I0YzMiLCJwcm9wIiwiZGVmYXVsdFByb3AiLCJvbkNoYW5nZSIsInVuY29udHJvbGxlZFByb3AiLCJzZXRVbmNvbnRyb2xsZWRQcm9wIiwidW5jb250cm9sbGVkU3RhdGUiLCIkYm5QdzkkdXNlU3RhdGUiLCJwcmV2VmFsdWVSZWYiLCIkYm5QdzkkdXNlUmVmIiwiaGFuZGxlQ2hhbmdlIiwiJGJuUHc5JHVzZUNhbGxiYWNrUmVmIiwiJGJuUHc5JHVzZUVmZmVjdCIsIiQ3MWNkNzZjYzYwZTA0NTRlJHZhciR1c2VVbmNvbnRyb2xsZWRTdGF0ZSIsImlzQ29udHJvbGxlZCIsInZhbHVlMSIsIiRiblB3OSR1c2VDYWxsYmFjayIsIm5leHRWYWx1ZSIsIiQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwIiwiJDlJcmpYJGZvcndhcmRSZWYiLCJmb3J3YXJkZWRSZWYiLCJzbG90UHJvcHMiLCJjaGlsZHJlbkFycmF5IiwiJDlJcmpYJENoaWxkcmVuIiwidG9BcnJheSIsInNsb3R0YWJsZSIsImZpbmQiLCIkNWU2M2M5NjFmYzFjZTIxMSR2YXIkaXNTbG90dGFibGUiLCJuZXdFbGVtZW50IiwibmV3Q2hpbGRyZW4iLCJjaGlsZCIsIkNoaWxkcmVuIiwiY291bnQiLCJvbmx5IiwiJDlJcmpYJGlzVmFsaWRFbGVtZW50IiwiJDlJcmpYJGNyZWF0ZUVsZW1lbnQiLCIkNWU2M2M5NjFmYzFjZTIxMSR2YXIkU2xvdENsb25lIiwiJDlJcmpYJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDlJcmpYJGNsb25lRWxlbWVudCIsImNsb25lRWxlbWVudCIsImlzVmFsaWRFbGVtZW50IiwiJDVlNjNjOTYxZmMxY2UyMTEkdmFyJG1lcmdlUHJvcHMiLCIkOUlyalgkY29tcG9zZVJlZnMiLCIkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSIsIiQ5SXJqWCRGcmFnbWVudCIsInR5cGUiLCJjaGlsZFByb3BzIiwib3ZlcnJpZGVQcm9wcyIsInByb3BOYW1lIiwic2xvdFByb3BWYWx1ZSIsImNoaWxkUHJvcFZhbHVlIiwidGVzdCIsImZpbHRlciIsImpvaW4iLCIkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNCIsInByaW1pdGl2ZSIsIk5vZGUiLCIkNHE1RnEkZm9yd2FyZFJlZiIsImFzQ2hpbGQiLCJwcmltaXRpdmVQcm9wcyIsIkNvbXAiLCIkNHE1RnEkU2xvdCIsIiQ0cTVGcSR1c2VFZmZlY3QiLCJ3aW5kb3ciLCJTeW1ib2wiLCJmb3IiLCIkNHE1RnEkY3JlYXRlRWxlbWVudCIsIiQ0cTVGcSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRDT05URVhUX1VQREFURSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRQT0lOVEVSX0RPV05fT1VUU0lERSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRGT0NVU19PVVRTSURFIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHMiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRGlzbWlzc2FibGVMYXllckNvbnRleHQiLCIka3F3cEgkY3JlYXRlQ29udGV4dCIsImxheWVycyIsIlNldCIsImxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkIiwiYnJhbmNoZXMiLCIkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMiIsIiRrcXdwSCRmb3J3YXJkUmVmIiwiZm9yd2FyZFJlZiIsIl9ub2RlJG93bmVyRG9jdW1lbnQiLCJkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMiLCJvbkVzY2FwZUtleURvd24iLCJvblBvaW50ZXJEb3duT3V0c2lkZSIsIm9uRm9jdXNPdXRzaWRlIiwib25JbnRlcmFjdE91dHNpZGUiLCJvbkRpc21pc3MiLCJsYXllclByb3BzIiwiJGtxd3BIJHVzZUNvbnRleHQiLCJub2RlMSIsInNldE5vZGUiLCIka3F3cEgkdXNlU3RhdGUiLCJvd25lckRvY3VtZW50IiwiZm9yY2UiLCJjb21wb3NlZFJlZnMiLCIka3F3cEgkdXNlQ29tcG9zZWRSZWZzIiwiQXJyYXkiLCJmcm9tIiwiaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQiLCJzbGljZSIsImhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkSW5kZXgiLCJpbmRleE9mIiwiaXNCb2R5UG9pbnRlckV2ZW50c0Rpc2FibGVkIiwic2l6ZSIsImlzUG9pbnRlckV2ZW50c0VuYWJsZWQiLCJwb2ludGVyRG93bk91dHNpZGUiLCJoYW5kbGVQb2ludGVyRG93bk91dHNpZGUiLCIka3F3cEgkdXNlQ2FsbGJhY2tSZWYiLCJpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYiLCIka3F3cEgkdXNlUmVmIiwiaGFuZGxlQ2xpY2tSZWYiLCIka3F3cEgkdXNlRWZmZWN0IiwiaGFuZGxlUG9pbnRlckRvd24iLCJldmVudERldGFpbCIsIm9yaWdpbmFsRXZlbnQiLCJoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50IiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQiLCJkaXNjcmV0ZSIsInBvaW50ZXJUeXBlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbmNlIiwidGltZXJJZCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJvblBvaW50ZXJEb3duQ2FwdHVyZSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUiLCJpc1BvaW50ZXJEb3duT25CcmFuY2giLCJzb21lIiwiYnJhbmNoIiwiY29udGFpbnMiLCJmb2N1c091dHNpZGUiLCJoYW5kbGVGb2N1c091dHNpZGUiLCJpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmIiwiaGFuZGxlRm9jdXMiLCJvbkZvY3VzQ2FwdHVyZSIsIm9uQmx1ckNhcHR1cmUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkdXNlRm9jdXNPdXRzaWRlIiwib25Fc2NhcGVLZXlEb3duUHJvcCIsIiRoUFNRNSR1c2VDYWxsYmFja1JlZiIsIiRoUFNRNSR1c2VFZmZlY3QiLCJoYW5kbGVLZXlEb3duIiwiJGtxd3BIJHVzZUVzY2FwZUtleWRvd24iLCJwcmV2ZW50RGVmYXVsdCIsImJvZHkiLCJzdHlsZSIsInBvaW50ZXJFdmVudHMiLCJhZGQiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUiLCJkZWxldGUiLCJoYW5kbGVVcGRhdGUiLCIka3F3cEgkY3JlYXRlRWxlbWVudCIsIiRrcXdwSCRQcmltaXRpdmUiLCJkaXYiLCIka3F3cEgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJDdXN0b21FdmVudCIsImRpc3BhdGNoRXZlbnQiLCJuYW1lIiwiaGFuZGxlciIsImRldGFpbCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiJDRxNUZxJGZsdXNoU3luYyIsImZsdXNoU3luYyIsIiRrcXdwSCRkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5UIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5UIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMiLCIkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNiIsIiQ0NVFIdiRmb3J3YXJkUmVmIiwibG9vcCIsInRyYXBwZWQiLCJvbk1vdW50QXV0b0ZvY3VzIiwib25Nb3VudEF1dG9Gb2N1c1Byb3AiLCJvblVubW91bnRBdXRvRm9jdXMiLCJvblVubW91bnRBdXRvRm9jdXNQcm9wIiwic2NvcGVQcm9wcyIsImNvbnRhaW5lcjEiLCJzZXRDb250YWluZXIiLCIkNDVRSHYkdXNlU3RhdGUiLCIkNDVRSHYkdXNlQ2FsbGJhY2tSZWYiLCJsYXN0Rm9jdXNlZEVsZW1lbnRSZWYiLCIkNDVRSHYkdXNlUmVmIiwiJDQ1UUh2JHVzZUNvbXBvc2VkUmVmcyIsImZvY3VzU2NvcGUiLCJwYXVzZWQiLCJwYXVzZSIsInJlc3VtZSIsIiQ0NVFIdiR1c2VFZmZlY3QiLCJoYW5kbGVGb2N1c0luIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzIiwic2VsZWN0IiwiaGFuZGxlRm9jdXNPdXQiLCJyZWxhdGVkVGFyZ2V0IiwiaGFuZGxlTXV0YXRpb25zIiwibXV0YXRpb25zIiwiZm9jdXNlZEVsZW1lbnQiLCJhY3RpdmVFbGVtZW50IiwibXV0YXRpb24iLCJyZW1vdmVkTm9kZXMiLCJtdXRhdGlvbk9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiZGlzY29ubmVjdCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c1Njb3Blc1N0YWNrIiwicHJldmlvdXNseUZvY3VzZWRFbGVtZW50IiwibW91bnRFdmVudCIsImNhbmRpZGF0ZXMiLCJjYW5kaWRhdGUiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNGaXJzdCIsIml0ZW1zIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlQ2FuZGlkYXRlcyIsIml0ZW0iLCJ0YWdOYW1lIiwidW5tb3VudEV2ZW50IiwicmVtb3ZlIiwiJDQ1UUh2JHVzZUNhbGxiYWNrIiwiaXNUYWJLZXkiLCJhbHRLZXkiLCJjdHJsS2V5IiwibWV0YUtleSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJmaXJzdCIsImxhc3QiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZmluZFZpc2libGUiLCJyZXZlcnNlIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlRWRnZXMiLCJzaGlmdEtleSIsIiQ0NVFIdiRjcmVhdGVFbGVtZW50IiwiJDQ1UUh2JFByaW1pdGl2ZSIsIiQ0NVFIdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsInRhYkluZGV4Iiwib25LZXlEb3duIiwibm9kZXMiLCJ3YWxrZXIiLCJjcmVhdGVUcmVlV2Fsa2VyIiwiTm9kZUZpbHRlciIsIlNIT1dfRUxFTUVOVCIsImFjY2VwdE5vZGUiLCJpc0hpZGRlbklucHV0IiwiZGlzYWJsZWQiLCJoaWRkZW4iLCJGSUxURVJfU0tJUCIsIkZJTFRFUl9BQ0NFUFQiLCJuZXh0Tm9kZSIsInB1c2giLCJjdXJyZW50Tm9kZSIsImVsZW1lbnRzIiwiZWxlbWVudCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRpc0hpZGRlbiIsInVwVG8iLCJnZXRDb21wdXRlZFN0eWxlIiwidmlzaWJpbGl0eSIsImRpc3BsYXkiLCJwYXJlbnRFbGVtZW50IiwiZm9jdXMiLCJwcmV2ZW50U2Nyb2xsIiwiSFRNTElucHV0RWxlbWVudCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRpc1NlbGVjdGFibGVJbnB1dCIsInN0YWNrIiwiYWN0aXZlRm9jdXNTY29wZSIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRhcnJheVJlbW92ZSIsInVuc2hpZnQiLCJfc3RhY2skIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2siLCJhcnJheSIsInVwZGF0ZWRBcnJheSIsInNwbGljZSIsIiRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIiwiJDdTWGwyJGZvcndhcmRSZWYiLCJfZ2xvYmFsVGhpcyRkb2N1bWVudCIsInBvcnRhbFByb3BzIiwiJDdTWGwyJHJlYWN0ZG9tIiwiY3JlYXRlUG9ydGFsIiwiJDdTWGwyJGNyZWF0ZUVsZW1lbnQiLCIkN1NYbDIkUHJpbWl0aXZlIiwiJDdTWGwyJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIiLCJwcmVzZW50IiwicHJlc2VuY2UiLCIkaXFxM3IkdXNlU3RhdGUiLCJzdHlsZXNSZWYiLCIkaXFxM3IkdXNlUmVmIiwicHJldlByZXNlbnRSZWYiLCJwcmV2QW5pbWF0aW9uTmFtZVJlZiIsImluaXRpYWxTdGF0ZSIsInN0YXRlIiwic2VuZCIsIm1hY2hpbmUiLCIkaXFxM3IkdXNlUmVkdWNlciIsInVzZVJlZHVjZXIiLCJuZXh0U3RhdGUiLCIkZmU5NjNiMzU1MzQ3Y2M2OCRleHBvcnQkM2U2NTQzZGUxNGY4NjE0ZiIsIm1vdW50ZWQiLCJVTk1PVU5UIiwiQU5JTUFUSU9OX09VVCIsInVubW91bnRTdXNwZW5kZWQiLCJNT1VOVCIsIkFOSU1BVElPTl9FTkQiLCJ1bm1vdW50ZWQiLCIkaXFxM3IkdXNlRWZmZWN0IiwiY3VycmVudEFuaW1hdGlvbk5hbWUiLCIkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZSIsIiRpcXEzciR1c2VMYXlvdXRFZmZlY3QiLCJzdHlsZXMiLCJ3YXNQcmVzZW50IiwicHJldkFuaW1hdGlvbk5hbWUiLCJoYW5kbGVBbmltYXRpb25FbmQiLCJpc0N1cnJlbnRBbmltYXRpb24iLCJpbmNsdWRlcyIsImFuaW1hdGlvbk5hbWUiLCIkaXFxM3IkZmx1c2hTeW5jIiwiaGFuZGxlQW5pbWF0aW9uU3RhcnQiLCJpc1ByZXNlbnQiLCIkaXFxM3IkdXNlQ2FsbGJhY2siLCIkOTIxYTg4OWNlZTZkZjdlOCR2YXIkdXNlUHJlc2VuY2UiLCIkaXFxM3IkQ2hpbGRyZW4iLCIkaXFxM3IkdXNlQ29tcG9zZWRSZWZzIiwiJGlxcTNyJGNsb25lRWxlbWVudCIsIiQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudCIsIiQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRiN2VjZTI0YTIyYWVkYThjIiwiJDF3RXJ6JHVzZUVmZmVjdCIsIl9lZGdlR3VhcmRzJCIsIl9lZGdlR3VhcmRzJDIiLCJlZGdlR3VhcmRzIiwicXVlcnlTZWxlY3RvckFsbCIsImluc2VydEFkamFjZW50RWxlbWVudCIsIiQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkIiwic2V0QXR0cmlidXRlIiwiY3NzVGV4dCIsIl9fYXNzaWduIiwidCIsInMiLCJuIiwicCIsIl9fcmVzdCIsImUiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInplcm9SaWdodENsYXNzTmFtZSIsImZ1bGxXaWR0aENsYXNzTmFtZSIsInVzZU1lcmdlUmVmcyIsImRlZmF1bHRWYWx1ZSIsImluaXRpYWxWYWx1ZSIsIm5ld1ZhbHVlIiwiYXNzaWduUmVmIiwiZmFjYWRlIiwiSXRvSSIsImEiLCJTaWRlQ2FyIiwiX2EiLCJzaWRlQ2FyIiwicmVzdCIsIlRhcmdldCIsInJlYWQiLCJSZWFjdCIsImlzU2lkZUNhckV4cG9ydCIsImVmZmVjdENhciIsIm9wdGlvbnMiLCJtZWRpdW0iLCJkZWZhdWx0cyIsIm1pZGRsZXdhcmUiLCJidWZmZXIiLCJhc3NpZ25lZCIsInVzZU1lZGl1bSIsImRhdGEiLCJ4IiwiYXNzaWduU3luY01lZGl1bSIsImNiIiwiY2JzIiwiYXNzaWduTWVkaXVtIiwicGVuZGluZ1F1ZXVlIiwiZXhlY3V0ZVF1ZXVlIiwiY3ljbGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJpbm5lckNyZWF0ZU1lZGl1bSIsImFzeW5jIiwic3NyIiwiY3JlYXRlU2lkZWNhck1lZGl1bSIsIm5vdGhpbmciLCJSZW1vdmVTY3JvbGwiLCJwYXJlbnRSZWYiLCJ1c2VSZWYiLCJvblNjcm9sbENhcHR1cmUiLCJvbldoZWVsQ2FwdHVyZSIsIm9uVG91Y2hNb3ZlQ2FwdHVyZSIsImNhbGxiYWNrcyIsInNldENhbGxiYWNrcyIsImZvcndhcmRQcm9wcyIsImNsYXNzTmFtZSIsInJlbW92ZVNjcm9sbEJhciIsImVuYWJsZWQiLCJzaGFyZHMiLCJub0lzb2xhdGlvbiIsImluZXJ0IiwiYWxsb3dQaW5jaFpvb20iLCJfYiIsImFzIiwiQ29udGFpbmVyIiwiY29udGFpbmVyUmVmIiwiY29udGFpbmVyUHJvcHMiLCJGcmFnbWVudCIsImxvY2tSZWYiLCJkZWZhdWx0UHJvcHMiLCJjbGFzc05hbWVzIiwiZnVsbFdpZHRoIiwiemVyb1JpZ2h0IiwibWFrZVN0eWxlVGFnIiwidGFnIiwibm9uY2UiLCJfX3dlYnBhY2tfbm9uY2VfXyIsImdldE5vbmNlIiwic3R5bGVzaGVldFNpbmdsZXRvbiIsImNvdW50ZXIiLCJzdHlsZXNoZWV0IiwiY3NzIiwic3R5bGVTaGVldCIsImFwcGVuZENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpbnNlcnRTdHlsZVRhZyIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInN0eWxlU2luZ2xldG9uIiwic2hlZXQiLCJ1c2VTdHlsZSIsImlzRHluYW1pYyIsInVzZUVmZmVjdCIsImR5bmFtaWMiLCJ6ZXJvR2FwIiwibGVmdCIsInRvcCIsInJpZ2h0IiwiZ2FwIiwicGFyc2UiLCJwYXJzZUludCIsImdldEdhcFdpZHRoIiwiZ2FwTW9kZSIsIm9mZnNldHMiLCJjcyIsImdldE9mZnNldCIsImRvY3VtZW50V2lkdGgiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsIndpbmRvd1dpZHRoIiwiaW5uZXJXaWR0aCIsIk1hdGgiLCJtYXgiLCJTdHlsZSIsImdldFN0eWxlcyIsImFsbG93UmVsYXRpdmUiLCJpbXBvcnRhbnQiLCJjb25jYXQiLCJSZW1vdmVTY3JvbGxCYXIiLCJub1JlbGF0aXZlIiwibm9JbXBvcnRhbnQiLCJwYXNzaXZlU3VwcG9ydGVkIiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJlcnIiLCJub25QYXNzaXZlIiwicGFzc2l2ZSIsImVsZW1lbnRDYW5CZVNjcm9sbGVkIiwib3ZlcmZsb3ciLCJvdmVyZmxvd1kiLCJvdmVyZmxvd1giLCJhbHdheXNDb250YWluc1Njcm9sbCIsImxvY2F0aW9uQ291bGRCZVNjcm9sbGVkIiwiYXhpcyIsIlNoYWRvd1Jvb3QiLCJob3N0IiwiZWxlbWVudENvdWxkQmVTY3JvbGxlZCIsImdldFNjcm9sbFZhcmlhYmxlcyIsImVsZW1lbnRDb3VsZEJlVlNjcm9sbGVkIiwiZWxlbWVudENvdWxkQmVIU2Nyb2xsZWQiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsV2lkdGgiLCJnZXRIU2Nyb2xsVmFyaWFibGVzIiwiZ2V0VG91Y2hYWSIsImNoYW5nZWRUb3VjaGVzIiwiY2xpZW50WCIsImNsaWVudFkiLCJnZXREZWx0YVhZIiwiZGVsdGFYIiwiZGVsdGFZIiwiZXh0cmFjdFJlZiIsImdlbmVyYXRlU3R5bGUiLCJpZENvdW50ZXIiLCJsb2NrU3RhY2siLCJleHBvcnRlZCIsInNob3VsZFByZXZlbnRRdWV1ZSIsInRvdWNoU3RhcnRSZWYiLCJhY3RpdmVBeGlzIiwibGFzdFByb3BzIiwiY2xhc3NMaXN0IiwiYWxsb3dfMSIsInRvIiwicGFjayIsImFyIiwibCIsIl9fc3ByZWFkQXJyYXkiLCJlbCIsInNob3VsZENhbmNlbEV2ZW50IiwicGFyZW50IiwidG91Y2hlcyIsImN1cnJlbnRBeGlzIiwidG91Y2giLCJ0b3VjaFN0YXJ0IiwibW92ZURpcmVjdGlvbiIsImFicyIsImNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24iLCJjYW5jZWxpbmdBeGlzIiwiZW5kVGFyZ2V0Iiwic291cmNlRGVsdGEiLCJub092ZXJzY3JvbGwiLCJkaXJlY3Rpb25GYWN0b3IiLCJkaXJlY3Rpb24iLCJnZXREaXJlY3Rpb25GYWN0b3IiLCJkZWx0YSIsInRhcmdldEluTG9jayIsInNob3VsZENhbmNlbFNjcm9sbCIsImlzRGVsdGFQb3NpdGl2ZSIsImF2YWlsYWJsZVNjcm9sbCIsImF2YWlsYWJsZVNjcm9sbFRvcCIsInBvc2l0aW9uIiwiZWxlbWVudFNjcm9sbCIsImhhbmRsZVNjcm9sbCIsInNob3VsZFByZXZlbnQiLCJfZXZlbnQiLCJzb3VyY2VFdmVudCIsInkiLCJzaG91bGQiLCJzaGFyZE5vZGVzIiwic2hvdWxkQ2FuY2VsIiwic2Nyb2xsVG91Y2hTdGFydCIsInNjcm9sbFdoZWVsIiwic2Nyb2xsVG91Y2hNb3ZlIiwiaW5zdCIsIlJlYWN0UmVtb3ZlU2Nyb2xsIiwiJDAxYjljJFJlbW92ZVNjcm9sbCIsImNvdW50ZXJNYXAiLCJXZWFrTWFwIiwidW5jb250cm9sbGVkTm9kZXMiLCJtYXJrZXJNYXAiLCJsb2NrQ291bnQiLCJ1bndyYXBIb3N0IiwiYXBwbHlBdHRyaWJ1dGVUb090aGVycyIsIm9yaWdpbmFsVGFyZ2V0IiwibWFya2VyTmFtZSIsImNvbnRyb2xBdHRyaWJ1dGUiLCJ0YXJnZXRzIiwiY29ycmVjdGVkVGFyZ2V0IiwiY29uc29sZSIsImVycm9yIiwiY29ycmVjdFRhcmdldHMiLCJpc0FycmF5IiwibWFya2VyQ291bnRlciIsImhpZGRlbk5vZGVzIiwiZWxlbWVudHNUb0tlZXAiLCJlbGVtZW50c1RvU3RvcCIsImtlZXAiLCJoYXMiLCJkZWVwIiwiYXR0ciIsImdldEF0dHJpYnV0ZSIsImFscmVhZHlIaWRkZW4iLCJjb3VudGVyVmFsdWUiLCJtYXJrZXJWYWx1ZSIsInNldCIsImNsZWFyIiwicmVtb3ZlQXR0cmlidXRlIiwiaGlkZU90aGVycyIsImFjdGl2ZVBhcmVudE5vZGUiLCJnZXREZWZhdWx0UGFyZW50IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERJQUxPR19OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGNyZWF0ZURpYWxvZ0NvbnRleHQiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkY2M3MDI3NzNiOGVhM2U0MSIsIiQ2N1VIbSRjcmVhdGVDb250ZXh0U2NvcGUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nUHJvdmlkZXIiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQb3J0YWxQcm92aWRlciIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VQb3J0YWxDb250ZXh0IiwiZm9yY2VNb3VudCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmQxZDA2Yzc5YmUxOWUxNyIsIiQ2N1VIbSRmb3J3YXJkUmVmIiwicG9ydGFsQ29udGV4dCIsIl9fc2NvcGVEaWFsb2ciLCJvdmVybGF5UHJvcHMiLCJtb2RhbCIsIiQ2N1VIbSRjcmVhdGVFbGVtZW50IiwiJDY3VUhtJFByZXNlbmNlIiwib3BlbiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dPdmVybGF5SW1wbCIsIiQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ2N1VIbSRSZW1vdmVTY3JvbGwiLCIkNjdVSG0kU2xvdCIsImNvbnRlbnRSZWYiLCIkNjdVSG0kUHJpbWl0aXZlIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGdldFN0YXRlIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiNmQ5NTY1ZGUxZTA2OGNmIiwiY29udGVudFByb3BzIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRNb2RhbCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50Tm9uTW9kYWwiLCIkNjdVSG0kdXNlUmVmIiwiJDY3VUhtJHVzZUNvbXBvc2VkUmVmcyIsIiQ2N1VIbSR1c2VFZmZlY3QiLCJjb250ZW50IiwiJDY3VUhtJGhpZGVPdGhlcnMiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudEltcGwiLCJ0cmFwRm9jdXMiLCJvbkNsb3NlQXV0b0ZvY3VzIiwiJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiX2NvbnRleHQkdHJpZ2dlclJlZiRjIiwidHJpZ2dlclJlZiIsImN0cmxMZWZ0Q2xpY2siLCJidXR0b24iLCJoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZiIsImhhc1BvaW50ZXJEb3duT3V0c2lkZVJlZiIsIl9wcm9wcyRvbkNsb3NlQXV0b0ZvYyIsIl9jb250ZXh0JHRyaWdnZXJSZWYkYzIiLCJfcHJvcHMkb25JbnRlcmFjdE91dHMiLCJfY29udGV4dCR0cmlnZ2VyUmVmJGMzIiwib25PcGVuQXV0b0ZvY3VzIiwiJDY3VUhtJHVzZUZvY3VzR3VhcmRzIiwiJDY3VUhtJEZyYWdtZW50IiwiJDY3VUhtJEZvY3VzU2NvcGUiLCIkNjdVSG0kRGlzbWlzc2FibGVMYXllciIsInJvbGUiLCJjb250ZW50SWQiLCJkZXNjcmlwdGlvbklkIiwidGl0bGVJZCIsIm9uT3BlbkNoYW5nZSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDE2Zjc2MzhlNGEzNGI5MDkiLCJ0aXRsZVByb3BzIiwiaDIiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkOTRlOTRjMmVjMmM5NTRkNSIsImRlc2NyaXB0aW9uUHJvcHMiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYyIsImNsb3NlUHJvcHMiLCJvbkNsaWNrIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDY5YjYyYTQ5MzkzOTE3ZDYiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlV2FybmluZ0NvbnRleHQiLCIkNjdVSG0kY3JlYXRlQ29udGV4dCIsImNvbnRlbnROYW1lIiwidGl0bGVOYW1lIiwiZG9jc1NsdWciLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsIm9wZW5Qcm9wIiwiZGVmYXVsdE9wZW4iLCJzZXRPcGVuIiwiJDY3VUhtJHVzZUNvbnRyb2xsYWJsZVN0YXRlIiwiJDY3VUhtJHVzZUlkIiwib25PcGVuVG9nZ2xlIiwiJDY3VUhtJHVzZUNhbGxiYWNrIiwicHJldk9wZW4iLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyIsIiQ2N1VIbSRDaGlsZHJlbiIsIiQ2N1VIbSRQb3J0YWwiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMzkzZWRjNzk4YzQ3Mzc5ZCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmMzljMmQxNjVjZDg2MWZlIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJGNyZWF0ZUFsZXJ0RGlhbG9nQ29udGV4dCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiODg5MTg4MDc1MWMyYzViIiwiJDRrNEQwJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ0azREMCRjcmVhdGVEaWFsb2dTY29wZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2IiwiJDRrNEQwJGZvcndhcmRSZWYiLCJfX3Njb3BlQWxlcnREaWFsb2ciLCJkaWFsb2dTY29wZSIsIiQ0azREMCRjcmVhdGVFbGVtZW50IiwiJDRrNEQwJE92ZXJsYXkiLCIkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFsZXJ0RGlhbG9nQ29udGVudFByb3ZpZGVyIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZUFsZXJ0RGlhbG9nQ29udGVudENvbnRleHQiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZCIsIiQ0azREMCR1c2VDb21wb3NlZFJlZnMiLCIkNGs0RDAkdXNlUmVmIiwiY2FuY2VsUmVmIiwiJDRrNEQwJFdhcm5pbmdQcm92aWRlciIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUSVRMRV9OQU1FIiwiJDRrNEQwJENvbnRlbnQiLCIkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJfY2FuY2VsUmVmJGN1cnJlbnQiLCIkNGs0RDAkU2xvdHRhYmxlIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNyIsIiQ0azREMCRUaXRsZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhMjNiNTVjZGU1NWFkOWE1IiwiJDRrNEQwJERlc2NyaXB0aW9uIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJhbGVydERpYWxvZ1Byb3BzIiwiJDRrNEQwJFJvb3QiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyIsIiQ0azREMCRQb3J0YWwiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGUxOWNkNWY5Mzc2ZjhjZWUiLCJhY3Rpb25Qcm9wcyIsIiQ0azREMCRDbG9zZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ4NDhjOWI3ZWFkMGRmOTY3IiwiY2FuY2VsUHJvcHMiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkIiwiaGFzT3duIiwiY2xhc3NlcyIsImFyZyIsImFyZ1R5cGUiLCJpbm5lciIsIm1vZHVsZSIsImV4cG9ydHMiLCJkZWZhdWx0IiwiX3BhdGgiLCJfZyIsIlN2Z0Nsb3NlIiwieG1sbnMiLCJ3aWR0aCIsImhlaWdodCIsImZpbGwiLCJtYXNrVW5pdHMiLCJtYXNrVHlwZSIsImQiLCJtYXNrIiwiTG9hZGVyIiwiX2MiLCJfZCIsIl9lIiwiaW5oZXJpdENvbG9yIiwibG9hZGVyIiwiQnV0dG9uIiwidmFyaWFudCIsIl9mIiwicHJlZml4IiwiX2giLCJzdWZmaXgiLCJfaiIsIl9rIiwiX2wiLCJzaG93TG9hZGVyIiwiJDAxMGMyOTEzZGJkMmZlM2QkZXhwb3J0JDVjYWUzNjFhZDgyZGNlOGIiLCIkOEx2dkskdXNlUmVmIiwicHJldmlvdXMiLCIkOEx2dkskdXNlTWVtbyIsIiRkYjZjMzQ4NTE1MGI4ZTY2JGV4cG9ydCQxYWI3YWU3MTQ2OThjNGI4Iiwic2V0U2l6ZSIsIiQ5Z3lHUiR1c2VTdGF0ZSIsIiQ5Z3lHUiR1c2VMYXlvdXRFZmZlY3QiLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiZW50cnkiLCJib3JkZXJTaXplRW50cnkiLCJib3JkZXJTaXplIiwiYm94IiwidW5vYnNlcnZlIiwiJGU2OThhNzJlOTMyNDAzNDYkdmFyJENIRUNLQk9YX05BTUUiLCIkZTY5OGE3MmU5MzI0MDM0NiR2YXIkY3JlYXRlQ2hlY2tib3hDb250ZXh0IiwiJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JGI1NjZjNGZmNTQ4OGVhMDEiLCIkMWJwdlMkY3JlYXRlQ29udGV4dFNjb3BlIiwiJGU2OThhNzJlOTMyNDAzNDYkdmFyJENoZWNrYm94UHJvdmlkZXIiLCIkZTY5OGE3MmU5MzI0MDM0NiR2YXIkdXNlQ2hlY2tib3hDb250ZXh0IiwiJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JDQ4NTEzZjZiOWY4Y2U2MmQiLCIkMWJwdlMkZm9yd2FyZFJlZiIsIl9fc2NvcGVDaGVja2JveCIsImNoZWNrZWQiLCJjaGVja2VkUHJvcCIsImRlZmF1bHRDaGVja2VkIiwicmVxdWlyZWQiLCJvbkNoZWNrZWRDaGFuZ2UiLCJjaGVja2JveFByb3BzIiwic2V0QnV0dG9uIiwiJDFicHZTJHVzZVN0YXRlIiwiJDFicHZTJHVzZUNvbXBvc2VkUmVmcyIsImhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmIiwiJDFicHZTJHVzZVJlZiIsImlzRm9ybUNvbnRyb2wiLCJjbG9zZXN0Iiwic2V0Q2hlY2tlZCIsIiQxYnB2UyR1c2VDb250cm9sbGFibGVTdGF0ZSIsImluaXRpYWxDaGVja2VkU3RhdGVSZWYiLCIkMWJwdlMkdXNlRWZmZWN0IiwiZm9ybSIsInJlc2V0IiwiJDFicHZTJGNyZWF0ZUVsZW1lbnQiLCIkMWJwdlMkUHJpbWl0aXZlIiwiJDFicHZTJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJGU2OThhNzJlOTMyNDAzNDYkdmFyJGlzSW5kZXRlcm1pbmF0ZSIsIiRlNjk4YTcyZTkzMjQwMzQ2JHZhciRnZXRTdGF0ZSIsIiQxYnB2UyRjb21wb3NlRXZlbnRIYW5kbGVycyIsInByZXZDaGVja2VkIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJzdG9wUHJvcGFnYXRpb24iLCIkZTY5OGE3MmU5MzI0MDM0NiR2YXIkQnViYmxlSW5wdXQiLCJjb250cm9sIiwidHJhbnNmb3JtIiwiaW5wdXRQcm9wcyIsIiQxYnB2UyR1c2VQcmV2aW91cyIsImNvbnRyb2xTaXplIiwiJDFicHZTJHVzZVNpemUiLCJpbnB1dCIsImlucHV0UHJvdG8iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJFdmVudCIsImluZGV0ZXJtaW5hdGUiLCJvcGFjaXR5IiwibWFyZ2luIiwiJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCIkZTY5OGE3MmU5MzI0MDM0NiRleHBvcnQkYWRiNTg0NzM3ZDcxMmI3MCIsImluZGljYXRvclByb3BzIiwiJDFicHZTJFByZXNlbmNlIiwic3BhbiIsIl9kZWZzIiwiU3ZnS2V5Ym9hcmRBcnJvd0Rvd24iLCJ2aWV3Qm94IiwiU3ZnQ2hlY2tib3giLCJTdmdDaGVja2JveFVuY2hlY2siLCJTdmdQYXNzd29yZEV5ZSIsIlN2Z1Bhc3N3b3JkRXllQ3Jvc3NlZCIsImNsaXBQYXRoIiwiJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCIkN1Y0SlokZm9yd2FyZFJlZiIsIiQ3VjRKWiRjcmVhdGVFbGVtZW50IiwiJDdWNEpaJFByaW1pdGl2ZSIsImxhYmVsIiwiJDdWNEpaJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwib25Nb3VzZURvd24iLCJfcHJvcHMkb25Nb3VzZURvd24iLCJnZXRXZWlnaHRDbGFzcyIsIndlaWdodCIsInNlbWlCb2xkIiwicmVndWxhciIsIkxhYmVsIiwiaHRtbEZvciIsIlJlZHV4TGFiZWwuUm9vdCIsIklucHV0SGludCIsInJvb3QiLCJJbnB1dCIsImF1dG9Db21wbGV0ZSIsImNvdW50ZXJWaXNpYmlsaXR5TGltaXQiLCJlbmRBZG9ybm1lbnQiLCJlbmRBZG9ybm1lbnRDbGFzc05hbWUiLCJfbSIsImVycm9yTWVzc2FnZSIsIl9vIiwiaGludCIsIl9wIiwiaW5wdXRXcmFwcGVyQ2xhc3MiLCJfcSIsImlzTGFiZWxTdGF0aWMiLCJfciIsIl9zIiwibWF4TGVuZ3RoIiwiX3QiLCJvbkJsdXIiLCJvbkNoYW5nZUZyb21Qcm9wcyIsIm9uRm9jdXMiLCJfdSIsIm9wdGlvbmFsVGV4dCIsIl92IiwicGxhY2Vob2xkZXIiLCJfdyIsIl94Iiwic3RhcnRBZG9ybm1lbnQiLCJfeSIsInZhbHVlRnJvbVByb3BzIiwicmVzdFByb3BzIiwiaGFzRGVmYXVsdFZhbHVlIiwiX3oiLCJpc1Bhc3N3b3JkVmlzaWJsZSIsInNldElzUGFzc3dvcmRWaXNpYmxlIiwiXzAiLCJpbnRlcm5hbFZhbHVlIiwic2V0SW50ZXJuYWxWYWx1ZSIsIl8xIiwiaXNGb2N1c2VkIiwic2V0SXNGb2N1c2VkIiwiaXNQYXNzd29yZCIsImZpZWxkVHlwZSIsImxldHRlckNvdW50IiwiaXNMaW1pdFJlYWNoZWQiLCJpc0Rpc2FibGVkIiwiaGFzU3RhcnRBZG9ybm1lbnQiLCJpc0Vycm9yIiwic3RhdGljIiwib3B0aW9uYWwiLCJjb3JyZWN0ZWRUb3AiLCJpbnB1dFdyYXBwZXIiLCJmb290ZXIiLCJmb290ZXJNZXNzYWdlIiwidG9nZ2xlUGFzc3dvcmRCdXR0b24iLCJQYXNzd29yZEV5ZUljb24iLCJQYXNzd29yZEV5ZUNyb3NzZWRJY29uIiwiZ2V0QWxpZ25tZW50IiwicGxhY2VtZW50Iiwic3BsaXQiLCJnZXRMZW5ndGhGcm9tQXhpcyIsImdldFNpZGUiLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsIl9yZWYiLCJydGwiLCJyZWZlcmVuY2UiLCJmbG9hdGluZyIsImNvbW1vblgiLCJjb21tb25ZIiwibWFpbkF4aXMiLCJjb21tb25BbGlnbiIsImlzVmVydGljYWwiLCJjb29yZHMiLCJldmFsdWF0ZSIsInBhcmFtIiwiZ2V0U2lkZU9iamVjdEZyb21QYWRkaW5nIiwicGFkZGluZyIsImJvdHRvbSIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsImRldGVjdE92ZXJmbG93IiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwicGxhdGZvcm0iLCJyZWN0cyIsInN0cmF0ZWd5IiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJlbGVtZW50Q29udGV4dCIsImFsdEJvdW5kYXJ5IiwicGFkZGluZ09iamVjdCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsImdldENsaXBwaW5nUmVjdCIsImlzRWxlbWVudCIsImNvbnRleHRFbGVtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50Iiwib2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJnZXRTY2FsZSIsImVsZW1lbnRDbGllbnRSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJtaW4iLCJ3aXRoaW4iLCJtaW4kMSIsIm1heCQxIiwiYXJyb3ciLCJhcnJvd0RpbWVuc2lvbnMiLCJnZXREaW1lbnNpb25zIiwiaXNZQXhpcyIsIm1pblByb3AiLCJtYXhQcm9wIiwiY2xpZW50UHJvcCIsImVuZERpZmYiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImxhcmdlc3RQb3NzaWJsZVBhZGRpbmciLCJtaW5QYWRkaW5nIiwibWF4UGFkZGluZyIsImNlbnRlciIsIm9mZnNldCIsInNob3VsZEFkZE9mZnNldCIsImNlbnRlck9mZnNldCIsInNpZGVzIiwib3Bwb3NpdGVTaWRlTWFwIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJyZXBsYWNlIiwic2lkZSIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwic3RhcnQiLCJlbmQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImFsaWdubWVudCIsImZsaXAiLCJfbWlkZGxld2FyZURhdGEkZmxpcCIsIm1pZGRsZXdhcmVEYXRhIiwiaW5pdGlhbFBsYWNlbWVudCIsImNoZWNrTWFpbkF4aXMiLCJjcm9zc0F4aXMiLCJjaGVja0Nyb3NzQXhpcyIsImZhbGxiYWNrUGxhY2VtZW50cyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrU3RyYXRlZ3kiLCJmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uIiwiZmxpcEFsaWdubWVudCIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsImlzQmFzZVBsYWNlbWVudCIsImlzUlRMIiwib3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRFeHBhbmRlZFBsYWNlbWVudHMiLCJsaXN0IiwiaXNTdGFydCIsImxyIiwicmwiLCJ0YiIsImJ0IiwiZ2V0U2lkZUxpc3QiLCJnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsIm92ZXJmbG93cyIsIm92ZXJmbG93c0RhdGEiLCJtYWluIiwiY3Jvc3MiLCJtYWluQWxpZ25tZW50U2lkZSIsImdldEFsaWdubWVudFNpZGVzIiwiZXZlcnkiLCJfbWlkZGxld2FyZURhdGEkZmxpcDIiLCJfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIiLCJuZXh0SW5kZXgiLCJuZXh0UGxhY2VtZW50IiwicmVzZXRQbGFjZW1lbnQiLCJzb3J0IiwiYiIsIl9vdmVyZmxvd3NEYXRhJG1hcCRzbyIsImFjYyIsImdldFNpZGVPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwiaGlkZSIsInJlZmVyZW5jZUhpZGRlbk9mZnNldHMiLCJyZWZlcmVuY2VIaWRkZW4iLCJlc2NhcGVkT2Zmc2V0cyIsImVzY2FwZWQiLCJkaWZmQ29vcmRzIiwibWFpbkF4aXNNdWx0aSIsImNyb3NzQXhpc011bHRpIiwicmF3VmFsdWUiLCJhbGlnbm1lbnRBeGlzIiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJnZXRDcm9zc0F4aXMiLCJzaGlmdCIsImxpbWl0ZXIiLCJmbiIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwibGltaXRTaGlmdCIsInJhd09mZnNldCIsImNvbXB1dGVkT2Zmc2V0IiwibGVuIiwibGltaXRNaW4iLCJsaW1pdE1heCIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZSIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZTIiLCJpc09yaWdpblNpZGUiLCJpc1hBeGlzIiwiaGVpZ2h0U2lkZSIsIndpZHRoU2lkZSIsIm92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0Iiwib3ZlcmZsb3dBdmFpbGFibGVXaWR0aCIsIm5vU2hpZnQiLCJhdmFpbGFibGVIZWlnaHQiLCJhdmFpbGFibGVXaWR0aCIsIm1heGltdW1DbGlwcGluZ1dpZHRoIiwibWF4aW11bUNsaXBwaW5nSGVpZ2h0IiwieE1pbiIsInhNYXgiLCJ5TWluIiwieU1heCIsIm5leHREaW1lbnNpb25zIiwiZ2V0V2luZG93IiwiZGVmYXVsdFZpZXciLCJnZXRDb21wdXRlZFN0eWxlJDEiLCJpc05vZGUiLCJnZXROb2RlTmFtZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJpc0hUTUxFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJFbGVtZW50IiwiaXNTaGFkb3dSb290IiwiaXNPdmVyZmxvd0VsZW1lbnQiLCJpc1RhYmxlRWxlbWVudCIsImlzQ29udGFpbmluZ0Jsb2NrIiwic2FmYXJpIiwiaXNTYWZhcmkiLCJwZXJzcGVjdGl2ZSIsImJhY2tkcm9wRmlsdGVyIiwid2lsbENoYW5nZSIsImNvbnRhaW4iLCJDU1MiLCJzdXBwb3J0cyIsImlzTGFzdFRyYXZlcnNhYmxlTm9kZSIsInJvdW5kIiwiZ2V0Q3NzRGltZW5zaW9ucyIsInBhcnNlRmxvYXQiLCJoYXNPZmZzZXQiLCJzaG91bGRGYWxsYmFjayIsImZhbGxiYWNrIiwidW53cmFwRWxlbWVudCIsIkZBTExCQUNLX1NDQUxFIiwiZG9tRWxlbWVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIk51bWJlciIsImlzRmluaXRlIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsImlzRml4ZWQiLCJmbG9hdGluZ09mZnNldFBhcmVudCIsIl93aW4kdmlzdWFsVmlld3BvcnQiLCJfd2luJHZpc3VhbFZpZXdwb3J0MiIsIndpbiIsInZpc3VhbFZpZXdwb3J0Iiwib2Zmc2V0TGVmdCIsIm9mZnNldFRvcCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZSIsInZpc3VhbE9mZnNldHMiLCJvZmZzZXRXaW4iLCJjdXJyZW50SUZyYW1lIiwiZnJhbWVFbGVtZW50IiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwiY2xpZW50TGVmdCIsInBhZGRpbmdMZWZ0IiwiY2xpZW50VG9wIiwicGFkZGluZ1RvcCIsImdldE5vZGVTY3JvbGwiLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImdldFBhcmVudE5vZGUiLCJyZXN1bHQiLCJhc3NpZ25lZFNsb3QiLCJnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImh0bWwiLCJ2aXN1YWxWaWV3cG9ydEJhc2VkIiwiZ2V0Vmlld3BvcnRSZWN0Iiwic2Nyb2xsIiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsImdldENvbnRhaW5pbmdCbG9jayIsImdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50IiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiY2xpcHBpbmdBbmNlc3RvcnMiLCJjYWNoZSIsImNhY2hlZFJlc3VsdCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImdldENsaWVudFJlY3RzIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwiYW5pbWF0aW9uRnJhbWUiLCJhbmNlc3RvcnMiLCJpc1Zpc3VhbFZpZXdwb3J0IiwiZnJhbWVJZCIsIm9ic2VydmVyIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9vYnNlcnZlciIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiY29tcHV0ZVBvc2l0aW9uIiwiTWFwIiwibWVyZ2VkT3B0aW9ucyIsInBsYXRmb3JtV2l0aENhY2hlIiwiY29uZmlnIiwidmFsaWRNaWRkbGV3YXJlIiwiZ2V0RWxlbWVudFJlY3RzIiwic3RhdGVmdWxQbGFjZW1lbnQiLCJyZXNldENvdW50IiwibmV4dFgiLCJuZXh0WSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiYXJyb3ckMSIsInVzZUxheW91dEVmZmVjdCIsImRlZXBFcXVhbCIsImtleXMiLCIkJHR5cGVvZiIsImdldERQUiIsImRldmljZVBpeGVsUmF0aW8iLCJyb3VuZEJ5RFBSIiwiZHByIiwidXNlTGF0ZXN0UmVmIiwiJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCIkamJuRXgkZm9yd2FyZFJlZiIsImFycm93UHJvcHMiLCIkamJuRXgkY3JlYXRlRWxlbWVudCIsIiRqYm5FeCRQcmltaXRpdmUiLCJzdmciLCIkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwicG9pbnRzIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGNyZWF0ZVBvcHBlckNvbnRleHQiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzIyYWFjMTk0YWU5MjMiLCIka1k5M1YkY3JlYXRlQ29udGV4dFNjb3BlIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlclByb3ZpZGVyIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZVBvcHBlckNvbnRleHQiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkZWNkNGUxY2NhYjZlZDZkIiwiJGtZOTNWJGZvcndhcmRSZWYiLCJfX3Njb3BlUG9wcGVyIiwidmlydHVhbFJlZiIsImFuY2hvclByb3BzIiwiJGtZOTNWJHVzZVJlZiIsIiRrWTkzViR1c2VDb21wb3NlZFJlZnMiLCIka1k5M1YkdXNlRWZmZWN0Iiwib25BbmNob3JDaGFuZ2UiLCIka1k5M1YkY3JlYXRlRWxlbWVudCIsIiRrWTkzViRQcmltaXRpdmUiLCIka1k5M1YkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQ09OVEVOVF9OQU1FIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlckNvbnRlbnRQcm92aWRlciIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciR1c2VDb250ZW50Q29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYzRhZTU4NTVkM2M0ZmMiLCJfYXJyb3dTaXplJHdpZHRoIiwiX2Fycm93U2l6ZSRoZWlnaHQiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJfbWlkZGxld2FyZURhdGEkYXJyb3cyIiwiX21pZGRsZXdhcmVEYXRhJGFycm93MyIsIl9taWRkbGV3YXJlRGF0YSR0cmFucyIsIl9taWRkbGV3YXJlRGF0YSR0cmFuczIiLCJfbWlkZGxld2FyZURhdGEkaGlkZSIsInNpZGVPZmZzZXQiLCJhbGlnbiIsImFsaWduT2Zmc2V0IiwiYXJyb3dQYWRkaW5nIiwiY29sbGlzaW9uQm91bmRhcnkiLCJjb2xsaXNpb25QYWRkaW5nIiwiY29sbGlzaW9uUGFkZGluZ1Byb3AiLCJzdGlja3kiLCJoaWRlV2hlbkRldGFjaGVkIiwiYXZvaWRDb2xsaXNpb25zIiwib25QbGFjZWQiLCJzZXRDb250ZW50IiwiJGtZOTNWJHVzZVN0YXRlIiwic2V0QXJyb3ciLCJhcnJvd1NpemUiLCIka1k5M1YkdXNlU2l6ZSIsImFycm93V2lkdGgiLCJhcnJvd0hlaWdodCIsImRlc2lyZWRQbGFjZW1lbnQiLCJoYXNFeHBsaWNpdEJvdW5kYXJpZXMiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkaXNOb3ROdWxsIiwiZmxvYXRpbmdTdHlsZXMiLCJpc1Bvc2l0aW9uZWQiLCJleHRlcm5hbFJlZmVyZW5jZSIsImV4dGVybmFsRmxvYXRpbmciLCJ3aGlsZUVsZW1lbnRzTW91bnRlZCIsInNldERhdGEiLCJsYXRlc3RNaWRkbGV3YXJlIiwic2V0TGF0ZXN0TWlkZGxld2FyZSIsIl9yZWZlcmVuY2UiLCJfc2V0UmVmZXJlbmNlIiwiX2Zsb2F0aW5nIiwiX3NldEZsb2F0aW5nIiwic2V0UmVmZXJlbmNlIiwicmVmZXJlbmNlUmVmIiwic2V0RmxvYXRpbmciLCJmbG9hdGluZ1JlZiIsInJlZmVyZW5jZUVsIiwiZmxvYXRpbmdFbCIsImRhdGFSZWYiLCJ3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiIsInBsYXRmb3JtUmVmIiwiZnVsbERhdGEiLCJpc01vdW50ZWRSZWYiLCJSZWFjdERPTSIsImluaXRpYWxTdHlsZXMiLCIka1k5M1YkdXNlRmxvYXRpbmciLCIka1k5M1YkYXV0b1VwZGF0ZSIsImFuY2hvciIsIiRrWTkzViRvZmZzZXQiLCIka1k5M1Ykc2hpZnQiLCIka1k5M1YkbGltaXRTaGlmdCIsIiRrWTkzViRmbGlwIiwiJGtZOTNWJHNpemUiLCJhbmNob3JXaWR0aCIsImFuY2hvckhlaWdodCIsImNvbnRlbnRTdHlsZSIsInNldFByb3BlcnR5IiwiJGtZOTNWJGFycm93IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHRyYW5zZm9ybU9yaWdpbiIsIiRrWTkzViRoaWRlIiwicGxhY2VkU2lkZSIsInBsYWNlZEFsaWduIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQiLCJoYW5kbGVQbGFjZWQiLCIka1k5M1YkdXNlQ2FsbGJhY2tSZWYiLCIka1k5M1YkdXNlTGF5b3V0RWZmZWN0IiwiYXJyb3dYIiwiYXJyb3dZIiwiY2Fubm90Q2VudGVyQXJyb3ciLCJjb250ZW50WkluZGV4Iiwic2V0Q29udGVudFpJbmRleCIsInpJbmRleCIsIm1pbldpZHRoIiwidHJhbnNmb3JtT3JpZ2luIiwiZGlyIiwib25BcnJvd0NoYW5nZSIsInNob3VsZEhpZGVBcnJvdyIsImFuaW1hdGlvbiIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRPUFBPU0lURV9TSURFIiwiX21pZGRsZXdhcmVEYXRhJGFycm93NCIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzUiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c2IiwiX21pZGRsZXdhcmVEYXRhJGFycm93NyIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzgiLCJpc0Fycm93SGlkZGVuIiwibm9BcnJvd0FsaWduIiwiYXJyb3dYQ2VudGVyIiwiYXJyb3dZQ2VudGVyIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJzZXRBbmNob3IiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYjY4ODI1Mzk1OGI4ZGZlNyIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUiLCJjb250ZW50Q29udGV4dCIsImJhc2VTaWRlIiwiJGtZOTNWJFJvb3QiLCIkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUE9QT1ZFUl9OQU1FIiwiJGNiNWNjMjcwYjUwYzZmY2QkdmFyJGNyZWF0ZVBvcG92ZXJDb250ZXh0IiwiJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGM4MzkzYzllNzMyODY5MzIiLCIkYW02Z20kY3JlYXRlQ29udGV4dFNjb3BlIiwiJGFtNmdtJGNyZWF0ZVBvcHBlclNjb3BlIiwiJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcHBlclNjb3BlIiwiJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcG92ZXJQcm92aWRlciIsIiRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BvdmVyQ29udGV4dCIsIiRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ3ZGFjYjA1ZDI2NDY2YzMiLCIkYW02Z20kZm9yd2FyZFJlZiIsIl9fc2NvcGVQb3BvdmVyIiwidHJpZ2dlclByb3BzIiwicG9wcGVyU2NvcGUiLCJjb21wb3NlZFRyaWdnZXJSZWYiLCIkYW02Z20kdXNlQ29tcG9zZWRSZWZzIiwidHJpZ2dlciIsIiRhbTZnbSRjcmVhdGVFbGVtZW50IiwiJGFtNmdtJFByaW1pdGl2ZSIsIiRhbTZnbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiRjYjVjYzI3MGI1MGM2ZmNkJHZhciRnZXRTdGF0ZSIsIiRhbTZnbSRjb21wb3NlRXZlbnRIYW5kbGVycyIsImhhc0N1c3RvbUFuY2hvciIsIiRhbTZnbSRBbmNob3IiLCIkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUE9SVEFMX05BTUUiLCIkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUG9ydGFsUHJvdmlkZXIiLCIkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9ydGFsQ29udGV4dCIsIiRjYjVjYzI3MGI1MGM2ZmNkJHZhciRDT05URU5UX05BTUUiLCIkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZDdlMWY0MjBiMjU1NDlmZiIsIiRhbTZnbSRQcmVzZW5jZSIsIiRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3BvdmVyQ29udGVudE1vZGFsIiwiJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcG92ZXJDb250ZW50Tm9uTW9kYWwiLCIkYW02Z20kdXNlUmVmIiwiaXNSaWdodENsaWNrT3V0c2lkZVJlZiIsIiRhbTZnbSR1c2VFZmZlY3QiLCIkYW02Z20kaGlkZU90aGVycyIsIiRhbTZnbSRSZW1vdmVTY3JvbGwiLCIkYW02Z20kU2xvdCIsIiRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3BvdmVyQ29udGVudEltcGwiLCJpc1JpZ2h0Q2xpY2siLCIkYW02Z20kdXNlRm9jdXNHdWFyZHMiLCIkYW02Z20kRm9jdXNTY29wZSIsIiRhbTZnbSREaXNtaXNzYWJsZUxheWVyIiwiJGFtNmdtJENvbnRlbnQiLCIkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsInNldEhhc0N1c3RvbUFuY2hvciIsIiRhbTZnbSR1c2VTdGF0ZSIsIiRhbTZnbSR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiRhbTZnbSRSb290IiwiJGFtNmdtJHVzZUlkIiwiJGFtNmdtJHVzZUNhbGxiYWNrIiwib25DdXN0b21BbmNob3JBZGQiLCJvbkN1c3RvbUFuY2hvclJlbW92ZSIsIiRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkYW02Z20kUG9ydGFsIiwiJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCJQb3BvdmVyIiwibWVtbyIsImNoaWxkQ2xhc3MiLCJpc0NvbnRlbnRDaGlsZCIsImlzT3BlbiIsIm9uT3BlbiIsIlJhZGl4UG9wb3Zlci5Sb290IiwiUmFkaXhQb3BvdmVyLlRyaWdnZXIiLCJSYWRpeFBvcG92ZXIuUG9ydGFsIiwiUmFkaXhQb3BvdmVyLkNvbnRlbnQiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkUFJPR1JFU1NfTkFNRSIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRERUZBVUxUX01BWCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRjcmVhdGVQcm9ncmVzc0NvbnRleHQiLCIkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZiIsIiRrMDN3SSRjcmVhdGVDb250ZXh0U2NvcGUiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkUHJvZ3Jlc3NQcm92aWRlciIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciR1c2VQcm9ncmVzc0NvbnRleHQiLCIkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYjI1YTMwNGVjN2Q3NDZiYiIsIiRrMDN3SSRmb3J3YXJkUmVmIiwiX19zY29wZVByb2dyZXNzIiwidmFsdWVQcm9wIiwiZ2V0VmFsdWVMYWJlbCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRkZWZhdWx0R2V0VmFsdWVMYWJlbCIsInByb2dyZXNzUHJvcHMiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlciIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkVmFsdWVOdW1iZXIiLCJ2YWx1ZUxhYmVsIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzTnVtYmVyIiwiJGswM3dJJGNyZWF0ZUVsZW1lbnQiLCIkazAzd0kkUHJpbWl0aXZlIiwiJGswM3dJJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldFByb2dyZXNzU3RhdGUiLCJwcm9wVHlwZXMiLCJjb21wb25lbnROYW1lIiwicHJvcFZhbHVlIiwic3RyVmFsIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldEludmFsaWRNYXhFcnJvciIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkVmFsdWVFcnJvciIsIm1heFZhbHVlIiwiaXNOYU4iLCIkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRhZGI1ODQ3MzdkNzEyYjcwIiwiX2NvbnRleHQkdmFsdWUiLCIkZTAyYTdkOWNiMWRjMTI4YyRleHBvcnQkYzc0MTI1YThlM2FmNmJiMiIsIlBST1ZJREVSX05BTUUiLCJjcmVhdGVDb2xsZWN0aW9uQ29udGV4dCIsImNyZWF0ZUNvbGxlY3Rpb25TY29wZSIsIiQ2dlloVSRjcmVhdGVDb250ZXh0U2NvcGUiLCJDb2xsZWN0aW9uUHJvdmlkZXJJbXBsIiwidXNlQ29sbGVjdGlvbkNvbnRleHQiLCJjb2xsZWN0aW9uUmVmIiwiaXRlbU1hcCIsIkNPTExFQ1RJT05fU0xPVF9OQU1FIiwiSVRFTV9TTE9UX05BTUUiLCJJVEVNX0RBVEFfQVRUUiIsIiQ2dlloVSRyZWFjdCIsIlNsb3QiLCIkNnZZaFUkdXNlQ29tcG9zZWRSZWZzIiwiJDZ2WWhVJFNsb3QiLCJJdGVtU2xvdCIsIml0ZW1EYXRhIiwiY29sbGVjdGlvbk5vZGUiLCJvcmRlcmVkTm9kZXMiLCIkZjYzMTY2M2RiMzI5NGFjZSR2YXIkRGlyZWN0aW9uQ29udGV4dCIsIiQ3R2pjZCRjcmVhdGVDb250ZXh0IiwiJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JGIzOTEyNmQ1MWQ5NGU2ZjMiLCJsb2NhbERpciIsImdsb2JhbERpciIsIiQ3R2pjZCR1c2VDb250ZXh0IiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVOVFJZX0ZPQ1VTIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVWRU5UX09QVElPTlMiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRSIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRDb2xsZWN0aW9uIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZUNvbGxlY3Rpb24iLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlIiwiJDk4SXllJGNyZWF0ZUNvbGxlY3Rpb24iLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlUm92aW5nRm9jdXNHcm91cENvbnRleHQiLCIkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYzcxMDk0ODk1NTFhNGY0IiwiJDk4SXllJGNyZWF0ZUNvbnRleHRTY29wZSIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c1Byb3ZpZGVyIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZVJvdmluZ0ZvY3VzQ29udGV4dCIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ4Njk5ZjdjOGFmMTQ4MzM4IiwiJDk4SXllJGZvcndhcmRSZWYiLCIkOThJeWUkY3JlYXRlRWxlbWVudCIsIl9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzR3JvdXBJbXBsIiwiJDk4SXllJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwib3JpZW50YXRpb24iLCJjdXJyZW50VGFiU3RvcElkIiwiY3VycmVudFRhYlN0b3BJZFByb3AiLCJkZWZhdWx0Q3VycmVudFRhYlN0b3BJZCIsIm9uQ3VycmVudFRhYlN0b3BJZENoYW5nZSIsIm9uRW50cnlGb2N1cyIsImdyb3VwUHJvcHMiLCIkOThJeWUkdXNlUmVmIiwiJDk4SXllJHVzZUNvbXBvc2VkUmVmcyIsIiQ5OEl5ZSR1c2VEaXJlY3Rpb24iLCJzZXRDdXJyZW50VGFiU3RvcElkIiwiJDk4SXllJHVzZUNvbnRyb2xsYWJsZVN0YXRlIiwiaXNUYWJiaW5nQmFja091dCIsInNldElzVGFiYmluZ0JhY2tPdXQiLCIkOThJeWUkdXNlU3RhdGUiLCJoYW5kbGVFbnRyeUZvY3VzIiwiJDk4SXllJHVzZUNhbGxiYWNrUmVmIiwiZ2V0SXRlbXMiLCJpc0NsaWNrRm9jdXNSZWYiLCJmb2N1c2FibGVJdGVtc0NvdW50Iiwic2V0Rm9jdXNhYmxlSXRlbXNDb3VudCIsIiQ5OEl5ZSR1c2VFZmZlY3QiLCJvbkl0ZW1Gb2N1cyIsIiQ5OEl5ZSR1c2VDYWxsYmFjayIsInRhYlN0b3BJZCIsIm9uSXRlbVNoaWZ0VGFiIiwib25Gb2N1c2FibGVJdGVtQWRkIiwicHJldkNvdW50Iiwib25Gb2N1c2FibGVJdGVtUmVtb3ZlIiwiJDk4SXllJFByaW1pdGl2ZSIsIm91dGxpbmUiLCIkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJpc0tleWJvYXJkRm9jdXMiLCJlbnRyeUZvY3VzRXZlbnQiLCJmb2N1c2FibGUiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZm9jdXNGaXJzdCIsImFjdGl2ZSIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRhYjlkZjdjNTNmZTg0NTQiLCJpdGVtUHJvcHMiLCJhdXRvSWQiLCIkOThJeWUkdXNlSWQiLCJpc0N1cnJlbnRUYWJTdG9wIiwiZm9jdXNJbnRlbnQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0RGlyZWN0aW9uQXdhcmVLZXkiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkTUFQX0tFWV9UT19GT0NVU19JTlRFTlQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0Rm9jdXNJbnRlbnQiLCJjYW5kaWRhdGVOb2RlcyIsImN1cnJlbnRJbmRleCIsInN0YXJ0SW5kZXgiLCJfIiwiQXJyb3dMZWZ0IiwiQXJyb3dVcCIsIkFycm93UmlnaHQiLCJBcnJvd0Rvd24iLCJQYWdlVXAiLCJIb21lIiwiUGFnZURvd24iLCJFbmQiLCJQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIiLCIkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkUkFESU9fTkFNRSIsIiRjZTc3YTg5NjFiNDFiZTllJHZhciRjcmVhdGVSYWRpb0NvbnRleHQiLCIkY2U3N2E4OTYxYjQxYmU5ZSRleHBvcnQkNjdkMjI5NjQ2MGYxYjAwMiIsIiQ4V29sdiRjcmVhdGVDb250ZXh0U2NvcGUiLCIkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkUmFkaW9Qcm92aWRlciIsIiRjZTc3YTg5NjFiNDFiZTllJHZhciR1c2VSYWRpb0NvbnRleHQiLCIkY2U3N2E4OTYxYjQxYmU5ZSRleHBvcnQkZDdiMTJjNDEwN2JlMGQ2MSIsIiQ4V29sdiRmb3J3YXJkUmVmIiwiX19zY29wZVJhZGlvIiwib25DaGVjayIsInJhZGlvUHJvcHMiLCIkOFdvbHYkdXNlU3RhdGUiLCIkOFdvbHYkdXNlQ29tcG9zZWRSZWZzIiwiJDhXb2x2JHVzZVJlZiIsIiQ4V29sdiRjcmVhdGVFbGVtZW50IiwiJDhXb2x2JFByaW1pdGl2ZSIsIiQ4V29sdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiRjZTc3YTg5NjFiNDFiZTllJHZhciRnZXRTdGF0ZSIsIiQ4V29sdiRjb21wb3NlRXZlbnRIYW5kbGVycyIsIiRjZTc3YTg5NjFiNDFiZTllJHZhciRCdWJibGVJbnB1dCIsIiRjZTc3YTg5NjFiNDFiZTllJGV4cG9ydCRkMzVhOWZmYTlhMDRmOWU3IiwiJDhXb2x2JFByZXNlbmNlIiwiJDhXb2x2JHVzZVByZXZpb3VzIiwiJDhXb2x2JHVzZVNpemUiLCIkOFdvbHYkdXNlRWZmZWN0IiwiJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJEFSUk9XX0tFWVMiLCIkZjk5YThjNzg1MDcxNjVmNyR2YXIkUkFESU9fR1JPVVBfTkFNRSIsIiRmOTlhOGM3ODUwNzE2NWY3JHZhciRjcmVhdGVSYWRpb0dyb3VwQ29udGV4dCIsIiRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCRjNTQ3MDkzZjExYjc2ZGEyIiwiJDhXb2x2JGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSIsIiRmOTlhOGM3ODUwNzE2NWY3JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCIkZjk5YThjNzg1MDcxNjVmNyR2YXIkdXNlUmFkaW9TY29wZSIsIiRmOTlhOGM3ODUwNzE2NWY3JHZhciRSYWRpb0dyb3VwUHJvdmlkZXIiLCIkZjk5YThjNzg1MDcxNjVmNyR2YXIkdXNlUmFkaW9Hcm91cENvbnRleHQiLCIkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsIl9fc2NvcGVSYWRpb0dyb3VwIiwib25WYWx1ZUNoYW5nZSIsInJvdmluZ0ZvY3VzR3JvdXBTY29wZSIsIiQ4V29sdiR1c2VEaXJlY3Rpb24iLCJzZXRWYWx1ZSIsIiQ4V29sdiR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ4V29sdiRSb290IiwiJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIiLCJyYWRpb1Njb3BlIiwiaXNBcnJvd0tleVByZXNzZWRSZWYiLCJoYW5kbGVLZXlVcCIsIiQ4V29sdiRJdGVtIiwiX3JlZiRjdXJyZW50IiwiY2xpY2siLCIkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkYWRiNTg0NzM3ZDcxMmI3MCIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRjcmVhdGVTd2l0Y2hDb250ZXh0IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGNmN2Y1ZjE3ZjY5Y2JkNDMiLCIkaXJQSWwkY3JlYXRlQ29udGV4dFNjb3BlIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFN3aXRjaFByb3ZpZGVyIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJHVzZVN3aXRjaENvbnRleHQiLCIkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MiIsIiRpclBJbCRmb3J3YXJkUmVmIiwiX19zY29wZVN3aXRjaCIsInN3aXRjaFByb3BzIiwiJGlyUElsJHVzZVN0YXRlIiwiJGlyUElsJHVzZUNvbXBvc2VkUmVmcyIsIiRpclBJbCR1c2VSZWYiLCIkaXJQSWwkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCIkaXJQSWwkY3JlYXRlRWxlbWVudCIsIiRpclBJbCRQcmltaXRpdmUiLCIkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUiLCIkaXJQSWwkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCIkNmJlNDk2NmZkOWJiYzY5OCR2YXIkQnViYmxlSW5wdXQiLCIkaXJQSWwkdXNlUHJldmlvdXMiLCIkaXJQSWwkdXNlU2l6ZSIsIiRpclBJbCR1c2VFZmZlY3QiLCIkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ2NTIxNDMzZWQxNWEzNGRiIiwidGh1bWJQcm9wcyIsIiRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0IiwiJGtWd253JGZvcndhcmRSZWYiLCIka1Z3bnckY3JlYXRlRWxlbWVudCIsIiRrVndudyRQcmltaXRpdmUiLCIka1Z3bnckYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJib3JkZXIiLCJjbGlwIiwid2hpdGVTcGFjZSIsIndvcmRXcmFwIiwiJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMWM1NDBhMjIyNGYwZDg2NSIsIiQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGUiLCIkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkREVGQVVMVF9ERUxBWV9EVVJBVElPTiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4iLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZXh0UHJvdmlkZXIiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDhjNjEwNzQ0ZWZjZjhhMWQiLCIkOHdlcEskZm9yd2FyZFJlZiIsIl9fc2NvcGVUb29sdGlwIiwicHJvdmlkZXJDb250ZXh0IiwiJDh3ZXBLJHVzZUNvbXBvc2VkUmVmcyIsIiQ4d2VwSyR1c2VSZWYiLCJvblRyaWdnZXJDaGFuZ2UiLCJpc1BvaW50ZXJEb3duUmVmIiwiaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYiLCJoYW5kbGVQb2ludGVyVXAiLCIkOHdlcEskdXNlQ2FsbGJhY2siLCIkOHdlcEskdXNlRWZmZWN0IiwiJDh3ZXBLJGNyZWF0ZUVsZW1lbnQiLCIkOHdlcEskQW5jaG9yIiwiJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDh3ZXBLJFByaW1pdGl2ZSIsInN0YXRlQXR0cmlidXRlIiwib25Qb2ludGVyTW92ZSIsIiQ4d2VwSyRjb21wb3NlRXZlbnRIYW5kbGVycyIsImlzUG9pbnRlckluVHJhbnNpdFJlZiIsIm9uVHJpZ2dlckVudGVyIiwib25Qb2ludGVyTGVhdmUiLCJvblRyaWdnZXJMZWF2ZSIsIm9uUG9pbnRlckRvd24iLCJvbkNsb3NlIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBvcnRhbFByb3ZpZGVyIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAiLCIkOHdlcEskUHJlc2VuY2UiLCJkaXNhYmxlSG92ZXJhYmxlQ29udGVudCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEltcGwiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcENvbnRlbnRIb3ZlcmFibGUiLCJwb2ludGVyR3JhY2VBcmVhIiwic2V0UG9pbnRlckdyYWNlQXJlYSIsIiQ4d2VwSyR1c2VTdGF0ZSIsIm9uUG9pbnRlckluVHJhbnNpdENoYW5nZSIsImhhbmRsZVJlbW92ZUdyYWNlQXJlYSIsImhhbmRsZUNyZWF0ZUdyYWNlQXJlYSIsImhvdmVyVGFyZ2V0IiwiZXhpdFBvaW50IiwicGFkZGVkRXhpdFBvaW50cyIsImV4aXRTaWRlIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldFBhZGRlZEV4aXRQb2ludHMiLCJwb2ludCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0IiwiZ3JhY2VBcmVhIiwibmV3UG9pbnRzIiwidXBwZXJIdWxsIiwicSIsInIiLCJwb3AiLCJsb3dlckh1bGwiLCJpMSIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsUHJlc29ydGVkIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGwiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0UG9pbnRzRnJvbVJlY3QiLCJoYW5kbGVUcmlnZ2VyTGVhdmUiLCJoYW5kbGVDb250ZW50TGVhdmUiLCJoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSIsInBvaW50ZXJQb3NpdGlvbiIsImhhc0VudGVyZWRUYXJnZXQiLCJpc1BvaW50ZXJPdXRzaWRlR3JhY2VBcmVhIiwicG9seWdvbiIsImluc2lkZSIsImoiLCJ4aSIsInlpIiwieGoiLCJ5aiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHRQcm92aWRlciIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0IiwiaXNJbnNpZGUiLCJhcmlhTGFiZWwiLCJjYXB0dXJlIiwiJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIiLCIkOHdlcEskQ29udGVudCIsIiQ4d2VwSyRTbG90dGFibGUiLCIkOHdlcEskUm9vdDEiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjg4MTQ5OWUzN2I3NWI5YSIsImRlbGF5RHVyYXRpb24iLCJza2lwRGVsYXlEdXJhdGlvbiIsImlzT3BlbkRlbGF5ZWQiLCJzZXRJc09wZW5EZWxheWVkIiwic2tpcERlbGF5VGltZXJSZWYiLCJza2lwRGVsYXlUaW1lciIsImluVHJhbnNpdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRQcm9wIiwiZGVsYXlEdXJhdGlvblByb3AiLCJzZXRUcmlnZ2VyIiwiJDh3ZXBLJHVzZUlkIiwib3BlblRpbWVyUmVmIiwid2FzT3BlbkRlbGF5ZWRSZWYiLCJvcGVuMSIsIiQ4d2VwSyR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ4d2VwSyR1c2VNZW1vIiwiaGFuZGxlT3BlbiIsImhhbmRsZUNsb3NlIiwiaGFuZGxlRGVsYXllZE9wZW4iLCIkOHdlcEskUm9vdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkOHdlcEskUG9ydGFsIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsIiQ4d2VwSyRBcnJvdyIsIiRhZTY5MzNlNTM1MjQ3ZDNkJGV4cG9ydCQ3ZDE1YjY0Y2Y1YTNhNGM0IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJE9QRU5fS0VZUyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RJT05fS0VZUyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlIiwiJDAxYjljJGNyZWF0ZUNvbGxlY3Rpb24iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyODY3MjdhNzVkYzAzOWJkIiwiJDAxYjljJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQwMWI5YyRjcmVhdGVQb3BwZXJTY29wZSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQcm92aWRlciIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdE5hdGl2ZU9wdGlvbnNQcm92aWRlciIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3ROYXRpdmVPcHRpb25zQ29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEiLCIkMDFiOWMkZm9yd2FyZFJlZiIsIl9fc2NvcGVTZWxlY3QiLCIkMDFiOWMkdXNlQ29tcG9zZWRSZWZzIiwic2VhcmNoUmVmIiwiaGFuZGxlVHlwZWFoZWFkU2VhcmNoIiwicmVzZXRUeXBlYWhlYWQiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlVHlwZWFoZWFkU2VhcmNoIiwic2VhcmNoIiwiZW5hYmxlZEl0ZW1zIiwiY3VycmVudEl0ZW0iLCJuZXh0SXRlbSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRmaW5kTmV4dEl0ZW0iLCIkMDFiOWMkY3JlYXRlRWxlbWVudCIsIiQwMWI5YyRBbmNob3IiLCIkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkMDFiOWMkUHJpbWl0aXZlIiwiJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiaGFzUG9pbnRlckNhcHR1cmUiLCJwb2ludGVySWQiLCJyZWxlYXNlUG9pbnRlckNhcHR1cmUiLCJ0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYiLCJwYWdlWCIsInBhZ2VZIiwiaXNUeXBpbmdBaGVhZCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlMjg4NzMxZmQ3MTI2NGYwIiwidmFsdWVQcm9wcyIsIm9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UiLCJoYXNDaGlsZHJlbiIsIm9uVmFsdWVOb2RlQ2hhbmdlIiwiJDAxYjljJHVzZUxheW91dEVmZmVjdCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1IiwiaWNvblByb3BzIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkIiwiZnJhZ21lbnQiLCJzZXRGcmFnbWVudCIsIiQwMWI5YyR1c2VTdGF0ZSIsIkRvY3VtZW50RnJhZ21lbnQiLCJmcmFnIiwiJDAxYjljJGNyZWF0ZVBvcnRhbCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQiLCJ2aWV3cG9ydCIsInNldFZpZXdwb3J0Iiwic2VsZWN0ZWRJdGVtIiwic2V0U2VsZWN0ZWRJdGVtIiwic2VsZWN0ZWRJdGVtVGV4dCIsInNldFNlbGVjdGVkSXRlbVRleHQiLCJzZXRJc1Bvc2l0aW9uZWQiLCJmaXJzdFZhbGlkSXRlbUZvdW5kUmVmIiwiJDAxYjljJHVzZVJlZiIsIiQwMWI5YyR1c2VFZmZlY3QiLCIkMDFiOWMkaGlkZU90aGVycyIsIiQwMWI5YyR1c2VGb2N1c0d1YXJkcyIsImZvY3VzRmlyc3QiLCIkMDFiOWMkdXNlQ2FsbGJhY2siLCJmaXJzdEl0ZW0iLCJyZXN0SXRlbXMiLCJsYXN0SXRlbSIsInNjcm9sbEludG9WaWV3IiwiYmxvY2siLCJmb2N1c1NlbGVjdGVkSXRlbSIsInBvaW50ZXJNb3ZlRGVsdGEiLCJoYW5kbGVQb2ludGVyTW92ZSIsIl90cmlnZ2VyUG9pbnRlckRvd25QbyIsIl90cmlnZ2VyUG9pbnRlckRvd25QbzIiLCJfdHJpZ2dlclBvaW50ZXJEb3duUG8zIiwiX3RyaWdnZXJQb2ludGVyRG93blBvNCIsImNsb3NlIiwiaXRlbVJlZkNhbGxiYWNrIiwiaXNGaXJzdFZhbGlkSXRlbSIsImhhbmRsZUl0ZW1MZWF2ZSIsIml0ZW1UZXh0UmVmQ2FsbGJhY2siLCJTZWxlY3RQb3NpdGlvbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uIiwicG9wcGVyQ29udGVudFByb3BzIiwib25WaWV3cG9ydENoYW5nZSIsIm9uSXRlbUxlYXZlIiwiJDAxYjljJFNsb3QiLCIkMDFiOWMkRm9jdXNTY29wZSIsIl9jb250ZXh0JHRyaWdnZXIiLCIkMDFiOWMkRGlzbWlzc2FibGVMYXllciIsIm9uQ29udGV4dE1lbnUiLCJmbGV4RGlyZWN0aW9uIiwiaXNNb2RpZmllcktleSIsImN1cnJlbnRFbGVtZW50IiwicG9wcGVyUHJvcHMiLCJjb250ZW50V3JhcHBlciIsInNldENvbnRlbnRXcmFwcGVyIiwic2hvdWxkRXhwYW5kT25TY3JvbGxSZWYiLCJzaG91bGRSZXBvc2l0aW9uUmVmIiwidmFsdWVOb2RlIiwidHJpZ2dlclJlY3QiLCJjb250ZW50UmVjdCIsInZhbHVlTm9kZVJlY3QiLCJpdGVtVGV4dFJlY3QiLCJpdGVtVGV4dE9mZnNldCIsImxlZnREZWx0YSIsIm1pbkNvbnRlbnRXaWR0aCIsImNvbnRlbnRXaWR0aCIsInJpZ2h0RWRnZSIsImNsYW1wZWRMZWZ0IiwiJDAxYjljJGNsYW1wIiwicmlnaHREZWx0YSIsImxlZnRFZGdlIiwiY2xhbXBlZFJpZ2h0IiwiaW5uZXJIZWlnaHQiLCJpdGVtc0hlaWdodCIsImNvbnRlbnRTdHlsZXMiLCJjb250ZW50Qm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BXaWR0aCIsImNvbnRlbnRQYWRkaW5nVG9wIiwiY29udGVudEJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJmdWxsQ29udGVudEhlaWdodCIsInBhZGRpbmdCb3R0b20iLCJtaW5Db250ZW50SGVpZ2h0Iiwidmlld3BvcnRTdHlsZXMiLCJ2aWV3cG9ydFBhZGRpbmdUb3AiLCJ2aWV3cG9ydFBhZGRpbmdCb3R0b20iLCJ0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlIiwidHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZSIsInNlbGVjdGVkSXRlbUhhbGZIZWlnaHQiLCJjb250ZW50VG9wVG9JdGVtTWlkZGxlIiwiaXRlbU1pZGRsZVRvQ29udGVudEJvdHRvbSIsImlzTGFzdEl0ZW0iLCJ2aWV3cG9ydE9mZnNldEJvdHRvbSIsImlzRmlyc3RJdGVtIiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwiaGFuZGxlU2Nyb2xsQnV0dG9uQ2hhbmdlIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFZpZXdwb3J0UHJvdmlkZXIiLCJvblNjcm9sbEJ1dHRvbkNoYW5nZSIsImJveFNpemluZyIsIiQwMWI5YyRDb250ZW50IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQiLCJ2aWV3cG9ydFByb3BzIiwidmlld3BvcnRDb250ZXh0IiwicHJldlNjcm9sbFRvcFJlZiIsIiQwMWI5YyRGcmFnbWVudCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiZmxleCIsIm9uU2Nyb2xsIiwic2Nyb2xsZWRCeSIsImNzc01pbkhlaWdodCIsImNzc0hlaWdodCIsInByZXZIZWlnaHQiLCJuZXh0SGVpZ2h0IiwiY2xhbXBlZE5leHRIZWlnaHQiLCJoZWlnaHREaWZmIiwianVzdGlmeUNvbnRlbnQiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1Db250ZXh0UHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMTNlZjQ4YTkzNDIzMDg5NiIsInRleHRWYWx1ZSIsInRleHRWYWx1ZVByb3AiLCJpc1NlbGVjdGVkIiwic2V0VGV4dFZhbHVlIiwiX2NvbnRlbnRDb250ZXh0JGl0ZW1SIiwidGV4dElkIiwiJDAxYjljJHVzZUlkIiwiaGFuZGxlU2VsZWN0Iiwib25JdGVtVGV4dENoYW5nZSIsInByZXZUZXh0VmFsdWUiLCJfbm9kZSR0ZXh0Q29udGVudCIsInRleHRDb250ZW50IiwidHJpbSIsIm9uUG9pbnRlclVwIiwiX2NvbnRlbnRDb250ZXh0JG9uSXRlIiwiX2NvbnRlbnRDb250ZXh0JG9uSXRlMiIsIl9jb250ZW50Q29udGV4dCRzZWFyYyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzNTcyZmIwZmI4MjFmZjQ5IiwiaXRlbVRleHRQcm9wcyIsIml0ZW1Db250ZXh0IiwibmF0aXZlT3B0aW9uc0NvbnRleHQiLCJpdGVtVGV4dE5vZGUiLCJzZXRJdGVtVGV4dE5vZGUiLCJfY29udGVudENvbnRleHQkaXRlbVQiLCJuYXRpdmVPcHRpb24iLCIkMDFiOWMkdXNlTWVtbyIsIm9uTmF0aXZlT3B0aW9uQWRkIiwib25OYXRpdmVPcHRpb25SZW1vdmUiLCJ2YWx1ZU5vZGVIYXNDaGlsZHJlbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfVVBfQlVUVE9OX05BTUUiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNyIsImNhblNjcm9sbFVwMSIsInNldENhblNjcm9sbFVwIiwiY2FuU2Nyb2xsVXAiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0U2Nyb2xsQnV0dG9uSW1wbCIsIm9uQXV0b1Njcm9sbCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODkiLCJjYW5TY3JvbGxEb3duMSIsInNldENhblNjcm9sbERvd24iLCJtYXhTY3JvbGwiLCJjYW5TY3JvbGxEb3duIiwiY2VpbCIsInNjcm9sbEluZGljYXRvclByb3BzIiwiYXV0b1Njcm9sbFRpbWVyUmVmIiwiY2xlYXJBdXRvU2Nyb2xsVGltZXIiLCJjbGVhckludGVydmFsIiwiX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlIiwiYWN0aXZlSXRlbSIsImZsZXhTaHJpbmsiLCJzZXRJbnRlcnZhbCIsIl9jb250ZW50Q29udGV4dCRvbkl0ZTMiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0Iiwic2VsZWN0UHJvcHMiLCJwcmV2VmFsdWUiLCIkMDFiOWMkdXNlUHJldmlvdXMiLCJzZWxlY3RQcm90byIsIkhUTUxTZWxlY3RFbGVtZW50IiwiJDAxYjljJFZpc3VhbGx5SGlkZGVuIiwib25TZWFyY2hDaGFuZ2UiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCIkMDFiOWMkdXNlQ2FsbGJhY2tSZWYiLCJ0aW1lclJlZiIsInVwZGF0ZVNlYXJjaCIsIm5vcm1hbGl6ZWRTZWFyY2giLCJjaGFyIiwiY3VycmVudEl0ZW1JbmRleCIsIndyYXBwZWRJdGVtcyIsInYiLCJzdGFydHNXaXRoIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJzZXRWYWx1ZU5vZGUiLCJzZXRWYWx1ZU5vZGVIYXNDaGlsZHJlbiIsIiQwMWI5YyR1c2VEaXJlY3Rpb24iLCIkMDFiOWMkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCJuYXRpdmVPcHRpb25zU2V0Iiwic2V0TmF0aXZlT3B0aW9uc1NldCIsIm5hdGl2ZVNlbGVjdEtleSIsIm9wdGlvbiIsIiQwMWI5YyRSb290IiwicHJldiIsIm9wdGlvbnNTZXQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0YzhkMWE1N2E3NjFlZjk0IiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGYwNGE2MTI5OGE0N2E0MGYiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkNWM2YzA4ZGMyZDNjYTciLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkNmU1YmY5YzQzZWE5MzE5IiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDJmNjBkM2VjOWFkNDY4ZjIiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmYxYWVkYzMwMzljOGQ2MyIsIlNlbGVjdCIsImljb24iLCJTZWxlY3RQcmltaXRpdmUuUm9vdCIsIlNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyIiwiU2VsZWN0UHJpbWl0aXZlLlZhbHVlIiwiU2VsZWN0UHJpbWl0aXZlLkljb24iLCJBcnJvd0Rvd25JY29uIiwiU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQiLCJTZWxlY3RQcmltaXRpdmUuVmlld3BvcnQiLCJTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24iLCJTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbiIsIlNlbGVjdEl0ZW0iLCJTZWxlY3RQcmltaXRpdmUuSXRlbSIsIlNlbGVjdEl0ZW1UZXh0IiwiU2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRBQlNfTkFNRSIsIiQ2OWNiMzBiYjAwMTdkZjA1JHZhciRjcmVhdGVUYWJzQ29udGV4dCIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQzNTVmNWJkMjA5ZDdiMTNhIiwiJDFJSHprJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQxSUh6ayRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlUm92aW5nRm9jdXNHcm91cFNjb3BlIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRhYnNQcm92aWRlciIsIiQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VUYWJzQ29udGV4dCIsIiQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlVHJpZ2dlcklkIiwiYmFzZUlkIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VDb250ZW50SWQiLCIkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsIiQxSUh6ayRmb3J3YXJkUmVmIiwiX19zY29wZVRhYnMiLCJhY3RpdmF0aW9uTW9kZSIsInRhYnNQcm9wcyIsIiQxSUh6ayR1c2VEaXJlY3Rpb24iLCIkMUlIemskdXNlQ29udHJvbGxhYmxlU3RhdGUiLCIkMUlIemskY3JlYXRlRWxlbWVudCIsIiQxSUh6ayR1c2VJZCIsIiQxSUh6ayRQcmltaXRpdmUiLCIkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNTRjMmUzZGM3YWNlYTlmNSIsImxpc3RQcm9wcyIsIiQxSUh6ayRSb290IiwiJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQiLCJ0cmlnZ2VySWQiLCIkMUlIemskSXRlbSIsIiQxSUh6ayRjb21wb3NlRXZlbnRIYW5kbGVycyIsImlzQXV0b21hdGljQWN0aXZhdGlvbiIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZiIsIiQxSUh6ayR1c2VSZWYiLCIkMUlIemskdXNlRWZmZWN0IiwickFGIiwiJDFJSHprJFByZXNlbmNlIiwiYW5pbWF0aW9uRHVyYXRpb24iLCJhY3Rpb25UZXh0Iiwib25BY3Rpb25DbGljayIsImNhbmNlbFRleHQiLCJvbkNhbmNlbENsaWNrIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImlzT2tEaXNhYmxlZCIsImFjdGlvbkJ1dHRvblR5cGUiLCJtYXhXaWR0aCIsIkFsZXJ0RGlhbG9nLlJvb3QiLCJBbGVydERpYWxvZy5Qb3J0YWwiLCJwb3J0YWwiLCJBbGVydERpYWxvZy5PdmVybGF5Iiwib3ZlcmxheSIsIkFsZXJ0RGlhbG9nLkNvbnRlbnQiLCJDbG9zZUljb24iLCJBbGVydERpYWxvZy5UaXRsZSIsIkFsZXJ0RGlhbG9nLkRlc2NyaXB0aW9uIiwiYnV0dG9ucyIsIkFsZXJ0RGlhbG9nLkNhbmNlbCIsIkFsZXJ0RGlhbG9nLkFjdGlvbiIsImNvbnRyb2xsZWRQcm9wcyIsInN0YXR1cyIsIkNoZWNrYm94UHJpbWl0aXZlcy5Sb290IiwiQ2hlY2tib3hQcmltaXRpdmVzLkluZGljYXRvciIsIkNoZWNrYm94SWNvbiIsIkNoZWNrYm94VW5jaGVja0ljb24iLCJqdXN0aWZ5IiwiYWxpZ25JdGVtcyIsImZvcm1Hcm91cCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsImNvbnRlbnRDbGFzc05hbWUiLCJoaWRlQ2xvc2VCdXR0b24iLCJvdmVybGF5Q2xhc3NOYW1lIiwiRGlhbG9nLlJvb3QiLCJEaWFsb2cuUG9ydGFsIiwiRGlhbG9nLk92ZXJsYXkiLCJEaWFsb2cuQ29udGVudCIsIkRpYWxvZy5UaXRsZSIsIkRpYWxvZy5DbG9zZSIsInByb2dyZXNzIiwiUHJvZ3Jlc3NQcmltaXRpdmUuUm9vdCIsIlByb2dyZXNzUHJpbWl0aXZlLkluZGljYXRvciIsIlJhZGlvLlJvb3QiLCJSYWRpby5JdGVtIiwiUmFkaW8uSW5kaWNhdG9yIiwiaW5kaWNhdG9yIiwiUmFkaXhTd2l0Y2guUm9vdCIsIlJhZGl4U3dpdGNoLlRodW1iIiwiVGFicy5UcmlnZ2VyIiwiVGFicy5Db250ZW50IiwiVGFicy5MaXN0IiwiVGFicy5Sb290IiwiaXNQb3J0YWwiLCJUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQiLCJUb29sdGlwUHJpbWl0aXZlLkFycm93IiwiVG9vbHRpcFByaW1pdGl2ZS5Qcm92aWRlciIsIlRvb2x0aXBQcmltaXRpdmUuUm9vdCIsIlRvb2x0aXBQcmltaXRpdmUuVHJpZ2dlciIsIlRvb2x0aXBQcmltaXRpdmUuUG9ydGFsIl0sIm1hcHBpbmdzIjoiZ1ZBQWUsU0FBU0EsSUFZdEIsT0FYQUEsRUFBV0MsT0FBT0MsT0FBU0QsT0FBT0MsT0FBT0MsT0FBUyxTQUFVQyxHQUMxRCxJQUFLLElBQUlDLEVBQUksRUFBR0EsRUFBSUMsVUFBVUMsT0FBUUYsSUFBSyxDQUN6QyxJQUFJRyxFQUFTRixVQUFVRCxHQUN2QixJQUFLLElBQUlJLEtBQU9ELEVBQ1ZQLE9BQU9TLFVBQVVDLGVBQWVDLEtBQUtKLEVBQVFDLEtBQy9DTCxFQUFPSyxHQUFPRCxFQUFPQyxHQUcxQixDQUNELE9BQU9MLENBQ1gsRUFDU0osRUFBU2EsTUFBTUMsS0FBTVIsVUFDOUIsQ0NlcUcsU0FBU1MsRUFBeUNDLEVBQVdDLEVBQXlCLElBQ3ZMLElBQUlDLEVBQWtCLEdBbUMyRSxNQUFNQyxFQUFjLEtBQ2pILE1BQU1DLEVBQWdCRixFQUFnQkcsS0FBS0MsR0FDbEJDLEVBQUFBLGNBQXFCRCxLQUU5QyxPQUFPLFNBQWtCRSxHQUNyQixNQUFNQyxHQUFZRCxhQUFxQyxFQUFTQSxFQUFNUixLQUFlSSxFQUNyRixPQUFPTSxFQUFjQyxTQUFDLEtBQUssQ0FDbkIsQ0FBQyxVQUFVWCxLQUFjLElBQ2xCUSxFQUNIUixDQUFDQSxHQUFZUyxNQUd2QixDQUNFRCxFQUNBQyxHQUVoQixDQUFTLEVBR0wsT0FEQU4sRUFBWUgsVUFB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QUFBLE9BQVksSUFBQTJWLEVBQUEsR0FBRUEsRUFDZEssRUFBbUJ6WSxFQUFBczJDLGNBQW5CQSxPQUFhLElBQUE3OUIsRUFBRyxJQUFHQSxFQUNuQmxCLEVBQUF2WCxFQUFBbzRCLFdBQUFBLE9BQWEsSUFBQTdnQixFQUFBLEVBQUNBLEVBQ2RvQixFQUFnQjNZLEVBQUEwdkQsU0FBaEJBLE9BQVEsSUFBQS8yQyxHQUFRQSxFQUNiOXlCLEVBWm1Cb1osRUFBQWUsRUFBQSxDQUFBLFdBQUEsVUFBQSxPQUFBLGNBQUEsZUFBQSxPQUFBLFFBQUEsWUFBQSxnQkFBQSxhQUFBLGFBY2hCbE4sRUFDSnVOLEVBQUFqYSxjQUFDdXBFLEdBQXdCL3dELEVBQUEsQ0FDdkJ3NUIsV0FBWUEsRUFDWi9RLEtBQU1BLEVBQ05nUixNQUFPQSxHQUNIeHlDLEVBQ0osQ0FBQTRjLFVBQVdlLEdBQVd0RyxHQUFnQixvQkFBa0I4RixFQUFBLENBQUEsRUFDdERBLEVBQUNQLEdBQVlBLEVBQ2JPLE1BQ0R5TixFQUNEcFEsRUFBQ2phLGNBQUF3cEUsR0FBc0IsQ0FBQ250RCxVQUFXdkYsR0FBY3dhLE1BQU8sR0FBSUMsT0FBUSxLQUd4RSxPQUFPbEgsRUFDTHBRLEVBQUNqYSxjQUFBeXBFLEdBQXlCLEtBQ3hCeHZELEVBQUFqYSxjQUFDMHBFLElBQ0N4WixjQUFlQSxFQUNmN21DLEtBQU1BLEVBQ04yRCxZQUFhQSxFQUNibEIsYUFBY0EsR0FDZDdSLEVBQUFqYSxjQUFDMnBFLElBQXlCeGlFLFNBQU8sR0FBRXpILEdBQ2xDNHBFLEVBQVdydkQsRUFBQWphLGNBQUM0cEUsR0FBeUIsS0FBQWw5RCxHQUFrQ0EsSUFJNUUsQ0FFSiIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQzLDQ0LDQ1LDg1LDg5LDkwLDkxLDkyLDkzLDk0LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwN119