@prisma/studio-core 0.0.0-dev.202505121602 → 0.0.0-dev.202505121735

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/ui/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import"../chunk-IAKOOX7B.js";import{D as ea}from"../chunk-OGMDOPWW.js";import{B as It,aa as St,c as te,q as Lt,r as Ct,t as ht}from"../chunk-RFCV76TR.js";import{a as ms,b as Ie}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as wn,motion as cs}from"motion/react";import{clsx as _s}from"clsx";var yt="-",gs=e=>{let a=Ls(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{let u=s.split(yt);return u[0]===""&&u.length!==1&&u.shift(),Co(u,a)||xs(s)},getConflictingClassGroupIds:(s,u)=>{let d=t[s]||[];return u&&o[s]?[...d,...o[s]]:d}}},Co=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?Co(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let l=e.join(yt);return a.validators.find(({validator:s})=>s(l))?.classGroupId},mo=/^\[(.+)\]$/,xs=e=>{if(mo.test(e)){let a=mo.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},Ls=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return hs(Object.entries(e.classGroups),t).forEach(([l,s])=>{wt(s,o,l,a)}),o},wt=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let l=r===""?a:go(a,r);l.classGroupId=t;return}if(typeof r=="function"){if(Cs(r)){wt(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([l,s])=>{wt(s,go(a,l),t,o)})})},go=(e,a)=>{let t=e;return a.split(yt).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},Cs=e=>e.isThemeGetter,hs=(e,a)=>a?e.map(([t,o])=>{let r=o.map(l=>typeof l=="string"?a+l:typeof l=="object"?Object.fromEntries(Object.entries(l).map(([s,u])=>[a+s,u])):l);return[t,r]}):e,Is=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(l,s)=>{t.set(l,s),a++,a>e&&(a=0,o=t,t=new Map)};return{get(l){let s=t.get(l);if(s!==void 0)return s;if((s=o.get(l))!==void 0)return r(l,s),s},set(l,s){t.has(l)?t.set(l,s):r(l,s)}}},ho="!",Ss=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],l=a.length,s=u=>{let d=[],n=0,i=0,x;for(let b=0;b<u.length;b++){let C=u[b];if(n===0){if(C===r&&(o||u.slice(b,b+l)===a)){d.push(u.slice(i,b)),i=b+l;continue}if(C==="/"){x=b;continue}}C==="["?n++:C==="]"&&n--}let m=d.length===0?u:u.substring(i),L=m.startsWith(ho),h=L?m.substring(1):m,p=x&&x>i?x-i:void 0;return{modifiers:d,hasImportantModifier:L,baseClassName:h,maybePostfixModifierPosition:p}};return t?u=>t({className:u,parseClassName:s}):s},bs=e=>{if(e.length<=1)return e;let a=[],t=[];return e.forEach(o=>{o[0]==="["?(a.push(...t.sort(),o),t=[]):t.push(o)}),a.push(...t.sort()),a},ws=e=>({cache:Is(e.cacheSize),parseClassName:Ss(e),...gs(e)}),ys=/\s+/,vs=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,l=[],s=e.trim().split(ys),u="";for(let d=s.length-1;d>=0;d-=1){let n=s[d],{modifiers:i,hasImportantModifier:x,baseClassName:m,maybePostfixModifierPosition:L}=t(n),h=!!L,p=o(h?m.substring(0,L):m);if(!p){if(!h){u=n+(u.length>0?" "+u:u);continue}if(p=o(m),!p){u=n+(u.length>0?" "+u:u);continue}h=!1}let b=bs(i).join(":"),C=x?b+ho:b,g=C+p;if(l.includes(g))continue;l.push(g);let T=r(p,h);for(let H=0;H<T.length;++H){let oe=T[H];l.push(C+oe)}u=n+(u.length>0?" "+u:u)}return u};function Ps(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=Io(a))&&(o&&(o+=" "),o+=t);return o}var Io=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=Io(e[o]))&&(t&&(t+=" "),t+=a);return t};function xo(e,...a){let t,o,r,l=s;function s(d){let n=a.reduce((i,x)=>x(i),e());return t=ws(n),o=t.cache.get,r=t.cache.set,l=u,u(d)}function u(d){let n=o(d);if(n)return n;let i=vs(d,t);return r(d,i),i}return function(){return l(Ps.apply(null,arguments))}}var B=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},So=/^\[(?:([a-z-]+):)?(.+)\]$/i,ks=/^\d+\/\d+$/,Rs=new Set(["px","full","screen"]),Ms=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ts=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ds=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,As=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Fs=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Se=e=>aa(e)||Rs.has(e)||ks.test(e),De=e=>ta(e,"length",zs),aa=e=>!!e&&!Number.isNaN(Number(e)),bt=e=>ta(e,"number",aa),na=e=>!!e&&Number.isInteger(Number(e)),Bs=e=>e.endsWith("%")&&aa(e.slice(0,-1)),y=e=>So.test(e),Ae=e=>Ms.test(e),Ns=new Set(["length","size","percentage"]),Os=e=>ta(e,Ns,bo),qs=e=>ta(e,"position",bo),Es=new Set(["image","url"]),Us=e=>ta(e,Es,Vs),Hs=e=>ta(e,"",Gs),ia=()=>!0,ta=(e,a,t)=>{let o=So.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},zs=e=>Ts.test(e)&&!Ds.test(e),bo=()=>!1,Gs=e=>As.test(e),Vs=e=>Fs.test(e);var Lo=()=>{let e=B("colors"),a=B("spacing"),t=B("blur"),o=B("brightness"),r=B("borderColor"),l=B("borderRadius"),s=B("borderSpacing"),u=B("borderWidth"),d=B("contrast"),n=B("grayscale"),i=B("hueRotate"),x=B("invert"),m=B("gap"),L=B("gradientColorStops"),h=B("gradientColorStopPositions"),p=B("inset"),b=B("margin"),C=B("opacity"),g=B("padding"),T=B("saturate"),H=B("scale"),oe=B("sepia"),z=B("skew"),Z=B("space"),G=B("translate"),N=()=>["auto","contain","none"],v=()=>["auto","hidden","clip","visible","scroll"],J=()=>["auto",y,a],M=()=>[y,a],Ce=()=>["",Se,De],je=()=>["auto",aa,y],_a=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Ye=()=>["solid","dashed","dotted","double","none"],Qa=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],da=()=>["start","end","center","between","around","evenly","stretch"],Ge=()=>["","0",y],Za=()=>["auto","avoid","all","avoid-page","page","left","right","column"],re=()=>[aa,y];return{cacheSize:500,separator:":",theme:{colors:[ia],spacing:[Se,De],blur:["none","",Ae,y],brightness:re(),borderColor:[e],borderRadius:["none","","full",Ae,y],borderSpacing:M(),borderWidth:Ce(),contrast:re(),grayscale:Ge(),hueRotate:re(),invert:Ge(),gap:M(),gradientColorStops:[e],gradientColorStopPositions:[Bs,De],inset:J(),margin:J(),opacity:re(),padding:M(),saturate:re(),scale:re(),sepia:Ge(),skew:re(),space:M(),translate:M()},classGroups:{aspect:[{aspect:["auto","square","video",y]}],container:["container"],columns:[{columns:[Ae]}],"break-after":[{"break-after":Za()}],"break-before":[{"break-before":Za()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[..._a(),y]}],overflow:[{overflow:v()}],"overflow-x":[{"overflow-x":v()}],"overflow-y":[{"overflow-y":v()}],overscroll:[{overscroll:N()}],"overscroll-x":[{"overscroll-x":N()}],"overscroll-y":[{"overscroll-y":N()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[p]}],"inset-x":[{"inset-x":[p]}],"inset-y":[{"inset-y":[p]}],start:[{start:[p]}],end:[{end:[p]}],top:[{top:[p]}],right:[{right:[p]}],bottom:[{bottom:[p]}],left:[{left:[p]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",na,y]}],basis:[{basis:J()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",y]}],grow:[{grow:Ge()}],shrink:[{shrink:Ge()}],order:[{order:["first","last","none",na,y]}],"grid-cols":[{"grid-cols":[ia]}],"col-start-end":[{col:["auto",{span:["full",na,y]},y]}],"col-start":[{"col-start":je()}],"col-end":[{"col-end":je()}],"grid-rows":[{"grid-rows":[ia]}],"row-start-end":[{row:["auto",{span:[na,y]},y]}],"row-start":[{"row-start":je()}],"row-end":[{"row-end":je()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",y]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",y]}],gap:[{gap:[m]}],"gap-x":[{"gap-x":[m]}],"gap-y":[{"gap-y":[m]}],"justify-content":[{justify:["normal",...da()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...da(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...da(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[g]}],px:[{px:[g]}],py:[{py:[g]}],ps:[{ps:[g]}],pe:[{pe:[g]}],pt:[{pt:[g]}],pr:[{pr:[g]}],pb:[{pb:[g]}],pl:[{pl:[g]}],m:[{m:[b]}],mx:[{mx:[b]}],my:[{my:[b]}],ms:[{ms:[b]}],me:[{me:[b]}],mt:[{mt:[b]}],mr:[{mr:[b]}],mb:[{mb:[b]}],ml:[{ml:[b]}],"space-x":[{"space-x":[Z]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[Z]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",y,a]}],"min-w":[{"min-w":[y,a,"min","max","fit"]}],"max-w":[{"max-w":[y,a,"none","full","min","max","fit","prose",{screen:[Ae]},Ae]}],h:[{h:[y,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[y,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[y,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[y,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Ae,De]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",bt]}],"font-family":[{font:[ia]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",y]}],"line-clamp":[{"line-clamp":["none",aa,bt]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Se,y]}],"list-image":[{"list-image":["none",y]}],"list-style-type":[{list:["none","disc","decimal",y]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[C]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[C]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Ye(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Se,De]}],"underline-offset":[{"underline-offset":["auto",Se,y]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:M()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",y]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",y]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[C]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[..._a(),qs]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Os]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Us]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[h]}],"gradient-via-pos":[{via:[h]}],"gradient-to-pos":[{to:[h]}],"gradient-from":[{from:[L]}],"gradient-via":[{via:[L]}],"gradient-to":[{to:[L]}],rounded:[{rounded:[l]}],"rounded-s":[{"rounded-s":[l]}],"rounded-e":[{"rounded-e":[l]}],"rounded-t":[{"rounded-t":[l]}],"rounded-r":[{"rounded-r":[l]}],"rounded-b":[{"rounded-b":[l]}],"rounded-l":[{"rounded-l":[l]}],"rounded-ss":[{"rounded-ss":[l]}],"rounded-se":[{"rounded-se":[l]}],"rounded-ee":[{"rounded-ee":[l]}],"rounded-es":[{"rounded-es":[l]}],"rounded-tl":[{"rounded-tl":[l]}],"rounded-tr":[{"rounded-tr":[l]}],"rounded-br":[{"rounded-br":[l]}],"rounded-bl":[{"rounded-bl":[l]}],"border-w":[{border:[u]}],"border-w-x":[{"border-x":[u]}],"border-w-y":[{"border-y":[u]}],"border-w-s":[{"border-s":[u]}],"border-w-e":[{"border-e":[u]}],"border-w-t":[{"border-t":[u]}],"border-w-r":[{"border-r":[u]}],"border-w-b":[{"border-b":[u]}],"border-w-l":[{"border-l":[u]}],"border-opacity":[{"border-opacity":[C]}],"border-style":[{border:[...Ye(),"hidden"]}],"divide-x":[{"divide-x":[u]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[u]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[C]}],"divide-style":[{divide:Ye()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...Ye()]}],"outline-offset":[{"outline-offset":[Se,y]}],"outline-w":[{outline:[Se,De]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Ce()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[C]}],"ring-offset-w":[{"ring-offset":[Se,De]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Ae,Hs]}],"shadow-color":[{shadow:[ia]}],opacity:[{opacity:[C]}],"mix-blend":[{"mix-blend":[...Qa(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Qa()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",Ae,y]}],grayscale:[{grayscale:[n]}],"hue-rotate":[{"hue-rotate":[i]}],invert:[{invert:[x]}],saturate:[{saturate:[T]}],sepia:[{sepia:[oe]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[i]}],"backdrop-invert":[{"backdrop-invert":[x]}],"backdrop-opacity":[{"backdrop-opacity":[C]}],"backdrop-saturate":[{"backdrop-saturate":[T]}],"backdrop-sepia":[{"backdrop-sepia":[oe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",y]}],duration:[{duration:re()}],ease:[{ease:["linear","in","out","in-out",y]}],delay:[{delay:re()}],animate:[{animate:["none","spin","ping","pulse","bounce",y]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[H]}],"scale-x":[{"scale-x":[H]}],"scale-y":[{"scale-y":[H]}],rotate:[{rotate:[na,y]}],"translate-x":[{"translate-x":[G]}],"translate-y":[{"translate-y":[G]}],"skew-x":[{"skew-x":[z]}],"skew-y":[{"skew-y":[z]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",y]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",y]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":M()}],"scroll-mx":[{"scroll-mx":M()}],"scroll-my":[{"scroll-my":M()}],"scroll-ms":[{"scroll-ms":M()}],"scroll-me":[{"scroll-me":M()}],"scroll-mt":[{"scroll-mt":M()}],"scroll-mr":[{"scroll-mr":M()}],"scroll-mb":[{"scroll-mb":M()}],"scroll-ml":[{"scroll-ml":M()}],"scroll-p":[{"scroll-p":M()}],"scroll-px":[{"scroll-px":M()}],"scroll-py":[{"scroll-py":M()}],"scroll-ps":[{"scroll-ps":M()}],"scroll-pe":[{"scroll-pe":M()}],"scroll-pt":[{"scroll-pt":M()}],"scroll-pr":[{"scroll-pr":M()}],"scroll-pb":[{"scroll-pb":M()}],"scroll-pl":[{"scroll-pl":M()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",y]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[Se,De,bt]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Ws=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:l={},override:s={}})=>{fa(e,"cacheSize",a),fa(e,"prefix",t),fa(e,"separator",o),fa(e,"experimentalParseClassName",r);for(let u in s)Ks(e[u],s[u]);for(let u in l)Xs(e[u],l[u]);return e},fa=(e,a,t)=>{t!==void 0&&(e[a]=t)},Ks=(e,a)=>{if(a)for(let t in a)fa(e,t,a[t])},Xs=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},wo=(e,...a)=>typeof e=="function"?xo(Lo,e,...a):xo(()=>Ws(Lo(),e),...a);var Qs=wo({prefix:"ps-"});function c(...e){return Qs(_s(e))}import{useIsMutating as nn}from"@tanstack/react-query";import{forwardRef as Js,createElement as $s}from"react";var yo=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ja=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Zs,createElement as Po}from"react";var vo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var ko=Zs(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...u},d)=>Po("svg",{ref:d,...vo,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:Ja("lucide",r),...u},[...s.map(([n,i])=>Po(n,i)),...Array.isArray(l)?l:[l]]));var w=(e,a)=>{let t=Js(({className:o,...r},l)=>$s(ko,{ref:l,iconNode:a,className:Ja(`lucide-${yo(e)}`,o),...r}));return t.displayName=`${e}`,t};var Fe=w("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);var ca=w("ArrowUpWideNarrow",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);var se=w("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var ce=w("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var pa=w("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var le=w("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var ma=w("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var ga=w("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var xa=w("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var Be=w("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var Ve=w("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var La=w("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var Ca=w("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var ha=w("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var Ia=w("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);var Sa=w("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var ba=w("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);var wa=w("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);var ya=w("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var va=w("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ne=w("PanelLeftClose",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var Oe=w("PanelLeftOpen",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var Pa=w("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var ka=w("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var Ra=w("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var Ma=w("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);var qe=w("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as fn}from"motion-plus/react";import{useEffect as cn,useState as pn}from"react";import{toast as mn}from"sonner";import{cva as js}from"class-variance-authority";import{jsx as Ys}from"react/jsx-runtime";var vt=js("ps-inline-flex ps-items-center ps-rounded-md ps-border ps-px-2.5 ps-py-0.5 ps-text-xs ps-font-semibold ps-transition-colors focus:ps-outline-none focus:ps-ring-2 focus:ps-ring-ring focus:ps-ring-offset-2",{variants:{variant:{default:"ps-border-transparent ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/80",secondary:"ps-border-transparent ps-bg-secondary ps-text-secondary-foreground hover:ps-bg-secondary/80",destructive:"ps-border-transparent ps-bg-destructive ps-text-destructive-foreground ps-shadow hover:ps-bg-destructive/80",outline:"ps-text-foreground"}},defaultVariants:{variant:"default"}});function $a({className:e,variant:a,...t}){return Ys("div",{className:c(vt({variant:a}),e),...t})}import{Slot as el}from"@radix-ui/react-slot";import{cva as al}from"class-variance-authority";import*as Ro from"react";import{jsx as ol}from"react/jsx-runtime";var tl=al("ps-inline-flex ps-items-center ps-justify-center ps-gap-2 ps-whitespace-nowrap ps-rounded-md ps-text-sm ps-font-medium ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-pointer-events-none disabled:ps-opacity-50 [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",{variants:{variant:{default:"ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/90",destructive:"ps-bg-destructive ps-text-destructive-foreground ps-shadow-sm hover:ps-bg-destructive/90",outline:"ps-border ps-border-input ps-bg-background ps-shadow-sm hover:ps-bg-accent hover:ps-text-accent-foreground",secondary:"ps-bg-secondary ps-text-secondary-foreground ps-shadow-sm hover:ps-bg-secondary/80",ghost:"hover:ps-bg-accent hover:ps-text-accent-foreground",link:"ps-text-primary ps-underline-offset-4 hover:ps-underline"},size:{default:"ps-h-9 ps-px-4 ps-py-2",xs:"ps-h-6 ps-rounded-md ps-px-2 ps-text-xs",sm:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",lg:"ps-h-10 ps-rounded-md ps-px-8",icon:"ps-h-9 ps-w-9"}},defaultVariants:{variant:"default",size:"default"}}),A=Ro.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},l)=>ol(o?el:"button",{className:c(tl({variant:a,size:t,className:e})),ref:l,...r}));A.displayName="Button";import*as pe from"@radix-ui/react-popover";import*as To from"react";import{jsx as Mo}from"react/jsx-runtime";var Do=pe.Root,Ao=pe.Trigger;var Pt=To.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Mo(pe.Portal,{children:Mo(pe.Content,{ref:r,align:a,sideOffset:t,className:c("ps-z-50 ps-w-72 ps-rounded-md ps-border ps-bg-popover ps-p-4 ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-popover-content-transform-origin]",e),...o})}));Pt.displayName=pe.Content.displayName;import{useMutation as kl,useQueryClient as Rl}from"@tanstack/react-query";import{QueryClient as Cl,QueryClientProvider as hl}from"@tanstack/react-query";import*as ue from"react";import{onlineManager as rl,useQueryClient as sl}from"@tanstack/react-query";var Fo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:d,styleNonce:n,shadowDOMTarget:i}=e;this.#a=te(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=i,this.#o=te(l),this.#r=te(s),this.#s=te(u),this.#l=te(d)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=It(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,d;return this.#u?d=this.#u:(d=ht(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#u=d),St(this.#c,this.#t),Lt(d,Ct({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()}}))},e);this.#e=!0,this.#d=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#d?.(),this.#e=!1}},Bo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;#p;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:d,styleNonce:n,shadowDOMTarget:i,onClose:x}=e;this.#a=te(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=i,this.#o=te(l),this.#r=te(s),this.#s=te(u),this.#l=te(d),this.#u=te(x)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}setOnClose(e){this.#u[1](()=>e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=It(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,[d]=this.#u,n;return this.#d?n=this.#d:(n=ht(()=>import("../OKF6E45R-3IGVLQES.js")),this.#d=n),St(this.#c,this.#t),Lt(n,Ct({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()},get onClose(){return d()}}))},e);this.#e=!0,this.#p=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#p?.(),this.#e=!1}};import{jsx as ll}from"react/jsx-runtime";function No(e){let a=sl(e.client),t=ue.useRef(null),{buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}=e,[n]=ue.useState(new Fo({client:a,queryFlavor:"React Query",version:"5",onlineManager:rl,buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}));return ue.useEffect(()=>{n.setClient(a)},[a,n]),ue.useEffect(()=>{o&&n.setButtonPosition(o)},[o,n]),ue.useEffect(()=>{r&&n.setPosition(r)},[r,n]),ue.useEffect(()=>{n.setInitialIsOpen(l||!1)},[l,n]),ue.useEffect(()=>{n.setErrorTypes(s||[])},[s,n]),ue.useEffect(()=>(t.current&&n.mount(t.current),()=>{n.unmount()}),[n]),ll("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as be from"react";import{onlineManager as dl,useQueryClient as nl}from"@tanstack/react-query";import{jsx as il}from"react/jsx-runtime";function Oo(e){let a=nl(e.client),t=be.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:l}=e,[s]=be.useState(new Bo({client:a,queryFlavor:"React Query",version:"5",onlineManager:dl,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:l,onClose:e.onClose}));return be.useEffect(()=>{s.setClient(a)},[a,s]),be.useEffect(()=>{s.setOnClose(e.onClose??(()=>{}))},[e.onClose,s]),be.useEffect(()=>{s.setErrorTypes(o||[])},[o,s]),be.useEffect(()=>(t.current&&s.mount(t.current),()=>{s.unmount()}),[s]),il("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var qo=process.env.NODE_ENV!=="development"?function(){return null}:No,yc=process.env.NODE_ENV!=="development"?function(){return null}:Oo;import{createContext as Il,useContext as Sl,useMemo as bl,useState as ja}from"react";import{toast as wl}from"sonner";import{Toaster as cl}from"sonner";import{jsx as pl}from"react/jsx-runtime";var Eo=({...e})=>pl(cl,{className:"ps-toaster ps-group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});import{unstable_createAdapterProvider as ml}from"nuqs/adapters/custom";import{useEffect as gl,useState as xl}from"react";function Ll(){let e=window.location.hash.slice(1),[a,t]=xl(new URLSearchParams(e));function o(l,{history:s}){let{pathname:u,search:d}=window.location,n=l.toString(),i=`${u}${d}#${n}`;s==="push"?window.history.pushState(null,"",i):window.history.replaceState(null,"",i),t(l)}function r(){let l=window.location.hash.slice(1);return new URLSearchParams(l)}return gl(()=>{function l(){let s=window.location.hash.slice(1);t(new URLSearchParams(s))}return window.addEventListener("hashchange",l),()=>window.removeEventListener("hashchange",l)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var Uo=ml(Ll);import{jsx as Ya,jsxs as vl}from"react/jsx-runtime";var yl=new Cl,Ho=Il(void 0);function zo(e){let{children:a,...t}=e,[o,r]=ja(null),[l,s]=ja(e.adapter.defaultSchema||"public"),[u,d]=ja(!1),[n,i]=ja(!0),x=e.onError;x??=p=>wl.error(p.message);let m=bl(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),L=()=>d(p=>!p),h=()=>i(p=>!p);return vl(hl,{client:yl,children:[Ya(qo,{}),Ya(Eo,{}),Ya(Uo,{children:Ya(Ho.Provider,{value:{...t,activeTable:o,activeSchema:l,isFullscreen:u,setActiveTable:r,setActiveSchema:s,onError:x,emitTelemetryEvent:m,toggleFullscreen:L,isNavigationOpen:n,toggleNavigation:h},children:a})})]})}function V(){let e=Sl(Ho);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function Pl(e,a){let t={filter:ea(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function Go(e,a){return{...e,__ps_rowid:Pl(e,a)}}function et(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:Go(t,a)}:o!==void 0?{...e,rows:o.map(r=>Go(r,a))}:e}function Vo(){let{activeTable:e,adapter:a}=V(),t=Rl(),{schema:o=null,name:r=null}=e??{};return kl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(l){let[s,u]=await a.insert({rows:l,table:e},{});if(s)throw s;return et(u,e)},onSuccess(l){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},s=>s==null?s:{...s,rows:[...l.rows,...s.rows]})},retry:!1})}import{useQuery as Ml}from"@tanstack/react-query";function Wo(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:l,adapter:s}=V();return Ml({enabled:!!l,gcTime:0,placeholderData(u,d){let[,n,,i]=d?.queryKey||[];if(!(n!==l?.schema||i!==l?.name))return u},async queryFn({signal:u}){let[d,n]=await s.query({pageIndex:a,pageSize:t,sortOrder:o,table:l,filter:r},{abortSignal:u});if(d)throw d;return et(n,l)},queryKey:["schema",l?.schema||null,"table",l?.name||null,"query","sortOrder",o.map(u=>`${u.column}:${u.direction}`).join(",")||"natural","pageIndex",a,"pageSize",t,"filter",JSON.stringify(r)],staleTime:1/0})}import{useMutation as Tl,useQueryClient as Dl}from"@tanstack/react-query";function Ko(){let{activeTable:e,adapter:a,onError:t}=V(),o=Dl(),r=["schema",e?.schema??null,"table",e?.name??null];return Tl({mutationFn:async l=>{let[s,u]=await a.update(l.details,l.options);if(s)throw s;return u},mutationKey:[...r,"update"],onError(l,s){let{changes:u,row:d}=s.details;t(l),kt({getFinderFn(){let n={...d,...u},i=ea(n,e.columns);return x=>i.every(([m,L])=>x[m]===L)},queryClient:o,table:e,updaterFn:function(i){return{...i,...Object.keys(u).reduce((x,m)=>({...x,[m]:d[m]}),{})}}})},onMutate(l){let{details:s}=l;kt({getFinderFn(){let{row:u}=s,d=ea(u,e.columns);return n=>d.every(([i,x])=>n[i]===x)},queryClient:o,table:e,updaterFn:function(d){return{...d,...s.changes}}})},onSuccess(l,s){kt({getFinderFn(){let{changes:u,row:d}=s.details,n={...d,...u},i=ea(n,e.columns);return x=>i.every(([m,L])=>x[m]===L)},queryClient:o,table:e,updaterFn:function(d){let{__ps_updated_at__:n}=d,{row:i}=l;return n!=null&&i.__ps_updated_at__<=n?d:{...d,...i}}})},retry:!1})}function kt(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,l;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},s=>{let{rows:u=[]}=s||{};if(u.length===0)return s;let d=u.findIndex(l??=a());if(d===-1)return s;let n=r(u[d]);return{...s,rows:[...u.slice(0,d),n,...u.slice(d+1)]}})}import{useEffect as Nl,useMemo as Xo,useState as Ol}from"react";import ql from"short-uuid";var W={};ms(W,{keyMap:()=>Rt,urlKeys:()=>Bl,useQueryState:()=>Ee,useQueryStates:()=>Ta});Ie(W,gp);import{useQueryState as Al,useQueryStates as Fl}from"nuqs";import*as gp from"nuqs";function Rt(e){return e}function Bl(e){return e}var pp=Symbol("BRAND_SYMBOL");function Ee(e,a){return Al(e,a)}function Ta(e,a){return Fl(e,a)}var El={kind:"FilterGroup",filters:[],after:"and",id:ql.generate()},_o=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=_o(t));return a};function Qo(){let[e,a]=Ee("filter",{defaultValue:JSON.stringify(El)}),t=Xo(()=>JSON.parse(e),[e]),o=u=>void a(JSON.stringify(u)),[r,l]=Ol(t);Nl(()=>{l(t)},[t]);let s=Xo(()=>_o(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:l,totalEditingFilters:s}}import{useIsMutating as Ul}from"@tanstack/react-query";function at(){return Ul({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as Hl}from"react";var zl=25,Gl={pageIndex:W.parseAsIndex.withDefault(0),pageSize:W.parseAsInteger.withDefault(zl)};function tt(){let[{pageIndex:e,pageSize:a},t]=Ta(Gl),o=Hl(r=>{t(typeof r=="function"?l=>{let s=r(l);return{pageIndex:s.pageIndex,pageSize:s.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as Kl,useState as Xl}from"react";import{useMutation as Vl,useQueryClient as Wl}from"@tanstack/react-query";function Zo(){let{activeTable:e,adapter:a}=V(),t=Wl(),{schema:o=null,name:r=null}=e??{};return Vl({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(l){let[s,u]=await a.delete({rows:l,table:e},{});if(s)throw s;return u},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function Jo(e){let{activeTable:a,onError:t}=V(),{paginationState:o}=tt(),[r,l]=Xl({}),s=Object.keys(r).length!==0,{mutate:u}=Zo();Kl(()=>l({}),[a,o.pageIndex]);function d(){let n=e?.rows.filter(i=>r[i.__ps_rowid]);u(n??[],{onSuccess(){l({})},onError:t})}return{deleteSelection:d,setRowSelectionState:l,rowSelectionState:r,isSelecting:s}}import{useEffect as _l,useState as Ql}from"react";function $o(){let[e,a]=Ee("sort",{defaultValue:""}),t=s=>{if(!s)return[];try{return s.split(",").map(u=>{let[d,n]=u.split(":");return!d||!n||!["asc","desc"].includes(n)?null:{column:d,direction:n}}).filter(Boolean)}catch(u){return console.error("Failed to parse sorting parameter:",u),[]}},[o,r]=Ql(()=>t(e));return _l(()=>{let s=t(e);r(s)},[e]),{sortingState:o,setSortingState:s=>{let u=typeof s=="function"?s(o):s;r(u);let d=u.length>0?u.map(n=>`${n.column}:${n.direction}`).join(","):null;a(d)}}}import{isObjectType as Iu}from"remeda";import{forwardRef as su}from"react";import*as ye from"react";import{jsx as we}from"react/jsx-runtime";var Mt=ye.forwardRef(({className:e,...a},t)=>we("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:we("table",{ref:t,className:c("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));Mt.displayName="Table";var Tt=ye.forwardRef(({className:e,...a},t)=>we("thead",{ref:t,className:c(e),...a}));Tt.displayName="TableHeader";var Dt=ye.forwardRef(({className:e,...a},t)=>we("tbody",{ref:t,className:c("[&_tr:last-child]:ps-border-0",e),...a}));Dt.displayName="TableBody";var Zl=ye.forwardRef(({className:e,...a},t)=>we("tfoot",{ref:t,className:c("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));Zl.displayName="TableFooter";var We=ye.forwardRef(({className:e,...a},t)=>we("tr",{ref:t,className:c("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));We.displayName="TableRow";var Ke=ye.forwardRef(({className:e,...a},t)=>we("th",{ref:t,className:c("ps-h-10 ps-px-2 ps-text-left ps-align-middle ps-font-medium ps-text-muted-foreground",e),...a}));Ke.displayName="TableHead";var Ue=ye.forwardRef(({className:e,...a},t)=>we("td",{ref:t,className:c("ps-align-middle",e),...a}));Ue.displayName="TableCell";var Jl=ye.forwardRef(({className:e,...a},t)=>we("caption",{ref:t,className:c("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));Jl.displayName="TableCaption";import{isValidElement as ru}from"react";import*as P from"@radix-ui/react-context-menu";import*as ve from"react";import{jsx as $,jsxs as Bt}from"react/jsx-runtime";var jo=P.Root,Yo=P.Trigger;var $l=ve.forwardRef(({className:e,inset:a,children:t,...o},r)=>Bt(P.SubTrigger,{ref:r,className:c("ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[state=open]:ps-bg-accent data-[state=open]:ps-text-accent-foreground",a&&"ps-pl-8",e),...o,children:[t,$(le,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));$l.displayName=P.SubTrigger.displayName;var jl=ve.forwardRef(({className:e,...a},t)=>$(P.SubContent,{ref:t,className:c("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a}));jl.displayName=P.SubContent.displayName;var At=ve.forwardRef(({className:e,...a},t)=>$(P.Portal,{children:$(P.Content,{ref:t,className:c("ps-z-50 ps-max-h-[--radix-context-menu-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a})}));At.displayName=P.Content.displayName;var Ft=ve.forwardRef(({className:e,inset:a,...t},o)=>$(P.Item,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",a&&"ps-pl-8",e),...t}));Ft.displayName=P.Item.displayName;var Yl=ve.forwardRef(({className:e,children:a,checked:t,...o},r)=>Bt(P.CheckboxItem,{ref:r,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[$("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:$(P.ItemIndicator,{children:$(se,{className:"ps-h-4 ps-w-4"})})}),a]}));Yl.displayName=P.CheckboxItem.displayName;var eu=ve.forwardRef(({className:e,children:a,...t},o)=>Bt(P.RadioItem,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[$("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:$(P.ItemIndicator,{children:$(Ve,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));eu.displayName=P.RadioItem.displayName;var au=ve.forwardRef(({className:e,inset:a,...t},o)=>$(P.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold ps-text-foreground",a&&"ps-pl-8",e),...t}));au.displayName=P.Label.displayName;var tu=ve.forwardRef(({className:e,...a},t)=>$(P.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));tu.displayName=P.Separator.displayName;var ou=({className:e,...a})=>$("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});ou.displayName="ContextMenuShortcut";import{jsx as Nt,jsxs as er}from"react/jsx-runtime";function ar(e){let{children:a}=e;return er(jo,{children:[Nt(Yo,{className:"ps-block ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)] ps-text-xs ps-font-mono ps-whitespace-nowrap ps-overflow-hidden ps-text-ellipsis",children:a}),Nt(At,{children:er(Ft,{onClick:()=>{let t=Ot(a);navigator.clipboard.writeText(t).catch(o=>{console.error("Failed to copy to clipboard:",o)})},className:"ps-flex ps-items-center ps-gap-2",children:[Nt(La,{size:12}),"Copy"]})})]})}function Ot(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(ru(e)){let a=e.props;return e.type&&typeof e.type=="function"&&e.type.name==="RevealText"?a.text||"":e.type&&typeof e.type=="function"&&e.type.name==="NullValue"?"NULL":a.children?Ot(a.children):""}return Array.isArray(e)?e.map(Ot).join(""):""}import{jsx as tr}from"react/jsx-runtime";function K(e){let{children:a,className:t,ref:o,style:r,...l}=e;return tr(Ue,{...l,className:c("ps-p-0 ps-border-r ps-border-b ps-border-table-border","ps-cursor-pointer",t),ref:o,style:r,children:tr(ar,{children:a})})}import{jsx as or}from"react/jsx-runtime";var qt=su((e,a)=>{let{containerProps:t,value:o,...r}=e;return or(K,{...r,...t,ref:a,children:or("div",{"data-cell-type":"boolean",children:String(!!o)})})});qt.displayName="BooleanCell";import{forwardRef as lu}from"react";import{jsx as uu}from"react/jsx-runtime";var Et=lu((e,a)=>{let{containerProps:t,value:o,...r}=e;return uu(K,{...r,...t,ref:a,children:String(o)})});Et.displayName="DateCell";import{forwardRef as du}from"react";import{jsx as nu}from"react/jsx-runtime";var Da=du((e,a)=>{let{containerProps:t,...o}=e;return nu(K,{...o,...t,ref:a})});Da.displayName="EmptyCell";import{forwardRef as iu}from"react";import{jsx as fu}from"react/jsx-runtime";var Ut=iu((e,a)=>{let{containerProps:t,value:o,options:r,...l}=e;return fu(K,{...l,...t,ref:a,children:String(o)})});Ut.displayName="EnumCell";import{forwardRef as cu}from"react";import{jsx as pu}from"react/jsx-runtime";var ot=cu((e,a)=>{let{containerProps:t,value:o,...r}=e;return pu(K,{...r,...t,ref:a,children:JSON.stringify(o,null,2)})});ot.displayName="JSONCell";import{forwardRef as mu}from"react";import{jsx as rr}from"react/jsx-runtime";var Ht=mu((e,a)=>{let{containerProps:t,...o}=e;return rr(K,{...o,...t,ref:a,children:rr("code",{className:"ps-text-muted-foreground/60",children:"NULL"})})});Ht.displayName="NullCell";import{forwardRef as gu}from"react";import{jsx as sr}from"react/jsx-runtime";var zt=gu((e,a)=>{let{containerProps:t,value:o,...r}=e;return sr(K,{...r,...t,ref:a,children:sr("div",{"data-cell-type":"numeric",children:o===null?"NULL":String(o)})})});zt.displayName="NumericCell";import{forwardRef as xu}from"react";import{jsx as Lu}from"react/jsx-runtime";var rt=xu((e,a)=>{let{containerProps:t,value:o,...r}=e;return Lu(K,{...r,...t,ref:a,children:String(o)})});rt.displayName="RawCell";import{forwardRef as Cu}from"react";import{jsx as hu}from"react/jsx-runtime";var Gt=Cu((e,a)=>{let{containerProps:t,value:o,...r}=e;return hu(K,{...r,...t,ref:a,children:String(o)})});Gt.displayName="TimeCell";import{jsx as de}from"react/jsx-runtime";function st({cell:e,column:a,props:t}){let o=e.getValue();if(o===void 0)return de(Da,{containerProps:t});if(o===null)return de(Ht,{containerProps:t});let{group:r,options:l,isArray:s}=a.datatype;if(r==="json"||s)return de(ot,{containerProps:t,value:o});if(r==="string")return de(rt,{containerProps:t,value:o});if(r==="enum")return de(Ut,{containerProps:t,value:o,options:l});if(r==="boolean")return de(qt,{containerProps:t,value:o});if(r==="datetime")return de(Et,{containerProps:t,value:o});if(r==="time")return de(Gt,{containerProps:t,value:o});if(r==="numeric")return de(zt,{containerProps:t,value:o});if(r==="raw")return Iu(o)?de(ot,{containerProps:t,value:o}):de(rt,{containerProps:t,value:o});throw new Error(`Datatype group "${r}" was not handled in '/cell/get-cell.tsx'`)}import{forwardRef as Su}from"react";import*as Aa from"@radix-ui/react-checkbox";import*as lr from"react";import{jsx as Vt}from"react/jsx-runtime";var Fa=lr.forwardRef(({className:e,...a},t)=>Vt(Aa.Root,{ref:t,className:c("ps-peer ps-h-4 ps-w-4 ps-shrink-0 ps-rounded-sm ps-border ps-border-primary ps-shadow focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=checked]:ps-text-primary-foreground",e),...a,children:Vt(Aa.Indicator,{className:c("ps-flex ps-items-center ps-justify-center ps-text-current"),children:Vt(se,{className:"ps-h-4 ps-w-4"})})}));Fa.displayName=Aa.Root.displayName;import{jsx as Wt}from"react/jsx-runtime";var Kt=Su((e,a)=>{let{table:t,readonly:o,className:r,style:l,...s}=e;return Wt("div",{ref:a,className:r,style:l,...s,children:Wt("div",{className:"ps-flex ps-items-center ps-justify-center ps-w-full",children:Wt(Fa,{checked:t.getIsAllRowsSelected(),onCheckedChange:u=>t.toggleAllRowsSelected(!!u),disabled:o})})})});Kt.displayName="SelectHeaderCell";import{forwardRef as wu}from"react";import{Fragment as bu,jsx as Xt}from"react/jsx-runtime";function ur(e){let{children:a,className:t,ref:o,style:r,isHeader:l=!1,...s}=e,u=c("ps-flex ps-items-center ps-justify-center ps-p-0 ps-border-r ps-border-b ps-border-table-border ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)]");return Xt(bu,{children:l?Xt(Ke,{...s,className:c(u,"ps-h-10 ps-bg-table-head ps-z-30 ps-sticky ps-top-0 ps-left-0",t),ref:o,children:a}):Xt(Ue,{...s,className:c(u,"ps-z-10 ps-h-[39px]",t),ref:o,style:r,children:a})})}import{jsx as dr}from"react/jsx-runtime";var _t=wu((e,a)=>{let{row:t,readonly:o,className:r,style:l,...s}=e;return dr(ur,{ref:a,className:r,style:l,...s,children:dr(Fa,{checked:t.getIsSelected(),disabled:!t.getCanSelect()||o,onCheckedChange:t.getToggleSelectedHandler()})})});_t.displayName="SelectRowCell";import*as Pe from"@radix-ui/react-popover";import*as _ from"react";import{jsx as Ba}from"react/jsx-runtime";var nr=_.createContext(null),Qt=({children:e,...a})=>{let[t,o]=_.useState(!1);return Ba(nr.Provider,{value:{open:t,setOpen:o},children:Ba(Pe.Root,{open:t,onOpenChange:o,...a,children:e})})};Qt.displayName="PopoverCell";var Zt=_.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let l=_.useRef(null);return Ba(Pe.Trigger,{ref:s=>{typeof r=="function"?r(s):r&&(r.current=s),l.current=s},className:c("w-full h-full cursor-pointer",t),...o,children:e})});Zt.displayName="PopoverCellTrigger";var Jt=_.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ba(Pe.Portal,{children:Ba(Pe.Content,{ref:r,align:a,sideOffset:t,className:c("ps-flex ps-flex-col ps-gap-2 ps-z-50 ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),onEscapeKeyDown:l=>l.preventDefault(),...o})}));Jt.displayName=Pe.Content.displayName;function j(e){let a=_.useContext(nr),t=_.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=_.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return _.useEffect(()=>{let r=l=>{(l.key==="Enter"||l.key==="Return")&&!l.shiftKey?t():l.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as ir,jsxs as yu}from"react/jsx-runtime";function lt(e){let{cellComponent:a,inputComponent:t}=e;return yu(Qt,{children:[ir(Zt,{asChild:!0,children:a}),ir(Jt,{align:"start",alignOffset:-1,className:c("ps-rounded-none ps-bg-muted","ps-p-0 ps-z-30 ps-gap-0 ps-border-primary","ps-w-[calc(var(--radix-popover-trigger-width)_+_1px)] ps-max-w-72 ps-min-w-72"),sideOffset:-40,children:t})]})}import{closestCenter as Nu,DndContext as Ou,DragOverlay as qu,KeyboardSensor as Eu,PointerSensor as Uu,useSensor as xr,useSensors as Hu}from"@dnd-kit/core";import{arrayMove as zu,SortableContext as Gu,sortableKeyboardCoordinates as Vu,useSortable as Wu,verticalListSortingStrategy as Ku}from"@dnd-kit/sortable";import{CSS as Xu}from"@dnd-kit/utilities";import{motion as jt}from"motion/react";import{AnimateNumber as _u}from"motion-plus/react";import{useMemo as Qu,useState as Yt}from"react";import{Fragment as Zu}from"react/jsx-runtime";import{createPortal as Ju}from"react-dom";import Lr from"short-uuid";function fr(e,a,t){let o=e?.datatype.group;if(o===void 0)return"";if(a==="is"||a==="is not")return t.toLowerCase()==="null"?null:t;if(o==="boolean")return t==="true";if(o==="datetime"||o==="enum"||o==="raw"||o==="string"||o==="time")return t;if(o==="json")try{return JSON.parse(t)}catch{return t}return o==="numeric"?t===""?null:Number(t):t}function cr(e,a,t){let o=e?.datatype.group;if(a&&(a==="is"||a==="is not"))return t===null?"null":String(t);if(o===void 0||t==null)return"";if(o==="boolean"||o==="datetime"||o==="enum"||o==="numeric"||o==="raw"||o==="string"||o==="time")return String(t);if(o==="json"){if(t==="")return"";try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}import*as k from"@radix-ui/react-dropdown-menu";import*as ke from"react";import{jsx as Y,jsxs as $t}from"react/jsx-runtime";var ut=k.Root,dt=k.Trigger;var vu=ke.forwardRef(({className:e,inset:a,children:t,...o},r)=>$t(k.SubTrigger,{ref:r,className:c("ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent data-[state=open]:ps-bg-accent [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",a&&"ps-pl-8",e),...o,children:[t,Y(le,{className:"ps-ml-auto"})]}));vu.displayName=k.SubTrigger.displayName;var Pu=ke.forwardRef(({className:e,...a},t)=>Y(k.SubContent,{ref:t,className:c("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...a}));Pu.displayName=k.SubContent.displayName;var Na=ke.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Y(k.Portal,{children:Y(k.Content,{ref:o,sideOffset:a,className:c("ps-z-50 ps-max-h-[var(--radix-dropdown-menu-content-available-height)] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md","data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...t})}));Na.displayName=k.Content.displayName;var nt=ke.forwardRef(({className:e,inset:a,...t},o)=>Y(k.Item,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50 [&>svg]:ps-size-4 [&>svg]:ps-shrink-0",a&&"ps-pl-8",e),...t}));nt.displayName=k.Item.displayName;var ku=ke.forwardRef(({className:e,children:a,checked:t,...o},r)=>$t(k.CheckboxItem,{ref:r,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[Y("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Y(k.ItemIndicator,{children:Y(se,{className:"ps-h-4 ps-w-4"})})}),a]}));ku.displayName=k.CheckboxItem.displayName;var Ru=ke.forwardRef(({className:e,children:a,...t},o)=>$t(k.RadioItem,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[Y("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Y(k.ItemIndicator,{children:Y(Ve,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));Ru.displayName=k.RadioItem.displayName;var Mu=ke.forwardRef(({className:e,inset:a,...t},o)=>Y(k.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));Mu.displayName=k.Label.displayName;var Tu=ke.forwardRef(({className:e,...a},t)=>Y(k.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Tu.displayName=k.Separator.displayName;var Du=({className:e,...a})=>Y("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});Du.displayName="DropdownMenuShortcut";import*as pr from"react";import{jsx as Au}from"react/jsx-runtime";var ne=pr.forwardRef(({className:e,type:a,...t},o)=>Au("input",{type:a,className:c("ps-flex ps-h-9 ps-w-full ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-1 ps-shadow-sm ps-transition-colors file:ps-border-0 file:ps-bg-transparent file:ps-text-sm file:ps-font-medium file:ps-text-foreground placeholder:ps-text-muted-foreground focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50",e),ref:o,...t}));ne.displayName="Input";import*as R from"@radix-ui/react-select";import*as He from"react";import{jsx as Q,jsxs as Oa}from"react/jsx-runtime";var oa=R.Root;var ra=R.Value,Xe=He.forwardRef(({className:e,children:a,label:t,...o},r)=>Oa(R.Trigger,{ref:r,className:c("ps-flex ps-h-9 ps-w-full ps-items-center ps-justify-between ps-whitespace-nowrap ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-2 ps-text-sm ps-shadow-sm ps-ring-offset-background data-[placeholder]:ps-text-muted-foreground focus:ps-outline-none focus:ps-ring-1 focus:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 [&>span]:ps-line-clamp-1",e),...o,children:[Oa("div",{className:"ps-flex ps-items-center ps-gap-1",children:[t&&Oa("span",{className:"ps-text-muted-foreground",children:[t,":"]}),a]}),Q(R.Icon,{asChild:!0,children:Q(ce,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));Xe.displayName=R.Trigger.displayName;var mr=He.forwardRef(({className:e,...a},t)=>Q(R.ScrollUpButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:Q(ma,{className:"ps-h-4 ps-w-4"})}));mr.displayName=R.ScrollUpButton.displayName;var gr=He.forwardRef(({className:e,...a},t)=>Q(R.ScrollDownButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:Q(ce,{className:"ps-h-4 ps-w-4"})}));gr.displayName=R.ScrollDownButton.displayName;var _e=He.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>Q(R.Portal,{children:Oa(R.Content,{ref:r,className:c("ps-relative ps-z-50 ps-max-h-[--radix-select-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:ps-translate-y-1 data-[side=left]:ps--translate-x-1 data-[side=right]:ps-translate-x-1 data-[side=top]:ps--translate-y-1",e),position:t,...o,children:[Q(mr,{}),Q(R.Viewport,{className:c("ps-p-1",t==="popper"&&"ps-h-[var(--radix-select-trigger-height)] ps-w-full ps-min-w-[var(--radix-select-trigger-width)]"),children:a}),Q(gr,{})]})}));_e.displayName=R.Content.displayName;var Fu=He.forwardRef(({className:e,...a},t)=>Q(R.Label,{ref:t,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));Fu.displayName=R.Label.displayName;var q=He.forwardRef(({className:e,children:a,...t},o)=>Oa(R.Item,{ref:o,className:c("ps-relative ps-flex ps-w-full ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-2 ps-pr-8 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[Q("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Q(R.ItemIndicator,{children:Q(se,{className:"ps-h-4 ps-w-4"})})}),Q(R.ItemText,{children:a})]}));q.displayName=R.Item.displayName;var Bu=He.forwardRef(({className:e,...a},t)=>Q(R.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Bu.displayName=R.Separator.displayName;import{Fragment as ed,jsx as I,jsxs as E}from"react/jsx-runtime";var Cr=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>E(oa,{value:e,onValueChange:a,disabled:t,children:[I(Xe,{className:o,children:I(ra,{placeholder:"Logic"})}),E(_e,{children:[I(q,{value:"and",children:I("div",{className:"ps-font-semibold",children:"AND"})}),I(q,{value:"or",children:I("div",{className:"ps-font-semibold",children:"OR"})})]})]}),$u=({activeId:e,items:a,table:t})=>{let o=a.find(u=>u.id===e);if(!o)return null;let r="and",l=!1,s=a.findIndex(u=>u.id===e);if(s>0){let u=a[s-1];u&&(r=u.after,l=!0)}return o.kind==="ColumnFilter"?I(hr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):I(eo,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},ju=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:l,activeDragId:s,onDragStart:u,onDragEndSignal:d})=>{let n=Qu(()=>e.map(m=>m.id),[e]),i=Hu(xr(Uu,{activationConstraint:{distance:8}}),xr(Eu,{coordinateGetter:Vu}));return E(Ou,{sensors:i,collisionDetection:Nu,onDragStart:u,onDragEnd:m=>{let{active:L,over:h}=m;if(h&&L.id!==h.id){let p=e.findIndex(C=>C.id===L.id),b=e.findIndex(C=>C.id===h.id);p!==-1&&b!==-1&&l(p,b)}d()},children:[I(Gu,{items:n,strategy:Ku,children:e.map((m,L)=>{let h=!1,p,b,C=!1;if(L>0){h=!0;let g=e[L-1];p=g.after,b=T=>{let H={...g,after:T};o(L-1,H)},C=L-1===e.length-1}return I(Yu,{filter:m,onUpdate:g=>o(L,g),onDelete:()=>r(L),parentDndId:a,table:t,showLeadingOperator:h,leadingOperatorValue:p,onLeadingOperatorChange:b,isLeadingOperatorTargetLast:C},m.id)})}),Ju(I(qu,{children:s?I("div",{className:"ps-opacity-80",children:I($u,{activeId:s,items:e,table:t})}):null}),document.body)]})},Yu=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let{attributes:n,listeners:i,setNodeRef:x,transform:m,transition:L,isDragging:h}=Wu({id:e.id,data:{type:e.kind,parentId:o}}),p={transform:Xu.Transform.toString(m),transition:L,opacity:h?.5:1};return I("div",{ref:x,style:p,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?I(hr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...i},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d}):I(eo,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...i},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})})},hr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let n=h=>{a({...e,column:h})},i=h=>{a({...e,operator:h})},x=h=>{let p=h.target.value,b=r.columns[e.column];if(b!==void 0){let C=fr(b,e.operator,p);a({...e,value:C})}},[m,L]=Yt(cr(r.columns[e.column],e.operator,e.value));return E(jt.div,{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[E("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[I("div",{...o,className:"ps-cursor-grab",children:I(Ia,{className:"ps-text-gray-500",size:16})}),E("div",{className:"ps-flex ps-items-center ps-gap-2",children:[l&&u?I(Cr,{value:s,onValueChange:u,disabled:d}):null,E(oa,{value:e.column,onValueChange:n,children:[I(Xe,{className:"ps-w-28 ps-text-xs ps-h-8",children:I(ra,{placeholder:"Select column"})}),I(_e,{children:Object.keys(r.columns).map(h=>I(q,{value:h,children:h},h))})]}),E(oa,{value:e.operator,onValueChange:h=>i(h),children:[I(Xe,{className:"ps-w-20 ps-text-xs ps-h-8",children:I(ra,{placeholder:"Operator"})}),E(_e,{children:[I(q,{value:"=",children:"="}),I(q,{value:"!=",children:"!="}),I(q,{value:">",children:">"}),I(q,{value:">=",children:">="}),I(q,{value:"<",children:"<"}),I(q,{value:"<=",children:"<="}),I(q,{value:"is",children:"is"}),I(q,{value:"is not",children:"is not"}),I(q,{value:"like",children:"like"}),I(q,{value:"not like",children:"not like"}),I(q,{value:"ilike",children:"ilike"}),I(q,{value:"not ilike",children:"not ilike"})]})]}),I(ne,{value:m,onChange:h=>{L(h.target.value),x(h)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),I("div",{className:"ps-flex ps-items-center ps-gap-2",children:I(A,{variant:"ghost",size:"xs",onClick:t,children:I(qe,{size:14})})})]})},eo=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:l,showLeadingOperator:s,leadingOperatorValue:u,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:n})=>{let[i,x]=Yt(!0),[m,L]=Yt(null),h=()=>{let z={id:Lr.generate(),kind:"ColumnFilter",column:Object.keys(l.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,z]})},p=()=>{let z={id:Lr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,z]})},b=(z,Z)=>{let G=[...e.filters];G[z]=Z,a({...e,filters:G})},C=z=>{let Z=[...e.filters];Z.splice(z,1),a({...e,filters:Z})},g=z=>{L(z.active.id)},T=()=>{L(null)},H=(z,Z)=>{if(z===Z)return;let G=zu(e.filters,z,Z);a({...e,filters:G})},oe=()=>i?!e.filters||e.filters.length===0?I("div",{className:"ps-pl-6 ps-text-sm ps-text-neutral-500 ps-italic",children:"This group is empty. Add a filter or another group."}):I(jt.div,{transition:{layout:{duration:.12}},children:I("div",{className:c("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:I(ju,{items:e.filters,parentGroupId:e.id,table:l,onUpdateItem:b,onDeleteItem:C,onReorderItems:H,activeDragId:m,onDragStart:g,onDragEndSignal:T})})}):null;return I(jt.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:E("div",{className:c("ps-flex ps-flex-col ps-w-full",i?"ps-gap-2":""),children:[E("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[E("div",{className:"ps-flex ps-items-center ps-gap-2",children:[!r&&I("div",{...o,className:"ps-cursor-grab",onClick:()=>x(!i),children:i?I(ce,{size:16}):I(le,{size:16})}),s&&d&&!r&&I("div",{className:"ps-flex ps-items-center",children:I(Cr,{value:u,onValueChange:d,disabled:n})}),E(A,{variant:"outline",size:"sm",onClick:h,className:c("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&I($a,{className:"ps-transition-all",children:I(_u,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),I(A,{variant:"outline",size:"sm",onClick:p,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),E("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&E(ut,{children:[I(dt,{asChild:!0,children:I(A,{variant:"ghost",size:"sm",children:I(Be,{className:"ps-size-4"})})}),I(Na,{align:"center",className:"ps-w-full",children:e.filters.length===0?I("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600",children:"No filters applied yet. Add filters to preview your query."}):I("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:I(Ir,{filter:e})})})]}),!r&&I(A,{variant:"ghost",size:"xs",onClick:t,children:I(qe,{size:14})})]})]}),I("div",{className:c(r?"":"ps-ml-6"),children:oe()})]})})},Ir=({filter:e})=>{let a=0;if(e.filters.length===0)return"( )";let t=e.filters.map((o,r)=>{let l,s=e.filters.length-1===r;if(a===-1&&(a=0),o.after==="and"&&!s&&(a+=1),a&&(s||o.after==="or")&&(a=-1),o.kind==="ColumnFilter"){let{column:u,operator:d}=o;l=E(ed,{children:[E("span",{children:[" ",u," "]}),E("span",{children:[" ",d," "]}),I("span",{children:" ? "})]})}else l=I(Ir,{filter:o});return E(Zu,{children:[a===1?I("span",{className:"ps-font-semibold",children:"("}):"",l,a===-1?I("span",{className:"ps-font-semibold",children:")"}):"",!s&&E("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return I("span",{children:t})};function Sr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return E("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[I(eo,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),I(A,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as xd,MouseSensor as Ld,useSensor as Cd,useSensors as hd}from"@dnd-kit/core";import{arrayMove as Id,horizontalListSortingStrategy as Sd,SortableContext as bd,useSortable as wd}from"@dnd-kit/sortable";import{CSS as yd}from"@dnd-kit/utilities";import{getCoreRowModel as vd,useReactTable as Pd}from"@tanstack/react-table";import*as Re from"react";import S from"react";function ze(){return ze=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},ze.apply(null,arguments)}var ad=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function td(e,a){let[t,o]=S.useState();S.useEffect(()=>{let l=ad(e);o(typeof l>"u"||l===null?typeof a=="function"?a():a:l)},[a,e]);let r=S.useCallback(l=>{o(s=>{let u=l;typeof l=="function"&&(u=l(s));try{localStorage.setItem(e,JSON.stringify(u))}catch{}return u})},[e]);return[t,r]}var me={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},yr=S.createContext(me);function vr(e){let{theme:a,...t}=e;return S.createElement(yr.Provider,ze({value:a},t))}function od(){return S.useContext(yr)}function rd(e){let[a,t]=S.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return S.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=l=>{let{matches:s}=l;return t(s)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var sd=typeof window>"u";function ie(e,a,t){return t===void 0&&(t={}),S.forwardRef((o,r)=>{let{style:l,...s}=o,u=od(),d=Object.entries(t).reduce((n,i)=>{let[x,m]=i;return rd(x)?{...n,...typeof m=="function"?m(s,u):m}:n},{});return S.createElement(e,{...s,style:{...typeof a=="function"?a(s,u):a,...l,...d},ref:r})})}function ld(){let e=S.useRef(!1),a=S.useCallback(()=>e.current,[]);return S[sd?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var ud=ie("div",(e,a)=>({fontSize:"clamp(12px, 1.5vw, 14px)",fontFamily:"sans-serif",display:"flex",backgroundColor:a.background,color:a.foreground}),{"(max-width: 700px)":{flexDirection:"column"},"(max-width: 600px)":{fontSize:".9em"}});ie("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var dd=ie("button",(e,a)=>({appearance:"none",fontSize:".9em",fontWeight:"bold",background:a.gray,border:"0",borderRadius:".3em",color:"white",padding:".5em",opacity:e.disabled?".5":void 0,cursor:"pointer"}));ie("code",{fontSize:".9em"});ie("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));ie("select",(e,a)=>({display:"inline-block",fontSize:".9em",fontFamily:"sans-serif",fontWeight:"normal",lineHeight:"1.3",padding:".3em 1.5em .3em .5em",height:"auto",border:0,borderRadius:".2em",appearance:"none",WebkitAppearance:"none",backgroundColor:a.inputBackgroundColor,backgroundImage:`url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,backgroundRepeat:"no-repeat",backgroundPosition:"right .55em center",backgroundSize:".65em auto, 100%",color:a.inputTextColor}),{"(max-width: 500px)":{display:"none"}});var br=ie("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),it=ie("span",{cursor:"pointer",color:"white"}),nd=ie("span",(e,a)=>({color:a.danger})),ao=ie("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),id=ie("span",{color:"grey",fontSize:".7rem"}),wr=e=>{let{expanded:a,style:t={},...o}=e;return S.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},fd=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:l,type:s,expanded:u,toggle:d,pageSize:n,renderer:i}=e,[x,m]=S.useState(void 0),[L,h]=S.useState([]),p=()=>{m(o())};return S.createElement(br,{key:t},l!=null&&l.length?S.createElement(S.Fragment,null,S.createElement(it,{onClick:()=>d()},S.createElement(wr,{expanded:u})," ",t," ",S.createElement(id,null,String(s).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),u?l.length===1?S.createElement(ao,null,r.map(b=>a(b))):S.createElement(ao,null,l.map((b,C)=>S.createElement("div",{key:C},S.createElement(br,null,S.createElement(it,{onClick:()=>h(g=>g.includes(C)?g.filter(T=>T!==C):[...g,C])},S.createElement(wr,{expanded:u})," [",C*n," ..."," ",C*n+n-1,"]"),L.includes(C)?S.createElement(ao,null,b.map(g=>a(g))):null)))):null):s==="function"?S.createElement(S.Fragment,null,S.createElement(ge,{renderer:i,label:S.createElement("button",{onClick:p},S.createElement(it,null,t)," \u{1F504}"," "),value:x,defaultExpanded:{}})):S.createElement(S.Fragment,null,S.createElement(it,null,t,":")," ",S.createElement(nd,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function ge(e){let{value:a,defaultExpanded:t,renderer:o=fd,pageSize:r=100,depth:l=0,...s}=e,[u,d]=S.useState(t),n=p=>{d(b=>typeof p<"u"?p:!b)},i=[],x=typeof a,m,L=[],h=p=>{let b=i.concat(p.label),C=t===!0?{[p.label]:!0}:t?.[p.label];return{...p,subPath:p,path:b,depth:l+1,defaultExpanded:C}};if(Array.isArray(a)?(x="array",m=a.map((p,b)=>h({label:b,value:p}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(x="Iterable",m=Array.from(a,(p,b)=>h({label:b,value:p}))):typeof a=="function"?x="function":typeof a=="object"&&a!==null&&(x="object",m=Object.entries(a).map(p=>{let[b,C]=p;return h({label:b,value:C})})),m){let p=0;for(;p<m.length;)L.push(m.slice(p,p+r)),p=p+r}return o({handleEntry:p=>S.createElement(ge,ze({key:p.label,renderer:o},s,p)),type:x,subEntries:m,subEntryPages:L,depth:l,value:a,path:i,expanded:u,toggle:n,pageSize:r,...s})}function Pr(e){return Re.createElement("svg",ze({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),Re.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},Re.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},Re.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},Re.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},Re.createElement("path",{d:"M39.7239712,51.3436237 C36.631224,36.362877 35.9675112,24.8727722 37.9666331,16.5293551 C39.1555965,11.5671678 41.3293088,7.51908462 44.6346064,4.59846305 C48.1241394,1.51504777 52.5360327,0.00201216606 57.493257,0.00201216606 C65.6712013,0.00201216606 74.2682602,3.72732143 83.4557246,10.8044264 C87.2031203,13.6910458 91.0924366,17.170411 95.1316515,21.2444746 C95.4531404,20.8310265 95.8165416,20.4410453 96.2214301,20.0806152 C107.64098,9.91497158 117.255245,3.59892716 125.478408,1.16365068 C130.367899,-0.284364005 134.958526,-0.422317978 139.138936,0.983031021 C143.551631,2.46646844 147.06766,5.53294888 149.548314,9.82810912 C153.642288,16.9166735 154.721918,26.2310983 153.195595,37.7320243 C152.573451,42.4199112 151.50985,47.5263831 150.007094,53.0593153 C150.574045,53.1277086 151.142416,53.2532808 151.705041,53.4395297 C166.193932,58.2358678 176.453582,63.3937462 182.665021,69.2882839 C186.360669,72.7953831 188.773972,76.6998434 189.646365,81.0218204 C190.567176,85.5836746 189.669313,90.1593316 187.191548,94.4512967 C183.105211,101.529614 175.591643,107.11221 164.887587,111.534031 C160.589552,113.309539 155.726579,114.917559 150.293259,116.363748 C150.541176,116.92292 150.733521,117.516759 150.862138,118.139758 C153.954886,133.120505 154.618598,144.61061 152.619477,152.954027 C151.430513,157.916214 149.256801,161.964297 145.951503,164.884919 C142.46197,167.968334 138.050077,169.48137 133.092853,169.48137 C124.914908,169.48137 116.31785,165.756061 107.130385,158.678956 C103.343104,155.761613 99.4108655,152.238839 95.3254337,148.108619 C94.9050753,148.765474 94.3889681,149.376011 93.7785699,149.919385 C82.3590198,160.085028 72.744755,166.401073 64.5215915,168.836349 C59.6321009,170.284364 55.0414736,170.422318 50.8610636,169.016969 C46.4483686,167.533532 42.9323404,164.467051 40.4516862,160.171891 C36.3577116,153.083327 35.2780823,143.768902 36.8044053,132.267976 C37.449038,127.410634 38.56762,122.103898 40.1575891,116.339009 C39.5361041,116.276104 38.9120754,116.144816 38.2949591,115.940529 C23.8060684,111.144191 13.5464184,105.986312 7.33497892,100.091775 C3.63933121,96.5846754 1.22602752,92.6802151 0.353635235,88.3582381 C-0.567176333,83.7963839 0.330686581,79.2207269 2.80845236,74.9287618 C6.89478863,67.8504443 14.4083565,62.2678481 25.1124133,57.8460273 C29.5385143,56.0176154 34.5637208,54.366822 40.1939394,52.8874674 C39.9933393,52.3969171 39.8349374,51.8811235 39.7239712,51.3436237 Z",id:"Path",fill:"#002C4B",fillRule:"nonzero",transform:"translate(95.000000, 85.000000) scale(-1, 1) translate(-95.000000, -85.000000) "}),Re.createElement("path",{d:"M91.735,110 L91.735,116 L80.6322051,116 C78.8411286,116 77.1868614,115.041975 76.2954489,113.488483 L74.294,110 L91.735,110 Z M116.181,110 L114.180256,113.488483 C113.288844,115.041975 111.634576,116 109.8435,116 L98.735,116 L98.735,110 L116.181,110 Z M91.735,96 L91.735,103 L70.277,103 L66.26,96 L91.735,96 Z M124.215,96 L120.198,103 L98.735,103 L98.735,96 L124.215,96 Z M91.735,82 L91.735,89 L62.244,89 L61.6632438,87.9884826 C60.7789187,86.4473417 60.7789187,84.5526583 61.6632438,83.0115174 L62.243,82 L91.735,82 Z M128.232,82 L128.812461,83.0115174 C129.696786,84.5526583 129.696786,86.4473417 128.812461,87.9884826 L128.231,89 L98.735,89 L98.735,82 L128.232,82 Z M91.735,68 L91.735,75 L66.26,75 L70.277,68 L91.735,68 Z M120.198,68 L124.215,75 L98.735,75 L98.735,68 L120.198,68 Z M91.735,55 L91.735,61 L74.293,61 L76.2954489,57.5115174 C77.1868614,55.958025 78.8411286,55 80.6322051,55 L91.735,55 Z M109.8435,55 C111.634576,55 113.288844,55.958025 114.180256,57.5115174 L116.182,61 L98.735,61 L98.735,55 L109.8435,55 Z",id:"Polygon-2",fill:"#FFD94C"}),Re.createElement("path",{d:"M54.8601729,98.3577578 C56.1715224,97.6082856 57.8360246,98.0746014 58.5779424,99.3993034 L58.5779424,99.3993034 L59.0525843,100.24352 C62.8563392,106.982993 66.8190116,113.380176 70.9406016,119.435068 C75.8078808,126.585427 81.28184,133.82411 87.3624792,141.151115 C88.3168778,142.30114 88.1849437,144.011176 87.065686,144.997937 L87.065686,144.997937 L86.4542085,145.534625 C66.3465389,163.103314 53.2778188,166.612552 47.2480482,156.062341 C41.3500652,145.742717 43.4844915,126.982888 53.6513274,99.7828526 C53.876818,99.1795821 54.3045861,98.675291 54.8601729,98.3577578 Z M140.534177,119.041504 C141.986131,118.785177 143.375496,119.742138 143.65963,121.194242 L143.65963,121.194242 L143.812815,121.986376 C148.782365,147.995459 145.283348,161 133.315764,161 C121.609745,161 106.708724,149.909007 88.6127018,127.727022 C88.2113495,127.235047 87.9945723,126.617371 88,125.981509 C88.013158,124.480686 89.2357854,123.274651 90.730918,123.287756 L90.730918,123.287756 L91.6846544,123.294531 C99.3056979,123.335994 106.714387,123.071591 113.910723,122.501323 C122.409039,121.82788 131.283523,120.674607 140.534177,119.041504 Z M147.408726,63.8119663 C147.932139,62.4026903 149.508386,61.6634537 150.954581,62.149012 L150.954581,62.149012 L151.742552,62.4154854 C177.583763,71.217922 187.402356,80.8916805 181.198332,91.4367609 C175.129904,101.751366 157.484347,109.260339 128.26166,113.963678 C127.613529,114.067994 126.948643,113.945969 126.382735,113.618843 C125.047025,112.846729 124.602046,111.158214 125.388848,109.847438 L125.388848,109.847438 L125.889328,109.0105 C129.877183,102.31633 133.481358,95.6542621 136.701854,89.0242957 C140.50501,81.1948179 144.073967,72.7907081 147.408726,63.8119663 Z M61.7383398,56.0363218 C62.3864708,55.9320063 63.0513565,56.0540315 63.6172646,56.3811573 C64.9529754,57.153271 65.3979538,58.8417862 64.6111517,60.1525615 L64.6111517,60.1525615 L64.1106718,60.9895001 C60.1228168,67.6836699 56.5186416,74.3457379 53.2981462,80.9757043 C49.49499,88.8051821 45.9260328,97.2092919 42.5912744,106.188034 C42.0678608,107.59731 40.4916142,108.336546 39.045419,107.850988 L39.045419,107.850988 L38.2574475,107.584515 C12.4162372,98.782078 2.59764398,89.1083195 8.80166786,78.5632391 C14.8700957,68.2486335 32.515653,60.7396611 61.7383398,56.0363218 Z M103.545792,24.4653746 C123.653461,6.89668641 136.722181,3.38744778 142.751952,13.9376587 C148.649935,24.2572826 146.515508,43.0171122 136.348673,70.2171474 C136.123182,70.8204179 135.695414,71.324709 135.139827,71.6422422 C133.828478,72.3917144 132.163975,71.9253986 131.422058,70.6006966 L131.422058,70.6006966 L130.947416,69.7564798 C127.143661,63.0170065 123.180988,56.6198239 119.059398,50.564932 C114.192119,43.4145727 108.71816,36.1758903 102.637521,28.8488847 C101.683122,27.6988602 101.815056,25.9888243 102.934314,25.0020629 L102.934314,25.0020629 Z M57.6842361,8 C69.3902551,8 84.2912758,19.0909926 102.387298,41.2729777 C102.788651,41.7649527 103.005428,42.3826288 103,43.0184911 C102.986842,44.5193144 101.764215,45.7253489 100.269082,45.7122445 L100.269082,45.7122445 L99.3153456,45.7054689 C91.6943021,45.6640063 84.2856126,45.9284091 77.0892772,46.4986773 C68.5909612,47.17212 59.7164767,48.325393 50.4658235,49.9584962 C49.0138691,50.2148231 47.6245044,49.2578618 47.3403697,47.805758 L47.3403697,47.805758 L47.1871846,47.0136235 C42.2176347,21.0045412 45.7166519,8 57.6842361,8 Z",id:"Combined-Shape",fill:"#FF4154"}))))))}function kr(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:l="footer"}=e,s=S.useRef(null),u=S.useRef(null),[d,n]=td("reactTableDevtoolsOpen",a),i=ld(),{style:x={},...m}=o,{style:L={},onClick:h,...p}=r;return i()?S.createElement(l,{ref:s,className:"ReactTableDevtools"},S.createElement(vr,{theme:me},d?S.createElement(cd,ze({ref:u},m,{table:t,isOpen:d,setIsOpen:n,style:{maxHeight:"80vh",width:"100%",...x}})):S.createElement("button",ze({type:"button"},p,{"aria-label":"Open React Table Devtools",onClick:b=>{n(!0),h&&h(b)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...L}}),S.createElement(Pr,{"aria-hidden":!0})))):null}var cd=S.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:l,...s}=a;return S.createElement(vr,{theme:me},S.createElement(ud,ze({ref:t,className:"ReactTableDevtoolsPanel"},s),S.createElement("style",{dangerouslySetInnerHTML:{__html:`
1
+ import"../chunk-IAKOOX7B.js";import{D as ea}from"../chunk-OGMDOPWW.js";import{B as It,aa as St,c as te,q as Lt,r as Ct,t as ht}from"../chunk-RFCV76TR.js";import{a as ms,b as Ie}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as wn,motion as cs}from"motion/react";import{clsx as _s}from"clsx";var yt="-",gs=e=>{let a=Ls(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{let u=s.split(yt);return u[0]===""&&u.length!==1&&u.shift(),Co(u,a)||xs(s)},getConflictingClassGroupIds:(s,u)=>{let n=t[s]||[];return u&&o[s]?[...n,...o[s]]:n}}},Co=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?Co(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let l=e.join(yt);return a.validators.find(({validator:s})=>s(l))?.classGroupId},mo=/^\[(.+)\]$/,xs=e=>{if(mo.test(e)){let a=mo.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},Ls=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return hs(Object.entries(e.classGroups),t).forEach(([l,s])=>{wt(s,o,l,a)}),o},wt=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let l=r===""?a:go(a,r);l.classGroupId=t;return}if(typeof r=="function"){if(Cs(r)){wt(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([l,s])=>{wt(s,go(a,l),t,o)})})},go=(e,a)=>{let t=e;return a.split(yt).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},Cs=e=>e.isThemeGetter,hs=(e,a)=>a?e.map(([t,o])=>{let r=o.map(l=>typeof l=="string"?a+l:typeof l=="object"?Object.fromEntries(Object.entries(l).map(([s,u])=>[a+s,u])):l);return[t,r]}):e,Is=e=>{if(e<1)return{get:()=>{},set:()=>{}};let a=0,t=new Map,o=new Map,r=(l,s)=>{t.set(l,s),a++,a>e&&(a=0,o=t,t=new Map)};return{get(l){let s=t.get(l);if(s!==void 0)return s;if((s=o.get(l))!==void 0)return r(l,s),s},set(l,s){t.has(l)?t.set(l,s):r(l,s)}}},ho="!",Ss=e=>{let{separator:a,experimentalParseClassName:t}=e,o=a.length===1,r=a[0],l=a.length,s=u=>{let n=[],d=0,i=0,x;for(let b=0;b<u.length;b++){let C=u[b];if(d===0){if(C===r&&(o||u.slice(b,b+l)===a)){n.push(u.slice(i,b)),i=b+l;continue}if(C==="/"){x=b;continue}}C==="["?d++:C==="]"&&d--}let m=n.length===0?u:u.substring(i),L=m.startsWith(ho),h=L?m.substring(1):m,p=x&&x>i?x-i:void 0;return{modifiers:n,hasImportantModifier:L,baseClassName:h,maybePostfixModifierPosition:p}};return t?u=>t({className:u,parseClassName:s}):s},bs=e=>{if(e.length<=1)return e;let a=[],t=[];return e.forEach(o=>{o[0]==="["?(a.push(...t.sort(),o),t=[]):t.push(o)}),a.push(...t.sort()),a},ws=e=>({cache:Is(e.cacheSize),parseClassName:Ss(e),...gs(e)}),ys=/\s+/,vs=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,l=[],s=e.trim().split(ys),u="";for(let n=s.length-1;n>=0;n-=1){let d=s[n],{modifiers:i,hasImportantModifier:x,baseClassName:m,maybePostfixModifierPosition:L}=t(d),h=!!L,p=o(h?m.substring(0,L):m);if(!p){if(!h){u=d+(u.length>0?" "+u:u);continue}if(p=o(m),!p){u=d+(u.length>0?" "+u:u);continue}h=!1}let b=bs(i).join(":"),C=x?b+ho:b,g=C+p;if(l.includes(g))continue;l.push(g);let T=r(p,h);for(let H=0;H<T.length;++H){let oe=T[H];l.push(C+oe)}u=d+(u.length>0?" "+u:u)}return u};function Ps(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=Io(a))&&(o&&(o+=" "),o+=t);return o}var Io=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=Io(e[o]))&&(t&&(t+=" "),t+=a);return t};function xo(e,...a){let t,o,r,l=s;function s(n){let d=a.reduce((i,x)=>x(i),e());return t=ws(d),o=t.cache.get,r=t.cache.set,l=u,u(n)}function u(n){let d=o(n);if(d)return d;let i=vs(n,t);return r(n,i),i}return function(){return l(Ps.apply(null,arguments))}}var B=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},So=/^\[(?:([a-z-]+):)?(.+)\]$/i,ks=/^\d+\/\d+$/,Rs=new Set(["px","full","screen"]),Ms=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ts=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ds=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,As=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Fs=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Se=e=>aa(e)||Rs.has(e)||ks.test(e),De=e=>ta(e,"length",zs),aa=e=>!!e&&!Number.isNaN(Number(e)),bt=e=>ta(e,"number",aa),na=e=>!!e&&Number.isInteger(Number(e)),Bs=e=>e.endsWith("%")&&aa(e.slice(0,-1)),y=e=>So.test(e),Ae=e=>Ms.test(e),Ns=new Set(["length","size","percentage"]),Os=e=>ta(e,Ns,bo),qs=e=>ta(e,"position",bo),Es=new Set(["image","url"]),Us=e=>ta(e,Es,Vs),Hs=e=>ta(e,"",Gs),ia=()=>!0,ta=(e,a,t)=>{let o=So.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},zs=e=>Ts.test(e)&&!Ds.test(e),bo=()=>!1,Gs=e=>As.test(e),Vs=e=>Fs.test(e);var Lo=()=>{let e=B("colors"),a=B("spacing"),t=B("blur"),o=B("brightness"),r=B("borderColor"),l=B("borderRadius"),s=B("borderSpacing"),u=B("borderWidth"),n=B("contrast"),d=B("grayscale"),i=B("hueRotate"),x=B("invert"),m=B("gap"),L=B("gradientColorStops"),h=B("gradientColorStopPositions"),p=B("inset"),b=B("margin"),C=B("opacity"),g=B("padding"),T=B("saturate"),H=B("scale"),oe=B("sepia"),z=B("skew"),Z=B("space"),V=B("translate"),N=()=>["auto","contain","none"],v=()=>["auto","hidden","clip","visible","scroll"],J=()=>["auto",y,a],M=()=>[y,a],Ce=()=>["",Se,De],je=()=>["auto",aa,y],Xa=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Ye=()=>["solid","dashed","dotted","double","none"],_a=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],da=()=>["start","end","center","between","around","evenly","stretch"],Ge=()=>["","0",y],Qa=()=>["auto","avoid","all","avoid-page","page","left","right","column"],re=()=>[aa,y];return{cacheSize:500,separator:":",theme:{colors:[ia],spacing:[Se,De],blur:["none","",Ae,y],brightness:re(),borderColor:[e],borderRadius:["none","","full",Ae,y],borderSpacing:M(),borderWidth:Ce(),contrast:re(),grayscale:Ge(),hueRotate:re(),invert:Ge(),gap:M(),gradientColorStops:[e],gradientColorStopPositions:[Bs,De],inset:J(),margin:J(),opacity:re(),padding:M(),saturate:re(),scale:re(),sepia:Ge(),skew:re(),space:M(),translate:M()},classGroups:{aspect:[{aspect:["auto","square","video",y]}],container:["container"],columns:[{columns:[Ae]}],"break-after":[{"break-after":Qa()}],"break-before":[{"break-before":Qa()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Xa(),y]}],overflow:[{overflow:v()}],"overflow-x":[{"overflow-x":v()}],"overflow-y":[{"overflow-y":v()}],overscroll:[{overscroll:N()}],"overscroll-x":[{"overscroll-x":N()}],"overscroll-y":[{"overscroll-y":N()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[p]}],"inset-x":[{"inset-x":[p]}],"inset-y":[{"inset-y":[p]}],start:[{start:[p]}],end:[{end:[p]}],top:[{top:[p]}],right:[{right:[p]}],bottom:[{bottom:[p]}],left:[{left:[p]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",na,y]}],basis:[{basis:J()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",y]}],grow:[{grow:Ge()}],shrink:[{shrink:Ge()}],order:[{order:["first","last","none",na,y]}],"grid-cols":[{"grid-cols":[ia]}],"col-start-end":[{col:["auto",{span:["full",na,y]},y]}],"col-start":[{"col-start":je()}],"col-end":[{"col-end":je()}],"grid-rows":[{"grid-rows":[ia]}],"row-start-end":[{row:["auto",{span:[na,y]},y]}],"row-start":[{"row-start":je()}],"row-end":[{"row-end":je()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",y]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",y]}],gap:[{gap:[m]}],"gap-x":[{"gap-x":[m]}],"gap-y":[{"gap-y":[m]}],"justify-content":[{justify:["normal",...da()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...da(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...da(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[g]}],px:[{px:[g]}],py:[{py:[g]}],ps:[{ps:[g]}],pe:[{pe:[g]}],pt:[{pt:[g]}],pr:[{pr:[g]}],pb:[{pb:[g]}],pl:[{pl:[g]}],m:[{m:[b]}],mx:[{mx:[b]}],my:[{my:[b]}],ms:[{ms:[b]}],me:[{me:[b]}],mt:[{mt:[b]}],mr:[{mr:[b]}],mb:[{mb:[b]}],ml:[{ml:[b]}],"space-x":[{"space-x":[Z]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[Z]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",y,a]}],"min-w":[{"min-w":[y,a,"min","max","fit"]}],"max-w":[{"max-w":[y,a,"none","full","min","max","fit","prose",{screen:[Ae]},Ae]}],h:[{h:[y,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[y,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[y,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[y,a,"auto","min","max","fit"]}],"font-size":[{text:["base",Ae,De]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",bt]}],"font-family":[{font:[ia]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",y]}],"line-clamp":[{"line-clamp":["none",aa,bt]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Se,y]}],"list-image":[{"list-image":["none",y]}],"list-style-type":[{list:["none","disc","decimal",y]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[C]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[C]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Ye(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Se,De]}],"underline-offset":[{"underline-offset":["auto",Se,y]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:M()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",y]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",y]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[C]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Xa(),qs]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Os]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Us]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[h]}],"gradient-via-pos":[{via:[h]}],"gradient-to-pos":[{to:[h]}],"gradient-from":[{from:[L]}],"gradient-via":[{via:[L]}],"gradient-to":[{to:[L]}],rounded:[{rounded:[l]}],"rounded-s":[{"rounded-s":[l]}],"rounded-e":[{"rounded-e":[l]}],"rounded-t":[{"rounded-t":[l]}],"rounded-r":[{"rounded-r":[l]}],"rounded-b":[{"rounded-b":[l]}],"rounded-l":[{"rounded-l":[l]}],"rounded-ss":[{"rounded-ss":[l]}],"rounded-se":[{"rounded-se":[l]}],"rounded-ee":[{"rounded-ee":[l]}],"rounded-es":[{"rounded-es":[l]}],"rounded-tl":[{"rounded-tl":[l]}],"rounded-tr":[{"rounded-tr":[l]}],"rounded-br":[{"rounded-br":[l]}],"rounded-bl":[{"rounded-bl":[l]}],"border-w":[{border:[u]}],"border-w-x":[{"border-x":[u]}],"border-w-y":[{"border-y":[u]}],"border-w-s":[{"border-s":[u]}],"border-w-e":[{"border-e":[u]}],"border-w-t":[{"border-t":[u]}],"border-w-r":[{"border-r":[u]}],"border-w-b":[{"border-b":[u]}],"border-w-l":[{"border-l":[u]}],"border-opacity":[{"border-opacity":[C]}],"border-style":[{border:[...Ye(),"hidden"]}],"divide-x":[{"divide-x":[u]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[u]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[C]}],"divide-style":[{divide:Ye()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...Ye()]}],"outline-offset":[{"outline-offset":[Se,y]}],"outline-w":[{outline:[Se,De]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Ce()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[C]}],"ring-offset-w":[{"ring-offset":[Se,De]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Ae,Hs]}],"shadow-color":[{shadow:[ia]}],opacity:[{opacity:[C]}],"mix-blend":[{"mix-blend":[..._a(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":_a()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[n]}],"drop-shadow":[{"drop-shadow":["","none",Ae,y]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[i]}],invert:[{invert:[x]}],saturate:[{saturate:[T]}],sepia:[{sepia:[oe]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[n]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[i]}],"backdrop-invert":[{"backdrop-invert":[x]}],"backdrop-opacity":[{"backdrop-opacity":[C]}],"backdrop-saturate":[{"backdrop-saturate":[T]}],"backdrop-sepia":[{"backdrop-sepia":[oe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",y]}],duration:[{duration:re()}],ease:[{ease:["linear","in","out","in-out",y]}],delay:[{delay:re()}],animate:[{animate:["none","spin","ping","pulse","bounce",y]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[H]}],"scale-x":[{"scale-x":[H]}],"scale-y":[{"scale-y":[H]}],rotate:[{rotate:[na,y]}],"translate-x":[{"translate-x":[V]}],"translate-y":[{"translate-y":[V]}],"skew-x":[{"skew-x":[z]}],"skew-y":[{"skew-y":[z]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",y]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",y]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":M()}],"scroll-mx":[{"scroll-mx":M()}],"scroll-my":[{"scroll-my":M()}],"scroll-ms":[{"scroll-ms":M()}],"scroll-me":[{"scroll-me":M()}],"scroll-mt":[{"scroll-mt":M()}],"scroll-mr":[{"scroll-mr":M()}],"scroll-mb":[{"scroll-mb":M()}],"scroll-ml":[{"scroll-ml":M()}],"scroll-p":[{"scroll-p":M()}],"scroll-px":[{"scroll-px":M()}],"scroll-py":[{"scroll-py":M()}],"scroll-ps":[{"scroll-ps":M()}],"scroll-pe":[{"scroll-pe":M()}],"scroll-pt":[{"scroll-pt":M()}],"scroll-pr":[{"scroll-pr":M()}],"scroll-pb":[{"scroll-pb":M()}],"scroll-pl":[{"scroll-pl":M()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",y]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[Se,De,bt]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Ws=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:l={},override:s={}})=>{fa(e,"cacheSize",a),fa(e,"prefix",t),fa(e,"separator",o),fa(e,"experimentalParseClassName",r);for(let u in s)Ks(e[u],s[u]);for(let u in l)Xs(e[u],l[u]);return e},fa=(e,a,t)=>{t!==void 0&&(e[a]=t)},Ks=(e,a)=>{if(a)for(let t in a)fa(e,t,a[t])},Xs=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},wo=(e,...a)=>typeof e=="function"?xo(Lo,e,...a):xo(()=>Ws(Lo(),e),...a);var Qs=wo({prefix:"ps-"});function c(...e){return Qs(_s(e))}import{useIsMutating as nn}from"@tanstack/react-query";import{forwardRef as Js,createElement as $s}from"react";var yo=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Za=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Zs,createElement as Po}from"react";var vo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var ko=Zs(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...u},n)=>Po("svg",{ref:n,...vo,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:Za("lucide",r),...u},[...s.map(([d,i])=>Po(d,i)),...Array.isArray(l)?l:[l]]));var w=(e,a)=>{let t=Js(({className:o,...r},l)=>$s(ko,{ref:l,iconNode:a,className:Za(`lucide-${yo(e)}`,o),...r}));return t.displayName=`${e}`,t};var Fe=w("ArrowDownWideNarrow",[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]]);var ca=w("ArrowUpWideNarrow",[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h4",key:"1krc32"}]]);var se=w("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var ce=w("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var pa=w("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var le=w("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var ma=w("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var ga=w("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var xa=w("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var Be=w("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var Ve=w("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var La=w("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var Ca=w("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]);var ha=w("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var Ia=w("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);var Sa=w("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var ba=w("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);var wa=w("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);var ya=w("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var va=w("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Ne=w("PanelLeftClose",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);var Oe=w("PanelLeftOpen",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var Pa=w("PinOff",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);var ka=w("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);var Ra=w("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var Ma=w("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]);var qe=w("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as fn}from"motion-plus/react";import{useEffect as cn,useState as pn}from"react";import{toast as mn}from"sonner";import{cva as js}from"class-variance-authority";import{jsx as Ys}from"react/jsx-runtime";var vt=js("ps-inline-flex ps-items-center ps-rounded-md ps-border ps-px-2.5 ps-py-0.5 ps-text-xs ps-font-semibold ps-transition-colors focus:ps-outline-none focus:ps-ring-2 focus:ps-ring-ring focus:ps-ring-offset-2",{variants:{variant:{default:"ps-border-transparent ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/80",secondary:"ps-border-transparent ps-bg-secondary ps-text-secondary-foreground hover:ps-bg-secondary/80",destructive:"ps-border-transparent ps-bg-destructive ps-text-destructive-foreground ps-shadow hover:ps-bg-destructive/80",outline:"ps-text-foreground"}},defaultVariants:{variant:"default"}});function Ja({className:e,variant:a,...t}){return Ys("div",{className:c(vt({variant:a}),e),...t})}import{Slot as el}from"@radix-ui/react-slot";import{cva as al}from"class-variance-authority";import*as Ro from"react";import{jsx as ol}from"react/jsx-runtime";var tl=al("ps-inline-flex ps-items-center ps-justify-center ps-gap-2 ps-whitespace-nowrap ps-rounded-md ps-text-sm ps-font-medium ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-pointer-events-none disabled:ps-opacity-50 [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",{variants:{variant:{default:"ps-bg-primary ps-text-primary-foreground ps-shadow hover:ps-bg-primary/90",destructive:"ps-bg-destructive ps-text-destructive-foreground ps-shadow-sm hover:ps-bg-destructive/90",outline:"ps-border ps-border-input ps-bg-background ps-shadow-sm hover:ps-bg-accent hover:ps-text-accent-foreground",secondary:"ps-bg-secondary ps-text-secondary-foreground ps-shadow-sm hover:ps-bg-secondary/80",ghost:"hover:ps-bg-accent hover:ps-text-accent-foreground",link:"ps-text-primary ps-underline-offset-4 hover:ps-underline"},size:{default:"ps-h-9 ps-px-4 ps-py-2",xs:"ps-h-6 ps-rounded-md ps-px-2 ps-text-xs",sm:"ps-h-8 ps-rounded-md ps-px-3 ps-text-xs",lg:"ps-h-10 ps-rounded-md ps-px-8",icon:"ps-h-9 ps-w-9"}},defaultVariants:{variant:"default",size:"default"}}),A=Ro.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},l)=>ol(o?el:"button",{className:c(tl({variant:a,size:t,className:e})),ref:l,...r}));A.displayName="Button";import*as pe from"@radix-ui/react-popover";import*as To from"react";import{jsx as Mo}from"react/jsx-runtime";var Do=pe.Root,Ao=pe.Trigger;var Pt=To.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Mo(pe.Portal,{children:Mo(pe.Content,{ref:r,align:a,sideOffset:t,className:c("ps-z-50 ps-w-72 ps-rounded-md ps-border ps-bg-popover ps-p-4 ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-popover-content-transform-origin]",e),...o})}));Pt.displayName=pe.Content.displayName;import{useMutation as kl,useQueryClient as Rl}from"@tanstack/react-query";import{QueryClient as Cl,QueryClientProvider as hl}from"@tanstack/react-query";import*as ue from"react";import{onlineManager as rl,useQueryClient as sl}from"@tanstack/react-query";var Fo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:n,styleNonce:d,shadowDOMTarget:i}=e;this.#a=te(a),this.#i=t,this.#f=o,this.#n=r,this.#c=d,this.#t=i,this.#o=te(l),this.#r=te(s),this.#s=te(u),this.#l=te(n)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=It(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,n;return this.#u?n=this.#u:(n=ht(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#u=n),St(this.#c,this.#t),Lt(n,Ct({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()}}))},e);this.#e=!0,this.#d=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#d?.(),this.#e=!1}},Bo=class{#a;#n;#i;#f;#e=!1;#c;#t;#o;#r;#s;#l;#u;#d;#p;constructor(e){let{client:a,queryFlavor:t,version:o,onlineManager:r,buttonPosition:l,position:s,initialIsOpen:u,errorTypes:n,styleNonce:d,shadowDOMTarget:i,onClose:x}=e;this.#a=te(a),this.#i=t,this.#f=o,this.#n=r,this.#c=d,this.#t=i,this.#o=te(l),this.#r=te(s),this.#s=te(u),this.#l=te(n),this.#u=te(x)}setButtonPosition(e){this.#o[1](e)}setPosition(e){this.#r[1](e)}setInitialIsOpen(e){this.#s[1](e)}setErrorTypes(e){this.#l[1](e)}setClient(e){this.#a[1](e)}setOnClose(e){this.#u[1](()=>e)}mount(e){if(this.#e)throw new Error("Devtools is already mounted");let a=It(()=>{let t=this,[o]=this.#o,[r]=this.#r,[l]=this.#s,[s]=this.#l,[u]=this.#a,[n]=this.#u,d;return this.#d?d=this.#d:(d=ht(()=>import("../OKF6E45R-3IGVLQES.js")),this.#d=d),St(this.#c,this.#t),Lt(d,Ct({get queryFlavor(){return t.#i},get version(){return t.#f},get onlineManager(){return t.#n},get shadowDOMTarget(){return t.#t}},{get client(){return u()},get buttonPosition(){return o()},get position(){return r()},get initialIsOpen(){return l()},get errorTypes(){return s()},get onClose(){return n()}}))},e);this.#e=!0,this.#p=a}unmount(){if(!this.#e)throw new Error("Devtools is not mounted");this.#p?.(),this.#e=!1}};import{jsx as ll}from"react/jsx-runtime";function No(e){let a=sl(e.client),t=ue.useRef(null),{buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:n}=e,[d]=ue.useState(new Fo({client:a,queryFlavor:"React Query",version:"5",onlineManager:rl,buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:n}));return ue.useEffect(()=>{d.setClient(a)},[a,d]),ue.useEffect(()=>{o&&d.setButtonPosition(o)},[o,d]),ue.useEffect(()=>{r&&d.setPosition(r)},[r,d]),ue.useEffect(()=>{d.setInitialIsOpen(l||!1)},[l,d]),ue.useEffect(()=>{d.setErrorTypes(s||[])},[s,d]),ue.useEffect(()=>(t.current&&d.mount(t.current),()=>{d.unmount()}),[d]),ll("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as be from"react";import{onlineManager as dl,useQueryClient as nl}from"@tanstack/react-query";import{jsx as il}from"react/jsx-runtime";function Oo(e){let a=nl(e.client),t=be.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:l}=e,[s]=be.useState(new Bo({client:a,queryFlavor:"React Query",version:"5",onlineManager:dl,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:l,onClose:e.onClose}));return be.useEffect(()=>{s.setClient(a)},[a,s]),be.useEffect(()=>{s.setOnClose(e.onClose??(()=>{}))},[e.onClose,s]),be.useEffect(()=>{s.setErrorTypes(o||[])},[o,s]),be.useEffect(()=>(t.current&&s.mount(t.current),()=>{s.unmount()}),[s]),il("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var qo=process.env.NODE_ENV!=="development"?function(){return null}:No,yc=process.env.NODE_ENV!=="development"?function(){return null}:Oo;import{createContext as Il,useContext as Sl,useMemo as bl,useState as $a}from"react";import{toast as wl}from"sonner";import{Toaster as cl}from"sonner";import{jsx as pl}from"react/jsx-runtime";var Eo=({...e})=>pl(cl,{className:"ps-toaster ps-group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e});import{unstable_createAdapterProvider as ml}from"nuqs/adapters/custom";import{useEffect as gl,useState as xl}from"react";function Ll(){let e=window.location.hash.slice(1),[a,t]=xl(new URLSearchParams(e));function o(l,{history:s}){let{pathname:u,search:n}=window.location,d=l.toString(),i=`${u}${n}#${d}`;s==="push"?window.history.pushState(null,"",i):window.history.replaceState(null,"",i),t(l)}function r(){let l=window.location.hash.slice(1);return new URLSearchParams(l)}return gl(()=>{function l(){let s=window.location.hash.slice(1);t(new URLSearchParams(s))}return window.addEventListener("hashchange",l),()=>window.removeEventListener("hashchange",l)},[]),{searchParams:a,updateUrl:o,getSearchParamsSnapshot:r}}var Uo=ml(Ll);import{jsx as ja,jsxs as vl}from"react/jsx-runtime";var yl=new Cl,Ho=Il(void 0);function zo(e){let{children:a,...t}=e,[o,r]=$a(null),[l,s]=$a(e.adapter.defaultSchema||"public"),[u,n]=$a(!1),[d,i]=$a(!0),x=e.onError;x??=p=>wl.error(p.message);let m=bl(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),L=()=>n(p=>!p),h=()=>i(p=>!p);return vl(hl,{client:yl,children:[ja(qo,{}),ja(Eo,{}),ja(Uo,{children:ja(Ho.Provider,{value:{...t,activeTable:o,activeSchema:l,isFullscreen:u,setActiveTable:r,setActiveSchema:s,onError:x,emitTelemetryEvent:m,toggleFullscreen:L,isNavigationOpen:d,toggleNavigation:h},children:a})})]})}function W(){let e=Sl(Ho);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function Pl(e,a){let t={filter:ea(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function Go(e,a){return{...e,__ps_rowid:Pl(e,a)}}function Ya(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:Go(t,a)}:o!==void 0?{...e,rows:o.map(r=>Go(r,a))}:e}function Vo(){let{activeTable:e,adapter:a}=W(),t=Rl(),{schema:o=null,name:r=null}=e??{};return kl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(l){let[s,u]=await a.insert({rows:l,table:e},{});if(s)throw s;return Ya(u,e)},onSuccess(l){t.setQueriesData({exact:!1,queryKey:["schema",o,"table",r,"query"]},s=>s==null?s:{...s,rows:[...l.rows,...s.rows]})},retry:!1})}import{useQuery as Ml}from"@tanstack/react-query";function Wo(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:l,adapter:s}=W();return Ml({enabled:!!l,gcTime:0,placeholderData(u,n){let[,d,,i]=n?.queryKey||[];if(!(d!==l?.schema||i!==l?.name))return u},async queryFn({signal:u}){let[n,d]=await s.query({pageIndex:a,pageSize:t,sortOrder:o,table:l,filter:r},{abortSignal:u});if(n)throw n;return Ya(d,l)},queryKey:["schema",l?.schema||null,"table",l?.name||null,"query","sortOrder",o.map(u=>`${u.column}:${u.direction}`).join(",")||"natural","pageIndex",a,"pageSize",t,"filter",JSON.stringify(r)],staleTime:1/0})}import{useMutation as Tl,useQueryClient as Dl}from"@tanstack/react-query";function Ko(){let{activeTable:e,adapter:a,onError:t}=W(),o=Dl(),r=["schema",e?.schema??null,"table",e?.name??null];return Tl({mutationFn:async l=>{let[s,u]=await a.update(l.details,l.options);if(s)throw s;return u},mutationKey:[...r,"update"],onError(l,s){let{changes:u,row:n}=s.details;t(l),kt({getFinderFn(){let d={...n,...u},i=ea(d,e.columns);return x=>i.every(([m,L])=>x[m]===L)},queryClient:o,table:e,updaterFn:function(i){return{...i,...Object.keys(u).reduce((x,m)=>({...x,[m]:n[m]}),{})}}})},onMutate(l){let{details:s}=l;kt({getFinderFn(){let{row:u}=s,n=ea(u,e.columns);return d=>n.every(([i,x])=>d[i]===x)},queryClient:o,table:e,updaterFn:function(n){return{...n,...s.changes}}})},onSuccess(l,s){kt({getFinderFn(){let{changes:u,row:n}=s.details,d={...n,...u},i=ea(d,e.columns);return x=>i.every(([m,L])=>x[m]===L)},queryClient:o,table:e,updaterFn:function(n){let{__ps_updated_at__:d}=n,{row:i}=l;return d!=null&&i.__ps_updated_at__<=d?n:{...n,...i}}})},retry:!1})}function kt(e){let{getFinderFn:a,queryClient:t,table:o,updaterFn:r}=e,l;t.setQueriesData({exact:!1,queryKey:["schema",o.schema,"table",o.name,"query"]},s=>{let{rows:u=[]}=s||{};if(u.length===0)return s;let n=u.findIndex(l??=a());if(n===-1)return s;let d=r(u[n]);return{...s,rows:[...u.slice(0,n),d,...u.slice(n+1)]}})}import{useEffect as Nl,useMemo as Xo,useState as Ol}from"react";import ql from"short-uuid";var K={};ms(K,{keyMap:()=>Rt,urlKeys:()=>Bl,useQueryState:()=>Ee,useQueryStates:()=>Ta});Ie(K,gp);import{useQueryState as Al,useQueryStates as Fl}from"nuqs";import*as gp from"nuqs";function Rt(e){return e}function Bl(e){return e}var pp=Symbol("BRAND_SYMBOL");function Ee(e,a){return Al(e,a)}function Ta(e,a){return Fl(e,a)}var El={kind:"FilterGroup",filters:[],after:"and",id:ql.generate()},_o=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=_o(t));return a};function Qo(){let[e,a]=Ee("filter",{defaultValue:JSON.stringify(El)}),t=Xo(()=>JSON.parse(e),[e]),o=u=>void a(JSON.stringify(u)),[r,l]=Ol(t);Nl(()=>{l(t)},[t]);let s=Xo(()=>_o(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:l,totalEditingFilters:s}}import{useIsMutating as Ul}from"@tanstack/react-query";function et(){return Ul({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as Hl}from"react";var zl=25,Gl={pageIndex:K.parseAsIndex.withDefault(0),pageSize:K.parseAsInteger.withDefault(zl)};function at(){let[{pageIndex:e,pageSize:a},t]=Ta(Gl),o=Hl(r=>{t(typeof r=="function"?l=>{let s=r(l);return{pageIndex:s.pageIndex,pageSize:s.pageSize}}:{pageIndex:r.pageIndex,pageSize:r.pageSize})},[t]);return{paginationState:{pageIndex:e,pageSize:a},setPaginationState:o}}import{useEffect as Kl,useState as Xl}from"react";import{useMutation as Vl,useQueryClient as Wl}from"@tanstack/react-query";function Zo(){let{activeTable:e,adapter:a}=W(),t=Wl(),{schema:o=null,name:r=null}=e??{};return Vl({mutationKey:["schema",o,"table",r,"delete"],async mutationFn(l){let[s,u]=await a.delete({rows:l,table:e},{});if(s)throw s;return u},async onSuccess(){await t.invalidateQueries({exact:!1,queryKey:["schema",o,"table",r,"query"]})},retry:!1})}function Jo(e){let{activeTable:a,onError:t}=W(),{paginationState:o}=at(),[r,l]=Xl({}),s=Object.keys(r).length!==0,{mutate:u}=Zo();Kl(()=>l({}),[a,o.pageIndex]);function n(){let d=e?.rows.filter(i=>r[i.__ps_rowid]);u(d??[],{onSuccess(){l({})},onError:t})}return{deleteSelection:n,setRowSelectionState:l,rowSelectionState:r,isSelecting:s}}import{useEffect as _l,useState as Ql}from"react";function $o(){let[e,a]=Ee("sort",{defaultValue:""}),t=s=>{if(!s)return[];try{return s.split(",").map(u=>{let[n,d]=u.split(":");return!n||!d||!["asc","desc"].includes(d)?null:{column:n,direction:d}}).filter(Boolean)}catch(u){return console.error("Failed to parse sorting parameter:",u),[]}},[o,r]=Ql(()=>t(e));return _l(()=>{let s=t(e);r(s)},[e]),{sortingState:o,setSortingState:s=>{let u=typeof s=="function"?s(o):s;r(u);let n=u.length>0?u.map(d=>`${d.column}:${d.direction}`).join(","):null;a(n)}}}import{isObjectType as Iu}from"remeda";import{forwardRef as su}from"react";import*as ye from"react";import{jsx as we}from"react/jsx-runtime";var Mt=ye.forwardRef(({className:e,...a},t)=>we("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:we("table",{ref:t,className:c("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));Mt.displayName="Table";var Tt=ye.forwardRef(({className:e,...a},t)=>we("thead",{ref:t,className:c(e),...a}));Tt.displayName="TableHeader";var Dt=ye.forwardRef(({className:e,...a},t)=>we("tbody",{ref:t,className:c("[&_tr:last-child]:ps-border-0",e),...a}));Dt.displayName="TableBody";var Zl=ye.forwardRef(({className:e,...a},t)=>we("tfoot",{ref:t,className:c("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));Zl.displayName="TableFooter";var We=ye.forwardRef(({className:e,...a},t)=>we("tr",{ref:t,className:c("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));We.displayName="TableRow";var Ke=ye.forwardRef(({className:e,...a},t)=>we("th",{ref:t,className:c("ps-h-10 ps-px-2 ps-text-left ps-align-middle ps-font-medium ps-text-muted-foreground",e),...a}));Ke.displayName="TableHead";var Ue=ye.forwardRef(({className:e,...a},t)=>we("td",{ref:t,className:c("ps-align-middle",e),...a}));Ue.displayName="TableCell";var Jl=ye.forwardRef(({className:e,...a},t)=>we("caption",{ref:t,className:c("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));Jl.displayName="TableCaption";import{isValidElement as ru}from"react";import*as P from"@radix-ui/react-context-menu";import*as ve from"react";import{jsx as $,jsxs as Bt}from"react/jsx-runtime";var jo=P.Root,Yo=P.Trigger;var $l=ve.forwardRef(({className:e,inset:a,children:t,...o},r)=>Bt(P.SubTrigger,{ref:r,className:c("ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[state=open]:ps-bg-accent data-[state=open]:ps-text-accent-foreground",a&&"ps-pl-8",e),...o,children:[t,$(le,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));$l.displayName=P.SubTrigger.displayName;var jl=ve.forwardRef(({className:e,...a},t)=>$(P.SubContent,{ref:t,className:c("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a}));jl.displayName=P.SubContent.displayName;var At=ve.forwardRef(({className:e,...a},t)=>$(P.Portal,{children:$(P.Content,{ref:t,className:c("ps-z-50 ps-max-h-[--radix-context-menu-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-context-menu-content-transform-origin]",e),...a})}));At.displayName=P.Content.displayName;var Ft=ve.forwardRef(({className:e,inset:a,...t},o)=>$(P.Item,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",a&&"ps-pl-8",e),...t}));Ft.displayName=P.Item.displayName;var Yl=ve.forwardRef(({className:e,children:a,checked:t,...o},r)=>Bt(P.CheckboxItem,{ref:r,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[$("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:$(P.ItemIndicator,{children:$(se,{className:"ps-h-4 ps-w-4"})})}),a]}));Yl.displayName=P.CheckboxItem.displayName;var eu=ve.forwardRef(({className:e,children:a,...t},o)=>Bt(P.RadioItem,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[$("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:$(P.ItemIndicator,{children:$(Ve,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));eu.displayName=P.RadioItem.displayName;var au=ve.forwardRef(({className:e,inset:a,...t},o)=>$(P.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold ps-text-foreground",a&&"ps-pl-8",e),...t}));au.displayName=P.Label.displayName;var tu=ve.forwardRef(({className:e,...a},t)=>$(P.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));tu.displayName=P.Separator.displayName;var ou=({className:e,...a})=>$("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});ou.displayName="ContextMenuShortcut";import{jsx as Nt,jsxs as er}from"react/jsx-runtime";function ar(e){let{children:a}=e;return er(jo,{children:[Nt(Yo,{className:"ps-block ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)] ps-text-xs ps-font-mono ps-whitespace-nowrap ps-overflow-hidden ps-text-ellipsis",children:a}),Nt(At,{children:er(Ft,{onClick:()=>{let t=Ot(a);navigator.clipboard.writeText(t).catch(o=>{console.error("Failed to copy to clipboard:",o)})},className:"ps-flex ps-items-center ps-gap-2",children:[Nt(La,{size:12}),"Copy"]})})]})}function Ot(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(ru(e)){let a=e.props;return e.type&&typeof e.type=="function"&&e.type.name==="RevealText"?a.text||"":e.type&&typeof e.type=="function"&&e.type.name==="NullValue"?"NULL":a.children?Ot(a.children):""}return Array.isArray(e)?e.map(Ot).join(""):""}import{jsx as tr}from"react/jsx-runtime";function X(e){let{children:a,className:t,ref:o,style:r,...l}=e;return tr(Ue,{...l,className:c("ps-p-0 ps-border-r ps-border-b ps-border-table-border","ps-cursor-pointer",t),ref:o,style:r,children:tr(ar,{children:a})})}import{jsx as or}from"react/jsx-runtime";var qt=su((e,a)=>{let{containerProps:t,value:o,...r}=e;return or(X,{...r,...t,ref:a,children:or("div",{"data-cell-type":"boolean",children:String(!!o)})})});qt.displayName="BooleanCell";import{forwardRef as lu}from"react";import{jsx as uu}from"react/jsx-runtime";var Et=lu((e,a)=>{let{containerProps:t,value:o,...r}=e;return uu(X,{...r,...t,ref:a,children:String(o)})});Et.displayName="DateCell";import{forwardRef as du}from"react";import{jsx as nu}from"react/jsx-runtime";var Da=du((e,a)=>{let{containerProps:t,...o}=e;return nu(X,{...o,...t,ref:a})});Da.displayName="EmptyCell";import{forwardRef as iu}from"react";import{jsx as fu}from"react/jsx-runtime";var Ut=iu((e,a)=>{let{containerProps:t,value:o,options:r,...l}=e;return fu(X,{...l,...t,ref:a,children:String(o)})});Ut.displayName="EnumCell";import{forwardRef as cu}from"react";import{jsx as pu}from"react/jsx-runtime";var tt=cu((e,a)=>{let{containerProps:t,value:o,...r}=e;return pu(X,{...r,...t,ref:a,children:JSON.stringify(o,null,2)})});tt.displayName="JSONCell";import{forwardRef as mu}from"react";import{jsx as rr}from"react/jsx-runtime";var Ht=mu((e,a)=>{let{containerProps:t,...o}=e;return rr(X,{...o,...t,ref:a,children:rr("code",{className:"ps-text-muted-foreground/60",children:"NULL"})})});Ht.displayName="NullCell";import{forwardRef as gu}from"react";import{jsx as sr}from"react/jsx-runtime";var zt=gu((e,a)=>{let{containerProps:t,value:o,...r}=e;return sr(X,{...r,...t,ref:a,children:sr("div",{"data-cell-type":"numeric",children:o===null?"NULL":String(o)})})});zt.displayName="NumericCell";import{forwardRef as xu}from"react";import{jsx as Lu}from"react/jsx-runtime";var ot=xu((e,a)=>{let{containerProps:t,value:o,...r}=e;return Lu(X,{...r,...t,ref:a,children:String(o)})});ot.displayName="RawCell";import{forwardRef as Cu}from"react";import{jsx as hu}from"react/jsx-runtime";var Gt=Cu((e,a)=>{let{containerProps:t,value:o,...r}=e;return hu(X,{...r,...t,ref:a,children:String(o)})});Gt.displayName="TimeCell";import{jsx as de}from"react/jsx-runtime";function rt({cell:e,column:a,props:t}){let o=e.getValue();if(o===void 0)return de(Da,{containerProps:t});if(o===null)return de(Ht,{containerProps:t});let{group:r,options:l,isArray:s}=a.datatype;if(r==="json"||s)return de(tt,{containerProps:t,value:o});if(r==="string")return de(ot,{containerProps:t,value:o});if(r==="enum")return de(Ut,{containerProps:t,value:o,options:l});if(r==="boolean")return de(qt,{containerProps:t,value:o});if(r==="datetime")return de(Et,{containerProps:t,value:o});if(r==="time")return de(Gt,{containerProps:t,value:o});if(r==="numeric")return de(zt,{containerProps:t,value:o});if(r==="raw")return Iu(o)?de(tt,{containerProps:t,value:o}):de(ot,{containerProps:t,value:o});throw new Error(`Datatype group "${r}" was not handled in '/cell/get-cell.tsx'`)}import{forwardRef as Su}from"react";import*as Aa from"@radix-ui/react-checkbox";import*as lr from"react";import{jsx as Vt}from"react/jsx-runtime";var Fa=lr.forwardRef(({className:e,...a},t)=>Vt(Aa.Root,{ref:t,className:c("ps-peer ps-h-4 ps-w-4 ps-shrink-0 ps-rounded-sm ps-border ps-border-primary ps-shadow focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=checked]:ps-text-primary-foreground",e),...a,children:Vt(Aa.Indicator,{className:c("ps-flex ps-items-center ps-justify-center ps-text-current"),children:Vt(se,{className:"ps-h-4 ps-w-4"})})}));Fa.displayName=Aa.Root.displayName;import{jsx as Wt}from"react/jsx-runtime";var Kt=Su((e,a)=>{let{table:t,readonly:o,className:r,style:l,...s}=e;return Wt("div",{ref:a,className:r,style:l,...s,children:Wt("div",{className:"ps-flex ps-items-center ps-justify-center ps-w-full",children:Wt(Fa,{checked:t.getIsAllRowsSelected(),onCheckedChange:u=>t.toggleAllRowsSelected(!!u),disabled:o})})})});Kt.displayName="SelectHeaderCell";import{forwardRef as wu}from"react";import{Fragment as bu,jsx as Xt}from"react/jsx-runtime";function ur(e){let{children:a,className:t,ref:o,style:r,isHeader:l=!1,...s}=e,u=c("ps-flex ps-items-center ps-justify-center ps-p-0 ps-border-r ps-border-b ps-border-table-border ps-w-full ps-px-[var(--studio-cell-spacing)] ps-leading-[var(--studio-cell-height)] ps-h-[var(--studio-cell-height)]");return Xt(bu,{children:l?Xt(Ke,{...s,className:c(u,"ps-h-10 ps-bg-table-head ps-z-30 ps-sticky ps-top-0 ps-left-0",t),ref:o,children:a}):Xt(Ue,{...s,className:c(u,"ps-z-10 ps-h-[39px]",t),ref:o,style:r,children:a})})}import{jsx as dr}from"react/jsx-runtime";var _t=wu((e,a)=>{let{row:t,readonly:o,className:r,style:l,...s}=e;return dr(ur,{ref:a,className:r,style:l,...s,children:dr(Fa,{checked:t.getIsSelected(),disabled:!t.getCanSelect()||o,onCheckedChange:t.getToggleSelectedHandler()})})});_t.displayName="SelectRowCell";import*as Pe from"@radix-ui/react-popover";import*as _ from"react";import{jsx as Ba}from"react/jsx-runtime";var nr=_.createContext(null),Qt=({children:e,...a})=>{let[t,o]=_.useState(!1);return Ba(nr.Provider,{value:{open:t,setOpen:o},children:Ba(Pe.Root,{open:t,onOpenChange:o,...a,children:e})})};Qt.displayName="PopoverCell";var Zt=_.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let l=_.useRef(null);return Ba(Pe.Trigger,{ref:s=>{typeof r=="function"?r(s):r&&(r.current=s),l.current=s},className:c("w-full h-full cursor-pointer",t),...o,children:e})});Zt.displayName="PopoverCellTrigger";var Jt=_.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ba(Pe.Portal,{children:Ba(Pe.Content,{ref:r,align:a,sideOffset:t,className:c("ps-flex ps-flex-col ps-gap-2 ps-z-50 ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md ps-outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),onEscapeKeyDown:l=>l.preventDefault(),...o})}));Jt.displayName=Pe.Content.displayName;function j(e){let a=_.useContext(nr),t=_.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onSave&&e.onSave(),a&&a.setOpen(!1)},[e.onSave,a]),o=_.useCallback(()=>{e.readonly&&a?.setOpen(!1),e.onCancel&&e.onCancel(),a&&a.setOpen(!1)},[e.onCancel,a]);return _.useEffect(()=>{let r=l=>{(l.key==="Enter"||l.key==="Return")&&!l.shiftKey?t():l.key==="Escape"&&o()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[t,o]),{handleSave:t,handleCancel:o}}import{jsx as ir,jsxs as yu}from"react/jsx-runtime";function st(e){let{cellComponent:a,inputComponent:t}=e;return yu(Qt,{children:[ir(Zt,{asChild:!0,children:a}),ir(Jt,{align:"start",alignOffset:-1,className:c("ps-rounded-none ps-bg-muted","ps-p-0 ps-z-30 ps-gap-0 ps-border-primary","ps-w-[calc(var(--radix-popover-trigger-width)_+_1px)] ps-max-w-72 ps-min-w-72"),sideOffset:-40,children:t})]})}import{closestCenter as Nu,DndContext as Ou,DragOverlay as qu,KeyboardSensor as Eu,PointerSensor as Uu,useSensor as xr,useSensors as Hu}from"@dnd-kit/core";import{arrayMove as zu,SortableContext as Gu,sortableKeyboardCoordinates as Vu,useSortable as Wu,verticalListSortingStrategy as Ku}from"@dnd-kit/sortable";import{CSS as Xu}from"@dnd-kit/utilities";import{motion as jt}from"motion/react";import{AnimateNumber as _u}from"motion-plus/react";import{useMemo as Qu,useState as Yt}from"react";import{Fragment as Zu}from"react/jsx-runtime";import{createPortal as Ju}from"react-dom";import Lr from"short-uuid";function fr(e,a,t){let o=e?.datatype.group;if(o===void 0)return"";if(a==="is"||a==="is not")return t.toLowerCase()==="null"?null:t;if(o==="boolean")return t==="true";if(o==="datetime"||o==="enum"||o==="raw"||o==="string"||o==="time")return t;if(o==="json")try{return JSON.parse(t)}catch{return t}return o==="numeric"?t===""?null:Number(t):t}function cr(e,a,t){let o=e?.datatype.group;if(a&&(a==="is"||a==="is not"))return t===null?"null":String(t);if(o===void 0||t==null)return"";if(o==="boolean"||o==="datetime"||o==="enum"||o==="numeric"||o==="raw"||o==="string"||o==="time")return String(t);if(o==="json"){if(t==="")return"";try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}import*as k from"@radix-ui/react-dropdown-menu";import*as ke from"react";import{jsx as Y,jsxs as $t}from"react/jsx-runtime";var lt=k.Root,ut=k.Trigger;var vu=ke.forwardRef(({className:e,inset:a,children:t,...o},r)=>$t(k.SubTrigger,{ref:r,className:c("ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none focus:ps-bg-accent data-[state=open]:ps-bg-accent [&_svg]:ps-pointer-events-none [&_svg]:ps-size-4 [&_svg]:ps-shrink-0",a&&"ps-pl-8",e),...o,children:[t,Y(le,{className:"ps-ml-auto"})]}));vu.displayName=k.SubTrigger.displayName;var Pu=ke.forwardRef(({className:e,...a},t)=>Y(k.SubContent,{ref:t,className:c("ps-z-50 ps-min-w-[8rem] ps-overflow-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-lg data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...a}));Pu.displayName=k.SubContent.displayName;var Na=ke.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Y(k.Portal,{children:Y(k.Content,{ref:o,sideOffset:a,className:c("ps-z-50 ps-max-h-[var(--radix-dropdown-menu-content-available-height)] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-p-1 ps-text-popover-foreground ps-shadow-md","data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-dropdown-menu-content-transform-origin]",e),...t})}));Na.displayName=k.Content.displayName;var dt=ke.forwardRef(({className:e,inset:a,...t},o)=>Y(k.Item,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-gap-2 ps-rounded-sm ps-px-2 ps-py-1.5 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50 [&>svg]:ps-size-4 [&>svg]:ps-shrink-0",a&&"ps-pl-8",e),...t}));dt.displayName=k.Item.displayName;var ku=ke.forwardRef(({className:e,children:a,checked:t,...o},r)=>$t(k.CheckboxItem,{ref:r,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),checked:t,...o,children:[Y("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Y(k.ItemIndicator,{children:Y(se,{className:"ps-h-4 ps-w-4"})})}),a]}));ku.displayName=k.CheckboxItem.displayName;var Ru=ke.forwardRef(({className:e,children:a,...t},o)=>$t(k.RadioItem,{ref:o,className:c("ps-relative ps-flex ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-8 ps-pr-2 ps-text-sm ps-outline-none ps-transition-colors focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[Y("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Y(k.ItemIndicator,{children:Y(Ve,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));Ru.displayName=k.RadioItem.displayName;var Mu=ke.forwardRef(({className:e,inset:a,...t},o)=>Y(k.Label,{ref:o,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",a&&"ps-pl-8",e),...t}));Mu.displayName=k.Label.displayName;var Tu=ke.forwardRef(({className:e,...a},t)=>Y(k.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Tu.displayName=k.Separator.displayName;var Du=({className:e,...a})=>Y("span",{className:c("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});Du.displayName="DropdownMenuShortcut";import*as pr from"react";import{jsx as Au}from"react/jsx-runtime";var ne=pr.forwardRef(({className:e,type:a,...t},o)=>Au("input",{type:a,className:c("ps-flex ps-h-9 ps-w-full ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-1 ps-shadow-sm ps-transition-colors file:ps-border-0 file:ps-bg-transparent file:ps-text-sm file:ps-font-medium file:ps-text-foreground placeholder:ps-text-muted-foreground focus-visible:ps-outline-none focus-visible:ps-ring-1 focus-visible:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50",e),ref:o,...t}));ne.displayName="Input";import*as R from"@radix-ui/react-select";import*as He from"react";import{jsx as Q,jsxs as Oa}from"react/jsx-runtime";var oa=R.Root;var ra=R.Value,Xe=He.forwardRef(({className:e,children:a,label:t,...o},r)=>Oa(R.Trigger,{ref:r,className:c("ps-flex ps-h-9 ps-w-full ps-items-center ps-justify-between ps-whitespace-nowrap ps-rounded-md ps-border ps-border-input ps-bg-transparent ps-px-3 ps-py-2 ps-text-sm ps-shadow-sm ps-ring-offset-background data-[placeholder]:ps-text-muted-foreground focus:ps-outline-none focus:ps-ring-1 focus:ps-ring-ring disabled:ps-cursor-not-allowed disabled:ps-opacity-50 [&>span]:ps-line-clamp-1",e),...o,children:[Oa("div",{className:"ps-flex ps-items-center ps-gap-1",children:[t&&Oa("span",{className:"ps-text-muted-foreground",children:[t,":"]}),a]}),Q(R.Icon,{asChild:!0,children:Q(ce,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));Xe.displayName=R.Trigger.displayName;var mr=He.forwardRef(({className:e,...a},t)=>Q(R.ScrollUpButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:Q(ma,{className:"ps-h-4 ps-w-4"})}));mr.displayName=R.ScrollUpButton.displayName;var gr=He.forwardRef(({className:e,...a},t)=>Q(R.ScrollDownButton,{ref:t,className:c("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:Q(ce,{className:"ps-h-4 ps-w-4"})}));gr.displayName=R.ScrollDownButton.displayName;var _e=He.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>Q(R.Portal,{children:Oa(R.Content,{ref:r,className:c("ps-relative ps-z-50 ps-max-h-[--radix-select-content-available-height] ps-min-w-[8rem] ps-overflow-y-auto ps-overflow-x-hidden ps-rounded-md ps-border ps-bg-popover ps-text-popover-foreground ps-shadow-md data-[state=open]:ps-animate-in data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=open]:ps-fade-in-0 data-[state=closed]:ps-zoom-out-95 data-[state=open]:ps-zoom-in-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:ps-translate-y-1 data-[side=left]:ps--translate-x-1 data-[side=right]:ps-translate-x-1 data-[side=top]:ps--translate-y-1",e),position:t,...o,children:[Q(mr,{}),Q(R.Viewport,{className:c("ps-p-1",t==="popper"&&"ps-h-[var(--radix-select-trigger-height)] ps-w-full ps-min-w-[var(--radix-select-trigger-width)]"),children:a}),Q(gr,{})]})}));_e.displayName=R.Content.displayName;var Fu=He.forwardRef(({className:e,...a},t)=>Q(R.Label,{ref:t,className:c("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));Fu.displayName=R.Label.displayName;var q=He.forwardRef(({className:e,children:a,...t},o)=>Oa(R.Item,{ref:o,className:c("ps-relative ps-flex ps-w-full ps-cursor-default ps-select-none ps-items-center ps-rounded-sm ps-py-1.5 ps-pl-2 ps-pr-8 ps-text-sm ps-outline-none focus:ps-bg-accent focus:ps-text-accent-foreground data-[disabled]:ps-pointer-events-none data-[disabled]:ps-opacity-50",e),...t,children:[Q("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:Q(R.ItemIndicator,{children:Q(se,{className:"ps-h-4 ps-w-4"})})}),Q(R.ItemText,{children:a})]}));q.displayName=R.Item.displayName;var Bu=He.forwardRef(({className:e,...a},t)=>Q(R.Separator,{ref:t,className:c("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Bu.displayName=R.Separator.displayName;import{Fragment as ed,jsx as I,jsxs as E}from"react/jsx-runtime";var Cr=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>E(oa,{value:e,onValueChange:a,disabled:t,children:[I(Xe,{className:o,children:I(ra,{placeholder:"Logic"})}),E(_e,{children:[I(q,{value:"and",children:I("div",{className:"ps-font-semibold",children:"AND"})}),I(q,{value:"or",children:I("div",{className:"ps-font-semibold",children:"OR"})})]})]}),$u=({activeId:e,items:a,table:t})=>{let o=a.find(u=>u.id===e);if(!o)return null;let r="and",l=!1,s=a.findIndex(u=>u.id===e);if(s>0){let u=a[s-1];u&&(r=u.after,l=!0)}return o.kind==="ColumnFilter"?I(hr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):I(eo,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},ju=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:l,activeDragId:s,onDragStart:u,onDragEndSignal:n})=>{let d=Qu(()=>e.map(m=>m.id),[e]),i=Hu(xr(Uu,{activationConstraint:{distance:8}}),xr(Eu,{coordinateGetter:Vu}));return E(Ou,{sensors:i,collisionDetection:Nu,onDragStart:u,onDragEnd:m=>{let{active:L,over:h}=m;if(h&&L.id!==h.id){let p=e.findIndex(C=>C.id===L.id),b=e.findIndex(C=>C.id===h.id);p!==-1&&b!==-1&&l(p,b)}n()},children:[I(Gu,{items:d,strategy:Ku,children:e.map((m,L)=>{let h=!1,p,b,C=!1;if(L>0){h=!0;let g=e[L-1];p=g.after,b=T=>{let H={...g,after:T};o(L-1,H)},C=L-1===e.length-1}return I(Yu,{filter:m,onUpdate:g=>o(L,g),onDelete:()=>r(L),parentDndId:a,table:t,showLeadingOperator:h,leadingOperatorValue:p,onLeadingOperatorChange:b,isLeadingOperatorTargetLast:C},m.id)})}),Ju(I(qu,{children:s?I("div",{className:"ps-opacity-80",children:I($u,{activeId:s,items:e,table:t})}):null}),document.body)]})},Yu=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})=>{let{attributes:d,listeners:i,setNodeRef:x,transform:m,transition:L,isDragging:h}=Wu({id:e.id,data:{type:e.kind,parentId:o}}),p={transform:Xu.Transform.toString(m),transition:L,opacity:h?.5:1};return I("div",{ref:x,style:p,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?I(hr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...d,...i},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n}):I(eo,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...d,...i},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})})},hr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})=>{let d=h=>{a({...e,column:h})},i=h=>{a({...e,operator:h})},x=h=>{let p=h.target.value,b=r.columns[e.column];if(b!==void 0){let C=fr(b,e.operator,p);a({...e,value:C})}},[m,L]=Yt(cr(r.columns[e.column],e.operator,e.value));return E(jt.div,{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{duration:.12}},children:[E("div",{className:"ps-flex ps-items-center ps-gap-2 ps-w-full",children:[I("div",{...o,className:"ps-cursor-grab",children:I(Ia,{className:"ps-text-gray-500",size:16})}),E("div",{className:"ps-flex ps-items-center ps-gap-2",children:[l&&u?I(Cr,{value:s,onValueChange:u,disabled:n}):null,E(oa,{value:e.column,onValueChange:d,children:[I(Xe,{className:"ps-w-28 ps-text-xs ps-h-8",children:I(ra,{placeholder:"Select column"})}),I(_e,{children:Object.keys(r.columns).map(h=>I(q,{value:h,children:h},h))})]}),E(oa,{value:e.operator,onValueChange:h=>i(h),children:[I(Xe,{className:"ps-w-20 ps-text-xs ps-h-8",children:I(ra,{placeholder:"Operator"})}),E(_e,{children:[I(q,{value:"=",children:"="}),I(q,{value:"!=",children:"!="}),I(q,{value:">",children:">"}),I(q,{value:">=",children:">="}),I(q,{value:"<",children:"<"}),I(q,{value:"<=",children:"<="}),I(q,{value:"is",children:"is"}),I(q,{value:"is not",children:"is not"}),I(q,{value:"like",children:"like"}),I(q,{value:"not like",children:"not like"}),I(q,{value:"ilike",children:"ilike"}),I(q,{value:"not ilike",children:"not ilike"})]})]}),I(ne,{value:m,onChange:h=>{L(h.target.value),x(h)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),I("div",{className:"ps-flex ps-items-center ps-gap-2",children:I(A,{variant:"ghost",size:"xs",onClick:t,children:I(qe,{size:14})})})]})},eo=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:l,showLeadingOperator:s,leadingOperatorValue:u,onLeadingOperatorChange:n,isLeadingOperatorTargetLast:d})=>{let[i,x]=Yt(!0),[m,L]=Yt(null),h=()=>{let z={id:Lr.generate(),kind:"ColumnFilter",column:Object.keys(l.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,z]})},p=()=>{let z={id:Lr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,z]})},b=(z,Z)=>{let V=[...e.filters];V[z]=Z,a({...e,filters:V})},C=z=>{let Z=[...e.filters];Z.splice(z,1),a({...e,filters:Z})},g=z=>{L(z.active.id)},T=()=>{L(null)},H=(z,Z)=>{if(z===Z)return;let V=zu(e.filters,z,Z);a({...e,filters:V})},oe=()=>i?!e.filters||e.filters.length===0?I("div",{className:"ps-pl-6 ps-text-sm ps-text-neutral-500 ps-italic",children:"This group is empty. Add a filter or another group."}):I(jt.div,{transition:{layout:{duration:.12}},children:I("div",{className:c("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:I(ju,{items:e.filters,parentGroupId:e.id,table:l,onUpdateItem:b,onDeleteItem:C,onReorderItems:H,activeDragId:m,onDragStart:g,onDragEndSignal:T})})}):null;return I(jt.div,{className:"ps-w-full",transition:{layout:{duration:.12}},children:E("div",{className:c("ps-flex ps-flex-col ps-w-full",i?"ps-gap-2":""),children:[E("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[E("div",{className:"ps-flex ps-items-center ps-gap-2",children:[!r&&I("div",{...o,className:"ps-cursor-grab",onClick:()=>x(!i),children:i?I(ce,{size:16}):I(le,{size:16})}),s&&n&&!r&&I("div",{className:"ps-flex ps-items-center",children:I(Cr,{value:u,onValueChange:n,disabled:d})}),E(A,{variant:"outline",size:"sm",onClick:h,className:c("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&I(Ja,{className:"ps-transition-all",children:I(_u,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),I(A,{variant:"outline",size:"sm",onClick:p,className:"ps-flex ps-items-center ps-gap-1",children:"Add Group"})]}),E("div",{className:"ps-flex ps-items-center ps-gap-2",children:[r&&E(lt,{children:[I(ut,{asChild:!0,children:I(A,{variant:"ghost",size:"sm",children:I(Be,{className:"ps-size-4"})})}),I(Na,{align:"center",className:"ps-w-full",children:e.filters.length===0?I("div",{className:"ps-p-4 ps-text-center ps-text-sm ps-text-neutral-600",children:"No filters applied yet. Add filters to preview your query."}):I("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:I(Ir,{filter:e})})})]}),!r&&I(A,{variant:"ghost",size:"xs",onClick:t,children:I(qe,{size:14})})]})]}),I("div",{className:c(r?"":"ps-ml-6"),children:oe()})]})})},Ir=({filter:e})=>{let a=0;if(e.filters.length===0)return"( )";let t=e.filters.map((o,r)=>{let l,s=e.filters.length-1===r;if(a===-1&&(a=0),o.after==="and"&&!s&&(a+=1),a&&(s||o.after==="or")&&(a=-1),o.kind==="ColumnFilter"){let{column:u,operator:n}=o;l=E(ed,{children:[E("span",{children:[" ",u," "]}),E("span",{children:[" ",n," "]}),I("span",{children:" ? "})]})}else l=I(Ir,{filter:o});return E(Zu,{children:[a===1?I("span",{className:"ps-font-semibold",children:"("}):"",l,a===-1?I("span",{className:"ps-font-semibold",children:")"}):"",!s&&E("span",{className:"ps-uppercase ps-text-blue-500 ps-font-semibold",children:[" ",o.after," "]})]},o.id)});return I("span",{children:t})};function Sr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return E("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[I(eo,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),I(A,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as xd,MouseSensor as Ld,useSensor as Cd,useSensors as hd}from"@dnd-kit/core";import{arrayMove as Id,horizontalListSortingStrategy as Sd,SortableContext as bd,useSortable as wd}from"@dnd-kit/sortable";import{CSS as yd}from"@dnd-kit/utilities";import{getCoreRowModel as vd,useReactTable as Pd}from"@tanstack/react-table";import*as Re from"react";import S from"react";function ze(){return ze=Object.assign?Object.assign.bind():function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var o in t)({}).hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},ze.apply(null,arguments)}var ad=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function td(e,a){let[t,o]=S.useState();S.useEffect(()=>{let l=ad(e);o(typeof l>"u"||l===null?typeof a=="function"?a():a:l)},[a,e]);let r=S.useCallback(l=>{o(s=>{let u=l;typeof l=="function"&&(u=l(s));try{localStorage.setItem(e,JSON.stringify(u))}catch{}return u})},[e]);return[t,r]}var me={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},yr=S.createContext(me);function vr(e){let{theme:a,...t}=e;return S.createElement(yr.Provider,ze({value:a},t))}function od(){return S.useContext(yr)}function rd(e){let[a,t]=S.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return S.useEffect(()=>{if(typeof window<"u"){if(!window.matchMedia)return;let o=window.matchMedia(e),r=l=>{let{matches:s}=l;return t(s)};return o.addListener(r),()=>{o.removeListener(r)}}},[a,e,t]),a}var sd=typeof window>"u";function ie(e,a,t){return t===void 0&&(t={}),S.forwardRef((o,r)=>{let{style:l,...s}=o,u=od(),n=Object.entries(t).reduce((d,i)=>{let[x,m]=i;return rd(x)?{...d,...typeof m=="function"?m(s,u):m}:d},{});return S.createElement(e,{...s,style:{...typeof a=="function"?a(s,u):a,...l,...n},ref:r})})}function ld(){let e=S.useRef(!1),a=S.useCallback(()=>e.current,[]);return S[sd?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var ud=ie("div",(e,a)=>({fontSize:"clamp(12px, 1.5vw, 14px)",fontFamily:"sans-serif",display:"flex",backgroundColor:a.background,color:a.foreground}),{"(max-width: 700px)":{flexDirection:"column"},"(max-width: 600px)":{fontSize:".9em"}});ie("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var dd=ie("button",(e,a)=>({appearance:"none",fontSize:".9em",fontWeight:"bold",background:a.gray,border:"0",borderRadius:".3em",color:"white",padding:".5em",opacity:e.disabled?".5":void 0,cursor:"pointer"}));ie("code",{fontSize:".9em"});ie("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));ie("select",(e,a)=>({display:"inline-block",fontSize:".9em",fontFamily:"sans-serif",fontWeight:"normal",lineHeight:"1.3",padding:".3em 1.5em .3em .5em",height:"auto",border:0,borderRadius:".2em",appearance:"none",WebkitAppearance:"none",backgroundColor:a.inputBackgroundColor,backgroundImage:`url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>")`,backgroundRepeat:"no-repeat",backgroundPosition:"right .55em center",backgroundSize:".65em auto, 100%",color:a.inputTextColor}),{"(max-width: 500px)":{display:"none"}});var br=ie("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),nt=ie("span",{cursor:"pointer",color:"white"}),nd=ie("span",(e,a)=>({color:a.danger})),ao=ie("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),id=ie("span",{color:"grey",fontSize:".7rem"}),wr=e=>{let{expanded:a,style:t={},...o}=e;return S.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},fd=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:l,type:s,expanded:u,toggle:n,pageSize:d,renderer:i}=e,[x,m]=S.useState(void 0),[L,h]=S.useState([]),p=()=>{m(o())};return S.createElement(br,{key:t},l!=null&&l.length?S.createElement(S.Fragment,null,S.createElement(nt,{onClick:()=>n()},S.createElement(wr,{expanded:u})," ",t," ",S.createElement(id,null,String(s).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),u?l.length===1?S.createElement(ao,null,r.map(b=>a(b))):S.createElement(ao,null,l.map((b,C)=>S.createElement("div",{key:C},S.createElement(br,null,S.createElement(nt,{onClick:()=>h(g=>g.includes(C)?g.filter(T=>T!==C):[...g,C])},S.createElement(wr,{expanded:u})," [",C*d," ..."," ",C*d+d-1,"]"),L.includes(C)?S.createElement(ao,null,b.map(g=>a(g))):null)))):null):s==="function"?S.createElement(S.Fragment,null,S.createElement(ge,{renderer:i,label:S.createElement("button",{onClick:p},S.createElement(nt,null,t)," \u{1F504}"," "),value:x,defaultExpanded:{}})):S.createElement(S.Fragment,null,S.createElement(nt,null,t,":")," ",S.createElement(nd,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function ge(e){let{value:a,defaultExpanded:t,renderer:o=fd,pageSize:r=100,depth:l=0,...s}=e,[u,n]=S.useState(t),d=p=>{n(b=>typeof p<"u"?p:!b)},i=[],x=typeof a,m,L=[],h=p=>{let b=i.concat(p.label),C=t===!0?{[p.label]:!0}:t?.[p.label];return{...p,subPath:p,path:b,depth:l+1,defaultExpanded:C}};if(Array.isArray(a)?(x="array",m=a.map((p,b)=>h({label:b,value:p}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(x="Iterable",m=Array.from(a,(p,b)=>h({label:b,value:p}))):typeof a=="function"?x="function":typeof a=="object"&&a!==null&&(x="object",m=Object.entries(a).map(p=>{let[b,C]=p;return h({label:b,value:C})})),m){let p=0;for(;p<m.length;)L.push(m.slice(p,p+r)),p=p+r}return o({handleEntry:p=>S.createElement(ge,ze({key:p.label,renderer:o},s,p)),type:x,subEntries:m,subEntryPages:L,depth:l,value:a,path:i,expanded:u,toggle:d,pageSize:r,...s})}function Pr(e){return Re.createElement("svg",ze({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),Re.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},Re.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},Re.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},Re.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},Re.createElement("path",{d:"M39.7239712,51.3436237 C36.631224,36.362877 35.9675112,24.8727722 37.9666331,16.5293551 C39.1555965,11.5671678 41.3293088,7.51908462 44.6346064,4.59846305 C48.1241394,1.51504777 52.5360327,0.00201216606 57.493257,0.00201216606 C65.6712013,0.00201216606 74.2682602,3.72732143 83.4557246,10.8044264 C87.2031203,13.6910458 91.0924366,17.170411 95.1316515,21.2444746 C95.4531404,20.8310265 95.8165416,20.4410453 96.2214301,20.0806152 C107.64098,9.91497158 117.255245,3.59892716 125.478408,1.16365068 C130.367899,-0.284364005 134.958526,-0.422317978 139.138936,0.983031021 C143.551631,2.46646844 147.06766,5.53294888 149.548314,9.82810912 C153.642288,16.9166735 154.721918,26.2310983 153.195595,37.7320243 C152.573451,42.4199112 151.50985,47.5263831 150.007094,53.0593153 C150.574045,53.1277086 151.142416,53.2532808 151.705041,53.4395297 C166.193932,58.2358678 176.453582,63.3937462 182.665021,69.2882839 C186.360669,72.7953831 188.773972,76.6998434 189.646365,81.0218204 C190.567176,85.5836746 189.669313,90.1593316 187.191548,94.4512967 C183.105211,101.529614 175.591643,107.11221 164.887587,111.534031 C160.589552,113.309539 155.726579,114.917559 150.293259,116.363748 C150.541176,116.92292 150.733521,117.516759 150.862138,118.139758 C153.954886,133.120505 154.618598,144.61061 152.619477,152.954027 C151.430513,157.916214 149.256801,161.964297 145.951503,164.884919 C142.46197,167.968334 138.050077,169.48137 133.092853,169.48137 C124.914908,169.48137 116.31785,165.756061 107.130385,158.678956 C103.343104,155.761613 99.4108655,152.238839 95.3254337,148.108619 C94.9050753,148.765474 94.3889681,149.376011 93.7785699,149.919385 C82.3590198,160.085028 72.744755,166.401073 64.5215915,168.836349 C59.6321009,170.284364 55.0414736,170.422318 50.8610636,169.016969 C46.4483686,167.533532 42.9323404,164.467051 40.4516862,160.171891 C36.3577116,153.083327 35.2780823,143.768902 36.8044053,132.267976 C37.449038,127.410634 38.56762,122.103898 40.1575891,116.339009 C39.5361041,116.276104 38.9120754,116.144816 38.2949591,115.940529 C23.8060684,111.144191 13.5464184,105.986312 7.33497892,100.091775 C3.63933121,96.5846754 1.22602752,92.6802151 0.353635235,88.3582381 C-0.567176333,83.7963839 0.330686581,79.2207269 2.80845236,74.9287618 C6.89478863,67.8504443 14.4083565,62.2678481 25.1124133,57.8460273 C29.5385143,56.0176154 34.5637208,54.366822 40.1939394,52.8874674 C39.9933393,52.3969171 39.8349374,51.8811235 39.7239712,51.3436237 Z",id:"Path",fill:"#002C4B",fillRule:"nonzero",transform:"translate(95.000000, 85.000000) scale(-1, 1) translate(-95.000000, -85.000000) "}),Re.createElement("path",{d:"M91.735,110 L91.735,116 L80.6322051,116 C78.8411286,116 77.1868614,115.041975 76.2954489,113.488483 L74.294,110 L91.735,110 Z M116.181,110 L114.180256,113.488483 C113.288844,115.041975 111.634576,116 109.8435,116 L98.735,116 L98.735,110 L116.181,110 Z M91.735,96 L91.735,103 L70.277,103 L66.26,96 L91.735,96 Z M124.215,96 L120.198,103 L98.735,103 L98.735,96 L124.215,96 Z M91.735,82 L91.735,89 L62.244,89 L61.6632438,87.9884826 C60.7789187,86.4473417 60.7789187,84.5526583 61.6632438,83.0115174 L62.243,82 L91.735,82 Z M128.232,82 L128.812461,83.0115174 C129.696786,84.5526583 129.696786,86.4473417 128.812461,87.9884826 L128.231,89 L98.735,89 L98.735,82 L128.232,82 Z M91.735,68 L91.735,75 L66.26,75 L70.277,68 L91.735,68 Z M120.198,68 L124.215,75 L98.735,75 L98.735,68 L120.198,68 Z M91.735,55 L91.735,61 L74.293,61 L76.2954489,57.5115174 C77.1868614,55.958025 78.8411286,55 80.6322051,55 L91.735,55 Z M109.8435,55 C111.634576,55 113.288844,55.958025 114.180256,57.5115174 L116.182,61 L98.735,61 L98.735,55 L109.8435,55 Z",id:"Polygon-2",fill:"#FFD94C"}),Re.createElement("path",{d:"M54.8601729,98.3577578 C56.1715224,97.6082856 57.8360246,98.0746014 58.5779424,99.3993034 L58.5779424,99.3993034 L59.0525843,100.24352 C62.8563392,106.982993 66.8190116,113.380176 70.9406016,119.435068 C75.8078808,126.585427 81.28184,133.82411 87.3624792,141.151115 C88.3168778,142.30114 88.1849437,144.011176 87.065686,144.997937 L87.065686,144.997937 L86.4542085,145.534625 C66.3465389,163.103314 53.2778188,166.612552 47.2480482,156.062341 C41.3500652,145.742717 43.4844915,126.982888 53.6513274,99.7828526 C53.876818,99.1795821 54.3045861,98.675291 54.8601729,98.3577578 Z M140.534177,119.041504 C141.986131,118.785177 143.375496,119.742138 143.65963,121.194242 L143.65963,121.194242 L143.812815,121.986376 C148.782365,147.995459 145.283348,161 133.315764,161 C121.609745,161 106.708724,149.909007 88.6127018,127.727022 C88.2113495,127.235047 87.9945723,126.617371 88,125.981509 C88.013158,124.480686 89.2357854,123.274651 90.730918,123.287756 L90.730918,123.287756 L91.6846544,123.294531 C99.3056979,123.335994 106.714387,123.071591 113.910723,122.501323 C122.409039,121.82788 131.283523,120.674607 140.534177,119.041504 Z M147.408726,63.8119663 C147.932139,62.4026903 149.508386,61.6634537 150.954581,62.149012 L150.954581,62.149012 L151.742552,62.4154854 C177.583763,71.217922 187.402356,80.8916805 181.198332,91.4367609 C175.129904,101.751366 157.484347,109.260339 128.26166,113.963678 C127.613529,114.067994 126.948643,113.945969 126.382735,113.618843 C125.047025,112.846729 124.602046,111.158214 125.388848,109.847438 L125.388848,109.847438 L125.889328,109.0105 C129.877183,102.31633 133.481358,95.6542621 136.701854,89.0242957 C140.50501,81.1948179 144.073967,72.7907081 147.408726,63.8119663 Z M61.7383398,56.0363218 C62.3864708,55.9320063 63.0513565,56.0540315 63.6172646,56.3811573 C64.9529754,57.153271 65.3979538,58.8417862 64.6111517,60.1525615 L64.6111517,60.1525615 L64.1106718,60.9895001 C60.1228168,67.6836699 56.5186416,74.3457379 53.2981462,80.9757043 C49.49499,88.8051821 45.9260328,97.2092919 42.5912744,106.188034 C42.0678608,107.59731 40.4916142,108.336546 39.045419,107.850988 L39.045419,107.850988 L38.2574475,107.584515 C12.4162372,98.782078 2.59764398,89.1083195 8.80166786,78.5632391 C14.8700957,68.2486335 32.515653,60.7396611 61.7383398,56.0363218 Z M103.545792,24.4653746 C123.653461,6.89668641 136.722181,3.38744778 142.751952,13.9376587 C148.649935,24.2572826 146.515508,43.0171122 136.348673,70.2171474 C136.123182,70.8204179 135.695414,71.324709 135.139827,71.6422422 C133.828478,72.3917144 132.163975,71.9253986 131.422058,70.6006966 L131.422058,70.6006966 L130.947416,69.7564798 C127.143661,63.0170065 123.180988,56.6198239 119.059398,50.564932 C114.192119,43.4145727 108.71816,36.1758903 102.637521,28.8488847 C101.683122,27.6988602 101.815056,25.9888243 102.934314,25.0020629 L102.934314,25.0020629 Z M57.6842361,8 C69.3902551,8 84.2912758,19.0909926 102.387298,41.2729777 C102.788651,41.7649527 103.005428,42.3826288 103,43.0184911 C102.986842,44.5193144 101.764215,45.7253489 100.269082,45.7122445 L100.269082,45.7122445 L99.3153456,45.7054689 C91.6943021,45.6640063 84.2856126,45.9284091 77.0892772,46.4986773 C68.5909612,47.17212 59.7164767,48.325393 50.4658235,49.9584962 C49.0138691,50.2148231 47.6245044,49.2578618 47.3403697,47.805758 L47.3403697,47.805758 L47.1871846,47.0136235 C42.2176347,21.0045412 45.7166519,8 57.6842361,8 Z",id:"Combined-Shape",fill:"#FF4154"}))))))}function kr(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:l="footer"}=e,s=S.useRef(null),u=S.useRef(null),[n,d]=td("reactTableDevtoolsOpen",a),i=ld(),{style:x={},...m}=o,{style:L={},onClick:h,...p}=r;return i()?S.createElement(l,{ref:s,className:"ReactTableDevtools"},S.createElement(vr,{theme:me},n?S.createElement(cd,ze({ref:u},m,{table:t,isOpen:n,setIsOpen:d,style:{maxHeight:"80vh",width:"100%",...x}})):S.createElement("button",ze({type:"button"},p,{"aria-label":"Open React Table Devtools",onClick:b=>{d(!0),h&&h(b)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...L}}),S.createElement(Pr,{"aria-hidden":!0})))):null}var cd=S.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:l,...s}=a;return S.createElement(vr,{theme:me},S.createElement(ud,ze({ref:t,className:"ReactTableDevtoolsPanel"},s),S.createElement("style",{dangerouslySetInnerHTML:{__html:`
2
2
  .ReactTableDevtoolsPanel * {
3
3
  scrollbar-color: ${me.backgroundAlt} ${me.gray};
4
4
  }
@@ -17,7 +17,7 @@ import"../chunk-IAKOOX7B.js";import{D as ea}from"../chunk-OGMDOPWW.js";import{B
17
17
  border-radius: .5em;
18
18
  border: 3px solid ${me.backgroundAlt};
19
19
  }
20
- `}}),S.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${me.grayAlt}`,display:"flex",flexDirection:"column"}},S.createElement("div",{style:{padding:".5em",background:me.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},S.createElement(Pr,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>l(!1)}),S.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",S.createElement("span",{style:{fontWeight:100}},"Devtools")),S.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?S.createElement(dd,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{l(!1)}},"Close"):null)),S.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},S.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},S.createElement(ge,{label:"Instance",value:o,defaultExpanded:!1}),S.createElement("div",{style:{height:".5rem"}}),S.createElement(ge,{label:"State",value:o.getState(),defaultExpanded:!1}),S.createElement("div",{style:{height:".5rem"}}),S.createElement(ge,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),S.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},S.createElement(ge,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),S.createElement(ge,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),S.createElement(ge,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),S.createElement(ge,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),S.createElement(ge,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as kd,motion as Rd}from"motion/react";import{useEffect as Md,useMemo as Td,useState as oo}from"react";import{jsx as pd}from"react/jsx-runtime";function sa({className:e,...a}){return pd("div",{className:c("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{flexRender as md}from"@tanstack/react-table";import{AnimatePresence as gd,motion as Rr}from"motion/react";import{Fragment as to,jsx as U,jsxs as xe}from"react/jsx-runtime";function Mr(e){let{header:a,className:t}=e;return xe("div",{className:c("ps-flex ps-items-center ps-justify-between",t),children:[xe("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[U("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:a.isPlaceholder?null:U("span",{className:"ps-flex ps-min-w-0",children:U("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:md(a.column.columnDef.header,a.getContext())})})}),xe("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[U("span",{className:"ps-flex ps-items-center ps-ml-1",children:U(gd,{mode:"wait",children:a.column.getIsSorted()==="desc"?U(Rr.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:U(ya,{size:14,className:"ps-text-muted-foreground"})},"desc"):a.column.getIsSorted()==="asc"?U(Rr.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:U(va,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),a.column.getCanPin()&&a.column.id!=="select"&&xe(ut,{children:[U(dt,{asChild:!0,children:U(A,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:U(ce,{size:12})})}),xe(Na,{children:[a.column.getCanSort()&&U(nt,{onClick:()=>a.column.toggleSorting(),children:U("span",{className:"ps-flex ps-items-center ps-gap-2",children:a.column.getNextSortingOrder()==="desc"?xe(to,{children:[U(Fe,{size:16}),"Sort descending"]}):a.column.getNextSortingOrder()==="asc"?xe(to,{children:[U(ca,{size:16}),"Sort ascending"]}):xe(to,{children:[U(qe,{size:16}),"Cancel sorting"]})})}),U(nt,{onClick:()=>a.column.pin(a.column.getIsPinned()?!1:"left"),children:a.column.getIsPinned()?xe("span",{className:"ps-flex ps-items-center ps-gap-2",children:[U(Pa,{size:16}),"Unpin column"]}):xe("span",{className:"ps-flex ps-items-center ps-gap-2",children:[U(ka,{size:16}),"Pin column"]})})]})]})]})]}),a.column.getCanResize()&&U("button",{type:"button",tabIndex:0,onMouseDown:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onTouchStart:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onClick:o=>o.stopPropagation(),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),o.stopPropagation(),a.getResizeHandler()(o))},className:c("ps-absolute ps-right-0 ps-top-0 ps-h-full ps-w-px ps-cursor-col-resize ps-border ps-border-transparent hover:ps-border-table-border"),"aria-label":"Resize column"})]})}import{jsx as Tr}from"react/jsx-runtime";function Dr({className:e}){return Tr("div",{"data-loading-bar":!0,className:c("ps-h-[2px] ps-w-full ps-overflow-hidden ps-bg-table-border ps-z-50",e),children:Tr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as ee,jsxs as ft}from"react/jsx-runtime";function Ar(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return ee("div",{className:"ps-rounded-b-lg ps-overflow-clip ps-sticky ps-bottom-0 ps-left-0 ps-border-t-0 w-full ps-z-20 ps-p-0",children:ee("div",{className:"ps-flex ps-items-center ps-justify-between ps-space-x-2 ps-py-2 ps-px-2 ps-border-t ps-border-table-border ps-backdrop-blur-sm ps-bg-table-head/90",children:t==="basic"?ft("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[ee(A,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),ee(A,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):ee("div",{className:"ps-flex ps-items-center ps-space-x-2",children:ft("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[ee(A,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:ee(ga,{className:"ps-w-4 ps-h-4"})}),ee(A,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:ee(pa,{className:"ps-w-4 ps-h-4"})}),ft("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",ee(ne,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:l=>{let s=l.target.value?Number(l.target.value)-1:0;a.setPageIndex(s)}}),ft("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),ee(A,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:ee(le,{className:"ps-w-4 ps-h-4"})}),ee(A,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:ee(xa,{className:"ps-w-4 ps-h-4"})})]})})})})}function Me(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right",l=e.id==="__ps_select";return{className:c("ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",(o||r)&&"ps-sticky",(o||r)&&a==="header"&&(l?"ps-z-30":"ps-z-20"),(o||r)&&a==="cell"&&(l?"ps-z-10":"ps-z-0"),o&&"ps-shadow-[2px_0_5px_-2px_rgba(0,0,0,0.1)]",r&&"ps-shadow-[-2px_0_5px_-2px_rgba(0,0,0,0.1)]"),style:{minWidth:`${e.getSize()}px`,width:`${e.getSize()}px`,left:o?`${e.getStart("left")}px`:void 0,right:r?`${e.getAfter("right")}px`:void 0,position:t?"sticky":void 0}}}import{Fragment as Fd,jsx as F,jsxs as la}from"react/jsx-runtime";var Dd=e=>{let{children:a,className:t,header:o,style:r}=e,l="disableDragging"in o.column.columnDef,{attributes:s,listeners:u,transform:d,transition:n,setNodeRef:i,isDragging:x}=wd({id:o.id}),m={...r,cursor:"grab",touchAction:"none",transform:yd.Transform.toString(d),transition:n},L=c(t,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),h=c(L,x&&"!ps-z-50 ps-border-2 ps-border-violet-500");return F(Ke,{ref:i,...s,...u,style:l?r:m,className:l?L:h,children:F("div",{className:"ps-w-full",children:a})})};function Br(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:u,pageCount:d,paginationState:n,rows:i,rowSelectionState:x,sortingState:m}=e,[L,h]=oo([]),[p,b]=oo({left:["__ps_select"],right:[]}),[C,g]=oo({}),T=Td(()=>Fr(m),[m]),H=o||r;Md(()=>{h(a.map(({accessorKey:N})=>N)),b({left:["__ps_select"],right:[]}),g({})},[a]);function oe({active:N,over:v}){v&&N.id!==v.id&&h(J=>{let M=J.indexOf(N.id),Ce=J.indexOf(v.id);return Id(J,M,Ce)})}let z=Cd(Ld,{activationConstraint:{distance:10}}),Z=hd(z),G=Pd({columnResizeMode:"onChange",columns:a,data:i,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(u&&m),getCoreRowModel:vd(),getRowId:({__ps_rowid:N})=>N,manualPagination:!0,manualSorting:!0,onColumnOrderChange:h,onColumnPinningChange:b,onColumnSizingChange:g,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:N=>u?.(v=>(typeof N=="function"&&(N=N(Fr(v))),Ad(N))),pageCount:d,state:{columnOrder:L,columnPinning:p,columnSizing:C,pagination:n,rowSelection:x,sorting:T}});return la(Fd,{children:[process.env.NODE_ENV==="production"?null:F(kr,{table:G}),la("div",{"data-studio":"content",className:"ps-flex-1 ps-w-0 ps-h-0 ps-min-w-full ps-flex ps-flex-col ps-relative",children:[F("div",{children:H&&F(Dr,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),F(xd,{sensors:Z,onDragEnd:oe,children:la(Mt,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[F(Tt,{children:G.getHeaderGroups().map(N=>F(We,{children:F(bd,{items:N.headers.filter(v=>!("disableDragging"in v.column.columnDef)).map(v=>v.id),strategy:Sd,children:N.headers.map(v=>{if(v.column.id==="__ps_select"){let J=v.column.columnDef.header;if(typeof J=="function"){let M=J(v.getContext());if(typeof M=="function"){let Ce=Me(v.column,"header");return F(Ke,{className:c(Ce.className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Ce.style,children:M({})},v.id)}return F(Ke,{className:c(Me(v.column,"header").className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Me(v.column,"header").style,children:M},v.id)}return null}return F(Dd,{header:v,table:G,...Me(v.column,"header"),children:F(Mr,{header:v})},v.id)})})},N.id))}),la(Dt,{children:[t?.(G),G.getRowModel().rows?.length?G.getRowModel().rows.map(N=>F(We,{className:c("ps-bg-table-row ps-odd:bg-table-row-odd ps-group [&:last-of-type_td]:ps-border-b-0 ps-group"),children:N.getVisibleCells().map((v,J)=>{if(typeof v.column.columnDef.cell=="function"){let M=v.column.columnDef.cell(v.getContext());return F(M,{...Me(v.column,"cell"),className:"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100"},J)}else return F(Ue,{...Me(v.column,"cell"),children:v.getValue()},v.id)})},N.id)):F(We,{children:F(Ue,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&la("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[F(sa,{className:"ps-h-4 ps-w-full"}),F(sa,{className:"ps-h-4 ps-w-4/5"}),F(sa,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!d||d<2?null:F(Ar,{table:G,variant:"numeric"}),F(kd,{mode:"wait",children:G.getRowModel().rows?.length===0&&!o&&!r&&F(Rd.div,{className:"ps-flex ps-items-center ps-justify-center ps-absolute -ps-inset-0 ps-pointer-events-none",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:la("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[F("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),F("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function Fr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function Ad(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import*as fe from"@radix-ui/react-tooltip";import*as Or from"react";import{jsx as Nr}from"react/jsx-runtime";var qr=fe.Provider,Er=fe.Root,Ur=fe.Trigger,ro=Or.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Nr(fe.Portal,{children:Nr(fe.Content,{ref:o,sideOffset:a,className:c("ps-z-50 ps-overflow-hidden ps-rounded-md ps-bg-primary ps-px-3 ps-py-1.5 ps-text-xs ps-text-primary-foreground ps-animate-in ps-fade-in-0 ps-zoom-in-95 data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=closed]:ps-zoom-out-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-tooltip-content-transform-origin]",e),...t})}));ro.displayName=fe.Content.displayName;import{jsx as Qe,jsxs as Hr}from"react/jsx-runtime";function zr({column:e}){return Hr("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&Qe(qr,{delayDuration:120,children:Hr(Er,{children:[Qe(Ur,{asChild:!0,children:Qe(Sa,{size:12,className:"ps-text-primary"})}),Qe(ro,{side:"bottom",className:"text-xs",children:Qe("span",{children:"Primary Key"})})]})}),Qe("span",{className:"ps-font-medium ps-truncate",children:e.name}),Qe("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{isObjectType as sn}from"remeda";import{motion as Kr}from"motion/react";import Ed,{useState as Xr}from"react";import*as so from"@radix-ui/react-label";import{cva as Bd}from"class-variance-authority";import*as Gr from"react";import{jsx as Od}from"react/jsx-runtime";var Nd=Bd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),qa=Gr.forwardRef(({className:e,...a},t)=>Od(so.Root,{ref:t,className:c(Nd(),e),...a}));qa.displayName=so.Root.displayName;import*as Ea from"@radix-ui/react-switch";import*as Wr from"react";import{jsx as Vr}from"react/jsx-runtime";var Ua=Wr.forwardRef(({className:e,...a},t)=>Vr(Ea.Root,{className:c("ps-peer ps-inline-flex ps-h-5 ps-w-9 ps-shrink-0 ps-cursor-pointer ps-items-center ps-rounded-full ps-border-2 ps-border-transparent ps-shadow-sm ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-2 focus-visible:ps-ring-ring focus-visible:ps-ring-offset-2 focus-visible:ps-ring-offset-background disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=unchecked]:ps-bg-input",e),...a,ref:t,children:Vr(Ea.Thumb,{className:c("ps-pointer-events-none ps-block ps-h-4 ps-w-4 ps-rounded-full ps-bg-background ps-shadow-lg ps-ring-0 ps-transition-transform data-[state=checked]:ps-translate-x-4 data-[state=unchecked]:ps-translate-x-0")})}));Ua.displayName=Ea.Root.displayName;import{Fragment as qd,jsx as Ze,jsxs as Ha}from"react/jsx-runtime";var ae=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:l})=>Ze("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-",children:!l&&Ha(qd,{children:[Ha("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-mr-auto",children:[Ha("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{e&&e(),t&&t()},children:[Ze("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground",children:Ze(Ca,{size:12,strokeWidth:2})})," ","Save changes"]}),Ha("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{a&&a(),t&&t()},children:[Ze("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground ps-text-[8px] ps-leading-none ps-font-semibold",children:"Esc"})," ","Cancel changes"]})]}),o&&Ze("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2",children:Ha("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",htmlFor:"set-nullable",children:[Ze(Ua,{id:"set-nullable",checked:r,onCheckedChange:n=>{o&&o(n)}}),Ze("span",{children:"Set to NULL"})]})})]})});import{Fragment as Ud,jsx as za,jsxs as _r}from"react/jsx-runtime";function Qr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=Xr(a===null?!1:a),[d,n]=Xr(a===null),i=a===null?!1:a,x=C=>{u(C)},m=C=>{n(C)},L=Ed.useCallback(()=>{let C=d?null:s;return C!==a?(t(C),!0):!1},[s,a,t,d]),h=()=>{u(i),n(a===null)},{handleSave:p,handleCancel:b}=j({onSave:L,onCancel:h,readonly:r});return _r(Ud,{children:[_r("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0 ps-px-2",children:[za(qa,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),za(Kr.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:za(Ua,{id:"boolean-input",checked:s,onCheckedChange:x,disabled:d||r})}),za(Kr.div,{"data-value":!0,className:"ps-inline-flex ps-items-center ps-text-xs ps-text-muted-foreground ps-font-mono",initial:{x:-40,opacity:1},animate:{x:0,opacity:1},transition:{duration:.12,delay:0},children:d?"NULL":String(s)})]}),za(ae,{onSave:p,onCancel:b,onNullChange:l?m:void 0,isNull:d,readonly:r})]})}import Zr from"dayjs";import zd from"dayjs/plugin/localizedFormat";import{useCallback as Gd,useMemo as Vd}from"react";import{useState as Hd}from"react";function ua(e){let{initialValue:a}=e,[t,o]=Hd(a??"");return{handleOnChange:l=>{o(l.target.value)},value:t}}import{Fragment as Wd,jsx as Ga,jsxs as lo}from"react/jsx-runtime";Zr.extend(zd);function Jr(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ua({initialValue:r}),u=Vd(()=>{try{let L=Zr(s);return L.isValid()?s.includes(":")?L.format("LL LTS"):L.format("LL"):s}catch{return s}},[s]);function d(L){L.preventDefault(),s!==r&&a(s)}let n=Gd(()=>s!==r?(a(s),!0):!1,[s,r,a]),i=()=>{},{handleSave:x,handleCancel:m}=j({onSave:n,onCancel:i,readonly:o});return lo(Wd,{children:[lo("form",{onSubmit:d,children:[Ga(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Ga("input",{type:"submit",className:"ps-sr-only"})]}),lo("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Ga("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Ga("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Ga(ae,{onSave:x,onCancel:m,readonly:o})]})}import{useCallback as Kd,useState as $r}from"react";import{Fragment as Xd,jsx as ct,jsxs as _d}from"react/jsx-runtime";function jr(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:l}=e,s=t.nullable===!0,u=String(o),[d,n]=$r(u),[i,x]=$r(o===null),m=g=>{n(g)},L=g=>{x(g)},h=Kd(()=>i?o!==null?(a(null),!0):!1:d!==u?(a(d),!0):!1,[d,u,a,i,o]),p=()=>{n(u),x(o===null)},{handleSave:b,handleCancel:C}=j({onSave:h,onCancel:p,readonly:l});return _d(Xd,{children:[ct("div",{className:"ps-flex ps-items-center ps-gap-2 ps-font-mono ps-h-[var(--studio-cell-height)] ps-px-2 ps-py-0 ps-w-full ps-text-xs ps-text-muted-foreground",children:d}),ct("div",{className:"ps-flex ps-flex-row ps-flex-wrap ps-gap-2 ps-p-2 ps-min-w-[var(--radix-popover-trigger-width)] ps-max-w-[500px] w-full ps-border-t ps-border-table-border ps-overflow-y-scroll ps-max-h-32",children:r.map(g=>ct("button",{onClick:()=>m(g),className:vt({variant:g===d?"default":"outline"}),disabled:i||l,children:g},g))}),ct(ae,{onSave:b,onCancel:C,onNullChange:s?L:void 0,isNull:i,readonly:l})]})}import Qd,{useState as Yr}from"react";import{Fragment as Zd,jsx as uo,jsxs as Jd}from"react/jsx-runtime";function es(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,s=a===null?"":JSON.stringify(a,null,2),[u,d]=Yr(s),[n,i]=Yr(a===null),x=C=>{d(C.target.value)},m=C=>{i(C)},L=Qd.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let C=u===""?null:JSON.parse(u);return C!==a?(t(C),!0):!1},[u,a,t,n]),h=()=>{d(s),i(a===null)},{handleSave:p,handleCancel:b}=j({onSave:L,onCancel:h,readonly:r});return Jd(Zd,{children:[uo("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:uo("textarea",{rows:5,value:u,onChange:x,disabled:n||r,className:"ps-cell-input-base ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize ps-px-[var(--studio-cell-spacing)]",lang:"en_EN"})}),uo(ae,{onSave:p,onCancel:b,onNullChange:l?m:void 0,isNull:n,readonly:r})]})}import $d,{useState as as}from"react";import{Fragment as jd,jsx as no,jsxs as ts}from"react/jsx-runtime";function os(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=as(a===null?"":String(a)),[d,n]=as(a===null),i=a===null?"":String(a),x=C=>{u(C.target.value)},m=C=>{n(C)},L=$d.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let C=s===""?null:Number(s);return s!==a?(t(C),!0):!1},[s,a,t,d]),h=()=>{u(i),n(a===null)},{handleSave:p,handleCancel:b}=j({onSave:L,onCancel:h,readonly:r});return ts(jd,{children:[ts("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[no(qa,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),no("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:s,onChange:x,disabled:d||r,className:"ps-cell-input-leading ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",step:"any",lang:"en_EN"})]}),no(ae,{onSave:p,onCancel:b,onNullChange:l?m:void 0,isNull:d,readonly:r})]})}import Yd from"react";import{Fragment as en,jsx as io,jsxs as rs}from"react/jsx-runtime";function ss(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ua({initialValue:r});function u(m){m.preventDefault(),s!==r&&a(s)}let d=Yd.useCallback(()=>s!==r?(a(s),!0):!1,[s,r,a]),n=()=>{},{handleSave:i,handleCancel:x}=j({onSave:d,onCancel:n,readonly:o});return rs(en,{children:[rs("form",{onSubmit:u,children:[io(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s,disabled:o}),io("input",{type:"submit",className:"ps-sr-only"})]}),io(ae,{onSave:i,onCancel:x,readonly:o})]})}import ls from"dayjs";import an from"dayjs/plugin/localizedFormat";import{useCallback as tn,useMemo as on}from"react";import{Fragment as rn,jsx as Va,jsxs as fo}from"react/jsx-runtime";ls.extend(an);function us(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ua({initialValue:r}),u=on(()=>{try{if(!s.includes(":"))return s;let L=/[+-]\d{2}(:\d{2})?$/.test(s),h=ls(`2000-01-01 ${s}`);if(h.isValid())return h.format("h:mm A")+(L?` (${h.format("Z")})`:"");let p=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,b=s.match(p);if(b){let C=parseInt(b[1]||"12",10),g=b[2]||"00",T=b[4]||"",H=C>=12?"PM":"AM";return`${C%12===0?12:C%12}:${g} ${H}${T?` (${T})`:""}`}return s}catch{return s}},[s]);function d(L){L.preventDefault(),s!==r&&a(s)}let n=tn(()=>s!==r?(a(s),!0):!1,[s,r,a]),i=()=>{},{handleSave:x,handleCancel:m}=j({onSave:n,onCancel:i,readonly:o});return fo(rn,{children:[fo("form",{onSubmit:d,children:[Va(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Va("input",{type:"submit",className:"ps-sr-only"})]}),fo("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Va("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Va("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Va(ae,{onSave:x,onCancel:m,readonly:o})]})}import{jsx as Je}from"react/jsx-runtime";function pt(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:l,isArray:s}=t.datatype,u=t.isComputed||e.readonly,d=a.getValue(),n=d===void 0?"":d;return r==="datetime"?Je(Jr,{onSubmit:o,value:n,column:t,readonly:u}):r==="time"?Je(us,{onSubmit:o,value:n,column:t,readonly:u}):r==="json"||s?Je(es,{onSubmit:o,value:n,column:t,readonly:u}):r==="boolean"?Je(Qr,{onSubmit:o,value:n,column:t,readonly:u}):r==="enum"?Je(jr,{onSubmit:o,value:n,options:l,column:t,readonly:u}):r==="numeric"?Je(os,{onSubmit:o,value:n,column:t,readonly:u}):Je(ss,{onSubmit:o,value:sn(n)?JSON.stringify(n):n,readonly:u})}import{useReactTable as ln}from"@tanstack/react-table";import{omit as un}from"remeda";import{Fragment as dn,jsx as Wa}from"react/jsx-runtime";function ds(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!at();function l(d,n){o(i=>{let x=[...i];return x[d]={...x[d],...n},x})}let s=Object.values(a.options.columns).map(d=>d.id==="__ps_select"?{...d,cell(){return()=>Wa(Da,{})}}:{...d,cell({cell:n}){return i=>Wa(lt,{cellComponent:st({cell:n,column:d.meta,props:i}),inputComponent:pt({cell:n,column:d.meta,onSubmit(x){l(i.rowIndex,{[d.id]:x})},readonly:r})})}}),u=ln({...a.options,columns:s,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:un(a.options.state,["pagination","sorting"])});return Wa(dn,{children:u.getRowModel().rows.map((d,n)=>Wa(We,{children:d.getVisibleCells().map((i,x)=>{if(typeof i.column.columnDef.cell=="function"){let m=i.column.columnDef.cell(i.getContext());return Wa(m,{...Me(i.column,"cell"),rowIndex:n},x)}return null})},n))})}import{Fragment as co,jsx as D,jsxs as $e}from"react/jsx-runtime";function ns(e){let a=!!nn(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:l,toggleNavigation:s,isNavigationOpen:u}=V(),{sortingState:d,setSortingState:n}=$o(),{paginationState:i,setPaginationState:x}=tt(),[m,L]=pn([]),{appliedFilter:h,setAppliedFilter:p,editingFilter:b,setEditingFilter:C,totalEditingFilters:g}=Qo(),{data:T,isFetching:H,refetch:oe}=Wo({...i,sortOrder:d,filter:h}),{deleteSelection:z,isSelecting:Z,rowSelectionState:G,setRowSelectionState:N}=Jo(T),v=!Object.values(t?.columns??{}).some(O=>O.isInPrimaryKey),J=at(),M=Vo(),Ce=Ko();if(cn(()=>L([]),[t]),!t)return null;function je(){M.mutate(m,{onError:o,onSuccess(){mn.success("Rows inserted successfully"),L([])}})}function _a(){L(O=>[...O,{}])}function Ye(){L([])}function Qa(O,he,xt){Ce.mutate({details:{changes:{[he.name]:O},row:xt,table:t},options:{}})}function da(O){O===!0?C(h):p(b)}let Ge=Object.values(t?.columns??{}).map(O=>({id:O.name,accessorKey:O.name,meta:O,header(){return zr({column:O})},cell({cell:he}){return xt=>D(lt,{cellComponent:st({cell:he,column:O,props:xt}),inputComponent:pt({cell:he,column:O,readonly:v,onSubmit(ps){return Qa(ps,O,he.row.original)}})})}})),Za=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,disableDragging:!0,size:50,minSize:50,header({table:O}){return he=>D(Kt,{table:O,readonly:v,...he})},cell({row:O}){return he=>D(_t,{row:O,readonly:v,...he})}}],re=[...Ge,...Za].sort(xn);return $e(co,{children:[D("div",{className:"ps-bg-studio-header-background ps-flex ps-w-full ps-p-2 ps-py-3 ps-border-b ps-bg-card ps-rounded-t-lg",children:D("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:$e("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[$e("div",{className:"ps-flex ps-items-center ps-gap-2",children:[D(A,{variant:"outline",size:"sm",onClick:s,children:u?D(Ne,{}):D(Oe,{})}),$e(Do,{onOpenChange:da,children:[D(Ao,{asChild:!0,children:D(A,{variant:"outline",size:"sm",className:c(g>0&&"ps-border-primary"),children:$e("span",{className:"ps-flex ps-items-center ps-gap-2",children:[D(ha,{}),g>0&&D($a,{children:D(fn,{transition:{layout:{duration:.12}},children:g})})]})})}),D(Pt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:D(Sr,{filter:b,setFilter:C,setAppliedFilter:O=>{C(O),p(O)},table:t})})]}),D(A,{variant:"outline",size:"sm",onClick:_a,disabled:J>0,children:"Insert row"}),m.length>0&&$e(co,{children:[D(A,{variant:"secondary",size:"sm",onClick:je,children:"Save"}),D(A,{variant:"ghost",size:"sm",onClick:Ye,children:"Cancel"})]}),Z&&D(co,{children:D(A,{variant:"secondary",size:"sm",onClick:z,children:"Delete"})})]}),$e("div",{className:"ps-flex ps-items-center ps-gap-2",children:[D(A,{variant:"outline",size:"icon",onClick:()=>void oe(),disabled:H,children:D(Ra,{className:c("ps-h-4 ps-w-4",H&&"ps-animate-spin")})}),D(A,{variant:"outline",size:"icon",onClick:l,children:r?D(wa,{}):D(ba,{})})]})]})})}),D(Br,{columnDefs:re,getBeforeRows:O=>D(ds,{table:O,stagedRows:m,setStagedRows:L}),isLoading:H,isProcessing:a,onPaginationChange:x,onRowSelectionChange:N,onSortingChange:n,pageCount:gn(T?.filteredRowCount??1/0,i.pageSize),paginationState:i,rows:T?.rows??[],rowSelectionState:G,sortingState:d})]})}function gn(e,a){if(e===1/0)return;let t=Number((BigInt(e)+BigInt(a)-BigInt(1))/BigInt(a));return Number.isSafeInteger(t)?t:Number.MAX_SAFE_INTEGER}function xn(e,a){let t=e.meta,o=a.meta;return e.id==="__ps_select"||a.id==="__ps_select"?1:t===void 0||o===void 0?0:t.isInPrimaryKey&&!o.isInPrimaryKey?-1:!t.isInPrimaryKey&&o.isInPrimaryKey?1:t.name.localeCompare(o.name)}import{Slot as hn}from"@radix-ui/react-slot";import{useCallback as is,useEffect as Ka,useMemo as fs}from"react";import{v4 as Cn}from"uuid";import{useQuery as Ln}from"@tanstack/react-query";var mt=-1;function gt(){let{adapter:e}=V();return Ln({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:mt,queryFn:async({signal:a})=>{let[t,o]=await e.introspect({abortSignal:a});if(t)throw t;return o},queryKey:["introspection"],staleTime:a=>a.state.dataUpdatedAt===mt?0:1/0})}function po(){let{activeTable:e,setActiveTable:a,activeSchema:t,setActiveSchema:o,adapter:r,emitTelemetryEvent:l}=V(),{data:s,dataUpdatedAt:u}=gt(),d=u===mt,[n,i]=Ta({table:{defaultValue:null,parse:g=>g,serialize:g=>g??""},schema:{defaultValue:null,parse:g=>g||r.defaultSchema||"public",serialize:g=>g||r.defaultSchema||"public"}}),[,x]=Ee("pageIndex",{parse:g=>g,serialize:g=>g??""}),[,m]=Ee("sort",{parse:g=>g,serialize:g=>g??""}),L=fs(()=>Object.values(s.schemas[t]?.tables||{}),[s.schemas,t]),h=fs(()=>Object.values(s.schemas).reduce((g,T)=>g+Object.keys(T.tables).length,0),[s.schemas]),[p]=L;Ka(()=>{if(!d){if(n?.table&&L.length>0){let g=L.find(T=>T.name===n.table&&T.schema===t);if(g){a(g);return}}L.length>0&&!e&&(a(p||null),p&&i({table:p.name,schema:t}))}},[d,n,L,p,e,t,a,i]);let b=is(g=>{e!==g&&(a(g),i({table:g.name,schema:g.schema}),t!==g.schema&&o(g.schema),x(null),m(null))},[e,t,a,o,i,x,m]),C=is(g=>{g!==t&&(o(g),i(T=>({...T,schema:g})),e&&e.schema!==g&&(a(null),i(T=>({...T,table:null})),x(null),m(null)))},[t,e,o,a,i,x,m]);return Ka(()=>{n?.schema!==t&&!d&&i(g=>({...g,schema:t}))},[t,n?.schema,i,d]),Ka(()=>{(!n?.schema||n.schema==="")&&!d&&i(g=>({...g,schema:t}))},[d,n?.schema,t,i]),Ka(()=>{n?.schema&&n.schema!==t&&o(n.schema)},[n?.schema,t,o]),Ka(()=>{u!==-1&&l({event:"studio_launched",payload:{event_id:Cn(),timestamp:new Date().toISOString(),table_count:h}})},[L,l,u,h]),{tables:L,activeTable:e,activeSchema:t,isLoading:d,handleTableChange:b,handleSchemaChange:C}}import{jsx as X,jsxs as Xa}from"react/jsx-runtime";function Le({className:e}){let{tables:a,activeTable:t,activeSchema:o,isLoading:r,handleTableChange:l}=po(),s=c("ps-flex ps-flex-col ps-w-48 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return Xa("div",{className:s,children:[X(Le.SchemaSelector,{}),X(Le.Block,{label:"Tables",children:a.length>0?a.map(u=>X(Le.Item,{asChild:!0,isActive:t===u,onClick:()=>{l(u)},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:X("a",{href:`#table=${u.name}&schema=${u.schema}`,children:u.name})},`${u.schema}-${u.name}`)):r?Array(4).fill(null).map((u,d)=>X(Le.Item,{wrapChildrenInSpan:!1,children:X(sa,{className:"ps-h-3 ps-w-full"})},d)):Xa(Le.Item,{children:["No tables found in ",o]})})]})}var In=({className:e,label:a,children:t,...o})=>Xa("div",{className:e,...o,children:[Xa("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:[X(Ma,{size:16,className:"ps-text-muted-foreground/60"}),X("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),X("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),Sn=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:l=!0,...s})=>X(a?hn:"button",{"data-sidebar":"menu-button","data-size":o,"data-active":t,className:c("ps-py-1.5 ps-px-2 ps-text-sm ps-font-medium ps-rounded-md ps-flex ps-gap-2 ps-items-center ps-border ps-border-transparent ps-bg-transparent",e),...s,children:l?X("span",{className:"ps-truncate",children:r}):r}),bn=()=>{let{data:e,isLoading:a}=gt(),{activeSchema:t,handleSchemaChange:o}=po(),r=Object.keys(e.schemas||{});return X("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:Xa(oa,{value:t,onValueChange:o,children:[X(Xe,{className:"ps-text-xs",label:"Schema",children:X(ra,{placeholder:"Select schema"})}),X(_e,{children:a?X(q,{value:"loading",children:"Loading schemas..."}):r.length>0?r.map(l=>X(q,{value:l,className:"ps-text-xs",children:l},l)):X(q,{value:"no-schemas",children:"No schemas found"})})]})})};Le.Block=In;Le.Item=Sn;Le.SchemaSelector=bn;import{jsx as Te,jsxs as Pn}from"react/jsx-runtime";function yn(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Te(zo,{adapter:a,onError:t,onTelemetryEvent:o,children:Te(vn,{})}):(console.error("No adapter provided to Studio component"),Te("div",{children:"Error: No adapter provided"}))}function vn(){let{isFullscreen:e,isNavigationOpen:a}=V(),t=c("ps-flex ps-flex-col ps-w-full ps-min-h-0 ps-max-h-full",e&&"ps-fixed ps-inset-0 ps-z-[9999] ps-bg-background ps-p-2");return Te("div",{"data-fullscreen":e,className:t,children:Pn("div",{className:"ps-flex ps-gap-0 ps-w-full ps-bg-neutral-50 ps-relative ps-max-h-full ps-min-h-full ps-rounded-lg",children:[Te(wn,{mode:"wait",children:a&&Te(cs.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Te(Le,{})})}),Te(cs.div,{className:"ps-flex ps-w-full ps-bg-neutral-100 ps-flex-col ps-p-px ps-rounded-lg ps-self-start ps-h-full ps-min-h-full ps-max-h-full ps-overflow-clip",transition:{duration:.14},children:Te(ns,{})})]})})}export{yn as Studio};
20
+ `}}),S.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${me.grayAlt}`,display:"flex",flexDirection:"column"}},S.createElement("div",{style:{padding:".5em",background:me.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},S.createElement(Pr,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>l(!1)}),S.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",S.createElement("span",{style:{fontWeight:100}},"Devtools")),S.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?S.createElement(dd,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{l(!1)}},"Close"):null)),S.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},S.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},S.createElement(ge,{label:"Instance",value:o,defaultExpanded:!1}),S.createElement("div",{style:{height:".5rem"}}),S.createElement(ge,{label:"State",value:o.getState(),defaultExpanded:!1}),S.createElement("div",{style:{height:".5rem"}}),S.createElement(ge,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),S.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},S.createElement(ge,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),S.createElement(ge,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),S.createElement(ge,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),S.createElement(ge,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),S.createElement(ge,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as kd,motion as Rd}from"motion/react";import{useEffect as Md,useMemo as Td,useState as oo}from"react";import{jsx as pd}from"react/jsx-runtime";function sa({className:e,...a}){return pd("div",{className:c("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{flexRender as md}from"@tanstack/react-table";import{AnimatePresence as gd,motion as Rr}from"motion/react";import{Fragment as to,jsx as U,jsxs as xe}from"react/jsx-runtime";function Mr(e){let{header:a,className:t}=e;return xe("div",{className:c("ps-flex ps-items-center ps-justify-between",t),children:[xe("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full",children:[U("div",{className:"ps-flex ps-items-center ps-gap-2 ps-overflow-hidden ps-text-ellipsis ps-font-mono ps-text-xs",children:a.isPlaceholder?null:U("span",{className:"ps-flex ps-min-w-0",children:U("span",{className:"ps-min-w-0 ps-overflow-hidden ps-text-ellipsis ps-text-foreground/90",children:md(a.column.columnDef.header,a.getContext())})})}),xe("span",{className:"ps-relative ps-flex ps-shrink-0 ps-gap-1",children:[U("span",{className:"ps-flex ps-items-center ps-ml-1",children:U(gd,{mode:"wait",children:a.column.getIsSorted()==="desc"?U(Rr.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:U(ya,{size:14,className:"ps-text-muted-foreground"})},"desc"):a.column.getIsSorted()==="asc"?U(Rr.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:U(va,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),a.column.getCanPin()&&a.column.id!=="select"&&xe(lt,{children:[U(ut,{asChild:!0,children:U(A,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:U(ce,{size:12})})}),xe(Na,{children:[a.column.getCanSort()&&U(dt,{onClick:()=>a.column.toggleSorting(),children:U("span",{className:"ps-flex ps-items-center ps-gap-2",children:a.column.getNextSortingOrder()==="desc"?xe(to,{children:[U(Fe,{size:16}),"Sort descending"]}):a.column.getNextSortingOrder()==="asc"?xe(to,{children:[U(ca,{size:16}),"Sort ascending"]}):xe(to,{children:[U(qe,{size:16}),"Cancel sorting"]})})}),U(dt,{onClick:()=>a.column.pin(a.column.getIsPinned()?!1:"left"),children:a.column.getIsPinned()?xe("span",{className:"ps-flex ps-items-center ps-gap-2",children:[U(Pa,{size:16}),"Unpin column"]}):xe("span",{className:"ps-flex ps-items-center ps-gap-2",children:[U(ka,{size:16}),"Pin column"]})})]})]})]})]}),a.column.getCanResize()&&U("button",{type:"button",tabIndex:0,onMouseDown:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onTouchStart:o=>{o.stopPropagation(),a.getResizeHandler()(o)},onClick:o=>o.stopPropagation(),onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),o.stopPropagation(),a.getResizeHandler()(o))},className:c("ps-absolute ps-right-0 ps-top-0 ps-h-full ps-w-px ps-cursor-col-resize ps-border ps-border-transparent hover:ps-border-table-border"),"aria-label":"Resize column"})]})}import{jsx as Tr}from"react/jsx-runtime";function Dr({className:e}){return Tr("div",{"data-loading-bar":!0,className:c("ps-h-[2px] ps-w-full ps-overflow-hidden ps-bg-table-border ps-z-50",e),children:Tr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as ee,jsxs as it}from"react/jsx-runtime";function Ar(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return ee("div",{className:"ps-rounded-b-lg ps-overflow-clip ps-sticky ps-bottom-0 ps-left-0 ps-border-t-0 w-full ps-z-20 ps-p-0",children:ee("div",{className:"ps-flex ps-items-center ps-justify-between ps-space-x-2 ps-py-2 ps-px-2 ps-border-t ps-border-table-border ps-backdrop-blur-sm ps-bg-table-head/90",children:t==="basic"?it("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[ee(A,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),ee(A,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):ee("div",{className:"ps-flex ps-items-center ps-space-x-2",children:it("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[ee(A,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:ee(ga,{className:"ps-w-4 ps-h-4"})}),ee(A,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:ee(pa,{className:"ps-w-4 ps-h-4"})}),it("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",ee(ne,{type:"number",min:1,max:r,value:o+1,className:"ps-w-16",onChange:l=>{let s=l.target.value?Number(l.target.value)-1:0;a.setPageIndex(s)}}),it("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),ee(A,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:ee(le,{className:"ps-w-4 ps-h-4"})}),ee(A,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:ee(xa,{className:"ps-w-4 ps-h-4"})})]})})})})}function Me(e,a){let t=e.getIsPinned(),o=t==="left",r=t==="right",l=e.id==="__ps_select";return{className:c("ps-group ps-border-r ps-border-b ps-border-table-border","ps-overflow-hidden ps-whitespace-nowrap ps-text-ellipsis",(o||r)&&"ps-sticky",(o||r)&&a==="header"&&(l?"ps-z-30":"ps-z-20"),(o||r)&&a==="cell"&&(l?"ps-z-10":"ps-z-0"),o&&"ps-shadow-[2px_0_5px_-2px_rgba(0,0,0,0.1)]",r&&"ps-shadow-[-2px_0_5px_-2px_rgba(0,0,0,0.1)]"),style:{minWidth:`${e.getSize()}px`,width:`${e.getSize()}px`,left:o?`${e.getStart("left")}px`:void 0,right:r?`${e.getAfter("right")}px`:void 0,position:t?"sticky":void 0}}}import{Fragment as Fd,jsx as F,jsxs as la}from"react/jsx-runtime";var Dd=e=>{let{children:a,className:t,header:o,style:r}=e,l="disableDragging"in o.column.columnDef,{attributes:s,listeners:u,transform:n,transition:d,setNodeRef:i,isDragging:x}=wd({id:o.id}),m={...r,cursor:"grab",touchAction:"none",transform:yd.Transform.toString(n),transition:d},L=c(t,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),h=c(L,x&&"!ps-z-50 ps-border-2 ps-border-violet-500");return F(Ke,{ref:i,...s,...u,style:l?r:m,className:l?L:h,children:F("div",{className:"ps-w-full",children:a})})};function Br(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:u,pageCount:n,paginationState:d,rows:i,rowSelectionState:x,sortingState:m}=e,[L,h]=oo([]),[p,b]=oo({left:["__ps_select"],right:[]}),[C,g]=oo({}),T=Td(()=>Fr(m),[m]),H=o||r;Md(()=>{h(a.map(({accessorKey:N})=>N)),b({left:["__ps_select"],right:[]}),g({})},[a]);function oe({active:N,over:v}){v&&N.id!==v.id&&h(J=>{let M=J.indexOf(N.id),Ce=J.indexOf(v.id);return Id(J,M,Ce)})}let z=Cd(Ld,{activationConstraint:{distance:10}}),Z=hd(z),V=Pd({columnResizeMode:"onChange",columns:a,data:i,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(u&&m),getCoreRowModel:vd(),getRowId:({__ps_rowid:N})=>N,manualPagination:!0,manualSorting:!0,onColumnOrderChange:h,onColumnPinningChange:b,onColumnSizingChange:g,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:N=>u?.(v=>(typeof N=="function"&&(N=N(Fr(v))),Ad(N))),pageCount:n,state:{columnOrder:L,columnPinning:p,columnSizing:C,pagination:d,rowSelection:x,sorting:T}});return la(Fd,{children:[process.env.NODE_ENV==="production"?null:F(kr,{table:V}),la("div",{"data-studio":"content",className:"ps-flex-1 ps-w-0 ps-h-0 ps-min-w-full ps-flex ps-flex-col ps-relative",children:[F("div",{children:H&&F(Dr,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),F(xd,{sensors:Z,onDragEnd:oe,children:la(Mt,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[F(Tt,{children:V.getHeaderGroups().map(N=>F(We,{children:F(bd,{items:N.headers.filter(v=>!("disableDragging"in v.column.columnDef)).map(v=>v.id),strategy:Sd,children:N.headers.map(v=>{if(v.column.id==="__ps_select"){let J=v.column.columnDef.header;if(typeof J=="function"){let M=J(v.getContext());if(typeof M=="function"){let Ce=Me(v.column,"header");return F(Ke,{className:c(Ce.className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Ce.style,children:M({})},v.id)}return F(Ke,{className:c(Me(v.column,"header").className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Me(v.column,"header").style,children:M},v.id)}return null}return F(Dd,{header:v,table:V,...Me(v.column,"header"),children:F(Mr,{header:v})},v.id)})})},N.id))}),la(Dt,{children:[t?.(V),V.getRowModel().rows?.length?V.getRowModel().rows.map(N=>F(We,{className:c("ps-bg-table-row ps-odd:bg-table-row-odd ps-group [&:last-of-type_td]:ps-border-b-0 ps-group"),children:N.getVisibleCells().map((v,J)=>{if(typeof v.column.columnDef.cell=="function"){let M=v.column.columnDef.cell(v.getContext());return F(M,{...Me(v.column,"cell"),className:"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100"},J)}else return F(Ue,{...Me(v.column,"cell"),children:v.getValue()},v.id)})},N.id)):F(We,{children:F(Ue,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&la("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[F(sa,{className:"ps-h-4 ps-w-full"}),F(sa,{className:"ps-h-4 ps-w-4/5"}),F(sa,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!n||n<2?null:F(Ar,{table:V,variant:"numeric"}),F(kd,{mode:"wait",children:V.getRowModel().rows?.length===0&&!o&&!r&&F(Rd.div,{className:"ps-flex ps-items-center ps-justify-center ps-absolute -ps-inset-0 ps-pointer-events-none",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:la("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-text-center",children:[F("div",{className:"ps-text-sm ps-text-muted-foreground",children:"No results found"}),F("div",{className:"ps-text-xs ps-text-muted-foreground",children:"It doesn't look like you have any data in this table."})]})})})]})]})}function Fr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function Ad(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import*as fe from"@radix-ui/react-tooltip";import*as Or from"react";import{jsx as Nr}from"react/jsx-runtime";var qr=fe.Provider,Er=fe.Root,Ur=fe.Trigger,ro=Or.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Nr(fe.Portal,{children:Nr(fe.Content,{ref:o,sideOffset:a,className:c("ps-z-50 ps-overflow-hidden ps-rounded-md ps-bg-primary ps-px-3 ps-py-1.5 ps-text-xs ps-text-primary-foreground ps-animate-in ps-fade-in-0 ps-zoom-in-95 data-[state=closed]:ps-animate-out data-[state=closed]:ps-fade-out-0 data-[state=closed]:ps-zoom-out-95 data-[side=bottom]:ps-slide-in-from-top-2 data-[side=left]:ps-slide-in-from-right-2 data-[side=right]:ps-slide-in-from-left-2 data-[side=top]:ps-slide-in-from-bottom-2 ps-origin-[--radix-tooltip-content-transform-origin]",e),...t})}));ro.displayName=fe.Content.displayName;import{jsx as Qe,jsxs as Hr}from"react/jsx-runtime";function zr({column:e}){return Hr("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&Qe(qr,{delayDuration:120,children:Hr(Er,{children:[Qe(Ur,{asChild:!0,children:Qe(Sa,{size:12,className:"ps-text-primary"})}),Qe(ro,{side:"bottom",className:"text-xs",children:Qe("span",{children:"Primary Key"})})]})}),Qe("span",{className:"ps-font-medium ps-truncate",children:e.name}),Qe("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{isObjectType as sn}from"remeda";import{motion as Kr}from"motion/react";import Ed,{useState as Xr}from"react";import*as so from"@radix-ui/react-label";import{cva as Bd}from"class-variance-authority";import*as Gr from"react";import{jsx as Od}from"react/jsx-runtime";var Nd=Bd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),qa=Gr.forwardRef(({className:e,...a},t)=>Od(so.Root,{ref:t,className:c(Nd(),e),...a}));qa.displayName=so.Root.displayName;import*as Ea from"@radix-ui/react-switch";import*as Wr from"react";import{jsx as Vr}from"react/jsx-runtime";var Ua=Wr.forwardRef(({className:e,...a},t)=>Vr(Ea.Root,{className:c("ps-peer ps-inline-flex ps-h-5 ps-w-9 ps-shrink-0 ps-cursor-pointer ps-items-center ps-rounded-full ps-border-2 ps-border-transparent ps-shadow-sm ps-transition-colors focus-visible:ps-outline-none focus-visible:ps-ring-2 focus-visible:ps-ring-ring focus-visible:ps-ring-offset-2 focus-visible:ps-ring-offset-background disabled:ps-cursor-not-allowed disabled:ps-opacity-50 data-[state=checked]:ps-bg-primary data-[state=unchecked]:ps-bg-input",e),...a,ref:t,children:Vr(Ea.Thumb,{className:c("ps-pointer-events-none ps-block ps-h-4 ps-w-4 ps-rounded-full ps-bg-background ps-shadow-lg ps-ring-0 ps-transition-transform data-[state=checked]:ps-translate-x-4 data-[state=unchecked]:ps-translate-x-0")})}));Ua.displayName=Ea.Root.displayName;import{Fragment as qd,jsx as Ze,jsxs as Ha}from"react/jsx-runtime";var ae=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:l})=>Ze("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-",children:!l&&Ha(qd,{children:[Ha("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-mr-auto",children:[Ha("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{e&&e(),t&&t()},children:[Ze("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground",children:Ze(Ca,{size:12,strokeWidth:2})})," ","Save changes"]}),Ha("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{a&&a(),t&&t()},children:[Ze("kbd",{className:"ps-inline-flex ps-justify-center ps-items-center ps-h-6 ps-w-6 ps-rounded-md ps-bg-muted ps-text-muted-foreground ps-text-[8px] ps-leading-none ps-font-semibold",children:"Esc"})," ","Cancel changes"]})]}),o&&Ze("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2",children:Ha("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",htmlFor:"set-nullable",children:[Ze(Ua,{id:"set-nullable",checked:r,onCheckedChange:d=>{o&&o(d)}}),Ze("span",{children:"Set to NULL"})]})})]})});import{Fragment as Ud,jsx as za,jsxs as _r}from"react/jsx-runtime";function Qr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=Xr(a===null?!1:a),[n,d]=Xr(a===null),i=a===null?!1:a,x=C=>{u(C)},m=C=>{d(C)},L=Ed.useCallback(()=>{let C=n?null:s;return C!==a?(t(C),!0):!1},[s,a,t,n]),h=()=>{u(i),d(a===null)},{handleSave:p,handleCancel:b}=j({onSave:L,onCancel:h,readonly:r});return _r(Ud,{children:[_r("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0 ps-px-2",children:[za(qa,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),za(Kr.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:za(Ua,{id:"boolean-input",checked:s,onCheckedChange:x,disabled:n||r})}),za(Kr.div,{"data-value":!0,className:"ps-inline-flex ps-items-center ps-text-xs ps-text-muted-foreground ps-font-mono",initial:{x:-40,opacity:1},animate:{x:0,opacity:1},transition:{duration:.12,delay:0},children:n?"NULL":String(s)})]}),za(ae,{onSave:p,onCancel:b,onNullChange:l?m:void 0,isNull:n,readonly:r})]})}import Zr from"dayjs";import zd from"dayjs/plugin/localizedFormat";import{useCallback as Gd,useMemo as Vd}from"react";import{useState as Hd}from"react";function ua(e){let{initialValue:a}=e,[t,o]=Hd(a??"");return{handleOnChange:l=>{o(l.target.value)},value:t}}import{Fragment as Wd,jsx as Ga,jsxs as lo}from"react/jsx-runtime";Zr.extend(zd);function Jr(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ua({initialValue:r}),u=Vd(()=>{try{let L=Zr(s);return L.isValid()?s.includes(":")?L.format("LL LTS"):L.format("LL"):s}catch{return s}},[s]);function n(L){L.preventDefault(),s!==r&&a(s)}let d=Gd(()=>s!==r?(a(s),!0):!1,[s,r,a]),i=()=>{},{handleSave:x,handleCancel:m}=j({onSave:d,onCancel:i,readonly:o});return lo(Wd,{children:[lo("form",{onSubmit:n,children:[Ga(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Ga("input",{type:"submit",className:"ps-sr-only"})]}),lo("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Ga("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Ga("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Ga(ae,{onSave:x,onCancel:m,readonly:o})]})}import{useCallback as Kd,useState as $r}from"react";import{Fragment as Xd,jsx as ft,jsxs as _d}from"react/jsx-runtime";function jr(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:l}=e,s=t.nullable===!0,u=String(o),[n,d]=$r(u),[i,x]=$r(o===null),m=g=>{d(g)},L=g=>{x(g)},h=Kd(()=>i?o!==null?(a(null),!0):!1:n!==u?(a(n),!0):!1,[n,u,a,i,o]),p=()=>{d(u),x(o===null)},{handleSave:b,handleCancel:C}=j({onSave:h,onCancel:p,readonly:l});return _d(Xd,{children:[ft("div",{className:"ps-flex ps-items-center ps-gap-2 ps-font-mono ps-h-[var(--studio-cell-height)] ps-px-2 ps-py-0 ps-w-full ps-text-xs ps-text-muted-foreground",children:n}),ft("div",{className:"ps-flex ps-flex-row ps-flex-wrap ps-gap-2 ps-p-2 ps-min-w-[var(--radix-popover-trigger-width)] ps-max-w-[500px] w-full ps-border-t ps-border-table-border ps-overflow-y-scroll ps-max-h-32",children:r.map(g=>ft("button",{onClick:()=>m(g),className:vt({variant:g===n?"default":"outline"}),disabled:i||l,children:g},g))}),ft(ae,{onSave:b,onCancel:C,onNullChange:s?L:void 0,isNull:i,readonly:l})]})}import Qd,{useState as Yr}from"react";import{Fragment as Zd,jsx as uo,jsxs as Jd}from"react/jsx-runtime";function es(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,s=a===null?"":JSON.stringify(a,null,2),[u,n]=Yr(s),[d,i]=Yr(a===null),x=C=>{n(C.target.value)},m=C=>{i(C)},L=Qd.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let C=u===""?null:JSON.parse(u);return C!==a?(t(C),!0):!1},[u,a,t,d]),h=()=>{n(s),i(a===null)},{handleSave:p,handleCancel:b}=j({onSave:L,onCancel:h,readonly:r});return Jd(Zd,{children:[uo("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:uo("textarea",{rows:5,value:u,onChange:x,disabled:d||r,className:"ps-cell-input-base ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize ps-px-[var(--studio-cell-spacing)]",lang:"en_EN"})}),uo(ae,{onSave:p,onCancel:b,onNullChange:l?m:void 0,isNull:d,readonly:r})]})}import $d,{useState as as}from"react";import{Fragment as jd,jsx as no,jsxs as ts}from"react/jsx-runtime";function os(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=as(a===null?"":String(a)),[n,d]=as(a===null),i=a===null?"":String(a),x=C=>{u(C.target.value)},m=C=>{d(C)},L=$d.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let C=s===""?null:Number(s);return s!==a?(t(C),!0):!1},[s,a,t,n]),h=()=>{u(i),d(a===null)},{handleSave:p,handleCancel:b}=j({onSave:L,onCancel:h,readonly:r});return ts(jd,{children:[ts("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[no(qa,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),no("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:s,onChange:x,disabled:n||r,className:"ps-cell-input-leading ps-appearance-none ps-w-full ps-font-mono ps-border-none ps-outline-none ps-shadow-none ps-bg-transparent focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",step:"any",lang:"en_EN"})]}),no(ae,{onSave:p,onCancel:b,onNullChange:l?m:void 0,isNull:n,readonly:r})]})}import Yd from"react";import{Fragment as en,jsx as io,jsxs as rs}from"react/jsx-runtime";function ss(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ua({initialValue:r});function u(m){m.preventDefault(),s!==r&&a(s)}let n=Yd.useCallback(()=>s!==r?(a(s),!0):!1,[s,r,a]),d=()=>{},{handleSave:i,handleCancel:x}=j({onSave:n,onCancel:d,readonly:o});return rs(en,{children:[rs("form",{onSubmit:u,children:[io(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s,disabled:o}),io("input",{type:"submit",className:"ps-sr-only"})]}),io(ae,{onSave:i,onCancel:x,readonly:o})]})}import ls from"dayjs";import an from"dayjs/plugin/localizedFormat";import{useCallback as tn,useMemo as on}from"react";import{Fragment as rn,jsx as Va,jsxs as fo}from"react/jsx-runtime";ls.extend(an);function us(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ua({initialValue:r}),u=on(()=>{try{if(!s.includes(":"))return s;let L=/[+-]\d{2}(:\d{2})?$/.test(s),h=ls(`2000-01-01 ${s}`);if(h.isValid())return h.format("h:mm A")+(L?` (${h.format("Z")})`:"");let p=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,b=s.match(p);if(b){let C=parseInt(b[1]||"12",10),g=b[2]||"00",T=b[4]||"",H=C>=12?"PM":"AM";return`${C%12===0?12:C%12}:${g} ${H}${T?` (${T})`:""}`}return s}catch{return s}},[s]);function n(L){L.preventDefault(),s!==r&&a(s)}let d=tn(()=>s!==r?(a(s),!0):!1,[s,r,a]),i=()=>{},{handleSave:x,handleCancel:m}=j({onSave:d,onCancel:i,readonly:o});return fo(rn,{children:[fo("form",{onSubmit:n,children:[Va(ne,{className:"ps-cell-input-leading ps-font-mono ps-border-none ps-shadow-none focus-visible:ps-ring-0 ps-resize-none ps-px-[var(--studio-cell-spacing)]",onChange:l,type:"text",value:s}),Va("input",{type:"submit",className:"ps-sr-only"})]}),fo("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Va("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Va("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Va(ae,{onSave:x,onCancel:m,readonly:o})]})}import{jsx as Je}from"react/jsx-runtime";function ct(e){let{cell:a,column:t,onSubmit:o}=e,{group:r,options:l,isArray:s}=t.datatype,u=t.isComputed||e.readonly,n=a.getValue(),d=n===void 0?"":n;return r==="datetime"?Je(Jr,{onSubmit:o,value:d,column:t,readonly:u}):r==="time"?Je(us,{onSubmit:o,value:d,column:t,readonly:u}):r==="json"||s?Je(es,{onSubmit:o,value:d,column:t,readonly:u}):r==="boolean"?Je(Qr,{onSubmit:o,value:d,column:t,readonly:u}):r==="enum"?Je(jr,{onSubmit:o,value:d,options:l,column:t,readonly:u}):r==="numeric"?Je(os,{onSubmit:o,value:d,column:t,readonly:u}):Je(ss,{onSubmit:o,value:sn(d)?JSON.stringify(d):d,readonly:u})}import{useReactTable as ln}from"@tanstack/react-table";import{omit as un}from"remeda";import{Fragment as dn,jsx as Wa}from"react/jsx-runtime";function ds(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!et();function l(n,d){o(i=>{let x=[...i];return x[n]={...x[n],...d},x})}let s=Object.values(a.options.columns).map(n=>n.id==="__ps_select"?{...n,cell(){return()=>Wa(Da,{})}}:{...n,cell({cell:d}){return i=>Wa(st,{cellComponent:rt({cell:d,column:n.meta,props:i}),inputComponent:ct({cell:d,column:n.meta,onSubmit(x){l(i.rowIndex,{[n.id]:x})},readonly:r})})}}),u=ln({...a.options,columns:s,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:un(a.options.state,["pagination","sorting"])});return Wa(dn,{children:u.getRowModel().rows.map((n,d)=>Wa(We,{children:n.getVisibleCells().map((i,x)=>{if(typeof i.column.columnDef.cell=="function"){let m=i.column.columnDef.cell(i.getContext());return Wa(m,{...Me(i.column,"cell"),rowIndex:d},x)}return null})},d))})}import{Fragment as co,jsx as D,jsxs as $e}from"react/jsx-runtime";function ns(e){let a=!!nn(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:l,toggleNavigation:s,isNavigationOpen:u}=W(),{sortingState:n,setSortingState:d}=$o(),{paginationState:i,setPaginationState:x}=at(),[m,L]=pn([]),{appliedFilter:h,setAppliedFilter:p,editingFilter:b,setEditingFilter:C,totalEditingFilters:g}=Qo(),{data:T,isFetching:H,refetch:oe}=Wo({...i,sortOrder:n,filter:h}),{deleteSelection:z,isSelecting:Z,rowSelectionState:V,setRowSelectionState:N}=Jo(T),v=!Object.values(t?.columns??{}).some(O=>O.isInPrimaryKey),J=et(),M=Vo(),Ce=Ko();if(cn(()=>L([]),[t]),!t)return null;function je(){M.mutate(m,{onError:o,onSuccess(){mn.success("Rows inserted successfully"),L([])}})}function Xa(){L(O=>[...O,{}])}function Ye(){L([])}function _a(O,he,xt){Ce.mutate({details:{changes:{[he.name]:O},row:xt,table:t},options:{}})}function da(O){O===!0?C(h):p(b)}let Ge=Object.values(t?.columns??{}).map(O=>({id:O.name,accessorKey:O.name,meta:O,header(){return zr({column:O})},cell({cell:he}){return xt=>D(st,{cellComponent:rt({cell:he,column:O,props:xt}),inputComponent:ct({cell:he,column:O,readonly:v,onSubmit(ps){return _a(ps,O,he.row.original)}})})}})),Qa=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,disableDragging:!0,size:50,minSize:50,header({table:O}){return he=>D(Kt,{table:O,readonly:v,...he})},cell({row:O}){return he=>D(_t,{row:O,readonly:v,...he})}}],re=[...Ge,...Qa].sort(xn);return $e(co,{children:[D("div",{className:"ps-bg-studio-header-background ps-flex ps-w-full ps-p-2 ps-py-3 ps-border-b ps-bg-card ps-rounded-t-lg",children:D("div",{className:"ps-flex ps-items-center ps-justify-between ps-w-full ps-gap-2",children:$e("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[$e("div",{className:"ps-flex ps-items-center ps-gap-2",children:[D(A,{variant:"outline",size:"sm",onClick:s,children:u?D(Ne,{}):D(Oe,{})}),$e(Do,{onOpenChange:da,children:[D(Ao,{asChild:!0,children:D(A,{variant:"outline",size:"sm",className:c(g>0&&"ps-border-primary"),children:$e("span",{className:"ps-flex ps-items-center ps-gap-2",children:[D(ha,{}),g>0&&D(Ja,{children:D(fn,{transition:{layout:{duration:.12}},children:g})})]})})}),D(Pt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:D(Sr,{filter:b,setFilter:C,setAppliedFilter:O=>{C(O),p(O)},table:t})})]}),D(A,{variant:"outline",size:"sm",onClick:Xa,disabled:J>0,children:"Insert row"}),m.length>0&&$e(co,{children:[D(A,{variant:"secondary",size:"sm",onClick:je,children:"Save"}),D(A,{variant:"ghost",size:"sm",onClick:Ye,children:"Cancel"})]}),Z&&D(co,{children:D(A,{variant:"secondary",size:"sm",onClick:z,children:"Delete"})})]}),$e("div",{className:"ps-flex ps-items-center ps-gap-2",children:[D(A,{variant:"outline",size:"icon",onClick:()=>void oe(),disabled:H,children:D(Ra,{className:c("ps-h-4 ps-w-4",H&&"ps-animate-spin")})}),D(A,{variant:"outline",size:"icon",onClick:l,children:r?D(wa,{}):D(ba,{})})]})]})})}),D(Br,{columnDefs:re,getBeforeRows:O=>D(ds,{table:O,stagedRows:m,setStagedRows:L}),isLoading:H,isProcessing:a,onPaginationChange:x,onRowSelectionChange:N,onSortingChange:d,pageCount:gn(T?.filteredRowCount??1/0,i.pageSize),paginationState:i,rows:T?.rows??[],rowSelectionState:V,sortingState:n})]})}function gn(e,a){if(e===1/0)return;let t=Number((BigInt(e)+BigInt(a)-BigInt(1))/BigInt(a));return Number.isSafeInteger(t)?t:Number.MAX_SAFE_INTEGER}function xn(e,a){let t=e.meta,o=a.meta;return e.id==="__ps_select"||a.id==="__ps_select"?1:t===void 0||o===void 0?0:t.isInPrimaryKey&&!o.isInPrimaryKey?-1:!t.isInPrimaryKey&&o.isInPrimaryKey?1:t.name.localeCompare(o.name)}import{Slot as hn}from"@radix-ui/react-slot";import{useCallback as is,useEffect as Ka,useMemo as fs}from"react";import{v4 as Cn}from"uuid";import{useQuery as Ln}from"@tanstack/react-query";var pt=-1;function mt(){let{adapter:e}=W();return Ln({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:pt,queryFn:async({signal:a})=>{let[t,o]=await e.introspect({abortSignal:a});if(t)throw t;return o},queryKey:["introspection"],staleTime:a=>a.state.dataUpdatedAt===pt?0:1/0})}function po(){let{activeTable:e,setActiveTable:a,activeSchema:t,setActiveSchema:o,adapter:r,emitTelemetryEvent:l}=W(),{data:s,dataUpdatedAt:u}=mt(),n=u===pt,[d,i]=Ta({table:{defaultValue:null,parse:g=>g,serialize:g=>g??""},schema:{defaultValue:null,parse:g=>g||r.defaultSchema||"public",serialize:g=>g||r.defaultSchema||"public"}}),[,x]=Ee("pageIndex",{parse:g=>g,serialize:g=>g??""}),[,m]=Ee("sort",{parse:g=>g,serialize:g=>g??""}),L=fs(()=>Object.values(s.schemas[t]?.tables||{}),[s.schemas,t]),h=fs(()=>Object.values(s.schemas).reduce((g,T)=>g+Object.keys(T.tables).length,0),[s.schemas]),[p]=L;Ka(()=>{if(!n){if(d?.table&&L.length>0){let g=L.find(T=>T.name===d.table&&T.schema===t);if(g){a(g);return}}L.length>0&&!e&&(a(p||null),p&&i({table:p.name,schema:t}))}},[n,d,L,p,e,t,a,i]);let b=is(g=>{e!==g&&(a(g),i({table:g.name,schema:g.schema}),t!==g.schema&&o(g.schema),x(null),m(null))},[e,t,a,o,i,x,m]),C=is(g=>{g!==t&&(o(g),i(T=>({...T,schema:g})),e&&e.schema!==g&&(a(null),i(T=>({...T,table:null})),x(null),m(null)))},[t,e,o,a,i,x,m]);return Ka(()=>{d?.schema!==t&&!n&&i(g=>({...g,schema:t}))},[t,d?.schema,i,n]),Ka(()=>{(!d?.schema||d.schema==="")&&!n&&i(g=>({...g,schema:t}))},[n,d?.schema,t,i]),Ka(()=>{d?.schema&&d.schema!==t&&o(d.schema)},[d?.schema,t,o]),Ka(()=>{u!==-1&&l({event:"studio_launched",payload:{event_id:Cn(),timestamp:new Date().toISOString(),table_count:h}})},[L,l,u,h]),{tables:L,activeTable:e,activeSchema:t,isLoading:n,handleTableChange:b,handleSchemaChange:C}}import{jsx as G,jsxs as gt}from"react/jsx-runtime";function Le({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=po(),l=c("ps-flex ps-flex-col ps-w-48 ps-overflow-y-auto ps-max-h-full ps-min-h-0 ps-text-card-foreground ps-shadow-xs",e);return gt("div",{className:l,children:[G(Le.SchemaSelector,{}),G(Le.Block,{label:"Tables",children:a.length>0?a.map(s=>G(Le.Item,{asChild:!0,isActive:t===s,onClick:()=>{r(s)},className:"ps-py-1 ps-font-mono ps-text-xs ps-text-foreground/60 hover:ps-text-foreground ps-transition-all ps-cursor-pointer data-[active=true]:ps-bg-slate-200 data-[active=true]:ps-foreground data-[active=true]:ps-text-foreground",children:G("a",{href:`#table=${s.name}&schema=${s.schema}`,children:s.name})},`${s.schema}-${s.name}`)):o?Array(4).fill(null).map((s,u)=>G(Le.Item,{wrapChildrenInSpan:!1,children:G(sa,{className:"ps-h-3 ps-w-full"})},u)):G(Le.Item,{children:"No tables found"})})]})}var In=({className:e,label:a,children:t,...o})=>gt("div",{className:e,...o,children:[gt("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:[G(Ma,{size:16,className:"ps-text-muted-foreground/60"}),G("h2",{className:"ps-text-sm ps-font-medium",children:a})]}),G("nav",{"aria-label":a,className:"ps-flex ps-flex-col ps-gap-px ps-pb-3 ps-p-2",children:t})]}),Sn=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:l=!0,...s})=>G(a?hn:"button",{"data-sidebar":"menu-button","data-size":o,"data-active":t,className:c("ps-py-1.5 ps-px-2 ps-text-sm ps-font-medium ps-rounded-md ps-flex ps-gap-2 ps-items-center ps-border ps-border-transparent ps-bg-transparent",e),...s,children:l?G("span",{className:"ps-truncate",children:r}):r}),bn=()=>{let{data:e,isLoading:a}=mt(),{activeSchema:t,handleSchemaChange:o}=po(),r=Object.keys(e.schemas||{});return G("div",{className:"ps-flex ps-items-center ps-gap-1 ps-pt-4 ps-pb-2 ps-px-4 ps-sticky ps-top-0 ps-bg-slate-50/50 ps-backdrop-blur-sm",children:gt(oa,{value:t,onValueChange:o,children:[G(Xe,{className:"ps-text-xs",label:"Schema",children:G(ra,{placeholder:"Select schema"})}),G(_e,{children:a?G(q,{value:"loading",children:"Loading schemas..."}):r.length>0?r.map(l=>G(q,{value:l,className:"ps-text-xs",children:l},l)):G(q,{value:"no-schemas",children:"No schemas found"})})]})})};Le.Block=In;Le.Item=Sn;Le.SchemaSelector=bn;import{jsx as Te,jsxs as Pn}from"react/jsx-runtime";function yn(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Te(zo,{adapter:a,onError:t,onTelemetryEvent:o,children:Te(vn,{})}):(console.error("No adapter provided to Studio component"),Te("div",{children:"Error: No adapter provided"}))}function vn(){let{isFullscreen:e,isNavigationOpen:a}=W(),t=c("ps-flex ps-flex-col ps-w-full ps-min-h-0 ps-max-h-full",e&&"ps-fixed ps-inset-0 ps-z-[9999] ps-bg-background ps-p-2");return Te("div",{"data-fullscreen":e,className:t,children:Pn("div",{className:"ps-flex ps-gap-0 ps-w-full ps-bg-neutral-50 ps-relative ps-max-h-full ps-min-h-full ps-rounded-lg",children:[Te(wn,{mode:"wait",children:a&&Te(cs.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Te(Le,{})})}),Te(cs.div,{className:"ps-flex ps-w-full ps-bg-neutral-100 ps-flex-col ps-p-px ps-rounded-lg ps-self-start ps-h-full ps-min-h-full ps-max-h-full ps-overflow-clip",transition:{duration:.14},children:Te(ns,{})})]})})}export{yn as Studio};
21
21
  /*! Bundled license information:
22
22
 
23
23
  lucide-react/dist/esm/shared/src/utils.js:
@@ -288,4 +288,4 @@ lucide-react/dist/esm/lucide-react.js:
288
288
  * @license MIT
289
289
  *)
290
290
  */
291
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvbGliL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jbGFzcy1ncm91cC11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbHJ1LWNhY2hlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9wYXJzZS1jbGFzcy1uYW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jb25maWctdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNsYXNzbGlzdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctam9pbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY3JlYXRlLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9mcm9tLXRoZW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi92YWxpZGF0b3JzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9kZWZhdWx0LWNvbmZpZy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY29uZmlncy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZXh0ZW5kLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1tZXJnZS50cyIsICIuLi8uLi91aS9zdHVkaW8vQWN0aXZlVGFibGVWaWV3LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9zaGFyZWQvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvZGVmYXVsdEF0dHJpYnV0ZXMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9JY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvY3JlYXRlTHVjaWRlSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZWNrLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtaGVscC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NvcHkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3JuZXItZG93bi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZmlsdGVyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZ3JpcC12ZXJ0aWNhbC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2tleS1yb3VuZC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21heGltaXplLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWluaW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLWRvd24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLXVwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3BhbmVsLWxlZnQtb3Blbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3Bpbi1vZmYudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9yZWZyZXNoLWN3LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvdGFibGUtMi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3gudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9iYWRnZS50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9idXR0b24udHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2NvbnRleHQudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29scy50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytxdWVyeS1kZXZ0b29sc0A1LjcyLjIvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scy9idWlsZC9pbmRleC5qcyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvaW5kZXgudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9zb25uZXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9OdXFzSGFzaEFkYXB0ZXIudHN4IiwgIi4uLy4uL3VpL2hvb2tzL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0LnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtcXVlcnkudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGUudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWZpbHRlcmluZy50cyIsICIuLi8uLi91aS9ob29rcy9udXFzLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXBhZ2luYXRpb24udHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXNlbGVjdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc29ydGluZy50cyIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9nZXQtY2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQm9vbGVhbkNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdGFibGUudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRGF0ZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0VtcHR5Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW51bUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0pTT05DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdWxsQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvTnVtZXJpY0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1Jhd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1RpbWVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RSb3dDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvV3JpdGVhYmxlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL0ZpbHRlclRyZWUudHN4IiwgIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHMudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2lucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NlbGVjdC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWQudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3VzZUxvY2FsU3RvcmFnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy90aGVtZS50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTWVkaWFRdWVyeS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9zdHlsZWRDb21wb25lbnRzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0V4cGxvcmVyLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9Mb2dvLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9pbmRleC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9za2VsZXRvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkTG9hZGluZ0Jhci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRQYWdpbmF0aW9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3Rvb2x0aXAudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkSGVhZGVyQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2dldC1pbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0Jvb2xlYW5JbnB1dC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9sYWJlbC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9zd2l0Y2gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9pbnB1dC1hY3Rpb25zLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvRGF0ZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvdXNlLWlucHV0LnRzIiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9FbnVtSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9Kc29uSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9OdW1lcmljSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9SYXdJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1RpbWVJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL1N0YWdlZFJvd3MudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9OYXZpZ2F0aW9uLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGFcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQWN0aXZlVGFibGVWaWV3IH0gZnJvbSBcIi4vQWN0aXZlVGFibGVWaWV3XCI7XG5pbXBvcnQgeyBTdHVkaW9Db250ZXh0UHJvdmlkZXIsIHVzZVN0dWRpbyB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tIFwiLi9OYXZpZ2F0aW9uXCI7XG5cbmV4cG9ydCB0eXBlIFN0dWRpb1RlbGVtZXRyeUV2ZW50ID0ge1xuICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIjtcbiAgcGF5bG9hZDoge1xuICAgIGV2ZW50X2lkOiBzdHJpbmc7XG4gICAgdGltZXN0YW1wOiBzdHJpbmc7XG4gICAgdXNlcl9pZD86IHN0cmluZztcbiAgICB3b3Jrc3BhY2VfaWQ/OiBzdHJpbmc7XG4gICAgb3JnYW5pemF0aW9uX2lkPzogc3RyaW5nO1xuICAgIGVtYmVkZGluZ190eXBlPzogc3RyaW5nO1xuICAgIHZlbmRvcl9pZD86IHN0cmluZztcbiAgICB0YWJsZV9jb3VudDogbnVtYmVyO1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdHVkaW9Qcm9wcyB7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIE1haW4gU3R1ZGlvIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGRhdGFiYXNlIHZpc3VhbGl6YXRpb24gYW5kIG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpbyhwcm9wczogU3R1ZGlvUHJvcHMpIHtcbiAgY29uc3QgeyBhZGFwdGVyLCBvbkVycm9yLCBvblRlbGVtZXRyeUV2ZW50IH0gPSBwcm9wcztcblxuICBpZiAoIWFkYXB0ZXIpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYWRhcHRlciBwcm92aWRlZCB0byBTdHVkaW8gY29tcG9uZW50XCIpO1xuICAgIHJldHVybiA8ZGl2PkVycm9yOiBObyBhZGFwdGVyIHByb3ZpZGVkPC9kaXY+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3R1ZGlvQ29udGV4dFByb3ZpZGVyIGFkYXB0ZXI9e2FkYXB0ZXJ9IG9uRXJyb3I9e29uRXJyb3J9IG9uVGVsZW1ldHJ5RXZlbnQ9e29uVGVsZW1ldHJ5RXZlbnR9PlxuICAgICAgPFN0dWRpb0NvbnRlbnQgLz5cbiAgICA8L1N0dWRpb0NvbnRleHRQcm92aWRlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU3R1ZGlvQ29udGVudCgpIHtcbiAgY29uc3QgeyBpc0Z1bGxzY3JlZW4sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuXG4gIGNvbnN0IGNvbnRhaW5lckNsYXNzZXMgPSBjbihcbiAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsIHBzLW1pbi1oLTAgcHMtbWF4LWgtZnVsbFwiLFxuICAgIGlzRnVsbHNjcmVlbiAmJiBcInBzLWZpeGVkIHBzLWluc2V0LTAgcHMtei1bOTk5OV0gcHMtYmctYmFja2dyb3VuZCBwcy1wLTJcIixcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgZGF0YS1mdWxsc2NyZWVuPXtpc0Z1bGxzY3JlZW59IGNsYXNzTmFtZT17Y29udGFpbmVyQ2xhc3Nlc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZ2FwLTAgcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtNTAgcHMtcmVsYXRpdmUgcHMtbWF4LWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLXJvdW5kZWQtbGdcIj5cbiAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgIHtpc05hdmlnYXRpb25PcGVuICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgd2lkdGg6IDAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyB3aWR0aDogXCJhdXRvXCIsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjE0IH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxOYXZpZ2F0aW9uIC8+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLXctZnVsbCBwcy1iZy1uZXV0cmFsLTEwMCBwcy1mbGV4LWNvbCBwcy1wLXB4IHBzLXJvdW5kZWQtbGcgcHMtc2VsZi1zdGFydCBwcy1oLWZ1bGwgcHMtbWluLWgtZnVsbCBwcy1tYXgtaC1mdWxsIHBzLW92ZXJmbG93LWNsaXBcIlxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxBY3RpdmVUYWJsZVZpZXcgLz5cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiLy8gc2hhZGNuIHV0aWxzXG5pbXBvcnQgeyB0eXBlIENsYXNzVmFsdWUsIGNsc3ggfSBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgZXh0ZW5kVGFpbHdpbmRNZXJnZSB9IGZyb20gXCJ0YWlsd2luZC1tZXJnZVwiO1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGV4dGVuZFRhaWx3aW5kTWVyZ2Uoe1xuICBwcmVmaXg6IFwicHMtXCIsXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNuKC4uLmlucHV0czogQ2xhc3NWYWx1ZVtdKSB7XG4gIHJldHVybiB0d01lcmdlKGNsc3goaW5wdXRzKSk7XG59XG4iLCAiaW1wb3J0IHtcbiAgICBDbGFzc0dyb3VwLFxuICAgIENsYXNzVmFsaWRhdG9yLFxuICAgIENvbmZpZyxcbiAgICBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICBHZW5lcmljQ29uZmlnLFxuICAgIEdlbmVyaWNUaGVtZUdyb3VwSWRzLFxuICAgIFRoZW1lR2V0dGVyLFxuICAgIFRoZW1lT2JqZWN0LFxufSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzUGFydE9iamVjdCB7XG4gICAgbmV4dFBhcnQ6IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD5cbiAgICB2YWxpZGF0b3JzOiBDbGFzc1ZhbGlkYXRvck9iamVjdFtdXG4gICAgY2xhc3NHcm91cElkPzogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbn1cblxuaW50ZXJmYWNlIENsYXNzVmFsaWRhdG9yT2JqZWN0IHtcbiAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzXG4gICAgdmFsaWRhdG9yOiBDbGFzc1ZhbGlkYXRvclxufVxuXG5jb25zdCBDTEFTU19QQVJUX1NFUEFSQVRPUiA9ICctJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NHcm91cFV0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4ge1xuICAgIGNvbnN0IGNsYXNzTWFwID0gY3JlYXRlQ2xhc3NNYXAoY29uZmlnKVxuICAgIGNvbnN0IHsgY29uZmxpY3RpbmdDbGFzc0dyb3VwcywgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIH0gPSBjb25maWdcblxuICAgIGNvbnN0IGdldENsYXNzR3JvdXBJZCA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBjbGFzc1BhcnRzID0gY2xhc3NOYW1lLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKVxuXG4gICAgICAgIC8vIENsYXNzZXMgbGlrZSBgLWluc2V0LTFgIHByb2R1Y2UgYW4gZW1wdHkgc3RyaW5nIGFzIGZpcnN0IGNsYXNzUGFydC4gV2UgYXNzdW1lIHRoYXQgY2xhc3NlcyBmb3IgbmVnYXRpdmUgdmFsdWVzIGFyZSB1c2VkIGNvcnJlY3RseSBhbmQgcmVtb3ZlIGl0IGZyb20gY2xhc3NQYXJ0cy5cbiAgICAgICAgaWYgKGNsYXNzUGFydHNbMF0gPT09ICcnICYmIGNsYXNzUGFydHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICBjbGFzc1BhcnRzLnNoaWZ0KClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLCBjbGFzc01hcCkgfHwgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGNsYXNzTmFtZSlcbiAgICB9XG5cbiAgICBjb25zdCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgPSAoXG4gICAgICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllcjogYm9vbGVhbixcbiAgICApID0+IHtcbiAgICAgICAgY29uc3QgY29uZmxpY3RzID0gY29uZmxpY3RpbmdDbGFzc0dyb3Vwc1tjbGFzc0dyb3VwSWRdIHx8IFtdXG5cbiAgICAgICAgaWYgKGhhc1Bvc3RmaXhNb2RpZmllciAmJiBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25mbGljdHMsIC4uLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdIV1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25mbGljdHNcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgICAgIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyxcbiAgICB9XG59XG5cbmNvbnN0IGdldEdyb3VwUmVjdXJzaXZlID0gKFxuICAgIGNsYXNzUGFydHM6IHN0cmluZ1tdLFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuKTogR2VuZXJpY0NsYXNzR3JvdXBJZHMgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LmNsYXNzR3JvdXBJZFxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdIVxuICAgIGNvbnN0IG5leHRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KGN1cnJlbnRDbGFzc1BhcnQpXG4gICAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdFxuICAgICAgICA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgICAgIHJldHVybiBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnRcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoeyB2YWxpZGF0b3IgfSkgPT4gdmFsaWRhdG9yKGNsYXNzUmVzdCkpPy5jbGFzc0dyb3VwSWRcbn1cblxuY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlSZWdleCA9IC9eXFxbKC4rKVxcXSQvXG5cbmNvbnN0IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LnRlc3QoY2xhc3NOYW1lKSkge1xuICAgICAgICBjb25zdCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSA9IGFyYml0cmFyeVByb3BlcnR5UmVnZXguZXhlYyhjbGFzc05hbWUpIVsxXVxuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lPy5zdWJzdHJpbmcoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUuaW5kZXhPZignOicpLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAvLyBJIHVzZSB0d28gZG90cyBoZXJlIGJlY2F1c2Ugb25lIGRvdCBpcyB1c2VkIGFzIHByZWZpeCBmb3IgY2xhc3MgZ3JvdXBzIGluIHBsdWdpbnNcbiAgICAgICAgICAgIHJldHVybiAnYXJiaXRyYXJ5Li4nICsgcHJvcGVydHlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc01hcCA9IChjb25maWc6IENvbmZpZzxHZW5lcmljQ2xhc3NHcm91cElkcywgR2VuZXJpY1RoZW1lR3JvdXBJZHM+KSA9PiB7XG4gICAgY29uc3QgeyB0aGVtZSwgcHJlZml4IH0gPSBjb25maWdcbiAgICBjb25zdCBjbGFzc01hcDogQ2xhc3NQYXJ0T2JqZWN0ID0ge1xuICAgICAgICBuZXh0UGFydDogbmV3IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD4oKSxcbiAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jbGFzc0dyb3VwcyksXG4gICAgICAgIHByZWZpeCxcbiAgICApXG5cbiAgICBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzLmZvckVhY2goKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgY2xhc3NNYXAsIGNsYXNzR3JvdXBJZCwgdGhlbWUpXG4gICAgfSlcblxuICAgIHJldHVybiBjbGFzc01hcFxufVxuXG5jb25zdCBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5ID0gKFxuICAgIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgdGhlbWU6IFRoZW1lT2JqZWN0PEdlbmVyaWNUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIGNsYXNzR3JvdXAuZm9yRWFjaCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0ID1cbiAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24gPT09ICcnID8gY2xhc3NQYXJ0T2JqZWN0IDogZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGNsYXNzRGVmaW5pdGlvbilcbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdFRvRWRpdC5jbGFzc0dyb3VwSWQgPSBjbGFzc0dyb3VwSWRcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlmIChpc1RoZW1lR2V0dGVyKGNsYXNzRGVmaW5pdGlvbikpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24odGhlbWUpLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3I6IGNsYXNzRGVmaW5pdGlvbixcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikuZm9yRWFjaCgoW2tleSwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cCxcbiAgICAgICAgICAgICAgICBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwga2V5KSxcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgZ2V0UGFydCA9IChjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3RcblxuICAgIHBhdGguc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpLmZvckVhY2goKHBhdGhQYXJ0KSA9PiB7XG4gICAgICAgIGlmICghY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5oYXMocGF0aFBhcnQpKSB7XG4gICAgICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LnNldChwYXRoUGFydCwge1xuICAgICAgICAgICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwKCksXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KHBhdGhQYXJ0KSFcbiAgICB9KVxuXG4gICAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Rcbn1cblxuY29uc3QgaXNUaGVtZUdldHRlciA9IChmdW5jOiBDbGFzc1ZhbGlkYXRvciB8IFRoZW1lR2V0dGVyKTogZnVuYyBpcyBUaGVtZUdldHRlciA9PlxuICAgIChmdW5jIGFzIFRoZW1lR2V0dGVyKS5pc1RoZW1lR2V0dGVyXG5cbmNvbnN0IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSAoXG4gICAgY2xhc3NHcm91cEVudHJpZXM6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPixcbiAgICBwcmVmaXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPiA9PiB7XG4gICAgaWYgKCFwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzLm1hcCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwID0gY2xhc3NHcm91cC5tYXAoKGNsYXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbcHJlZml4ICsga2V5LCB2YWx1ZV0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBbY2xhc3NHcm91cElkLCBwcmVmaXhlZENsYXNzR3JvdXBdXG4gICAgfSlcbn1cbiIsICIvLyBFeHBvcnQgaXMgbmVlZGVkIGJlY2F1c2UgVHlwZVNjcmlwdCBjb21wbGFpbnMgYWJvdXQgYW4gZXJyb3Igb3RoZXJ3aXNlOlxuLy8gRXJyb3I6IFx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvY29uZmlnLXV0aWxzLnRzKDgsMTcpOiBzZW1hbnRpYyBlcnJvciBUUzQwNTg6IFJldHVybiB0eXBlIG9mIGV4cG9ydGVkIGZ1bmN0aW9uIGhhcyBvciBpcyB1c2luZyBuYW1lICdMcnVDYWNoZScgZnJvbSBleHRlcm5hbCBtb2R1bGUgXCJcdTIwMjYvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xydS1jYWNoZVwiIGJ1dCBjYW5ub3QgYmUgbmFtZWQuXG5leHBvcnQgaW50ZXJmYWNlIExydUNhY2hlPEtleSwgVmFsdWU+IHtcbiAgICBnZXQoa2V5OiBLZXkpOiBWYWx1ZSB8IHVuZGVmaW5lZFxuICAgIHNldChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKTogdm9pZFxufVxuXG4vLyBMUlUgY2FjaGUgaW5zcGlyZWQgZnJvbSBoYXNobHJ1IChodHRwczovL2dpdGh1Yi5jb20vZG9taW5pY3RhcnIvaGFzaGxydS9ibG9iL3YxLjAuNC9pbmRleC5qcykgYnV0IG9iamVjdCByZXBsYWNlZCB3aXRoIE1hcCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlXG5leHBvcnQgY29uc3QgY3JlYXRlTHJ1Q2FjaGUgPSA8S2V5LCBWYWx1ZT4obWF4Q2FjaGVTaXplOiBudW1iZXIpOiBMcnVDYWNoZTxLZXksIFZhbHVlPiA9PiB7XG4gICAgaWYgKG1heENhY2hlU2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2V0OiAoKSA9PiB7fSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjYWNoZVNpemUgPSAwXG4gICAgbGV0IGNhY2hlID0gbmV3IE1hcDxLZXksIFZhbHVlPigpXG4gICAgbGV0IHByZXZpb3VzQ2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcblxuICAgIGNvbnN0IHVwZGF0ZSA9IChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKVxuICAgICAgICBjYWNoZVNpemUrK1xuXG4gICAgICAgIGlmIChjYWNoZVNpemUgPiBtYXhDYWNoZVNpemUpIHtcbiAgICAgICAgICAgIGNhY2hlU2l6ZSA9IDBcbiAgICAgICAgICAgIHByZXZpb3VzQ2FjaGUgPSBjYWNoZVxuICAgICAgICAgICAgY2FjaGUgPSBuZXcgTWFwKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldChrZXkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLmdldChrZXkpXG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHZhbHVlID0gcHJldmlvdXNDYWNoZS5nZXQoa2V5KSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUGFyc2VDbGFzc05hbWUgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgeyBzZXBhcmF0b3IsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIH0gPSBjb25maWdcbiAgICBjb25zdCBpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciA9IHNlcGFyYXRvci5sZW5ndGggPT09IDFcbiAgICBjb25zdCBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFyYXRvclswXVxuICAgIGNvbnN0IHNlcGFyYXRvckxlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGhcblxuICAgIC8vIHBhcnNlQ2xhc3NOYW1lIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGxhYnMvdGFpbHdpbmRjc3MvYmxvYi92My4yLjIvc3JjL3V0aWwvc3BsaXRBdFRvcExldmVsT25seS5qc1xuICAgIGNvbnN0IHBhcnNlQ2xhc3NOYW1lID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IFtdXG5cbiAgICAgICAgbGV0IGJyYWNrZXREZXB0aCA9IDBcbiAgICAgICAgbGV0IG1vZGlmaWVyU3RhcnQgPSAwXG4gICAgICAgIGxldCBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkXG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzTmFtZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50Q2hhcmFjdGVyID0gY2xhc3NOYW1lW2luZGV4XVxuXG4gICAgICAgICAgICBpZiAoYnJhY2tldERlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyID09PSBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciAmJlxuICAgICAgICAgICAgICAgICAgICAoaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZS5zbGljZShpbmRleCwgaW5kZXggKyBzZXBhcmF0b3JMZW5ndGgpID09PSBzZXBhcmF0b3IpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycy5wdXNoKGNsYXNzTmFtZS5zbGljZShtb2RpZmllclN0YXJ0LCBpbmRleCkpXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyU3RhcnQgPSBpbmRleCArIHNlcGFyYXRvckxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnLycpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICdbJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aCsrXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICddJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aC0tXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIG1vZGlmaWVycy5sZW5ndGggPT09IDAgPyBjbGFzc05hbWUgOiBjbGFzc05hbWUuc3Vic3RyaW5nKG1vZGlmaWVyU3RhcnQpXG4gICAgICAgIGNvbnN0IGhhc0ltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3RhcnRzV2l0aChJTVBPUlRBTlRfTU9ESUZJRVIpXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWUgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN1YnN0cmluZygxKVxuICAgICAgICAgICAgOiBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9XG4gICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAmJiBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA+IG1vZGlmaWVyU3RhcnRcbiAgICAgICAgICAgICAgICA/IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uIC0gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vZGlmaWVycyxcbiAgICAgICAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIChjbGFzc05hbWU6IHN0cmluZykgPT4gZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUoeyBjbGFzc05hbWUsIHBhcnNlQ2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlQ2xhc3NOYW1lXG59XG5cbi8qKlxuICogU29ydHMgbW9kaWZpZXJzIGFjY29yZGluZyB0byBmb2xsb3dpbmcgc2NoZW1hOlxuICogLSBQcmVkZWZpbmVkIG1vZGlmaWVycyBhcmUgc29ydGVkIGFscGhhYmV0aWNhbGx5XG4gKiAtIFdoZW4gYW4gYXJiaXRyYXJ5IHZhcmlhbnQgYXBwZWFycywgaXQgbXVzdCBiZSBwcmVzZXJ2ZWQgd2hpY2ggbW9kaWZpZXJzIGFyZSBiZWZvcmUgYW5kIGFmdGVyIGl0XG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0TW9kaWZpZXJzID0gKG1vZGlmaWVyczogc3RyaW5nW10pID0+IHtcbiAgICBpZiAobW9kaWZpZXJzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIHJldHVybiBtb2RpZmllcnNcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cbiAgICBsZXQgdW5zb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cblxuICAgIG1vZGlmaWVycy5mb3JFYWNoKChtb2RpZmllcikgPT4ge1xuICAgICAgICBjb25zdCBpc0FyYml0cmFyeVZhcmlhbnQgPSBtb2RpZmllclswXSA9PT0gJ1snXG5cbiAgICAgICAgaWYgKGlzQXJiaXRyYXJ5VmFyaWFudCkge1xuICAgICAgICAgICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpLCBtb2RpZmllcilcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzID0gW11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpXG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpKVxuXG4gICAgcmV0dXJuIHNvcnRlZE1vZGlmaWVyc1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyB9IGZyb20gJy4vY2xhc3MtZ3JvdXAtdXRpbHMnXG5pbXBvcnQgeyBjcmVhdGVMcnVDYWNoZSB9IGZyb20gJy4vbHJ1LWNhY2hlJ1xuaW1wb3J0IHsgY3JlYXRlUGFyc2VDbGFzc05hbWUgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IHR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbmZpZ1V0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gKHtcbiAgICBjYWNoZTogY3JlYXRlTHJ1Q2FjaGU8c3RyaW5nLCBzdHJpbmc+KGNvbmZpZy5jYWNoZVNpemUpLFxuICAgIHBhcnNlQ2xhc3NOYW1lOiBjcmVhdGVQYXJzZUNsYXNzTmFtZShjb25maWcpLFxuICAgIC4uLmNyZWF0ZUNsYXNzR3JvdXBVdGlscyhjb25maWcpLFxufSlcbiIsICJpbXBvcnQgeyBDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgSU1QT1JUQU5UX01PRElGSUVSLCBzb3J0TW9kaWZpZXJzIH0gZnJvbSAnLi9wYXJzZS1jbGFzcy1uYW1lJ1xuXG5jb25zdCBTUExJVF9DTEFTU0VTX1JFR0VYID0gL1xccysvXG5cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzTGlzdCA9IChjbGFzc0xpc3Q6IHN0cmluZywgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzKSA9PiB7XG4gICAgY29uc3QgeyBwYXJzZUNsYXNzTmFtZSwgZ2V0Q2xhc3NHcm91cElkLCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgfSA9IGNvbmZpZ1V0aWxzXG5cbiAgICAvKipcbiAgICAgKiBTZXQgb2YgY2xhc3NHcm91cElkcyBpbiBmb2xsb3dpbmcgZm9ybWF0OlxuICAgICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAgICogQGV4YW1wbGUgJ2Zsb2F0J1xuICAgICAqIEBleGFtcGxlICdob3Zlcjpmb2N1czpiZy1jb2xvcidcbiAgICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgICAqL1xuICAgIGNvbnN0IGNsYXNzR3JvdXBzSW5Db25mbGljdDogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBjbGFzc0xpc3QudHJpbSgpLnNwbGl0KFNQTElUX0NMQVNTRVNfUkVHRVgpXG5cbiAgICBsZXQgcmVzdWx0ID0gJydcblxuICAgIGZvciAobGV0IGluZGV4ID0gY2xhc3NOYW1lcy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQ2xhc3NOYW1lID0gY2xhc3NOYW1lc1tpbmRleF0hXG5cbiAgICAgICAgY29uc3QgeyBtb2RpZmllcnMsIGhhc0ltcG9ydGFudE1vZGlmaWVyLCBiYXNlQ2xhc3NOYW1lLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIH0gPVxuICAgICAgICAgICAgcGFyc2VDbGFzc05hbWUob3JpZ2luYWxDbGFzc05hbWUpXG5cbiAgICAgICAgbGV0IGhhc1Bvc3RmaXhNb2RpZmllciA9IEJvb2xlYW4obWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgbGV0IGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChcbiAgICAgICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllclxuICAgICAgICAgICAgICAgID8gYmFzZUNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgICAgICAgICA6IGJhc2VDbGFzc05hbWUsXG4gICAgICAgIClcblxuICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgaWYgKCFoYXNQb3N0Zml4TW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChiYXNlQ2xhc3NOYW1lKVxuXG4gICAgICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhbnRNb2RpZmllciA9IHNvcnRNb2RpZmllcnMobW9kaWZpZXJzKS5qb2luKCc6JylcblxuICAgICAgICBjb25zdCBtb2RpZmllcklkID0gaGFzSW1wb3J0YW50TW9kaWZpZXJcbiAgICAgICAgICAgID8gdmFyaWFudE1vZGlmaWVyICsgSU1QT1JUQU5UX01PRElGSUVSXG4gICAgICAgICAgICA6IHZhcmlhbnRNb2RpZmllclxuXG4gICAgICAgIGNvbnN0IGNsYXNzSWQgPSBtb2RpZmllcklkICsgY2xhc3NHcm91cElkXG5cbiAgICAgICAgaWYgKGNsYXNzR3JvdXBzSW5Db25mbGljdC5pbmNsdWRlcyhjbGFzc0lkKSkge1xuICAgICAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgb21pdHRlZCBkdWUgdG8gY29uZmxpY3RcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChjbGFzc0lkKVxuXG4gICAgICAgIGNvbnN0IGNvbmZsaWN0R3JvdXBzID0gZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzKGNsYXNzR3JvdXBJZCwgaGFzUG9zdGZpeE1vZGlmaWVyKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZsaWN0R3JvdXBzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGNvbmZsaWN0R3JvdXBzW2ldIVxuICAgICAgICAgICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2gobW9kaWZpZXJJZCArIGdyb3VwKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgbm90IGluIGNvbmZsaWN0XG4gICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cbiIsICIvKipcbiAqIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3ggYW5kIG1vZGlmaWVkIHRvIHN1aXQgdGhlIG5lZWRzIG9mIHRhaWx3aW5kLW1lcmdlIGJldHRlci5cbiAqXG4gKiBTcGVjaWZpY2FsbHk6XG4gKiAtIFJ1bnRpbWUgY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9zcmMvaW5kZXguanNcbiAqIC0gVHlwZVNjcmlwdCB0eXBlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9jbHN4LmQudHNcbiAqXG4gKiBPcmlnaW5hbCBjb2RlIGhhcyBNSVQgbGljZW5zZTogQ29weXJpZ2h0IChjKSBMdWtlIEVkd2FyZHMgPGx1a2UuZWR3YXJkczA1QGdtYWlsLmNvbT4gKGx1a2VlZC5jb20pXG4gKi9cblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lVmFsdWUgPSBDbGFzc05hbWVBcnJheSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCAwIHwgMG4gfCBmYWxzZVxudHlwZSBDbGFzc05hbWVBcnJheSA9IENsYXNzTmFtZVZhbHVlW11cblxuZXhwb3J0IGZ1bmN0aW9uIHR3Sm9pbiguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKTogc3RyaW5nXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKCkge1xuICAgIGxldCBpbmRleCA9IDBcbiAgICBsZXQgYXJndW1lbnQ6IENsYXNzTmFtZVZhbHVlXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBpZiAoKGFyZ3VtZW50ID0gYXJndW1lbnRzW2luZGV4KytdKSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKVxuICAgICAgICAgICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ1xufVxuXG5jb25zdCB0b1ZhbHVlID0gKG1peDogQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpID0+IHtcbiAgICBpZiAodHlwZW9mIG1peCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG1peFxuICAgIH1cblxuICAgIGxldCByZXNvbHZlZFZhbHVlOiBzdHJpbmdcbiAgICBsZXQgc3RyaW5nID0gJydcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG4gICAgICAgIGlmIChtaXhba10pIHtcbiAgICAgICAgICAgIGlmICgocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUobWl4W2tdIGFzIENsYXNzTmFtZUFycmF5IHwgc3RyaW5nKSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgbWVyZ2VDbGFzc0xpc3QgfSBmcm9tICcuL21lcmdlLWNsYXNzbGlzdCdcbmltcG9ydCB7IENsYXNzTmFtZVZhbHVlLCB0d0pvaW4gfSBmcm9tICcuL3R3LWpvaW4nXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdGaXJzdCA9ICgpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgVGFpbHdpbmRNZXJnZSA9ICguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKSA9PiBzdHJpbmdcbnR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgY3JlYXRlQ29uZmlnRmlyc3Q6IENyZWF0ZUNvbmZpZ0ZpcnN0LFxuICAgIC4uLmNyZWF0ZUNvbmZpZ1Jlc3Q6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKTogVGFpbHdpbmRNZXJnZSB7XG4gICAgbGV0IGNvbmZpZ1V0aWxzOiBDb25maWdVdGlsc1xuICAgIGxldCBjYWNoZUdldDogQ29uZmlnVXRpbHNbJ2NhY2hlJ11bJ2dldCddXG4gICAgbGV0IGNhY2hlU2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnc2V0J11cbiAgICBsZXQgZnVuY3Rpb25Ub0NhbGwgPSBpbml0VGFpbHdpbmRNZXJnZVxuXG4gICAgZnVuY3Rpb24gaW5pdFRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY3JlYXRlQ29uZmlnUmVzdC5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldmlvdXNDb25maWcsIGNyZWF0ZUNvbmZpZ0N1cnJlbnQpID0+IGNyZWF0ZUNvbmZpZ0N1cnJlbnQocHJldmlvdXNDb25maWcpLFxuICAgICAgICAgICAgY3JlYXRlQ29uZmlnRmlyc3QoKSBhcyBHZW5lcmljQ29uZmlnLFxuICAgICAgICApXG5cbiAgICAgICAgY29uZmlnVXRpbHMgPSBjcmVhdGVDb25maWdVdGlscyhjb25maWcpXG4gICAgICAgIGNhY2hlR2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuZ2V0XG4gICAgICAgIGNhY2hlU2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuc2V0XG4gICAgICAgIGZ1bmN0aW9uVG9DYWxsID0gdGFpbHdpbmRNZXJnZVxuXG4gICAgICAgIHJldHVybiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlR2V0KGNsYXNzTGlzdClcblxuICAgICAgICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBtZXJnZUNsYXNzTGlzdChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKVxuICAgICAgICBjYWNoZVNldChjbGFzc0xpc3QsIHJlc3VsdClcblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxUYWlsd2luZE1lcmdlKCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb25Ub0NhbGwodHdKb2luLmFwcGx5KG51bGwsIGFyZ3VtZW50cyBhcyBhbnkpKVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBEZWZhdWx0VGhlbWVHcm91cElkcywgTm9JbmZlciwgVGhlbWVHZXR0ZXIsIFRoZW1lT2JqZWN0IH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IGZyb21UaGVtZSA9IDxcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgZXh0ZW5kcyBzdHJpbmcgPSBEZWZhdWx0VGhlbWVHcm91cElkcyxcbj4oa2V5OiBOb0luZmVyPERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pOiBUaGVtZUdldHRlciA9PiB7XG4gICAgY29uc3QgdGhlbWVHZXR0ZXIgPSAodGhlbWU6IFRoZW1lT2JqZWN0PERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pID0+XG4gICAgICAgIHRoZW1lW2tleV0gfHwgW11cblxuICAgIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlIGFzIGNvbnN0XG5cbiAgICByZXR1cm4gdGhlbWVHZXR0ZXJcbn1cbiIsICJjb25zdCBhcmJpdHJhcnlWYWx1ZVJlZ2V4ID0gL15cXFsoPzooW2Etei1dKyk6KT8oLispXFxdJC9pXG5jb25zdCBmcmFjdGlvblJlZ2V4ID0gL15cXGQrXFwvXFxkKyQvXG5jb25zdCBzdHJpbmdMZW5ndGhzID0gbmV3IFNldChbJ3B4JywgJ2Z1bGwnLCAnc2NyZWVuJ10pXG5jb25zdCB0c2hpcnRVbml0UmVnZXggPSAvXihcXGQrKFxcLlxcZCspPyk/KHhzfHNtfG1kfGxnfHhsKSQvXG5jb25zdCBsZW5ndGhVbml0UmVnZXggPVxuICAgIC9cXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcXGIoY2FsY3xtaW58bWF4fGNsYW1wKVxcKC4rXFwpfF4wJC9cbmNvbnN0IGNvbG9yRnVuY3Rpb25SZWdleCA9IC9eKHJnYmE/fGhzbGE/fGh3Ynwob2spPyhsYWJ8bGNoKSlcXCguK1xcKSQvXG4vLyBTaGFkb3cgYWx3YXlzIGJlZ2lucyB3aXRoIHggYW5kIHkgb2Zmc2V0IHNlcGFyYXRlZCBieSB1bmRlcnNjb3JlIG9wdGlvbmFsbHkgcHJlcGVuZGVkIGJ5IGluc2V0XG5jb25zdCBzaGFkb3dSZWdleCA9IC9eKGluc2V0Xyk/LT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MClfLT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MCkvXG5jb25zdCBpbWFnZVJlZ2V4ID1cbiAgICAvXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVxcKC4rXFwpJC9cblxuZXhwb3J0IGNvbnN0IGlzTGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgaXNOdW1iZXIodmFsdWUpIHx8IHN0cmluZ0xlbmd0aHMuaGFzKHZhbHVlKSB8fCBmcmFjdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUxlbmd0aCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdsZW5ndGgnLCBpc0xlbmd0aE9ubHkpXG5cbmV4cG9ydCBjb25zdCBpc051bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeU51bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbnVtYmVyJywgaXNOdW1iZXIpXG5cbmV4cG9ydCBjb25zdCBpc0ludGVnZXIgPSAodmFsdWU6IHN0cmluZykgPT4gQm9vbGVhbih2YWx1ZSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIodmFsdWUpKVxuXG5leHBvcnQgY29uc3QgaXNQZXJjZW50ID0gKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlLmVuZHNXaXRoKCclJykgJiYgaXNOdW1iZXIodmFsdWUuc2xpY2UoMCwgLTEpKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBhcmJpdHJhcnlWYWx1ZVJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc1RzaGlydFNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gdHNoaXJ0VW5pdFJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IHNpemVMYWJlbHMgPSBuZXcgU2V0KFsnbGVuZ3RoJywgJ3NpemUnLCAncGVyY2VudGFnZSddKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaXplID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIHNpemVMYWJlbHMsIGlzTmV2ZXIpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVBvc2l0aW9uID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ3Bvc2l0aW9uJywgaXNOZXZlcilcblxuY29uc3QgaW1hZ2VMYWJlbHMgPSBuZXcgU2V0KFsnaW1hZ2UnLCAndXJsJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIGltYWdlTGFiZWxzLCBpc0ltYWdlKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaGFkb3cgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJycsIGlzU2hhZG93KVxuXG5leHBvcnQgY29uc3QgaXNBbnkgPSAoKSA9PiB0cnVlXG5cbmNvbnN0IGdldElzQXJiaXRyYXJ5VmFsdWUgPSAoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBsYWJlbDogc3RyaW5nIHwgU2V0PHN0cmluZz4sXG4gICAgdGVzdFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbixcbikgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGFyYml0cmFyeVZhbHVlUmVnZXguZXhlYyh2YWx1ZSlcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgaWYgKHJlc3VsdFsxXSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgPyByZXN1bHRbMV0gPT09IGxhYmVsIDogbGFiZWwuaGFzKHJlc3VsdFsxXSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXN0VmFsdWUocmVzdWx0WzJdISlcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgaXNMZW5ndGhPbmx5ID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgLy8gYGNvbG9yRnVuY3Rpb25SZWdleGAgY2hlY2sgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgY29sb3IgZnVuY3Rpb25zIGNhbiBoYXZlIHBlcmNlbnRhZ2VzIGluIHRoZW0gd2hpY2ggd2hpY2ggd291bGQgYmUgaW5jb3JyZWN0bHkgY2xhc3NpZmllZCBhcyBsZW5ndGhzLlxuICAgIC8vIEZvciBleGFtcGxlLCBgaHNsKDAgMCUgMCUpYCB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIGEgbGVuZ3RoIHdpdGhvdXQgdGhpcyBjaGVjay5cbiAgICAvLyBJIGNvdWxkIGFsc28gdXNlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGluIGBsZW5ndGhVbml0UmVnZXhgIGJ1dCB0aGF0IGlzbid0IHN1cHBvcnRlZCB3aWRlbHkgZW5vdWdoLlxuICAgIGxlbmd0aFVuaXRSZWdleC50ZXN0KHZhbHVlKSAmJiAhY29sb3JGdW5jdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzTmV2ZXIgPSAoKSA9PiBmYWxzZVxuXG5jb25zdCBpc1NoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBzaGFkb3dSZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBpc0ltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGltYWdlUmVnZXgudGVzdCh2YWx1ZSlcbiIsICJpbXBvcnQgeyBmcm9tVGhlbWUgfSBmcm9tICcuL2Zyb20tdGhlbWUnXG5pbXBvcnQgeyBDb25maWcsIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQge1xuICAgIGlzQW55LFxuICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgaXNBcmJpdHJhcnlMZW5ndGgsXG4gICAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gICAgaXNBcmJpdHJhcnlQb3NpdGlvbixcbiAgICBpc0FyYml0cmFyeVNoYWRvdyxcbiAgICBpc0FyYml0cmFyeVNpemUsXG4gICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICBpc0ludGVnZXIsXG4gICAgaXNMZW5ndGgsXG4gICAgaXNOdW1iZXIsXG4gICAgaXNQZXJjZW50LFxuICAgIGlzVHNoaXJ0U2l6ZSxcbn0gZnJvbSAnLi92YWxpZGF0b3JzJ1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdENvbmZpZyA9ICgpID0+IHtcbiAgICBjb25zdCBjb2xvcnMgPSBmcm9tVGhlbWUoJ2NvbG9ycycpXG4gICAgY29uc3Qgc3BhY2luZyA9IGZyb21UaGVtZSgnc3BhY2luZycpXG4gICAgY29uc3QgYmx1ciA9IGZyb21UaGVtZSgnYmx1cicpXG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IGZyb21UaGVtZSgnYnJpZ2h0bmVzcycpXG4gICAgY29uc3QgYm9yZGVyQ29sb3IgPSBmcm9tVGhlbWUoJ2JvcmRlckNvbG9yJylcbiAgICBjb25zdCBib3JkZXJSYWRpdXMgPSBmcm9tVGhlbWUoJ2JvcmRlclJhZGl1cycpXG4gICAgY29uc3QgYm9yZGVyU3BhY2luZyA9IGZyb21UaGVtZSgnYm9yZGVyU3BhY2luZycpXG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBmcm9tVGhlbWUoJ2JvcmRlcldpZHRoJylcbiAgICBjb25zdCBjb250cmFzdCA9IGZyb21UaGVtZSgnY29udHJhc3QnKVxuICAgIGNvbnN0IGdyYXlzY2FsZSA9IGZyb21UaGVtZSgnZ3JheXNjYWxlJylcbiAgICBjb25zdCBodWVSb3RhdGUgPSBmcm9tVGhlbWUoJ2h1ZVJvdGF0ZScpXG4gICAgY29uc3QgaW52ZXJ0ID0gZnJvbVRoZW1lKCdpbnZlcnQnKVxuICAgIGNvbnN0IGdhcCA9IGZyb21UaGVtZSgnZ2FwJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcHMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wcycpXG4gICAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zJylcbiAgICBjb25zdCBpbnNldCA9IGZyb21UaGVtZSgnaW5zZXQnKVxuICAgIGNvbnN0IG1hcmdpbiA9IGZyb21UaGVtZSgnbWFyZ2luJylcbiAgICBjb25zdCBvcGFjaXR5ID0gZnJvbVRoZW1lKCdvcGFjaXR5JylcbiAgICBjb25zdCBwYWRkaW5nID0gZnJvbVRoZW1lKCdwYWRkaW5nJylcbiAgICBjb25zdCBzYXR1cmF0ZSA9IGZyb21UaGVtZSgnc2F0dXJhdGUnKVxuICAgIGNvbnN0IHNjYWxlID0gZnJvbVRoZW1lKCdzY2FsZScpXG4gICAgY29uc3Qgc2VwaWEgPSBmcm9tVGhlbWUoJ3NlcGlhJylcbiAgICBjb25zdCBza2V3ID0gZnJvbVRoZW1lKCdza2V3JylcbiAgICBjb25zdCBzcGFjZSA9IGZyb21UaGVtZSgnc3BhY2UnKVxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IGZyb21UaGVtZSgndHJhbnNsYXRlJylcblxuICAgIGNvbnN0IGdldE92ZXJzY3JvbGwgPSAoKSA9PiBbJ2F1dG8nLCAnY29udGFpbicsICdub25lJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRPdmVyZmxvdyA9ICgpID0+IFsnYXV0bycsICdoaWRkZW4nLCAnY2xpcCcsICd2aXNpYmxlJywgJ3Njcm9sbCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSA9ICgpID0+IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSA9ICgpID0+IFsnJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0UG9zaXRpb25zID0gKCkgPT5cbiAgICAgICAgW1xuICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICdsZWZ0LWJvdHRvbScsXG4gICAgICAgICAgICAnbGVmdC10b3AnLFxuICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgICdyaWdodC1ib3R0b20nLFxuICAgICAgICAgICAgJ3JpZ2h0LXRvcCcsXG4gICAgICAgICAgICAndG9wJyxcbiAgICAgICAgXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExpbmVTdHlsZXMgPSAoKSA9PiBbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJsZW5kTW9kZXMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICdtdWx0aXBseScsXG4gICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICdvdmVybGF5JyxcbiAgICAgICAgICAgICdkYXJrZW4nLFxuICAgICAgICAgICAgJ2xpZ2h0ZW4nLFxuICAgICAgICAgICAgJ2NvbG9yLWRvZGdlJyxcbiAgICAgICAgICAgICdjb2xvci1idXJuJyxcbiAgICAgICAgICAgICdoYXJkLWxpZ2h0JyxcbiAgICAgICAgICAgICdzb2Z0LWxpZ2h0JyxcbiAgICAgICAgICAgICdkaWZmZXJlbmNlJyxcbiAgICAgICAgICAgICdleGNsdXNpb24nLFxuICAgICAgICAgICAgJ2h1ZScsXG4gICAgICAgICAgICAnc2F0dXJhdGlvbicsXG4gICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgJ2x1bWlub3NpdHknLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QWxpZ24gPSAoKSA9PlxuICAgICAgICBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmV0d2VlbicsICdhcm91bmQnLCAnZXZlbmx5JywgJ3N0cmV0Y2gnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFplcm9BbmRFbXB0eSA9ICgpID0+IFsnJywgJzAnLCBpc0FyYml0cmFyeVZhbHVlXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJyZWFrcyA9ICgpID0+XG4gICAgICAgIFsnYXV0bycsICdhdm9pZCcsICdhbGwnLCAnYXZvaWQtcGFnZScsICdwYWdlJywgJ2xlZnQnLCAncmlnaHQnLCAnY29sdW1uJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXROdW1iZXJBbmRBcmJpdHJhcnkgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYWNoZVNpemU6IDUwMCxcbiAgICAgICAgc2VwYXJhdG9yOiAnOicsXG4gICAgICAgIHRoZW1lOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFtpc0FueV0sXG4gICAgICAgICAgICBzcGFjaW5nOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGJsdXI6IFsnbm9uZScsICcnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgICAgICAgYnJpZ2h0bmVzczogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogW2NvbG9yc10sXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IFsnbm9uZScsICcnLCAnZnVsbCcsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBib3JkZXJTcGFjaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgY29udHJhc3Q6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JheXNjYWxlOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIGh1ZVJvdGF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBpbnZlcnQ6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgZ2FwOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BzOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zOiBbaXNQZXJjZW50LCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICAgICAgICBpbnNldDogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBtYXJnaW46IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgb3BhY2l0eTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBwYWRkaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2F0dXJhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2NhbGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2VwaWE6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgc2tldzogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzcGFjZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NHcm91cHM6IHtcbiAgICAgICAgICAgIC8vIExheW91dFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBc3BlY3QgUmF0aW9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hc3BlY3QtcmF0aW9cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXNwZWN0OiBbeyBhc3BlY3Q6IFsnYXV0bycsICdzcXVhcmUnLCAndmlkZW8nLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udGFpbmVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGFpbmVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRhaW5lcjogWydjb250YWluZXInXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29sdW1uczogW3sgY29sdW1uczogW2lzVHNoaXJ0U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEFmdGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYWZ0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWFmdGVyJzogW3sgJ2JyZWFrLWFmdGVyJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEJlZm9yZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWJlZm9yZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYmVmb3JlJzogW3sgJ2JyZWFrLWJlZm9yZSc6IGdldEJyZWFrcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBJbnNpZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1pbnNpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWluc2lkZSc6IFt7ICdicmVhay1pbnNpZGUnOiBbJ2F1dG8nLCAnYXZvaWQnLCAnYXZvaWQtcGFnZScsICdhdm9pZC1jb2x1bW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IERlY29yYXRpb24gQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtZGVjb3JhdGlvbi1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm94LWRlY29yYXRpb24nOiBbeyAnYm94LWRlY29yYXRpb24nOiBbJ3NsaWNlJywgJ2Nsb25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaXppbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2l6aW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJveDogW3sgYm94OiBbJ2JvcmRlcicsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpc3BsYXlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXNwbGF5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGRpc3BsYXk6IFtcbiAgICAgICAgICAgICAgICAnYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUnLFxuICAgICAgICAgICAgICAgICdmbGV4JyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgICAgICAgJ2lubGluZS10YWJsZScsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNhcHRpb24nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jZWxsJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtZm9vdGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtaGVhZGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93LWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93JyxcbiAgICAgICAgICAgICAgICAnZmxvdy1yb290JyxcbiAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ncmlkJyxcbiAgICAgICAgICAgICAgICAnY29udGVudHMnLFxuICAgICAgICAgICAgICAgICdsaXN0LWl0ZW0nLFxuICAgICAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxvYXRzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxvYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxvYXQ6IFt7IGZsb2F0OiBbJ3JpZ2h0JywgJ2xlZnQnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2xlYXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jbGVhclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjbGVhcjogW3sgY2xlYXI6IFsnbGVmdCcsICdyaWdodCcsICdib3RoJywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElzb2xhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2lzb2xhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpc29sYXRpb246IFsnaXNvbGF0ZScsICdpc29sYXRpb24tYXV0byddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPYmplY3QgRml0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LWZpdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LWZpdCc6IFt7IG9iamVjdDogWydjb250YWluJywgJ2NvdmVyJywgJ2ZpbGwnLCAnbm9uZScsICdzY2FsZS1kb3duJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LXBvc2l0aW9uJzogW3sgb2JqZWN0OiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJmbG93OiBbeyBvdmVyZmxvdzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3cgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyZmxvdy14JzogW3sgJ292ZXJmbG93LXgnOiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXknOiBbeyAnb3ZlcmZsb3cteSc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFt7IG92ZXJzY3JvbGw6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC14JzogW3sgJ292ZXJzY3JvbGwteCc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC15JzogW3sgJ292ZXJzY3JvbGwteSc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwb3NpdGlvbjogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcCAvIFJpZ2h0IC8gQm90dG9tIC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnNldDogW3sgaW5zZXQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0IC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaW5zZXQteCc6IFt7ICdpbnNldC14JzogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC15JzogW3sgJ2luc2V0LXknOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdGFydDogW3sgc3RhcnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlbmQ6IFt7IGVuZDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvcDogW3sgdG9wOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByaWdodDogW3sgcmlnaHQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBib3R0b206IFt7IGJvdHRvbTogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZWZ0OiBbeyBsZWZ0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWaXNpYmlsaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmlzaWJpbGl0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBbJ3Zpc2libGUnLCAnaW52aXNpYmxlJywgJ2NvbGxhcHNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFotSW5kZXhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy96LWluZGV4XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHo6IFt7IHo6IFsnYXV0bycsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBGbGV4Ym94IGFuZCBHcmlkXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggQmFzaXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWJhc2lzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJhc2lzOiBbeyBiYXNpczogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggRGlyZWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1kaXJlY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZsZXgtZGlyZWN0aW9uJzogW3sgZmxleDogWydyb3cnLCAncm93LXJldmVyc2UnLCAnY29sJywgJ2NvbC1yZXZlcnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggV3JhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtd3JhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC13cmFwJzogW3sgZmxleDogWyd3cmFwJywgJ3dyYXAtcmV2ZXJzZScsICdub3dyYXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxleDogW3sgZmxleDogWycxJywgJ2F1dG8nLCAnaW5pdGlhbCcsICdub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggR3Jvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZ3Jvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBncm93OiBbeyBncm93OiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBTaHJpbmtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXNocmlua1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaHJpbms6IFt7IHNocmluazogZ2V0WmVyb0FuZEVtcHR5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9yZGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3JkZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3JkZXI6IFt7IG9yZGVyOiBbJ2ZpcnN0JywgJ2xhc3QnLCAnbm9uZScsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1jb2xzJzogW3sgJ2dyaWQtY29scyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2w6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3BhbjogWydmdWxsJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0JzogW3sgJ2NvbC1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtZW5kJzogW3sgJ2NvbC1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFRlbXBsYXRlIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLXJvd3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtcm93cyc6IFt7ICdncmlkLXJvd3MnOiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydCAvIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQtZW5kJzogW1xuICAgICAgICAgICAgICAgIHsgcm93OiBbJ2F1dG8nLCB7IHNwYW46IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQnOiBbeyAncm93LXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1lbmQnOiBbeyAncm93LWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBGbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtZmxvdyc6IFt7ICdncmlkLWZsb3cnOiBbJ3JvdycsICdjb2wnLCAnZGVuc2UnLCAncm93LWRlbnNlJywgJ2NvbC1kZW5zZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLWNvbHMnOiBbeyAnYXV0by1jb2xzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYXV0by1yb3dzJzogW3sgJ2F1dG8tcm93cyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBnYXA6IFt7IGdhcDogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteCc6IFt7ICdnYXAteCc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXAgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ2FwLXknOiBbeyAnZ2FwLXknOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBbeyBqdXN0aWZ5OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1pdGVtcyc6IFt7ICdqdXN0aWZ5LWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LXNlbGYnOiBbeyAnanVzdGlmeS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24tY29udGVudCc6IFt7IGNvbnRlbnQ6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24taXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLWl0ZW1zJzogW3sgaXRlbXM6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1zZWxmJzogW3sgc2VsZjogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCcsICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2UtY29udGVudCc6IFt7ICdwbGFjZS1jb250ZW50JzogWy4uLmdldEFsaWduKCksICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1pdGVtcyc6IFt7ICdwbGFjZS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1zZWxmJzogW3sgJ3BsYWNlLXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvLyBTcGFjaW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHA6IFt7IHA6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweDogW3sgcHg6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweTogW3sgcHk6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHM6IFt7IHBzOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwZTogW3sgcGU6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB0OiBbeyBwdDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwcjogW3sgcHI6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBiOiBbeyBwYjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBsOiBbeyBwbDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbTogW3sgbTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG14OiBbeyBteDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG15OiBbeyBteTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtczogW3sgbXM6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1lOiBbeyBtZTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXQ6IFt7IG10OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1yOiBbeyBtcjogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWI6IFt7IG1iOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWw6IFt7IG1sOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgnOiBbeyAnc3BhY2UteCc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgtcmV2ZXJzZSc6IFsnc3BhY2UteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15JzogW3sgJ3NwYWNlLXknOiBbc3BhY2VdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFkgUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15LXJldmVyc2UnOiBbJ3NwYWNlLXktcmV2ZXJzZSddLFxuICAgICAgICAgICAgLy8gU2l6aW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZ3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLXcnOiBbeyAnbWluLXcnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmdWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNjcmVlbjogW2lzVHNoaXJ0U2l6ZV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVHNoaXJ0U2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdmgnLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaW4tSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLWgnOiBbXG4gICAgICAgICAgICAgICAgeyAnbWluLWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtaCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtYXgtaCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2l6ZTogW3sgc2l6ZTogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdhdXRvJywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvLyBUeXBvZ3JhcGh5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zaXplJzogW3sgdGV4dDogWydiYXNlJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU21vb3RoaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zbW9vdGhpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc21vb3RoaW5nJzogWydhbnRpYWxpYXNlZCcsICdzdWJwaXhlbC1hbnRpYWxpYXNlZCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zdHlsZSc6IFsnaXRhbGljJywgJ25vdC1pdGFsaWMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBXZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXdlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC13ZWlnaHQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmb250OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGhpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZW1pYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdibGFjaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBGYW1pbHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LWZhbWlseVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1mYW1pbHknOiBbeyBmb250OiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogWydub3JtYWwtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnb3JkaW5hbCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydzbGFzaGVkLXplcm8nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnbGluaW5nLW51bXMnLCAnb2xkc3R5bGUtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc3BhY2luZyc6IFsncHJvcG9ydGlvbmFsLW51bXMnLCAndGFidWxhci1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZGlhZ29uYWwtZnJhY3Rpb25zJywgJ3N0YWNrZWQtZnJhY3RvbnMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGV0dGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9sZXR0ZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgQ2xhbXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWNsYW1wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogW3sgJ2xpbmUtY2xhbXAnOiBbJ25vbmUnLCBpc051bWJlciwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaW5lIEhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc251ZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyZWxheGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsb29zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LWltYWdlJzogW3sgJ2xpc3QtaW1hZ2UnOiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXR5cGUnOiBbeyBsaXN0OiBbJ25vbmUnLCAnZGlzYycsICdkZWNpbWFsJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJzogW3sgbGlzdDogWydpbnNpZGUnLCAnb3V0c2lkZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBDb2xvclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZWhvbGRlci1jb2xvcic6IFt7IHBsYWNlaG9sZGVyOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2Vob2xkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbeyAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBBbGlnbm1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWFsaWdubWVudCc6IFt7IHRleHQ6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnanVzdGlmeScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtY29sb3InOiBbeyB0ZXh0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW9wYWNpdHknOiBbeyAndGV4dC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbic6IFsndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCcsICduby11bmRlcmxpbmUnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnOiBbeyBkZWNvcmF0aW9uOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnd2F2eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gVGhpY2tuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyc6IFtcbiAgICAgICAgICAgICAgICB7IGRlY29yYXRpb246IFsnYXV0bycsICdmcm9tLWZvbnQnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFVuZGVybGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXVuZGVybGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3VuZGVybGluZS1vZmZzZXQnOiBbeyAndW5kZXJsaW5lLW9mZnNldCc6IFsnYXV0bycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tY29sb3InOiBbeyBkZWNvcmF0aW9uOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBUcmFuc2Zvcm1cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXRyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1vdmVyZmxvdyc6IFsndHJ1bmNhdGUnLCAndGV4dC1lbGxpcHNpcycsICd0ZXh0LWNsaXAnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXdyYXAnOiBbeyB0ZXh0OiBbJ3dyYXAnLCAnbm93cmFwJywgJ2JhbGFuY2UnLCAncHJldHR5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgSW5kZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1pbmRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5kZW50OiBbeyBpbmRlbnQ6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZlcnRpY2FsIEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3ZlcnRpY2FsLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd2ZXJ0aWNhbC1hbGlnbic6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFzZWxpbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWlkZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtdG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWJvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ViJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdXBlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaGl0ZXNwYWNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2hpdGVzcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3aGl0ZXNwYWNlOiBbXG4gICAgICAgICAgICAgICAgeyB3aGl0ZXNwYWNlOiBbJ25vcm1hbCcsICdub3dyYXAnLCAncHJlJywgJ3ByZS1saW5lJywgJ3ByZS13cmFwJywgJ2JyZWFrLXNwYWNlcyddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXb3JkIEJyZWFrXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd29yZC1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmVhazogW3sgYnJlYWs6IFsnbm9ybWFsJywgJ3dvcmRzJywgJ2FsbCcsICdrZWVwJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEh5cGhlbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oeXBoZW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGh5cGhlbnM6IFt7IGh5cGhlbnM6IFsnbm9uZScsICdtYW51YWwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250ZW50OiBbeyBjb250ZW50OiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEJhY2tncm91bmRzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQXR0YWNobWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYXR0YWNobWVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctYXR0YWNobWVudCc6IFt7IGJnOiBbJ2ZpeGVkJywgJ2xvY2FsJywgJ3Njcm9sbCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENsaXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNsaXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWNsaXAnOiBbeyAnYmctY2xpcCc6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCcsICd0ZXh0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3BhY2l0eVxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctb3BhY2l0eSc6IFt7ICdiZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcmlnaW4nOiBbeyAnYmctb3JpZ2luJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1wb3NpdGlvbic6IFt7IGJnOiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5UG9zaXRpb25dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFJlcGVhdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcmVwZWF0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1yZXBlYXQnOiBbeyBiZzogWyduby1yZXBlYXQnLCB7IHJlcGVhdDogWycnLCAneCcsICd5JywgJ3JvdW5kJywgJ3NwYWNlJ10gfV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctc2l6ZSc6IFt7IGJnOiBbJ2F1dG8nLCAnY292ZXInLCAnY29udGFpbicsIGlzQXJiaXRyYXJ5U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1pbWFnZSc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7ICdncmFkaWVudC10byc6IFsndCcsICd0cicsICdyJywgJ2JyJywgJ2InLCAnYmwnLCAnbCcsICd0bCddIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeUltYWdlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY29sb3InOiBbeyBiZzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb20gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbS1wb3MnOiBbeyBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWEgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhLXBvcyc6IFt7IHZpYTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG8gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8tcG9zJzogW3sgdG86IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbSc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8nOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvLyBCb3JkZXJzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJvdW5kZWQ6IFt7IHJvdW5kZWQ6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zJzogW3sgJ3JvdW5kZWQtcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZSc6IFt7ICdyb3VuZGVkLWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbeyAncm91bmRlZC10JzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXInOiBbeyAncm91bmRlZC1yJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1iJzogW3sgJ3JvdW5kZWQtYic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbeyAncm91bmRlZC1sJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNzJzogW3sgJ3JvdW5kZWQtc3MnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNlJzogW3sgJ3JvdW5kZWQtc2UnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lZSc6IFt7ICdyb3VuZGVkLWVlJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lcyc6IFt7ICdyb3VuZGVkLWVzJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRsJzogW3sgJ3JvdW5kZWQtdGwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRyJzogW3sgJ3JvdW5kZWQtdHInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWJyJzogW3sgJ3JvdW5kZWQtYnInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYmwnOiBbeyAncm91bmRlZC1ibCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13JzogW3sgYm9yZGVyOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFt7ICdib3JkZXIteCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1zJzogW3sgJ2JvcmRlci1zJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctZSc6IFt7ICdib3JkZXItZSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1iJzogW3sgJ2JvcmRlci1iJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItb3BhY2l0eSc6IFt7ICdib3JkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3R5bGUnOiBbeyBib3JkZXI6IFsuLi5nZXRMaW5lU3R5bGVzKCksICdoaWRkZW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS14JzogW3sgJ2RpdmlkZS14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFggUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgtcmV2ZXJzZSc6IFsnZGl2aWRlLXgtcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXknOiBbeyAnZGl2aWRlLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteS1yZXZlcnNlJzogWydkaXZpZGUteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1vcGFjaXR5JzogW3sgJ2RpdmlkZS1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1zdHlsZSc6IFt7IGRpdmlkZTogZ2V0TGluZVN0eWxlcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvcic6IFt7IGJvcmRlcjogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJzogW3sgJ2JvcmRlci1yJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1jb2xvcic6IFt7IGRpdmlkZTogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtc3R5bGUnOiBbeyBvdXRsaW5lOiBbJycsIC4uLmdldExpbmVTdHlsZXMoKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgT2Zmc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW3sgJ291dGxpbmUtb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtdyc6IFt7IG91dGxpbmU6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1jb2xvcic6IFt7IG91dGxpbmU6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy13JzogW3sgcmluZzogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGggSW5zZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXctaW5zZXQnOiBbJ3JpbmctaW5zZXQnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JpbmctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JpbmctY29sb3InOiBbeyByaW5nOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9wYWNpdHknOiBbeyAncmluZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9mZnNldCBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9mZnNldC13JzogW3sgJ3Jpbmctb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LWNvbG9yJzogW3sgJ3Jpbmctb2Zmc2V0JzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvLyBFZmZlY3RzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNoYWRvdzogW3sgc2hhZG93OiBbJycsICdpbm5lcicsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVNoYWRvd10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3cgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzaGFkb3ctY29sb3InOiBbeyBzaGFkb3c6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9wYWNpdHk6IFt7IG9wYWNpdHk6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWl4IEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taXgtYmxlbmQtbW9kZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWl4LWJsZW5kJzogW3sgJ21peC1ibGVuZCc6IFsuLi5nZXRCbGVuZE1vZGVzKCksICdwbHVzLWxpZ2h0ZXInLCAncGx1cy1kYXJrZXInXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBCbGVuZCBNb2RlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1ibGVuZCc6IFt7ICdiZy1ibGVuZCc6IGdldEJsZW5kTW9kZXMoKSB9XSxcbiAgICAgICAgICAgIC8vIEZpbHRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZpbHRlcjogW3sgZmlsdGVyOiBbJycsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJsdXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ibHVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJsdXI6IFt7IGJsdXI6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnJpZ2h0bmVzczogW3sgYnJpZ2h0bmVzczogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRyYXN0OiBbeyBjb250cmFzdDogW2NvbnRyYXN0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRHJvcCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kcm9wLXNoYWRvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZHJvcC1zaGFkb3cnOiBbeyAnZHJvcC1zaGFkb3cnOiBbJycsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JheXNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JheXNjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyYXlzY2FsZTogW3sgZ3JheXNjYWxlOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2h1ZS1yb3RhdGUnOiBbeyAnaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW52ZXJ0OiBbeyBpbnZlcnQ6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNhdHVyYXRlOiBbeyBzYXR1cmF0ZTogW3NhdHVyYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2VwaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zZXBpYVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzZXBpYTogW3sgc2VwaWE6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEZpbHRlclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWZpbHRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZmlsdGVyJzogW3sgJ2JhY2tkcm9wLWZpbHRlcic6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbeyAnYmFja2Ryb3AtYmx1cic6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbeyAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFticmlnaHRuZXNzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQ29udHJhc3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1jb250cmFzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtY29udHJhc3QnOiBbeyAnYmFja2Ryb3AtY29udHJhc3QnOiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFt7ICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWh1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbeyAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFt7ICdiYWNrZHJvcC1pbnZlcnQnOiBbaW52ZXJ0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbeyAnYmFja2Ryb3Atb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgU2F0dXJhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zYXR1cmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbeyAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zZXBpYSc6IFt7ICdiYWNrZHJvcC1zZXBpYSc6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvLyBUYWJsZXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbGxhcHNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbGxhcHNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sbGFwc2UnOiBbeyBib3JkZXI6IFsnY29sbGFwc2UnLCAnc2VwYXJhdGUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbeyAnYm9yZGVyLXNwYWNpbmcnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteCc6IFt7ICdib3JkZXItc3BhY2luZy14JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbeyAnYm9yZGVyLXNwYWNpbmcteSc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGFibGUgTGF5b3V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGFibGUtbGF5b3V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0YWJsZS1sYXlvdXQnOiBbeyB0YWJsZTogWydhdXRvJywgJ2ZpeGVkJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcHRpb24gU2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NhcHRpb24tc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjYXB0aW9uOiBbeyBjYXB0aW9uOiBbJ3RvcCcsICdib3R0b20nXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zaXRpb25zIGFuZCBBbmltYXRpb25cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbmlzaXRpb24gUHJvcGVydHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXByb3BlcnR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3JzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGFkb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIER1cmF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kdXJhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkdXJhdGlvbjogW3sgZHVyYXRpb246IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIFRpbWluZyBGdW5jdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVhc2U6IFt7IGVhc2U6IFsnbGluZWFyJywgJ2luJywgJ291dCcsICdpbi1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBEZWxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZGVsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGVsYXk6IFt7IGRlbGF5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQW5pbWF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYW5pbWF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFuaW1hdGU6IFt7IGFuaW1hdGU6IFsnbm9uZScsICdzcGluJywgJ3BpbmcnLCAncHVsc2UnLCAnYm91bmNlJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm1zXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFuc2Zvcm06IFt7IHRyYW5zZm9ybTogWycnLCAnZ3B1JywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzY2FsZTogW3sgc2NhbGU6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2NhbGUteCc6IFt7ICdzY2FsZS14JzogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS15JzogW3sgJ3NjYWxlLXknOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm90YXRlOiBbeyByb3RhdGU6IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXgnOiBbeyAndHJhbnNsYXRlLXgnOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNsYXRlIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zbGF0ZS15JzogW3sgJ3RyYW5zbGF0ZS15JzogW3RyYW5zbGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteCc6IFt7ICdza2V3LXgnOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteSc6IFt7ICdza2V3LXknOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybSBPcmlnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm0tb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIEludGVyYWN0aXZpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWNjZW50IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWNjZW50LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFjY2VudDogW3sgYWNjZW50OiBbJ2F1dG8nLCBjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBcHBlYXJhbmNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXBwZWFyYW5jZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBbeyBhcHBlYXJhbmNlOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDdXJzb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jdXJzb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY3Vyc29yOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3YWl0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtb3ZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3QtYWxsb3dlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29udGV4dC1tZW51JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9ncmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY3Jvc3NoYWlyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ0aWNhbC10ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGlhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29weScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm8tZHJvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYmJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbC1zY3JvbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbC1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ24tcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ253LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnMtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZXN3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbndzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20taW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20tb3V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcmV0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdC1pbi10aW1lLW1vZGUjY2FyZXQtY29sb3ItdXRpbGl0aWVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjYXJldC1jb2xvcic6IFt7IGNhcmV0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9pbnRlciBFdmVudHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb2ludGVyLWV2ZW50c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncG9pbnRlci1ldmVudHMnOiBbeyAncG9pbnRlci1ldmVudHMnOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZXNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yZXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmVzaXplOiBbeyByZXNpemU6IFsnbm9uZScsICd5JywgJ3gnLCAnJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLWJlaGF2aW9yJzogW3sgc2Nyb2xsOiBbJ2F1dG8nLCAnc21vb3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbSc6IFt7ICdzY3JvbGwtbSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFt7ICdzY3JvbGwtbXgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbeyAnc2Nyb2xsLW15JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tcyc6IFt7ICdzY3JvbGwtbXMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tZSc6IFt7ICdzY3JvbGwtbWUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tdCc6IFt7ICdzY3JvbGwtbXQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1yJzogW3sgJ3Njcm9sbC1tcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1iJzogW3sgJ3Njcm9sbC1tYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tbCc6IFt7ICdzY3JvbGwtbWwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFt7ICdzY3JvbGwtcCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogW3sgJ3Njcm9sbC1weCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogW3sgJ3Njcm9sbC1weSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wcyc6IFt7ICdzY3JvbGwtcHMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBlJzogW3sgJ3Njcm9sbC1wZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHQnOiBbeyAnc2Nyb2xsLXB0JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXByJzogW3sgJ3Njcm9sbC1wcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGInOiBbeyAnc2Nyb2xsLXBiJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGwnOiBbeyAnc2Nyb2xsLXBsJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgQWxpZ25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1hbGlnbic6IFt7IHNuYXA6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdhbGlnbi1ub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFN0b3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1zdG9wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0b3AnOiBbeyBzbmFwOiBbJ25vcm1hbCcsICdhbHdheXMnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtdHlwZSc6IFt7IHNuYXA6IFsnbm9uZScsICd4JywgJ3knLCAnYm90aCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlIFN0cmljdG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0cmljdG5lc3MnOiBbeyBzbmFwOiBbJ21hbmRhdG9yeScsICdwcm94aW1pdHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvdWNoOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0b3VjaDogWydhdXRvJywgJ25vbmUnLCAnbWFuaXB1bGF0aW9uJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC14JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneCcsICdsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC15JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneScsICd1cCcsICdkb3duJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBQaW5jaCBab29tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gtcGluY2gtem9vbSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBVc2VyIFNlbGVjdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3VzZXItc2VsZWN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlbGVjdDogW3sgc2VsZWN0OiBbJ25vbmUnLCAndGV4dCcsICdhbGwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaWxsIENoYW5nZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpbGwtY2hhbmdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd3aWxsLWNoYW5nZSc6IFtcbiAgICAgICAgICAgICAgICB7ICd3aWxsLWNoYW5nZSc6IFsnYXV0bycsICdzY3JvbGwnLCAnY29udGVudHMnLCAndHJhbnNmb3JtJywgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBTVkdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsbFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbGxcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsbDogW3sgZmlsbDogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3Ryb2tlIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzdHJva2Utdyc6IFt7IHN0cm9rZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aCwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3Ryb2tlOiBbeyBzdHJva2U6IFtjb2xvcnMsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvLyBBY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcmVlbiBSZWFkZXJzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NyZWVuLXJlYWRlcnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3I6IFsnc3Itb25seScsICdub3Qtc3Itb25seSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JjZWQgQ29sb3IgQWRqdXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9yY2VkLWNvbG9yLWFkanVzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFt7ICdmb3JjZWQtY29sb3ItYWRqdXN0JzogWydhdXRvJywgJ25vbmUnXSB9XSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFsnb3ZlcmZsb3cteCcsICdvdmVyZmxvdy15J10sXG4gICAgICAgICAgICBvdmVyc2Nyb2xsOiBbJ292ZXJzY3JvbGwteCcsICdvdmVyc2Nyb2xsLXknXSxcbiAgICAgICAgICAgIGluc2V0OiBbJ2luc2V0LXgnLCAnaW5zZXQteScsICdzdGFydCcsICdlbmQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteCc6IFsncmlnaHQnLCAnbGVmdCddLFxuICAgICAgICAgICAgJ2luc2V0LXknOiBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgICAgICAgIGZsZXg6IFsnYmFzaXMnLCAnZ3JvdycsICdzaHJpbmsnXSxcbiAgICAgICAgICAgIGdhcDogWydnYXAteCcsICdnYXAteSddLFxuICAgICAgICAgICAgcDogWydweCcsICdweScsICdwcycsICdwZScsICdwdCcsICdwcicsICdwYicsICdwbCddLFxuICAgICAgICAgICAgcHg6IFsncHInLCAncGwnXSxcbiAgICAgICAgICAgIHB5OiBbJ3B0JywgJ3BiJ10sXG4gICAgICAgICAgICBtOiBbJ214JywgJ215JywgJ21zJywgJ21lJywgJ210JywgJ21yJywgJ21iJywgJ21sJ10sXG4gICAgICAgICAgICBteDogWydtcicsICdtbCddLFxuICAgICAgICAgICAgbXk6IFsnbXQnLCAnbWInXSxcbiAgICAgICAgICAgIHNpemU6IFsndycsICdoJ10sXG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgICAgICAnZnZuLW5vcm1hbCc6IFtcbiAgICAgICAgICAgICAgICAnZnZuLW9yZGluYWwnLFxuICAgICAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZpZ3VyZScsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZyYWN0aW9uJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnZnZuLW9yZGluYWwnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnbGluZS1jbGFtcCc6IFsnZGlzcGxheScsICdvdmVyZmxvdyddLFxuICAgICAgICAgICAgcm91bmRlZDogW1xuICAgICAgICAgICAgICAgICdyb3VuZGVkLXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXQnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWwnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWVzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10bCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdHInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJyJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1ibCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcyc6IFsncm91bmRlZC1zcycsICdyb3VuZGVkLWVzJ10sXG4gICAgICAgICAgICAncm91bmRlZC1lJzogWydyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10ciddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFsncm91bmRlZC10cicsICdyb3VuZGVkLWJyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1iJzogWydyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogWydib3JkZXItc3BhY2luZy14JywgJ2JvcmRlci1zcGFjaW5nLXknXSxcbiAgICAgICAgICAgICdib3JkZXItdyc6IFtcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcycsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWUnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFsnYm9yZGVyLXctcicsICdib3JkZXItdy1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXcteSc6IFsnYm9yZGVyLXctdCcsICdib3JkZXItdy1iJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItdCcsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogWydib3JkZXItY29sb3ItcicsICdib3JkZXItY29sb3ItbCddLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogWydib3JkZXItY29sb3ItdCcsICdib3JkZXItY29sb3ItYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtbXgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXgnOiBbJ3Njcm9sbC1tcicsICdzY3JvbGwtbWwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbJ3Njcm9sbC1tdCcsICdzY3JvbGwtbWInXSxcbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFtcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB4JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB5JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBzJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBlJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB0JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXByJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBiJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogWydzY3JvbGwtcHInLCAnc2Nyb2xsLXBsJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogWydzY3JvbGwtcHQnLCAnc2Nyb2xsLXBiJ10sXG4gICAgICAgICAgICB0b3VjaDogWyd0b3VjaC14JywgJ3RvdWNoLXknLCAndG91Y2gtcHonXSxcbiAgICAgICAgICAgICd0b3VjaC14JzogWyd0b3VjaCddLFxuICAgICAgICAgICAgJ3RvdWNoLXknOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gtcHonOiBbJ3RvdWNoJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczoge1xuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgICB9LFxuICAgIH0gYXMgY29uc3Qgc2F0aXNmaWVzIENvbmZpZzxEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHM+XG59XG4iLCAiaW1wb3J0IHsgQ29uZmlnRXh0ZW5zaW9uLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuLyoqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyBDb25maWcgd2hlcmUgb3RoZXIgY29uZmlnIHdpbGwgYmUgbWVyZ2VkIGludG8uIFRoaXMgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZC5cbiAqIEBwYXJhbSBjb25maWdFeHRlbnNpb24gUGFydGlhbCBjb25maWcgdG8gbWVyZ2UgaW50byB0aGUgYGJhc2VDb25maWdgLlxuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDb25maWdzID0gPENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcsIFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcj4oXG4gICAgYmFzZUNvbmZpZzogR2VuZXJpY0NvbmZpZyxcbiAgICB7XG4gICAgICAgIGNhY2hlU2l6ZSxcbiAgICAgICAgcHJlZml4LFxuICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lLFxuICAgICAgICBleHRlbmQgPSB7fSxcbiAgICAgICAgb3ZlcnJpZGUgPSB7fSxcbiAgICB9OiBDb25maWdFeHRlbnNpb248Q2xhc3NHcm91cElkcywgVGhlbWVHcm91cElkcz4sXG4pID0+IHtcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdjYWNoZVNpemUnLCBjYWNoZVNpemUpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAncHJlZml4JywgcHJlZml4KVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3NlcGFyYXRvcicsIHNlcGFyYXRvcilcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZScsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKVxuXG4gICAgZm9yIChjb25zdCBjb25maWdLZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICAgICAgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1tjb25maWdLZXkgYXMga2V5b2YgdHlwZW9mIG92ZXJyaWRlXSxcbiAgICAgICAgICAgIG92ZXJyaWRlW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXh0ZW5kKSB7XG4gICAgICAgIG1lcmdlQ29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgIGJhc2VDb25maWdba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICAgICAgZXh0ZW5kW2tleSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5kXSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBiYXNlQ29uZmlnXG59XG5cbmNvbnN0IG92ZXJyaWRlUHJvcGVydHkgPSA8VCBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIFQ+KFxuICAgIGJhc2VPYmplY3Q6IFQsXG4gICAgb3ZlcnJpZGVLZXk6IEssXG4gICAgb3ZlcnJpZGVWYWx1ZTogVFtLXSB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYmFzZU9iamVjdFtvdmVycmlkZUtleV0gPSBvdmVycmlkZVZhbHVlXG4gICAgfVxufVxuXG5jb25zdCBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMgPSAoXG4gICAgYmFzZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PixcbiAgICBvdmVycmlkZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PiB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvdmVycmlkZU9iamVjdCkge1xuICAgICAgICAgICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBrZXksIG92ZXJyaWRlT2JqZWN0W2tleV0pXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IG1lcmdlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG1lcmdlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG1lcmdlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1lcmdlT2JqZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZVZhbHVlID0gbWVyZ2VPYmplY3Rba2V5XVxuXG4gICAgICAgICAgICBpZiAobWVyZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYmFzZU9iamVjdFtrZXldID0gKGJhc2VPYmplY3Rba2V5XSB8fCBbXSkuY29uY2F0KG1lcmdlVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5pbXBvcnQgeyBtZXJnZUNvbmZpZ3MgfSBmcm9tICcuL21lcmdlLWNvbmZpZ3MnXG5pbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcywgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcblxuZXhwb3J0IGNvbnN0IGV4dGVuZFRhaWx3aW5kTWVyZ2UgPSA8XG4gICAgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuPihcbiAgICBjb25maWdFeHRlbnNpb246XG4gICAgICAgIHwgQ29uZmlnRXh0ZW5zaW9uPFxuICAgICAgICAgICAgICBEZWZhdWx0Q2xhc3NHcm91cElkcyB8IEFkZGl0aW9uYWxDbGFzc0dyb3VwSWRzLFxuICAgICAgICAgICAgICBEZWZhdWx0VGhlbWVHcm91cElkcyB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzXG4gICAgICAgICAgPlxuICAgICAgICB8IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQsXG4gICAgLi4uY3JlYXRlQ29uZmlnOiBDcmVhdGVDb25maWdTdWJzZXF1ZW50W11cbikgPT5cbiAgICB0eXBlb2YgY29uZmlnRXh0ZW5zaW9uID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnLCBjb25maWdFeHRlbnNpb24sIC4uLmNyZWF0ZUNvbmZpZylcbiAgICAgICAgOiBjcmVhdGVUYWlsd2luZE1lcmdlKFxuICAgICAgICAgICAgICAoKSA9PiBtZXJnZUNvbmZpZ3MoZ2V0RGVmYXVsdENvbmZpZygpLCBjb25maWdFeHRlbnNpb24pLFxuICAgICAgICAgICAgICAuLi5jcmVhdGVDb25maWcsXG4gICAgICAgICAgKVxuIiwgImltcG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UgfSBmcm9tICcuL2NyZWF0ZS10YWlsd2luZC1tZXJnZSdcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJ1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZylcbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgdHlwZSBDb2x1bW5EZWYgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBGaWx0ZXJJY29uLCBNYXhpbWl6ZSwgTWluaW1pemUsIFBhbmVsTGVmdENsb3NlLCBQYW5lbExlZnRPcGVuLCBSZWZyZXNoQ3cgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZywgTnVtZXJpY1N0cmluZyB9IGZyb20gXCIuLi8uLi9kYXRhL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvcG9wb3ZlclwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVJbnNlcnQgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlUXVlcnkgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVVcGRhdGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGVcIjtcbmltcG9ydCB7IHVzZUZpbHRlcmluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1wYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNlbGVjdGlvblwiO1xuaW1wb3J0IHsgdXNlU29ydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2Utc29ydGluZ1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsLCBTZWxlY3RIZWFkZXJDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL1NlbGVjdEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IFNlbGVjdFJvd0NlbGwsIFNlbGVjdFJvd0NlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvU2VsZWN0Um93Q2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgRmlsdGVyVHJlZSB9IGZyb20gXCIuL0ZpbHRlclRyZWVcIjtcbmltcG9ydCB7IERhdGFHcmlkIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXJDZWxsIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IGdldElucHV0IH0gZnJvbSBcIi4vaW5wdXQvZ2V0LWlucHV0XCI7XG5pbXBvcnQgeyBTdGFnZWRSb3dzIH0gZnJvbSBcIi4vU3RhZ2VkUm93c1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZVRhYmxlVmlld1Byb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3RpdmVUYWJsZVZpZXcoX3Byb3BzOiBBY3RpdmVUYWJsZVZpZXdQcm9wcykge1xuICBjb25zdCBpc011dGF0aW5nID0gQm9vbGVhbih1c2VJc011dGF0aW5nKCkpO1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yLCBpc0Z1bGxzY3JlZW4sIHRvZ2dsZUZ1bGxzY3JlZW4sIHRvZ2dsZU5hdmlnYXRpb24sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHNvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlIH0gPSB1c2VTb3J0aW5nKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlLCBzZXRQYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3N0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4oW10pO1xuICBjb25zdCB7IGFwcGxpZWRGaWx0ZXIsIHNldEFwcGxpZWRGaWx0ZXIsIGVkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXIsIHRvdGFsRWRpdGluZ0ZpbHRlcnMgfSA9IHVzZUZpbHRlcmluZygpO1xuXG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZywgcmVmZXRjaCB9ID0gdXNlQWN0aXZlVGFibGVRdWVyeSh7XG4gICAgLi4ucGFnaW5hdGlvblN0YXRlLFxuICAgIHNvcnRPcmRlcjogc29ydGluZ1N0YXRlLFxuICAgIGZpbHRlcjogYXBwbGllZEZpbHRlcixcbiAgfSk7XG4gIGNvbnN0IHsgZGVsZXRlU2VsZWN0aW9uLCBpc1NlbGVjdGluZywgcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlIH0gPSB1c2VTZWxlY3Rpb24oZGF0YSk7XG5cbiAgY29uc3QgcmVhZG9ubHkgPSAhT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkuc29tZSgoY29sdW1uKSA9PiBjb2x1bW4uaXNJblByaW1hcnlLZXkpO1xuICBjb25zdCBpc0luc2VydGluZyA9IHVzZUlzSW5zZXJ0aW5nKCk7XG4gIGNvbnN0IGluc2VydCA9IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCk7XG5cbiAgLy8gcmVzZXQgaW5zZXJ0Um93cyB3aGVuIGFjdGl2ZVRhYmxlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHNldFN0YWdlZFJvd3MoW10pLCBbYWN0aXZlVGFibGVdKTtcblxuICBpZiAoIWFjdGl2ZVRhYmxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlU3RhZ2VkUm93cygpIHtcbiAgICBpbnNlcnQubXV0YXRlKHN0YWdlZFJvd3MsIHtcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJSb3dzIGluc2VydGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV3U3RhZ2VkUm93KCkge1xuICAgIC8vIFRPRE86IHRoZSBuZXcgb2JqZWN0IHNob3VsZCBoYXZlIHNvbWUgdGhpbmdzIHNldCB0byBudWxsIGlmIHRoZXkncmUgbnVsbGFibGUgb3IgaGF2ZSBhIGRlZmF1bHQgdmFsdWU/XG4gICAgc2V0U3RhZ2VkUm93cygob2xkKSA9PiBbLi4ub2xkLCB7fV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZHJvcFN0YWdlZFJvd3MoKSB7XG4gICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWU6IHVua25vd24sIGNvbHVtbjogQ29sdW1uLCByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdXBkYXRlLm11dGF0ZSh7XG4gICAgICBkZXRhaWxzOiB7IGNoYW5nZXM6IHsgW2NvbHVtbi5uYW1lXTogdmFsdWUgfSwgcm93LCB0YWJsZTogYWN0aXZlVGFibGUhIH0sXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRmlsdGVyT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKG9wZW4gPT09IHRydWUpIHtcbiAgICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZWRpdGluZ0ZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVhbCBjb2x1bW4gZGVmaW5pdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGFiYXNlIGNvbHVtbnNcbiAgY29uc3QgY29uY3JldGVDb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkubWFwKChjb2x1bW4pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbHVtbi5uYW1lLFxuICAgICAgYWNjZXNzb3JLZXk6IGNvbHVtbi5uYW1lLFxuICAgICAgbWV0YTogY29sdW1uLFxuICAgICAgaGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH0pO1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW4sIHByb3BzIH0pfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlLCBjb2x1bW4sIGNlbGwucm93Lm9yaWdpbmFsKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIC8vIHRoZXNlIGFyZSBjb2x1bW5zIHRoYXQgZXhpc3QgdmlydHVhbGx5IGFuZCBhcmUgbm90IGRiIGNvbHVtbnNcbiAgY29uc3QgdmlydHVhbENvbHVtbkRlZnMgPSBbXG4gICAge1xuICAgICAgaWQ6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGFjY2Vzc29yS2V5OiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBlbmFibGVQaW5uaW5nOiB0cnVlLFxuICAgICAgZW5hYmxlUmVzaXppbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgICBkaXNhYmxlRHJhZ2dpbmc6IHRydWUsXG4gICAgICBzaXplOiA1MCxcbiAgICAgIG1pblNpemU6IDUwLFxuICAgICAgaGVhZGVyKHsgdGFibGUgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PFNlbGVjdEhlYWRlckNlbGxQcm9wcywgXCJ0YWJsZVwiIHwgXCJyZWFkb25seVwiPikgPT4gKFxuICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgY2VsbCh7IHJvdyB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8U2VsZWN0Um93Q2VsbFByb3BzLCBcInJvd1wiIHwgXCJyZWFkb25seVwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiA8U2VsZWN0Um93Q2VsbCByb3c9e3Jvd30gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+O1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdIHNhdGlzZmllcyAoQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiAmIHsgZGlzYWJsZURyYWdnaW5nPzogYm9vbGVhbiB9KVtdO1xuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBbLi4uY29uY3JldGVDb2x1bW5EZWZzLCAuLi52aXJ0dWFsQ29sdW1uRGVmc10uc29ydChkZWZhdWx0Q29sdW1uU29ydGluZyk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1iZy1zdHVkaW8taGVhZGVyLWJhY2tncm91bmQgcHMtZmxleCBwcy13LWZ1bGwgcHMtcC0yIHBzLXB5LTMgcHMtYm9yZGVyLWIgcHMtYmctY2FyZCBwcy1yb3VuZGVkLXQtbGdcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtZ3JvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXt0b2dnbGVOYXZpZ2F0aW9ufT5cbiAgICAgICAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiA/IDxQYW5lbExlZnRDbG9zZSAvPiA6IDxQYW5lbExlZnRPcGVuIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPFBvcG92ZXIgb25PcGVuQ2hhbmdlPXtvbkZpbHRlck9wZW5DaGFuZ2V9PlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT17Y24odG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgXCJwcy1ib3JkZXItcHJpbWFyeVwiKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZpbHRlckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0b3RhbEVkaXRpbmdGaWx0ZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlclRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJDb250ZW50IGFsaWduPVwic3RhcnRcIiBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwicHMtdy1taW4gcHMtbWF4LWgtWzUyMHB4XSBwcy1vdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIDxGaWx0ZXJUcmVlXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcj17ZWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyPXtzZXRFZGl0aW5nRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RWRpdGluZ0ZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGVkaXRpbmcgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7IC8vIFVwZGF0ZSB0aGUgYXBwbGllZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB0YWJsZT17YWN0aXZlVGFibGV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e25ld1N0YWdlZFJvd30gZGlzYWJsZWQ9e2lzSW5zZXJ0aW5nID4gMH0+XG4gICAgICAgICAgICAgICAgSW5zZXJ0IHJvd1xuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAge3N0YWdlZFJvd3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInNlY29uZGFyeVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3NhdmVTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICB7LyogTmVlZHMgc29tZSBpbXByb3ZlbWVudCAqL31cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZHJvcFN0YWdlZFJvd3N9PlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNTZWxlY3RpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtkZWxldGVTZWxlY3Rpb259PlxuICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJpY29uXCIgb25DbGljaz17KCkgPT4gdm9pZCByZWZldGNoKCl9IGRpc2FibGVkPXtpc0ZldGNoaW5nfT5cbiAgICAgICAgICAgICAgICA8UmVmcmVzaEN3IGNsYXNzTmFtZT17Y24oXCJwcy1oLTQgcHMtdy00XCIsIGlzRmV0Y2hpbmcgJiYgXCJwcy1hbmltYXRlLXNwaW5cIil9IC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cImljb25cIiBvbkNsaWNrPXt0b2dnbGVGdWxsc2NyZWVufT5cbiAgICAgICAgICAgICAgICB7aXNGdWxsc2NyZWVuID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPERhdGFHcmlkXG4gICAgICAgIGNvbHVtbkRlZnM9e2NvbHVtbkRlZnN9XG4gICAgICAgIGdldEJlZm9yZVJvd3M9eyh0YWJsZSkgPT4gPFN0YWdlZFJvd3Mgey4uLnsgdGFibGUsIHN0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3MgfX0gLz59XG4gICAgICAgIGlzTG9hZGluZz17aXNGZXRjaGluZ31cbiAgICAgICAgaXNQcm9jZXNzaW5nPXtpc011dGF0aW5nfVxuICAgICAgICBvblBhZ2luYXRpb25DaGFuZ2U9e3NldFBhZ2luYXRpb25TdGF0ZX1cbiAgICAgICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2U9e3NldFJvd1NlbGVjdGlvblN0YXRlfVxuICAgICAgICBvblNvcnRpbmdDaGFuZ2U9e3NldFNvcnRpbmdTdGF0ZX1cbiAgICAgICAgcGFnZUNvdW50PXtnZXRQYWdlQ291bnQoZGF0YT8uZmlsdGVyZWRSb3dDb3VudCA/PyBJbmZpbml0eSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplKX1cbiAgICAgICAgcGFnaW5hdGlvblN0YXRlPXtwYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIHJvd3M9e2RhdGE/LnJvd3MgPz8gW119XG4gICAgICAgIHJvd1NlbGVjdGlvblN0YXRlPXtyb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgc29ydGluZ1N0YXRlPXtzb3J0aW5nU3RhdGV9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlQ291bnQocm93Q291bnQ6IG51bWJlciB8IGJpZ2ludCB8IE51bWVyaWNTdHJpbmcgfCBCaWdJbnRTdHJpbmcsIHBhZ2VTaXplOiBudW1iZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAocm93Q291bnQgPT09IEluZmluaXR5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFnZUNvdW50ID0gTnVtYmVyKChCaWdJbnQocm93Q291bnQpICsgQmlnSW50KHBhZ2VTaXplKSAtIEJpZ0ludCgxKSkgLyBCaWdJbnQocGFnZVNpemUpKTtcblxuICByZXR1cm4gTnVtYmVyLmlzU2FmZUludGVnZXIocGFnZUNvdW50KSA/IHBhZ2VDb3VudCA6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29sdW1uU29ydGluZyhhOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBiOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KSB7XG4gIGNvbnN0IGFNZXRhID0gYS5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcbiAgY29uc3QgYk1ldGEgPSBiLm1ldGEgYXMgQ29sdW1uIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChhLmlkID09PSBcIl9fcHNfc2VsZWN0XCIgfHwgYi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBpZiAoYU1ldGEgPT09IHVuZGVmaW5lZCB8fCBiTWV0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDA7IC8vIGNhbid0IGJlIGNvbXBhcmVkLCBzaG91bGRuJ3QgaGFwcGVuXG4gIH1cblxuICBpZiAoYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgIWJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICghYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgYk1ldGEuaXNJblByaW1hcnlLZXkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiBhTWV0YS5uYW1lLmxvY2FsZUNvbXBhcmUoYk1ldGEubmFtZSk7XG59XG4iLCAiaW1wb3J0IHsgQ2FtZWxUb1Bhc2NhbCB9IGZyb20gJy4vdXRpbGl0eS10eXBlcyc7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGtlYmFiIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGtlYmFiaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvS2ViYWJDYXNlID0gKHN0cmluZzogc3RyaW5nKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvKFthLXowLTldKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gY2FtZWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgY2FtZWxpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9DYW1lbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvXihbQS1aXSl8W1xccy1fXSsoXFx3KS9nLCAobWF0Y2gsIHAxLCBwMikgPT5cbiAgICBwMiA/IHAyLnRvVXBwZXJDYXNlKCkgOiBwMS50b0xvd2VyQ2FzZSgpLFxuICApO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBwYXNjYWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcGFzY2FsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvUGFzY2FsQ2FzZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihzdHJpbmc6IFQpOiBDYW1lbFRvUGFzY2FsPFQ+ID0+IHtcbiAgY29uc3QgY2FtZWxDYXNlID0gdG9DYW1lbENhc2Uoc3RyaW5nKTtcblxuICByZXR1cm4gKGNhbWVsQ2FzZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNhbWVsQ2FzZS5zbGljZSgxKSkgYXMgQ2FtZWxUb1Bhc2NhbDxUPjtcbn07XG5cbi8qKlxuICogTWVyZ2VzIGNsYXNzZXMgaW50byBhIHNpbmdsZSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge2FycmF5fSBjbGFzc2VzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHN0cmluZyBvZiBjbGFzc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzZXMgPSA8Q2xhc3NUeXBlID0gc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4oLi4uY2xhc3NlczogQ2xhc3NUeXBlW10pID0+XG4gIGNsYXNzZXNcbiAgICAuZmlsdGVyKChjbGFzc05hbWUsIGluZGV4LCBhcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgQm9vbGVhbihjbGFzc05hbWUpICYmXG4gICAgICAgIChjbGFzc05hbWUgYXMgc3RyaW5nKS50cmltKCkgIT09ICcnICYmXG4gICAgICAgIGFycmF5LmluZGV4T2YoY2xhc3NOYW1lKSA9PT0gaW5kZXhcbiAgICAgICk7XG4gICAgfSlcbiAgICAuam9pbignICcpXG4gICAgLnRyaW0oKTtcbiIsICJleHBvcnQgZGVmYXVsdCB7XG4gIHhtbG5zOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICB3aWR0aDogMjQsXG4gIGhlaWdodDogMjQsXG4gIHZpZXdCb3g6ICcwIDAgMjQgMjQnLFxuICBmaWxsOiAnbm9uZScsXG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gIHN0cm9rZVdpZHRoOiAyLFxuICBzdHJva2VMaW5lY2FwOiAncm91bmQnLFxuICBzdHJva2VMaW5lam9pbjogJ3JvdW5kJyxcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWZhdWx0QXR0cmlidXRlcyBmcm9tICcuL2RlZmF1bHRBdHRyaWJ1dGVzJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuXG5pbnRlcmZhY2UgSWNvbkNvbXBvbmVudFByb3BzIGV4dGVuZHMgTHVjaWRlUHJvcHMge1xuICBpY29uTm9kZTogSWNvbk5vZGU7XG59XG5cbi8qKlxuICogTHVjaWRlIGljb24gY29tcG9uZW50XG4gKlxuICogQGNvbXBvbmVudCBJY29uXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5jb2xvciAtIFRoZSBjb2xvciBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnN0cm9rZVdpZHRoIC0gVGhlIHN0cm9rZSB3aWR0aCBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5hYnNvbHV0ZVN0cm9rZVdpZHRoIC0gV2hldGhlciB0byB1c2UgYWJzb2x1dGUgc3Ryb2tlIHdpZHRoXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY2xhc3NOYW1lIC0gVGhlIGNsYXNzIG5hbWUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7SWNvbk5vZGV9IHByb3BzLmNoaWxkcmVuIC0gVGhlIGNoaWxkcmVuIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5pY29uTm9kZSAtIFRoZSBpY29uIG5vZGUgb2YgdGhlIGljb25cbiAqXG4gKiBAcmV0dXJucyB7Rm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudH0gTHVjaWRlSWNvblxuICovXG5jb25zdCBJY29uID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uQ29tcG9uZW50UHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgY29sb3IgPSAnY3VycmVudENvbG9yJyxcbiAgICAgIHNpemUgPSAyNCxcbiAgICAgIHN0cm9rZVdpZHRoID0gMixcbiAgICAgIGFic29sdXRlU3Ryb2tlV2lkdGgsXG4gICAgICBjbGFzc05hbWUgPSAnJyxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICAuLi5yZXN0XG4gICAgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KFxuICAgICAgJ3N2ZycsXG4gICAgICB7XG4gICAgICAgIHJlZixcbiAgICAgICAgLi4uZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgICBoZWlnaHQ6IHNpemUsXG4gICAgICAgIHN0cm9rZTogY29sb3IsXG4gICAgICAgIHN0cm9rZVdpZHRoOiBhYnNvbHV0ZVN0cm9rZVdpZHRoID8gKE51bWJlcihzdHJva2VXaWR0aCkgKiAyNCkgLyBOdW1iZXIoc2l6ZSkgOiBzdHJva2VXaWR0aCxcbiAgICAgICAgY2xhc3NOYW1lOiBtZXJnZUNsYXNzZXMoJ2x1Y2lkZScsIGNsYXNzTmFtZSksXG4gICAgICAgIC4uLnJlc3QsXG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICAuLi5pY29uTm9kZS5tYXAoKFt0YWcsIGF0dHJzXSkgPT4gY3JlYXRlRWxlbWVudCh0YWcsIGF0dHJzKSksXG4gICAgICAgIC4uLihBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuIDogW2NoaWxkcmVuXSksXG4gICAgICBdLFxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBJY29uO1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBtZXJnZUNsYXNzZXMsIHRvS2ViYWJDYXNlIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuaW1wb3J0IHsgSWNvbk5vZGUsIEx1Y2lkZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgSWNvbiBmcm9tICcuL0ljb24nO1xuXG4vKipcbiAqIENyZWF0ZSBhIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICogQHBhcmFtIHtzdHJpbmd9IGljb25OYW1lXG4gKiBAcGFyYW0ge2FycmF5fSBpY29uTm9kZVxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgY3JlYXRlTHVjaWRlSWNvbiA9IChpY29uTmFtZTogc3RyaW5nLCBpY29uTm9kZTogSWNvbk5vZGUpID0+IHtcbiAgY29uc3QgQ29tcG9uZW50ID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBMdWNpZGVQcm9wcz4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+XG4gICAgY3JlYXRlRWxlbWVudChJY29uLCB7XG4gICAgICByZWYsXG4gICAgICBpY29uTm9kZSxcbiAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKGBsdWNpZGUtJHt0b0tlYmFiQ2FzZShpY29uTmFtZSl9YCwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLFxuICApO1xuXG4gIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGAke2ljb25OYW1lfWA7XG5cbiAgcmV0dXJuIENvbXBvbmVudDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUx1Y2lkZUljb247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd0Rvd25XaWRlTmFycm93XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNeUF4TmlBMElEUWdOQzAwSWlBdlBnb2dJRHh3WVhSb0lHUTlJazAzSURJd1ZqUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRFJvTVRBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElEaG9OeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb05DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy1kb3duLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dEb3duV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93RG93bldpZGVOYXJyb3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20zIDE2IDQgNCA0LTQnLCBrZXk6ICcxY282d2onIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyAyMFY0Jywga2V5OiAnMXlveGVjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDRoMTAnLCBrZXk6ICcxdzg3Z2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgOGg3Jywga2V5OiAnZGp5ZTM0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDQnLCBrZXk6ICdxOHRpaDQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93RG93bldpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd1VwV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBNElEUXROQ0EwSURRaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRjZ05IWXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREUyYURjaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElESXdhRFFpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd1VwV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93VXBXaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyA4IDQtNCA0IDQnLCBrZXk6ICcxMXdsN3UnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyA0djE2Jywga2V5OiAnMWdsZmN4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDEwJywga2V5OiAnMTQzOGppJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDE2aDcnLCBrZXk6ICd1b3Npc3YnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMjBoNCcsIGtleTogJzFrcmMzMicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQXJyb3dVcFdpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGVja1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05pQTVJREUzYkMwMUxUVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGVja1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZWNrID0gY3JlYXRlTHVjaWRlSWNvbignQ2hlY2snLCBbWydwYXRoJywgeyBkOiAnTTIwIDYgOSAxN2wtNS01Jywga2V5OiAnMWdtZjJjJyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGVjaztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25Eb3duXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUE1SURZZ05pQTJMVFlpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkRvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgOSA2IDYgNi02Jywga2V5OiAncXJ1bnNsJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFVnTVRndE5pMDJJRFl0TmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkxlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNSAxOC02LTYgNi02Jywga2V5OiAnMXduZmczJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25SaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0T1NBeE9DQTJMVFl0TmkwMklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uUmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ205IDE4IDYtNi02LTYnLCBrZXk6ICdtdGhod3EnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25SaWdodDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25VcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UVXROaTAyTFRZZ05pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblVwID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblVwJywgW1sncGF0aCcsIHsgZDogJ20xOCAxNS02LTYtNiA2Jywga2V5OiAnMTUzdWR6JyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc0xlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1URWdNVGN0TlMwMUlEVXROU0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRjdE5TMDFJRFV0TlNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc0xlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uc0xlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xMSAxNy01LTUgNS01Jywga2V5OiAnMTN6aGFmJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE4IDE3LTUtNSA1LTUnLCBrZXk6ICdoOGE4ZXQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25zUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQXhOeUExTFRVdE5TMDFJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHhNeUF4TnlBMUxUVXROUzAxSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbnMtcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNSaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgMTcgNS01LTUtNScsIGtleTogJ3huandxJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTEzIDE3IDUtNS01LTUnLCBrZXk6ICcxN3htbWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVIZWxwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJakV5SWlCeVBTSXhNQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PUzR3T1NBNVlUTWdNeUF3SURBZ01TQTFMamd6SURGak1DQXlMVE1nTXkweklETWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXlJREUzYUM0d01TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGUtaGVscFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZUhlbHAgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGVIZWxwJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnLCBrZXk6ICcxbWdsYXknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDMnLCBrZXk6ICcxdTc3M3MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTdoLjAxJywga2V5OiAncDMycDA1JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVIZWxwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJakV5SWlCeVBTSXhNQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2lyY2xlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnLCBrZXk6ICcxbWdsYXknIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENvcHlcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVFFpSUdobGFXZG9kRDBpTVRRaUlIZzlJamdpSUhrOUlqZ2lJSEo0UFNJeUlpQnllVDBpTWlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTkNBeE5tTXRNUzR4SURBdE1pMHVPUzB5TFRKV05HTXdMVEV1TVM0NUxUSWdNaTB5YURFd1l6RXVNU0F3SURJZ0xqa2dNaUF5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29weVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcHkgPSBjcmVhdGVMdWNpZGVJY29uKCdDb3B5JywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTQnLCBoZWlnaHQ6ICcxNCcsIHg6ICc4JywgeTogJzgnLCByeDogJzInLCByeTogJzInLCBrZXk6ICcxN2p5ZWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNCAxNmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAyJywga2V5OiAneml4OXVmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDb3B5O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29ybmVyRG93bkxlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNJNUlERXdJRFFnTVRVZ09TQXlNQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NakFnTkhZM1lUUWdOQ0F3SURBZ01TMDBJRFJJTkNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Nvcm5lci1kb3duLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDb3JuZXJEb3duTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Nvcm5lckRvd25MZWZ0JywgW1xuICBbJ3BvbHlsaW5lJywgeyBwb2ludHM6ICc5IDEwIDQgMTUgOSAyMCcsIGtleTogJ3IzanBydicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMCA0djdhNCA0IDAgMCAxLTQgNEg0Jywga2V5OiAnNm81YjdsJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDb3JuZXJEb3duTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEZpbHRlclxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXZHZiaUJ3YjJsdWRITTlJakl5SURNZ01pQXpJREV3SURFeUxqUTJJREV3SURFNUlERTBJREl4SURFMElERXlMalEySURJeUlETWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9maWx0ZXJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBGaWx0ZXIgPSBjcmVhdGVMdWNpZGVJY29uKCdGaWx0ZXInLCBbXG4gIFsncG9seWdvbicsIHsgcG9pbnRzOiAnMjIgMyAyIDMgMTAgMTIuNDYgMTAgMTkgMTQgMjEgMTQgMTIuNDYgMjIgMycsIGtleTogJzF5Zzc3ZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgR3JpcFZlcnRpY2FsXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0k1SWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlPU0lnWTNrOUlqVWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpFNUlpQnlQU0l4SWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpFMUlpQmplVDBpTVRJaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpTVRVaUlHTjVQU0kxSWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVGtpSUhJOUlqRWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9ncmlwLXZlcnRpY2FsXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgR3JpcFZlcnRpY2FsID0gY3JlYXRlTHVjaWRlSWNvbignR3JpcFZlcnRpY2FsJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxMicsIHI6ICcxJywga2V5OiAnMXZjdGdmJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnaHAwdGNmJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnMTknLCByOiAnMScsIGtleTogJ2ZrampmNicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICcxMicsIHI6ICcxJywga2V5OiAnMXRtYWlqJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzUnLCByOiAnMScsIGtleTogJzE5bDI4ZScgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZjR6b2ozJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBHcmlwVmVydGljYWw7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBLZXlSb3VuZFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWk0MU9EWWdNVGN1TkRFMFFUSWdNaUF3SURBZ01DQXlJREU0TGpneU9GWXlNV0V4SURFZ01DQXdJREFnTVNBeGFETmhNU0F4SURBZ01DQXdJREV0TVhZdE1XRXhJREVnTUNBd0lERWdNUzB4YURGaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhQzR4TnpKaE1pQXlJREFnTUNBd0lERXVOREUwTFM0MU9EWnNMamd4TkMwdU9ERTBZVFl1TlNBMkxqVWdNQ0F4SURBdE5DMDBlaUlnTHo0S0lDQThZMmx5WTJ4bElHTjRQU0l4Tmk0MUlpQmplVDBpTnk0MUlpQnlQU0l1TlNJZ1ptbHNiRDBpWTNWeWNtVnVkRU52Ykc5eUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2tleS1yb3VuZFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEtleVJvdW5kID0gY3JlYXRlTHVjaWRlSWNvbignS2V5Um91bmQnLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ00yLjU4NiAxNy40MTRBMiAyIDAgMCAwIDIgMTguODI4VjIxYTEgMSAwIDAgMCAxIDFoM2ExIDEgMCAwIDAgMS0xdi0xYTEgMSAwIDAgMSAxLTFoMWExIDEgMCAwIDAgMS0xdi0xYTEgMSAwIDAgMSAxLTFoLjE3MmEyIDIgMCAwIDAgMS40MTQtLjU4NmwuODE0LS44MTRhNi41IDYuNSAwIDEgMC00LTR6JyxcbiAgICAgIGtleTogJzFzNnQ3dCcsXG4gICAgfSxcbiAgXSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTYuNScsIGN5OiAnNy41JywgcjogJy41JywgZmlsbDogJ2N1cnJlbnRDb2xvcicsIGtleTogJ3cwZWtwZycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgS2V5Um91bmQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNYXhpbWl6ZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBelNEVmhNaUF5SURBZ01DQXdMVElnTW5ZeklpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQTRWalZoTWlBeUlEQWdNQ0F3TFRJdE1tZ3RNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NeUF4Tm5ZellUSWdNaUF3SURBZ01DQXlJREpvTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRZZ01qRm9NMkV5SURJZ01DQXdJREFnTWkweWRpMHpJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tYXhpbWl6ZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1heGltaXplID0gY3JlYXRlTHVjaWRlSWNvbignTWF4aW1pemUnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDNINWEyIDIgMCAwIDAtMiAydjMnLCBrZXk6ICcxZGNtaXQnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgOFY1YTIgMiAwIDAgMC0yLTJoLTMnLCBrZXk6ICcxZTRndDMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxNnYzYTIgMiAwIDAgMCAyIDJoMycsIGtleTogJ3dzbDVzYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNiAyMWgzYTIgMiAwIDAgMCAyLTJ2LTMnLCBrZXk6ICcxOHRyZWsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1heGltaXplO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTWluaW1pemVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXpkak5oTWlBeUlEQWdNQ0F4TFRJZ01rZ3pJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0E0YUMwellUSWdNaUF3SURBZ01TMHlMVEpXTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE5tZ3pZVElnTWlBd0lEQWdNU0F5SURKMk15SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UWWdNakYyTFROaE1pQXlJREFnTUNBeElESXRNbWd6SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWluaW1pemVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNaW5pbWl6ZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ01pbmltaXplJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAzdjNhMiAyIDAgMCAxLTIgMkgzJywga2V5OiAnaG9oYnRyJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDhoLTNhMiAyIDAgMCAxLTItMlYzJywga2V5OiAnNWp3MWYzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTZoM2EyIDIgMCAwIDEgMiAydjMnLCBrZXk6ICcxOTh0dnInIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMjF2LTNhMiAyIDAgMCAxIDItMmgzJywga2V5OiAncGg4bXhwJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNaW5pbWl6ZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1vdmVEb3duXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F4T0V3eE1pQXlNa3d4TmlBeE9DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNbFl5TWlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdmUtZG93blxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1vdmVEb3duID0gY3JlYXRlTHVjaWRlSWNvbignTW92ZURvd24nLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDE4TDEyIDIyTDE2IDE4Jywga2V5OiAnY3NrdmZ2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDJWMjInLCBrZXk6ICdyODlyemsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vdmVEb3duO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTW92ZVVwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0EyVERFeUlESk1NVFlnTmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01sWXlNaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbW92ZS11cFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1vdmVVcCA9IGNyZWF0ZUx1Y2lkZUljb24oJ01vdmVVcCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggNkwxMiAyTDE2IDYnLCBrZXk6ICcxeXZreXgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMlYyMicsIGtleTogJ3I4OXJ6aycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTW92ZVVwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGFuZWxMZWZ0Q2xvc2VcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNUlETjJNVGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEUySURFMUxUTXRNeUF6TFRNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BhbmVsLWxlZnQtY2xvc2VcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQYW5lbExlZnRDbG9zZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BhbmVsTGVmdENsb3NlJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOSAzdjE4Jywga2V5OiAnZmgzaHFhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE2IDE1LTMtMyAzLTMnLCBrZXk6ICcxNHk5OXonIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsTGVmdENsb3NlO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGFuZWxMZWZ0T3BlblxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGdpSUhnOUlqTWlJSGs5SWpNaUlISjRQU0l5SWlBdlBnb2dJRHh3WVhSb0lHUTlJazA1SUROMk1UZ2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaWJURTBJRGtnTXlBekxUTWdNeUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGFuZWwtbGVmdC1vcGVuXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGFuZWxMZWZ0T3BlbiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BhbmVsTGVmdE9wZW4nLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxOCcsIGhlaWdodDogJzE4JywgeDogJzMnLCB5OiAnMycsIHJ4OiAnMicsIGtleTogJ2FmaXR2NycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005IDN2MTgnLCBrZXk6ICdmaDNocWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTQgOSAzIDMtMyAzJywga2V5OiAnODAxMGVlJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbExlZnRPcGVuO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGluT2ZmXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVElnTVRkMk5TSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UVWdPUzR6TkZZM1lURWdNU0F3SURBZ01TQXhMVEVnTWlBeUlEQWdNQ0F3SURBdE5FZzNMamc1SWlBdlBnb2dJRHh3WVhSb0lHUTlJbTB5SURJZ01qQWdNakFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVGtnT1hZeExqYzJZVElnTWlBd0lEQWdNUzB4TGpFeElERXVOemxzTFRFdU56Z3VPVUV5SURJZ01DQXdJREFnTlNBeE5TNHlORll4Tm1FeElERWdNQ0F3SURBZ01TQXhhREV4SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGluLW9mZlxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBpbk9mZiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1Bpbk9mZicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3djUnLCBrZXk6ICdiYjFkdTknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTUgOS4zNFY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg3Ljg5Jywga2V5OiAnem53bnpxJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTIgMiAyMCAyMCcsIGtleTogJzFvb2V3eScgfV0sXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDl2MS43NmEyIDIgMCAwIDEtMS4xMSAxLjc5bC0xLjc4LjlBMiAyIDAgMCAwIDUgMTUuMjRWMTZhMSAxIDAgMCAwIDEgMWgxMScsXG4gICAgICBrZXk6ICdjOXFobTInLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGluT2ZmO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGluXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVElnTVRkMk5TSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9TQXhNQzQzTm1FeUlESWdNQ0F3SURFdE1TNHhNU0F4TGpjNWJDMHhMamM0TGpsQk1pQXlJREFnTUNBd0lEVWdNVFV1TWpSV01UWmhNU0F4SURBZ01DQXdJREVnTVdneE1tRXhJREVnTUNBd0lEQWdNUzB4ZGkwdU56WmhNaUF5SURBZ01DQXdMVEV1TVRFdE1TNDNPV3d0TVM0M09DMHVPVUV5SURJZ01DQXdJREVnTVRVZ01UQXVOelpXTjJFeElERWdNQ0F3SURFZ01TMHhJRElnTWlBd0lEQWdNQ0F3TFRSSU9HRXlJRElnTUNBd0lEQWdNQ0EwSURFZ01TQXdJREFnTVNBeElERjZJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9waW5cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQaW4gPSBjcmVhdGVMdWNpZGVJY29uKCdQaW4nLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN3Y1Jywga2V5OiAnYmIxZHU5JyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgMTAuNzZhMiAyIDAgMCAxLTEuMTEgMS43OWwtMS43OC45QTIgMiAwIDAgMCA1IDE1LjI0VjE2YTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtLjc2YTIgMiAwIDAgMC0xLjExLTEuNzlsLTEuNzgtLjlBMiAyIDAgMCAxIDE1IDEwLjc2VjdhMSAxIDAgMCAxIDEtMSAyIDIgMCAwIDAgMC00SDhhMiAyIDAgMCAwIDAgNCAxIDEgMCAwIDEgMSAxeicsXG4gICAgICBrZXk6ICcxbmt6OGInLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGluO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUmVmcmVzaEN3XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NeUF4TW1FNUlEa2dNQ0F3SURFZ09TMDVJRGt1TnpVZ09TNDNOU0F3SURBZ01TQTJMamMwSURJdU56Uk1NakVnT0NJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTWpFZ00zWTFhQzAxSWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBeE1tRTVJRGtnTUNBd0lERXRPU0E1SURrdU56VWdPUzQzTlNBd0lEQWdNUzAyTGpjMExUSXVOelJNTXlBeE5pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9DQXhOa2d6ZGpVaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3JlZnJlc2gtY3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBSZWZyZXNoQ3cgPSBjcmVhdGVMdWNpZGVJY29uKCdSZWZyZXNoQ3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00zIDEyYTkgOSAwIDAgMSA5LTkgOS43NSA5Ljc1IDAgMCAxIDYuNzQgMi43NEwyMSA4Jywga2V5OiAndjloNXZjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDN2NWgtNScsIGtleTogJzFxN3RvMCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNicsIGtleTogJzN1aWZsMycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ004IDE2SDN2NScsIGtleTogJzFjdjY3OCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmcmVzaEN3O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgVGFibGUyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PU0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNblkwYlRZdE5tZ3hNR0V5SURJZ01DQXdJREVnTWlBeWRqUk5PU0F6ZGpFNGJUQWdNR2d4TUdFeUlESWdNQ0F3SURBZ01pMHlWamxOT1NBeU1VZzFZVElnTWlBd0lEQWdNUzB5TFRKV09XMHdJREJvTVRnaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3RhYmxlLTJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBUYWJsZTIgPSBjcmVhdGVMdWNpZGVJY29uKCdUYWJsZTInLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDNINWEyIDIgMCAwIDAtMiAydjRtNi02aDEwYTIgMiAwIDAgMSAyIDJ2NE05IDN2MThtMCAwaDEwYTIgMiAwIDAgMCAyLTJWOU05IDIxSDVhMiAyIDAgMCAxLTItMlY5bTAgMGgxOCcsXG4gICAgICBrZXk6ICdndWdqODMnLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgVGFibGUyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgWFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRnZ05pQTJJREU0SWlBdlBnb2dJRHh3WVhSb0lHUTlJbTAySURZZ01USWdNVElpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMveFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFggPSBjcmVhdGVMdWNpZGVJY29uKCdYJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTggNiA2IDE4Jywga2V5OiAnMWJsNWY4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTYgNiAxMiAxMicsIGtleTogJ2Q4Yms2dicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgWDtcbiIsICJpbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGJhZGdlVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLXB4LTIuNSBwcy1weS0wLjUgcHMtdGV4dC14cyBwcy1mb250LXNlbWlib2xkIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1yaW5nLTIgZm9jdXM6cHMtcmluZy1yaW5nIGZvY3VzOnBzLXJpbmctb2Zmc2V0LTJcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLXByaW1hcnkvODBcIixcbiAgICAgICAgc2Vjb25kYXJ5OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBob3Zlcjpwcy1iZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctZGVzdHJ1Y3RpdmUgcHMtdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1kZXN0cnVjdGl2ZS84MFwiLFxuICAgICAgICBvdXRsaW5lOiBcInBzLXRleHQtZm9yZWdyb3VuZFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFkZ2VQcm9wcyBleHRlbmRzIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgVmFyaWFudFByb3BzPHR5cGVvZiBiYWRnZVZhcmlhbnRzPiB7fVxuXG5mdW5jdGlvbiBCYWRnZSh7IGNsYXNzTmFtZSwgdmFyaWFudCwgLi4ucHJvcHMgfTogQmFkZ2VQcm9wcykge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NuKGJhZGdlVmFyaWFudHMoeyB2YXJpYW50IH0pLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBCYWRnZSwgYmFkZ2VWYXJpYW50cyB9O1xuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYnV0dG9uVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWdhcC0yIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXJvdW5kZWQtbWQgcHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS85MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTogXCJwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzkwXCIsXG4gICAgICAgIG91dGxpbmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGdob3N0OiBcImhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGxpbms6IFwicHMtdGV4dC1wcmltYXJ5IHBzLXVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjpwcy11bmRlcmxpbmVcIixcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtaC05IHBzLXB4LTQgcHMtcHktMlwiLFxuICAgICAgICB4czogXCJwcy1oLTYgcHMtcm91bmRlZC1tZCBwcy1weC0yIHBzLXRleHQteHNcIixcbiAgICAgICAgc206IFwicHMtaC04IHBzLXJvdW5kZWQtbWQgcHMtcHgtMyBwcy10ZXh0LXhzXCIsXG4gICAgICAgIGxnOiBcInBzLWgtMTAgcHMtcm91bmRlZC1tZCBwcy1weC04XCIsXG4gICAgICAgIGljb246IFwicHMtaC05IHBzLXctOVwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgICBzaXplOiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xuICBleHRlbmRzIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxCdXR0b25FbGVtZW50LCBCdXR0b25Qcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdmFyaWFudCwgc2l6ZSwgYXNDaGlsZCA9IGZhbHNlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuICAgIHJldHVybiA8Q29tcCBjbGFzc05hbWU9e2NuKGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSwgY2xhc3NOYW1lIH0pKX0gcmVmPXtyZWZ9IHsuLi5wcm9wc30gLz47XG4gIH0sXG4pO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gXCJCdXR0b25cIjtcblxuZXhwb3J0IHsgQnV0dG9uLCBidXR0b25WYXJpYW50cyB9O1xuIiwgImltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgUG9wb3ZlciA9IFBvcG92ZXJQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgUG9wb3ZlclRyaWdnZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IFBvcG92ZXJBbmNob3IgPSBQb3BvdmVyUHJpbWl0aXZlLkFuY2hvcjtcblxuY29uc3QgUG9wb3ZlckNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBhbGlnbiA9IFwiY2VudGVyXCIsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFBvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy13LTcyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC00IHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1wb3BvdmVyLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ29udGVudC5kaXNwbGF5TmFtZSA9IFBvcG92ZXJQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgUG9wb3ZlciwgUG9wb3ZlclRyaWdnZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyQW5jaG9yIH07XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJpbnNlcnRcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmluc2VydCh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdCwgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhuZXdEYXRhKSB7XG4gICAgICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YTxBZGFwdGVyUXVlcnlSZXN1bHQ+KFxuICAgICAgICB7XG4gICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgIC8vIGhlcmUgd2UgcGFydGlhbGx5IG1hdGNoIHRoZSBxdWVyeSBrZXkgdG8gZ2V0IHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgICAgfSxcbiAgICAgICAgKG9sZERhdGEpID0+IHtcbiAgICAgICAgICBpZiAob2xkRGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2xkRGF0YTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub2xkRGF0YSxcbiAgICAgICAgICAgIHJvd3M6IFsuLi5uZXdEYXRhLnJvd3MsIC4uLm9sZERhdGEucm93c10sXG4gICAgICAgICAgfSBzYXRpc2ZpZXMgQWRhcHRlclF1ZXJ5UmVzdWx0O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlDbGllbnQsIFF1ZXJ5Q2xpZW50UHJvdmlkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyBSZWFjdFF1ZXJ5RGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zb25uZXJcIjtcbmltcG9ydCB7IE51cXNIYXNoQWRhcHRlciB9IGZyb20gXCIuL051cXNIYXNoQWRhcHRlclwiO1xuaW1wb3J0IHsgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgfSBmcm9tIFwiLi9TdHVkaW9cIjtcblxuLyoqXG4gKiBTdHVkaW8gY29udGV4dCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuaW50ZXJmYWNlIFN0dWRpb0NvbnRleHRWYWx1ZSB7XG4gIGFjdGl2ZVRhYmxlOiBUYWJsZSB8IG51bGw7XG4gIGFjdGl2ZVNjaGVtYTogc3RyaW5nO1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBzZXRBY3RpdmVUYWJsZTogKHRhYmxlOiBUYWJsZSB8IG51bGwpID0+IHZvaWQ7XG4gIHNldEFjdGl2ZVNjaGVtYTogKHNjaGVtYTogc3RyaW5nKSA9PiB2b2lkO1xuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBlbWl0VGVsZW1ldHJ5RXZlbnQ6IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbiAgLy8gVUkgc3RhdGVcbiAgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuICB0b2dnbGVGdWxsc2NyZWVuOiAoKSA9PiB2b2lkO1xuICBpc05hdmlnYXRpb25PcGVuOiBib29sZWFuO1xuICB0b2dnbGVOYXZpZ2F0aW9uOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBxdWVyeUNsaWVudCA9IG5ldyBRdWVyeUNsaWVudCgpO1xuXG4vKipcbiAqIENvbnRleHQgZm9yIHNoYXJpbmcgU3R1ZGlvIHN0YXRlIGFjcm9zcyBjb21wb25lbnRzXG4gKi9cbmNvbnN0IFN0dWRpb0NvbnRleHQgPSBjcmVhdGVDb250ZXh0PFN0dWRpb0NvbnRleHRWYWx1ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufT47XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW9Db250ZXh0UHJvdmlkZXIocHJvcHM6IFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIC4uLm90aGVyUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBbYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlXSA9IHVzZVN0YXRlPFRhYmxlIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFthY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVNjaGVtYV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHByb3BzLmFkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcInB1YmxpY1wiKTtcbiAgY29uc3QgW2lzRnVsbHNjcmVlbiwgc2V0SXNGdWxsc2NyZWVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzTmF2aWdhdGlvbk9wZW4sIHNldElzTmF2aWdhdGlvbk9wZW5dID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgbGV0IG9uRXJyb3IgPSBwcm9wcy5vbkVycm9yO1xuICBvbkVycm9yID8/PSAoZXJyb3I6IEVycm9yKSA9PiB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKTtcblxuICBjb25zdCBlbWl0VGVsZW1ldHJ5RXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMub25UZWxlbWV0cnlFdmVudCA/PyAoKCkgPT4ge30pO1xuICB9LCBbcHJvcHMub25UZWxlbWV0cnlFdmVudF0pO1xuXG4gIGNvbnN0IHRvZ2dsZUZ1bGxzY3JlZW4gPSAoKSA9PiBzZXRJc0Z1bGxzY3JlZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgY29uc3QgdG9nZ2xlTmF2aWdhdGlvbiA9ICgpID0+IHNldElzTmF2aWdhdGlvbk9wZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgcmV0dXJuIChcbiAgICA8UXVlcnlDbGllbnRQcm92aWRlciBjbGllbnQ9e3F1ZXJ5Q2xpZW50fT5cbiAgICAgIDxSZWFjdFF1ZXJ5RGV2dG9vbHMgLz5cbiAgICAgIDxUb2FzdGVyIC8+XG4gICAgICA8TnVxc0hhc2hBZGFwdGVyPlxuICAgICAgICA8U3R1ZGlvQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICAuLi5vdGhlclByb3BzLFxuICAgICAgICAgICAgYWN0aXZlVGFibGUsXG4gICAgICAgICAgICBhY3RpdmVTY2hlbWEsXG4gICAgICAgICAgICBpc0Z1bGxzY3JlZW4sXG4gICAgICAgICAgICBzZXRBY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIHNldEFjdGl2ZVNjaGVtYSxcbiAgICAgICAgICAgIG9uRXJyb3IsXG4gICAgICAgICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQsXG4gICAgICAgICAgICB0b2dnbGVGdWxsc2NyZWVuLFxuICAgICAgICAgICAgaXNOYXZpZ2F0aW9uT3BlbixcbiAgICAgICAgICAgIHRvZ2dsZU5hdmlnYXRpb24sXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9TdHVkaW9Db250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9OdXFzSGFzaEFkYXB0ZXI+XG4gICAgPC9RdWVyeUNsaWVudFByb3ZpZGVyPlxuICApO1xufVxuXG4vKipcbiAqIEhvb2sgdG8gYWNjZXNzIFN0dWRpbyBjb250ZXh0XG4gKiBAdGhyb3dzIEVycm9yIGlmIHVzZWQgb3V0c2lkZSBvZiBTdHVkaW8uUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0dWRpbygpOiBTdHVkaW9Db250ZXh0VmFsdWUge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChTdHVkaW9Db250ZXh0KTtcblxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJgdXNlU3R1ZGlvYCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYFN0dWRpb0NvbnRleHQuUHJvdmlkZXJgXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG4iLCAiJ3VzZSBjbGllbnQnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG9ubGluZU1hbmFnZXIsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUge1xuICBEZXZ0b29sc0J1dHRvblBvc2l0aW9uLFxuICBEZXZ0b29sc0Vycm9yVHlwZSxcbiAgRGV2dG9vbHNQb3NpdGlvbixcbn0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuZXhwb3J0IGludGVyZmFjZSBEZXZ0b29sc09wdGlvbnMge1xuICAvKipcbiAgICogU2V0IHRoaXMgdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgZGV2IHRvb2xzIHRvIGRlZmF1bHQgdG8gYmVpbmcgb3BlblxuICAgKi9cbiAgaW5pdGlhbElzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgUmVhY3QgUXVlcnkgbG9nbyB0byBvcGVuIGFuZCBjbG9zZSB0aGUgZGV2dG9vbHMgcGFuZWwuXG4gICAqICd0b3AtbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfCAnYm90dG9tLXJpZ2h0J1xuICAgKiBEZWZhdWx0cyB0byAnYm90dG9tLXJpZ2h0Jy5cbiAgICovXG4gIGJ1dHRvblBvc2l0aW9uPzogRGV2dG9vbHNCdXR0b25Qb3NpdGlvblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBSZWFjdCBRdWVyeSBkZXZ0b29scyBwYW5lbC5cbiAgICogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCdcbiAgICogRGVmYXVsdHMgdG8gJ2JvdHRvbScuXG4gICAqL1xuICBwb3NpdGlvbj86IERldnRvb2xzUG9zaXRpb25cbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YW5jZSBvZiBRdWVyeUNsaWVudFxuICAgKi9cbiAgY2xpZW50PzogUXVlcnlDbGllbnRcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvcnMgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhlIGRldnRvb2xzLlxuICAgKi9cbiAgZXJyb3JUeXBlcz86IEFycmF5PERldnRvb2xzRXJyb3JUeXBlPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcGFzcyBhIG5vbmNlIHRvIHRoZSBzdHlsZSB0YWcgdGhhdCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IChDU1ApIG5vbmNlIHRvIGFsbG93IGlubGluZSBzdHlsZXMuXG4gICAqL1xuICBzdHlsZU5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGF0dGFjaCB0aGUgZGV2dG9vbCdzIHN0eWxlcyB0byBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBET00uXG4gICAqL1xuICBzaGFkb3dET01UYXJnZXQ/OiBTaGFkb3dSb290XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFF1ZXJ5RGV2dG9vbHMoXG4gIHByb3BzOiBEZXZ0b29sc09wdGlvbnMsXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudChwcm9wcy5jbGllbnQpXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3Qge1xuICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgIHBvc2l0aW9uLFxuICAgIGluaXRpYWxJc09wZW4sXG4gICAgZXJyb3JUeXBlcyxcbiAgICBzdHlsZU5vbmNlLFxuICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgfSA9IHByb3BzXG4gIGNvbnN0IFtkZXZ0b29sc10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICBuZXcgVGFuc3RhY2tRdWVyeURldnRvb2xzKHtcbiAgICAgIGNsaWVudDogcXVlcnlDbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcjogJ1JlYWN0IFF1ZXJ5JyxcbiAgICAgIHZlcnNpb246ICc1JyxcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgIH0pLFxuICApXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRDbGllbnQocXVlcnlDbGllbnQpXG4gIH0sIFtxdWVyeUNsaWVudCwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJ1dHRvblBvc2l0aW9uKSB7XG4gICAgICBkZXZ0b29scy5zZXRCdXR0b25Qb3NpdGlvbihidXR0b25Qb3NpdGlvbilcbiAgICB9XG4gIH0sIFtidXR0b25Qb3NpdGlvbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBkZXZ0b29scy5zZXRQb3NpdGlvbihwb3NpdGlvbilcbiAgICB9XG4gIH0sIFtwb3NpdGlvbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0SW5pdGlhbElzT3Blbihpbml0aWFsSXNPcGVuIHx8IGZhbHNlKVxuICB9LCBbaW5pdGlhbElzT3BlbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzIHx8IFtdKVxuICB9LCBbZXJyb3JUeXBlcywgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICBkZXZ0b29scy5tb3VudChyZWYuY3VycmVudClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGV2dG9vbHMudW5tb3VudCgpXG4gICAgfVxuICB9LCBbZGV2dG9vbHNdKVxuXG4gIHJldHVybiA8ZGl2IGRpcj1cImx0clwiIGNsYXNzTmFtZT1cInRzcWQtcGFyZW50LWNvbnRhaW5lclwiIHJlZj17cmVmfT48L2Rpdj5cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTaWduYWwsIHJlbmRlciwgbGF6eSwgc2V0dXBTdHlsZVNoZWV0LCBjcmVhdGVDb21wb25lbnQsIG1lcmdlUHJvcHMgfSBmcm9tICcuL2NodW5rL0hSN1lYWjVILmpzJztcblxuLy8gc3JjL1RhbnN0YWNrUXVlcnlEZXZ0b29scy50c3hcbnZhciBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMgPSBjbGFzcyB7XG4gICNjbGllbnQ7XG4gICNvbmxpbmVNYW5hZ2VyO1xuICAjcXVlcnlGbGF2b3I7XG4gICN2ZXJzaW9uO1xuICAjaXNNb3VudGVkID0gZmFsc2U7XG4gICNzdHlsZU5vbmNlO1xuICAjc2hhZG93RE9NVGFyZ2V0O1xuICAjYnV0dG9uUG9zaXRpb247XG4gICNwb3NpdGlvbjtcbiAgI2luaXRpYWxJc09wZW47XG4gICNlcnJvclR5cGVzO1xuICAjQ29tcG9uZW50O1xuICAjZGlzcG9zZTtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3IsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXRcbiAgICB9ID0gY29uZmlnO1xuICAgIHRoaXMuI2NsaWVudCA9IGNyZWF0ZVNpZ25hbChjbGllbnQpO1xuICAgIHRoaXMuI3F1ZXJ5Rmxhdm9yID0gcXVlcnlGbGF2b3I7XG4gICAgdGhpcy4jdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy4jb25saW5lTWFuYWdlciA9IG9ubGluZU1hbmFnZXI7XG4gICAgdGhpcy4jc3R5bGVOb25jZSA9IHN0eWxlTm9uY2U7XG4gICAgdGhpcy4jc2hhZG93RE9NVGFyZ2V0ID0gc2hhZG93RE9NVGFyZ2V0O1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uID0gY3JlYXRlU2lnbmFsKGJ1dHRvblBvc2l0aW9uKTtcbiAgICB0aGlzLiNwb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChwb3NpdGlvbik7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlbiA9IGNyZWF0ZVNpZ25hbChpbml0aWFsSXNPcGVuKTtcbiAgICB0aGlzLiNlcnJvclR5cGVzID0gY3JlYXRlU2lnbmFsKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldEJ1dHRvblBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jcG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldEluaXRpYWxJc09wZW4oaXNPcGVuKSB7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlblsxXShpc09wZW4pO1xuICB9XG4gIHNldEVycm9yVHlwZXMoZXJyb3JUeXBlcykge1xuICAgIHRoaXMuI2Vycm9yVHlwZXNbMV0oZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0Q2xpZW50KGNsaWVudCkge1xuICAgIHRoaXMuI2NsaWVudFsxXShjbGllbnQpO1xuICB9XG4gIG1vdW50KGVsKSB7XG4gICAgaWYgKHRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgYWxyZWFkeSBtb3VudGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCBkaXNwb3NlID0gcmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IF9zZWxmJCA9IHRoaXM7XG4gICAgICBjb25zdCBbYnRuUG9zaXRpb25dID0gdGhpcy4jYnV0dG9uUG9zaXRpb247XG4gICAgICBjb25zdCBbcG9zXSA9IHRoaXMuI3Bvc2l0aW9uO1xuICAgICAgY29uc3QgW2lzT3Blbl0gPSB0aGlzLiNpbml0aWFsSXNPcGVuO1xuICAgICAgY29uc3QgW2Vycm9yc10gPSB0aGlzLiNlcnJvclR5cGVzO1xuICAgICAgY29uc3QgW3F1ZXJ5Q2xpZW50XSA9IHRoaXMuI2NsaWVudDtcbiAgICAgIGxldCBEZXZ0b29scztcbiAgICAgIGlmICh0aGlzLiNDb21wb25lbnQpIHtcbiAgICAgICAgRGV2dG9vbHMgPSB0aGlzLiNDb21wb25lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEZXZ0b29scyA9IGxhenkoKCkgPT4gaW1wb3J0KCcuL0RldnRvb2xzQ29tcG9uZW50L0NQSU9aUzVYLmpzJykpO1xuICAgICAgICB0aGlzLiNDb21wb25lbnQgPSBEZXZ0b29scztcbiAgICAgIH1cbiAgICAgIHNldHVwU3R5bGVTaGVldCh0aGlzLiNzdHlsZU5vbmNlLCB0aGlzLiNzaGFkb3dET01UYXJnZXQpO1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEZXZ0b29scywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGdldCBxdWVyeUZsYXZvcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNxdWVyeUZsYXZvcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jdmVyc2lvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9ubGluZU1hbmFnZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jb25saW5lTWFuYWdlcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHNoYWRvd0RPTVRhcmdldCgpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNzaGFkb3dET01UYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZ2V0IGNsaWVudCgpIHtcbiAgICAgICAgICByZXR1cm4gcXVlcnlDbGllbnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJ1dHRvblBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBidG5Qb3NpdGlvbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHBvcygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgaW5pdGlhbElzT3BlbigpIHtcbiAgICAgICAgICByZXR1cm4gaXNPcGVuKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvclR5cGVzKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcnMoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0sIGVsKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuI2Rpc3Bvc2UgPSBkaXNwb3NlO1xuICB9XG4gIHVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIG5vdCBtb3VudGVkXCIpO1xuICAgIH1cbiAgICB0aGlzLiNkaXNwb3NlPy4oKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSBmYWxzZTtcbiAgfVxufTtcblxuLy8gc3JjL1RhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsLnRzeFxudmFyIFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsID0gY2xhc3Mge1xuICAjY2xpZW50O1xuICAjb25saW5lTWFuYWdlcjtcbiAgI3F1ZXJ5Rmxhdm9yO1xuICAjdmVyc2lvbjtcbiAgI2lzTW91bnRlZCA9IGZhbHNlO1xuICAjc3R5bGVOb25jZTtcbiAgI3NoYWRvd0RPTVRhcmdldDtcbiAgI2J1dHRvblBvc2l0aW9uO1xuICAjcG9zaXRpb247XG4gICNpbml0aWFsSXNPcGVuO1xuICAjZXJyb3JUeXBlcztcbiAgI29uQ2xvc2U7XG4gICNDb21wb25lbnQ7XG4gICNkaXNwb3NlO1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcixcbiAgICAgIHZlcnNpb24sXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICAgIG9uQ2xvc2VcbiAgICB9ID0gY29uZmlnO1xuICAgIHRoaXMuI2NsaWVudCA9IGNyZWF0ZVNpZ25hbChjbGllbnQpO1xuICAgIHRoaXMuI3F1ZXJ5Rmxhdm9yID0gcXVlcnlGbGF2b3I7XG4gICAgdGhpcy4jdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy4jb25saW5lTWFuYWdlciA9IG9ubGluZU1hbmFnZXI7XG4gICAgdGhpcy4jc3R5bGVOb25jZSA9IHN0eWxlTm9uY2U7XG4gICAgdGhpcy4jc2hhZG93RE9NVGFyZ2V0ID0gc2hhZG93RE9NVGFyZ2V0O1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uID0gY3JlYXRlU2lnbmFsKGJ1dHRvblBvc2l0aW9uKTtcbiAgICB0aGlzLiNwb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChwb3NpdGlvbik7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlbiA9IGNyZWF0ZVNpZ25hbChpbml0aWFsSXNPcGVuKTtcbiAgICB0aGlzLiNlcnJvclR5cGVzID0gY3JlYXRlU2lnbmFsKGVycm9yVHlwZXMpO1xuICAgIHRoaXMuI29uQ2xvc2UgPSBjcmVhdGVTaWduYWwob25DbG9zZSk7XG4gIH1cbiAgc2V0QnV0dG9uUG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0UG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNwb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0SW5pdGlhbElzT3Blbihpc09wZW4pIHtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuWzFdKGlzT3Blbik7XG4gIH1cbiAgc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzKSB7XG4gICAgdGhpcy4jZXJyb3JUeXBlc1sxXShlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRDbGllbnQoY2xpZW50KSB7XG4gICAgdGhpcy4jY2xpZW50WzFdKGNsaWVudCk7XG4gIH1cbiAgc2V0T25DbG9zZShvbkNsb3NlKSB7XG4gICAgdGhpcy4jb25DbG9zZVsxXSgoKSA9PiBvbkNsb3NlKTtcbiAgfVxuICBtb3VudChlbCkge1xuICAgIGlmICh0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIGFscmVhZHkgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGlzcG9zZSA9IHJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBfc2VsZiQgPSB0aGlzO1xuICAgICAgY29uc3QgW2J0blBvc2l0aW9uXSA9IHRoaXMuI2J1dHRvblBvc2l0aW9uO1xuICAgICAgY29uc3QgW3Bvc10gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtpc09wZW5dID0gdGhpcy4jaW5pdGlhbElzT3BlbjtcbiAgICAgIGNvbnN0IFtlcnJvcnNdID0gdGhpcy4jZXJyb3JUeXBlcztcbiAgICAgIGNvbnN0IFtxdWVyeUNsaWVudF0gPSB0aGlzLiNjbGllbnQ7XG4gICAgICBjb25zdCBbb25DbG9zZV0gPSB0aGlzLiNvbkNsb3NlO1xuICAgICAgbGV0IERldnRvb2xzO1xuICAgICAgaWYgKHRoaXMuI0NvbXBvbmVudCkge1xuICAgICAgICBEZXZ0b29scyA9IHRoaXMuI0NvbXBvbmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERldnRvb2xzID0gbGF6eSgoKSA9PiBpbXBvcnQoJy4vRGV2dG9vbHNQYW5lbENvbXBvbmVudC9PS0Y2RTQ1Ui5qcycpKTtcbiAgICAgICAgdGhpcy4jQ29tcG9uZW50ID0gRGV2dG9vbHM7XG4gICAgICB9XG4gICAgICBzZXR1cFN0eWxlU2hlZXQodGhpcy4jc3R5bGVOb25jZSwgdGhpcy4jc2hhZG93RE9NVGFyZ2V0KTtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGV2dG9vbHMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgcXVlcnlGbGF2b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jcXVlcnlGbGF2b3I7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3ZlcnNpb247XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbmxpbmVNYW5hZ2VyKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI29ubGluZU1hbmFnZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzaGFkb3dET01UYXJnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jc2hhZG93RE9NVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBidXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYnRuUG9zaXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwb3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGluaXRpYWxJc09wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JUeXBlcygpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbkNsb3NlKCkge1xuICAgICAgICAgIHJldHVybiBvbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9LCBlbCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgfVxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgdGhpcy4jZGlzcG9zZT8uKCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gZmFsc2U7XG4gIH1cbn07XG5cbmV4cG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29scywgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgfTtcbiIsICIndXNlIGNsaWVudCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgb25saW5lTWFuYWdlciwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5pbXBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgRGV2dG9vbHNFcnJvclR5cGUgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuXG5leHBvcnQgaW50ZXJmYWNlIERldnRvb2xzUGFuZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YW5jZSBvZiBRdWVyeUNsaWVudFxuICAgKi9cbiAgY2xpZW50PzogUXVlcnlDbGllbnRcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvcnMgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhlIGRldnRvb2xzLlxuICAgKi9cbiAgZXJyb3JUeXBlcz86IEFycmF5PERldnRvb2xzRXJyb3JUeXBlPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcGFzcyBhIG5vbmNlIHRvIHRoZSBzdHlsZSB0YWcgdGhhdCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IChDU1ApIG5vbmNlIHRvIGFsbG93IGlubGluZSBzdHlsZXMuXG4gICAqL1xuICBzdHlsZU5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGF0dGFjaCB0aGUgZGV2dG9vbCdzIHN0eWxlcyB0byBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBET00uXG4gICAqL1xuICBzaGFkb3dET01UYXJnZXQ/OiBTaGFkb3dSb290XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBzdHlsZXMgZm9yIHRoZSBkZXZ0b29scyBwYW5lbFxuICAgKiBAZGVmYXVsdCB7IGhlaWdodDogJzUwMHB4JyB9XG4gICAqIEBleGFtcGxlIHsgaGVpZ2h0OiAnMTAwJScgfVxuICAgKiBAZXhhbXBsZSB7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH1cbiAgICovXG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllc1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBkZXZ0b29scyBwYW5lbCBpcyBjbG9zZWRcbiAgICovXG4gIG9uQ2xvc2U/OiAoKSA9PiB1bmtub3duXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbChcbiAgcHJvcHM6IERldnRvb2xzUGFuZWxPcHRpb25zLFxuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQocHJvcHMuY2xpZW50KVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgZXJyb3JUeXBlcywgc3R5bGVOb25jZSwgc2hhZG93RE9NVGFyZ2V0IH0gPSBwcm9wc1xuICBjb25zdCBbZGV2dG9vbHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgbmV3IFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsKHtcbiAgICAgIGNsaWVudDogcXVlcnlDbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcjogJ1JlYWN0IFF1ZXJ5JyxcbiAgICAgIHZlcnNpb246ICc1JyxcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbjogJ2JvdHRvbS1sZWZ0JyxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIGluaXRpYWxJc09wZW46IHRydWUsXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICAgIG9uQ2xvc2U6IHByb3BzLm9uQ2xvc2UsXG4gICAgfSksXG4gIClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldENsaWVudChxdWVyeUNsaWVudClcbiAgfSwgW3F1ZXJ5Q2xpZW50LCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRPbkNsb3NlKHByb3BzLm9uQ2xvc2UgPz8gKCgpID0+IHt9KSlcbiAgfSwgW3Byb3BzLm9uQ2xvc2UsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEVycm9yVHlwZXMoZXJyb3JUeXBlcyB8fCBbXSlcbiAgfSwgW2Vycm9yVHlwZXMsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgZGV2dG9vbHMubW91bnQocmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRldnRvb2xzLnVubW91bnQoKVxuICAgIH1cbiAgfSwgW2RldnRvb2xzXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7IGhlaWdodDogJzUwMHB4JywgLi4ucHJvcHMuc3R5bGUgfX1cbiAgICAgIGNsYXNzTmFtZT1cInRzcWQtcGFyZW50LWNvbnRhaW5lclwiXG4gICAgICByZWY9e3JlZn1cbiAgICA+PC9kaXY+XG4gIClcbn1cbiIsICIndXNlIGNsaWVudCdcblxuaW1wb3J0ICogYXMgRGV2dG9vbHMgZnJvbSAnLi9SZWFjdFF1ZXJ5RGV2dG9vbHMnXG5pbXBvcnQgKiBhcyBEZXZ0b29sc1BhbmVsIGZyb20gJy4vUmVhY3RRdWVyeURldnRvb2xzUGFuZWwnXG5cbmV4cG9ydCBjb25zdCBSZWFjdFF1ZXJ5RGV2dG9vbHM6ICh0eXBlb2YgRGV2dG9vbHMpWydSZWFjdFF1ZXJ5RGV2dG9vbHMnXSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgOiBEZXZ0b29scy5SZWFjdFF1ZXJ5RGV2dG9vbHNcblxuZXhwb3J0IGNvbnN0IFJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsOiAodHlwZW9mIERldnRvb2xzUGFuZWwpWydSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCddID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICA6IERldnRvb2xzUGFuZWwuUmVhY3RRdWVyeURldnRvb2xzUGFuZWxcbiIsICJpbXBvcnQgeyBUb2FzdGVyIGFzIFNvbm5lciB9IGZyb20gXCJzb25uZXJcIjtcblxuLy8gaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQC91aS9zdHVkaW8vdXRpbC90aGVtZS1wcm92aWRlclwiO1xuXG50eXBlIFRvYXN0ZXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBTb25uZXI+O1xuXG5jb25zdCBUb2FzdGVyID0gKHsgLi4ucHJvcHMgfTogVG9hc3RlclByb3BzKSA9PiB7XG4gIC8vIGNvbnN0IHsgdGhlbWUgPSBcInN5c3RlbVwiIH0gPSB1c2VUaGVtZSgpO1xuXG4gIHJldHVybiAoXG4gICAgPFNvbm5lclxuICAgICAgLy8gdGhlbWU9e3RoZW1lIGFzIFRvYXN0ZXJQcm9wc1tcInRoZW1lXCJdfVxuICAgICAgY2xhc3NOYW1lPVwicHMtdG9hc3RlciBwcy1ncm91cFwiXG4gICAgICB0b2FzdE9wdGlvbnM9e3tcbiAgICAgICAgY2xhc3NOYW1lczoge1xuICAgICAgICAgIHRvYXN0OlxuICAgICAgICAgICAgXCJncm91cCB0b2FzdCBncm91cC1bLnRvYXN0ZXJdOmJnLWJhY2tncm91bmQgZ3JvdXAtWy50b2FzdGVyXTp0ZXh0LWZvcmVncm91bmQgZ3JvdXAtWy50b2FzdGVyXTpib3JkZXItYm9yZGVyIGdyb3VwLVsudG9hc3Rlcl06c2hhZG93LWxnXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgYWN0aW9uQnV0dG9uOiBcImdyb3VwLVsudG9hc3RdOmJnLXByaW1hcnkgZ3JvdXAtWy50b2FzdF06dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgICAgICBjYW5jZWxCdXR0b246IFwiZ3JvdXAtWy50b2FzdF06YmctbXV0ZWQgZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIH0sXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgeyBUb2FzdGVyIH07XG4iLCAiaW1wb3J0IHtcbiAgdW5zdGFibGVfQWRhcHRlck9wdGlvbnMgYXMgQWRhcHRlck9wdGlvbnMsXG4gIHVuc3RhYmxlX2NyZWF0ZUFkYXB0ZXJQcm92aWRlciBhcyBjcmVhdGVBZGFwdGVyUHJvdmlkZXIsXG59IGZyb20gXCJudXFzL2FkYXB0ZXJzL2N1c3RvbVwiO1xuaW1wb3J0IHsgRkMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCB0eXBlIHsgZGVmYXVsdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIEhvb2sgdGhhdCBOdXFzIHdpbGwgY2FsbCB0byByZWFkICYgd3JpdGUgVVJMIHN0YXRlLlxuICovXG5mdW5jdGlvbiB1c2VIYXNoQWRhcHRlcigpIHtcbiAgLy8gcmVhZCBjdXJyZW50IHN0YXRlIGZyb20gZXZlcnl0aGluZyBhZnRlciB0aGUgXHUyMDFDI1x1MjAxRFxuICBjb25zdCByYXdIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG4gIGNvbnN0IFtoYXNoUGFyYW1zLCBzZXRIYXNoUGFyYW1zXSA9IHVzZVN0YXRlKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuXG4gIC8vIHdyaXRlIG5ldyBzdGF0ZSBiYWNrIGludG8gdGhlIGhhc2ggZnJhZ21lbnRcbiAgZnVuY3Rpb24gdXBkYXRlVXJsKHVwZGF0ZWQ6IFVSTFNlYXJjaFBhcmFtcywgeyBoaXN0b3J5IH06IEFkYXB0ZXJPcHRpb25zKSB7XG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3QgaGFzaCA9IHVwZGF0ZWQudG9TdHJpbmcoKTtcbiAgICBjb25zdCB1cmwgPSBgJHtwYXRobmFtZX0ke3NlYXJjaH0jJHtoYXNofWA7XG5cbiAgICBpZiAoaGlzdG9yeSA9PT0gXCJwdXNoXCIpIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICB9XG5cbiAgICBzZXRIYXNoUGFyYW1zKHVwZGF0ZWQpO1xuICB9XG5cbiAgLy8gZXhwb3NlIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgcGFyYW1zXG4gIGZ1bmN0aW9uIGdldFNlYXJjaFBhcmFtc1NuYXBzaG90KCkge1xuICAgIGNvbnN0IHJhdyA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuXG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3KTtcbiAgfVxuXG4gIC8vIHN5bmMgc3RhdGUgd2hlbiB1c2VyIG5hdmlnYXRlcyB2aWEgYnJvd3NlciBjb250cm9scyBvciBleHRlcm5hbCBzY3JpcHRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBoYW5kbGVIYXNoQ2hhbmdlKCkge1xuICAgICAgY29uc3QgcmF3SGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuICAgICAgc2V0SGFzaFBhcmFtcyhuZXcgVVJMU2VhcmNoUGFyYW1zKHJhd0hhc2gpKTtcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIiwgaGFuZGxlSGFzaENoYW5nZSk7XG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJoYXNoY2hhbmdlXCIsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHsgc2VhcmNoUGFyYW1zOiBoYXNoUGFyYW1zLCB1cGRhdGVVcmwsIGdldFNlYXJjaFBhcmFtc1NuYXBzaG90IH07XG59XG5cbi8qKlxuICogVGhlIGFkYXB0ZXIgcHJvdmlkZXIgY29tcG9uZW50IHlvdSB3cmFwIHlvdXIgYXBwIGluLlxuICovXG5leHBvcnQgY29uc3QgTnVxc0hhc2hBZGFwdGVyID0gY3JlYXRlQWRhcHRlclByb3ZpZGVyKHVzZUhhc2hBZGFwdGVyKSBhcyBGQzxQcm9wc1dpdGhDaGlsZHJlbj47XG4iLCAiaW1wb3J0IHsgaW5mZXJSb3dGaWx0ZXIsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5mdW5jdGlvbiBnZXRSb3dJZChyb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0YWJsZTogVGFibGUpIHtcbiAgY29uc3QgaWQgPSB7XG4gICAgZmlsdGVyOiBpbmZlclJvd0ZpbHRlcihyb3csIHRhYmxlLmNvbHVtbnMpLFxuICAgIHRhYmxlOiBgJHt0YWJsZS5zY2hlbWF9LiR7dGFibGUubmFtZX1gLFxuICB9O1xuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShpZCk7XG59XG5cbmZ1bmN0aW9uIGFkZFJvd0lkVG9Sb3cocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIHJldHVybiB7IC4uLnJvdywgX19wc19yb3dpZDogZ2V0Um93SWQocm93LCB0YWJsZSkgfTtcbn1cblxudHlwZSBBZGFwdGVyUmVzdWx0ID0ge1xuICByb3c/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcm93cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkUm93SWRUb1Jlc3VsdDxUIGV4dGVuZHMgQWRhcHRlclJlc3VsdD4ocmVzdWx0OiBULCB0YWJsZTogVGFibGUpIHtcbiAgY29uc3QgeyByb3csIHJvd3MgfSA9IHJlc3VsdDtcblxuICBpZiAocm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJvdzogYWRkUm93SWRUb1Jvdyhyb3csIHRhYmxlKSB9O1xuICB9XG4gIGlmIChyb3dzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJvd3M6IHJvd3MubWFwKChyb3cpID0+IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkpIH07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJRdWVyeVJlc3VsdCwgRmlsdGVyR3JvdXAsIFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGFkZFJvd0lkVG9SZXN1bHQgfSBmcm9tIFwiLi91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUFjdGl2ZVRhYmxlUXVlcnlQcm9wcyB7XG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICBzb3J0T3JkZXI6IFNvcnRPcmRlckl0ZW1bXTtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlUXVlcnkocHJvcHM6IFVzZUFjdGl2ZVRhYmxlUXVlcnlQcm9wcykge1xuICBjb25zdCB7IHBhZ2VJbmRleCwgcGFnZVNpemUsIHNvcnRPcmRlciwgZmlsdGVyIH0gPSBwcm9wcztcblxuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIGVuYWJsZWQ6IEJvb2xlYW4oYWN0aXZlVGFibGUpLFxuICAgIGdjVGltZTogMCxcbiAgICBwbGFjZWhvbGRlckRhdGEocHJldmlvdXNEYXRhOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQsIHByZXZpb3VzUXVlcnkpIHtcbiAgICAgIGNvbnN0IFssIHNjaGVtYSwgLCB0YWJsZV0gPSBwcmV2aW91c1F1ZXJ5Py5xdWVyeUtleSB8fCBbXTtcblxuICAgICAgaWYgKHNjaGVtYSAhPT0gYWN0aXZlVGFibGU/LnNjaGVtYSB8fCB0YWJsZSAhPT0gYWN0aXZlVGFibGU/Lm5hbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNEYXRhO1xuICAgIH0sXG4gICAgYXN5bmMgcXVlcnlGbih7IHNpZ25hbCB9KSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdHNdID0gYXdhaXQgYWRhcHRlci5xdWVyeShcbiAgICAgICAgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIHRhYmxlOiBhY3RpdmVUYWJsZSEsIGZpbHRlciB9LFxuICAgICAgICB7IGFib3J0U2lnbmFsOiBzaWduYWwgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFkZFJvd0lkVG9SZXN1bHQocmVzdWx0cywgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIHF1ZXJ5S2V5OiBbXG4gICAgICBcInNjaGVtYVwiLFxuICAgICAgYWN0aXZlVGFibGU/LnNjaGVtYSB8fCBudWxsLFxuICAgICAgXCJ0YWJsZVwiLFxuICAgICAgYWN0aXZlVGFibGU/Lm5hbWUgfHwgbnVsbCxcbiAgICAgIFwicXVlcnlcIixcbiAgICAgIFwic29ydE9yZGVyXCIsXG4gICAgICBzb3J0T3JkZXIubWFwKChpdGVtKSA9PiBgJHtpdGVtLmNvbHVtbn06JHtpdGVtLmRpcmVjdGlvbn1gKS5qb2luKFwiLFwiKSB8fCBcIm5hdHVyYWxcIixcbiAgICAgIFwicGFnZUluZGV4XCIsXG4gICAgICBwYWdlSW5kZXgsXG4gICAgICBcInBhZ2VTaXplXCIsXG4gICAgICBwYWdlU2l6ZSxcbiAgICAgIFwiZmlsdGVyXCIsXG4gICAgICBKU09OLnN0cmluZ2lmeShmaWx0ZXIpLFxuICAgIF0sXG4gICAgc3RhbGVUaW1lOiBJbmZpbml0eSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgdHlwZSBRdWVyeUNsaWVudCwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJRdWVyeVJlc3VsdCwgQWRhcHRlclVwZGF0ZURldGFpbHMsIEFkYXB0ZXJVcGRhdGVPcHRpb25zLCBUYWJsZSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IGluZmVyUm93RmlsdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGEvcXVlcnlcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zIHtcbiAgZGV0YWlsczogQWRhcHRlclVwZGF0ZURldGFpbHM7XG4gIG9wdGlvbnM6IEFkYXB0ZXJVcGRhdGVPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVVcGRhdGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgY29uc3QgcXVlcnlLZXlQcmVmaXggPSBbXCJzY2hlbWFcIiwgYWN0aXZlVGFibGU/LnNjaGVtYSA/PyBudWxsLCBcInRhYmxlXCIsIGFjdGl2ZVRhYmxlPy5uYW1lID8/IG51bGxdIGFzIGNvbnN0O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHBhcmFtczogVXNlQWN0aXZlVGFibGVVcGRhdGVQYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIudXBkYXRlKHBhcmFtcy5kZXRhaWxzLCBwYXJhbXMub3B0aW9ucyk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIG11dGF0aW9uS2V5OiBbLi4ucXVlcnlLZXlQcmVmaXgsIFwidXBkYXRlXCJdLFxuICAgIG9uRXJyb3IoZXJyb3IsIHBhcmFtcykge1xuICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICBvbkVycm9yKGVycm9yKTtcblxuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gcmV2ZXJ0Q2hhbmdlcyhjYWNoZWRSb3cpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY2FjaGVkUm93LFxuICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoY2hhbmdlcykucmVkdWNlKFxuICAgICAgICAgICAgICAob3JpZ2luYWxWYWx1ZXMsIGNvbHVtbk5hbWUpID0+ICh7IC4uLm9yaWdpbmFsVmFsdWVzLCBbY29sdW1uTmFtZV06IHJvd1tjb2x1bW5OYW1lXSB9KSxcbiAgICAgICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uTXV0YXRlKHBhcmFtcykge1xuICAgICAgY29uc3QgeyBkZXRhaWxzIH0gPSBwYXJhbXM7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IHsgcm93OiB1bmNoYW5nZWRSb3cgfSA9IGRldGFpbHM7XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcih1bmNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiBhcHBseUNoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5kZXRhaWxzLmNoYW5nZXMgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKHJlc3VsdCwgcGFyYW1zKSB7XG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IGNoYW5nZXMsIHJvdyB9ID0gcGFyYW1zLmRldGFpbHM7XG5cbiAgICAgICAgICBjb25zdCBjaGFuZ2VkUm93ID0geyAuLi5yb3csIC4uLmNoYW5nZXMgfTtcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKGNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiBhcHBseVJlYWxEYXRhV2hlbkZyZXNoZXIoY2FjaGVkUm93KSB7XG4gICAgICAgICAgY29uc3QgeyBfX3BzX3VwZGF0ZWRfYXRfXyB9ID0gY2FjaGVkUm93O1xuICAgICAgICAgIGNvbnN0IHsgcm93IH0gPSByZXN1bHQ7XG5cbiAgICAgICAgICAvLyByZXN1bHQgcm93IGlzIHN0YWxlLlxuICAgICAgICAgIGlmIChfX3BzX3VwZGF0ZWRfYXRfXyAhPSBudWxsICYmIHJvdy5fX3BzX3VwZGF0ZWRfYXRfXyA8PSBfX3BzX3VwZGF0ZWRfYXRfXykge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFJvdztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4geyAuLi5jYWNoZWRSb3csIC4uLnJvdyB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvdmVyd3JpdGVDYWNoZWRSb3cocGFyYW1zOiB7XG4gIGdldEZpbmRlckZuOiAoKSA9PiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICB1cGRhdGVyRm46IChjYWNoZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcXVlcnlDbGllbnQ6IFF1ZXJ5Q2xpZW50O1xufSkge1xuICBjb25zdCB7IGdldEZpbmRlckZuLCBxdWVyeUNsaWVudCwgdGFibGUsIHVwZGF0ZXJGbiB9ID0gcGFyYW1zO1xuXG4gIGxldCBmaW5kZXI6IFJldHVyblR5cGU8dHlwZW9mIGdldEZpbmRlckZuPjtcblxuICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YShcbiAgICB7IGV4YWN0OiBmYWxzZSwgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCB0YWJsZS5zY2hlbWEsIFwidGFibGVcIiwgdGFibGUubmFtZSwgXCJxdWVyeVwiXSB9LFxuICAgIChjYWNoZWRSZXN1bHQ6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCk6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBjb25zdCB7IHJvd3M6IGNhY2hlZFJvd3MgPSBbXSB9ID0gY2FjaGVkUmVzdWx0IHx8IHt9O1xuXG4gICAgICBpZiAoY2FjaGVkUm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FjaGVkUm93SW5kZXggPSBjYWNoZWRSb3dzLmZpbmRJbmRleCgoZmluZGVyID8/PSBnZXRGaW5kZXJGbigpKSk7XG5cbiAgICAgIGlmIChjYWNoZWRSb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Um93ID0gdXBkYXRlckZuKGNhY2hlZFJvd3NbY2FjaGVkUm93SW5kZXhdISk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNhY2hlZFJlc3VsdCEsXG4gICAgICAgIHJvd3M6IFsuLi5jYWNoZWRSb3dzLnNsaWNlKDAsIGNhY2hlZFJvd0luZGV4KSwgbmV3Um93LCAuLi5jYWNoZWRSb3dzLnNsaWNlKGNhY2hlZFJvd0luZGV4ICsgMSldLFxuICAgICAgfTtcbiAgICB9LFxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzaG9ydCBmcm9tIFwic2hvcnQtdXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IEZpbHRlckdyb3VwIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuL251cXNcIjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRGaWx0ZXI6IEZpbHRlckdyb3VwID0ge1xuICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gIGZpbHRlcnM6IFtdLFxuICBhZnRlcjogXCJhbmRcIixcbiAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG59O1xuXG5jb25zdCBjb3VudEZpbHRlcnNSZWN1cnNpdmUgPSAoZmlsdGVyR3JvdXA6IEZpbHRlckdyb3VwKTogbnVtYmVyID0+IHtcbiAgbGV0IGNvdW50ID0gMDtcbiAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVyR3JvdXAuZmlsdGVycykge1xuICAgIGlmIChmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgICAgLy8gT25seSBjb3VudCBmaWx0ZXJzIHRoYXQgaGF2ZSBhIG5vbi1lbXB0eSBjb2x1bW4gc2VsZWN0ZWRcbiAgICAgIGlmIChmaWx0ZXIuY29sdW1uLnRyaW0oKSkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZmlsdGVyLmtpbmQgPT09IFwiRmlsdGVyR3JvdXBcIikge1xuICAgICAgY291bnQgKz0gY291bnRGaWx0ZXJzUmVjdXJzaXZlKGZpbHRlcik7XG4gICAgfVxuICB9XG4gIHJldHVybiBjb3VudDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VGaWx0ZXJpbmcoKSB7XG4gIGNvbnN0IFtmaWx0ZXJQYXJhbSwgc2V0RmlsdGVyUGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcImZpbHRlclwiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBKU09OLnN0cmluZ2lmeShkZWZhdWx0RmlsdGVyKSxcbiAgfSk7XG5cbiAgY29uc3QgYXBwbGllZEZpbHRlciA9IHVzZU1lbW8oKCkgPT4gSlNPTi5wYXJzZShmaWx0ZXJQYXJhbSkgYXMgRmlsdGVyR3JvdXAsIFtmaWx0ZXJQYXJhbV0pO1xuICBjb25zdCBzZXRBcHBsaWVkRmlsdGVyID0gKGZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQgc2V0RmlsdGVyUGFyYW0oSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSk7XG5cbiAgY29uc3QgW2VkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXJdID0gdXNlU3RhdGU8RmlsdGVyR3JvdXA+KGFwcGxpZWRGaWx0ZXIpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RWRpdGluZ0ZpbHRlcihhcHBsaWVkRmlsdGVyKTtcbiAgfSwgW2FwcGxpZWRGaWx0ZXJdKTtcblxuICBjb25zdCB0b3RhbEVkaXRpbmdGaWx0ZXJzID0gdXNlTWVtbygoKSA9PiBjb3VudEZpbHRlcnNSZWN1cnNpdmUoZWRpdGluZ0ZpbHRlciksIFtlZGl0aW5nRmlsdGVyXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhcHBsaWVkRmlsdGVyLFxuICAgIHNldEFwcGxpZWRGaWx0ZXIsXG4gICAgZWRpdGluZ0ZpbHRlcixcbiAgICBzZXRFZGl0aW5nRmlsdGVyLFxuICAgIHRvdGFsRWRpdGluZ0ZpbHRlcnMsXG4gIH07XG59XG4iLCAiLy8gd2UncmUgZW5zdXJpbmcgdGhhdCBrZXlzIGFyZSB0eXBlLXNhZmUuIHRoZXJlIGlzIG5vIHByb3BlciB3YXkgdG8gYWNoaWV2ZSBpdCBpbiBgbnVxc2AuXG4vLyB0aGUgYGRlY2xhcmUgbW9kdWxlYCB0ZWNobmlxdWUgcmVzdWx0cyBpbiBhZGRpbmcgb3ZlcmxvYWRzLCBub3Qgb3ZlcnJpZGluZyB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zLlxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQge1xuICB0eXBlIE9wdGlvbnMsXG4gIHR5cGUgUGFyc2VyLFxuICB1c2VRdWVyeVN0YXRlIGFzIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlT3B0aW9ucyxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlUmV0dXJuLFxuICB1c2VRdWVyeVN0YXRlcyBhcyB1c2VRdWVyeVN0YXRlc09yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzT3B0aW9ucyxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlc1JldHVybixcbn0gZnJvbSBcIm51cXNcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuZXhwb3J0ICogZnJvbSBcIm51cXNcIjtcblxuZXhwb3J0IHR5cGUgU3RhdGVLZXkgPSBcInBhZ2VJbmRleFwiIHwgXCJwYWdlU2l6ZVwiIHwgXCJ0YWJsZVwiIHwgXCJzb3J0XCIgfCBcInNjaGVtYVwiIHwgXCJ0ZXN0XCIgfCBcImZpbHRlclwiO1xuXG4vLyBsaWZ0ZWQgZnJvbSBAcHJpc21hL2NsaWVudC9ydW50aW1lXG50eXBlIEV4YWN0PEEsIFc+ID1cbiAgfCAoQSBleHRlbmRzIHVua25vd25cbiAgICAgID8gVyBleHRlbmRzIEFcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBbSyBpbiBrZXlvZiBBXTogRXhhY3Q8QVtLXSwgV1tLXT47XG4gICAgICAgICAgfVxuICAgICAgICA6IFdcbiAgICAgIDogbmV2ZXIpXG4gIHwgKEEgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgfCBib29sZWFuIHwgW10gPyBBIDogbmV2ZXIpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGtleU1hcDxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBrZXlNYXA6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiBrZXlNYXAgYXMgbmV2ZXI7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXJsS2V5czxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgc3RyaW5nPj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1cmxLZXlzOiBFeGFjdDxNYXAsIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4sXG4pOiBCcmFuZGVkS2V5TWFwPE1hcD4ge1xuICByZXR1cm4gdXJsS2V5cyBhcyBuZXZlcjtcbn1cblxuY29uc3QgX0JSQU5EX1NZTUJPTCA9IFN5bWJvbChcIkJSQU5EX1NZTUJPTFwiKTtcblxudHlwZSBCcmFuZGVkS2V5TWFwPE1hcD4gPSBNYXAgJiB7XG4gIFtLIGluIHR5cGVvZiBfQlJBTkRfU1lNQk9MXTogbmV2ZXI7XG59O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+ICYge1xuICAgIGRlZmF1bHRWYWx1ZTogVDtcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48Tm9uTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygb3B0aW9ucy5wYXJzZT4+LCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZztcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFBpY2s8VXNlUXVlcnlTdGF0ZU9wdGlvbnM8c3RyaW5nPiwga2V5b2YgT3B0aW9ucz4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXkpOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShrZXk6IFN0YXRlS2V5LCBvcHRpb25zPzogYW55KTogYW55IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbChrZXksIG9wdGlvbnMpO1xufVxuXG50eXBlIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcDxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+ID0gUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+LFxuPiA9IHtcbiAgW0tleSBpbiBrZXlvZiBNYXBdOiBLZXlNYXBWYWx1ZTxNYXBbS2V5XT47XG59O1xuXG50eXBlIEtleU1hcFZhbHVlPFR5cGU+ID0gUGFyc2VyPFR5cGU+ICZcbiAgT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU/OiBUeXBlO1xuICB9O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlczxLZXlNYXAgZXh0ZW5kcyBVc2VRdWVyeVN0YXRlc0tleXNNYXA+KFxuICBrZXlNYXA6IEJyYW5kZWRLZXlNYXA8S2V5TWFwPixcbiAgb3B0aW9ucz86IFBhcnRpYWw8VXNlUXVlcnlTdGF0ZXNPcHRpb25zPEtleU1hcD4+LFxuKTogVXNlUXVlcnlTdGF0ZXNSZXR1cm48S2V5TWFwPiB7XG4gIHJldHVybiB1c2VRdWVyeVN0YXRlc09yaWdpbmFsKGtleU1hcCBhcyBuZXZlciwgb3B0aW9ucyk7XG59XG4iLCAiaW1wb3J0IHsgdXNlSXNNdXRhdGluZyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuLyoqXG4gKiBIb29rIHRvIGtub3cgd2hldGhlciBhbiBpbnNlcnQgaXMgY3VycmVudGx5IG9uZ29pbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc0luc2VydGluZygpIHtcbiAgcmV0dXJuIHVzZUlzTXV0YXRpbmcoe1xuICAgIHByZWRpY2F0ZSh7IG9wdGlvbnM6IHsgbXV0YXRpb25LZXkgfSB9KSB7XG4gICAgICByZXR1cm4gbXV0YXRpb25LZXk/Lls0XSA9PT0gXCJpbnNlcnRcIjtcbiAgICB9LFxuICB9KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE9uQ2hhbmdlRm4sIFBhZ2luYXRpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGtleU1hcCwgcGFyc2VBc0luZGV4LCBwYXJzZUFzSW50ZWdlciwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5cbi8vIFRPRE86IGV2ZW50dWFsbHkgY29uZmlndXJhYmxlIC8gY29udHJvbGxlZCBieSB1c2VyLiBiYWJ5IHN0ZXBzLi5cbmNvbnN0IERFRkFVTFRfUEFHRV9TSVpFID0gMjU7XG5cbmNvbnN0IHBhZ2luYXRpb25QYXJzZXJzID0ga2V5TWFwKHtcbiAgcGFnZUluZGV4OiBwYXJzZUFzSW5kZXgud2l0aERlZmF1bHQoMCksIC8vIHplcm8tYmFzZWRcbiAgcGFnZVNpemU6IHBhcnNlQXNJbnRlZ2VyLndpdGhEZWZhdWx0KERFRkFVTFRfUEFHRV9TSVpFKSxcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUGFnaW5hdGlvbigpIHtcbiAgY29uc3QgW3sgcGFnZUluZGV4LCBwYWdlU2l6ZSB9LCBzZXRQYWdpbmF0aW9uXSA9IHVzZVF1ZXJ5U3RhdGVzKHBhZ2luYXRpb25QYXJzZXJzKTtcblxuICAvLyBDb21wYXRpYmxlIHdpdGggVGFuU3RhY2sgVGFibGUncyBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT5cbiAgY29uc3Qgc2V0UGFnaW5hdGlvblN0YXRlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT4gPSB1c2VDYWxsYmFjayhcbiAgICAodXBkYXRlck9yVmFsdWUpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB2b2lkIHNldFBhZ2luYXRpb24oKG9sZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdXBkYXRlck9yVmFsdWUob2xkKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGFnZUluZGV4OiBuZXdTdGF0ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgICBwYWdlU2l6ZTogbmV3U3RhdGUucGFnZVNpemUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2b2lkIHNldFBhZ2luYXRpb24oe1xuICAgICAgICAgIHBhZ2VJbmRleDogdXBkYXRlck9yVmFsdWUucGFnZUluZGV4LFxuICAgICAgICAgIHBhZ2VTaXplOiB1cGRhdGVyT3JWYWx1ZS5wYWdlU2l6ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2V0UGFnaW5hdGlvbl0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYWdpbmF0aW9uU3RhdGU6IHsgcGFnZUluZGV4LCBwYWdlU2l6ZSB9LFxuICAgIHNldFBhZ2luYXRpb25TdGF0ZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFkYXB0ZXJRdWVyeVJlc3VsdCB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZURlbGV0ZSB9IGZyb20gXCIuL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4vdXNlLXBhZ2luYXRpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdGlvbihkYXRhOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgb25FcnJvciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlIH0gPSB1c2VQYWdpbmF0aW9uKCk7XG4gIGNvbnN0IFtyb3dTZWxlY3Rpb25TdGF0ZSwgc2V0Um93U2VsZWN0aW9uU3RhdGVdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KTtcbiAgY29uc3QgaXNTZWxlY3RpbmcgPSBPYmplY3Qua2V5cyhyb3dTZWxlY3Rpb25TdGF0ZSkubGVuZ3RoICE9PSAwO1xuICBjb25zdCB7IG11dGF0ZSB9ID0gdXNlQWN0aXZlVGFibGVEZWxldGUoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gc2V0Um93U2VsZWN0aW9uU3RhdGUoe30pLCBbYWN0aXZlVGFibGUsIHBhZ2luYXRpb25TdGF0ZS5wYWdlSW5kZXhdKTtcblxuICBmdW5jdGlvbiBkZWxldGVTZWxlY3Rpb24oKSB7XG4gICAgY29uc3Qgcm93cyA9IGRhdGE/LnJvd3MuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgIHJldHVybiByb3dTZWxlY3Rpb25TdGF0ZVtyb3cuX19wc19yb3dpZCBhcyBzdHJpbmddO1xuICAgIH0pO1xuXG4gICAgbXV0YXRlKHJvd3MgPz8gW10sIHtcbiAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgc2V0Um93U2VsZWN0aW9uU3RhdGUoe30pO1xuICAgICAgfSxcbiAgICAgIG9uRXJyb3IsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRlbGV0ZVNlbGVjdGlvbixcbiAgICBzZXRSb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBpc1NlbGVjdGluZyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeUtleSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJkZWxldGVcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmRlbGV0ZSh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBhc3luYyBvblN1Y2Nlc3MoKSB7XG4gICAgICBhd2FpdCBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7XG4gICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwicXVlcnlcIl0gYXMgbmV2ZXIgYXMgUXVlcnlLZXksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU29ydGluZygpIHtcbiAgLy8gVXNlIG51cXMgdG8gbWFuYWdlIHNvcnRpbmcgc3RhdGUgaW4gVVJMXG4gIGNvbnN0IFtzb3J0UGFyYW0sIHNldFNvcnRQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwic29ydFwiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICB9KTtcblxuICAvLyBQYXJzZSBzb3J0aW5nIGZyb20gVVJMIHBhcmFtZXRlclxuICBjb25zdCBwYXJzZVNvcnRpbmcgPSAoc29ydFBhcmFtOiBzdHJpbmcgfCBudWxsKTogU29ydE9yZGVySXRlbVtdID0+IHtcbiAgICBpZiAoIXNvcnRQYXJhbSkgcmV0dXJuIFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEZvcm1hdDogY29sdW1uOmRpcmVjdGlvbixjb2x1bW46ZGlyZWN0aW9uXG4gICAgICByZXR1cm4gc29ydFBhcmFtXG4gICAgICAgIC5zcGxpdChcIixcIilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtjb2x1bW4sIGRpcmVjdGlvbl0gPSBpdGVtLnNwbGl0KFwiOlwiKTtcbiAgICAgICAgICBpZiAoIWNvbHVtbiB8fCAhZGlyZWN0aW9uIHx8ICFbXCJhc2NcIiwgXCJkZXNjXCJdLmluY2x1ZGVzKGRpcmVjdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyBjb2x1bW4sIGRpcmVjdGlvbjogZGlyZWN0aW9uIGFzIFwiYXNjXCIgfCBcImRlc2NcIiB9O1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFNvcnRPcmRlckl0ZW1bXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIHNvcnRpbmcgcGFyYW1ldGVyOlwiLCBlKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgLy8gQ3JlYXRlIGEgc3RhYmxlIHNvcnRpbmcgc3RhdGUgdGhhdCdzIGRlcml2ZWQgZnJvbSBVUkwgcGFyYW1ldGVyc1xuICBjb25zdCBbc29ydGluZ1N0YXRlLCBzZXRTb3J0aW5nU3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSkpO1xuXG4gIC8vIEtlZXAgaW50ZXJuYWwgc3RhdGUgc3luY2hyb25pemVkIHdpdGggVVJMIHBhcmFtZXRlcnNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXdTb3J0aW5nU3RhdGUgPSBwYXJzZVNvcnRpbmcoc29ydFBhcmFtKTtcbiAgICBzZXRTb3J0aW5nU3RhdGUobmV3U29ydGluZ1N0YXRlKTtcbiAgfSwgW3NvcnRQYXJhbV0pO1xuXG4gIC8vIFVwZGF0ZSBVUkwgd2hlbiBzb3J0aW5nIGNoYW5nZXMgZnJvbSB0aGUgVUlcbiAgY29uc3QgaGFuZGxlU29ydGluZ0NoYW5nZSA9IChuZXdTdGF0ZTogU29ydE9yZGVySXRlbVtdIHwgKChvbGQ6IFNvcnRPcmRlckl0ZW1bXSkgPT4gU29ydE9yZGVySXRlbVtdKSkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkU3RhdGUgPSB0eXBlb2YgbmV3U3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IG5ld1N0YXRlKHNvcnRpbmdTdGF0ZSkgOiBuZXdTdGF0ZTtcbiAgICBzZXRTb3J0aW5nU3RhdGUocmVzb2x2ZWRTdGF0ZSk7XG5cbiAgICAvLyBTZXJpYWxpemUgc29ydGluZyBzdGF0ZSB0byBVUkwgcGFyYW1ldGVyXG4gICAgY29uc3Qgc29ydFN0cmluZyA9XG4gICAgICByZXNvbHZlZFN0YXRlLmxlbmd0aCA+IDAgPyByZXNvbHZlZFN0YXRlLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgOiBudWxsO1xuXG4gICAgdm9pZCBzZXRTb3J0UGFyYW0oc29ydFN0cmluZyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzb3J0aW5nU3RhdGUsXG4gICAgc2V0U29ydGluZ1N0YXRlOiBoYW5kbGVTb3J0aW5nQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbkNlbGwgfSBmcm9tIFwiLi9Cb29sZWFuQ2VsbFwiO1xuaW1wb3J0IHR5cGUgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5pbXBvcnQgeyBEYXRlQ2VsbCB9IGZyb20gXCIuL0RhdGVDZWxsXCI7XG5pbXBvcnQgeyBFbXB0eUNlbGwgfSBmcm9tIFwiLi9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IEVudW1DZWxsIH0gZnJvbSBcIi4vRW51bUNlbGxcIjtcbmltcG9ydCB7IEpTT05DZWxsIH0gZnJvbSBcIi4vSlNPTkNlbGxcIjtcbmltcG9ydCB7IE51bGxDZWxsIH0gZnJvbSBcIi4vTnVsbENlbGxcIjtcbmltcG9ydCB7IE51bWVyaWNDZWxsIH0gZnJvbSBcIi4vTnVtZXJpY0NlbGxcIjtcbmltcG9ydCB7IFJhd0NlbGwgfSBmcm9tIFwiLi9SYXdDZWxsXCI7XG5pbXBvcnQgeyBUaW1lQ2VsbCB9IGZyb20gXCIuL1RpbWVDZWxsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZWxsKHtcbiAgY2VsbCxcbiAgY29sdW1uLFxuICBwcm9wcyxcbn06IHtcbiAgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIGNvbHVtbjogQ29sdW1uO1xuICBwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xufSkge1xuICBjb25zdCB2YWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiA8RW1wdHlDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gLz47XG4gIH1cblxuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gPE51bGxDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gLz47XG4gIH1cblxuICBjb25zdCB7IGdyb3VwLCBvcHRpb25zLCBpc0FycmF5IH0gPSBjb2x1bW4uZGF0YXR5cGU7XG5cbiAgaWYgKGdyb3VwID09PSBcImpzb25cIiB8fCBpc0FycmF5KSB7XG4gICAgcmV0dXJuIDxKU09OQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gPFJhd0NlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImVudW1cIikge1xuICAgIHJldHVybiA8RW51bUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IG9wdGlvbnM9e29wdGlvbnN9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiA8Qm9vbGVhbkNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImRhdGV0aW1lXCIpIHtcbiAgICByZXR1cm4gPERhdGVDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJ0aW1lXCIpIHtcbiAgICByZXR1cm4gPFRpbWVDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gPE51bWVyaWNDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJyYXdcIikge1xuICAgIGlmIChpc09iamVjdFR5cGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gPEpTT05DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gPFJhd0NlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWV9IC8+O1xuICB9XG5cbiAgZ3JvdXAgc2F0aXNmaWVzIG5ldmVyO1xuICB0aHJvdyBuZXcgRXJyb3IoYERhdGF0eXBlIGdyb3VwIFwiJHtncm91cCBhcyBzdHJpbmd9XCIgd2FzIG5vdCBoYW5kbGVkIGluICcvY2VsbC9nZXQtY2VsbC50c3gnYCk7XG59XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5jb25zdCBCb29sZWFuQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBCb29sZWFuQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICA8ZGl2IGRhdGEtY2VsbC10eXBlPVwiYm9vbGVhblwiPntTdHJpbmcoQm9vbGVhbih2YWx1ZSkpfTwvZGl2PlxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuQm9vbGVhbkNlbGwuZGlzcGxheU5hbWUgPSBcIkJvb2xlYW5DZWxsXCI7XG5cbmV4cG9ydCB7IEJvb2xlYW5DZWxsIH07XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRhYmxlID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctYXV0byBwcy1mbGV4IHBzLWl0ZW1zLXN0YXJ0IHBzLWgtZnVsbFwiPlxuICAgICAgPHRhYmxlIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtdy1mdWxsIHBzLWNhcHRpb24tYm90dG9tIHBzLXRleHQtc21cIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICAgIDwvZGl2PlxuICApLFxuKTtcblRhYmxlLmRpc3BsYXlOYW1lID0gXCJUYWJsZVwiO1xuXG5jb25zdCBUYWJsZUhlYWRlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiA8dGhlYWQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPixcbik7XG5UYWJsZUhlYWRlci5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkZXJcIjtcblxuY29uc3QgVGFibGVCb2R5ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGJvZHkgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJbJl90cjpsYXN0LWNoaWxkXTpwcy1ib3JkZXItMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuVGFibGVCb2R5LmRpc3BsYXlOYW1lID0gXCJUYWJsZUJvZHlcIjtcblxuY29uc3QgVGFibGVGb290ZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0Zm9vdFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtYm9yZGVyLXQgcHMtYmctbXV0ZWQvNTAgcHMtZm9udC1tZWRpdW0gWyY+dHJdOmxhc3Q6cHMtYm9yZGVyLWItMFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVGb290ZXIuZGlzcGxheU5hbWUgPSBcIlRhYmxlRm9vdGVyXCI7XG5cbmNvbnN0IFRhYmxlUm93ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVSb3dFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVSb3dFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRyXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtYm9yZGVyLWIgcHMtdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6cHMtYmctbXV0ZWQvNTAgZGF0YS1bc3RhdGU9c2VsZWN0ZWRdOnBzLWJnLW11dGVkXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZVJvdy5kaXNwbGF5TmFtZSA9IFwiVGFibGVSb3dcIjtcblxuY29uc3QgVGFibGVIZWFkID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudCwgUmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0aFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtaC0xMCBwcy1weC0yIHBzLXRleHQtbGVmdCBwcy1hbGlnbi1taWRkbGUgcHMtZm9udC1tZWRpdW0gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZUhlYWQuZGlzcGxheU5hbWUgPSBcIlRhYmxlSGVhZFwiO1xuXG5jb25zdCBUYWJsZUNlbGwgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBSZWFjdC5UZEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiA8dGQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy1hbGlnbi1taWRkbGVcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPixcbik7XG5UYWJsZUNlbGwuZGlzcGxheU5hbWUgPSBcIlRhYmxlQ2VsbFwiO1xuXG5jb25zdCBUYWJsZUNhcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxjYXB0aW9uIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtbXQtNCBwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuVGFibGVDYXB0aW9uLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNhcHRpb25cIjtcblxuZXhwb3J0IHsgVGFibGUsIFRhYmxlSGVhZGVyLCBUYWJsZUJvZHksIFRhYmxlRm9vdGVyLCBUYWJsZUhlYWQsIFRhYmxlUm93LCBUYWJsZUNlbGwsIFRhYmxlQ2FwdGlvbiB9O1xuIiwgImltcG9ydCB7IENvcHkgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBpc1ZhbGlkRWxlbWVudCwgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdHlwZSBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29udGV4dE1lbnUsIENvbnRleHRNZW51Q29udGVudCwgQ29udGV4dE1lbnVJdGVtLCBDb250ZXh0TWVudVRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9jb250ZXh0LW1lbnVcIjtcblxuZXhwb3J0IHR5cGUgRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPG9iamVjdD47XG5cbi8vIFRPRE86IFRoaXMgbmVlZHMgdG8gYmUgaW52ZXJzaWZpZWQgLSB0byBtYWtlIGl0IGV4dGVuc2libGUsIGFuZCBhZGFwdGFibGUgdG8gZGlmZmVyZW50IHNpdHVhdGlvbnMuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUocHJvcHM6IERhdGFHcmlkQ2VsbENvbnRleHRNZW51UHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGV4dE1lbnU+XG4gICAgICA8Q29udGV4dE1lbnVUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLWJsb2NrIHBzLXctZnVsbCBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldIHBzLWxlYWRpbmctW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQ29udGV4dE1lbnVUcmlnZ2VyPlxuICAgICAgPENvbnRleHRNZW51Q29udGVudD5cbiAgICAgICAgPENvbnRleHRNZW51SXRlbVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBleHRyYWN0VGV4dENvbnRlbnQoY2hpbGRyZW4pO1xuICAgICAgICAgICAgdm9pZCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBjb3B5IHRvIGNsaXBib2FyZDpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Q29weSBzaXplPXsxMn0gLz5cbiAgICAgICAgICBDb3B5XG4gICAgICAgIDwvQ29udGV4dE1lbnVJdGVtPlxuICAgICAgPC9Db250ZXh0TWVudUNvbnRlbnQ+XG4gICAgPC9Db250ZXh0TWVudT5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRleHRDb250ZW50KG5vZGU6IFJlYWN0Tm9kZSk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2Ygbm9kZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2Ygbm9kZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gU3RyaW5nKG5vZGUpO1xuICB9XG5cbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICBjb25zdCBwcm9wcyA9IG5vZGUucHJvcHMgYXMgeyB0ZXh0Pzogc3RyaW5nOyBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSB9O1xuXG4gICAgLy8gSGFuZGxlIFJldmVhbFRleHQgY29tcG9uZW50IHNwZWNpZmljYWxseVxuICAgIGlmIChub2RlLnR5cGUgJiYgdHlwZW9mIG5vZGUudHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIG5vZGUudHlwZS5uYW1lID09PSBcIlJldmVhbFRleHRcIikge1xuICAgICAgcmV0dXJuIHByb3BzLnRleHQgfHwgXCJcIjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgTnVsbFZhbHVlIGNvbXBvbmVudFxuICAgIGlmIChub2RlLnR5cGUgJiYgdHlwZW9mIG5vZGUudHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIG5vZGUudHlwZS5uYW1lID09PSBcIk51bGxWYWx1ZVwiKSB7XG4gICAgICByZXR1cm4gXCJOVUxMXCI7XG4gICAgfVxuXG4gICAgLy8gUmVjdXJzaXZlbHkgZXh0cmFjdCB0ZXh0IGZyb20gY2hpbGRyZW5cbiAgICBpZiAocHJvcHMuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBleHRyYWN0VGV4dENvbnRlbnQocHJvcHMuY2hpbGRyZW4gYXMgUmVhY3ROb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUubWFwKGV4dHJhY3RUZXh0Q29udGVudCkuam9pbihcIlwiKTtcbiAgfVxuXG4gIHJldHVybiBcIlwiO1xufVxuIiwgImltcG9ydCAqIGFzIENvbnRleHRNZW51UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dC1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgQ29udGV4dE1lbnUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBDb250ZXh0TWVudVRyaWdnZXIgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBDb250ZXh0TWVudUdyb3VwID0gQ29udGV4dE1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IENvbnRleHRNZW51UG9ydGFsID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YiA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgQ29udGV4dE1lbnVSYWRpb0dyb3VwID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgQ29udGV4dE1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG8gcHMtaC00IHBzLXctNFwiIC8+XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj5cbikpO1xuQ29udGV4dE1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTdWJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnRcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy16LTUwIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LWxnIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodF0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Db250ZXh0TWVudUNvbnRlbnQuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51SXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIGNoZWNrZWQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuQ29udGV4dE1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2lyY2xlIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTQgcHMtZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuQ29udGV4dE1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWw+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZCBwcy10ZXh0LWZvcmVncm91bmRcIiwgaW5zZXQgJiYgXCJwcy1wbC04XCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudUxhYmVsLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtLW14LTEgcHMtbXktMSBwcy1oLXB4IHBzLWJnLWJvcmRlclwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U2hvcnRjdXQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApO1xufTtcbkNvbnRleHRNZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkNvbnRleHRNZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgQ29udGV4dE1lbnUsXG4gIENvbnRleHRNZW51VHJpZ2dlcixcbiAgQ29udGV4dE1lbnVDb250ZW50LFxuICBDb250ZXh0TWVudUl0ZW0sXG4gIENvbnRleHRNZW51Q2hlY2tib3hJdGVtLFxuICBDb250ZXh0TWVudVJhZGlvSXRlbSxcbiAgQ29udGV4dE1lbnVMYWJlbCxcbiAgQ29udGV4dE1lbnVTZXBhcmF0b3IsXG4gIENvbnRleHRNZW51U2hvcnRjdXQsXG4gIENvbnRleHRNZW51R3JvdXAsXG4gIENvbnRleHRNZW51UG9ydGFsLFxuICBDb250ZXh0TWVudVN1YixcbiAgQ29udGV4dE1lbnVTdWJDb250ZW50LFxuICBDb250ZXh0TWVudVN1YlRyaWdnZXIsXG4gIENvbnRleHRNZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiaW1wb3J0IHsgdHlwZSBDU1NQcm9wZXJ0aWVzLCBEZXRhaWxlZEhUTUxQcm9wcywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUNlbGwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBEYXRhR3JpZENlbGxDb250ZXh0TWVudSB9IGZyb20gXCIuLi9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbFByb3BzIGV4dGVuZHMgUHJvcHNXaXRoQ2hpbGRyZW4sIERldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPHVua25vd24+LCB1bmtub3duPiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2VsbChwcm9wczogQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgcmVmLCBzdHlsZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlQ2VsbFxuICAgICAgey4uLmZvcndhcmRlZFByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1wLTAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiLFxuICAgICAgICAvLyBUT0RPOiBLZWVwaW5nIHRoaXMgdGVtcG9yYXJpbHk7IG1pZ2h0IG5lZWQgaXQgbGF0ZXIgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVzXG4gICAgICAgIC8vIFwiZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy0yIGRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctaW5kaWdvLTQwMCBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluc2V0XCIsXG4gICAgICAgIFwicHMtY3Vyc29yLXBvaW50ZXJcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHJlZj17cmVmIGFzIG5ldmVyfVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgID5cbiAgICAgIDxEYXRhR3JpZENlbGxDb250ZXh0TWVudT57Y2hpbGRyZW59PC9EYXRhR3JpZENlbGxDb250ZXh0TWVudT5cbiAgICA8L1RhYmxlQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHN0cmluZyB8IERhdGUgfCBudW1iZXI7XG59XG5cbmNvbnN0IERhdGVDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IERhdGVDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuRGF0ZUNlbGwuZGlzcGxheU5hbWUgPSBcIkRhdGVDZWxsXCI7XG5cbmV4cG9ydCB7IERhdGVDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbXB0eUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xufVxuXG5jb25zdCBFbXB0eUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogRW1wdHlDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0gLz47XG59KTtcbkVtcHR5Q2VsbC5kaXNwbGF5TmFtZSA9IFwiRW1wdHlDZWxsXCI7XG5cbmV4cG9ydCB7IEVtcHR5Q2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW51bUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xufVxuXG5jb25zdCBFbnVtQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBFbnVtQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIG9wdGlvbnMsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkVudW1DZWxsLmRpc3BsYXlOYW1lID0gXCJFbnVtQ2VsbFwiO1xuXG5leHBvcnQgeyBFbnVtQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSlNPTkNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmtub3duW107XG59XG5cbmNvbnN0IEpTT05DZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEpTT05DZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMil9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5KU09OQ2VsbC5kaXNwbGF5TmFtZSA9IFwiSlNPTkNlbGxcIjtcblxuZXhwb3J0IHsgSlNPTkNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuY29uc3QgTnVsbENlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogTnVsbENlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICA8Y29kZSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNjBcIj5OVUxMPC9jb2RlPlxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuTnVsbENlbGwuZGlzcGxheU5hbWUgPSBcIk51bGxDZWxsXCI7XG5cbmV4cG9ydCB7IE51bGxDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOdW1lcmljQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5jb25zdCBOdW1lcmljQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBOdW1lcmljQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICA8ZGl2IGRhdGEtY2VsbC10eXBlPVwibnVtZXJpY1wiPnt2YWx1ZSA9PT0gbnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKHZhbHVlKX08L2Rpdj5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbk51bWVyaWNDZWxsLmRpc3BsYXlOYW1lID0gXCJOdW1lcmljQ2VsbFwiO1xuXG5leHBvcnQgeyBOdW1lcmljQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF3Q2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5jb25zdCBSYXdDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IFJhd0NlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5SYXdDZWxsLmRpc3BsYXlOYW1lID0gXCJSYXdDZWxsXCI7XG5cbmV4cG9ydCB7IFJhd0NlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHN0cmluZyB8IERhdGUgfCBudW1iZXI7XG59XG5cbmNvbnN0IFRpbWVDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IFRpbWVDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuVGltZUNlbGwuZGlzcGxheU5hbWUgPSBcIlRpbWVDZWxsXCI7XG5cbmV4cG9ydCB7IFRpbWVDZWxsIH07XG4iLCAiaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEhlYWRlckNlbGxQcm9wcyB7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn1cblxuY29uc3QgU2VsZWN0SGVhZGVyQ2VsbCA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIFNlbGVjdEhlYWRlckNlbGxQcm9wcz4oKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyB0YWJsZSwgcmVhZG9ubHksIGNsYXNzTmFtZSwgc3R5bGUsIC4uLnJlc3QgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9IHN0eWxlPXtzdHlsZX0gey4uLnJlc3R9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy13LWZ1bGxcIj5cbiAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgY2hlY2tlZD17dGFibGUuZ2V0SXNBbGxSb3dzU2VsZWN0ZWQoKX1cbiAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9eyh2YWx1ZSkgPT4gdGFibGUudG9nZ2xlQWxsUm93c1NlbGVjdGVkKCEhdmFsdWUpfVxuICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cblNlbGVjdEhlYWRlckNlbGwuZGlzcGxheU5hbWUgPSBcIlNlbGVjdEhlYWRlckNlbGxcIjtcblxuZXhwb3J0IHsgU2VsZWN0SGVhZGVyQ2VsbCB9O1xuIiwgImltcG9ydCAqIGFzIENoZWNrYm94UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY2hlY2tib3hcIjtcbmltcG9ydCB7IENoZWNrIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENoZWNrYm94UHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWgtNCBwcy13LTQgcHMtc2hyaW5rLTAgcHMtcm91bmRlZC1zbSBwcy1ib3JkZXIgcHMtYm9yZGVyLXByaW1hcnkgcHMtc2hhZG93IGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3IgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXRleHQtY3VycmVudFwiKX0+XG4gICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgPC9DaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3I+XG4gIDwvQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbikpO1xuQ2hlY2tib3guZGlzcGxheU5hbWUgPSBDaGVja2JveFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBDaGVja2JveCB9O1xuIiwgImltcG9ydCB7IFJvdyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94XCI7XG5cbmltcG9ydCB7IFNlbGVjdENlbGwgfSBmcm9tIFwiLi9TZWxlY3RDZWxsXCI7XG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdFJvd0NlbGxQcm9wcyB7XG4gIHJvdzogUm93PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICByZWFkb25seTogYm9vbGVhbjtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xufVxuXG5jb25zdCBTZWxlY3RSb3dDZWxsID0gZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgU2VsZWN0Um93Q2VsbFByb3BzPigocHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IHJvdywgcmVhZG9ubHksIGNsYXNzTmFtZSwgc3R5bGUsIC4uLnJlc3QgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdENlbGwgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSBzdHlsZT17c3R5bGV9IHsuLi5yZXN0fT5cbiAgICAgIDxDaGVja2JveFxuICAgICAgICBjaGVja2VkPXtyb3cuZ2V0SXNTZWxlY3RlZCgpfVxuICAgICAgICBkaXNhYmxlZD17IXJvdy5nZXRDYW5TZWxlY3QoKSB8fCByZWFkb25seX1cbiAgICAgICAgb25DaGVja2VkQ2hhbmdlPXtyb3cuZ2V0VG9nZ2xlU2VsZWN0ZWRIYW5kbGVyKCl9XG4gICAgICAvPlxuICAgIDwvU2VsZWN0Q2VsbD5cbiAgKTtcbn0pO1xuXG5TZWxlY3RSb3dDZWxsLmRpc3BsYXlOYW1lID0gXCJTZWxlY3RSb3dDZWxsXCI7XG5cbmV4cG9ydCB7IFNlbGVjdFJvd0NlbGwgfTtcbiIsICJpbXBvcnQgeyB0eXBlIENTU1Byb3BlcnRpZXMsIERldGFpbGVkSFRNTFByb3BzLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlQ2VsbCwgVGFibGVIZWFkIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdENlbGxQcm9wcyBleHRlbmRzIFByb3BzV2l0aENoaWxkcmVuLCBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczx1bmtub3duPiwgdW5rbm93bj4ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbiAgaXNIZWFkZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0Q2VsbChwcm9wczogU2VsZWN0Q2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgcmVmLCBzdHlsZSwgaXNIZWFkZXIgPSBmYWxzZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNlbGVjdENsYXNzZXMgPSBjbihcbiAgICBcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXAtMCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLXctZnVsbCBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldIHBzLWxlYWRpbmctW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldXCIsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzSGVhZGVyID8gKFxuICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgey4uLmZvcndhcmRlZFByb3BzfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oc2VsZWN0Q2xhc3NlcywgXCJwcy1oLTEwIHBzLWJnLXRhYmxlLWhlYWQgcHMtei0zMCBwcy1zdGlja3kgcHMtdG9wLTAgcHMtbGVmdC0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgcmVmPXtyZWYgYXMgbmV2ZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgKSA6IChcbiAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKHNlbGVjdENsYXNzZXMsIFwicHMtei0xMCBwcy1oLVszOXB4XVwiLCBjbGFzc05hbWUpfVxuICAgICAgICAgIHJlZj17cmVmIGFzIG5ldmVyfVxuICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuaW50ZXJmYWNlIFBvcG92ZXJDZWxsQ29udGV4dFZhbHVlIHtcbiAgb3BlbjogYm9vbGVhbjtcbiAgc2V0T3BlbjogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcG92ZXJDZWxsQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8UG9wb3ZlckNlbGxDb250ZXh0VmFsdWUgfCBudWxsPihudWxsKTtcblxuY29uc3QgUG9wb3ZlckNlbGwgPSAoeyBjaGlsZHJlbiwgLi4ucHJvcHMgfTogUG9wb3ZlclByaW1pdGl2ZS5Qb3BvdmVyUHJvcHMpID0+IHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPFBvcG92ZXJDZWxsQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBvcGVuLCBzZXRPcGVuIH19PlxuICAgICAgPFBvcG92ZXJQcmltaXRpdmUuUm9vdCBvcGVuPXtvcGVufSBvbk9wZW5DaGFuZ2U9e3NldE9wZW59IHsuLi5wcm9wc30+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5Sb290PlxuICAgIDwvUG9wb3ZlckNlbGxDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblBvcG92ZXJDZWxsLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFwiO1xuXG5pbnRlcmZhY2UgUG9wb3ZlckNlbGxUcmlnZ2VyUHJvcHMgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj4ge1xuICBvbkRvdWJsZUNsaWNrPzogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgUG9wb3ZlckNlbGxUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+LCBQb3BvdmVyQ2VsbFRyaWdnZXJQcm9wcz4oXG4gICh7IGNoaWxkcmVuLCBvbkRvdWJsZUNsaWNrLCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIC8vIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFBvcG92ZXJDZWxsQ29udGV4dCk7XG4gICAgLy8gY29uc3QgW2lzRm9jdXNlZCwgc2V0SXNGb2N1c2VkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gUmVhY3QudXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKTtcblxuICAgIC8vIFRPRE86IEtlZXBpbmcgdGhpcyB0ZW1wb3JhcmlseTsgbWlnaHQgbmVlZCBpdCBsYXRlciBkZXBlbmRpbmcgb24gaW5wdXQgdHlwZXNcbiAgICAvLyBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vICAgY29uc3QgaGFuZGxlRG9jdW1lbnRDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIC8vICAgICBpZiAodHJpZ2dlclJlZi5jdXJyZW50ICYmICF0cmlnZ2VyUmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgIC8vICAgICAgIC8vIGNvbnNvbGUubG9nKFwiT3V0c2lkZSBjbGljayAtIHJlbW92aW5nIGZvY3VzXCIpO1xuICAgIC8vICAgICAgIHNldElzRm9jdXNlZChmYWxzZSk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH07XG5cbiAgICAvLyAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAvLyAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gICAgLy8gfSwgW10pO1xuXG4gICAgLy8gY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIC8vICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIC8vICAgc2V0SXNGb2N1c2VkKHRydWUpO1xuICAgIC8vICAgY29udGV4dD8uc2V0T3Blbih0cnVlKTtcblxuICAgIC8vICAgaWYgKGUuZGV0YWlsID09PSAyICYmIG9uRG91YmxlQ2xpY2spIHtcbiAgICAvLyAgICAgb25Eb3VibGVDbGljaygpO1xuICAgIC8vICAgfVxuICAgIC8vIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlclxuICAgICAgICByZWY9eyhub2RlKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZWYgPT09IFwiZnVuY3Rpb25cIikgcmVmKG5vZGUpO1xuICAgICAgICAgIGVsc2UgaWYgKHJlZikgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETyBuZWVkcyB0byBiZSBpbnZlc3RpZ2F0ZWRcbiAgICAgICAgICB0cmlnZ2VyUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9fVxuICAgICAgICAvLyBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgLy8gZGF0YS1mb2N1cz17aXNGb2N1c2VkLnRvU3RyaW5nKCl9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXCJ3LWZ1bGwgaC1mdWxsIGN1cnNvci1wb2ludGVyXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Qb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+XG4gICAgKTtcbiAgfSxcbik7XG5Qb3BvdmVyQ2VsbFRyaWdnZXIuZGlzcGxheU5hbWUgPSBcIlBvcG92ZXJDZWxsVHJpZ2dlclwiO1xuXG5jb25zdCBQb3BvdmVyQ2VsbENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBhbGlnbiA9IFwiY2VudGVyXCIsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFBvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMiBwcy16LTUwIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIHBzLW91dGxpbmUtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpzbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06c2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnNsaWRlLWluLWZyb20tYm90dG9tLTJcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIC8vIHdlIGFyZSBoYW5kbGluZyB0aGlzIG91cnNlbHZlcywgZG8gbm90IGxldCByYWRpeCB0YWtlIG92ZXJcbiAgICAgIG9uRXNjYXBlS2V5RG93bj17KGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvUG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblBvcG92ZXJDZWxsQ29udGVudC5kaXNwbGF5TmFtZSA9IFBvcG92ZXJQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBvcG92ZXJBY3Rpb25zKGFjdGlvbnM6IHtcbiAgb25TYXZlPzogKCkgPT4gYm9vbGVhbiB8IHZvaWQ7XG4gIG9uQ2FuY2VsPzogKCkgPT4gdm9pZDtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFBvcG92ZXJDZWxsQ29udGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlU2F2ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWN0aW9ucy5yZWFkb25seSkge1xuICAgICAgY29udGV4dD8uc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICAgIGlmIChhY3Rpb25zLm9uU2F2ZSkge1xuICAgICAgYWN0aW9ucy5vblNhdmUoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBbYWN0aW9ucy5vblNhdmUsIGNvbnRleHRdKTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFjdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnRleHQ/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9ucy5vbkNhbmNlbCkge1xuICAgICAgYWN0aW9ucy5vbkNhbmNlbCgpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH0sIFthY3Rpb25zLm9uQ2FuY2VsLCBjb250ZXh0XSk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAvLyBjaGVjayBpZiBlbnRlciBpcyBwcmVzc2VkIGFuZCBwcmVzc2VkIHdpdGhvdXQgc2hpZnRcbiAgICAgIGlmICgoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIlJldHVyblwiKSAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaGFuZGxlU2F2ZSgpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgICAgaGFuZGxlQ2FuY2VsKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuICB9LCBbaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsXSk7XG5cbiAgcmV0dXJuIHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH07XG59XG5cbmV4cG9ydCB7IFBvcG92ZXJDZWxsLCBQb3BvdmVyQ2VsbFRyaWdnZXIsIFBvcG92ZXJDZWxsQ29udGVudCB9O1xuIiwgImltcG9ydCB0eXBlIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFBvcG92ZXJDZWxsLCBQb3BvdmVyQ2VsbENvbnRlbnQsIFBvcG92ZXJDZWxsVHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGVhYmxlQ2VsbFByb3BzIHtcbiAgY2VsbENvbXBvbmVudDogUmVhY3ROb2RlO1xuICBpbnB1dENvbXBvbmVudDogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gV3JpdGVhYmxlQ2VsbChwcm9wczogV3JpdGVhYmxlQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgY2VsbENvbXBvbmVudCwgaW5wdXRDb21wb25lbnQgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFBvcG92ZXJDZWxsPlxuICAgICAgPFBvcG92ZXJDZWxsVHJpZ2dlciBhc0NoaWxkPntjZWxsQ29tcG9uZW50fTwvUG9wb3ZlckNlbGxUcmlnZ2VyPlxuICAgICAgPFBvcG92ZXJDZWxsQ29udGVudFxuICAgICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICAgICAgYWxpZ25PZmZzZXQ9ey0xfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcm91bmRlZC1ub25lIHBzLWJnLW11dGVkXCIsXG4gICAgICAgICAgXCJwcy1wLTAgcHMtei0zMCBwcy1nYXAtMCBwcy1ib3JkZXItcHJpbWFyeVwiLFxuICAgICAgICAgIFwicHMtdy1bY2FsYyh2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXytfMXB4KV0gcHMtbWF4LXctNzIgcHMtbWluLXctNzJcIixcbiAgICAgICAgKX1cbiAgICAgICAgc2lkZU9mZnNldD17LTQwfVxuICAgICAgPlxuICAgICAgICB7aW5wdXRDb21wb25lbnR9XG4gICAgICA8L1BvcG92ZXJDZWxsQ29udGVudD5cbiAgICA8L1BvcG92ZXJDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7XG4gIGNsb3Nlc3RDZW50ZXIsXG4gIERuZENvbnRleHQsXG4gIHR5cGUgRHJhZ0VuZEV2ZW50LFxuICBEcmFnT3ZlcmxheSxcbiAgdHlwZSBEcmFnU3RhcnRFdmVudCxcbiAgS2V5Ym9hcmRTZW5zb3IsXG4gIFBvaW50ZXJTZW5zb3IsXG4gIHR5cGUgVW5pcXVlSWRlbnRpZmllcixcbiAgdXNlU2Vuc29yLFxuICB1c2VTZW5zb3JzLFxufSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHtcbiAgYXJyYXlNb3ZlLFxuICBTb3J0YWJsZUNvbnRleHQsXG4gIHNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyxcbiAgdXNlU29ydGFibGUsXG4gIHZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSxcbn0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBDaGV2cm9uRG93biwgQ2hldnJvblJpZ2h0LCBHcmlwVmVydGljYWwsIEhlbHBDaXJjbGUsIFggfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW5GaWx0ZXIsIEZpbHRlckdyb3VwLCBGaWx0ZXJPcGVyYXRvciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IGNvZXJjZVRvU3RyaW5nLCBjb2VyY2VUb1ZhbHVlIH0gZnJvbSBcIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgRHJvcGRvd25NZW51LCBEcm9wZG93bk1lbnVDb250ZW50LCBEcm9wZG93bk1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbmNvbnN0IExlYWRpbmdPcGVyYXRvclNlbGVjdCA9ICh7XG4gIHZhbHVlLFxuICBvblZhbHVlQ2hhbmdlLFxuICBkaXNhYmxlZCxcbiAgdHJpZ2dlckNsYXNzTmFtZSA9IFwicHMtdy0yMCBwcy10ZXh0LXhzIHBzLWgtOFwiLFxufToge1xuICB2YWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uVmFsdWVDaGFuZ2U6ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0cmlnZ2VyQ2xhc3NOYW1lPzogc3RyaW5nO1xufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTZWxlY3QgdmFsdWU9e3ZhbHVlfSBvblZhbHVlQ2hhbmdlPXtvblZhbHVlQ2hhbmdlfSBkaXNhYmxlZD17ZGlzYWJsZWR9PlxuICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPXt0cmlnZ2VyQ2xhc3NOYW1lfT5cbiAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiTG9naWNcIiAvPlxuICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiYW5kXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+QU5EPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPk9SPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICA8L1NlbGVjdD5cbiAgKTtcbn07XG5cbi8vIFJlbmRlcnMgdGhlIHByZXZpZXcgb2YgdGhlIGl0ZW0gYmVpbmcgZHJhZ2dlZCBpbiB0aGUgRHJhZ092ZXJsYXkuXG5jb25zdCBEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyA9ICh7XG4gIGFjdGl2ZUlkLFxuICBpdGVtcyxcbiAgdGFibGUsXG59OiB7XG4gIGFjdGl2ZUlkOiBVbmlxdWVJZGVudGlmaWVyO1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICB0YWJsZTogVGFibGU7XG59KSA9PiB7XG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG4gIGlmICghYWN0aXZlSXRlbSkgcmV0dXJuIG51bGw7XG5cbiAgbGV0IGxlYWRpbmdPcGVyYXRvclZhbHVlOiBcImFuZFwiIHwgXCJvclwiID0gXCJhbmRcIjsgLy8gRGVmYXVsdFxuICBsZXQgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSBmYWxzZTtcbiAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG5cbiAgaWYgKGFjdGl2ZUl0ZW1JbmRleCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0l0ZW0gPSBpdGVtc1thY3RpdmVJdGVtSW5kZXggLSAxXTtcbiAgICBpZiAocHJldmlvdXNJdGVtKSB7XG4gICAgICAvLyAnYWZ0ZXInIGZyb20gdGhlIHByZXZpb3VzIGl0ZW0gZGV0ZXJtaW5lcyB0aGUgb3BlcmF0b3IgbGVhZGluZyBpbnRvIHRoZSBjdXJyZW50IGl0ZW1cbiAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlID0gcHJldmlvdXNJdGVtLmFmdGVyO1xuICAgICAgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhY3RpdmVJdGVtLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICBmaWx0ZXI9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIHVwZGF0ZXNcbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fSAvLyBPdmVybGF5IGlzIG5vbi1pbnRlcmFjdGl2ZSBmb3IgZGVsZXRlc1xuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX0gLy8gTm9uLWludGVyYWN0aXZlXG4gICAgICAvPlxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudFxuICAgICAgICBncm91cD17YWN0aXZlSXRlbX1cbiAgICAgICAgb25VcGRhdGU9eygpID0+IHt9fVxuICAgICAgICBvbkRlbGV0ZT17KCkgPT4ge319XG4gICAgICAgIGlzUm9vdD17ZmFsc2V9IC8vIERyYWdnZWQgaXRlbSBpbiBvdmVybGF5IGlzIG5vdCB0aGUgcm9vdFxuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX1cbiAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtmYWxzZX0gLy8gTm9uLWludGVyYWN0aXZlIGZvciBwcmV2aWV3XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn07XG5cbi8vIE1hbmFnZXMgRE5EIGNvbnRleHQgYW5kIHJlbmRlcmluZyBvZiBzb3J0YWJsZSBmaWx0ZXIgaXRlbXMgZm9yIGEgZ3JvdXAuXG5jb25zdCBGaWx0ZXJMaXN0SXRlbXMgPSAoe1xuICBpdGVtcyxcbiAgcGFyZW50R3JvdXBJZCxcbiAgdGFibGUsXG4gIG9uVXBkYXRlSXRlbSxcbiAgb25EZWxldGVJdGVtLFxuICBvblJlb3JkZXJJdGVtcyxcbiAgYWN0aXZlRHJhZ0lkLFxuICBvbkRyYWdTdGFydCxcbiAgb25EcmFnRW5kU2lnbmFsLFxufToge1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICBwYXJlbnRHcm91cElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIG9uVXBkYXRlSXRlbTogKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRJdGVtOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGVJdGVtOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25SZW9yZGVySXRlbXM6IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBhY3RpdmVEcmFnSWQ6IFVuaXF1ZUlkZW50aWZpZXIgfCBudWxsO1xuICBvbkRyYWdTdGFydDogKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4gdm9pZDtcbiAgb25EcmFnRW5kU2lnbmFsOiAoKSA9PiB2b2lkOyAvLyBDYWxsYmFjayB0byBzaWduYWwgZHJhZyBvcGVyYXRpb24gY29tcGxldGlvblxufSkgPT4ge1xuICBjb25zdCBzb3J0YWJsZUl0ZW1JZHMgPSB1c2VNZW1vKCgpID0+IGl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCksIFtpdGVtc10pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhcbiAgICB1c2VTZW5zb3IoUG9pbnRlclNlbnNvciwgeyBhY3RpdmF0aW9uQ29uc3RyYWludDogeyBkaXN0YW5jZTogOCB9IH0pLFxuICAgIHVzZVNlbnNvcihLZXlib2FyZFNlbnNvciwgeyBjb29yZGluYXRlR2V0dGVyOiBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMgfSksXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlSW50ZXJuYWxEcmFnRW5kID0gKGV2ZW50OiBEcmFnRW5kRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IGFjdGl2ZSwgb3ZlciB9ID0gZXZlbnQ7XG4gICAgaWYgKG92ZXIgJiYgYWN0aXZlLmlkICE9PSBvdmVyLmlkKSB7XG4gICAgICBjb25zdCBvbGRJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlLmlkKTtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBvdmVyLmlkKTtcbiAgICAgIGlmIChvbGRJbmRleCAhPT0gLTEgJiYgbmV3SW5kZXggIT09IC0xKSB7XG4gICAgICAgIG9uUmVvcmRlckl0ZW1zKG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICAgIG9uRHJhZ0VuZFNpZ25hbCgpOyAvLyBTaWduYWwgdG8gcGFyZW50IHRoYXQgZHJhZyBoYXMgZW5kZWQgKGUuZy4sIHRvIGNsZWFyIGFjdGl2ZURyYWdJZClcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxEbmRDb250ZXh0XG4gICAgICBzZW5zb3JzPXtzZW5zb3JzfVxuICAgICAgY29sbGlzaW9uRGV0ZWN0aW9uPXtjbG9zZXN0Q2VudGVyfVxuICAgICAgb25EcmFnU3RhcnQ9e29uRHJhZ1N0YXJ0fVxuICAgICAgb25EcmFnRW5kPXtoYW5kbGVJbnRlcm5hbERyYWdFbmR9XG4gICAgPlxuICAgICAgPFNvcnRhYmxlQ29udGV4dCBpdGVtcz17c29ydGFibGVJdGVtSWRzfSBzdHJhdGVneT17dmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5fT5cbiAgICAgICAge2l0ZW1zLm1hcCgoY3VycmVudEZpbHRlckl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHNob3dMZWFkaW5nT3AgPSBmYWxzZTtcbiAgICAgICAgICBsZXQgbGVhZGluZ09wVmFsOiBcImFuZFwiIHwgXCJvclwiIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBvbkxlYWRpbmdPcENoYW5nZUZuOiAoKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICBzaG93TGVhZGluZ09wID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZJdGVtID0gaXRlbXNbaW5kZXggLSAxXSE7XG4gICAgICAgICAgICBsZWFkaW5nT3BWYWwgPSBwcmV2SXRlbS5hZnRlcjtcbiAgICAgICAgICAgIG9uTGVhZGluZ09wQ2hhbmdlRm4gPSAobmV3VmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByZXZJdGVtID0geyAuLi5wcmV2SXRlbSwgYWZ0ZXI6IG5ld1ZhbHVlIH07XG4gICAgICAgICAgICAgIG9uVXBkYXRlSXRlbShpbmRleCAtIDEsIHVwZGF0ZWRQcmV2SXRlbSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gaW5kZXggLSAxID09PSBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U29ydGFibGVGaWx0ZXJJdGVtXG4gICAgICAgICAgICAgIGtleT17Y3VycmVudEZpbHRlckl0ZW0uaWR9XG4gICAgICAgICAgICAgIGZpbHRlcj17Y3VycmVudEZpbHRlckl0ZW19XG4gICAgICAgICAgICAgIG9uVXBkYXRlPXsodXBkYXRlZEZpbHRlcikgPT4gb25VcGRhdGVJdGVtKGluZGV4LCB1cGRhdGVkRmlsdGVyKX1cbiAgICAgICAgICAgICAgb25EZWxldGU9eygpID0+IG9uRGVsZXRlSXRlbShpbmRleCl9XG4gICAgICAgICAgICAgIHBhcmVudERuZElkPXtwYXJlbnRHcm91cElkfVxuICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3B9XG4gICAgICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BWYWx9XG4gICAgICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcENoYW5nZUZufVxuICAgICAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgIHtjcmVhdGVQb3J0YWwoXG4gICAgICAgIDxEcmFnT3ZlcmxheT5cbiAgICAgICAgICB7YWN0aXZlRHJhZ0lkID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1vcGFjaXR5LTgwXCI+XG4gICAgICAgICAgICAgIDxEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyBhY3RpdmVJZD17YWN0aXZlRHJhZ0lkfSBpdGVtcz17aXRlbXN9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L0RyYWdPdmVybGF5PixcbiAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICl9XG4gICAgPC9EbmRDb250ZXh0PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNvcnRhYmxlIGZpbHRlciBpdGVtXG5jb25zdCBTb3J0YWJsZUZpbHRlckl0ZW0gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgcGFyZW50RG5kSWQsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cDtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIHBhcmVudERuZElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGZpbHRlci5pZCxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiBmaWx0ZXIua2luZCxcbiAgICAgIHBhcmVudElkOiBwYXJlbnREbmRJZCxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIG9wYWNpdHk6IGlzRHJhZ2dpbmcgPyAwLjUgOiAxLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3NldE5vZGVSZWZ9IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtZ2FwLTJcIj5cbiAgICAgIHtmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIiA/IChcbiAgICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApIDogKFxuICAgICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgICBncm91cD17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNpbmdsZSBmaWx0ZXIgY29uZGl0aW9uXG5jb25zdCBGaWx0ZXJDb25kaXRpb24gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlcikgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlQ29sdW1uQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgY29sdW1uOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVyYXRvckNoYW5nZSA9ICh2YWx1ZTogRmlsdGVyT3BlcmF0b3IpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgb3BlcmF0b3I6IHZhbHVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICBjb25zdCBjb2x1bW5JbmZvID0gdGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXTtcblxuICAgIGlmIChjb2x1bW5JbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlVG9WYWx1ZShjb2x1bW5JbmZvLCBmaWx0ZXIub3BlcmF0b3IsIHJhd1ZhbHVlKTtcblxuICAgICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIHZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgW2VkaXRlZFZhbHVlLCBzZXRFZGl0ZWRWYWx1ZV0gPSB1c2VTdGF0ZShcbiAgICBjb2VyY2VUb1N0cmluZyh0YWJsZS5jb2x1bW5zW2ZpbHRlci5jb2x1bW5dLCBmaWx0ZXIub3BlcmF0b3IsIGZpbHRlci52YWx1ZSksXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdlxuICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCJcbiAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCI+XG4gICAgICAgICAgPEdyaXBWZXJ0aWNhbCBjbGFzc05hbWU9XCJwcy10ZXh0LWdyYXktNTAwXCIgc2l6ZT17MTZ9IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICB7c2hvd0xlYWRpbmdPcGVyYXRvciAmJiBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSA/IChcbiAgICAgICAgICAgIDxMZWFkaW5nT3BlcmF0b3JTZWxlY3RcbiAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIuY29sdW1ufSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVDb2x1bW5DaGFuZ2V9PlxuICAgICAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdy0yOCBwcy10ZXh0LXhzIHBzLWgtOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY29sdW1uXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICB7T2JqZWN0LmtleXModGFibGUuY29sdW1ucykubWFwKChjb2x1bW4pID0+IChcbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e2NvbHVtbn0gdmFsdWU9e2NvbHVtbn0+XG4gICAgICAgICAgICAgICAgICB7Y29sdW1ufVxuICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIub3BlcmF0b3J9IG9uVmFsdWVDaGFuZ2U9eyh2YWx1ZSkgPT4gaGFuZGxlT3BlcmF0b3JDaGFuZ2UodmFsdWUgYXMgRmlsdGVyT3BlcmF0b3IpfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiT3BlcmF0b3JcIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPVwiPj08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiIT1cIj4hPTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+XCI+Jmd0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+PVwiPiZndDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjxcIj4mbHQ7PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjw9XCI+Jmx0Oz08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXNcIj5pczwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpcyBub3RcIj5pcyBub3Q8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibGlrZVwiPmxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm90IGxpa2VcIj5ub3QgbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpbGlrZVwiPmlsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBpbGlrZVwiPm5vdCBpbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICA8L1NlbGVjdD5cblxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgdmFsdWU9e2VkaXRlZFZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgIHNldEVkaXRlZFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UoZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy13LTI0IHBzLXRleHQteHMgcHMtaC04XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBmaWx0ZXIgZ3JvdXAgKEFORC9PUilcbmNvbnN0IEZpbHRlckdyb3VwQ29tcG9uZW50ID0gKHtcbiAgZ3JvdXAsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICBpc1Jvb3QgPSBmYWxzZSxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBncm91cDogRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEdyb3VwOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgaXNSb290PzogYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFthY3RpdmVEcmFnSWQsIHNldEFjdGl2ZURyYWdJZF0gPSB1c2VTdGF0ZTxVbmlxdWVJZGVudGlmaWVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQWRkRmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcjogQ29sdW1uRmlsdGVyID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkNvbHVtbkZpbHRlclwiLFxuICAgICAgY29sdW1uOiBPYmplY3Qua2V5cyh0YWJsZS5jb2x1bW5zKVswXSA/PyBcIlwiLCAvLyBBbHdheXMgc2VsZWN0IGZpcnN0IGNvbFxuICAgICAgb3BlcmF0b3I6IFwiPVwiLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3RmlsdGVyXSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBZGRHcm91cCA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdHcm91cDogRmlsdGVyR3JvdXAgPSB7XG4gICAgICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbiAgICAgIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgfTtcblxuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IFsuLi5ncm91cC5maWx0ZXJzLCBuZXdHcm91cF0gfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlSXRlbUluR3JvdXAgPSAoaW5kZXg6IG51bWJlciwgdXBkYXRlZEZpbHRlck9yR3JvdXA6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IFsuLi5ncm91cC5maWx0ZXJzXTtcbiAgICBuZXdGaWx0ZXJzW2luZGV4XSA9IHVwZGF0ZWRGaWx0ZXJPckdyb3VwO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgZGVsZXRlSXRlbUZyb21Hcm91cCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IFsuLi5ncm91cC5maWx0ZXJzXTtcbiAgICBuZXdGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSAoZXZlbnQ6IERyYWdTdGFydEV2ZW50KSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKGV2ZW50LmFjdGl2ZS5pZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZFNpZ25hbCA9ICgpID0+IHtcbiAgICBzZXRBY3RpdmVEcmFnSWQobnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVvcmRlckl0ZW1zID0gKG9sZEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAob2xkSW5kZXggPT09IG5ld0luZGV4KSByZXR1cm47XG4gICAgY29uc3QgcmVvcmRlcmVkRmlsdGVycyA9IGFycmF5TW92ZShncm91cC5maWx0ZXJzLCBvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IHJlb3JkZXJlZEZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyR3JvdXBDb250ZW50ID0gKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKCFncm91cC5maWx0ZXJzIHx8IGdyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXBsLTYgcHMtdGV4dC1zbSBwcy10ZXh0LW5ldXRyYWwtNTAwIHBzLWl0YWxpY1wiPlxuICAgICAgICAgIFRoaXMgZ3JvdXAgaXMgZW1wdHkuIEFkZCBhIGZpbHRlciBvciBhbm90aGVyIGdyb3VwLlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxtb3Rpb24uZGl2IHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmUgcHMtZ2FwLTJcIiwgaXNSb290ID8gXCJcIiA6IFwicHMtcGItMlwiKX0+XG4gICAgICAgICAgPEZpbHRlckxpc3RJdGVtc1xuICAgICAgICAgICAgaXRlbXM9e2dyb3VwLmZpbHRlcnN9XG4gICAgICAgICAgICBwYXJlbnRHcm91cElkPXtncm91cC5pZH1cbiAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIG9uVXBkYXRlSXRlbT17dXBkYXRlSXRlbUluR3JvdXB9XG4gICAgICAgICAgICBvbkRlbGV0ZUl0ZW09e2RlbGV0ZUl0ZW1Gcm9tR3JvdXB9XG4gICAgICAgICAgICBvblJlb3JkZXJJdGVtcz17aGFuZGxlUmVvcmRlckl0ZW1zfVxuICAgICAgICAgICAgYWN0aXZlRHJhZ0lkPXthY3RpdmVEcmFnSWR9XG4gICAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgICAgb25EcmFnRW5kU2lnbmFsPXtoYW5kbGVEcmFnRW5kU2lnbmFsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGxcIiwgaXNFeHBhbmRlZCA/IFwicHMtZ2FwLTJcIiA6IFwiXCIpfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cywganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zXG4gICAgICAgICAgICAgIDxkaXYgey4uLmRyYWdIYW5kbGVQcm9wc30gY2xhc3NOYW1lPVwicHMtY3Vyc29yLWdyYWJcIiBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX0+XG4gICAgICAgICAgICAgICAge2lzRXhwYW5kZWQgPyA8Q2hldnJvbkRvd24gc2l6ZT17MTZ9IC8+IDogPENoZXZyb25SaWdodCBzaXplPXsxNn0gLz59XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgJiYgIWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWRkRmlsdGVyfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgb3ZlcmZsb3ctaGlkZGVuIHBzLXRyYW5zaXRpb24tYWxsXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBZGQgRmlsdGVyXG4gICAgICAgICAgICAgIHtncm91cC5maWx0ZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDxCYWRnZSBjbGFzc05hbWU9XCJwcy10cmFuc2l0aW9uLWFsbFwiPlxuICAgICAgICAgICAgICAgICAgPEFuaW1hdGVOdW1iZXIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT57Z3JvdXAuZmlsdGVycy5sZW5ndGh9PC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2hhbmRsZUFkZEdyb3VwfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMVwiPlxuICAgICAgICAgICAgICBBZGQgR3JvdXBcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHtpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiPlxuICAgICAgICAgICAgICAgICAgICA8SGVscENpcmNsZSBjbGFzc05hbWU9XCJwcy1zaXplLTRcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50IGFsaWduPVwiY2VudGVyXCIgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcC00IHBzLXRleHQtY2VudGVyIHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIE5vIGZpbHRlcnMgYXBwbGllZCB5ZXQuIEFkZCBmaWx0ZXJzIHRvIHByZXZpZXcgeW91ciBxdWVyeS5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtMiBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLWJnLW5ldXRyYWwtMTAwIHBzLXJvdW5kZWQtc20gcHMtZm9udC1tb25vXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFF1ZXJ5VmlzdWFsaXplciBmaWx0ZXI9e2dyb3VwfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oaXNSb290ID8gXCJcIiA6IFwicHMtbWwtNlwiKX0+e3JlbmRlckdyb3VwQ29udGVudCgpfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tb3Rpb24uZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IHRvIHZpc3VhbGl6ZSB0aGUgcXVlcnkgc3RyaW5nXG5jb25zdCBRdWVyeVZpc3VhbGl6ZXIgPSAoeyBmaWx0ZXIgfTogeyBmaWx0ZXI6IEZpbHRlckdyb3VwIH0pOiBSZWFjdE5vZGUgPT4ge1xuICBsZXQgaXNBbmRHcm91cE9wZW4gPSAwO1xuXG4gIGlmIChmaWx0ZXIuZmlsdGVycy5sZW5ndGggPT09IDApIHJldHVybiBcIiggKVwiO1xuXG4gIGNvbnN0IGdyb3VwID0gZmlsdGVyLmZpbHRlcnMubWFwKChmLCBpKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogUmVhY3ROb2RlO1xuICAgIGNvbnN0IGlzTGFzdCA9IGZpbHRlci5maWx0ZXJzLmxlbmd0aCAtIDEgPT09IGk7XG5cbiAgICBpZiAoaXNBbmRHcm91cE9wZW4gPT09IC0xKSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGYuYWZ0ZXIgPT09IFwiYW5kXCIgJiYgIWlzTGFzdCkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gKz0gMTtcbiAgICB9XG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuICYmIChpc0xhc3QgfHwgZi5hZnRlciA9PT0gXCJvclwiKSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAtMTtcbiAgICB9XG5cbiAgICBpZiAoZi5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgICBjb25zdCB7IGNvbHVtbiwgb3BlcmF0b3IgfSA9IGY7XG5cbiAgICAgIHJlc3VsdCA9IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8c3Bhbj4ge2NvbHVtbn0gPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPiB7b3BlcmF0b3J9IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4gPyA8L3NwYW4+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gPFF1ZXJ5VmlzdWFsaXplciBmaWx0ZXI9e2Z9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8RnJhZ21lbnQga2V5PXtmLmlkfT5cbiAgICAgICAge2lzQW5kR3JvdXBPcGVuID09PSAxID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPig8L3NwYW4+IDogXCJcIn1cbiAgICAgICAge3Jlc3VsdH1cbiAgICAgICAge2lzQW5kR3JvdXBPcGVuID09PSAtMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4pPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHshaXNMYXN0ICYmIDxzcGFuIGNsYXNzTmFtZT1cInBzLXVwcGVyY2FzZSBwcy10ZXh0LWJsdWUtNTAwIHBzLWZvbnQtc2VtaWJvbGRcIj4ge2YuYWZ0ZXJ9IDwvc3Bhbj59XG4gICAgICA8L0ZyYWdtZW50PlxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiA8c3Bhbj57Z3JvdXB9PC9zcGFuPjtcbn07XG5cbi8vIE1haW4gY29tcG9uZW50XG5leHBvcnQgZnVuY3Rpb24gRmlsdGVyVHJlZSh7XG4gIGZpbHRlcixcbiAgc2V0RmlsdGVyLFxuICBzZXRBcHBsaWVkRmlsdGVyLFxuICB0YWJsZSxcbn06IHtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbiAgc2V0RmlsdGVyOiAodXBkYXRlZEZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIHNldEFwcGxpZWRGaWx0ZXI6IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICB0YWJsZTogVGFibGU7XG59KSB7XG4gIGNvbnN0IGhhbmRsZUFwcGx5RmlsdGVycyA9ICgpID0+IHtcbiAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTRcIj5cbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudCBncm91cD17ZmlsdGVyfSBvblVwZGF0ZT17c2V0RmlsdGVyfSBvbkRlbGV0ZT17KCkgPT4ge319IGlzUm9vdD17dHJ1ZX0gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZGVmYXVsdFwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInBzLXNlbGYtZW5kXCIgb25DbGljaz17aGFuZGxlQXBwbHlGaWx0ZXJzfT5cbiAgICAgICAgQXBwbHkgRmlsdGVyc1xuICAgICAgPC9CdXR0b24+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDb2x1bW4sIEZpbHRlck9wZXJhdG9yIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9WYWx1ZShjb2x1bW46IENvbHVtbiB8IHVuZGVmaW5lZCwgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLCB2YWx1ZTogc3RyaW5nKTogdW5rbm93biB7XG4gIGNvbnN0IGRhdGFUeXBlR3JvdXAgPSBjb2x1bW4/LmRhdGF0eXBlLmdyb3VwO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IFwibnVsbFwiID8gbnVsbCA6IHZhbHVlO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gdmFsdWUgPT09IFwidHJ1ZVwiO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJkYXRldGltZVwiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJyYXdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiB2YWx1ZTtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJqc29uXCIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpIGFzIHVua25vd247XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcih2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VUb1N0cmluZyhcbiAgY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsXG4gIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciB8IHVuZGVmaW5lZCxcbiAgdmFsdWU6IHVua25vd24sXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAob3BlcmF0b3IgJiYgKG9wZXJhdG9yID09PSBcImlzXCIgfHwgb3BlcmF0b3IgPT09IFwiaXMgbm90XCIpKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsID8gXCJudWxsXCIgOiBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJib29sZWFuXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJkYXRldGltZVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZW51bVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwibnVtZXJpY1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgaWYgKHZhbHVlID09PSBcIlwiKSByZXR1cm4gXCJcIjtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuIiwgImltcG9ydCAqIGFzIERyb3Bkb3duTWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRyb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93bk1lbnUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgRHJvcGRvd25NZW51VHJpZ2dlciA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBEcm9wZG93bk1lbnVHcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51UG9ydGFsID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9Hcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0b1wiIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkRyb3Bkb3duTWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bdmFyKC0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpXSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZFwiLFxuICAgICAgICBcImRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ecm9wZG93bk1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MCBbJj5zdmddOnBzLXNpemUtNCBbJj5zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51SXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2lyY2xlIGNsYXNzTmFtZT1cInBzLWgtMiBwcy13LTIgcHMtZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51TGFiZWwuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2hvcnRjdXQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLW9wYWNpdHktNjBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn07XG5Ecm9wZG93bk1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgRHJvcGRvd25NZW51LFxuICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVDb250ZW50LFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgRHJvcGRvd25NZW51TGFiZWwsXG4gIERyb3Bkb3duTWVudVNlcGFyYXRvcixcbiAgRHJvcGRvd25NZW51U2hvcnRjdXQsXG4gIERyb3Bkb3duTWVudUdyb3VwLFxuICBEcm9wZG93bk1lbnVQb3J0YWwsXG4gIERyb3Bkb3duTWVudVN1YixcbiAgRHJvcGRvd25NZW51U3ViQ29udGVudCxcbiAgRHJvcGRvd25NZW51U3ViVHJpZ2dlcixcbiAgRHJvcGRvd25NZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IElucHV0ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wczxcImlucHV0XCI+PihcbiAgKHsgY2xhc3NOYW1lLCB0eXBlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMSBwcy1zaGFkb3ctc20gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZmlsZTpwcy1ib3JkZXItMCBmaWxlOnBzLWJnLXRyYW5zcGFyZW50IGZpbGU6cHMtdGV4dC1zbSBmaWxlOnBzLWZvbnQtbWVkaXVtIGZpbGU6cHMtdGV4dC1mb3JlZ3JvdW5kIHBsYWNlaG9sZGVyOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MFwiLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfSxcbik7XG5JbnB1dC5kaXNwbGF5TmFtZSA9IFwiSW5wdXRcIjtcblxuZXhwb3J0IHsgSW5wdXQgfTtcbiIsICJpbXBvcnQgKiBhcyBTZWxlY3RQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zZWxlY3RcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uRG93biwgQ2hldnJvblVwIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWYsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBTZWxlY3QgPSBTZWxlY3RQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgU2VsZWN0R3JvdXAgPSBTZWxlY3RQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IFNlbGVjdFZhbHVlID0gU2VsZWN0UHJpbWl0aXZlLlZhbHVlO1xuXG5jb25zdCBTZWxlY3RUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPiAmIHsgbGFiZWw/OiBSZWFjdE5vZGUgfVxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBsYWJlbCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtaC05IHBzLXctZnVsbCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTIgcHMtdGV4dC1zbSBwcy1zaGFkb3ctc20gcHMtcmluZy1vZmZzZXQtYmFja2dyb3VuZCBkYXRhLVtwbGFjZWhvbGRlcl06cHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzOnBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1yaW5nLTEgZm9jdXM6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIFsmPnNwYW5dOnBzLWxpbmUtY2xhbXAtMVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMVwiPlxuICAgICAge2xhYmVsICYmIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPntsYWJlbH06PC9zcGFuPn1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkljb24gYXNDaGlsZD5cbiAgICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLW9wYWNpdHktNTBcIiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkljb24+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4pKTtcblNlbGVjdFRyaWdnZXIuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsVXBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1weS0xXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZXZyb25VcCBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxEb3duQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBwb3NpdGlvbiA9IFwicG9wcGVyXCIsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1yZWxhdGl2ZSBwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBwb3NpdGlvbiA9PT0gXCJwb3BwZXJcIiAmJlxuICAgICAgICAgIFwiZGF0YS1bc2lkZT1ib3R0b21dOnBzLXRyYW5zbGF0ZS15LTEgZGF0YS1bc2lkZT1sZWZ0XTpwcy0tdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXJpZ2h0XTpwcy10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9dG9wXTpwcy0tdHJhbnNsYXRlLXktMVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcG9zaXRpb249e3Bvc2l0aW9ufVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxTZWxlY3RTY3JvbGxVcEJ1dHRvbiAvPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydFxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcC0xXCIsXG4gICAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICAgIFwicHMtaC1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0KV0gcHMtdy1mdWxsIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCldXCIsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0PlxuICAgICAgPFNlbGVjdFNjcm9sbERvd25CdXR0b24gLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblNlbGVjdENvbnRlbnQuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdExhYmVsLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy13LWZ1bGwgcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTIgcHMtcHItOCBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PntjaGlsZHJlbn08L1NlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbT5cbikpO1xuU2VsZWN0SXRlbS5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvciByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblNlbGVjdFNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIFNlbGVjdCxcbiAgU2VsZWN0R3JvdXAsXG4gIFNlbGVjdFZhbHVlLFxuICBTZWxlY3RUcmlnZ2VyLFxuICBTZWxlY3RDb250ZW50LFxuICBTZWxlY3RMYWJlbCxcbiAgU2VsZWN0SXRlbSxcbiAgU2VsZWN0U2VwYXJhdG9yLFxuICBTZWxlY3RTY3JvbGxVcEJ1dHRvbixcbiAgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbixcbn07XG4iLCAiaW1wb3J0IHsgRG5kQ29udGV4dCwgdHlwZSBEcmFnRW5kRXZlbnQsIE1vdXNlU2Vuc29yLCB1c2VTZW5zb3IsIHVzZVNlbnNvcnMgfSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHsgYXJyYXlNb3ZlLCBob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSwgU29ydGFibGVDb250ZXh0LCB1c2VTb3J0YWJsZSB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2UsIFJvd1NlbGVjdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb2x1bW5QaW5uaW5nU3RhdGUsXG4gIHR5cGUgQ29sdW1uU2l6aW5nU3RhdGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgdHlwZSBIZWFkZXIsXG4gIHR5cGUgT25DaGFuZ2VGbixcbiAgdHlwZSBQYWdpbmF0aW9uU3RhdGUsXG4gIHR5cGUgU29ydGluZ1N0YXRlLFxuICB0eXBlIFRhYmxlIGFzIFJlYWN0VGFibGUsXG4gIHVzZVJlYWN0VGFibGUsXG59IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IFJlYWN0VGFibGVEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHNcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50VHlwZSxcbiAgdHlwZSBDU1NQcm9wZXJ0aWVzLFxuICB0eXBlIFByb3BzV2l0aENoaWxkcmVuLFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc2tlbGV0b25cIjtcbmltcG9ydCB7IFRhYmxlLCBUYWJsZUJvZHksIFRhYmxlQ2VsbCwgVGFibGVIZWFkLCBUYWJsZUhlYWRlciwgVGFibGVSb3cgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENlbGxQcm9wcyB9IGZyb20gXCIuLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyIH0gZnJvbSBcIi4vRGF0YUdyaWRIZWFkZXJcIjtcbmltcG9ydCB7IERhdGFHcmlkTG9hZGluZ0JhciB9IGZyb20gXCIuL0RhdGFHcmlkTG9hZGluZ0JhclwiO1xuaW1wb3J0IHsgRGF0YUdyaWRQYWdpbmF0aW9uIH0gZnJvbSBcIi4vRGF0YUdyaWRQYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcblxuLy8gQWRkIHRoaXMgbmV3IGNvbXBvbmVudCBmb3IgZHJhZ2dhYmxlIGhlYWRlciBjZWxsc1xudHlwZSBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBoZWFkZXI6IEhlYWRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIHN0eWxlOiBDU1NQcm9wZXJ0aWVzO1xuICB0YWJsZTogUmV0dXJuVHlwZTx0eXBlb2YgdXNlUmVhY3RUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+O1xufT47XG5cbmNvbnN0IERyYWdnYWJsZUhlYWRlckNlbGwgPSAocHJvcHM6IERyYWdnYWJsZUhlYWRlckNlbGxQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGhlYWRlciwgc3R5bGU6IGNvbW1vblN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgZGlzYWJsZURyYWdnaW5nID0gXCJkaXNhYmxlRHJhZ2dpbmdcIiBpbiBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZjtcblxuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBzZXROb2RlUmVmLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgfSk7XG5cbiAgY29uc3QgZHJhZ1N0eWxlID0ge1xuICAgIC4uLmNvbW1vblN0eWxlLFxuICAgIGN1cnNvcjogXCJncmFiXCIsXG4gICAgdG91Y2hBY3Rpb246IFwibm9uZVwiLFxuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gIH0gYXMgQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBjb21tb25DbGFzcyA9IGNuKGNsYXNzTmFtZSwgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIpO1xuICBjb25zdCBkcmFnQ2xhc3MgPSBjbihjb21tb25DbGFzcywgaXNEcmFnZ2luZyAmJiBcIiFwcy16LTUwIHBzLWJvcmRlci0yIHBzLWJvcmRlci12aW9sZXQtNTAwXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlSGVhZFxuICAgICAgcmVmPXtzZXROb2RlUmVmfVxuICAgICAgey4uLmF0dHJpYnV0ZXN9XG4gICAgICB7Li4ubGlzdGVuZXJzfVxuICAgICAgc3R5bGU9e2Rpc2FibGVEcmFnZ2luZyA/IGNvbW1vblN0eWxlIDogZHJhZ1N0eWxlfVxuICAgICAgY2xhc3NOYW1lPXtkaXNhYmxlRHJhZ2dpbmcgPyBjb21tb25DbGFzcyA6IGRyYWdDbGFzc31cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L1RhYmxlSGVhZD5cbiAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQcm9wcyB7XG4gIGNvbHVtbkRlZnM6IEFjY2Vzc29yS2V5Q29sdW1uRGVmQmFzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5bXTtcbiAgZ2V0QmVmb3JlUm93cz8odGhpczogdm9pZCwgdGFibGU6IFJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogUmVhY3ROb2RlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgb25QYWdpbmF0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT47XG4gIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFJvd1NlbGVjdGlvblN0YXRlPjtcbiAgb25Tb3J0aW5nQ2hhbmdlPzogT25DaGFuZ2VGbjxTb3J0T3JkZXJJdGVtW10+O1xuICBwYWdlQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnaW5hdGlvblN0YXRlOiBQYWdpbmF0aW9uU3RhdGU7XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHJvd1NlbGVjdGlvblN0YXRlOiBSb3dTZWxlY3Rpb25TdGF0ZTtcbiAgc29ydGluZ1N0YXRlPzogU29ydE9yZGVySXRlbVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWQocHJvcHM6IERhdGFHcmlkUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbHVtbkRlZnMsXG4gICAgZ2V0QmVmb3JlUm93cyxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNQcm9jZXNzaW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2UsXG4gICAgcGFnZUNvdW50LFxuICAgIHBhZ2luYXRpb25TdGF0ZSxcbiAgICByb3dzLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHNvcnRpbmdTdGF0ZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFtjb2x1bW5PcmRlciwgc2V0Q29sdW1uT3JkZXJdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW2NvbHVtblBpbm5pbmcsIHNldENvbHVtblBpbm5pbmddID0gdXNlU3RhdGU8Q29sdW1uUGlubmluZ1N0YXRlPih7IGxlZnQ6IFtcIl9fcHNfc2VsZWN0XCJdLCByaWdodDogW10gfSk7XG4gIGNvbnN0IFtjb2x1bW5TaXppbmcsIHNldENvbHVtblNpemluZ10gPSB1c2VTdGF0ZTxDb2x1bW5TaXppbmdTdGF0ZT4oe30pO1xuICBjb25zdCBzb3J0aW5nID0gdXNlTWVtbygoKSA9PiB0b1NvcnRpbmdTdGF0ZShzb3J0aW5nU3RhdGUpLCBbc29ydGluZ1N0YXRlXSk7XG4gIGNvbnN0IGRpc3BsYXlMb2FkZXIgPSBpc0xvYWRpbmcgfHwgaXNQcm9jZXNzaW5nO1xuXG4gIC8vIFJlc2V0IGNvbHVtbiBvcmRlciwgcGlubmluZywgYW5kIHNpemluZyB3aGVuIGNvbHVtbkRlZnMgY2hhbmdlICh3aGljaCBoYXBwZW5zIHdoZW4gdGFibGUgY2hhbmdlcylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRDb2x1bW5PcmRlcihjb2x1bW5EZWZzLm1hcCgoeyBhY2Nlc3NvcktleSB9KSA9PiBhY2Nlc3NvcktleSkpO1xuICAgIHNldENvbHVtblBpbm5pbmcoeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICAgIHNldENvbHVtblNpemluZyh7fSk7XG4gIH0sIFtjb2x1bW5EZWZzXSk7XG5cbiAgLy8gaGFuZGxlcyBtb3ZpbmcgYW5kIHJlLW9yZGVyaW5nIG9mIHRoZSBjb2x1bW5zIGFuZCBzdGF0ZVxuICBmdW5jdGlvbiBoYW5kbGVEcmFnRW5kKHsgYWN0aXZlLCBvdmVyIH06IERyYWdFbmRFdmVudCkge1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgc2V0Q29sdW1uT3JkZXIoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gb3JkZXIuaW5kZXhPZihhY3RpdmUuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3Qgb3ZlckluZGV4ID0gb3JkZXIuaW5kZXhPZihvdmVyLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiBhcnJheU1vdmUob3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29uZmlndXJlIHRoZSBtb3VzZSBzZW5zb3IgZm9yIGRyYWcgYW5kIGRyb3BcbiAgY29uc3QgbW91c2VTZW5zb3IgPSB1c2VTZW5zb3IoTW91c2VTZW5zb3IsIHtcbiAgICAvLyBSZXF1aXJlIHRoZSBtb3VzZSB0byBtb3ZlIGJ5IDEwIHBpeGVscyBiZWZvcmUgYWN0aXZhdGluZ1xuICAgIGFjdGl2YXRpb25Db25zdHJhaW50OiB7XG4gICAgICBkaXN0YW5jZTogMTAsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKG1vdXNlU2Vuc29yKTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIGNvbHVtblJlc2l6ZU1vZGU6IFwib25DaGFuZ2VcIixcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGRhdGE6IHJvd3MsXG4gICAgZGVmYXVsdENvbHVtbjogeyBzaXplOiAyMDAsIG1pblNpemU6IDUwLCBtYXhTaXplOiA1MDAgfSxcbiAgICBlbmFibGVDb2x1bW5QaW5uaW5nOiB0cnVlLFxuICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVTb3J0aW5nOiBCb29sZWFuKG9uU29ydGluZ0NoYW5nZSAmJiBzb3J0aW5nU3RhdGUpLFxuICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgZ2V0Um93SWQ6ICh7IF9fcHNfcm93aWQgfSkgPT4gX19wc19yb3dpZCBhcyBzdHJpbmcsXG4gICAgbWFudWFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICBtYW51YWxTb3J0aW5nOiB0cnVlLFxuICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2U6IHNldENvbHVtbk9yZGVyLFxuICAgIG9uQ29sdW1uUGlubmluZ0NoYW5nZTogc2V0Q29sdW1uUGlubmluZyxcbiAgICBvbkNvbHVtblNpemluZ0NoYW5nZTogc2V0Q29sdW1uU2l6aW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2U6ICh1cGRhdGVyT3JWYWx1ZSkgPT5cbiAgICAgIG9uU29ydGluZ0NoYW5nZT8uKChvbGQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdXBkYXRlck9yVmFsdWUgPSB1cGRhdGVyT3JWYWx1ZSh0b1NvcnRpbmdTdGF0ZShvbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvcnRPcmRlckl0ZW1zKHVwZGF0ZXJPclZhbHVlKTtcbiAgICAgIH0pLFxuICAgIHBhZ2VDb3VudCxcbiAgICBzdGF0ZToge1xuICAgICAgY29sdW1uT3JkZXIsXG4gICAgICBjb2x1bW5QaW5uaW5nLFxuICAgICAgY29sdW1uU2l6aW5nLFxuICAgICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvblN0YXRlLFxuICAgICAgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICAgIHNvcnRpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRPRE86IHBhdGNoIHNvIGl0IGlzIG5vdCBidW5kbGVkIGxpa2UgcmVhY3QtcXVlcnkgZGV2dG9vbHMsIG9yIHJlbW92ZSBjb21wbGV0ZWx5IG9uY2UgZGF0YSBncmlkIGlzIHN0YWJsZSBhbmQgdGVzdGVkLiAqL31cbiAgICAgIHtwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBudWxsIDogPFJlYWN0VGFibGVEZXZ0b29scyB0YWJsZT17dGFibGV9IC8+fVxuICAgICAgPGRpdiBkYXRhLXN0dWRpbz1cImNvbnRlbnRcIiBjbGFzc05hbWU9XCJwcy1mbGV4LTEgcHMtdy0wIHBzLWgtMCBwcy1taW4tdy1mdWxsIHBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdj57ZGlzcGxheUxvYWRlciAmJiA8RGF0YUdyaWRMb2FkaW5nQmFyIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIC1wcy10b3AtWzFweF0gcHMtbGVmdC0wIHBzLXJpZ2h0LTBcIiAvPn08L2Rpdj5cbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17c2Vuc29yc30gb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfT5cbiAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwicHMtdGFibGUtZml4ZWQgcHMtYm9yZGVyLXNlcGFyYXRlIHBzLWJvcmRlci1zcGFjaW5nLTAgcHMtYm94LWJvcmRlciBwcy13LWF1dG9cIj5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlcj5cbiAgICAgICAgICAgICAge3RhYmxlLmdldEhlYWRlckdyb3VwcygpLm1hcCgoaGVhZGVyR3JvdXApID0+IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0+XG4gICAgICAgICAgICAgICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zPXtoZWFkZXJHcm91cC5oZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaGVhZGVyKSA9PiAhKFwiZGlzYWJsZURyYWdnaW5nXCIgaW4gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYpKVxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGhlYWRlcikgPT4gaGVhZGVyLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k9e2hvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGhlYWRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3Igc2VsZWN0IGNvbHVtblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgaGVhZGVyIGZ1bmN0aW9uIGRpcmVjdGx5LCB3aGljaCBzaG91bGQgYmUgU2VsZWN0SGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyRm4gPSBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGhlYWRlckZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGVhZGVyQ29tcG9uZW50ID0gaGVhZGVyRm4oaGVhZGVyLmdldENvbnRleHQoKSkgYXMgdW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgSGVhZGVyQ29tcG9uZW50IGlzIGEgZnVuY3Rpb24gKG5ldyBhcHByb2FjaCB3aXRoIHByb3BzIGZvcndhcmRpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgSGVhZGVyQ29tcG9uZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaW5uaW5nU3R5bGVzID0gZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uaW5nU3R5bGVzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3Bpbm5pbmdTdHlsZXMuc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtIZWFkZXJDb21wb25lbnQoe30pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBIZWFkZXJDb21wb25lbnQgaXMgYSBkaXJlY3QgSlNYIGVsZW1lbnQgKG9sZCBhcHByb2FjaClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIikuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17Z2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKS5zdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7SGVhZGVyQ29tcG9uZW50IGFzIEpTWC5FbGVtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gUmVndWxhciBjb2x1bW5zIHVzZSB0aGUgZHJhZ2dhYmxlIGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJhZ2dhYmxlSGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyPXtoZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlciBoZWFkZXI9e2hlYWRlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJhZ2dhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9UYWJsZUhlYWRlcj5cbiAgICAgICAgICAgIDxUYWJsZUJvZHk+XG4gICAgICAgICAgICAgIHtnZXRCZWZvcmVSb3dzPy4odGFibGUpfVxuICAgICAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgdGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFibGVSb3dcbiAgICAgICAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcy1iZy10YWJsZS1yb3cgcHMtb2RkOmJnLXRhYmxlLXJvdy1vZGQgcHMtZ3JvdXAgWyY6bGFzdC1vZi10eXBlX3RkXTpwcy1ib3JkZXItYi0wIHBzLWdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlIENlbGwgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImdyb3VwLW9kZDpwcy1iZy1uZXV0cmFsLTUwIGdyb3VwLWV2ZW46cHMtYmctd2hpdGUgZ3JvdXAtaG92ZXI6cHMtYmctbmV1dHJhbC0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbCBrZXk9e2NlbGwuaWR9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZWxsLmdldFZhbHVlKCkgYXMgUmVhY3ROb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW49e2NvbHVtbkRlZnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTI0IHBzLXRleHQtbGVmdCBwcy1wLVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00LzVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTIvM1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9UYWJsZUJvZHk+XG4gICAgICAgICAgPC9UYWJsZT5cbiAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICB7IXBhZ2VDb3VudCB8fCBwYWdlQ291bnQgPCAyID8gbnVsbCA6IDxEYXRhR3JpZFBhZ2luYXRpb24gdGFibGU9e3RhYmxlfSB2YXJpYW50PVwibnVtZXJpY1wiIC8+fVxuXG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZyAmJiAhaXNQcm9jZXNzaW5nICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWFic29sdXRlIC1wcy1pbnNldC0wIHBzLXBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Tm8gcmVzdWx0cyBmb3VuZDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgIEl0IGRvZXNuJmFwb3M7dCBsb29rIGxpa2UgeW91IGhhdmUgYW55IGRhdGEgaW4gdGhpcyB0YWJsZS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0aW5nU3RhdGUoZnJvbTogU29ydE9yZGVySXRlbVtdIHwgdW5kZWZpbmVkKTogU29ydGluZ1N0YXRlIHtcbiAgcmV0dXJuIGZyb20/Lm1hcCgoaXRlbSkgPT4gKHsgaWQ6IGl0ZW0uY29sdW1uLCBkZXNjOiBpdGVtLmRpcmVjdGlvbiA9PT0gXCJkZXNjXCIgfSkpIHx8IFtdO1xufVxuXG5mdW5jdGlvbiB0b1NvcnRPcmRlckl0ZW1zKGZyb206IFNvcnRpbmdTdGF0ZSk6IFNvcnRPcmRlckl0ZW1bXSB7XG4gIHJldHVybiBmcm9tLm1hcCgoaXRlbSkgPT4gKHtcbiAgICBjb2x1bW46IGl0ZW0uaWQsXG4gICAgZGlyZWN0aW9uOiBpdGVtLmRlc2MgPyBcImRlc2NcIiA6IFwiYXNjXCIsXG4gIH0pKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGdldEl0ZW0gPSAoa2V5OiBzdHJpbmcpOiB1bmtub3duID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gICAgaWYgKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShpdGVtVmFsdWUpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZTxUPihcbiAga2V5OiBzdHJpbmcsXG4gIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZFxuKTogW1QgfCB1bmRlZmluZWQsIChuZXdWYWw6IFQgfCAoKHByZXZWYWw6IFQpID0+IFQpKSA9PiB2b2lkXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGU8VD4oKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0SXRlbShrZXkpIGFzIFQgfCB1bmRlZmluZWRcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBpbml0aWFsVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHNldFZhbHVlKFxuICAgICAgICB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoaW5pdGlhbFZhbHVlKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRWYWx1ZSwga2V5XSlcblxuICBjb25zdCBzZXR0ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAodXBkYXRlcjogYW55KSA9PiB7XG4gICAgICBzZXRWYWx1ZShvbGQgPT4ge1xuICAgICAgICBsZXQgbmV3VmFsID0gdXBkYXRlclxuXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlciA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgbmV3VmFsID0gdXBkYXRlcihvbGQpXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkpXG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICByZXR1cm4gbmV3VmFsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2tleV1cbiAgKVxuXG4gIHJldHVybiBbdmFsdWUsIHNldHRlcl1cbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWUgPSB7XG4gIGJhY2tncm91bmQ6ICcjMGIxNTIxJyxcbiAgYmFja2dyb3VuZEFsdDogJyMxMzIzMzcnLFxuICBmb3JlZ3JvdW5kOiAnd2hpdGUnLFxuICBncmF5OiAnIzNmNGU2MCcsXG4gIGdyYXlBbHQ6ICcjMjIyZTNlJyxcbiAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgaW5wdXRUZXh0Q29sb3I6ICcjMDAwJyxcbiAgc3VjY2VzczogJyMwMGFiNTInLFxuICBkYW5nZXI6ICcjZmYwMDg1JyxcbiAgYWN0aXZlOiAnIzAwNmJmZicsXG4gIHdhcm5pbmc6ICcjZmZiMjAwJyxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgVGhlbWUgPSB0eXBlb2YgZGVmYXVsdFRoZW1lXG5pbnRlcmZhY2UgUHJvdmlkZXJQcm9wcyB7XG4gIHRoZW1lOiBUaGVtZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5jb25zdCBUaGVtZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGRlZmF1bHRUaGVtZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoeyB0aGVtZSwgLi4ucmVzdCB9OiBQcm92aWRlclByb3BzKSB7XG4gIHJldHVybiA8VGhlbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGVtZX0gey4uLnJlc3R9IC8+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIC8vIEtlZXAgdHJhY2sgb2YgdGhlIHByZWZlcmVuY2UgaW4gc3RhdGUsIHN0YXJ0IHdpdGggdGhlIGN1cnJlbnQgbWF0Y2hcbiAgY29uc3QgW2lzTWF0Y2gsIHNldElzTWF0Y2hdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzXG4gICAgfVxuICB9KVxuXG4gIC8vIFdhdGNoIGZvciBjaGFuZ2VzXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoIXdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBtYXRjaGVyXG4gICAgICBjb25zdCBtYXRjaGVyID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpXG5cbiAgICAgIC8vIENyZWF0ZSBvdXIgaGFuZGxlclxuICAgICAgY29uc3Qgb25DaGFuZ2UgPSAoeyBtYXRjaGVzIH06IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PlxuICAgICAgICBzZXRJc01hdGNoKG1hdGNoZXMpXG5cbiAgICAgIC8vIExpc3RlbiBmb3IgY2hhbmdlc1xuICAgICAgbWF0Y2hlci5hZGRMaXN0ZW5lcihvbkNoYW5nZSlcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgLy8gU3RvcCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXNcbiAgICAgICAgbWF0Y2hlci5yZW1vdmVMaXN0ZW5lcihvbkNoYW5nZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc01hdGNoLCBxdWVyeSwgc2V0SXNNYXRjaF0pXG5cbiAgcmV0dXJuIGlzTWF0Y2hcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFRoZW1lLCB1c2VUaGVtZSB9IGZyb20gJy4vdGhlbWUnXG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknXG5cbmNvbnN0IGlzU2VydmVyID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcblxudHlwZSBTdHlsZWRDb21wb25lbnQ8VD4gPSBUIGV4dGVuZHMgJ2J1dHRvbidcbiAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICAgIEhUTUxCdXR0b25FbGVtZW50XG4gICAgPlxuICA6IFQgZXh0ZW5kcyAnaW5wdXQnXG4gICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgSFRNTElucHV0RWxlbWVudFxuICAgICAgPlxuICAgIDogVCBleHRlbmRzICdzZWxlY3QnXG4gICAgICA/IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgICAgICAgIFJlYWN0LlNlbGVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxTZWxlY3RFbGVtZW50PixcbiAgICAgICAgICBIVE1MU2VsZWN0RWxlbWVudFxuICAgICAgICA+XG4gICAgICA6IFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXBcbiAgICAgICAgPyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF0+XG4gICAgICAgIDogbmV2ZXJcblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0NvbG9yKG1hdGNoOiBSb3V0ZU1hdGNoLCB0aGVtZTogVGhlbWUpIHtcbi8vICAgcmV0dXJuIG1hdGNoLmlzTG9hZGluZ1xuLy8gICAgID8gdGhlbWUuYWN0aXZlXG4vLyAgICAgOiBtYXRjaC5zdGF0dXMgPT09ICdyZWplY3RlZCdcbi8vICAgICA/IHRoZW1lLmRhbmdlclxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncGVuZGluZydcbi8vICAgICA/IHRoZW1lLndhcm5pbmdcbi8vICAgICA6IHRoZW1lLnN1Y2Nlc3Ncbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5U3RhdHVzTGFiZWwocXVlcnk6IFF1ZXJ5KSB7XG4vLyAgIHJldHVybiBxdWVyeS5zdGF0ZS5pc0ZldGNoaW5nXG4vLyAgICAgPyAnZmV0Y2hpbmcnXG4vLyAgICAgOiAhcXVlcnkuZ2V0T2JzZXJ2ZXJzQ291bnQoKVxuLy8gICAgID8gJ2luYWN0aXZlJ1xuLy8gICAgIDogcXVlcnkuaXNTdGFsZSgpXG4vLyAgICAgPyAnc3RhbGUnXG4vLyAgICAgOiAnZnJlc2gnXG4vLyB9XG5cbnR5cGUgU3R5bGVzID1cbiAgfCBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIHwgKChwcm9wczogUmVjb3JkPHN0cmluZywgYW55PiwgdGhlbWU6IFRoZW1lKSA9PiBSZWFjdC5DU1NQcm9wZXJ0aWVzKVxuXG5leHBvcnQgZnVuY3Rpb24gc3R5bGVkPFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0eXBlOiBULFxuICBuZXdTdHlsZXM6IFN0eWxlcyxcbiAgcXVlcmllczogUmVjb3JkPHN0cmluZywgU3R5bGVzPiA9IHt9XG4pIHtcbiAgcmV0dXJuIFJlYWN0LmZvcndhcmRSZWY8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdLCBTdHlsZWRDb21wb25lbnQ8VD4+KFxuICAgICh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG5cbiAgICAgIGNvbnN0IG1lZGlhU3R5bGVzID0gT2JqZWN0LmVudHJpZXMocXVlcmllcykucmVkdWNlKFxuICAgICAgICAoY3VycmVudCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoa2V5KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocmVzdCwgdGhlbWUpIDogdmFsdWUpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGN1cnJlbnRcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcblxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodHlwZSwge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLih0eXBlb2YgbmV3U3R5bGVzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IG5ld1N0eWxlcyhyZXN0LCB0aGVtZSlcbiAgICAgICAgICAgIDogbmV3U3R5bGVzKSxcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAuLi5tZWRpYVN0eWxlcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmLFxuICAgICAgfSlcbiAgICB9XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzTW91bnRlZCgpIHtcbiAgY29uc3QgbW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNb3VudGVkID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gbW91bnRlZFJlZi5jdXJyZW50LCBbXSlcblxuICBSZWFjdFtpc1NlcnZlciA/ICd1c2VFZmZlY3QnIDogJ3VzZUxheW91dEVmZmVjdCddKCgpID0+IHtcbiAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gaXNNb3VudGVkXG59XG5cbi8qKlxuICogVGhpcyBob29rIGlzIGEgc2FmZSB1c2VTdGF0ZSB2ZXJzaW9uIHdoaWNoIHNjaGVkdWxlcyBzdGF0ZSB1cGRhdGVzIGluIG1pY3JvdGFza3NcbiAqIHRvIHByZXZlbnQgdXBkYXRpbmcgYSBjb21wb25lbnQgc3RhdGUgd2hpbGUgUmVhY3QgaXMgcmVuZGVyaW5nIGRpZmZlcmVudCBjb21wb25lbnRzXG4gKiBvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IG1vdW50ZWQgYW55bW9yZS5cbiAqL1xuZnVuY3Rpb24gdXNlU2FmZVN0YXRlPFQ+KGluaXRpYWxTdGF0ZTogVCk6IFtULCAodmFsdWU6IFQpID0+IHZvaWRdIHtcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsU3RhdGUpXG5cbiAgY29uc3Qgc2FmZVNldFN0YXRlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBUKSA9PiB7XG4gICAgICBzY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGlmIChpc01vdW50ZWQoKSkge1xuICAgICAgICAgIHNldFN0YXRlKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgW2lzTW91bnRlZF1cbiAgKVxuXG4gIHJldHVybiBbc3RhdGUsIHNhZmVTZXRTdGF0ZV1cbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBtaWNyb3Rhc2suXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2NoZWR1bGUgc3RhdGUgdXBkYXRlcyBhZnRlciByZW5kZXJpbmcuXG4gKi9cbmZ1bmN0aW9uIHNjaGVkdWxlTWljcm90YXNrKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGVycm9yID0+XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH0pXG4gICAgKVxufVxuIiwgImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBjb25zdCBQYW5lbCA9IHN0eWxlZChcbiAgJ2RpdicsXG4gIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICAgIGZvbnRTaXplOiAnY2xhbXAoMTJweCwgMS41dncsIDE0cHgpJyxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzoge1xuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgfSxcbiAgICAnKG1heC13aWR0aDogNjAwcHgpJzoge1xuICAgICAgZm9udFNpemU6ICcuOWVtJyxcbiAgICAgIC8vIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gIH1cbilcblxuY29uc3QgQWN0aXZlUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoKSA9PiAoe1xuICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA3MDBweCknOiAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICAgIGJvcmRlclRvcDogYDJweCBzb2xpZCAke3RoZW1lLmdyYXl9YCxcbiAgICB9KSxcbiAgfVxuKVxuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gc3R5bGVkKCdidXR0b24nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgYmFja2dyb3VuZDogdGhlbWUuZ3JheSxcbiAgYm9yZGVyOiAnMCcsXG4gIGJvcmRlclJhZGl1czogJy4zZW0nLFxuICBjb2xvcjogJ3doaXRlJyxcbiAgcGFkZGluZzogJy41ZW0nLFxuICBvcGFjaXR5OiBwcm9wcy5kaXNhYmxlZCA/ICcuNScgOiB1bmRlZmluZWQsXG4gIGN1cnNvcjogJ3BvaW50ZXInLFxufSkpXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleXMgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuLy8gICBmb250U2l6ZTogJzAuOWVtJyxcbi8vIH0pXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleSA9IHN0eWxlZCgnc3BhbicsIHtcbi8vICAgZGlzcGxheTogJ2lubGluZS1mbGV4Jyxcbi8vICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4vLyAgIHBhZGRpbmc6ICcuMmVtIC40ZW0nLFxuLy8gICBmb250V2VpZ2h0OiAnYm9sZCcsXG4vLyAgIHRleHRTaGFkb3c6ICcwIDAgMTBweCBibGFjaycsXG4vLyAgIGJvcmRlclJhZGl1czogJy4yZW0nLFxuLy8gfSlcblxuY29uc3QgQ29kZSA9IHN0eWxlZCgnY29kZScsIHtcbiAgZm9udFNpemU6ICcuOWVtJyxcbn0pXG5cbmNvbnN0IElucHV0ID0gc3R5bGVkKCdpbnB1dCcsIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICBib3JkZXI6IDAsXG4gIGJvcmRlclJhZGl1czogJy4yZW0nLFxuICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGxpbmVIZWlnaHQ6IGAxLjNgLFxuICBwYWRkaW5nOiAnLjNlbSAuNGVtJyxcbn0pKVxuXG5jb25zdCBTZWxlY3QgPSBzdHlsZWQoXG4gICdzZWxlY3QnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBkaXNwbGF5OiBgaW5saW5lLWJsb2NrYCxcbiAgICBmb250U2l6ZTogYC45ZW1gLFxuICAgIGZvbnRGYW1pbHk6IGBzYW5zLXNlcmlmYCxcbiAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgICBwYWRkaW5nOiBgLjNlbSAxLjVlbSAuM2VtIC41ZW1gLFxuICAgIGhlaWdodDogJ2F1dG8nLFxuICAgIGJvcmRlcjogMCxcbiAgICBib3JkZXJSYWRpdXM6IGAuMmVtYCxcbiAgICBhcHBlYXJhbmNlOiBgbm9uZWAsXG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuaW5wdXRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSclMjM0NDQ0NDQnPjxwb2x5Z29uIHBvaW50cz0nMCwyNSAxMDAsMjUgNTAsNzUnLz48L3N2Zz5cIilgLFxuICAgIGJhY2tncm91bmRSZXBlYXQ6IGBuby1yZXBlYXRgLFxuICAgIGJhY2tncm91bmRQb3NpdGlvbjogYHJpZ2h0IC41NWVtIGNlbnRlcmAsXG4gICAgYmFja2dyb3VuZFNpemU6IGAuNjVlbSBhdXRvLCAxMDAlYCxcbiAgICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDUwMHB4KSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9XG4pXG4iLCAiLy8gQHRzLW5vY2hlY2tcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBFbnRyeSA9IHN0eWxlZCgnZGl2Jywge1xuICBmb250RmFtaWx5OiAnTWVubG8sIG1vbm9zcGFjZScsXG4gIGZvbnRTaXplOiAnMC43cmVtJyxcbiAgbGluZUhlaWdodDogJzEuNycsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59KVxuXG5jb25zdCBMYWJlbCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIGNvbG9yOiAnd2hpdGUnLFxufSlcblxuY29uc3QgVmFsdWUgPSBzdHlsZWQoJ3NwYW4nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBjb2xvcjogdGhlbWUuZGFuZ2VyLFxufSkpXG5cbmNvbnN0IFN1YkVudHJpZXMgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbWFyZ2luTGVmdDogJy4xcmVtJyxcbiAgcGFkZGluZ0xlZnQ6ICcxcmVtJyxcbiAgYm9yZGVyTGVmdDogJzJweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSknLFxufSlcblxuY29uc3QgSW5mbyA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY29sb3I6ICdncmV5JyxcbiAgZm9udFNpemU6ICcuN3JlbScsXG59KVxuXG5jb25zdCBFeHBhbmRlciA9ICh7IGV4cGFuZGVkLCBzdHlsZSA9IHt9LCAuLi5yZXN0IH0pID0+IChcbiAgPHNwYW5cbiAgICBzdHlsZT17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICB0cmFuc2l0aW9uOiAnYWxsIC4xcyBlYXNlJyxcbiAgICAgIHRyYW5zZm9ybTogYHJvdGF0ZSgke2V4cGFuZGVkID8gOTAgOiAwfWRlZykgJHtzdHlsZS50cmFuc2Zvcm0gfHwgJyd9YCxcbiAgICAgIC4uLnN0eWxlLFxuICAgIH19XG4gID5cbiAgICDilrZcbiAgPC9zcGFuPlxuKVxuXG5jb25zdCBEZWZhdWx0UmVuZGVyZXIgPSAoe1xuICBoYW5kbGVFbnRyeSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAvLyBwYXRoLFxuICBzdWJFbnRyaWVzLFxuICBzdWJFbnRyeVBhZ2VzLFxuICB0eXBlLFxuICAvLyBkZXB0aCxcbiAgZXhwYW5kZWQsXG4gIHRvZ2dsZSxcbiAgcGFnZVNpemUsXG4gIHJlbmRlcmVyLFxufSkgPT4ge1xuICBjb25zdCBbdmFsdWVTbmFwc2hvdCwgc2V0VmFsdWVTbmFwc2hvdF0gPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpXG4gIGNvbnN0IFtleHBhbmRlZFBhZ2VzLCBzZXRFeHBhbmRlZFBhZ2VzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxuXG4gIGNvbnN0IHJlZnJlc2hWYWx1ZVNuYXBzaG90ID0gKCkgPT4ge1xuICAgIHNldFZhbHVlU25hcHNob3QodmFsdWUoKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEVudHJ5IGtleT17bGFiZWx9PlxuICAgICAge3N1YkVudHJ5UGFnZXM/Lmxlbmd0aCA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWwgb25DbGljaz17KCkgPT4gdG9nZ2xlKCl9PlxuICAgICAgICAgICAgPEV4cGFuZGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gLz4ge2xhYmVsfXsnICd9XG4gICAgICAgICAgICA8SW5mbz5cbiAgICAgICAgICAgICAge1N0cmluZyh0eXBlKS50b0xvd2VyQ2FzZSgpID09PSAnaXRlcmFibGUnID8gJyhJdGVyYWJsZSkgJyA6ICcnfVxuICAgICAgICAgICAgICB7c3ViRW50cmllcy5sZW5ndGh9IHtzdWJFbnRyaWVzLmxlbmd0aCA+IDEgPyBgaXRlbXNgIDogYGl0ZW1gfVxuICAgICAgICAgICAgPC9JbmZvPlxuICAgICAgICAgIDwvTGFiZWw+XG4gICAgICAgICAge2V4cGFuZGVkID8gKFxuICAgICAgICAgICAgc3ViRW50cnlQYWdlcy5sZW5ndGggPT09IDEgPyAoXG4gICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgIHtzdWJFbnRyaWVzLm1hcChlbnRyeSA9PiBoYW5kbGVFbnRyeShlbnRyeSkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cnlQYWdlcy5tYXAoKGVudHJpZXMsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICA8RW50cnk+XG4gICAgICAgICAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBhbmRlZFBhZ2VzKG9sZCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5pbmNsdWRlcyhpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb2xkLmZpbHRlcihkID0+IGQgIT09IGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbLi4ub2xkLCBpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IFt7aW5kZXggKiBwYWdlU2l6ZX0gLi4ueycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCAqIHBhZ2VTaXplICsgcGFnZVNpemUgLSAxfV1cbiAgICAgICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZFBhZ2VzLmluY2x1ZGVzKGluZGV4KSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9FbnRyeT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IHR5cGUgPT09ICdmdW5jdGlvbicgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICByZW5kZXJlcj17cmVuZGVyZXJ9XG4gICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17cmVmcmVzaFZhbHVlU25hcHNob3R9PlxuICAgICAgICAgICAgICAgIDxMYWJlbD57bGFiZWx9PC9MYWJlbD4g8J+UhHsnICd9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlU25hcHNob3R9XG4gICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e3t9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWw+e2xhYmVsfTo8L0xhYmVsPnsnICd9XG4gICAgICAgICAgPFZhbHVlPlxuICAgICAgICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QodmFsdWUpKSl9XG4gICAgICAgICAgPC9WYWx1ZT5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvRW50cnk+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhwbG9yZXIoe1xuICB2YWx1ZSxcbiAgZGVmYXVsdEV4cGFuZGVkLFxuICByZW5kZXJlciA9IERlZmF1bHRSZW5kZXJlcixcbiAgcGFnZVNpemUgPSAxMDAsXG4gIGRlcHRoID0gMCxcbiAgLi4ucmVzdFxufSkge1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRFeHBhbmRlZClcblxuICBjb25zdCB0b2dnbGUgPSBzZXQgPT4ge1xuICAgIHNldEV4cGFuZGVkKG9sZCA9PiAodHlwZW9mIHNldCAhPT0gJ3VuZGVmaW5lZCcgPyBzZXQgOiAhb2xkKSlcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBbXVxuXG4gIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG4gIGxldCBzdWJFbnRyaWVzXG4gIGNvbnN0IHN1YkVudHJ5UGFnZXMgPSBbXVxuXG4gIGNvbnN0IG1ha2VQcm9wZXJ0eSA9IHN1YiA9PiB7XG4gICAgY29uc3QgbmV3UGF0aCA9IHBhdGguY29uY2F0KHN1Yi5sYWJlbClcbiAgICBjb25zdCBzdWJEZWZhdWx0RXhwYW5kZWQgPVxuICAgICAgZGVmYXVsdEV4cGFuZGVkID09PSB0cnVlXG4gICAgICAgID8geyBbc3ViLmxhYmVsXTogdHJ1ZSB9XG4gICAgICAgIDogZGVmYXVsdEV4cGFuZGVkPy5bc3ViLmxhYmVsXVxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdWIsXG4gICAgICBzdWJQYXRoOiBzdWIsXG4gICAgICBwYXRoOiBuZXdQYXRoLFxuICAgICAgZGVwdGg6IGRlcHRoICsgMSxcbiAgICAgIGRlZmF1bHRFeHBhbmRlZDogc3ViRGVmYXVsdEV4cGFuZGVkLFxuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHR5cGUgPSAnYXJyYXknXG4gICAgc3ViRW50cmllcyA9IHZhbHVlLm1hcCgoZCwgaSkgPT5cbiAgICAgIG1ha2VQcm9wZXJ0eSh7XG4gICAgICAgIGxhYmVsOiBpLFxuICAgICAgICB2YWx1ZTogZCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHR5cGUgPSAnSXRlcmFibGUnXG4gICAgc3ViRW50cmllcyA9IEFycmF5LmZyb20odmFsdWUsICh2YWwsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHR5cGUgPSAnZnVuY3Rpb24nXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHR5cGUgPSAnb2JqZWN0J1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgICBzdWJFbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdWJFbnRyaWVzKSB7XG4gICAgbGV0IGkgPSAwXG5cbiAgICB3aGlsZSAoaSA8IHN1YkVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBzdWJFbnRyeVBhZ2VzLnB1c2goc3ViRW50cmllcy5zbGljZShpLCBpICsgcGFnZVNpemUpKVxuICAgICAgaSA9IGkgKyBwYWdlU2l6ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW5kZXJlcih7XG4gICAgaGFuZGxlRW50cnk6IGVudHJ5ID0+IChcbiAgICAgIDxFeHBsb3JlciBrZXk9e2VudHJ5LmxhYmVsfSByZW5kZXJlcj17cmVuZGVyZXJ9IHsuLi5yZXN0fSB7Li4uZW50cnl9IC8+XG4gICAgKSxcbiAgICB0eXBlLFxuICAgIHN1YkVudHJpZXMsXG4gICAgc3ViRW50cnlQYWdlcyxcbiAgICBkZXB0aCxcbiAgICB2YWx1ZSxcbiAgICBwYXRoLFxuICAgIGV4cGFuZGVkLFxuICAgIHRvZ2dsZSxcbiAgICBwYWdlU2l6ZSxcbiAgICAuLi5yZXN0LFxuICB9KVxufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dvKHByb3BzOiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjQwcHhcIlxuICAgICAgaGVpZ2h0PVwiNDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE5MCAxOTBcIlxuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZVdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbFJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIGlkPVwib2ctd2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTI4LjAwMDAwMCwgLTIxLjAwMDAwMClcIj5cbiAgICAgICAgICA8ZyBpZD1cIkdyb3VwLTJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjguMDAwMDAwLCAzMS4wMDAwMDApXCI+XG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLCAxMC4wMDAwMDApXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0zOS43MjM5NzEyLDUxLjM0MzYyMzcgQzM2LjYzMTIyNCwzNi4zNjI4NzcgMzUuOTY3NTExMiwyNC44NzI3NzIyIDM3Ljk2NjYzMzEsMTYuNTI5MzU1MSBDMzkuMTU1NTk2NSwxMS41NjcxNjc4IDQxLjMyOTMwODgsNy41MTkwODQ2MiA0NC42MzQ2MDY0LDQuNTk4NDYzMDUgQzQ4LjEyNDEzOTQsMS41MTUwNDc3NyA1Mi41MzYwMzI3LDAuMDAyMDEyMTY2MDYgNTcuNDkzMjU3LDAuMDAyMDEyMTY2MDYgQzY1LjY3MTIwMTMsMC4wMDIwMTIxNjYwNiA3NC4yNjgyNjAyLDMuNzI3MzIxNDMgODMuNDU1NzI0NiwxMC44MDQ0MjY0IEM4Ny4yMDMxMjAzLDEzLjY5MTA0NTggOTEuMDkyNDM2NiwxNy4xNzA0MTEgOTUuMTMxNjUxNSwyMS4yNDQ0NzQ2IEM5NS40NTMxNDA0LDIwLjgzMTAyNjUgOTUuODE2NTQxNiwyMC40NDEwNDUzIDk2LjIyMTQzMDEsMjAuMDgwNjE1MiBDMTA3LjY0MDk4LDkuOTE0OTcxNTggMTE3LjI1NTI0NSwzLjU5ODkyNzE2IDEyNS40Nzg0MDgsMS4xNjM2NTA2OCBDMTMwLjM2Nzg5OSwtMC4yODQzNjQwMDUgMTM0Ljk1ODUyNiwtMC40MjIzMTc5NzggMTM5LjEzODkzNiwwLjk4MzAzMTAyMSBDMTQzLjU1MTYzMSwyLjQ2NjQ2ODQ0IDE0Ny4wNjc2Niw1LjUzMjk0ODg4IDE0OS41NDgzMTQsOS44MjgxMDkxMiBDMTUzLjY0MjI4OCwxNi45MTY2NzM1IDE1NC43MjE5MTgsMjYuMjMxMDk4MyAxNTMuMTk1NTk1LDM3LjczMjAyNDMgQzE1Mi41NzM0NTEsNDIuNDE5OTExMiAxNTEuNTA5ODUsNDcuNTI2MzgzMSAxNTAuMDA3MDk0LDUzLjA1OTMxNTMgQzE1MC41NzQwNDUsNTMuMTI3NzA4NiAxNTEuMTQyNDE2LDUzLjI1MzI4MDggMTUxLjcwNTA0MSw1My40Mzk1Mjk3IEMxNjYuMTkzOTMyLDU4LjIzNTg2NzggMTc2LjQ1MzU4Miw2My4zOTM3NDYyIDE4Mi42NjUwMjEsNjkuMjg4MjgzOSBDMTg2LjM2MDY2OSw3Mi43OTUzODMxIDE4OC43NzM5NzIsNzYuNjk5ODQzNCAxODkuNjQ2MzY1LDgxLjAyMTgyMDQgQzE5MC41NjcxNzYsODUuNTgzNjc0NiAxODkuNjY5MzEzLDkwLjE1OTMzMTYgMTg3LjE5MTU0OCw5NC40NTEyOTY3IEMxODMuMTA1MjExLDEwMS41Mjk2MTQgMTc1LjU5MTY0MywxMDcuMTEyMjEgMTY0Ljg4NzU4NywxMTEuNTM0MDMxIEMxNjAuNTg5NTUyLDExMy4zMDk1MzkgMTU1LjcyNjU3OSwxMTQuOTE3NTU5IDE1MC4yOTMyNTksMTE2LjM2Mzc0OCBDMTUwLjU0MTE3NiwxMTYuOTIyOTIgMTUwLjczMzUyMSwxMTcuNTE2NzU5IDE1MC44NjIxMzgsMTE4LjEzOTc1OCBDMTUzLjk1NDg4NiwxMzMuMTIwNTA1IDE1NC42MTg1OTgsMTQ0LjYxMDYxIDE1Mi42MTk0NzcsMTUyLjk1NDAyNyBDMTUxLjQzMDUxMywxNTcuOTE2MjE0IDE0OS4yNTY4MDEsMTYxLjk2NDI5NyAxNDUuOTUxNTAzLDE2NC44ODQ5MTkgQzE0Mi40NjE5NywxNjcuOTY4MzM0IDEzOC4wNTAwNzcsMTY5LjQ4MTM3IDEzMy4wOTI4NTMsMTY5LjQ4MTM3IEMxMjQuOTE0OTA4LDE2OS40ODEzNyAxMTYuMzE3ODUsMTY1Ljc1NjA2MSAxMDcuMTMwMzg1LDE1OC42Nzg5NTYgQzEwMy4zNDMxMDQsMTU1Ljc2MTYxMyA5OS40MTA4NjU1LDE1Mi4yMzg4MzkgOTUuMzI1NDMzNywxNDguMTA4NjE5IEM5NC45MDUwNzUzLDE0OC43NjU0NzQgOTQuMzg4OTY4MSwxNDkuMzc2MDExIDkzLjc3ODU2OTksMTQ5LjkxOTM4NSBDODIuMzU5MDE5OCwxNjAuMDg1MDI4IDcyLjc0NDc1NSwxNjYuNDAxMDczIDY0LjUyMTU5MTUsMTY4LjgzNjM0OSBDNTkuNjMyMTAwOSwxNzAuMjg0MzY0IDU1LjA0MTQ3MzYsMTcwLjQyMjMxOCA1MC44NjEwNjM2LDE2OS4wMTY5NjkgQzQ2LjQ0ODM2ODYsMTY3LjUzMzUzMiA0Mi45MzIzNDA0LDE2NC40NjcwNTEgNDAuNDUxNjg2MiwxNjAuMTcxODkxIEMzNi4zNTc3MTE2LDE1My4wODMzMjcgMzUuMjc4MDgyMywxNDMuNzY4OTAyIDM2LjgwNDQwNTMsMTMyLjI2Nzk3NiBDMzcuNDQ5MDM4LDEyNy40MTA2MzQgMzguNTY3NjIsMTIyLjEwMzg5OCA0MC4xNTc1ODkxLDExNi4zMzkwMDkgQzM5LjUzNjEwNDEsMTE2LjI3NjEwNCAzOC45MTIwNzU0LDExNi4xNDQ4MTYgMzguMjk0OTU5MSwxMTUuOTQwNTI5IEMyMy44MDYwNjg0LDExMS4xNDQxOTEgMTMuNTQ2NDE4NCwxMDUuOTg2MzEyIDcuMzM0OTc4OTIsMTAwLjA5MTc3NSBDMy42MzkzMzEyMSw5Ni41ODQ2NzU0IDEuMjI2MDI3NTIsOTIuNjgwMjE1MSAwLjM1MzYzNTIzNSw4OC4zNTgyMzgxIEMtMC41NjcxNzYzMzMsODMuNzk2MzgzOSAwLjMzMDY4NjU4MSw3OS4yMjA3MjY5IDIuODA4NDUyMzYsNzQuOTI4NzYxOCBDNi44OTQ3ODg2Myw2Ny44NTA0NDQzIDE0LjQwODM1NjUsNjIuMjY3ODQ4MSAyNS4xMTI0MTMzLDU3Ljg0NjAyNzMgQzI5LjUzODUxNDMsNTYuMDE3NjE1NCAzNC41NjM3MjA4LDU0LjM2NjgyMiA0MC4xOTM5Mzk0LDUyLjg4NzQ2NzQgQzM5Ljk5MzMzOTMsNTIuMzk2OTE3MSAzOS44MzQ5Mzc0LDUxLjg4MTEyMzUgMzkuNzIzOTcxMiw1MS4zNDM2MjM3IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUGF0aFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMwMDJDNEJcIlxuICAgICAgICAgICAgICAgIGZpbGxSdWxlPVwibm9uemVyb1wiXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDk1LjAwMDAwMCwgODUuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05NS4wMDAwMDAsIC04NS4wMDAwMDApIFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk05MS43MzUsMTEwIEw5MS43MzUsMTE2IEw4MC42MzIyMDUxLDExNiBDNzguODQxMTI4NiwxMTYgNzcuMTg2ODYxNCwxMTUuMDQxOTc1IDc2LjI5NTQ0ODksMTEzLjQ4ODQ4MyBMNzQuMjk0LDExMCBMOTEuNzM1LDExMCBaIE0xMTYuMTgxLDExMCBMMTE0LjE4MDI1NiwxMTMuNDg4NDgzIEMxMTMuMjg4ODQ0LDExNS4wNDE5NzUgMTExLjYzNDU3NiwxMTYgMTA5Ljg0MzUsMTE2IEw5OC43MzUsMTE2IEw5OC43MzUsMTEwIEwxMTYuMTgxLDExMCBaIE05MS43MzUsOTYgTDkxLjczNSwxMDMgTDcwLjI3NywxMDMgTDY2LjI2LDk2IEw5MS43MzUsOTYgWiBNMTI0LjIxNSw5NiBMMTIwLjE5OCwxMDMgTDk4LjczNSwxMDMgTDk4LjczNSw5NiBMMTI0LjIxNSw5NiBaIE05MS43MzUsODIgTDkxLjczNSw4OSBMNjIuMjQ0LDg5IEw2MS42NjMyNDM4LDg3Ljk4ODQ4MjYgQzYwLjc3ODkxODcsODYuNDQ3MzQxNyA2MC43Nzg5MTg3LDg0LjU1MjY1ODMgNjEuNjYzMjQzOCw4My4wMTE1MTc0IEw2Mi4yNDMsODIgTDkxLjczNSw4MiBaIE0xMjguMjMyLDgyIEwxMjguODEyNDYxLDgzLjAxMTUxNzQgQzEyOS42OTY3ODYsODQuNTUyNjU4MyAxMjkuNjk2Nzg2LDg2LjQ0NzM0MTcgMTI4LjgxMjQ2MSw4Ny45ODg0ODI2IEwxMjguMjMxLDg5IEw5OC43MzUsODkgTDk4LjczNSw4MiBMMTI4LjIzMiw4MiBaIE05MS43MzUsNjggTDkxLjczNSw3NSBMNjYuMjYsNzUgTDcwLjI3Nyw2OCBMOTEuNzM1LDY4IFogTTEyMC4xOTgsNjggTDEyNC4yMTUsNzUgTDk4LjczNSw3NSBMOTguNzM1LDY4IEwxMjAuMTk4LDY4IFogTTkxLjczNSw1NSBMOTEuNzM1LDYxIEw3NC4yOTMsNjEgTDc2LjI5NTQ0ODksNTcuNTExNTE3NCBDNzcuMTg2ODYxNCw1NS45NTgwMjUgNzguODQxMTI4Niw1NSA4MC42MzIyMDUxLDU1IEw5MS43MzUsNTUgWiBNMTA5Ljg0MzUsNTUgQzExMS42MzQ1NzYsNTUgMTEzLjI4ODg0NCw1NS45NTgwMjUgMTE0LjE4MDI1Niw1Ny41MTE1MTc0IEwxMTYuMTgyLDYxIEw5OC43MzUsNjEgTDk4LjczNSw1NSBMMTA5Ljg0MzUsNTUgWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJQb2x5Z29uLTJcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZEOTRDXCJcbiAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTU0Ljg2MDE3MjksOTguMzU3NzU3OCBDNTYuMTcxNTIyNCw5Ny42MDgyODU2IDU3LjgzNjAyNDYsOTguMDc0NjAxNCA1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU4LjU3Nzk0MjQsOTkuMzk5MzAzNCBMNTkuMDUyNTg0MywxMDAuMjQzNTIgQzYyLjg1NjMzOTIsMTA2Ljk4Mjk5MyA2Ni44MTkwMTE2LDExMy4zODAxNzYgNzAuOTQwNjAxNiwxMTkuNDM1MDY4IEM3NS44MDc4ODA4LDEyNi41ODU0MjcgODEuMjgxODQsMTMzLjgyNDExIDg3LjM2MjQ3OTIsMTQxLjE1MTExNSBDODguMzE2ODc3OCwxNDIuMzAxMTQgODguMTg0OTQzNywxNDQuMDExMTc2IDg3LjA2NTY4NiwxNDQuOTk3OTM3IEw4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODYuNDU0MjA4NSwxNDUuNTM0NjI1IEM2Ni4zNDY1Mzg5LDE2My4xMDMzMTQgNTMuMjc3ODE4OCwxNjYuNjEyNTUyIDQ3LjI0ODA0ODIsMTU2LjA2MjM0MSBDNDEuMzUwMDY1MiwxNDUuNzQyNzE3IDQzLjQ4NDQ5MTUsMTI2Ljk4Mjg4OCA1My42NTEzMjc0LDk5Ljc4Mjg1MjYgQzUzLjg3NjgxOCw5OS4xNzk1ODIxIDU0LjMwNDU4NjEsOTguNjc1MjkxIDU0Ljg2MDE3MjksOTguMzU3NzU3OCBaIE0xNDAuNTM0MTc3LDExOS4wNDE1MDQgQzE0MS45ODYxMzEsMTE4Ljc4NTE3NyAxNDMuMzc1NDk2LDExOS43NDIxMzggMTQzLjY1OTYzLDEyMS4xOTQyNDIgTDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuODEyODE1LDEyMS45ODYzNzYgQzE0OC43ODIzNjUsMTQ3Ljk5NTQ1OSAxNDUuMjgzMzQ4LDE2MSAxMzMuMzE1NzY0LDE2MSBDMTIxLjYwOTc0NSwxNjEgMTA2LjcwODcyNCwxNDkuOTA5MDA3IDg4LjYxMjcwMTgsMTI3LjcyNzAyMiBDODguMjExMzQ5NSwxMjcuMjM1MDQ3IDg3Ljk5NDU3MjMsMTI2LjYxNzM3MSA4OCwxMjUuOTgxNTA5IEM4OC4wMTMxNTgsMTI0LjQ4MDY4NiA4OS4yMzU3ODU0LDEyMy4yNzQ2NTEgOTAuNzMwOTE4LDEyMy4yODc3NTYgTDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MS42ODQ2NTQ0LDEyMy4yOTQ1MzEgQzk5LjMwNTY5NzksMTIzLjMzNTk5NCAxMDYuNzE0Mzg3LDEyMy4wNzE1OTEgMTEzLjkxMDcyMywxMjIuNTAxMzIzIEMxMjIuNDA5MDM5LDEyMS44Mjc4OCAxMzEuMjgzNTIzLDEyMC42NzQ2MDcgMTQwLjUzNDE3NywxMTkuMDQxNTA0IFogTTE0Ny40MDg3MjYsNjMuODExOTY2MyBDMTQ3LjkzMjEzOSw2Mi40MDI2OTAzIDE0OS41MDgzODYsNjEuNjYzNDUzNyAxNTAuOTU0NTgxLDYyLjE0OTAxMiBMMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MS43NDI1NTIsNjIuNDE1NDg1NCBDMTc3LjU4Mzc2Myw3MS4yMTc5MjIgMTg3LjQwMjM1Niw4MC44OTE2ODA1IDE4MS4xOTgzMzIsOTEuNDM2NzYwOSBDMTc1LjEyOTkwNCwxMDEuNzUxMzY2IDE1Ny40ODQzNDcsMTA5LjI2MDMzOSAxMjguMjYxNjYsMTEzLjk2MzY3OCBDMTI3LjYxMzUyOSwxMTQuMDY3OTk0IDEyNi45NDg2NDMsMTEzLjk0NTk2OSAxMjYuMzgyNzM1LDExMy42MTg4NDMgQzEyNS4wNDcwMjUsMTEyLjg0NjcyOSAxMjQuNjAyMDQ2LDExMS4xNTgyMTQgMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuMzg4ODQ4LDEwOS44NDc0MzggTDEyNS44ODkzMjgsMTA5LjAxMDUgQzEyOS44NzcxODMsMTAyLjMxNjMzIDEzMy40ODEzNTgsOTUuNjU0MjYyMSAxMzYuNzAxODU0LDg5LjAyNDI5NTcgQzE0MC41MDUwMSw4MS4xOTQ4MTc5IDE0NC4wNzM5NjcsNzIuNzkwNzA4MSAxNDcuNDA4NzI2LDYzLjgxMTk2NjMgWiBNNjEuNzM4MzM5OCw1Ni4wMzYzMjE4IEM2Mi4zODY0NzA4LDU1LjkzMjAwNjMgNjMuMDUxMzU2NSw1Ni4wNTQwMzE1IDYzLjYxNzI2NDYsNTYuMzgxMTU3MyBDNjQuOTUyOTc1NCw1Ny4xNTMyNzEgNjUuMzk3OTUzOCw1OC44NDE3ODYyIDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuNjExMTUxNyw2MC4xNTI1NjE1IEw2NC4xMTA2NzE4LDYwLjk4OTUwMDEgQzYwLjEyMjgxNjgsNjcuNjgzNjY5OSA1Ni41MTg2NDE2LDc0LjM0NTczNzkgNTMuMjk4MTQ2Miw4MC45NzU3MDQzIEM0OS40OTQ5OSw4OC44MDUxODIxIDQ1LjkyNjAzMjgsOTcuMjA5MjkxOSA0Mi41OTEyNzQ0LDEwNi4xODgwMzQgQzQyLjA2Nzg2MDgsMTA3LjU5NzMxIDQwLjQ5MTYxNDIsMTA4LjMzNjU0NiAzOS4wNDU0MTksMTA3Ljg1MDk4OCBMMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM4LjI1NzQ0NzUsMTA3LjU4NDUxNSBDMTIuNDE2MjM3Miw5OC43ODIwNzggMi41OTc2NDM5OCw4OS4xMDgzMTk1IDguODAxNjY3ODYsNzguNTYzMjM5MSBDMTQuODcwMDk1Nyw2OC4yNDg2MzM1IDMyLjUxNTY1Myw2MC43Mzk2NjExIDYxLjczODMzOTgsNTYuMDM2MzIxOCBaIE0xMDMuNTQ1NzkyLDI0LjQ2NTM3NDYgQzEyMy42NTM0NjEsNi44OTY2ODY0MSAxMzYuNzIyMTgxLDMuMzg3NDQ3NzggMTQyLjc1MTk1MiwxMy45Mzc2NTg3IEMxNDguNjQ5OTM1LDI0LjI1NzI4MjYgMTQ2LjUxNTUwOCw0My4wMTcxMTIyIDEzNi4zNDg2NzMsNzAuMjE3MTQ3NCBDMTM2LjEyMzE4Miw3MC44MjA0MTc5IDEzNS42OTU0MTQsNzEuMzI0NzA5IDEzNS4xMzk4MjcsNzEuNjQyMjQyMiBDMTMzLjgyODQ3OCw3Mi4zOTE3MTQ0IDEzMi4xNjM5NzUsNzEuOTI1Mzk4NiAxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMS40MjIwNTgsNzAuNjAwNjk2NiBMMTMwLjk0NzQxNiw2OS43NTY0Nzk4IEMxMjcuMTQzNjYxLDYzLjAxNzAwNjUgMTIzLjE4MDk4OCw1Ni42MTk4MjM5IDExOS4wNTkzOTgsNTAuNTY0OTMyIEMxMTQuMTkyMTE5LDQzLjQxNDU3MjcgMTA4LjcxODE2LDM2LjE3NTg5MDMgMTAyLjYzNzUyMSwyOC44NDg4ODQ3IEMxMDEuNjgzMTIyLDI3LjY5ODg2MDIgMTAxLjgxNTA1NiwyNS45ODg4MjQzIDEwMi45MzQzMTQsMjUuMDAyMDYyOSBMMTAyLjkzNDMxNCwyNS4wMDIwNjI5IFogTTU3LjY4NDIzNjEsOCBDNjkuMzkwMjU1MSw4IDg0LjI5MTI3NTgsMTkuMDkwOTkyNiAxMDIuMzg3Mjk4LDQxLjI3Mjk3NzcgQzEwMi43ODg2NTEsNDEuNzY0OTUyNyAxMDMuMDA1NDI4LDQyLjM4MjYyODggMTAzLDQzLjAxODQ5MTEgQzEwMi45ODY4NDIsNDQuNTE5MzE0NCAxMDEuNzY0MjE1LDQ1LjcyNTM0ODkgMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEwxMDAuMjY5MDgyLDQ1LjcxMjI0NDUgTDk5LjMxNTM0NTYsNDUuNzA1NDY4OSBDOTEuNjk0MzAyMSw0NS42NjQwMDYzIDg0LjI4NTYxMjYsNDUuOTI4NDA5MSA3Ny4wODkyNzcyLDQ2LjQ5ODY3NzMgQzY4LjU5MDk2MTIsNDcuMTcyMTIgNTkuNzE2NDc2Nyw0OC4zMjUzOTMgNTAuNDY1ODIzNSw0OS45NTg0OTYyIEM0OS4wMTM4NjkxLDUwLjIxNDgyMzEgNDcuNjI0NTA0NCw0OS4yNTc4NjE4IDQ3LjM0MDM2OTcsNDcuODA1NzU4IEw0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMTg3MTg0Niw0Ny4wMTM2MjM1IEM0Mi4yMTc2MzQ3LDIxLjAwNDU0MTIgNDUuNzE2NjUxOSw4IDU3LjY4NDIzNjEsOCBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIkNvbWJpbmVkLVNoYXBlXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGNDE1NFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gIClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSdcblxuaW1wb3J0IHVzZUxvY2FsU3RvcmFnZSBmcm9tICcuL3VzZUxvY2FsU3RvcmFnZSdcbmltcG9ydCB7IHVzZUlzTW91bnRlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmltcG9ydCB7IFBhbmVsLCBCdXR0b24gfSBmcm9tICcuL3N0eWxlZENvbXBvbmVudHMnXG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBkZWZhdWx0VGhlbWUgYXMgdGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuLy8gaW1wb3J0IHsgZ2V0UXVlcnlTdGF0dXNMYWJlbCwgZ2V0UXVlcnlTdGF0dXNDb2xvciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgRXhwbG9yZXIgZnJvbSAnLi9FeHBsb3JlcidcbmltcG9ydCBMb2dvIGZyb20gJy4vTG9nbydcblxuaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVhY3QgdGFibGUgdG8gYXR0YWNoIHRoZSBkZXZ0b29scyB0by5cbiAgICovXG4gIHRhYmxlOiBhbnlcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHBhbmVsLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBldGMuXG4gICAqL1xuICBwYW5lbFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LFxuICAgIEhUTUxEaXZFbGVtZW50XG4gID5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGFkZCBwcm9wcyB0byB0aGUgY2xvc2UgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgY2xvc2VCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHRvZ2dsZSBidXR0b24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBjbGFzc05hbWUsIHN0eWxlIChtZXJnZSBhbmQgb3ZlcnJpZGUgZGVmYXVsdCBzdHlsZSksIG9uQ2xpY2sgKGV4dGVuZCBkZWZhdWx0IGhhbmRsZXIpLCBldGMuXG4gICAqL1xuICB0b2dnbGVCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byByZW5kZXIgdGhlIGRldnRvb2xzIGluc2lkZSBhIGRpZmZlcmVudCB0eXBlIG9mIGNvbnRhaW5lciBlbGVtZW50IGZvciBhMTF5IHB1cnBvc2VzLlxuICAgKiBBbnkgc3RyaW5nIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgdmFsaWQgaW50cmluc2ljIEpTWCBlbGVtZW50IGlzIGFsbG93ZWQuXG4gICAqIERlZmF1bHRzIHRvICdmb290ZXInLlxuICAgKi9cbiAgY29udGFpbmVyRWxlbWVudD86IHN0cmluZyB8IGFueVxufVxuXG5pbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3Qgc3R5bGUgb2JqZWN0IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBpbmxpbmUgc3R5bGVzXG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBSZWFjdCBjbGFzc05hbWUgcHJvcGVydHkgdXNlZCB0byBzdHlsZSBhIGNvbXBvbmVudCB3aXRoIGNsYXNzZXNcbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogQSBib29sZWFuIHZhcmlhYmxlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGFuZWwgaXMgb3BlbiBvciBjbG9zZWRcbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0b2dnbGVzIHRoZSBvcGVuIGFuZCBjbG9zZSBzdGF0ZSBvZiB0aGUgcGFuZWxcbiAgICovXG4gIHNldElzT3BlbjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzKHtcbiAgaW5pdGlhbElzT3BlbixcbiAgdGFibGUsXG4gIHBhbmVsUHJvcHMgPSB7fSxcbiAgdG9nZ2xlQnV0dG9uUHJvcHMgPSB7fSxcbiAgY29udGFpbmVyRWxlbWVudDogQ29udGFpbmVyID0gJ2Zvb3RlcicsXG59OiBEZXZ0b29sc09wdGlvbnMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3Qgcm9vdFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcGFuZWxSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gICAgJ3JlYWN0VGFibGVEZXZ0b29sc09wZW4nLFxuICAgIGluaXRpYWxJc09wZW5cbiAgKVxuICBjb25zdCBpc01vdW50ZWQgPSB1c2VJc01vdW50ZWQoKVxuXG4gIGNvbnN0IHsgc3R5bGU6IHBhbmVsU3R5bGUgPSB7fSwgLi4ub3RoZXJQYW5lbFByb3BzIH0gPSBwYW5lbFByb3BzXG5cbiAgY29uc3Qge1xuICAgIHN0eWxlOiB0b2dnbGVCdXR0b25TdHlsZSA9IHt9LFxuICAgIG9uQ2xpY2s6IG9uVG9nZ2xlQ2xpY2ssXG4gICAgLi4ub3RoZXJUb2dnbGVCdXR0b25Qcm9wc1xuICB9ID0gdG9nZ2xlQnV0dG9uUHJvcHNcblxuICAvLyBEbyBub3QgcmVuZGVyIG9uIHRoZSBzZXJ2ZXJcbiAgaWYgKCFpc01vdW50ZWQoKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgcmVmPXtyb290UmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNcIj5cbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIHshaXNPcGVuID8gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgey4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiT3BlbiBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICAgICAgICAgIG9uVG9nZ2xlQ2xpY2sgJiYgb25Ub2dnbGVDbGljayhlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICBtYXJnaW46ICcuNXJlbScsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMS41ZW0nLFxuICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgICAgICAgICAgIC4uLnRvZ2dsZUJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TG9nbyBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFxuICAgICAgICAgICAgcmVmPXtwYW5lbFJlZiBhcyBhbnl9XG4gICAgICAgICAgICB7Li4ub3RoZXJQYW5lbFByb3BzfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICBzZXRJc09wZW49e3NldElzT3Blbn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAuLi5wYW5lbFN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgIDwvQ29udGFpbmVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBEZXZ0b29sc1BhbmVsT3B0aW9uc1xuPihmdW5jdGlvbiBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbChwcm9wcywgcmVmKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3Qge1xuICAgIHRhYmxlLFxuICAgIGlzT3BlbiA9IHRydWUsXG4gICAgc2V0SXNPcGVuLFxuICAgIC4uLnBhbmVsUHJvcHNcbiAgfSA9IHByb3BzIGFzIERldnRvb2xzUGFuZWxPcHRpb25zICYge1xuICAgIHRhYmxlOiBUYWJsZTxhbnk+XG4gIH1cblxuICAvLyBjb25zdCBbYWN0aXZlTWF0Y2hJZCwgc2V0QWN0aXZlUm91dGVJZF0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gIC8vICAgJ3JlYWN0VGFibGVEZXZ0b29sc0FjdGl2ZVJvdXRlSWQnLFxuICAvLyAgICcnLFxuICAvLyApXG5cbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgPFBhbmVsIHJlZj17cmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFwiIHsuLi5wYW5lbFByb3BzfT5cbiAgICAgICAgPHN0eWxlXG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYFxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICoge1xuICAgICAgICAgICAgICBzY3JvbGxiYXItY29sb3I6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH0gJHt0aGVtZS5ncmF5fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICo6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10cmFjaywgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IC41ZW07XG4gICAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNDAlJyxcbiAgICAgICAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7dGhlbWUuZ3JheUFsdH1gLFxuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdGhlbWUuYmFja2dyb3VuZEFsdCxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ29cbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnY2xhbXAoLjhyZW0sIDJ2dywgMS4zcmVtKScsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZWFjdCBUYWJsZXsnICd9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRGV2dG9vbHNcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIFJlYWN0IFRhYmxlIERldnRvb2xzXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDbG9zZVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIGZsZXg6ICcxJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkluc3RhbmNlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGV9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTdGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFN0YXRlKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0QWxsQ29sdW1ucygpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb3JlIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0Q29yZVJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJGaWx0ZXJlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEZpbHRlcmVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlNvcnRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFNvcnRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJHcm91cGVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0R3JvdXBlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJFeHBhbmRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEV4cGFuZGVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7LyogPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlJvdyBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1BhbmVsPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKVxufSlcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5mdW5jdGlvbiBTa2VsZXRvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1hbmltYXRlLXB1bHNlIHBzLXJvdW5kZWQtbWQgcHMtYmctZm9yZWdyb3VuZC8xMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwgImltcG9ydCB7IGZsZXhSZW5kZXIsIHR5cGUgSGVhZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQXJyb3dEb3duV2lkZU5hcnJvdywgQXJyb3dVcFdpZGVOYXJyb3csIENoZXZyb25Eb3duLCBNb3ZlRG93biwgTW92ZVVwLCBQaW4sIFBpbk9mZiwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbn0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUHJvcHM8VERhdGE+IHtcbiAgaGVhZGVyOiBIZWFkZXI8VERhdGEsIHVua25vd24+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlcjxURGF0YT4ocHJvcHM6IEhlYWRlclByb3BzPFREYXRhPikge1xuICBjb25zdCB7IGhlYWRlciwgY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzXCI+XG4gICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyID8gbnVsbCA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1taW4tdy0wIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtZm9yZWdyb3VuZC85MFwiPlxuICAgICAgICAgICAgICAgIHtmbGV4UmVuZGVyKGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlciwgaGVhZGVyLmdldENvbnRleHQoKSl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXNocmluay0wIHBzLWdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtbWwtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlRG93biBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZVVwIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUGluKCkgJiYgaGVhZGVyLmNvbHVtbi5pZCAhPT0gXCJzZWxlY3RcIiAmJiAoXG4gICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtcHgtMCBwcy1oLTYgcHMtdy02XCI+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpICYmIChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4udG9nZ2xlU29ydGluZygpfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93bldpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXBXaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGFzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwgc29ydGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi5waW4oaGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gZmFsc2UgOiBcImxlZnRcIil9PlxuICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluT2ZmIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFVucGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW4gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgUGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5SZXNpemUoKSAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiB8fCBlLmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMCBwcy10b3AtMCBwcy1oLWZ1bGwgcHMtdy1weCBwcy1jdXJzb3ItY29sLXJlc2l6ZSBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOnBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgICApfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgY29sdW1uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkTG9hZGluZ0Jhcih7IGNsYXNzTmFtZSB9OiBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtbG9hZGluZy1iYXJcbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLVsycHhdIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtYmctdGFibGUtYm9yZGVyIHBzLXotNTBcIiwgY2xhc3NOYW1lKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWFuaW1hdGUtaW5kZXRlcm1pbmF0ZS1iYXIgcHMtaC1mdWxsIHBzLXctMS8zIHBzLXJvdW5kZWQtci1mdWxsIHBzLWJnLXByaW1hcnlcIiAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCwgQ2hldnJvbnNMZWZ0LCBDaGV2cm9uc1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHZhcmlhbnQ/OiBcImJhc2ljXCIgfCBcIm51bWVyaWNcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkUGFnaW5hdGlvbihwcm9wczogRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZSwgdmFyaWFudCA9IFwiYmFzaWNcIiB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBwYWdlSW5kZXggfSA9IHRhYmxlLmdldFN0YXRlKCkucGFnaW5hdGlvbjtcbiAgY29uc3QgcGFnZUNvdW50ID0gdGFibGUuZ2V0UGFnZUNvdW50KCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJvdW5kZWQtYi1sZyBwcy1vdmVyZmxvdy1jbGlwIHBzLXN0aWNreSBwcy1ib3R0b20tMCBwcy1sZWZ0LTAgcHMtYm9yZGVyLXQtMCB3LWZ1bGwgcHMtei0yMCBwcy1wLTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXNwYWNlLXgtMiBwcy1weS0yIHBzLXB4LTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy1iYWNrZHJvcC1ibHVyLXNtIHBzLWJnLXRhYmxlLWhlYWQvOTBcIj5cbiAgICAgICAge3ZhcmlhbnQgPT09IFwiYmFzaWNcIiA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQcmV2aW91c1xuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC05XCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBOZXh0XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleCgwKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy10ZXh0LXhzIHBzLWZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgUGFnZVxuICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBtaW49ezF9XG4gICAgICAgICAgICAgICAgICBtYXg9e3BhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYWdlSW5kZXggKyAxfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0xNlwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZUluZGV4ID0gZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIC0gMSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXNocmluay0wIHBzLXctbWF4XCI+b2Yge3BhZ2VDb3VudH08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUNvdW50IC0gMSl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zUmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtblBpbm5pbmdTdHlsZXMoY29sdW1uOiBDb2x1bW48UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBraW5kOiBcImhlYWRlclwiIHwgXCJjZWxsXCIpIHtcbiAgY29uc3QgaXNQaW5uZWQgPSBjb2x1bW4uZ2V0SXNQaW5uZWQoKTtcbiAgY29uc3QgaXNMZWZ0UGlubmVkID0gaXNQaW5uZWQgPT09IFwibGVmdFwiO1xuICBjb25zdCBpc1JpZ2h0UGlubmVkID0gaXNQaW5uZWQgPT09IFwicmlnaHRcIjtcbiAgY29uc3QgaXNTZWxlY3RDb2x1bW4gPSBjb2x1bW4uaWQgPT09IFwiX19wc19zZWxlY3RcIjtcblxuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZTogY24oXG4gICAgICBcInBzLWdyb3VwIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgIFwicHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXRleHQtZWxsaXBzaXNcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYgXCJwcy1zdGlja3lcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJoZWFkZXJcIiAmJiAoaXNTZWxlY3RDb2x1bW4gPyBcInBzLXotMzBcIiA6IFwicHMtei0yMFwiKSxcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJjZWxsXCIgJiYgKGlzU2VsZWN0Q29sdW1uID8gXCJwcy16LTEwXCIgOiBcInBzLXotMFwiKSxcbiAgICAgIGlzTGVmdFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bMnB4XzBfNXB4Xy0ycHhfcmdiYSgwLDAsMCwwLjEpXVwiLFxuICAgICAgaXNSaWdodFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bLTJweF8wXzVweF8tMnB4X3JnYmEoMCwwLDAsMC4xKV1cIixcbiAgICApLFxuICAgIHN0eWxlOiB7XG4gICAgICBtaW5XaWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICB3aWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICBsZWZ0OiBpc0xlZnRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0U3RhcnQoXCJsZWZ0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiBpc1JpZ2h0UGlubmVkID8gYCR7Y29sdW1uLmdldEFmdGVyKFwicmlnaHRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcG9zaXRpb246IGlzUGlubmVkID8gKFwic3RpY2t5XCIgYXMgY29uc3QpIDogdW5kZWZpbmVkLFxuICAgIH0gYXMgQ1NTUHJvcGVydGllcyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgKiBhcyBUb29sdGlwUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdG9vbHRpcFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRvb2x0aXBQcm92aWRlciA9IFRvb2x0aXBQcmltaXRpdmUuUHJvdmlkZXI7XG5cbmNvbnN0IFRvb2x0aXAgPSBUb29sdGlwUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRvb2x0aXBUcmlnZ2VyID0gVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBUb29sdGlwQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1iZy1wcmltYXJ5IHBzLXB4LTMgcHMtcHktMS41IHBzLXRleHQteHMgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtYW5pbWF0ZS1pbiBwcy1mYWRlLWluLTAgcHMtem9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1Rvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ub29sdGlwQ29udGVudC5kaXNwbGF5TmFtZSA9IFRvb2x0aXBQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgVG9vbHRpcCwgVG9vbHRpcFRyaWdnZXIsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIgfTtcbiIsICJpbXBvcnQgeyBLZXlSb3VuZCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90b29sdGlwXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlckNlbGwoeyBjb2x1bW4gfTogeyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAge2NvbHVtbi5pc0luUHJpbWFyeUtleSAmJiAoXG4gICAgICAgIDxUb29sdGlwUHJvdmlkZXIgZGVsYXlEdXJhdGlvbj17MTIwfT5cbiAgICAgICAgICA8VG9vbHRpcD5cbiAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICA8S2V5Um91bmQgc2l6ZT17MTJ9IGNsYXNzTmFtZT1cInBzLXRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50IHNpZGU9XCJib3R0b21cIiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlByaW1hcnkgS2V5PC9zcGFuPlxuICAgICAgICAgICAgPC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvVG9vbHRpcFByb3ZpZGVyPlxuICAgICAgKX1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtbWVkaXVtIHBzLXRydW5jYXRlXCI+e2NvbHVtbi5uYW1lfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC83MCBwcy1sb3dlcmNhc2UgcHMtdHJ1bmNhdGVcIj5cbiAgICAgICAge2NvbHVtbi5kYXRhdHlwZS5uYW1lfVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiLi9Cb29sZWFuSW5wdXRcIjtcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gXCIuL0RhdGVJbnB1dFwiO1xuaW1wb3J0IHsgRW51bUlucHV0IH0gZnJvbSBcIi4vRW51bUlucHV0XCI7XG5pbXBvcnQgeyBKc29uSW5wdXQgfSBmcm9tIFwiLi9Kc29uSW5wdXRcIjtcbmltcG9ydCB7IE51bWVyaWNJbnB1dCB9IGZyb20gXCIuL051bWVyaWNJbnB1dFwiO1xuaW1wb3J0IHsgUmF3SW5wdXQgfSBmcm9tIFwiLi9SYXdJbnB1dFwiO1xuaW1wb3J0IHsgVGltZUlucHV0IH0gZnJvbSBcIi4vVGltZUlucHV0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dChwcm9wczoge1xuICBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0OiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCB7IGNlbGwsIGNvbHVtbiwgb25TdWJtaXQgfSA9IHByb3BzO1xuICBjb25zdCB7IGdyb3VwLCBvcHRpb25zLCBpc0FycmF5IH0gPSBjb2x1bW4uZGF0YXR5cGU7XG4gIGNvbnN0IHJlYWRvbmx5ID0gY29sdW1uLmlzQ29tcHV0ZWQgfHwgcHJvcHMucmVhZG9ubHk7XG5cbiAgY29uc3QgY2VsbFZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIC8vIG9uIHJvdyBpbnNlcnRpb25zLCB3ZSB0cmVhdCB1bmRlZmluZWQgYXMgZW1wdHkgaW5wdXRcbiAgY29uc3QgdmFsdWUgPSBjZWxsVmFsdWUgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBjZWxsVmFsdWU7XG5cbiAgaWYgKGdyb3VwID09PSBcImRhdGV0aW1lXCIpIHtcbiAgICByZXR1cm4gPERhdGVJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImpzb25cIiB8fCBpc0FycmF5KSB7XG4gICAgcmV0dXJuIDxKc29uSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiA8Qm9vbGVhbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gb3B0aW9ucz17b3B0aW9uc30gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UmF3SW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17aXNPYmplY3RUeXBlKHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9sYWJlbFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQm9vbGVhbklucHV0KHByb3BzOiBCb29sZWFuSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCA/IGZhbHNlIDogKHZhbHVlIGFzIGJvb2xlYW4pKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlVG9TdWJtaXQgPSBzZXRUb051bGwgPyBudWxsIDogY3VycmVudFZhbHVlO1xuICAgIGlmICh2YWx1ZVRvU3VibWl0ICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQodmFsdWVUb1N1Ym1pdCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMCBwcy1weC0yXCI+XG4gICAgICAgIDxMYWJlbCBodG1sRm9yPVwiYm9vbGVhbi1pbnB1dFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIj5cbiAgICAgICAgICBCb29sZWFuXG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMjQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgIGlkPVwiYm9vbGVhbi1pbnB1dFwiXG4gICAgICAgICAgICBjaGVja2VkPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGRhdGEtdmFsdWVcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtZm9udC1tb25vXCJcbiAgICAgICAgICBpbml0aWFsPXt7IHg6IC00MCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgeDogMCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTIsIGRlbGF5OiAwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7c2V0VG9OdWxsID8gXCJOVUxMXCIgOiBTdHJpbmcoY3VycmVudFZhbHVlKX1cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgTGFiZWxQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1sYWJlbFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBsYWJlbFZhcmlhbnRzID0gY3ZhKFxuICBcInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtbGVhZGluZy1ub25lIHBlZXItZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIHBlZXItZGlzYWJsZWQ6cHMtb3BhY2l0eS03MFwiLFxuKTtcblxuY29uc3QgTGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PiAmIFZhcmlhbnRQcm9wczx0eXBlb2YgbGFiZWxWYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPExhYmVsUHJpbWl0aXZlLlJvb3QgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24obGFiZWxWYXJpYW50cygpLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcbkxhYmVsLmRpc3BsYXlOYW1lID0gTGFiZWxQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgTGFiZWwgfTtcbiIsICJpbXBvcnQgKiBhcyBTd2l0Y2hQcmltaXRpdmVzIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc3dpdGNoXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU3dpdGNoID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTd2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTd2l0Y2hQcmltaXRpdmVzLlJvb3RcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWlubGluZS1mbGV4IHBzLWgtNSBwcy13LTkgcHMtc2hyaW5rLTAgcHMtY3Vyc29yLXBvaW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtZnVsbCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0yIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGZvY3VzLXZpc2libGU6cHMtcmluZy1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLWJnLWlucHV0XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gICAgcmVmPXtyZWZ9XG4gID5cbiAgICA8U3dpdGNoUHJpbWl0aXZlcy5UaHVtYlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1wb2ludGVyLWV2ZW50cy1ub25lIHBzLWJsb2NrIHBzLWgtNCBwcy13LTQgcHMtcm91bmRlZC1mdWxsIHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LWxnIHBzLXJpbmctMCBwcy10cmFuc2l0aW9uLXRyYW5zZm9ybSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10cmFuc2xhdGUteC00IGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtMFwiLFxuICAgICAgKX1cbiAgICAvPlxuICA8L1N3aXRjaFByaW1pdGl2ZXMuUm9vdD5cbikpO1xuU3dpdGNoLmRpc3BsYXlOYW1lID0gU3dpdGNoUHJpbWl0aXZlcy5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBTd2l0Y2ggfTtcbiIsICJpbXBvcnQgeyBDb3JuZXJEb3duTGVmdCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc3dpdGNoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRBY3Rpb25zUHJvcHMge1xuICBvblNhdmU/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBvbk51bGxDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaXNOdWxsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBJbnB1dEFjdGlvbnMgPSAoe1xuICBvblNhdmUsXG4gIG9uQ2FuY2VsLFxuICBvbkNsb3NlLFxuICBvbk51bGxDaGFuZ2UsXG4gIGlzTnVsbCA9IGZhbHNlLFxuICByZWFkb25seSxcbn06IElucHV0QWN0aW9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChvbk51bGxDaGFuZ2UpIG9uTnVsbENoYW5nZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gKCkgPT4ge1xuICAgIGlmIChvblNhdmUpIG9uU2F2ZSgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGlmIChvbkNhbmNlbCkgb25DYW5jZWwoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdGV4dC14cyBwcy1cIj5cbiAgICAgIHshcmVhZG9ubHkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTIgcHMtbXItYXV0b1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZVNhdmV9PlxuICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgPENvcm5lckRvd25MZWZ0IHNpemU9ezEyfSBzdHJva2VXaWR0aD17Mn0gLz5cbiAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICBTYXZlIGNoYW5nZXNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH0+XG4gICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtdGV4dC1bOHB4XSBwcy1sZWFkaW5nLW5vbmUgcHMtZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgIEVzY1xuICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgIENhbmNlbCBjaGFuZ2VzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7b25OdWxsQ2hhbmdlICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyXCIgaHRtbEZvcj1cInNldC1udWxsYWJsZVwiPlxuICAgICAgICAgICAgICAgIDxTd2l0Y2ggaWQ9XCJzZXQtbnVsbGFibGVcIiBjaGVja2VkPXtpc051bGx9IG9uQ2hlY2tlZENoYW5nZT17aGFuZGxlTnVsbENoYW5nZX0gLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5TZXQgdG8gTlVMTDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVJbnB1dChwcm9wczogRGF0ZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICAvLyBGb3JtYXQgdGhlIGRhdGUgdXNpbmcgZGF5anMgYmFzZWQgb24gZGV0ZWN0ZWQgZm9ybWF0XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKCFkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIC8vIERldGVjdCBpZiBpbnB1dCBoYXMgdGltZSBjb21wb25lbnRcbiAgICAgIGNvbnN0IGhhc1RpbWUgPSBpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKTtcblxuICAgICAgLy8gSHVtYW4tcmVhZGFibGUgZm9ybWF0IChsb2NhbGl6ZWQpXG4gICAgICBpZiAoaGFzVGltZSkge1xuICAgICAgICAvLyBGb3IgdGltZXN0YW1wcywgc2hvdyBmdWxsIGRhdGUgYW5kIHRpbWVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTEwgTFRTXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIGRhdGVzLCBqdXN0IHNob3cgdGhlIGRhdGVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTExcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWREYXRlfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlSW5wdXRQcm9wcyB7XG4gIGluaXRpYWxWYWx1ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlucHV0KHByb3BzOiBVc2VJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlIH0gPSBwcm9wcztcblxuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlID8/IFwiXCIpO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgYmFkZ2VWYXJpYW50cyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtSW5wdXQocHJvcHM6IEVudW1JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIGNvbHVtbiwgdmFsdWUsIG9wdGlvbnMgPSBbXSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGwsIHZhbHVlXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7IC8vIFJlc2V0IG51bGwgc3RhdGUgYXMgd2VsbFxuICB9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLWZvbnQtbW9ubyBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1weC0yIHBzLXB5LTAgcHMtdy1mdWxsIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgIHtjdXJyZW50VmFsdWV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1mbGV4LXdyYXAgcHMtZ2FwLTIgcHMtcC0yIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXSBwcy1tYXgtdy1bNTAwcHhdIHctZnVsbCBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLW92ZXJmbG93LXktc2Nyb2xsIHBzLW1heC1oLTMyXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAga2V5PXtvcHRpb259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQ6IG9wdGlvbiA9PT0gY3VycmVudFZhbHVlID8gXCJkZWZhdWx0XCIgOiBcIm91dGxpbmVcIiB9KX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSnNvbklucHV0KHByb3BzOiBKc29uSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogKEpTT04ucGFyc2UoY3VycmVudFZhbHVlKSBhcyBvYmplY3QpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGpzb25WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGpzb25WYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByb3dzPXs1fVxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtYmFzZSBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNJbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0lucHV0KHByb3BzOiBOdW1lcmljSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSkpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gbnVtYmVyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcihjdXJyZW50VmFsdWUpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KG51bWVyaWNWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cIm51bWVyaWMtaW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgTnVtZXJpY1xuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0lucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3SW5wdXQocHJvcHM6IFJhd0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lSW5wdXQocHJvcHM6IFRpbWVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRpbWUgdmFsdWVzIGluIGEgaHVtYW4tcmVhZGFibGUgbWFubmVyXG4gIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIGNvbnN0IGhhc1RpbWV6b25lID0gL1srLV1cXGR7Mn0oOlxcZHsyfSk/JC8udGVzdChpbnB1dFZhbHVlKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhgMjAwMC0wMS0wMSAke2lucHV0VmFsdWV9YCk7XG4gICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiaDptbSBBXCIpICsgKGhhc1RpbWV6b25lID8gYCAoJHtkYXRlLmZvcm1hdChcIlpcIil9KWAgOiBcIlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZVJlZ2V4ID0gLyhcXGR7MSwyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC5cXGQrKT8oWystXVxcZHsyfSg/OjpcXGR7Mn0pPyk/LztcbiAgICAgIGNvbnN0IG1hdGNoID0gaW5wdXRWYWx1ZS5tYXRjaCh0aW1lUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQobWF0Y2hbMV0gfHwgXCIxMlwiLCAxMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtYXRjaFsyXSB8fCBcIjAwXCI7XG4gICAgICAgIGNvbnN0IHR6T2Zmc2V0ID0gbWF0Y2hbNF0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgcGVyaW9kID0gaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG4gICAgICAgIGNvbnN0IGhvdXIxMiA9IGhvdXJzICUgMTIgPT09IDAgPyAxMiA6IGhvdXJzICUgMTI7XG5cbiAgICAgICAgcmV0dXJuIGAke2hvdXIxMn06JHttaW51dGVzfSAke3BlcmlvZH0ke3R6T2Zmc2V0ID8gYCAoJHt0ek9mZnNldH0pYCA6IFwiXCJ9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWRUaW1lfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IENvbHVtbkRlZiwgVGFibGUsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5cbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IENlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vY2VsbC9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgc3RhZ2VkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgc2V0U3RhZ2VkUm93czogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0YWdlZFJvd3MocHJvcHM6IFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGU6IHBhcmVudFRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH0gPSBwcm9wcztcbiAgY29uc3QgcmVhZG9ubHkgPSBCb29sZWFuKHVzZUlzSW5zZXJ0aW5nKCkpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YWdlZFJvdyhyb3dJbmRleDogbnVtYmVyLCBwYXJ0aWFsUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHNldFN0YWdlZFJvd3MoKHByZXZSb3dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnByZXZSb3dzXTtcbiAgICAgIG5ld1Jvd3Nbcm93SW5kZXhdID0geyAuLi5uZXdSb3dzW3Jvd0luZGV4XSwgLi4ucGFydGlhbFJvdyB9O1xuXG4gICAgICByZXR1cm4gbmV3Um93cztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudFRhYmxlLm9wdGlvbnMuY29sdW1ucykubWFwKChjb2x1bW4pID0+IHtcbiAgICBpZiAoY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgY2VsbCgpIHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gPEVtcHR5Q2VsbCAvPjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLCBwcm9wcyB9KX1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YWdlZFJvdyhwcm9wcy5yb3dJbmRleCwgeyBbY29sdW1uLmlkIV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgLi4ucGFyZW50VGFibGUub3B0aW9ucyxcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZTogdW5kZWZpbmVkLFxuICAgIG9uU29ydGluZ0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHN0YWdlZFJvd3MsXG4gICAgc3RhdGU6IG9taXQocGFyZW50VGFibGUub3B0aW9ucy5zdGF0ZSwgW1wicGFnaW5hdGlvblwiLCBcInNvcnRpbmdcIl0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgIDxUYWJsZVJvdyBrZXk9e2l9PlxuICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfT47XG4gICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxDZWxsIGtleT17an0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0gcm93SW5kZXg9e2l9IC8+O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IFRhYmxlMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2UtaW50cm9zcGVjdGlvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbnR5cGUgTmF2aWdhdGlvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvbih7IGNsYXNzTmFtZSB9OiBOYXZpZ2F0aW9uUHJvcHMpIHtcbiAgLy8gVXNlIHRoZSBjdXN0b20gaG9vayB0byBnZXQgYWxsIG5lY2Vzc2FyeSBzdGF0ZSBhbmQgaGFuZGxlcnNcbiAgY29uc3QgeyB0YWJsZXMsIGFjdGl2ZVRhYmxlLCBhY3RpdmVTY2hlbWEsIGlzTG9hZGluZywgaGFuZGxlVGFibGVDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG5cbiAgY29uc3Qgc2lkZUJhckNsYXNzZXMgPSBjbihcbiAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy00OCBwcy1vdmVyZmxvdy15LWF1dG8gcHMtbWF4LWgtZnVsbCBwcy1taW4taC0wIHBzLXRleHQtY2FyZC1mb3JlZ3JvdW5kIHBzLXNoYWRvdy14c1wiLFxuICAgIGNsYXNzTmFtZSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzaWRlQmFyQ2xhc3Nlc30+XG4gICAgICA8TmF2aWdhdGlvbi5TY2hlbWFTZWxlY3RvciAvPlxuXG4gICAgICA8TmF2aWdhdGlvbi5CbG9jayBsYWJlbD1cIlRhYmxlc1wiPlxuICAgICAgICB7dGFibGVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgdGFibGVzLm1hcCgodGFibGUpID0+IChcbiAgICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW1cbiAgICAgICAgICAgICAga2V5PXtgJHt0YWJsZS5zY2hlbWF9LSR7dGFibGUubmFtZX1gfVxuICAgICAgICAgICAgICBhc0NoaWxkXG4gICAgICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmVUYWJsZSA9PT0gdGFibGV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBzLXB5LTEgcHMtZm9udC1tb25vIHBzLXRleHQteHMgcHMtdGV4dC1mb3JlZ3JvdW5kLzYwIGhvdmVyOnBzLXRleHQtZm9yZWdyb3VuZCBwcy10cmFuc2l0aW9uLWFsbCBwcy1jdXJzb3ItcG9pbnRlciBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtYmctc2xhdGUtMjAwIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1mb3JlZ3JvdW5kIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy10ZXh0LWZvcmVncm91bmRgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YSBocmVmPXtgI3RhYmxlPSR7dGFibGUubmFtZX0mc2NoZW1hPSR7dGFibGUuc2NoZW1hfWB9Pnt0YWJsZS5uYW1lfTwvYT5cbiAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICkgOiBpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgQXJyYXkoNClcbiAgICAgICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKChfLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtIGtleT17aW5kZXh9IHdyYXBDaGlsZHJlbkluU3Bhbj17ZmFsc2V9PlxuICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTMgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgICApKVxuICAgICAgICApIDogKFxuICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0+Tm8gdGFibGVzIGZvdW5kIGluIHthY3RpdmVTY2hlbWF9PC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICl9XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IEJsb2NrID0gKHsgY2xhc3NOYW1lLCBsYWJlbCwgY2hpbGRyZW4sIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIHsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gey4uLnByb3BzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgICAgPFRhYmxlMiBzaXplPXsxNn0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCIgLz5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW1cIj57bGFiZWx9PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5hdiBhcmlhLWxhYmVsPXtsYWJlbH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtcHggcHMtcGItMyBwcy1wLTJcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBJdGVtID0gKHtcbiAgY2xhc3NOYW1lLFxuICBhc0NoaWxkID0gZmFsc2UsXG4gIGlzQWN0aXZlLFxuICBzaXplLFxuICBjaGlsZHJlbixcbiAgd3JhcENoaWxkcmVuSW5TcGFuID0gdHJ1ZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiYnV0dG9uXCI+ICYge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCI7XG4gIHdyYXBDaGlsZHJlbkluU3Bhbj86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudS1idXR0b25cIlxuICAgICAgZGF0YS1zaXplPXtzaXplfVxuICAgICAgZGF0YS1hY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1weS0xLjUgcHMtcHgtMiBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXJvdW5kZWQtbWQgcHMtZmxleCBwcy1nYXAtMiBwcy1pdGVtcy1jZW50ZXIgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy10cmFuc3BhcmVudFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHt3cmFwQ2hpbGRyZW5JblNwYW4gPyA8c3BhbiBjbGFzc05hbWU9XCJwcy10cnVuY2F0ZVwiPntjaGlsZHJlbn08L3NwYW4+IDogY2hpbGRyZW59XG4gICAgPC9Db21wPlxuICApO1xufTtcblxuY29uc3QgU2NoZW1hU2VsZWN0b3IgPSAoKSA9PiB7XG4gIC8vIEdldCBzY2hlbWFzIGZyb20gaW50cm9zcGVjdGlvbiBhbmQgYWN0aXZlIHNjaGVtYSBtYW5hZ2VtZW50XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgaXNMb2FkaW5nOiBpc0ludHJvc3BlY3Rpb25Mb2FkaW5nIH0gPSB1c2VJbnRyb3NwZWN0aW9uKCk7XG4gIGNvbnN0IHsgYWN0aXZlU2NoZW1hLCBoYW5kbGVTY2hlbWFDaGFuZ2UgfSA9IHVzZUFjdGl2ZVRhYmxlKCk7XG5cbiAgLy8gRXh0cmFjdCBzY2hlbWEgbmFtZXMgZnJvbSBpbnRyb3NwZWN0aW9uIGRhdGFcbiAgY29uc3Qgc2NoZW1hTmFtZXMgPSBPYmplY3Qua2V5cyhpbnRyb3NwZWN0aW9uLnNjaGVtYXMgfHwge30pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy1wdC00IHBzLXBiLTIgcHMtcHgtNCBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctc2xhdGUtNTAvNTAgcHMtYmFja2Ryb3AtYmx1ci1zbVwiPlxuICAgICAgPFNlbGVjdCB2YWx1ZT17YWN0aXZlU2NoZW1hfSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVTY2hlbWFDaGFuZ2V9PlxuICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy10ZXh0LXhzXCIgbGFiZWw9XCJTY2hlbWFcIj5cbiAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJTZWxlY3Qgc2NoZW1hXCIgLz5cbiAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICB7aXNJbnRyb3NwZWN0aW9uTG9hZGluZyA/IChcbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibG9hZGluZ1wiPkxvYWRpbmcgc2NoZW1hcy4uLjwvU2VsZWN0SXRlbT5cbiAgICAgICAgICApIDogc2NoZW1hTmFtZXMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgIHNjaGVtYU5hbWVzLm1hcCgoc2NoZW1hKSA9PiAoXG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIGtleT17c2NoZW1hfSB2YWx1ZT17c2NoZW1hfSBjbGFzc05hbWU9XCJwcy10ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAge3NjaGVtYX1cbiAgICAgICAgICAgICAgPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJuby1zY2hlbWFzXCI+Tm8gc2NoZW1hcyBmb3VuZDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICA8L1NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbk5hdmlnYXRpb24uQmxvY2sgPSBCbG9jaztcbk5hdmlnYXRpb24uSXRlbSA9IEl0ZW07XG5OYXZpZ2F0aW9uLlNjaGVtYVNlbGVjdG9yID0gU2NoZW1hU2VsZWN0b3I7XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBUYWJsZSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsga2V5TWFwLCB1c2VRdWVyeVN0YXRlLCB1c2VRdWVyeVN0YXRlcyB9IGZyb20gXCIuL251cXNcIjtcbmltcG9ydCB7IElOSVRJQUxfREFUQV9VUERBVEVEX0FULCB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4vdXNlLWludHJvc3BlY3Rpb25cIjtcblxuLyoqXG4gKiBIb29rIHRvIGVuY2Fwc3VsYXRlIGFsbCBsb2dpYyBmb3IgbWFuYWdpbmcgdGhlIGFjdGl2ZSB0YWJsZSBzZWxlY3Rpb24uXG4gKiBIYW5kbGVzIHN5bmNpbmcgd2l0aCBVUkwgcGFyYW1zLCBkZWZhdWx0IHNlbGVjdGlvbiwgYW5kIGV4cG9zZXMgYSBzaW1wbGUgQVBJIGZvciBjb25zdW1lcnMuXG4gKiBTaG91bGQgb25seSBiZSB1c2VkIHdpdGhpbiBTdHVkaW8gY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgYWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVTY2hlbWEsIGFkYXB0ZXIsIGVtaXRUZWxlbWV0cnlFdmVudCB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgZGF0YTogaW50cm9zcGVjdGlvbiwgZGF0YVVwZGF0ZWRBdCB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCBpc0xvYWRpbmcgPSBkYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVDtcblxuICBjb25zdCBbdGFibGVBbmRTY2hlbWEsIHNldFRhYmxlQW5kU2NoZW1hXSA9IHVzZVF1ZXJ5U3RhdGVzKFxuICAgIGtleU1hcCh7XG4gICAgICB0YWJsZToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgICAgIHBhcnNlOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdixcbiAgICAgICAgc2VyaWFsaXplOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiA/PyBcIlwiLFxuICAgICAgfSxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgICAgIHBhcnNlOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiB8fCBhZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJwdWJsaWNcIixcbiAgICAgICAgc2VyaWFsaXplOiAodjogc3RyaW5nIHwgbnVsbCkgPT4gdiB8fCBhZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJwdWJsaWNcIixcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG5cbiAgLy8gQWRkIHF1ZXJ5IHN0YXRlIGZvciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtc1xuICBjb25zdCBbLCBzZXRQYWdlUGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInBhZ2VJbmRleFwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG4gIGNvbnN0IFssIHNldFNvcnRQYXJhbV0gPSB1c2VRdWVyeVN0YXRlPHN0cmluZyB8IG51bGw+KFwic29ydFwiLCB7XG4gICAgcGFyc2U6ICh2KSA9PiB2LFxuICAgIHNlcmlhbGl6ZTogKHYpID0+IHYgPz8gXCJcIixcbiAgfSk7XG5cbiAgLy8gR2V0IGFsbCB0YWJsZXMgZm9yIHRoZSBjdXJyZW50IHNjaGVtYSBmcm9tIFVSTCBvciBkZWZhdWx0XG4gIGNvbnN0IHRhYmxlczogVGFibGVbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIC8vIEFsd2F5cyB1c2UgdGhlIGFjdGl2ZVNjaGVtYSBmcm9tIGNvbnRleHRcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXNbYWN0aXZlU2NoZW1hXT8udGFibGVzIHx8IHt9KTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hcywgYWN0aXZlU2NoZW1hXSk7XG5cbiAgLy8gQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiB0YWJsZXMgYWNyb3NzIGFsbCBzY2hlbWFzXG4gIGNvbnN0IHRvdGFsVGFibGVDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludHJvc3BlY3Rpb24uc2NoZW1hcykucmVkdWNlKChzdW0sIHNjaGVtYSkgPT4ge1xuICAgICAgcmV0dXJuIHN1bSArIE9iamVjdC5rZXlzKHNjaGVtYS50YWJsZXMpLmxlbmd0aDtcbiAgICB9LCAwKTtcbiAgfSwgW2ludHJvc3BlY3Rpb24uc2NoZW1hc10pO1xuXG4gIGNvbnN0IFtmaXJzdFRhYmxlXSA9IHRhYmxlcztcblxuICAvLyBFZmZlY3QgdG8gc3luYyBhY3RpdmUgdGFibGUgd2l0aCBVUkwgcGFyYW0gYW5kIGRlZmF1bHRzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzTG9hZGluZykgcmV0dXJuO1xuICAgIC8vIElmIHNjaGVtYSBhbmQgdGFibGUgcGFyYW1zIGluIFVSTCwgdHJ5IHRvIHNldCB0aGF0IHRhYmxlXG4gICAgaWYgKHRhYmxlQW5kU2NoZW1hPy50YWJsZSAmJiB0YWJsZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gTG9vayBmb3IgYSB0YWJsZSB0aGF0IG1hdGNoZXMgYm90aCBuYW1lIGFuZCBzY2hlbWEgZnJvbSBVUkwgcGFyYW1zXG4gICAgICBjb25zdCB0YWJsZUZyb21QYXJhbSA9IHRhYmxlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IHRhYmxlQW5kU2NoZW1hLnRhYmxlICYmIHQuc2NoZW1hID09PSBhY3RpdmVTY2hlbWEpO1xuXG4gICAgICBpZiAodGFibGVGcm9tUGFyYW0pIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUodGFibGVGcm9tUGFyYW0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIG5vIHNjaGVtYS90YWJsZSBwYXJhbXMgb3Igbm90IGZvdW5kLCBzZXQgZmlyc3QgdGFibGUgYXMgZGVmYXVsdFxuICAgIGlmICh0YWJsZXMubGVuZ3RoID4gMCAmJiAhYWN0aXZlVGFibGUpIHtcbiAgICAgIHNldEFjdGl2ZVRhYmxlKGZpcnN0VGFibGUgfHwgbnVsbCk7XG4gICAgICBpZiAoZmlyc3RUYWJsZSkge1xuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHsgdGFibGU6IGZpcnN0VGFibGUubmFtZSwgc2NoZW1hOiBhY3RpdmVTY2hlbWEgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNMb2FkaW5nLCB0YWJsZUFuZFNjaGVtYSwgdGFibGVzLCBmaXJzdFRhYmxlLCBhY3RpdmVUYWJsZSwgYWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWFdKTtcblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBhY3RpdmUgdGFibGUgYW5kIHVwZGF0ZSB0aGUgVVJMIHBhcmFtLlxuICAgKiBBbHNvIGNsZWFycyBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXMuXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWJsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdUYWJsZTogVGFibGUpID0+IHtcbiAgICAgIGlmIChhY3RpdmVUYWJsZSAhPT0gbmV3VGFibGUpIHtcbiAgICAgICAgc2V0QWN0aXZlVGFibGUobmV3VGFibGUpO1xuICAgICAgICAvLyBFbnN1cmUgYm90aCB0YWJsZSBhbmQgc2NoZW1hIGFyZSBhbHdheXMgaW5jbHVkZWQgaW4gdGhlIFVSTFxuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKHtcbiAgICAgICAgICB0YWJsZTogbmV3VGFibGUubmFtZSxcbiAgICAgICAgICBzY2hlbWE6IG5ld1RhYmxlLnNjaGVtYSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFVwZGF0ZSBhY3RpdmUgc2NoZW1hIHRvIG1hdGNoIHRoZSB0YWJsZSdzIHNjaGVtYVxuICAgICAgICBpZiAoYWN0aXZlU2NoZW1hICE9PSBuZXdUYWJsZS5zY2hlbWEpIHtcbiAgICAgICAgICBzZXRBY3RpdmVTY2hlbWEobmV3VGFibGUuc2NoZW1hKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDbGVhciBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nIHBhcmFtcyB3aGVuIHN3aXRjaGluZyB0YWJsZXNcbiAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FjdGl2ZVRhYmxlLCBhY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVRhYmxlLCBzZXRBY3RpdmVTY2hlbWEsIHNldFRhYmxlQW5kU2NoZW1hLCBzZXRQYWdlUGFyYW0sIHNldFNvcnRQYXJhbV0sXG4gICk7XG5cbiAgLy8gSGFuZGxlIHNjaGVtYSBjaGFuZ2VcbiAgY29uc3QgaGFuZGxlU2NoZW1hQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG5ld1NjaGVtYTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAobmV3U2NoZW1hICE9PSBhY3RpdmVTY2hlbWEpIHtcbiAgICAgICAgc2V0QWN0aXZlU2NoZW1hKG5ld1NjaGVtYSk7XG4gICAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoKHByZXYpID0+ICh7IC4uLnByZXYsIHNjaGVtYTogbmV3U2NoZW1hIH0pKTtcblxuICAgICAgICAvLyBJZiBhY3RpdmUgdGFibGUgaXMgbm90IGluIHRoZSBuZXcgc2NoZW1hLCBjbGVhciBpdFxuICAgICAgICBpZiAoYWN0aXZlVGFibGUgJiYgYWN0aXZlVGFibGUuc2NoZW1hICE9PSBuZXdTY2hlbWEpIHtcbiAgICAgICAgICBzZXRBY3RpdmVUYWJsZShudWxsKTtcbiAgICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKChwcmV2KSA9PiAoeyAuLi5wcmV2LCB0YWJsZTogbnVsbCB9KSk7XG4gICAgICAgICAgdm9pZCBzZXRQYWdlUGFyYW0obnVsbCk7XG4gICAgICAgICAgdm9pZCBzZXRTb3J0UGFyYW0obnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFthY3RpdmVTY2hlbWEsIGFjdGl2ZVRhYmxlLCBzZXRBY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVRhYmxlLCBzZXRUYWJsZUFuZFNjaGVtYSwgc2V0UGFnZVBhcmFtLCBzZXRTb3J0UGFyYW1dLFxuICApO1xuXG4gIC8vIFN5bmMgVVJMIHNjaGVtYSBwYXJhbWV0ZXIgd2l0aCBhY3RpdmVTY2hlbWEgZnJvbSBjb250ZXh0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gT25seSB1cGRhdGUgVVJMIGlmIHRoZSBzY2hlbWEgZnJvbSBVUkwgaXMgZGlmZmVyZW50IGZyb20gdGhlIGFjdGl2ZVNjaGVtYVxuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8uc2NoZW1hICE9PSBhY3RpdmVTY2hlbWEgJiYgIWlzTG9hZGluZykge1xuICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSgocHJldikgPT4gKHsgLi4ucHJldiwgc2NoZW1hOiBhY3RpdmVTY2hlbWEgfSkpO1xuICAgIH1cbiAgfSwgW2FjdGl2ZVNjaGVtYSwgdGFibGVBbmRTY2hlbWE/LnNjaGVtYSwgc2V0VGFibGVBbmRTY2hlbWEsIGlzTG9hZGluZ10pO1xuXG4gIC8vIEVuc3VyZSBzY2hlbWEgcGFyYW0gZXhpc3RzIGluIFVSTCBvbiBpbml0aWFsIGxvYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBJZiBzY2hlbWEgcGFyYW0gaXMgbWlzc2luZywgZW1wdHkgc3RyaW5nLCBvciBlbXB0eSwgYWRkIGl0IHdpdGggdGhlIGRlZmF1bHQgdmFsdWVcbiAgICBpZiAoKCF0YWJsZUFuZFNjaGVtYT8uc2NoZW1hIHx8IHRhYmxlQW5kU2NoZW1hLnNjaGVtYSA9PT0gXCJcIikgJiYgIWlzTG9hZGluZykge1xuICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSgocHJldikgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgc2NoZW1hOiBhY3RpdmVTY2hlbWEsXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCBbaXNMb2FkaW5nLCB0YWJsZUFuZFNjaGVtYT8uc2NoZW1hLCBhY3RpdmVTY2hlbWEsIHNldFRhYmxlQW5kU2NoZW1hXSk7XG5cbiAgLy8gU3luYyBhY3RpdmVTY2hlbWEgaW4gY29udGV4dCB3aXRoIFVSTCBzY2hlbWEgcGFyYW1ldGVyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVXBkYXRlIHRoZSBhY3RpdmVTY2hlbWEgaW4gY29udGV4dCB3aGVuIFVSTCBzY2hlbWEgcGFyYW0gY2hhbmdlc1xuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8uc2NoZW1hICYmIHRhYmxlQW5kU2NoZW1hLnNjaGVtYSAhPT0gYWN0aXZlU2NoZW1hKSB7XG4gICAgICBzZXRBY3RpdmVTY2hlbWEodGFibGVBbmRTY2hlbWEuc2NoZW1hKTtcbiAgICB9XG4gIH0sIFt0YWJsZUFuZFNjaGVtYT8uc2NoZW1hLCBhY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVNjaGVtYV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRhdGFVcGRhdGVkQXQgIT09IC0xKSB7XG4gICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQoe1xuICAgICAgICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIixcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIGV2ZW50X2lkOiB1dWlkdjQoKSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB0YWJsZV9jb3VudDogdG90YWxUYWJsZUNvdW50LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbdGFibGVzLCBlbWl0VGVsZW1ldHJ5RXZlbnQsIGRhdGFVcGRhdGVkQXQsIHRvdGFsVGFibGVDb3VudF0pO1xuXG4gIHJldHVybiB7XG4gICAgdGFibGVzLFxuICAgIGFjdGl2ZVRhYmxlLFxuICAgIGFjdGl2ZVNjaGVtYSxcbiAgICBpc0xvYWRpbmcsXG4gICAgaGFuZGxlVGFibGVDaGFuZ2UsXG4gICAgaGFuZGxlU2NoZW1hQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID0gLTE7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnRyb3NwZWN0aW9uKCkge1xuICBjb25zdCB7IGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgaW5pdGlhbERhdGE6IHtcbiAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgW2FkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcImRiXCJdOiB7XG4gICAgICAgICAgdGFibGVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aW1lem9uZTogXCJVVENcIixcbiAgICAgIGZpbHRlck9wZXJhdG9yczogW10sXG4gICAgfSBzYXRpc2ZpZXMgSW50cm9zcGVjdGlvbixcbiAgICBpbml0aWFsRGF0YVVwZGF0ZWRBdDogSU5JVElBTF9EQVRBX1VQREFURURfQVQsXG4gICAgcXVlcnlGbjogYXN5bmMgKHsgc2lnbmFsIH0pID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgaW50cm9zcGVjdGlvbl0gPSBhd2FpdCBhZGFwdGVyLmludHJvc3BlY3QoeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnRyb3NwZWN0aW9uO1xuICAgIH0sXG4gICAgcXVlcnlLZXk6IFtcImludHJvc3BlY3Rpb25cIl0sXG4gICAgLy8gaWYgaXMgaW5pdGlhbCBkYXRhLCByZWZldGNoIGltbWVkaWF0ZWx5LCBvdGhlcndpc2UsIG5ldmVyIHJlZmV0Y2ggYXV0b21hdGljYWxseSBpbiB0aGUgYmFja2dyb3VuZC5cbiAgICAvLyB3ZSBjYW4gc3RpbGwgcmVmZXRjaCBtYW51YWxseSB1c2luZyB0aGUgcXVlcnkgY2xpZW50IC0gcHJvYmFibHkgdHJpZ2dlcmVkIGJ5IGEgYnV0dG9uLlxuICAgIHN0YWxlVGltZTogKGN0eCkgPT4gKGN0eC5zdGF0ZS5kYXRhVXBkYXRlZEF0ID09PSBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA/IDAgOiBJbmZpbml0eSksXG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjRNQUFBLE9BQVMsbUJBQUFBLEdBQWlCLFVBQUFDLE9BQWMsZUNDeEMsT0FBMEIsUUFBQUMsT0FBWSxPQ3FCdEMsSUFBTUMsR0FBdUIsSUFFaEJDLEdBQXlCQyxHQUF5QixDQUMzRCxJQUFNQyxFQUFXQyxHQUFlRixDQUFNLEVBQ2hDLENBQUVHLHVCQUFBQSxFQUF3QkMsK0JBQUFBLENBQWdDLEVBQUdKLEVBMEJuRSxNQUFPLENBQ0hLLGdCQXpCcUJDLEdBQXFCLENBQzFDLElBQU1DLEVBQWFELEVBQVVFLE1BQU1WLEVBQW9CLEVBR3ZELE9BQUlTLEVBQVcsQ0FBQyxJQUFNLElBQU1BLEVBQVdFLFNBQVcsR0FDOUNGLEVBQVdHLE1BQUssRUFHYkMsR0FBa0JKLEVBQVlOLENBQVEsR0FBS1csR0FBK0JOLENBQVMsQ0FDOUYsRUFpQklPLDRCQWZnQ0EsQ0FDaENDLEVBQ0FDLElBQ0EsQ0FDQSxJQUFNQyxFQUFZYixFQUF1Qlcs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QUMsT0FBSSxVQUFVLG9HQUNiLFVBQUFELEdBQUNjLEdBQUEsQ0FBZ0IsS0FBSyxPQUNuQixTQUFBSixHQUNDVixHQUFDZSxHQUFPLElBQVAsQ0FDQyxRQUFTLENBQUUsTUFBTyxFQUFHLFFBQVMsQ0FBRSxFQUNoQyxRQUFTLENBQUUsTUFBTyxPQUFRLFFBQVMsQ0FBRSxFQUNyQyxLQUFNLENBQUUsTUFBTyxFQUFHLFFBQVMsQ0FBRSxFQUM3QixXQUFZLENBQUUsU0FBVSxHQUFLLEVBRTdCLFNBQUFmLEdBQUNnQixHQUFBLEVBQVcsRUFDZCxFQUVKLEVBRUFoQixHQUFDZSxHQUFPLElBQVAsQ0FDQyxVQUFVLDZJQUNWLFdBQVksQ0FBRSxTQUFVLEdBQUssRUFFN0IsU0FBQWYsR0FBQ2lCLEdBQUEsRUFBZ0IsRUFDbkIsR0FDRixFQUNGLENBRUoiLAogICJuYW1lcyI6IFsiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJjbHN4IiwgIkNMQVNTX1BBUlRfU0VQQVJBVE9SIiwgImNyZWF0ZUNsYXNzR3JvdXBVdGlscyIsICJjb25maWciLCAiY2xhc3NNYXAiLCAiY3JlYXRlQ2xhc3NNYXAiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAiZ2V0Q2xhc3NHcm91cElkIiwgImNsYXNzTmFtZSIsICJjbGFzc1BhcnRzIiwgInNwbGl0IiwgImxlbmd0aCIsICJzaGlmdCIsICJnZXRHcm91cFJlY3Vyc2l2ZSIsICJnZXRHcm91cElkRm9yQXJiaXRyYXJ5UHJvcGVydHkiLCAiZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzIiwgImNsYXNzR3JvdXBJZCIsICJoYXNQb3N0Zml4TW9kaWZpZXIiLCAiY29uZmxpY3RzIiwgImNsYXNzUGFydE9iamVjdCIsICJjdXJyZW50Q2xhc3NQYXJ0IiwgIm5leHRDbGFzc1BhcnRPYmplY3QiLCAibmV4dFBhcnQiLCAiZ2V0IiwgImNsYXNzR3JvdXBGcm9tTmV4dENsYXNzUGFydCIsICJzbGljZSIsICJ1bmRlZmluZWQiLCAidmFsaWRhdG9ycyIsICJjbGFzc1Jlc3QiLCAiam9pbiIsICJmaW5kIiwgInZhbGlkYXRvciIsICJhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4IiwgInRlc3QiLCAiYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUiLCAiZXhlYyIsICJwcm9wZXJ0eSIsICJzdWJzdHJpbmciLCAiaW5kZXhPZiIsICJ0aGVtZSIsICJwcmVmaXgiLCAiTWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMiLCAiZ2V0UHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJjbGFzc0dyb3VwcyIsICJmb3JFYWNoIiwgImNsYXNzR3JvdXAiLCAicHJvY2Vzc0NsYXNzZXNSZWN1cnNpdmVseSIsICJjbGFzc0RlZmluaXRpb24iLCAiY2xhc3NQYXJ0T2JqZWN0VG9FZGl0IiwgImdldFBhcnQiLCAiaXNUaGVtZUdldHRlciIsICJwdXNoIiwgImtleSIsICJwYXRoIiwgImN1cnJlbnRDbGFzc1BhcnRPYmplY3QiLCAicGF0aFBhcnQiLCAiaGFzIiwgInNldCIsICJmdW5jIiwgImNsYXNzR3JvdXBFbnRyaWVzIiwgIm1hcCIsICJwcmVmaXhlZENsYXNzR3JvdXAiLCAiZnJvbUVudHJpZXMiLCAidmFsdWUiLCAiY3JlYXRlTHJ1Q2FjaGUiLCAibWF4Q2FjaGVTaXplIiwgImNhY2hlU2l6ZSIsICJjYWNoZSIsICJwcmV2aW91c0NhY2hlIiwgInVwZGF0ZSIsICJJTVBPUlRBTlRfTU9ESUZJRVIiLCAiY3JlYXRlUGFyc2VDbGFzc05hbWUiLCAic2VwYXJhdG9yIiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImlzU2VwYXJhdG9yU2luZ2xlQ2hhcmFjdGVyIiwgImZpcnN0U2VwYXJhdG9yQ2hhcmFjdGVyIiwgInNlcGFyYXRvckxlbmd0aCIsICJwYXJzZUNsYXNzTmFtZSIsICJtb2RpZmllcnMiLCAiYnJhY2tldERlcHRoIiwgIm1vZGlmaWVyU3RhcnQiLCAicG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAiaW5kZXgiLCAiY3VycmVudENoYXJhY3RlciIsICJiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyIiwgImhhc0ltcG9ydGFudE1vZGlmaWVyIiwgInN0YXJ0c1dpdGgiLCAiYmFzZUNsYXNzTmFtZSIsICJtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIiwgInNvcnRNb2RpZmllcnMiLCAic29ydGVkTW9kaWZpZXJzIiwgInVuc29ydGVkTW9kaWZpZXJzIiwgIm1vZGlmaWVyIiwgInNvcnQiLCAiY3JlYXRlQ29uZmlnVXRpbHMiLCAiU1BMSVRfQ0xBU1NFU19SRUdFWCIsICJtZXJnZUNsYXNzTGlzdCIsICJjbGFzc0xpc3QiLCAiY29uZmlnVXRpbHMiLCAiY2xhc3NHcm91cHNJbkNvbmZsaWN0IiwgImNsYXNzTmFtZXMiLCAidHJpbSIsICJyZXN1bHQiLCAib3JpZ2luYWxDbGFzc05hbWUiLCAiQm9vbGVhbiIsICJ2YXJpYW50TW9kaWZpZXIiLCAibW9kaWZpZXJJZCIsICJjbGFzc0lkIiwgImluY2x1ZGVzIiwgImNvbmZsaWN0R3JvdXBzIiwgImkiLCAiZ3JvdXAiLCAidHdKb2luIiwgImFyZ3VtZW50IiwgInJlc29sdmVkVmFsdWUiLCAic3RyaW5nIiwgImFyZ3VtZW50cyIsICJ0b1ZhbHVlIiwgIm1peCIsICJrIiwgImNyZWF0ZVRhaWx3aW5kTWVyZ2UiLCAiY3JlYXRlQ29uZmlnRmlyc3QiLCAiY3JlYXRlQ29uZmlnUmVzdCIsICJjYWNoZUdldCIsICJjYWNoZVNldCIsICJmdW5jdGlvblRvQ2FsbCIsICJpbml0VGFpbHdpbmRNZXJnZSIsICJyZWR1Y2UiLCAicHJldmlvdXNDb25maWciLCAiY3JlYXRlQ29uZmlnQ3VycmVudCIsICJ0YWlsd2luZE1lcmdlIiwgImNhY2hlZFJlc3VsdCIsICJhcHBseSIsICJmcm9tVGhlbWUiLCAidGhlbWVHZXR0ZXIiLCAiYXJiaXRyYXJ5VmFsdWVSZWdleCIsICJmcmFjdGlvblJlZ2V4IiwgInN0cmluZ0xlbmd0aHMiLCAiU2V0IiwgInRzaGlydFVuaXRSZWdleCIsICJsZW5ndGhVbml0UmVnZXgiLCAiY29sb3JGdW5jdGlvblJlZ2V4IiwgInNoYWRvd1JlZ2V4IiwgImltYWdlUmVnZXgiLCAiaXNMZW5ndGgiLCAiaXNOdW1iZXIiLCAiaXNBcmJpdHJhcnlMZW5ndGgiLCAiZ2V0SXNBcmJpdHJhcnlWYWx1ZSIsICJpc0xlbmd0aE9ubHkiLCAiTnVtYmVyIiwgImlzTmFOIiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgImlzSW50ZWdlciIsICJpc1BlcmNlbnQiLCAiZW5kc1dpdGgiLCAiaXNBcmJpdHJhcnlWYWx1ZSIsICJpc1RzaGlydFNpemUiLCAic2l6ZUxhYmVscyIsICJpc0FyYml0cmFyeVNpemUiLCAiaXNOZXZlciIsICJpc0FyYml0cmFyeVBvc2l0aW9uIiwgImltYWdlTGFiZWxzIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiaXNJbWFnZSIsICJpc0FyYml0cmFyeVNoYWRvdyIsICJpc1NoYWRvdyIsICJpc0FueSIsICJsYWJlbCIsICJ0ZXN0VmFsdWUiLCAiZ2V0RGVmYXVsdENvbmZpZyIsICJjb2xvcnMiLCAiZnJvbVRoZW1lIiwgInNwYWNpbmciLCAiYmx1ciIsICJicmlnaHRuZXNzIiwgImJvcmRlckNvbG9yIiwgImJvcmRlclJhZGl1cyIsICJib3JkZXJTcGFjaW5nIiwgImJvcmRlcldpZHRoIiwgImNvbnRyYXN0IiwgImdyYXlzY2FsZSIsICJodWVSb3RhdGUiLCAiaW52ZXJ0IiwgImdhcCIsICJncmFkaWVudENvbG9yU3RvcHMiLCAiZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMiLCAiaW5zZXQiLCAibWFyZ2luIiwgIm9wYWNpdHkiLCAicGFkZGluZyIsICJzYXR1cmF0ZSIsICJzY2FsZSIsICJzZXBpYSIsICJza2V3IiwgInNwYWNlIiwgInRyYW5zbGF0ZSIsICJnZXRPdmVyc2Nyb2xsIiwgImdldE92ZXJmbG93IiwgImdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc0FyYml0cmFyeVZhbHVlIiwgImdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5IiwgImdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSIsICJpc0xlbmd0aCIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSIsICJpc051bWJlciIsICJnZXRQb3NpdGlvbnMiLCAiZ2V0TGluZVN0eWxlcyIsICJnZXRCbGVuZE1vZGVzIiwgImdldEFsaWduIiwgImdldFplcm9BbmRFbXB0eSIsICJnZXRCcmVha3MiLCAiZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5IiwgImNhY2hlU2l6ZSIsICJzZXBhcmF0b3IiLCAidGhlbWUiLCAiaXNBbnkiLCAiaXNUc2hpcnRTaXplIiwgImlzUGVyY2VudCIsICJjbGFzc0dyb3VwcyIsICJhc3BlY3QiLCAiY29udGFpbmVyIiwgImNvbHVtbnMiLCAiYm94IiwgImRpc3BsYXkiLCAiZmxvYXQiLCAiY2xlYXIiLCAiaXNvbGF0aW9uIiwgIm9iamVjdCIsICJvdmVyZmxvdyIsICJvdmVyc2Nyb2xsIiwgInBvc2l0aW9uIiwgInN0YXJ0IiwgImVuZCIsICJ0b3AiLCAicmlnaHQiLCAiYm90dG9tIiwgImxlZnQiLCAidmlzaWJpbGl0eSIsICJ6IiwgImlzSW50ZWdlciIsICJiYXNpcyIsICJmbGV4IiwgImdyb3ciLCAic2hyaW5rIiwgIm9yZGVyIiwgImNvbCIsICJzcGFuIiwgInJvdyIsICJqdXN0aWZ5IiwgImNvbnRlbnQiLCAiaXRlbXMiLCAic2VsZiIsICJwIiwgInB4IiwgInB5IiwgInBzIiwgInBlIiwgInB0IiwgInByIiwgInBiIiwgInBsIiwgIm0iLCAibXgiLCAibXkiLCAibXMiLCAibWUiLCAibXQiLCAibXIiLCAibWIiLCAibWwiLCAidyIsICJzY3JlZW4iLCAiaCIsICJzaXplIiwgInRleHQiLCAiZm9udCIsICJpc0FyYml0cmFyeU51bWJlciIsICJ0cmFja2luZyIsICJsZWFkaW5nIiwgImxpc3QiLCAicGxhY2Vob2xkZXIiLCAiZGVjb3JhdGlvbiIsICJpbmRlbnQiLCAiYWxpZ24iLCAid2hpdGVzcGFjZSIsICJicmVhayIsICJoeXBoZW5zIiwgImJnIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAicmVwZWF0IiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc0FyYml0cmFyeUltYWdlIiwgImZyb20iLCAidmlhIiwgInRvIiwgInJvdW5kZWQiLCAiYm9yZGVyIiwgImRpdmlkZSIsICJvdXRsaW5lIiwgInJpbmciLCAic2hhZG93IiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImZpbHRlciIsICJ0YWJsZSIsICJjYXB0aW9uIiwgInRyYW5zaXRpb24iLCAiZHVyYXRpb24iLCAiZWFzZSIsICJkZWxheSIsICJhbmltYXRlIiwgInRyYW5zZm9ybSIsICJyb3RhdGUiLCAib3JpZ2luIiwgImFjY2VudCIsICJhcHBlYXJhbmNlIiwgImN1cnNvciIsICJjYXJldCIsICJyZXNpemUiLCAic2Nyb2xsIiwgInNuYXAiLCAidG91Y2giLCAic2VsZWN0IiwgImZpbGwiLCAic3Ryb2tlIiwgInNyIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cHMiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIiwgIm1lcmdlQ29uZmlncyIsICJiYXNlQ29uZmlnIiwgInByZWZpeCIsICJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsICJleHRlbmQiLCAib3ZlcnJpZGUiLCAib3ZlcnJpZGVQcm9wZXJ0eSIsICJjb25maWdLZXkiLCAib3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzIiwgImtleSIsICJtZXJnZUNvbmZpZ1Byb3BlcnRpZXMiLCAiYmFzZU9iamVjdCIsICJvdmVycmlkZUtleSIsICJvdmVycmlkZVZhbHVlIiwgInVuZGVmaW5lZCIsICJvdmVycmlkZU9iamVjdCIsICJtZXJnZU9iamVjdCIsICJtZXJnZVZhbHVlIiwgImNvbmNhdCIsICJleHRlbmRUYWlsd2luZE1lcmdlIiwgImNvbmZpZ0V4dGVuc2lvbiIsICJjcmVhdGVDb25maWciLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJ0d01lcmdlIiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY24iLCAiaW5wdXRzIiwgImNsc3giLCAidXNlSXNNdXRhdGluZyIsICJ0b0tlYmFiQ2FzZSIsICJzdHJpbmciLCAibWVyZ2VDbGFzc2VzIiwgImNsYXNzZXMiLCAiY2xhc3NOYW1lIiwgImluZGV4IiwgImFycmF5IiwgImRlZmF1bHRBdHRyaWJ1dGVzIiwgIkljb24iLCAiZm9yd2FyZFJlZiIsICJjb2xvciIsICJzaXplIiwgInN0cm9rZVdpZHRoIiwgImFic29sdXRlU3Ryb2tlV2lkdGgiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgImljb25Ob2RlIiwgInJlc3QiLCAicmVmIiwgImNyZWF0ZUVsZW1lbnQiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAibWVyZ2VDbGFzc2VzIiwgInRhZyIsICJhdHRycyIsICJjcmVhdGVMdWNpZGVJY29uIiwgImljb25OYW1lIiwgImljb25Ob2RlIiwgIkNvbXBvbmVudCIsICJmb3J3YXJkUmVmIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJJY29uIiwgIm1lcmdlQ2xhc3NlcyIsICJ0b0tlYmFiQ2FzZSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGVjayIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25Eb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uUmlnaHQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uVXAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc0xlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uc1JpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2lyY2xlSGVscCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNvcHkiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3JuZXJEb3duTGVmdCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkZpbHRlciIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkdyaXBWZXJ0aWNhbCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIktleVJvdW5kIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWF4aW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNaW5pbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVEb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZVVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRPcGVuIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluT2ZmIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGluIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUmVmcmVzaEN3IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiVGFibGUyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiWCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInRvYXN0IiwgImN2YSIsICJqc3giLCAiYmFkZ2VWYXJpYW50cyIsICJjdmEiLCAiQmFkZ2UiLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAicHJvcHMiLCAiY24iLCAiU2xvdCIsICJjdmEiLCAiUmVhY3QiLCAianN4IiwgImJ1dHRvblZhcmlhbnRzIiwgImN2YSIsICJCdXR0b24iLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAic2l6ZSIsICJhc0NoaWxkIiwgInByb3BzIiwgInJlZiIsICJTbG90IiwgImNuIiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiY2xhc3NOYW1lIiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImpzeCIsICJjbiIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudFByb3ZpZGVyIiwgIlJlYWN0IiwgIm9ubGluZU1hbmFnZXIiLCAidXNlUXVlcnlDbGllbnQiLCAiVGFuc3RhY2tRdWVyeURldnRvb2xzIiwgIiNjbGllbnQiLCAiI29ubGluZU1hbmFnZXIiLCAiI3F1ZXJ5Rmxhdm9yIiwgIiN2ZXJzaW9uIiwgIiNpc01vdW50ZWQiLCAiI3N0eWxlTm9uY2UiLCAiI3NoYWRvd0RPTVRhcmdldCIsICIjYnV0dG9uUG9zaXRpb24iLCAiI3Bvc2l0aW9uIiwgIiNpbml0aWFsSXNPcGVuIiwgIiNlcnJvclR5cGVzIiwgIiNDb21wb25lbnQiLCAiI2Rpc3Bvc2UiLCAiY29uZmlnIiwgImNsaWVudCIsICJxdWVyeUZsYXZvciIsICJ2ZXJzaW9uIiwgIm9ubGluZU1hbmFnZXIiLCAiYnV0dG9uUG9zaXRpb24iLCAicG9zaXRpb24iLCAiaW5pdGlhbElzT3BlbiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImNyZWF0ZVNpZ25hbCIsICJpc09wZW4iLCAiZWwiLCAiZGlzcG9zZSIsICJyZW5kZXIiLCAiX3NlbGYkIiwgImJ0blBvc2l0aW9uIiwgInBvcyIsICJlcnJvcnMiLCAicXVlcnlDbGllbnQiLCAiRGV2dG9vbHMiLCAibGF6eSIsICJzZXR1cFN0eWxlU2hlZXQiLCAiY3JlYXRlQ29tcG9uZW50IiwgIm1lcmdlUHJvcHMiLCAiVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwiLCAiI29uQ2xvc2UiLCAib25DbG9zZSIsICJqc3giLCAiUmVhY3RRdWVyeURldnRvb2xzIiwgInByb3BzIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInJlZiIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJpbml0aWFsSXNPcGVuIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiZGV2dG9vbHMiLCAiVGFuc3RhY2tRdWVyeURldnRvb2xzIiwgIm9ubGluZU1hbmFnZXIiLCAiUmVhY3QiLCAib25saW5lTWFuYWdlciIsICJ1c2VRdWVyeUNsaWVudCIsICJqc3giLCAiUmVhY3RRdWVyeURldnRvb2xzUGFuZWwiLCAicHJvcHMiLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicmVmIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiZGV2dG9vbHMiLCAiVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwiLCAib25saW5lTWFuYWdlciIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMiLCAiUmVhY3RRdWVyeURldnRvb2xzUGFuZWwiLCAiY3JlYXRlQ29udGV4dCIsICJ1c2VDb250ZXh0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAidG9hc3QiLCAiU29ubmVyIiwgImpzeCIsICJUb2FzdGVyIiwgInByb3BzIiwgImNyZWF0ZUFkYXB0ZXJQcm92aWRlciIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlSGFzaEFkYXB0ZXIiLCAicmF3SGFzaCIsICJoYXNoUGFyYW1zIiwgInNldEhhc2hQYXJhbXMiLCAidXBkYXRlVXJsIiwgInVwZGF0ZWQiLCAiaGlzdG9yeSIsICJwYXRobmFtZSIsICJzZWFyY2giLCAiaGFzaCIsICJ1cmwiLCAiZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QiLCAicmF3IiwgImhhbmRsZUhhc2hDaGFuZ2UiLCAiTnVxc0hhc2hBZGFwdGVyIiwgImpzeCIsICJqc3hzIiwgInF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50IiwgIlN0dWRpb0NvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJTdHVkaW9Db250ZXh0UHJvdmlkZXIiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAib3RoZXJQcm9wcyIsICJhY3RpdmVUYWJsZSIsICJzZXRBY3RpdmVUYWJsZSIsICJ1c2VTdGF0ZSIsICJhY3RpdmVTY2hlbWEiLCAic2V0QWN0aXZlU2NoZW1hIiwgImlzRnVsbHNjcmVlbiIsICJzZXRJc0Z1bGxzY3JlZW4iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJzZXRJc05hdmlnYXRpb25PcGVuIiwgIm9uRXJyb3IiLCAiZXJyb3IiLCAidG9hc3QiLCAiZW1pdFRlbGVtZXRyeUV2ZW50IiwgInVzZU1lbW8iLCAidG9nZ2xlRnVsbHNjcmVlbiIsICJwcmV2IiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiUXVlcnlDbGllbnRQcm92aWRlciIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMyIiwgIlRvYXN0ZXIiLCAiTnVxc0hhc2hBZGFwdGVyIiwgInVzZVN0dWRpbyIsICJjb250ZXh0IiwgInVzZUNvbnRleHQiLCAiZ2V0Um93SWQiLCAicm93IiwgInRhYmxlIiwgImlkIiwgImluZmVyUm93RmlsdGVyIiwgImFkZFJvd0lkVG9Sb3ciLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJyZXN1bHQiLCAicm93cyIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJuZXdEYXRhIiwgIm9sZERhdGEiLCAidXNlUXVlcnkiLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJwcm9wcyIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic29ydE9yZGVyIiwgImZpbHRlciIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJwcmV2aW91c0RhdGEiLCAicHJldmlvdXNRdWVyeSIsICJzY2hlbWEiLCAidGFibGUiLCAic2lnbmFsIiwgImVycm9yIiwgInJlc3VsdHMiLCAiYWRkUm93SWRUb1Jlc3VsdCIsICJpdGVtIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicXVlcnlLZXlQcmVmaXgiLCAidXNlTXV0YXRpb24iLCAicGFyYW1zIiwgImVycm9yIiwgInJlc3VsdCIsICJjaGFuZ2VzIiwgInJvdyIsICJvdmVyd3JpdGVDYWNoZWRSb3ciLCAiY2hhbmdlZFJvdyIsICJyb3dGaWx0ZXIiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiY2FjaGVkUm93IiwgImNvbHVtbk5hbWUiLCAidmFsdWUiLCAib3JpZ2luYWxWYWx1ZXMiLCAiZGV0YWlscyIsICJ1bmNoYW5nZWRSb3ciLCAiX19wc191cGRhdGVkX2F0X18iLCAiZ2V0RmluZGVyRm4iLCAidGFibGUiLCAidXBkYXRlckZuIiwgImZpbmRlciIsICJjYWNoZWRSZXN1bHQiLCAiY2FjaGVkUm93cyIsICJjYWNoZWRSb3dJbmRleCIsICJuZXdSb3ciLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAic2hvcnQiLCAibnVxc19leHBvcnRzIiwgIl9fZXhwb3J0IiwgImtleU1hcCIsICJ1cmxLZXlzIiwgInVzZVF1ZXJ5U3RhdGUiLCAidXNlUXVlcnlTdGF0ZXMiLCAiX19yZUV4cG9ydCIsICJudXFzX2V4cG9ydHMiLCAibnVxc19zdGFyIiwgInVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCIsICJ1c2VRdWVyeVN0YXRlc09yaWdpbmFsIiwgImtleU1hcCIsICJ1cmxLZXlzIiwgIl9CUkFORF9TWU1CT0wiLCAidXNlUXVlcnlTdGF0ZSIsICJrZXkiLCAib3B0aW9ucyIsICJ1c2VRdWVyeVN0YXRlcyIsICJkZWZhdWx0RmlsdGVyIiwgInNob3J0IiwgImNvdW50RmlsdGVyc1JlY3Vyc2l2ZSIsICJmaWx0ZXJHcm91cCIsICJjb3VudCIsICJmaWx0ZXIiLCAidXNlRmlsdGVyaW5nIiwgImZpbHRlclBhcmFtIiwgInNldEZpbHRlclBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJ1c2VNZW1vIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiZWRpdGluZ0ZpbHRlciIsICJzZXRFZGl0aW5nRmlsdGVyIiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUlzTXV0YXRpbmciLCAidXNlSXNJbnNlcnRpbmciLCAibXV0YXRpb25LZXkiLCAidXNlQ2FsbGJhY2siLCAiREVGQVVMVF9QQUdFX1NJWkUiLCAicGFnaW5hdGlvblBhcnNlcnMiLCAidXNlUGFnaW5hdGlvbiIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic2V0UGFnaW5hdGlvbiIsICJ1c2VRdWVyeVN0YXRlcyIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlQ2FsbGJhY2siLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgIm5ld1N0YXRlIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAidXNlU2VsZWN0aW9uIiwgImRhdGEiLCAiYWN0aXZlVGFibGUiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicGFnaW5hdGlvblN0YXRlIiwgInVzZVBhZ2luYXRpb24iLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU3RhdGUiLCAiaXNTZWxlY3RpbmciLCAibXV0YXRlIiwgInVzZUFjdGl2ZVRhYmxlRGVsZXRlIiwgInVzZUVmZmVjdCIsICJkZWxldGVTZWxlY3Rpb24iLCAicm93cyIsICJyb3ciLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZVNvcnRpbmciLCAic29ydFBhcmFtIiwgInNldFNvcnRQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgInBhcnNlU29ydGluZyIsICJpdGVtIiwgImNvbHVtbiIsICJkaXJlY3Rpb24iLCAiZSIsICJzb3J0aW5nU3RhdGUiLCAic2V0U29ydGluZ1N0YXRlIiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJuZXdTb3J0aW5nU3RhdGUiLCAibmV3U3RhdGUiLCAicmVzb2x2ZWRTdGF0ZSIsICJzb3J0U3RyaW5nIiwgImlzT2JqZWN0VHlwZSIsICJmb3J3YXJkUmVmIiwgIlJlYWN0IiwgImpzeCIsICJUYWJsZSIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlRhYmxlSGVhZGVyIiwgIlRhYmxlQm9keSIsICJUYWJsZUZvb3RlciIsICJUYWJsZVJvdyIsICJUYWJsZUhlYWQiLCAiVGFibGVDZWxsIiwgIlRhYmxlQ2FwdGlvbiIsICJpc1ZhbGlkRWxlbWVudCIsICJDb250ZXh0TWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkNvbnRleHRNZW51U3ViQ29udGVudCIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgIkNvbnRleHRNZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiQ29udGV4dE1lbnVSYWRpb0l0ZW0iLCAiQ2lyY2xlIiwgIkNvbnRleHRNZW51TGFiZWwiLCAiQ29udGV4dE1lbnVTZXBhcmF0b3IiLCAiQ29udGV4dE1lbnVTaG9ydGN1dCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJjb250ZW50IiwgImV4dHJhY3RUZXh0Q29udGVudCIsICJlcnJvciIsICJDb3B5IiwgIm5vZGUiLCAiaXNWYWxpZEVsZW1lbnQiLCAianN4IiwgIkNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgInJlZiIsICJzdHlsZSIsICJmb3J3YXJkZWRQcm9wcyIsICJUYWJsZUNlbGwiLCAiY24iLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAianN4IiwgIkJvb2xlYW5DZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRGF0ZUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJFbXB0eUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJFbnVtQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJvcHRpb25zIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiSlNPTkNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJOdWxsQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIk51bWVyaWNDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiUmF3Q2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIlRpbWVDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAianN4IiwgImdldENlbGwiLCAiY2VsbCIsICJjb2x1bW4iLCAicHJvcHMiLCAidmFsdWUiLCAiRW1wdHlDZWxsIiwgIk51bGxDZWxsIiwgImdyb3VwIiwgIm9wdGlvbnMiLCAiaXNBcnJheSIsICJKU09OQ2VsbCIsICJSYXdDZWxsIiwgIkVudW1DZWxsIiwgIkJvb2xlYW5DZWxsIiwgIkRhdGVDZWxsIiwgIlRpbWVDZWxsIiwgIk51bWVyaWNDZWxsIiwgImlzT2JqZWN0VHlwZSIsICJmb3J3YXJkUmVmIiwgIkNoZWNrYm94UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJDaGVja2JveCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIkNoZWNrIiwgImpzeCIsICJTZWxlY3RIZWFkZXJDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgInRhYmxlIiwgInJlYWRvbmx5IiwgImNsYXNzTmFtZSIsICJzdHlsZSIsICJyZXN0IiwgIkNoZWNrYm94IiwgInZhbHVlIiwgImZvcndhcmRSZWYiLCAiRnJhZ21lbnQiLCAianN4IiwgIlNlbGVjdENlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgInJlZiIsICJzdHlsZSIsICJpc0hlYWRlciIsICJmb3J3YXJkZWRQcm9wcyIsICJzZWxlY3RDbGFzc2VzIiwgImNuIiwgIlRhYmxlSGVhZCIsICJUYWJsZUNlbGwiLCAianN4IiwgIlNlbGVjdFJvd0NlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAicm93IiwgInJlYWRvbmx5IiwgImNsYXNzTmFtZSIsICJzdHlsZSIsICJyZXN0IiwgIlNlbGVjdENlbGwiLCAiQ2hlY2tib3giLCAiUG9wb3ZlclByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiUG9wb3ZlckNlbGxDb250ZXh0IiwgIlBvcG92ZXJDZWxsIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIm9wZW4iLCAic2V0T3BlbiIsICJQb3BvdmVyQ2VsbFRyaWdnZXIiLCAib25Eb3VibGVDbGljayIsICJjbGFzc05hbWUiLCAicmVmIiwgInRyaWdnZXJSZWYiLCAibm9kZSIsICJjbiIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiYWxpZ24iLCAic2lkZU9mZnNldCIsICJldmVudCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJhY3Rpb25zIiwgImNvbnRleHQiLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAiaGFuZGxlS2V5RG93biIsICJqc3giLCAianN4cyIsICJXcml0ZWFibGVDZWxsIiwgInByb3BzIiwgImNlbGxDb21wb25lbnQiLCAiaW5wdXRDb21wb25lbnQiLCAiUG9wb3ZlckNlbGwiLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIlBvcG92ZXJDZWxsQ29udGVudCIsICJjbiIsICJjbG9zZXN0Q2VudGVyIiwgIkRuZENvbnRleHQiLCAiRHJhZ092ZXJsYXkiLCAiS2V5Ym9hcmRTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJ1c2VTZW5zb3IiLCAidXNlU2Vuc29ycyIsICJhcnJheU1vdmUiLCAiU29ydGFibGVDb250ZXh0IiwgInNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyIsICJ1c2VTb3J0YWJsZSIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiQ1NTIiwgIm1vdGlvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAiY3JlYXRlUG9ydGFsIiwgInNob3J0IiwgImNvZXJjZVRvVmFsdWUiLCAiY29sdW1uIiwgIm9wZXJhdG9yIiwgInZhbHVlIiwgImRhdGFUeXBlR3JvdXAiLCAiY29lcmNlVG9TdHJpbmciLCAiRHJvcGRvd25NZW51UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkRyb3Bkb3duTWVudVN1YlRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImluc2V0IiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uUmlnaHQiLCAiRHJvcGRvd25NZW51U3ViQ29udGVudCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgInNpZGVPZmZzZXQiLCAiRHJvcGRvd25NZW51SXRlbSIsICJEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0iLCAiY2hlY2tlZCIsICJDaGVjayIsICJEcm9wZG93bk1lbnVSYWRpb0l0ZW0iLCAiQ2lyY2xlIiwgIkRyb3Bkb3duTWVudUxhYmVsIiwgIkRyb3Bkb3duTWVudVNlcGFyYXRvciIsICJEcm9wZG93bk1lbnVTaG9ydGN1dCIsICJSZWFjdCIsICJqc3giLCAiSW5wdXQiLCAiY2xhc3NOYW1lIiwgInR5cGUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlNlbGVjdFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJTZWxlY3QiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0VHJpZ2dlciIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAibGFiZWwiLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25Eb3duIiwgIlNlbGVjdFNjcm9sbFVwQnV0dG9uIiwgIkNoZXZyb25VcCIsICJTZWxlY3RTY3JvbGxEb3duQnV0dG9uIiwgIlNlbGVjdENvbnRlbnQiLCAicG9zaXRpb24iLCAiU2VsZWN0TGFiZWwiLCAiU2VsZWN0SXRlbSIsICJDaGVjayIsICJTZWxlY3RTZXBhcmF0b3IiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiTGVhZGluZ09wZXJhdG9yU2VsZWN0IiwgInZhbHVlIiwgIm9uVmFsdWVDaGFuZ2UiLCAiZGlzYWJsZWQiLCAidHJpZ2dlckNsYXNzTmFtZSIsICJTZWxlY3QiLCAiU2VsZWN0VHJpZ2dlciIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RDb250ZW50IiwgIlNlbGVjdEl0ZW0iLCAiRHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXciLCAiYWN0aXZlSWQiLCAiaXRlbXMiLCAidGFibGUiLCAiYWN0aXZlSXRlbSIsICJpdGVtIiwgImxlYWRpbmdPcGVyYXRvclZhbHVlIiwgInNob3dMZWFkaW5nT3BGb3JPdmVybGF5IiwgImFjdGl2ZUl0ZW1JbmRleCIsICJwcmV2aW91c0l0ZW0iLCAiRmlsdGVyQ29uZGl0aW9uIiwgIkZpbHRlckdyb3VwQ29tcG9uZW50IiwgIkZpbHRlckxpc3RJdGVtcyIsICJwYXJlbnRHcm91cElkIiwgIm9uVXBkYXRlSXRlbSIsICJvbkRlbGV0ZUl0ZW0iLCAib25SZW9yZGVySXRlbXMiLCAiYWN0aXZlRHJhZ0lkIiwgIm9uRHJhZ1N0YXJ0IiwgIm9uRHJhZ0VuZFNpZ25hbCIsICJzb3J0YWJsZUl0ZW1JZHMiLCAidXNlTWVtbyIsICJzZW5zb3JzIiwgInVzZVNlbnNvcnMiLCAidXNlU2Vuc29yIiwgIlBvaW50ZXJTZW5zb3IiLCAiS2V5Ym9hcmRTZW5zb3IiLCAic29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwgIkRuZENvbnRleHQiLCAiY2xvc2VzdENlbnRlciIsICJldmVudCIsICJhY3RpdmUiLCAib3ZlciIsICJvbGRJbmRleCIsICJuZXdJbmRleCIsICJTb3J0YWJsZUNvbnRleHQiLCAidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgImN1cnJlbnRGaWx0ZXJJdGVtIiwgImluZGV4IiwgInNob3dMZWFkaW5nT3AiLCAibGVhZGluZ09wVmFsIiwgIm9uTGVhZGluZ09wQ2hhbmdlRm4iLCAiaXNMZWFkaW5nT3BUYXJnZXRMYXN0IiwgInByZXZJdGVtIiwgIm5ld1ZhbHVlIiwgInVwZGF0ZWRQcmV2SXRlbSIsICJTb3J0YWJsZUZpbHRlckl0ZW0iLCAidXBkYXRlZEZpbHRlciIsICJjcmVhdGVQb3J0YWwiLCAiRHJhZ092ZXJsYXkiLCAiZmlsdGVyIiwgIm9uVXBkYXRlIiwgIm9uRGVsZXRlIiwgInBhcmVudERuZElkIiwgInNob3dMZWFkaW5nT3BlcmF0b3IiLCAib25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UiLCAiaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0IiwgImF0dHJpYnV0ZXMiLCAibGlzdGVuZXJzIiwgInNldE5vZGVSZWYiLCAidHJhbnNmb3JtIiwgInRyYW5zaXRpb24iLCAiaXNEcmFnZ2luZyIsICJ1c2VTb3J0YWJsZSIsICJzdHlsZSIsICJDU1MiLCAiZHJhZ0hhbmRsZVByb3BzIiwgImhhbmRsZUNvbHVtbkNoYW5nZSIsICJoYW5kbGVPcGVyYXRvckNoYW5nZSIsICJoYW5kbGVWYWx1ZUNoYW5nZSIsICJlIiwgInJhd1ZhbHVlIiwgImNvbHVtbkluZm8iLCAiY29lcmNlVG9WYWx1ZSIsICJlZGl0ZWRWYWx1ZSIsICJzZXRFZGl0ZWRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJjb2VyY2VUb1N0cmluZyIsICJtb3Rpb24iLCAiR3JpcFZlcnRpY2FsIiwgImNvbHVtbiIsICJJbnB1dCIsICJCdXR0b24iLCAiWCIsICJncm91cCIsICJpc1Jvb3QiLCAiaXNFeHBhbmRlZCIsICJzZXRJc0V4cGFuZGVkIiwgInNldEFjdGl2ZURyYWdJZCIsICJoYW5kbGVBZGRGaWx0ZXIiLCAibmV3RmlsdGVyIiwgInNob3J0IiwgImhhbmRsZUFkZEdyb3VwIiwgIm5ld0dyb3VwIiwgInVwZGF0ZUl0ZW1Jbkdyb3VwIiwgInVwZGF0ZWRGaWx0ZXJPckdyb3VwIiwgIm5ld0ZpbHRlcnMiLCAiZGVsZXRlSXRlbUZyb21Hcm91cCIsICJoYW5kbGVEcmFnU3RhcnQiLCAiaGFuZGxlRHJhZ0VuZFNpZ25hbCIsICJoYW5kbGVSZW9yZGVySXRlbXMiLCAicmVvcmRlcmVkRmlsdGVycyIsICJhcnJheU1vdmUiLCAicmVuZGVyR3JvdXBDb250ZW50IiwgImNuIiwgIkNoZXZyb25Eb3duIiwgIkNoZXZyb25SaWdodCIsICJCYWRnZSIsICJBbmltYXRlTnVtYmVyIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkNpcmNsZUhlbHAiLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJRdWVyeVZpc3VhbGl6ZXIiLCAiaXNBbmRHcm91cE9wZW4iLCAiZiIsICJpIiwgInJlc3VsdCIsICJpc0xhc3QiLCAib3BlcmF0b3IiLCAiRmlsdGVyVHJlZSIsICJzZXRGaWx0ZXIiLCAic2V0QXBwbGllZEZpbHRlciIsICJEbmRDb250ZXh0IiwgIk1vdXNlU2Vuc29yIiwgInVzZVNlbnNvciIsICJ1c2VTZW5zb3JzIiwgImFycmF5TW92ZSIsICJob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJTb3J0YWJsZUNvbnRleHQiLCAidXNlU29ydGFibGUiLCAiQ1NTIiwgImdldENvcmVSb3dNb2RlbCIsICJ1c2VSZWFjdFRhYmxlIiwgImdldEl0ZW0iLCAia2V5IiwgIml0ZW1WYWx1ZSIsICJsb2NhbFN0b3JhZ2UiLCAiSlNPTiIsICJwYXJzZSIsICJ1c2VMb2NhbFN0b3JhZ2UiLCAiZGVmYXVsdFZhbHVlIiwgInZhbHVlIiwgInNldFZhbHVlIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJpbml0aWFsVmFsdWUiLCAic2V0dGVyIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXIiLCAib2xkIiwgIm5ld1ZhbCIsICJzZXRJdGVtIiwgInN0cmluZ2lmeSIsICJkZWZhdWx0VGhlbWUiLCAiYmFja2dyb3VuZCIsICJiYWNrZ3JvdW5kQWx0IiwgImZvcmVncm91bmQiLCAiZ3JheSIsICJncmF5QWx0IiwgImlucHV0QmFja2dyb3VuZENvbG9yIiwgImlucHV0VGV4dENvbG9yIiwgInN1Y2Nlc3MiLCAiZGFuZ2VyIiwgImFjdGl2ZSIsICJ3YXJuaW5nIiwgIlRoZW1lQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlRoZW1lUHJvdmlkZXIiLCAiX3JlZiIsICJ0aGVtZSIsICJyZXN0IiwgImNyZWF0ZUVsZW1lbnQiLCAiUHJvdmlkZXIiLCAiX2V4dGVuZHMiLCAidXNlVGhlbWUiLCAidXNlQ29udGV4dCIsICJ1c2VNZWRpYVF1ZXJ5IiwgInF1ZXJ5IiwgImlzTWF0Y2giLCAic2V0SXNNYXRjaCIsICJ3aW5kb3ciLCAibWF0Y2hNZWRpYSIsICJtYXRjaGVzIiwgIm1hdGNoZXIiLCAib25DaGFuZ2UiLCAiYWRkTGlzdGVuZXIiLCAicmVtb3ZlTGlzdGVuZXIiLCAiaXNTZXJ2ZXIiLCAic3R5bGVkIiwgInR5cGUiLCAibmV3U3R5bGVzIiwgInF1ZXJpZXMiLCAiZm9yd2FyZFJlZiIsICJyZWYiLCAic3R5bGUiLCAibWVkaWFTdHlsZXMiLCAiT2JqZWN0IiwgImVudHJpZXMiLCAicmVkdWNlIiwgImN1cnJlbnQiLCAiX3JlZjIiLCAidXNlSXNNb3VudGVkIiwgIm1vdW50ZWRSZWYiLCAidXNlUmVmIiwgImlzTW91bnRlZCIsICJQYW5lbCIsICJfcHJvcHMiLCAiZm9udFNpemUiLCAiZm9udEZhbWlseSIsICJkaXNwbGF5IiwgImJhY2tncm91bmRDb2xvciIsICJjb2xvciIsICJmbGV4RGlyZWN0aW9uIiwgImZsZXgiLCAib3ZlcmZsb3ciLCAiaGVpZ2h0IiwgIihtYXgtd2lkdGg6IDcwMHB4KSIsICJib3JkZXJUb3AiLCAiQnV0dG9uIiwgInByb3BzIiwgImFwcGVhcmFuY2UiLCAiZm9udFdlaWdodCIsICJib3JkZXIiLCAiYm9yZGVyUmFkaXVzIiwgInBhZGRpbmciLCAib3BhY2l0eSIsICJkaXNhYmxlZCIsICJ1bmRlZmluZWQiLCAiY3Vyc29yIiwgImxpbmVIZWlnaHQiLCAiV2Via2l0QXBwZWFyYW5jZSIsICJiYWNrZ3JvdW5kSW1hZ2UiLCAiYmFja2dyb3VuZFJlcGVhdCIsICJiYWNrZ3JvdW5kUG9zaXRpb24iLCAiYmFja2dyb3VuZFNpemUiLCAiRW50cnkiLCAib3V0bGluZSIsICJ3b3JkQnJlYWsiLCAiTGFiZWwiLCAiVmFsdWUiLCAiU3ViRW50cmllcyIsICJtYXJnaW5MZWZ0IiwgInBhZGRpbmdMZWZ0IiwgImJvcmRlckxlZnQiLCAiSW5mbyIsICJFeHBhbmRlciIsICJleHBhbmRlZCIsICJ0cmFuc2l0aW9uIiwgInRyYW5zZm9ybSIsICJEZWZhdWx0UmVuZGVyZXIiLCAiaGFuZGxlRW50cnkiLCAibGFiZWwiLCAic3ViRW50cmllcyIsICJzdWJFbnRyeVBhZ2VzIiwgInRvZ2dsZSIsICJwYWdlU2l6ZSIsICJyZW5kZXJlciIsICJ2YWx1ZVNuYXBzaG90IiwgInNldFZhbHVlU25hcHNob3QiLCAiZXhwYW5kZWRQYWdlcyIsICJzZXRFeHBhbmRlZFBhZ2VzIiwgInJlZnJlc2hWYWx1ZVNuYXBzaG90IiwgImxlbmd0aCIsICJGcmFnbWVudCIsICJvbkNsaWNrIiwgIlN0cmluZyIsICJ0b0xvd2VyQ2FzZSIsICJtYXAiLCAiZW50cnkiLCAiaW5kZXgiLCAiaW5jbHVkZXMiLCAiZmlsdGVyIiwgImQiLCAiRXhwbG9yZXIiLCAiZGVmYXVsdEV4cGFuZGVkIiwgImdldE93blByb3BlcnR5TmFtZXMiLCAiX3JlZjMiLCAiZGVwdGgiLCAic2V0RXhwYW5kZWQiLCAic2V0IiwgInBhdGgiLCAibWFrZVByb3BlcnR5IiwgInN1YiIsICJuZXdQYXRoIiwgImNvbmNhdCIsICJzdWJEZWZhdWx0RXhwYW5kZWQiLCAic3ViUGF0aCIsICJBcnJheSIsICJpc0FycmF5IiwgImkiLCAiU3ltYm9sIiwgIml0ZXJhdG9yIiwgImZyb20iLCAidmFsIiwgIl9yZWY0IiwgInB1c2giLCAic2xpY2UiLCAiTG9nbyIsICJ3aWR0aCIsICJ2aWV3Qm94IiwgInZlcnNpb24iLCAic3Ryb2tlIiwgInN0cm9rZVdpZHRoIiwgImZpbGwiLCAiZmlsbFJ1bGUiLCAiaWQiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgImluaXRpYWxJc09wZW4iLCAidGFibGUiLCAicGFuZWxQcm9wcyIsICJ0b2dnbGVCdXR0b25Qcm9wcyIsICJjb250YWluZXJFbGVtZW50IiwgIkNvbnRhaW5lciIsICJyb290UmVmIiwgInBhbmVsUmVmIiwgImlzT3BlbiIsICJzZXRJc09wZW4iLCAicGFuZWxTdHlsZSIsICJvdGhlclBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uU3R5bGUiLCAib25Ub2dnbGVDbGljayIsICJvdGhlclRvZ2dsZUJ1dHRvblByb3BzIiwgImNsYXNzTmFtZSIsICJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCIsICJtYXhIZWlnaHQiLCAiZSIsICJtYXJnaW4iLCAiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCAiX19odG1sIiwgIm1pbkhlaWdodCIsICJib3JkZXJSaWdodCIsICJqdXN0aWZ5Q29udGVudCIsICJhbGlnbkl0ZW1zIiwgIm1hcmdpblJpZ2h0IiwgImZsZXhXcmFwIiwgIm92ZXJmbG93WSIsICJnZXRTdGF0ZSIsICJnZXRBbGxDb2x1bW5zIiwgImdldENvcmVSb3dNb2RlbCIsICJnZXRGaWx0ZXJlZFJvd01vZGVsIiwgImdldFNvcnRlZFJvd01vZGVsIiwgImdldEdyb3VwZWRSb3dNb2RlbCIsICJnZXRFeHBhbmRlZFJvd01vZGVsIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAianN4IiwgIlNrZWxldG9uIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJjbiIsICJmbGV4UmVuZGVyIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXIiLCAicHJvcHMiLCAiaGVhZGVyIiwgImNsYXNzTmFtZSIsICJjbiIsICJmbGV4UmVuZGVyIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTW92ZURvd24iLCAiTW92ZVVwIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkJ1dHRvbiIsICJDaGV2cm9uRG93biIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJBcnJvd1VwV2lkZU5hcnJvdyIsICJYIiwgIlBpbk9mZiIsICJQaW4iLCAiZSIsICJqc3giLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgImNsYXNzTmFtZSIsICJjbiIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAicHJvcHMiLCAidGFibGUiLCAidmFyaWFudCIsICJwYWdlSW5kZXgiLCAicGFnZUNvdW50IiwgIkJ1dHRvbiIsICJDaGV2cm9uc0xlZnQiLCAiQ2hldnJvbkxlZnQiLCAiSW5wdXQiLCAiZSIsICJDaGV2cm9uUmlnaHQiLCAiQ2hldnJvbnNSaWdodCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgImNvbHVtbiIsICJraW5kIiwgImlzUGlubmVkIiwgImlzTGVmdFBpbm5lZCIsICJpc1JpZ2h0UGlubmVkIiwgImlzU2VsZWN0Q29sdW1uIiwgImNuIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkRyYWdnYWJsZUhlYWRlckNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgImhlYWRlciIsICJjb21tb25TdHlsZSIsICJkaXNhYmxlRHJhZ2dpbmciLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAidHJhbnNmb3JtIiwgInRyYW5zaXRpb24iLCAic2V0Tm9kZVJlZiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgImRyYWdTdHlsZSIsICJDU1MiLCAiY29tbW9uQ2xhc3MiLCAiY24iLCAiZHJhZ0NsYXNzIiwgIlRhYmxlSGVhZCIsICJEYXRhR3JpZCIsICJjb2x1bW5EZWZzIiwgImdldEJlZm9yZVJvd3MiLCAiaXNMb2FkaW5nIiwgImlzUHJvY2Vzc2luZyIsICJvblBhZ2luYXRpb25DaGFuZ2UiLCAib25Sb3dTZWxlY3Rpb25DaGFuZ2UiLCAib25Tb3J0aW5nQ2hhbmdlIiwgInBhZ2VDb3VudCIsICJwYWdpbmF0aW9uU3RhdGUiLCAicm93cyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzb3J0aW5nU3RhdGUiLCAiY29sdW1uT3JkZXIiLCAic2V0Q29sdW1uT3JkZXIiLCAidXNlU3RhdGUiLCAiY29sdW1uUGlubmluZyIsICJzZXRDb2x1bW5QaW5uaW5nIiwgImNvbHVtblNpemluZyIsICJzZXRDb2x1bW5TaXppbmciLCAic29ydGluZyIsICJ1c2VNZW1vIiwgInRvU29ydGluZ1N0YXRlIiwgImRpc3BsYXlMb2FkZXIiLCAidXNlRWZmZWN0IiwgImFjY2Vzc29yS2V5IiwgImhhbmRsZURyYWdFbmQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib3JkZXIiLCAiYWN0aXZlSW5kZXgiLCAib3ZlckluZGV4IiwgImFycmF5TW92ZSIsICJtb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAiTW91c2VTZW5zb3IiLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAiZ2V0Q29yZVJvd01vZGVsIiwgIl9fcHNfcm93aWQiLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgInRvU29ydE9yZGVySXRlbXMiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJEbmRDb250ZXh0IiwgIlRhYmxlIiwgIlRhYmxlSGVhZGVyIiwgImhlYWRlckdyb3VwIiwgIlRhYmxlUm93IiwgIlNvcnRhYmxlQ29udGV4dCIsICJob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJoZWFkZXJGbiIsICJIZWFkZXJDb21wb25lbnQiLCAicGlubmluZ1N0eWxlcyIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgIkRhdGFHcmlkSGVhZGVyIiwgIlRhYmxlQm9keSIsICJyb3ciLCAiY2VsbCIsICJpIiwgIkNlbGwiLCAiVGFibGVDZWxsIiwgIlNrZWxldG9uIiwgIkRhdGFHcmlkUGFnaW5hdGlvbiIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgImZyb20iLCAiaXRlbSIsICJUb29sdGlwUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJUb29sdGlwUHJvdmlkZXIiLCAiVG9vbHRpcCIsICJUb29sdGlwVHJpZ2dlciIsICJUb29sdGlwQ29udGVudCIsICJjbGFzc05hbWUiLCAic2lkZU9mZnNldCIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgImNvbHVtbiIsICJUb29sdGlwUHJvdmlkZXIiLCAiVG9vbHRpcCIsICJUb29sdGlwVHJpZ2dlciIsICJLZXlSb3VuZCIsICJUb29sdGlwQ29udGVudCIsICJpc09iamVjdFR5cGUiLCAibW90aW9uIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkxhYmVsUHJpbWl0aXZlIiwgImN2YSIsICJSZWFjdCIsICJqc3giLCAibGFiZWxWYXJpYW50cyIsICJjdmEiLCAiTGFiZWwiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTd2l0Y2hQcmltaXRpdmVzIiwgIlJlYWN0IiwgImpzeCIsICJTd2l0Y2giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJJbnB1dEFjdGlvbnMiLCAib25TYXZlIiwgIm9uQ2FuY2VsIiwgIm9uQ2xvc2UiLCAib25OdWxsQ2hhbmdlIiwgImlzTnVsbCIsICJyZWFkb25seSIsICJDb3JuZXJEb3duTGVmdCIsICJTd2l0Y2giLCAiY2hlY2tlZCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJCb29sZWFuSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgInZhbHVlVG9TdWJtaXQiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIkxhYmVsIiwgIm1vdGlvbiIsICJTd2l0Y2giLCAiSW5wdXRBY3Rpb25zIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJ1c2VDYWxsYmFjayIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInVzZUlucHV0IiwgInByb3BzIiwgImluaXRpYWxWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJldmVudCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAiRGF0ZUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImZvcm1hdHRlZERhdGUiLCAidXNlTWVtbyIsICJkYXRlIiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAidXNlQ2FsbGJhY2siLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRW51bUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJ2YWx1ZSIsICJvcHRpb25zIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiaW5pdGlhbFZhbHVlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJoYW5kbGVTZWxlY3RPcHRpb24iLCAib3B0aW9uIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYmFkZ2VWYXJpYW50cyIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiSnNvbklucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImluaXRpYWxWYWx1ZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaGFuZGxlQ2hhbmdlIiwgImUiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgImpzb25WYWx1ZSIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIk51bWVyaWNJbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJlIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJudW1lcmljVmFsdWUiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIkxhYmVsIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJSYXdJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJ1c2VDYWxsYmFjayIsICJ1c2VNZW1vIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJUaW1lSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiZm9ybWF0dGVkVGltZSIsICJ1c2VNZW1vIiwgImhhc1RpbWV6b25lIiwgImRhdGUiLCAidGltZVJlZ2V4IiwgIm1hdGNoIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAidHpPZmZzZXQiLCAicGVyaW9kIiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAianN4IiwgImdldElucHV0IiwgInByb3BzIiwgImNlbGwiLCAiY29sdW1uIiwgIm9uU3VibWl0IiwgImdyb3VwIiwgIm9wdGlvbnMiLCAiaXNBcnJheSIsICJyZWFkb25seSIsICJjZWxsVmFsdWUiLCAidmFsdWUiLCAiRGF0ZUlucHV0IiwgIlRpbWVJbnB1dCIsICJKc29uSW5wdXQiLCAiQm9vbGVhbklucHV0IiwgIkVudW1JbnB1dCIsICJOdW1lcmljSW5wdXQiLCAiUmF3SW5wdXQiLCAiaXNPYmplY3RUeXBlIiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJGcmFnbWVudCIsICJqc3giLCAiU3RhZ2VkUm93cyIsICJwcm9wcyIsICJwYXJlbnRUYWJsZSIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAicmVhZG9ubHkiLCAidXNlSXNJbnNlcnRpbmciLCAidXBkYXRlU3RhZ2VkUm93IiwgInJvd0luZGV4IiwgInBhcnRpYWxSb3ciLCAicHJldlJvd3MiLCAibmV3Um93cyIsICJjb2x1bW5EZWZzIiwgImNvbHVtbiIsICJFbXB0eUNlbGwiLCAiY2VsbCIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiZ2V0SW5wdXQiLCAidmFsdWUiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgInJvdyIsICJpIiwgIlRhYmxlUm93IiwgImoiLCAiQ2VsbCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkFjdGl2ZVRhYmxlVmlldyIsICJfcHJvcHMiLCAiaXNNdXRhdGluZyIsICJ1c2VJc011dGF0aW5nIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAiaXNGdWxsc2NyZWVuIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAidG9nZ2xlTmF2aWdhdGlvbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInVzZVN0dWRpbyIsICJzb3J0aW5nU3RhdGUiLCAic2V0U29ydGluZ1N0YXRlIiwgInVzZVNvcnRpbmciLCAicGFnaW5hdGlvblN0YXRlIiwgInNldFBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInN0YWdlZFJvd3MiLCAic2V0U3RhZ2VkUm93cyIsICJ1c2VTdGF0ZSIsICJhcHBsaWVkRmlsdGVyIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiZWRpdGluZ0ZpbHRlciIsICJzZXRFZGl0aW5nRmlsdGVyIiwgInRvdGFsRWRpdGluZ0ZpbHRlcnMiLCAidXNlRmlsdGVyaW5nIiwgImRhdGEiLCAiaXNGZXRjaGluZyIsICJyZWZldGNoIiwgInVzZUFjdGl2ZVRhYmxlUXVlcnkiLCAiZGVsZXRlU2VsZWN0aW9uIiwgImlzU2VsZWN0aW5nIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVNlbGVjdGlvbiIsICJyZWFkb25seSIsICJjb2x1bW4iLCAiaXNJbnNlcnRpbmciLCAidXNlSXNJbnNlcnRpbmciLCAiaW5zZXJ0IiwgInVzZUFjdGl2ZVRhYmxlSW5zZXJ0IiwgInVwZGF0ZSIsICJ1c2VBY3RpdmVUYWJsZVVwZGF0ZSIsICJ1c2VFZmZlY3QiLCAic2F2ZVN0YWdlZFJvd3MiLCAidG9hc3QiLCAibmV3U3RhZ2VkUm93IiwgIm9sZCIsICJkcm9wU3RhZ2VkUm93cyIsICJoYW5kbGVDZWxsSW5wdXRTdWJtaXQiLCAidmFsdWUiLCAicm93IiwgIm9uRmlsdGVyT3BlbkNoYW5nZSIsICJvcGVuIiwgImNvbmNyZXRlQ29sdW1uRGVmcyIsICJEYXRhR3JpZEhlYWRlckNlbGwiLCAiY2VsbCIsICJwcm9wcyIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiZ2V0SW5wdXQiLCAidmlydHVhbENvbHVtbkRlZnMiLCAidGFibGUiLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJTZWxlY3RSb3dDZWxsIiwgImNvbHVtbkRlZnMiLCAiZGVmYXVsdENvbHVtblNvcnRpbmciLCAiQnV0dG9uIiwgIlBhbmVsTGVmdENsb3NlIiwgIlBhbmVsTGVmdE9wZW4iLCAiUG9wb3ZlciIsICJQb3BvdmVyVHJpZ2dlciIsICJjbiIsICJGaWx0ZXIiLCAiQmFkZ2UiLCAiQW5pbWF0ZU51bWJlciIsICJQb3BvdmVyQ29udGVudCIsICJGaWx0ZXJUcmVlIiwgImZpbHRlciIsICJSZWZyZXNoQ3ciLCAiTWluaW1pemUiLCAiTWF4aW1pemUiLCAiRGF0YUdyaWQiLCAiU3RhZ2VkUm93cyIsICJnZXRQYWdlQ291bnQiLCAicm93Q291bnQiLCAicGFnZVNpemUiLCAicGFnZUNvdW50IiwgImEiLCAiYiIsICJhTWV0YSIsICJiTWV0YSIsICJTbG90IiwgInVzZUNhbGxiYWNrIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInV1aWR2NCIsICJ1c2VRdWVyeSIsICJJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInVzZVF1ZXJ5IiwgInNpZ25hbCIsICJlcnJvciIsICJpbnRyb3NwZWN0aW9uIiwgImN0eCIsICJ1c2VBY3RpdmVUYWJsZSIsICJhY3RpdmVUYWJsZSIsICJzZXRBY3RpdmVUYWJsZSIsICJhY3RpdmVTY2hlbWEiLCAic2V0QWN0aXZlU2NoZW1hIiwgImFkYXB0ZXIiLCAiZW1pdFRlbGVtZXRyeUV2ZW50IiwgInVzZVN0dWRpbyIsICJpbnRyb3NwZWN0aW9uIiwgImRhdGFVcGRhdGVkQXQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJpc0xvYWRpbmciLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAidGFibGVBbmRTY2hlbWEiLCAic2V0VGFibGVBbmRTY2hlbWEiLCAidXNlUXVlcnlTdGF0ZXMiLCAidiIsICJzZXRQYWdlUGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJzZXRTb3J0UGFyYW0iLCAidGFibGVzIiwgInVzZU1lbW8iLCAidG90YWxUYWJsZUNvdW50IiwgInN1bSIsICJzY2hlbWEiLCAiZmlyc3RUYWJsZSIsICJ1c2VFZmZlY3QiLCAidGFibGVGcm9tUGFyYW0iLCAidCIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VDYWxsYmFjayIsICJuZXdUYWJsZSIsICJoYW5kbGVTY2hlbWFDaGFuZ2UiLCAibmV3U2NoZW1hIiwgInByZXYiLCAidXVpZHY0IiwgImpzeCIsICJqc3hzIiwgIk5hdmlnYXRpb24iLCAiY2xhc3NOYW1lIiwgInRhYmxlcyIsICJhY3RpdmVUYWJsZSIsICJhY3RpdmVTY2hlbWEiLCAiaXNMb2FkaW5nIiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUFjdGl2ZVRhYmxlIiwgInNpZGVCYXJDbGFzc2VzIiwgImNuIiwgInRhYmxlIiwgIl8iLCAiaW5kZXgiLCAiU2tlbGV0b24iLCAiQmxvY2siLCAibGFiZWwiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAiVGFibGUyIiwgIkl0ZW0iLCAiYXNDaGlsZCIsICJpc0FjdGl2ZSIsICJzaXplIiwgIndyYXBDaGlsZHJlbkluU3BhbiIsICJTbG90IiwgIlNjaGVtYVNlbGVjdG9yIiwgImludHJvc3BlY3Rpb24iLCAiaXNJbnRyb3NwZWN0aW9uTG9hZGluZyIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImhhbmRsZVNjaGVtYUNoYW5nZSIsICJzY2hlbWFOYW1lcyIsICJTZWxlY3QiLCAiU2VsZWN0VHJpZ2dlciIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RDb250ZW50IiwgIlNlbGVjdEl0ZW0iLCAic2NoZW1hIiwgImpzeCIsICJqc3hzIiwgIlN0dWRpbyIsICJwcm9wcyIsICJhZGFwdGVyIiwgIm9uRXJyb3IiLCAib25UZWxlbWV0cnlFdmVudCIsICJTdHVkaW9Db250ZXh0UHJvdmlkZXIiLCAiU3R1ZGlvQ29udGVudCIsICJpc0Z1bGxzY3JlZW4iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAiY29udGFpbmVyQ2xhc3NlcyIsICJjbiIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIk5hdmlnYXRpb24iLCAiQWN0aXZlVGFibGVWaWV3Il0KfQo=
291
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvbGliL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jbGFzcy1ncm91cC11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbHJ1LWNhY2hlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9wYXJzZS1jbGFzcy1uYW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jb25maWctdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNsYXNzbGlzdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctam9pbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY3JlYXRlLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9mcm9tLXRoZW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi92YWxpZGF0b3JzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9kZWZhdWx0LWNvbmZpZy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY29uZmlncy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZXh0ZW5kLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1tZXJnZS50cyIsICIuLi8uLi91aS9zdHVkaW8vQWN0aXZlVGFibGVWaWV3LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9zaGFyZWQvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvZGVmYXVsdEF0dHJpYnV0ZXMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9JY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvY3JlYXRlTHVjaWRlSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZWNrLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtaGVscC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NvcHkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3JuZXItZG93bi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZmlsdGVyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZ3JpcC12ZXJ0aWNhbC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2tleS1yb3VuZC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21heGltaXplLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWluaW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLWRvd24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLXVwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3BhbmVsLWxlZnQtb3Blbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3Bpbi1vZmYudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9yZWZyZXNoLWN3LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvdGFibGUtMi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3gudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9iYWRnZS50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9idXR0b24udHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2NvbnRleHQudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29scy50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytxdWVyeS1kZXZ0b29sc0A1LjcyLjIvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scy9idWlsZC9pbmRleC5qcyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvaW5kZXgudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9zb25uZXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9OdXFzSGFzaEFkYXB0ZXIudHN4IiwgIi4uLy4uL3VpL2hvb2tzL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0LnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtcXVlcnkudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGUudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWZpbHRlcmluZy50cyIsICIuLi8uLi91aS9ob29rcy9udXFzLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXBhZ2luYXRpb24udHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXNlbGVjdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc29ydGluZy50cyIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9nZXQtY2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQm9vbGVhbkNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdGFibGUudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRGF0ZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0VtcHR5Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW51bUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0pTT05DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdWxsQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvTnVtZXJpY0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1Jhd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1RpbWVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RSb3dDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvV3JpdGVhYmxlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL0ZpbHRlclRyZWUudHN4IiwgIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHMudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2lucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NlbGVjdC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWQudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3VzZUxvY2FsU3RvcmFnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy90aGVtZS50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTWVkaWFRdWVyeS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9zdHlsZWRDb21wb25lbnRzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0V4cGxvcmVyLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9Mb2dvLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9pbmRleC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9za2VsZXRvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkTG9hZGluZ0Jhci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRQYWdpbmF0aW9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3Rvb2x0aXAudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkSGVhZGVyQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2dldC1pbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0Jvb2xlYW5JbnB1dC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9sYWJlbC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9zd2l0Y2gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9pbnB1dC1hY3Rpb25zLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvRGF0ZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvdXNlLWlucHV0LnRzIiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9FbnVtSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9Kc29uSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9OdW1lcmljSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9SYXdJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1RpbWVJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL1N0YWdlZFJvd3MudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9OYXZpZ2F0aW9uLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGFcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQWN0aXZlVGFibGVWaWV3IH0gZnJvbSBcIi4vQWN0aXZlVGFibGVWaWV3XCI7XG5pbXBvcnQgeyBTdHVkaW9Db250ZXh0UHJvdmlkZXIsIHVzZVN0dWRpbyB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tIFwiLi9OYXZpZ2F0aW9uXCI7XG5cbmV4cG9ydCB0eXBlIFN0dWRpb1RlbGVtZXRyeUV2ZW50ID0ge1xuICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIjtcbiAgcGF5bG9hZDoge1xuICAgIGV2ZW50X2lkOiBzdHJpbmc7XG4gICAgdGltZXN0YW1wOiBzdHJpbmc7XG4gICAgdXNlcl9pZD86IHN0cmluZztcbiAgICB3b3Jrc3BhY2VfaWQ/OiBzdHJpbmc7XG4gICAgb3JnYW5pemF0aW9uX2lkPzogc3RyaW5nO1xuICAgIGVtYmVkZGluZ190eXBlPzogc3RyaW5nO1xuICAgIHZlbmRvcl9pZD86IHN0cmluZztcbiAgICB0YWJsZV9jb3VudDogbnVtYmVyO1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdHVkaW9Qcm9wcyB7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIE1haW4gU3R1ZGlvIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGRhdGFiYXNlIHZpc3VhbGl6YXRpb24gYW5kIG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpbyhwcm9wczogU3R1ZGlvUHJvcHMpIHtcbiAgY29uc3QgeyBhZGFwdGVyLCBvbkVycm9yLCBvblRlbGVtZXRyeUV2ZW50IH0gPSBwcm9wcztcblxuICBpZiAoIWFkYXB0ZXIpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYWRhcHRlciBwcm92aWRlZCB0byBTdHVkaW8gY29tcG9uZW50XCIpO1xuICAgIHJldHVybiA8ZGl2PkVycm9yOiBObyBhZGFwdGVyIHByb3ZpZGVkPC9kaXY+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3R1ZGlvQ29udGV4dFByb3ZpZGVyIGFkYXB0ZXI9e2FkYXB0ZXJ9IG9uRXJyb3I9e29uRXJyb3J9IG9uVGVsZW1ldHJ5RXZlbnQ9e29uVGVsZW1ldHJ5RXZlbnR9PlxuICAgICAgPFN0dWRpb0NvbnRlbnQgLz5cbiAgICA8L1N0dWRpb0NvbnRleHRQcm92aWRlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU3R1ZGlvQ29udGVudCgpIHtcbiAgY29uc3QgeyBpc0Z1bGxzY3JlZW4sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuXG4gIGNvbnN0IGNvbnRhaW5lckNsYXNzZXMgPSBjbihcbiAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsIHBzLW1pbi1oLTAgcHMtbWF4LWgtZnVsbFwiLFxuICAgIGlzRnVsbHNjcmVlbiAmJiBcInBzLWZpeGVkIHBzLWluc2V0LTAgcHMtei1bOTk5OV0gcHMtYmctYmFja2dyb3VuZCBwcy1wLTJcIixcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgZGF0YS1mdWxsc2NyZWVuPXtpc0Z1bGxzY3JlZW59IGNsYXNzTmFtZT17Y29udGFpbmVyQ2xhc3Nlc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZ2FwLTAgcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtNTAgcHMtcmVsYXRpdmUgcHMtbWF4LWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLXJvdW5kZWQtbGdcIj5cbiAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgIHtpc05hdmlnYXRpb25PcGVuICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgd2lkdGg6IDAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyB3aWR0aDogXCJhdXRvXCIsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjE0IH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxOYXZpZ2F0aW9uIC8+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLXctZnVsbCBwcy1iZy1uZXV0cmFsLTEwMCBwcy1mbGV4LWNvbCBwcy1wLXB4IHBzLXJvdW5kZWQtbGcgcHMtc2VsZi1zdGFydCBwcy1oLWZ1bGwgcHMtbWluLWgtZnVsbCBwcy1tYXgtaC1mdWxsIHBzLW92ZXJmbG93LWNsaXBcIlxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxBY3RpdmVUYWJsZVZpZXcgLz5cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiLy8gc2hhZGNuIHV0aWxzXG5pbXBvcnQgeyB0eXBlIENsYXNzVmFsdWUsIGNsc3ggfSBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgZXh0ZW5kVGFpbHdpbmRNZXJnZSB9IGZyb20gXCJ0YWlsd2luZC1tZXJnZVwiO1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGV4dGVuZFRhaWx3aW5kTWVyZ2Uoe1xuICBwcmVmaXg6IFwicHMtXCIsXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNuKC4uLmlucHV0czogQ2xhc3NWYWx1ZVtdKSB7XG4gIHJldHVybiB0d01lcmdlKGNsc3goaW5wdXRzKSk7XG59XG4iLCAiaW1wb3J0IHtcbiAgICBDbGFzc0dyb3VwLFxuICAgIENsYXNzVmFsaWRhdG9yLFxuICAgIENvbmZpZyxcbiAgICBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICBHZW5lcmljQ29uZmlnLFxuICAgIEdlbmVyaWNUaGVtZUdyb3VwSWRzLFxuICAgIFRoZW1lR2V0dGVyLFxuICAgIFRoZW1lT2JqZWN0LFxufSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzUGFydE9iamVjdCB7XG4gICAgbmV4dFBhcnQ6IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD5cbiAgICB2YWxpZGF0b3JzOiBDbGFzc1ZhbGlkYXRvck9iamVjdFtdXG4gICAgY2xhc3NHcm91cElkPzogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbn1cblxuaW50ZXJmYWNlIENsYXNzVmFsaWRhdG9yT2JqZWN0IHtcbiAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzXG4gICAgdmFsaWRhdG9yOiBDbGFzc1ZhbGlkYXRvclxufVxuXG5jb25zdCBDTEFTU19QQVJUX1NFUEFSQVRPUiA9ICctJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NHcm91cFV0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4ge1xuICAgIGNvbnN0IGNsYXNzTWFwID0gY3JlYXRlQ2xhc3NNYXAoY29uZmlnKVxuICAgIGNvbnN0IHsgY29uZmxpY3RpbmdDbGFzc0dyb3VwcywgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIH0gPSBjb25maWdcblxuICAgIGNvbnN0IGdldENsYXNzR3JvdXBJZCA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBjbGFzc1BhcnRzID0gY2xhc3NOYW1lLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKVxuXG4gICAgICAgIC8vIENsYXNzZXMgbGlrZSBgLWluc2V0LTFgIHByb2R1Y2UgYW4gZW1wdHkgc3RyaW5nIGFzIGZpcnN0IGNsYXNzUGFydC4gV2UgYXNzdW1lIHRoYXQgY2xhc3NlcyBmb3IgbmVnYXRpdmUgdmFsdWVzIGFyZSB1c2VkIGNvcnJlY3RseSBhbmQgcmVtb3ZlIGl0IGZyb20gY2xhc3NQYXJ0cy5cbiAgICAgICAgaWYgKGNsYXNzUGFydHNbMF0gPT09ICcnICYmIGNsYXNzUGFydHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICBjbGFzc1BhcnRzLnNoaWZ0KClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLCBjbGFzc01hcCkgfHwgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGNsYXNzTmFtZSlcbiAgICB9XG5cbiAgICBjb25zdCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgPSAoXG4gICAgICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllcjogYm9vbGVhbixcbiAgICApID0+IHtcbiAgICAgICAgY29uc3QgY29uZmxpY3RzID0gY29uZmxpY3RpbmdDbGFzc0dyb3Vwc1tjbGFzc0dyb3VwSWRdIHx8IFtdXG5cbiAgICAgICAgaWYgKGhhc1Bvc3RmaXhNb2RpZmllciAmJiBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25mbGljdHMsIC4uLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdIV1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25mbGljdHNcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgICAgIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyxcbiAgICB9XG59XG5cbmNvbnN0IGdldEdyb3VwUmVjdXJzaXZlID0gKFxuICAgIGNsYXNzUGFydHM6IHN0cmluZ1tdLFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuKTogR2VuZXJpY0NsYXNzR3JvdXBJZHMgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LmNsYXNzR3JvdXBJZFxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdIVxuICAgIGNvbnN0IG5leHRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KGN1cnJlbnRDbGFzc1BhcnQpXG4gICAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdFxuICAgICAgICA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgICAgIHJldHVybiBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnRcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoeyB2YWxpZGF0b3IgfSkgPT4gdmFsaWRhdG9yKGNsYXNzUmVzdCkpPy5jbGFzc0dyb3VwSWRcbn1cblxuY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlSZWdleCA9IC9eXFxbKC4rKVxcXSQvXG5cbmNvbnN0IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LnRlc3QoY2xhc3NOYW1lKSkge1xuICAgICAgICBjb25zdCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSA9IGFyYml0cmFyeVByb3BlcnR5UmVnZXguZXhlYyhjbGFzc05hbWUpIVsxXVxuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lPy5zdWJzdHJpbmcoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUuaW5kZXhPZignOicpLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAvLyBJIHVzZSB0d28gZG90cyBoZXJlIGJlY2F1c2Ugb25lIGRvdCBpcyB1c2VkIGFzIHByZWZpeCBmb3IgY2xhc3MgZ3JvdXBzIGluIHBsdWdpbnNcbiAgICAgICAgICAgIHJldHVybiAnYXJiaXRyYXJ5Li4nICsgcHJvcGVydHlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc01hcCA9IChjb25maWc6IENvbmZpZzxHZW5lcmljQ2xhc3NHcm91cElkcywgR2VuZXJpY1RoZW1lR3JvdXBJZHM+KSA9PiB7XG4gICAgY29uc3QgeyB0aGVtZSwgcHJlZml4IH0gPSBjb25maWdcbiAgICBjb25zdCBjbGFzc01hcDogQ2xhc3NQYXJ0T2JqZWN0ID0ge1xuICAgICAgICBuZXh0UGFydDogbmV3IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD4oKSxcbiAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jbGFzc0dyb3VwcyksXG4gICAgICAgIHByZWZpeCxcbiAgICApXG5cbiAgICBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzLmZvckVhY2goKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgY2xhc3NNYXAsIGNsYXNzR3JvdXBJZCwgdGhlbWUpXG4gICAgfSlcblxuICAgIHJldHVybiBjbGFzc01hcFxufVxuXG5jb25zdCBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5ID0gKFxuICAgIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgdGhlbWU6IFRoZW1lT2JqZWN0PEdlbmVyaWNUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIGNsYXNzR3JvdXAuZm9yRWFjaCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0ID1cbiAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24gPT09ICcnID8gY2xhc3NQYXJ0T2JqZWN0IDogZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGNsYXNzRGVmaW5pdGlvbilcbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdFRvRWRpdC5jbGFzc0dyb3VwSWQgPSBjbGFzc0dyb3VwSWRcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlmIChpc1RoZW1lR2V0dGVyKGNsYXNzRGVmaW5pdGlvbikpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24odGhlbWUpLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3I6IGNsYXNzRGVmaW5pdGlvbixcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikuZm9yRWFjaCgoW2tleSwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cCxcbiAgICAgICAgICAgICAgICBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwga2V5KSxcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgZ2V0UGFydCA9IChjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3RcblxuICAgIHBhdGguc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpLmZvckVhY2goKHBhdGhQYXJ0KSA9PiB7XG4gICAgICAgIGlmICghY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5oYXMocGF0aFBhcnQpKSB7XG4gICAgICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LnNldChwYXRoUGFydCwge1xuICAgICAgICAgICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwKCksXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KHBhdGhQYXJ0KSFcbiAgICB9KVxuXG4gICAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Rcbn1cblxuY29uc3QgaXNUaGVtZUdldHRlciA9IChmdW5jOiBDbGFzc1ZhbGlkYXRvciB8IFRoZW1lR2V0dGVyKTogZnVuYyBpcyBUaGVtZUdldHRlciA9PlxuICAgIChmdW5jIGFzIFRoZW1lR2V0dGVyKS5pc1RoZW1lR2V0dGVyXG5cbmNvbnN0IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSAoXG4gICAgY2xhc3NHcm91cEVudHJpZXM6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPixcbiAgICBwcmVmaXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPiA9PiB7XG4gICAgaWYgKCFwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzLm1hcCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwID0gY2xhc3NHcm91cC5tYXAoKGNsYXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbcHJlZml4ICsga2V5LCB2YWx1ZV0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBbY2xhc3NHcm91cElkLCBwcmVmaXhlZENsYXNzR3JvdXBdXG4gICAgfSlcbn1cbiIsICIvLyBFeHBvcnQgaXMgbmVlZGVkIGJlY2F1c2UgVHlwZVNjcmlwdCBjb21wbGFpbnMgYWJvdXQgYW4gZXJyb3Igb3RoZXJ3aXNlOlxuLy8gRXJyb3I6IFx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvY29uZmlnLXV0aWxzLnRzKDgsMTcpOiBzZW1hbnRpYyBlcnJvciBUUzQwNTg6IFJldHVybiB0eXBlIG9mIGV4cG9ydGVkIGZ1bmN0aW9uIGhhcyBvciBpcyB1c2luZyBuYW1lICdMcnVDYWNoZScgZnJvbSBleHRlcm5hbCBtb2R1bGUgXCJcdTIwMjYvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xydS1jYWNoZVwiIGJ1dCBjYW5ub3QgYmUgbmFtZWQuXG5leHBvcnQgaW50ZXJmYWNlIExydUNhY2hlPEtleSwgVmFsdWU+IHtcbiAgICBnZXQoa2V5OiBLZXkpOiBWYWx1ZSB8IHVuZGVmaW5lZFxuICAgIHNldChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKTogdm9pZFxufVxuXG4vLyBMUlUgY2FjaGUgaW5zcGlyZWQgZnJvbSBoYXNobHJ1IChodHRwczovL2dpdGh1Yi5jb20vZG9taW5pY3RhcnIvaGFzaGxydS9ibG9iL3YxLjAuNC9pbmRleC5qcykgYnV0IG9iamVjdCByZXBsYWNlZCB3aXRoIE1hcCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlXG5leHBvcnQgY29uc3QgY3JlYXRlTHJ1Q2FjaGUgPSA8S2V5LCBWYWx1ZT4obWF4Q2FjaGVTaXplOiBudW1iZXIpOiBMcnVDYWNoZTxLZXksIFZhbHVlPiA9PiB7XG4gICAgaWYgKG1heENhY2hlU2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2V0OiAoKSA9PiB7fSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjYWNoZVNpemUgPSAwXG4gICAgbGV0IGNhY2hlID0gbmV3IE1hcDxLZXksIFZhbHVlPigpXG4gICAgbGV0IHByZXZpb3VzQ2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcblxuICAgIGNvbnN0IHVwZGF0ZSA9IChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKVxuICAgICAgICBjYWNoZVNpemUrK1xuXG4gICAgICAgIGlmIChjYWNoZVNpemUgPiBtYXhDYWNoZVNpemUpIHtcbiAgICAgICAgICAgIGNhY2hlU2l6ZSA9IDBcbiAgICAgICAgICAgIHByZXZpb3VzQ2FjaGUgPSBjYWNoZVxuICAgICAgICAgICAgY2FjaGUgPSBuZXcgTWFwKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldChrZXkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLmdldChrZXkpXG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHZhbHVlID0gcHJldmlvdXNDYWNoZS5nZXQoa2V5KSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUGFyc2VDbGFzc05hbWUgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgeyBzZXBhcmF0b3IsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIH0gPSBjb25maWdcbiAgICBjb25zdCBpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciA9IHNlcGFyYXRvci5sZW5ndGggPT09IDFcbiAgICBjb25zdCBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFyYXRvclswXVxuICAgIGNvbnN0IHNlcGFyYXRvckxlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGhcblxuICAgIC8vIHBhcnNlQ2xhc3NOYW1lIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGxhYnMvdGFpbHdpbmRjc3MvYmxvYi92My4yLjIvc3JjL3V0aWwvc3BsaXRBdFRvcExldmVsT25seS5qc1xuICAgIGNvbnN0IHBhcnNlQ2xhc3NOYW1lID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IFtdXG5cbiAgICAgICAgbGV0IGJyYWNrZXREZXB0aCA9IDBcbiAgICAgICAgbGV0IG1vZGlmaWVyU3RhcnQgPSAwXG4gICAgICAgIGxldCBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkXG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzTmFtZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50Q2hhcmFjdGVyID0gY2xhc3NOYW1lW2luZGV4XVxuXG4gICAgICAgICAgICBpZiAoYnJhY2tldERlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyID09PSBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciAmJlxuICAgICAgICAgICAgICAgICAgICAoaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZS5zbGljZShpbmRleCwgaW5kZXggKyBzZXBhcmF0b3JMZW5ndGgpID09PSBzZXBhcmF0b3IpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycy5wdXNoKGNsYXNzTmFtZS5zbGljZShtb2RpZmllclN0YXJ0LCBpbmRleCkpXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyU3RhcnQgPSBpbmRleCArIHNlcGFyYXRvckxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnLycpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICdbJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aCsrXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICddJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aC0tXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIG1vZGlmaWVycy5sZW5ndGggPT09IDAgPyBjbGFzc05hbWUgOiBjbGFzc05hbWUuc3Vic3RyaW5nKG1vZGlmaWVyU3RhcnQpXG4gICAgICAgIGNvbnN0IGhhc0ltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3RhcnRzV2l0aChJTVBPUlRBTlRfTU9ESUZJRVIpXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWUgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN1YnN0cmluZygxKVxuICAgICAgICAgICAgOiBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9XG4gICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAmJiBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA+IG1vZGlmaWVyU3RhcnRcbiAgICAgICAgICAgICAgICA/IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uIC0gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vZGlmaWVycyxcbiAgICAgICAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIChjbGFzc05hbWU6IHN0cmluZykgPT4gZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUoeyBjbGFzc05hbWUsIHBhcnNlQ2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlQ2xhc3NOYW1lXG59XG5cbi8qKlxuICogU29ydHMgbW9kaWZpZXJzIGFjY29yZGluZyB0byBmb2xsb3dpbmcgc2NoZW1hOlxuICogLSBQcmVkZWZpbmVkIG1vZGlmaWVycyBhcmUgc29ydGVkIGFscGhhYmV0aWNhbGx5XG4gKiAtIFdoZW4gYW4gYXJiaXRyYXJ5IHZhcmlhbnQgYXBwZWFycywgaXQgbXVzdCBiZSBwcmVzZXJ2ZWQgd2hpY2ggbW9kaWZpZXJzIGFyZSBiZWZvcmUgYW5kIGFmdGVyIGl0XG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0TW9kaWZpZXJzID0gKG1vZGlmaWVyczogc3RyaW5nW10pID0+IHtcbiAgICBpZiAobW9kaWZpZXJzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIHJldHVybiBtb2RpZmllcnNcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cbiAgICBsZXQgdW5zb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cblxuICAgIG1vZGlmaWVycy5mb3JFYWNoKChtb2RpZmllcikgPT4ge1xuICAgICAgICBjb25zdCBpc0FyYml0cmFyeVZhcmlhbnQgPSBtb2RpZmllclswXSA9PT0gJ1snXG5cbiAgICAgICAgaWYgKGlzQXJiaXRyYXJ5VmFyaWFudCkge1xuICAgICAgICAgICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpLCBtb2RpZmllcilcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzID0gW11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpXG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpKVxuXG4gICAgcmV0dXJuIHNvcnRlZE1vZGlmaWVyc1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyB9IGZyb20gJy4vY2xhc3MtZ3JvdXAtdXRpbHMnXG5pbXBvcnQgeyBjcmVhdGVMcnVDYWNoZSB9IGZyb20gJy4vbHJ1LWNhY2hlJ1xuaW1wb3J0IHsgY3JlYXRlUGFyc2VDbGFzc05hbWUgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IHR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbmZpZ1V0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gKHtcbiAgICBjYWNoZTogY3JlYXRlTHJ1Q2FjaGU8c3RyaW5nLCBzdHJpbmc+KGNvbmZpZy5jYWNoZVNpemUpLFxuICAgIHBhcnNlQ2xhc3NOYW1lOiBjcmVhdGVQYXJzZUNsYXNzTmFtZShjb25maWcpLFxuICAgIC4uLmNyZWF0ZUNsYXNzR3JvdXBVdGlscyhjb25maWcpLFxufSlcbiIsICJpbXBvcnQgeyBDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgSU1QT1JUQU5UX01PRElGSUVSLCBzb3J0TW9kaWZpZXJzIH0gZnJvbSAnLi9wYXJzZS1jbGFzcy1uYW1lJ1xuXG5jb25zdCBTUExJVF9DTEFTU0VTX1JFR0VYID0gL1xccysvXG5cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzTGlzdCA9IChjbGFzc0xpc3Q6IHN0cmluZywgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzKSA9PiB7XG4gICAgY29uc3QgeyBwYXJzZUNsYXNzTmFtZSwgZ2V0Q2xhc3NHcm91cElkLCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgfSA9IGNvbmZpZ1V0aWxzXG5cbiAgICAvKipcbiAgICAgKiBTZXQgb2YgY2xhc3NHcm91cElkcyBpbiBmb2xsb3dpbmcgZm9ybWF0OlxuICAgICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAgICogQGV4YW1wbGUgJ2Zsb2F0J1xuICAgICAqIEBleGFtcGxlICdob3Zlcjpmb2N1czpiZy1jb2xvcidcbiAgICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgICAqL1xuICAgIGNvbnN0IGNsYXNzR3JvdXBzSW5Db25mbGljdDogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBjbGFzc0xpc3QudHJpbSgpLnNwbGl0KFNQTElUX0NMQVNTRVNfUkVHRVgpXG5cbiAgICBsZXQgcmVzdWx0ID0gJydcblxuICAgIGZvciAobGV0IGluZGV4ID0gY2xhc3NOYW1lcy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQ2xhc3NOYW1lID0gY2xhc3NOYW1lc1tpbmRleF0hXG5cbiAgICAgICAgY29uc3QgeyBtb2RpZmllcnMsIGhhc0ltcG9ydGFudE1vZGlmaWVyLCBiYXNlQ2xhc3NOYW1lLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIH0gPVxuICAgICAgICAgICAgcGFyc2VDbGFzc05hbWUob3JpZ2luYWxDbGFzc05hbWUpXG5cbiAgICAgICAgbGV0IGhhc1Bvc3RmaXhNb2RpZmllciA9IEJvb2xlYW4obWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgbGV0IGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChcbiAgICAgICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllclxuICAgICAgICAgICAgICAgID8gYmFzZUNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgICAgICAgICA6IGJhc2VDbGFzc05hbWUsXG4gICAgICAgIClcblxuICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgaWYgKCFoYXNQb3N0Zml4TW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChiYXNlQ2xhc3NOYW1lKVxuXG4gICAgICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhbnRNb2RpZmllciA9IHNvcnRNb2RpZmllcnMobW9kaWZpZXJzKS5qb2luKCc6JylcblxuICAgICAgICBjb25zdCBtb2RpZmllcklkID0gaGFzSW1wb3J0YW50TW9kaWZpZXJcbiAgICAgICAgICAgID8gdmFyaWFudE1vZGlmaWVyICsgSU1QT1JUQU5UX01PRElGSUVSXG4gICAgICAgICAgICA6IHZhcmlhbnRNb2RpZmllclxuXG4gICAgICAgIGNvbnN0IGNsYXNzSWQgPSBtb2RpZmllcklkICsgY2xhc3NHcm91cElkXG5cbiAgICAgICAgaWYgKGNsYXNzR3JvdXBzSW5Db25mbGljdC5pbmNsdWRlcyhjbGFzc0lkKSkge1xuICAgICAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgb21pdHRlZCBkdWUgdG8gY29uZmxpY3RcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChjbGFzc0lkKVxuXG4gICAgICAgIGNvbnN0IGNvbmZsaWN0R3JvdXBzID0gZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzKGNsYXNzR3JvdXBJZCwgaGFzUG9zdGZpeE1vZGlmaWVyKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZsaWN0R3JvdXBzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGNvbmZsaWN0R3JvdXBzW2ldIVxuICAgICAgICAgICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2gobW9kaWZpZXJJZCArIGdyb3VwKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgbm90IGluIGNvbmZsaWN0XG4gICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cbiIsICIvKipcbiAqIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3ggYW5kIG1vZGlmaWVkIHRvIHN1aXQgdGhlIG5lZWRzIG9mIHRhaWx3aW5kLW1lcmdlIGJldHRlci5cbiAqXG4gKiBTcGVjaWZpY2FsbHk6XG4gKiAtIFJ1bnRpbWUgY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9zcmMvaW5kZXguanNcbiAqIC0gVHlwZVNjcmlwdCB0eXBlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9jbHN4LmQudHNcbiAqXG4gKiBPcmlnaW5hbCBjb2RlIGhhcyBNSVQgbGljZW5zZTogQ29weXJpZ2h0IChjKSBMdWtlIEVkd2FyZHMgPGx1a2UuZWR3YXJkczA1QGdtYWlsLmNvbT4gKGx1a2VlZC5jb20pXG4gKi9cblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lVmFsdWUgPSBDbGFzc05hbWVBcnJheSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCAwIHwgMG4gfCBmYWxzZVxudHlwZSBDbGFzc05hbWVBcnJheSA9IENsYXNzTmFtZVZhbHVlW11cblxuZXhwb3J0IGZ1bmN0aW9uIHR3Sm9pbiguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKTogc3RyaW5nXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKCkge1xuICAgIGxldCBpbmRleCA9IDBcbiAgICBsZXQgYXJndW1lbnQ6IENsYXNzTmFtZVZhbHVlXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBpZiAoKGFyZ3VtZW50ID0gYXJndW1lbnRzW2luZGV4KytdKSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKVxuICAgICAgICAgICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ1xufVxuXG5jb25zdCB0b1ZhbHVlID0gKG1peDogQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpID0+IHtcbiAgICBpZiAodHlwZW9mIG1peCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG1peFxuICAgIH1cblxuICAgIGxldCByZXNvbHZlZFZhbHVlOiBzdHJpbmdcbiAgICBsZXQgc3RyaW5nID0gJydcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG4gICAgICAgIGlmIChtaXhba10pIHtcbiAgICAgICAgICAgIGlmICgocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUobWl4W2tdIGFzIENsYXNzTmFtZUFycmF5IHwgc3RyaW5nKSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgbWVyZ2VDbGFzc0xpc3QgfSBmcm9tICcuL21lcmdlLWNsYXNzbGlzdCdcbmltcG9ydCB7IENsYXNzTmFtZVZhbHVlLCB0d0pvaW4gfSBmcm9tICcuL3R3LWpvaW4nXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdGaXJzdCA9ICgpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgVGFpbHdpbmRNZXJnZSA9ICguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKSA9PiBzdHJpbmdcbnR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgY3JlYXRlQ29uZmlnRmlyc3Q6IENyZWF0ZUNvbmZpZ0ZpcnN0LFxuICAgIC4uLmNyZWF0ZUNvbmZpZ1Jlc3Q6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKTogVGFpbHdpbmRNZXJnZSB7XG4gICAgbGV0IGNvbmZpZ1V0aWxzOiBDb25maWdVdGlsc1xuICAgIGxldCBjYWNoZUdldDogQ29uZmlnVXRpbHNbJ2NhY2hlJ11bJ2dldCddXG4gICAgbGV0IGNhY2hlU2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnc2V0J11cbiAgICBsZXQgZnVuY3Rpb25Ub0NhbGwgPSBpbml0VGFpbHdpbmRNZXJnZVxuXG4gICAgZnVuY3Rpb24gaW5pdFRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY3JlYXRlQ29uZmlnUmVzdC5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldmlvdXNDb25maWcsIGNyZWF0ZUNvbmZpZ0N1cnJlbnQpID0+IGNyZWF0ZUNvbmZpZ0N1cnJlbnQocHJldmlvdXNDb25maWcpLFxuICAgICAgICAgICAgY3JlYXRlQ29uZmlnRmlyc3QoKSBhcyBHZW5lcmljQ29uZmlnLFxuICAgICAgICApXG5cbiAgICAgICAgY29uZmlnVXRpbHMgPSBjcmVhdGVDb25maWdVdGlscyhjb25maWcpXG4gICAgICAgIGNhY2hlR2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuZ2V0XG4gICAgICAgIGNhY2hlU2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuc2V0XG4gICAgICAgIGZ1bmN0aW9uVG9DYWxsID0gdGFpbHdpbmRNZXJnZVxuXG4gICAgICAgIHJldHVybiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlR2V0KGNsYXNzTGlzdClcblxuICAgICAgICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBtZXJnZUNsYXNzTGlzdChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKVxuICAgICAgICBjYWNoZVNldChjbGFzc0xpc3QsIHJlc3VsdClcblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxUYWlsd2luZE1lcmdlKCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb25Ub0NhbGwodHdKb2luLmFwcGx5KG51bGwsIGFyZ3VtZW50cyBhcyBhbnkpKVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBEZWZhdWx0VGhlbWVHcm91cElkcywgTm9JbmZlciwgVGhlbWVHZXR0ZXIsIFRoZW1lT2JqZWN0IH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IGZyb21UaGVtZSA9IDxcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgZXh0ZW5kcyBzdHJpbmcgPSBEZWZhdWx0VGhlbWVHcm91cElkcyxcbj4oa2V5OiBOb0luZmVyPERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pOiBUaGVtZUdldHRlciA9PiB7XG4gICAgY29uc3QgdGhlbWVHZXR0ZXIgPSAodGhlbWU6IFRoZW1lT2JqZWN0PERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pID0+XG4gICAgICAgIHRoZW1lW2tleV0gfHwgW11cblxuICAgIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlIGFzIGNvbnN0XG5cbiAgICByZXR1cm4gdGhlbWVHZXR0ZXJcbn1cbiIsICJjb25zdCBhcmJpdHJhcnlWYWx1ZVJlZ2V4ID0gL15cXFsoPzooW2Etei1dKyk6KT8oLispXFxdJC9pXG5jb25zdCBmcmFjdGlvblJlZ2V4ID0gL15cXGQrXFwvXFxkKyQvXG5jb25zdCBzdHJpbmdMZW5ndGhzID0gbmV3IFNldChbJ3B4JywgJ2Z1bGwnLCAnc2NyZWVuJ10pXG5jb25zdCB0c2hpcnRVbml0UmVnZXggPSAvXihcXGQrKFxcLlxcZCspPyk/KHhzfHNtfG1kfGxnfHhsKSQvXG5jb25zdCBsZW5ndGhVbml0UmVnZXggPVxuICAgIC9cXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcXGIoY2FsY3xtaW58bWF4fGNsYW1wKVxcKC4rXFwpfF4wJC9cbmNvbnN0IGNvbG9yRnVuY3Rpb25SZWdleCA9IC9eKHJnYmE/fGhzbGE/fGh3Ynwob2spPyhsYWJ8bGNoKSlcXCguK1xcKSQvXG4vLyBTaGFkb3cgYWx3YXlzIGJlZ2lucyB3aXRoIHggYW5kIHkgb2Zmc2V0IHNlcGFyYXRlZCBieSB1bmRlcnNjb3JlIG9wdGlvbmFsbHkgcHJlcGVuZGVkIGJ5IGluc2V0XG5jb25zdCBzaGFkb3dSZWdleCA9IC9eKGluc2V0Xyk/LT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MClfLT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MCkvXG5jb25zdCBpbWFnZVJlZ2V4ID1cbiAgICAvXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVxcKC4rXFwpJC9cblxuZXhwb3J0IGNvbnN0IGlzTGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgaXNOdW1iZXIodmFsdWUpIHx8IHN0cmluZ0xlbmd0aHMuaGFzKHZhbHVlKSB8fCBmcmFjdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUxlbmd0aCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdsZW5ndGgnLCBpc0xlbmd0aE9ubHkpXG5cbmV4cG9ydCBjb25zdCBpc051bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeU51bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbnVtYmVyJywgaXNOdW1iZXIpXG5cbmV4cG9ydCBjb25zdCBpc0ludGVnZXIgPSAodmFsdWU6IHN0cmluZykgPT4gQm9vbGVhbih2YWx1ZSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIodmFsdWUpKVxuXG5leHBvcnQgY29uc3QgaXNQZXJjZW50ID0gKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlLmVuZHNXaXRoKCclJykgJiYgaXNOdW1iZXIodmFsdWUuc2xpY2UoMCwgLTEpKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBhcmJpdHJhcnlWYWx1ZVJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc1RzaGlydFNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gdHNoaXJ0VW5pdFJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IHNpemVMYWJlbHMgPSBuZXcgU2V0KFsnbGVuZ3RoJywgJ3NpemUnLCAncGVyY2VudGFnZSddKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaXplID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIHNpemVMYWJlbHMsIGlzTmV2ZXIpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVBvc2l0aW9uID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ3Bvc2l0aW9uJywgaXNOZXZlcilcblxuY29uc3QgaW1hZ2VMYWJlbHMgPSBuZXcgU2V0KFsnaW1hZ2UnLCAndXJsJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIGltYWdlTGFiZWxzLCBpc0ltYWdlKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaGFkb3cgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJycsIGlzU2hhZG93KVxuXG5leHBvcnQgY29uc3QgaXNBbnkgPSAoKSA9PiB0cnVlXG5cbmNvbnN0IGdldElzQXJiaXRyYXJ5VmFsdWUgPSAoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBsYWJlbDogc3RyaW5nIHwgU2V0PHN0cmluZz4sXG4gICAgdGVzdFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbixcbikgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGFyYml0cmFyeVZhbHVlUmVnZXguZXhlYyh2YWx1ZSlcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgaWYgKHJlc3VsdFsxXSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgPyByZXN1bHRbMV0gPT09IGxhYmVsIDogbGFiZWwuaGFzKHJlc3VsdFsxXSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXN0VmFsdWUocmVzdWx0WzJdISlcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgaXNMZW5ndGhPbmx5ID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgLy8gYGNvbG9yRnVuY3Rpb25SZWdleGAgY2hlY2sgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgY29sb3IgZnVuY3Rpb25zIGNhbiBoYXZlIHBlcmNlbnRhZ2VzIGluIHRoZW0gd2hpY2ggd2hpY2ggd291bGQgYmUgaW5jb3JyZWN0bHkgY2xhc3NpZmllZCBhcyBsZW5ndGhzLlxuICAgIC8vIEZvciBleGFtcGxlLCBgaHNsKDAgMCUgMCUpYCB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIGEgbGVuZ3RoIHdpdGhvdXQgdGhpcyBjaGVjay5cbiAgICAvLyBJIGNvdWxkIGFsc28gdXNlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGluIGBsZW5ndGhVbml0UmVnZXhgIGJ1dCB0aGF0IGlzbid0IHN1cHBvcnRlZCB3aWRlbHkgZW5vdWdoLlxuICAgIGxlbmd0aFVuaXRSZWdleC50ZXN0KHZhbHVlKSAmJiAhY29sb3JGdW5jdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzTmV2ZXIgPSAoKSA9PiBmYWxzZVxuXG5jb25zdCBpc1NoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBzaGFkb3dSZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBpc0ltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGltYWdlUmVnZXgudGVzdCh2YWx1ZSlcbiIsICJpbXBvcnQgeyBmcm9tVGhlbWUgfSBmcm9tICcuL2Zyb20tdGhlbWUnXG5pbXBvcnQgeyBDb25maWcsIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQge1xuICAgIGlzQW55LFxuICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgaXNBcmJpdHJhcnlMZW5ndGgsXG4gICAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gICAgaXNBcmJpdHJhcnlQb3NpdGlvbixcbiAgICBpc0FyYml0cmFyeVNoYWRvdyxcbiAgICBpc0FyYml0cmFyeVNpemUsXG4gICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICBpc0ludGVnZXIsXG4gICAgaXNMZW5ndGgsXG4gICAgaXNOdW1iZXIsXG4gICAgaXNQZXJjZW50LFxuICAgIGlzVHNoaXJ0U2l6ZSxcbn0gZnJvbSAnLi92YWxpZGF0b3JzJ1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdENvbmZpZyA9ICgpID0+IHtcbiAgICBjb25zdCBjb2xvcnMgPSBmcm9tVGhlbWUoJ2NvbG9ycycpXG4gICAgY29uc3Qgc3BhY2luZyA9IGZyb21UaGVtZSgnc3BhY2luZycpXG4gICAgY29uc3QgYmx1ciA9IGZyb21UaGVtZSgnYmx1cicpXG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IGZyb21UaGVtZSgnYnJpZ2h0bmVzcycpXG4gICAgY29uc3QgYm9yZGVyQ29sb3IgPSBmcm9tVGhlbWUoJ2JvcmRlckNvbG9yJylcbiAgICBjb25zdCBib3JkZXJSYWRpdXMgPSBmcm9tVGhlbWUoJ2JvcmRlclJhZGl1cycpXG4gICAgY29uc3QgYm9yZGVyU3BhY2luZyA9IGZyb21UaGVtZSgnYm9yZGVyU3BhY2luZycpXG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBmcm9tVGhlbWUoJ2JvcmRlcldpZHRoJylcbiAgICBjb25zdCBjb250cmFzdCA9IGZyb21UaGVtZSgnY29udHJhc3QnKVxuICAgIGNvbnN0IGdyYXlzY2FsZSA9IGZyb21UaGVtZSgnZ3JheXNjYWxlJylcbiAgICBjb25zdCBodWVSb3RhdGUgPSBmcm9tVGhlbWUoJ2h1ZVJvdGF0ZScpXG4gICAgY29uc3QgaW52ZXJ0ID0gZnJvbVRoZW1lKCdpbnZlcnQnKVxuICAgIGNvbnN0IGdhcCA9IGZyb21UaGVtZSgnZ2FwJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcHMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wcycpXG4gICAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zJylcbiAgICBjb25zdCBpbnNldCA9IGZyb21UaGVtZSgnaW5zZXQnKVxuICAgIGNvbnN0IG1hcmdpbiA9IGZyb21UaGVtZSgnbWFyZ2luJylcbiAgICBjb25zdCBvcGFjaXR5ID0gZnJvbVRoZW1lKCdvcGFjaXR5JylcbiAgICBjb25zdCBwYWRkaW5nID0gZnJvbVRoZW1lKCdwYWRkaW5nJylcbiAgICBjb25zdCBzYXR1cmF0ZSA9IGZyb21UaGVtZSgnc2F0dXJhdGUnKVxuICAgIGNvbnN0IHNjYWxlID0gZnJvbVRoZW1lKCdzY2FsZScpXG4gICAgY29uc3Qgc2VwaWEgPSBmcm9tVGhlbWUoJ3NlcGlhJylcbiAgICBjb25zdCBza2V3ID0gZnJvbVRoZW1lKCdza2V3JylcbiAgICBjb25zdCBzcGFjZSA9IGZyb21UaGVtZSgnc3BhY2UnKVxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IGZyb21UaGVtZSgndHJhbnNsYXRlJylcblxuICAgIGNvbnN0IGdldE92ZXJzY3JvbGwgPSAoKSA9PiBbJ2F1dG8nLCAnY29udGFpbicsICdub25lJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRPdmVyZmxvdyA9ICgpID0+IFsnYXV0bycsICdoaWRkZW4nLCAnY2xpcCcsICd2aXNpYmxlJywgJ3Njcm9sbCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSA9ICgpID0+IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSA9ICgpID0+IFsnJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0UG9zaXRpb25zID0gKCkgPT5cbiAgICAgICAgW1xuICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICdsZWZ0LWJvdHRvbScsXG4gICAgICAgICAgICAnbGVmdC10b3AnLFxuICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgICdyaWdodC1ib3R0b20nLFxuICAgICAgICAgICAgJ3JpZ2h0LXRvcCcsXG4gICAgICAgICAgICAndG9wJyxcbiAgICAgICAgXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExpbmVTdHlsZXMgPSAoKSA9PiBbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJsZW5kTW9kZXMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICdtdWx0aXBseScsXG4gICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICdvdmVybGF5JyxcbiAgICAgICAgICAgICdkYXJrZW4nLFxuICAgICAgICAgICAgJ2xpZ2h0ZW4nLFxuICAgICAgICAgICAgJ2NvbG9yLWRvZGdlJyxcbiAgICAgICAgICAgICdjb2xvci1idXJuJyxcbiAgICAgICAgICAgICdoYXJkLWxpZ2h0JyxcbiAgICAgICAgICAgICdzb2Z0LWxpZ2h0JyxcbiAgICAgICAgICAgICdkaWZmZXJlbmNlJyxcbiAgICAgICAgICAgICdleGNsdXNpb24nLFxuICAgICAgICAgICAgJ2h1ZScsXG4gICAgICAgICAgICAnc2F0dXJhdGlvbicsXG4gICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgJ2x1bWlub3NpdHknLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QWxpZ24gPSAoKSA9PlxuICAgICAgICBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmV0d2VlbicsICdhcm91bmQnLCAnZXZlbmx5JywgJ3N0cmV0Y2gnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFplcm9BbmRFbXB0eSA9ICgpID0+IFsnJywgJzAnLCBpc0FyYml0cmFyeVZhbHVlXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJyZWFrcyA9ICgpID0+XG4gICAgICAgIFsnYXV0bycsICdhdm9pZCcsICdhbGwnLCAnYXZvaWQtcGFnZScsICdwYWdlJywgJ2xlZnQnLCAncmlnaHQnLCAnY29sdW1uJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXROdW1iZXJBbmRBcmJpdHJhcnkgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYWNoZVNpemU6IDUwMCxcbiAgICAgICAgc2VwYXJhdG9yOiAnOicsXG4gICAgICAgIHRoZW1lOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFtpc0FueV0sXG4gICAgICAgICAgICBzcGFjaW5nOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGJsdXI6IFsnbm9uZScsICcnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgICAgICAgYnJpZ2h0bmVzczogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogW2NvbG9yc10sXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IFsnbm9uZScsICcnLCAnZnVsbCcsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBib3JkZXJTcGFjaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgY29udHJhc3Q6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JheXNjYWxlOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIGh1ZVJvdGF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBpbnZlcnQ6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgZ2FwOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BzOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zOiBbaXNQZXJjZW50LCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICAgICAgICBpbnNldDogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBtYXJnaW46IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgb3BhY2l0eTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBwYWRkaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2F0dXJhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2NhbGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2VwaWE6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgc2tldzogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzcGFjZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NHcm91cHM6IHtcbiAgICAgICAgICAgIC8vIExheW91dFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBc3BlY3QgUmF0aW9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hc3BlY3QtcmF0aW9cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXNwZWN0OiBbeyBhc3BlY3Q6IFsnYXV0bycsICdzcXVhcmUnLCAndmlkZW8nLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udGFpbmVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGFpbmVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRhaW5lcjogWydjb250YWluZXInXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29sdW1uczogW3sgY29sdW1uczogW2lzVHNoaXJ0U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEFmdGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYWZ0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWFmdGVyJzogW3sgJ2JyZWFrLWFmdGVyJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEJlZm9yZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWJlZm9yZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYmVmb3JlJzogW3sgJ2JyZWFrLWJlZm9yZSc6IGdldEJyZWFrcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBJbnNpZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1pbnNpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWluc2lkZSc6IFt7ICdicmVhay1pbnNpZGUnOiBbJ2F1dG8nLCAnYXZvaWQnLCAnYXZvaWQtcGFnZScsICdhdm9pZC1jb2x1bW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IERlY29yYXRpb24gQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtZGVjb3JhdGlvbi1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm94LWRlY29yYXRpb24nOiBbeyAnYm94LWRlY29yYXRpb24nOiBbJ3NsaWNlJywgJ2Nsb25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaXppbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2l6aW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJveDogW3sgYm94OiBbJ2JvcmRlcicsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpc3BsYXlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXNwbGF5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGRpc3BsYXk6IFtcbiAgICAgICAgICAgICAgICAnYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUnLFxuICAgICAgICAgICAgICAgICdmbGV4JyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgICAgICAgJ2lubGluZS10YWJsZScsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNhcHRpb24nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jZWxsJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtZm9vdGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtaGVhZGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93LWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93JyxcbiAgICAgICAgICAgICAgICAnZmxvdy1yb290JyxcbiAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ncmlkJyxcbiAgICAgICAgICAgICAgICAnY29udGVudHMnLFxuICAgICAgICAgICAgICAgICdsaXN0LWl0ZW0nLFxuICAgICAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxvYXRzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxvYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxvYXQ6IFt7IGZsb2F0OiBbJ3JpZ2h0JywgJ2xlZnQnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2xlYXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jbGVhclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjbGVhcjogW3sgY2xlYXI6IFsnbGVmdCcsICdyaWdodCcsICdib3RoJywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElzb2xhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2lzb2xhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpc29sYXRpb246IFsnaXNvbGF0ZScsICdpc29sYXRpb24tYXV0byddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPYmplY3QgRml0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LWZpdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LWZpdCc6IFt7IG9iamVjdDogWydjb250YWluJywgJ2NvdmVyJywgJ2ZpbGwnLCAnbm9uZScsICdzY2FsZS1kb3duJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LXBvc2l0aW9uJzogW3sgb2JqZWN0OiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJmbG93OiBbeyBvdmVyZmxvdzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3cgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyZmxvdy14JzogW3sgJ292ZXJmbG93LXgnOiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXknOiBbeyAnb3ZlcmZsb3cteSc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFt7IG92ZXJzY3JvbGw6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC14JzogW3sgJ292ZXJzY3JvbGwteCc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC15JzogW3sgJ292ZXJzY3JvbGwteSc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwb3NpdGlvbjogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcCAvIFJpZ2h0IC8gQm90dG9tIC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnNldDogW3sgaW5zZXQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0IC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaW5zZXQteCc6IFt7ICdpbnNldC14JzogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC15JzogW3sgJ2luc2V0LXknOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdGFydDogW3sgc3RhcnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlbmQ6IFt7IGVuZDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvcDogW3sgdG9wOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByaWdodDogW3sgcmlnaHQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBib3R0b206IFt7IGJvdHRvbTogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZWZ0OiBbeyBsZWZ0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWaXNpYmlsaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmlzaWJpbGl0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBbJ3Zpc2libGUnLCAnaW52aXNpYmxlJywgJ2NvbGxhcHNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFotSW5kZXhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy96LWluZGV4XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHo6IFt7IHo6IFsnYXV0bycsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBGbGV4Ym94IGFuZCBHcmlkXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggQmFzaXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWJhc2lzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJhc2lzOiBbeyBiYXNpczogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggRGlyZWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1kaXJlY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZsZXgtZGlyZWN0aW9uJzogW3sgZmxleDogWydyb3cnLCAncm93LXJldmVyc2UnLCAnY29sJywgJ2NvbC1yZXZlcnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggV3JhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtd3JhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC13cmFwJzogW3sgZmxleDogWyd3cmFwJywgJ3dyYXAtcmV2ZXJzZScsICdub3dyYXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxleDogW3sgZmxleDogWycxJywgJ2F1dG8nLCAnaW5pdGlhbCcsICdub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggR3Jvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZ3Jvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBncm93OiBbeyBncm93OiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBTaHJpbmtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXNocmlua1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaHJpbms6IFt7IHNocmluazogZ2V0WmVyb0FuZEVtcHR5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9yZGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3JkZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3JkZXI6IFt7IG9yZGVyOiBbJ2ZpcnN0JywgJ2xhc3QnLCAnbm9uZScsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1jb2xzJzogW3sgJ2dyaWQtY29scyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2w6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3BhbjogWydmdWxsJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0JzogW3sgJ2NvbC1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtZW5kJzogW3sgJ2NvbC1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFRlbXBsYXRlIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLXJvd3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtcm93cyc6IFt7ICdncmlkLXJvd3MnOiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydCAvIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQtZW5kJzogW1xuICAgICAgICAgICAgICAgIHsgcm93OiBbJ2F1dG8nLCB7IHNwYW46IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQnOiBbeyAncm93LXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1lbmQnOiBbeyAncm93LWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBGbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtZmxvdyc6IFt7ICdncmlkLWZsb3cnOiBbJ3JvdycsICdjb2wnLCAnZGVuc2UnLCAncm93LWRlbnNlJywgJ2NvbC1kZW5zZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLWNvbHMnOiBbeyAnYXV0by1jb2xzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYXV0by1yb3dzJzogW3sgJ2F1dG8tcm93cyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBnYXA6IFt7IGdhcDogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteCc6IFt7ICdnYXAteCc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXAgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ2FwLXknOiBbeyAnZ2FwLXknOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBbeyBqdXN0aWZ5OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1pdGVtcyc6IFt7ICdqdXN0aWZ5LWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LXNlbGYnOiBbeyAnanVzdGlmeS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24tY29udGVudCc6IFt7IGNvbnRlbnQ6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24taXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLWl0ZW1zJzogW3sgaXRlbXM6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1zZWxmJzogW3sgc2VsZjogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCcsICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2UtY29udGVudCc6IFt7ICdwbGFjZS1jb250ZW50JzogWy4uLmdldEFsaWduKCksICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1pdGVtcyc6IFt7ICdwbGFjZS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1zZWxmJzogW3sgJ3BsYWNlLXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvLyBTcGFjaW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHA6IFt7IHA6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweDogW3sgcHg6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweTogW3sgcHk6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHM6IFt7IHBzOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwZTogW3sgcGU6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB0OiBbeyBwdDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwcjogW3sgcHI6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBiOiBbeyBwYjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBsOiBbeyBwbDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbTogW3sgbTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG14OiBbeyBteDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG15OiBbeyBteTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtczogW3sgbXM6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1lOiBbeyBtZTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXQ6IFt7IG10OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1yOiBbeyBtcjogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWI6IFt7IG1iOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWw6IFt7IG1sOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgnOiBbeyAnc3BhY2UteCc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgtcmV2ZXJzZSc6IFsnc3BhY2UteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15JzogW3sgJ3NwYWNlLXknOiBbc3BhY2VdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFkgUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15LXJldmVyc2UnOiBbJ3NwYWNlLXktcmV2ZXJzZSddLFxuICAgICAgICAgICAgLy8gU2l6aW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZ3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLXcnOiBbeyAnbWluLXcnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmdWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNjcmVlbjogW2lzVHNoaXJ0U2l6ZV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVHNoaXJ0U2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdmgnLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaW4tSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLWgnOiBbXG4gICAgICAgICAgICAgICAgeyAnbWluLWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtaCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtYXgtaCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2l6ZTogW3sgc2l6ZTogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdhdXRvJywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvLyBUeXBvZ3JhcGh5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zaXplJzogW3sgdGV4dDogWydiYXNlJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU21vb3RoaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zbW9vdGhpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc21vb3RoaW5nJzogWydhbnRpYWxpYXNlZCcsICdzdWJwaXhlbC1hbnRpYWxpYXNlZCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zdHlsZSc6IFsnaXRhbGljJywgJ25vdC1pdGFsaWMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBXZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXdlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC13ZWlnaHQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmb250OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGhpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZW1pYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdibGFjaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBGYW1pbHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LWZhbWlseVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1mYW1pbHknOiBbeyBmb250OiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogWydub3JtYWwtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnb3JkaW5hbCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydzbGFzaGVkLXplcm8nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnbGluaW5nLW51bXMnLCAnb2xkc3R5bGUtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc3BhY2luZyc6IFsncHJvcG9ydGlvbmFsLW51bXMnLCAndGFidWxhci1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZGlhZ29uYWwtZnJhY3Rpb25zJywgJ3N0YWNrZWQtZnJhY3RvbnMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGV0dGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9sZXR0ZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgQ2xhbXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWNsYW1wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogW3sgJ2xpbmUtY2xhbXAnOiBbJ25vbmUnLCBpc051bWJlciwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaW5lIEhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc251ZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyZWxheGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsb29zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LWltYWdlJzogW3sgJ2xpc3QtaW1hZ2UnOiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXR5cGUnOiBbeyBsaXN0OiBbJ25vbmUnLCAnZGlzYycsICdkZWNpbWFsJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJzogW3sgbGlzdDogWydpbnNpZGUnLCAnb3V0c2lkZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBDb2xvclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZWhvbGRlci1jb2xvcic6IFt7IHBsYWNlaG9sZGVyOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2Vob2xkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbeyAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBBbGlnbm1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWFsaWdubWVudCc6IFt7IHRleHQ6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnanVzdGlmeScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtY29sb3InOiBbeyB0ZXh0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW9wYWNpdHknOiBbeyAndGV4dC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbic6IFsndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCcsICduby11bmRlcmxpbmUnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnOiBbeyBkZWNvcmF0aW9uOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnd2F2eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gVGhpY2tuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyc6IFtcbiAgICAgICAgICAgICAgICB7IGRlY29yYXRpb246IFsnYXV0bycsICdmcm9tLWZvbnQnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFVuZGVybGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXVuZGVybGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3VuZGVybGluZS1vZmZzZXQnOiBbeyAndW5kZXJsaW5lLW9mZnNldCc6IFsnYXV0bycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tY29sb3InOiBbeyBkZWNvcmF0aW9uOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBUcmFuc2Zvcm1cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXRyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1vdmVyZmxvdyc6IFsndHJ1bmNhdGUnLCAndGV4dC1lbGxpcHNpcycsICd0ZXh0LWNsaXAnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXdyYXAnOiBbeyB0ZXh0OiBbJ3dyYXAnLCAnbm93cmFwJywgJ2JhbGFuY2UnLCAncHJldHR5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgSW5kZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1pbmRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5kZW50OiBbeyBpbmRlbnQ6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZlcnRpY2FsIEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3ZlcnRpY2FsLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd2ZXJ0aWNhbC1hbGlnbic6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFzZWxpbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWlkZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtdG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWJvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ViJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdXBlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaGl0ZXNwYWNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2hpdGVzcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3aGl0ZXNwYWNlOiBbXG4gICAgICAgICAgICAgICAgeyB3aGl0ZXNwYWNlOiBbJ25vcm1hbCcsICdub3dyYXAnLCAncHJlJywgJ3ByZS1saW5lJywgJ3ByZS13cmFwJywgJ2JyZWFrLXNwYWNlcyddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXb3JkIEJyZWFrXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd29yZC1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmVhazogW3sgYnJlYWs6IFsnbm9ybWFsJywgJ3dvcmRzJywgJ2FsbCcsICdrZWVwJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEh5cGhlbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oeXBoZW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGh5cGhlbnM6IFt7IGh5cGhlbnM6IFsnbm9uZScsICdtYW51YWwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250ZW50OiBbeyBjb250ZW50OiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEJhY2tncm91bmRzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQXR0YWNobWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYXR0YWNobWVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctYXR0YWNobWVudCc6IFt7IGJnOiBbJ2ZpeGVkJywgJ2xvY2FsJywgJ3Njcm9sbCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENsaXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNsaXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWNsaXAnOiBbeyAnYmctY2xpcCc6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCcsICd0ZXh0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3BhY2l0eVxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctb3BhY2l0eSc6IFt7ICdiZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcmlnaW4nOiBbeyAnYmctb3JpZ2luJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1wb3NpdGlvbic6IFt7IGJnOiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5UG9zaXRpb25dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFJlcGVhdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcmVwZWF0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1yZXBlYXQnOiBbeyBiZzogWyduby1yZXBlYXQnLCB7IHJlcGVhdDogWycnLCAneCcsICd5JywgJ3JvdW5kJywgJ3NwYWNlJ10gfV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctc2l6ZSc6IFt7IGJnOiBbJ2F1dG8nLCAnY292ZXInLCAnY29udGFpbicsIGlzQXJiaXRyYXJ5U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1pbWFnZSc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7ICdncmFkaWVudC10byc6IFsndCcsICd0cicsICdyJywgJ2JyJywgJ2InLCAnYmwnLCAnbCcsICd0bCddIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeUltYWdlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY29sb3InOiBbeyBiZzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb20gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbS1wb3MnOiBbeyBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWEgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhLXBvcyc6IFt7IHZpYTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG8gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8tcG9zJzogW3sgdG86IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbSc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8nOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvLyBCb3JkZXJzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJvdW5kZWQ6IFt7IHJvdW5kZWQ6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zJzogW3sgJ3JvdW5kZWQtcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZSc6IFt7ICdyb3VuZGVkLWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbeyAncm91bmRlZC10JzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXInOiBbeyAncm91bmRlZC1yJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1iJzogW3sgJ3JvdW5kZWQtYic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbeyAncm91bmRlZC1sJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNzJzogW3sgJ3JvdW5kZWQtc3MnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNlJzogW3sgJ3JvdW5kZWQtc2UnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lZSc6IFt7ICdyb3VuZGVkLWVlJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lcyc6IFt7ICdyb3VuZGVkLWVzJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRsJzogW3sgJ3JvdW5kZWQtdGwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRyJzogW3sgJ3JvdW5kZWQtdHInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWJyJzogW3sgJ3JvdW5kZWQtYnInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYmwnOiBbeyAncm91bmRlZC1ibCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13JzogW3sgYm9yZGVyOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFt7ICdib3JkZXIteCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1zJzogW3sgJ2JvcmRlci1zJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctZSc6IFt7ICdib3JkZXItZSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1iJzogW3sgJ2JvcmRlci1iJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItb3BhY2l0eSc6IFt7ICdib3JkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3R5bGUnOiBbeyBib3JkZXI6IFsuLi5nZXRMaW5lU3R5bGVzKCksICdoaWRkZW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS14JzogW3sgJ2RpdmlkZS14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFggUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgtcmV2ZXJzZSc6IFsnZGl2aWRlLXgtcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXknOiBbeyAnZGl2aWRlLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteS1yZXZlcnNlJzogWydkaXZpZGUteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1vcGFjaXR5JzogW3sgJ2RpdmlkZS1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1zdHlsZSc6IFt7IGRpdmlkZTogZ2V0TGluZVN0eWxlcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvcic6IFt7IGJvcmRlcjogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJzogW3sgJ2JvcmRlci1yJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1jb2xvcic6IFt7IGRpdmlkZTogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtc3R5bGUnOiBbeyBvdXRsaW5lOiBbJycsIC4uLmdldExpbmVTdHlsZXMoKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgT2Zmc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW3sgJ291dGxpbmUtb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtdyc6IFt7IG91dGxpbmU6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1jb2xvcic6IFt7IG91dGxpbmU6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy13JzogW3sgcmluZzogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGggSW5zZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXctaW5zZXQnOiBbJ3JpbmctaW5zZXQnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JpbmctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JpbmctY29sb3InOiBbeyByaW5nOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9wYWNpdHknOiBbeyAncmluZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9mZnNldCBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9mZnNldC13JzogW3sgJ3Jpbmctb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LWNvbG9yJzogW3sgJ3Jpbmctb2Zmc2V0JzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvLyBFZmZlY3RzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNoYWRvdzogW3sgc2hhZG93OiBbJycsICdpbm5lcicsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVNoYWRvd10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3cgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzaGFkb3ctY29sb3InOiBbeyBzaGFkb3c6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9wYWNpdHk6IFt7IG9wYWNpdHk6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWl4IEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taXgtYmxlbmQtbW9kZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWl4LWJsZW5kJzogW3sgJ21peC1ibGVuZCc6IFsuLi5nZXRCbGVuZE1vZGVzKCksICdwbHVzLWxpZ2h0ZXInLCAncGx1cy1kYXJrZXInXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBCbGVuZCBNb2RlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1ibGVuZCc6IFt7ICdiZy1ibGVuZCc6IGdldEJsZW5kTW9kZXMoKSB9XSxcbiAgICAgICAgICAgIC8vIEZpbHRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZpbHRlcjogW3sgZmlsdGVyOiBbJycsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJsdXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ibHVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJsdXI6IFt7IGJsdXI6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnJpZ2h0bmVzczogW3sgYnJpZ2h0bmVzczogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRyYXN0OiBbeyBjb250cmFzdDogW2NvbnRyYXN0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRHJvcCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kcm9wLXNoYWRvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZHJvcC1zaGFkb3cnOiBbeyAnZHJvcC1zaGFkb3cnOiBbJycsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JheXNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JheXNjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyYXlzY2FsZTogW3sgZ3JheXNjYWxlOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2h1ZS1yb3RhdGUnOiBbeyAnaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW52ZXJ0OiBbeyBpbnZlcnQ6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNhdHVyYXRlOiBbeyBzYXR1cmF0ZTogW3NhdHVyYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2VwaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zZXBpYVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzZXBpYTogW3sgc2VwaWE6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEZpbHRlclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWZpbHRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZmlsdGVyJzogW3sgJ2JhY2tkcm9wLWZpbHRlcic6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbeyAnYmFja2Ryb3AtYmx1cic6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbeyAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFticmlnaHRuZXNzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQ29udHJhc3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1jb250cmFzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtY29udHJhc3QnOiBbeyAnYmFja2Ryb3AtY29udHJhc3QnOiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFt7ICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWh1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbeyAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFt7ICdiYWNrZHJvcC1pbnZlcnQnOiBbaW52ZXJ0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbeyAnYmFja2Ryb3Atb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgU2F0dXJhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zYXR1cmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbeyAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zZXBpYSc6IFt7ICdiYWNrZHJvcC1zZXBpYSc6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvLyBUYWJsZXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbGxhcHNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbGxhcHNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sbGFwc2UnOiBbeyBib3JkZXI6IFsnY29sbGFwc2UnLCAnc2VwYXJhdGUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbeyAnYm9yZGVyLXNwYWNpbmcnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteCc6IFt7ICdib3JkZXItc3BhY2luZy14JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbeyAnYm9yZGVyLXNwYWNpbmcteSc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGFibGUgTGF5b3V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGFibGUtbGF5b3V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0YWJsZS1sYXlvdXQnOiBbeyB0YWJsZTogWydhdXRvJywgJ2ZpeGVkJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcHRpb24gU2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NhcHRpb24tc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjYXB0aW9uOiBbeyBjYXB0aW9uOiBbJ3RvcCcsICdib3R0b20nXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zaXRpb25zIGFuZCBBbmltYXRpb25cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbmlzaXRpb24gUHJvcGVydHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXByb3BlcnR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3JzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGFkb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIER1cmF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kdXJhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkdXJhdGlvbjogW3sgZHVyYXRpb246IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIFRpbWluZyBGdW5jdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVhc2U6IFt7IGVhc2U6IFsnbGluZWFyJywgJ2luJywgJ291dCcsICdpbi1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBEZWxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZGVsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGVsYXk6IFt7IGRlbGF5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQW5pbWF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYW5pbWF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFuaW1hdGU6IFt7IGFuaW1hdGU6IFsnbm9uZScsICdzcGluJywgJ3BpbmcnLCAncHVsc2UnLCAnYm91bmNlJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm1zXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFuc2Zvcm06IFt7IHRyYW5zZm9ybTogWycnLCAnZ3B1JywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzY2FsZTogW3sgc2NhbGU6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2NhbGUteCc6IFt7ICdzY2FsZS14JzogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS15JzogW3sgJ3NjYWxlLXknOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm90YXRlOiBbeyByb3RhdGU6IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXgnOiBbeyAndHJhbnNsYXRlLXgnOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNsYXRlIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zbGF0ZS15JzogW3sgJ3RyYW5zbGF0ZS15JzogW3RyYW5zbGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteCc6IFt7ICdza2V3LXgnOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteSc6IFt7ICdza2V3LXknOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybSBPcmlnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm0tb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIEludGVyYWN0aXZpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWNjZW50IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWNjZW50LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFjY2VudDogW3sgYWNjZW50OiBbJ2F1dG8nLCBjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBcHBlYXJhbmNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXBwZWFyYW5jZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBbeyBhcHBlYXJhbmNlOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDdXJzb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jdXJzb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY3Vyc29yOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3YWl0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtb3ZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3QtYWxsb3dlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29udGV4dC1tZW51JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9ncmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY3Jvc3NoYWlyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ0aWNhbC10ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGlhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29weScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm8tZHJvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYmJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbC1zY3JvbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbC1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ24tcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ253LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnMtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZXN3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbndzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20taW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20tb3V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcmV0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdC1pbi10aW1lLW1vZGUjY2FyZXQtY29sb3ItdXRpbGl0aWVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjYXJldC1jb2xvcic6IFt7IGNhcmV0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9pbnRlciBFdmVudHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb2ludGVyLWV2ZW50c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncG9pbnRlci1ldmVudHMnOiBbeyAncG9pbnRlci1ldmVudHMnOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZXNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yZXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmVzaXplOiBbeyByZXNpemU6IFsnbm9uZScsICd5JywgJ3gnLCAnJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLWJlaGF2aW9yJzogW3sgc2Nyb2xsOiBbJ2F1dG8nLCAnc21vb3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbSc6IFt7ICdzY3JvbGwtbSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFt7ICdzY3JvbGwtbXgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbeyAnc2Nyb2xsLW15JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tcyc6IFt7ICdzY3JvbGwtbXMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tZSc6IFt7ICdzY3JvbGwtbWUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tdCc6IFt7ICdzY3JvbGwtbXQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1yJzogW3sgJ3Njcm9sbC1tcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1iJzogW3sgJ3Njcm9sbC1tYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tbCc6IFt7ICdzY3JvbGwtbWwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFt7ICdzY3JvbGwtcCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogW3sgJ3Njcm9sbC1weCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogW3sgJ3Njcm9sbC1weSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wcyc6IFt7ICdzY3JvbGwtcHMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBlJzogW3sgJ3Njcm9sbC1wZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHQnOiBbeyAnc2Nyb2xsLXB0JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXByJzogW3sgJ3Njcm9sbC1wcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGInOiBbeyAnc2Nyb2xsLXBiJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGwnOiBbeyAnc2Nyb2xsLXBsJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgQWxpZ25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1hbGlnbic6IFt7IHNuYXA6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdhbGlnbi1ub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFN0b3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1zdG9wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0b3AnOiBbeyBzbmFwOiBbJ25vcm1hbCcsICdhbHdheXMnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtdHlwZSc6IFt7IHNuYXA6IFsnbm9uZScsICd4JywgJ3knLCAnYm90aCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlIFN0cmljdG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0cmljdG5lc3MnOiBbeyBzbmFwOiBbJ21hbmRhdG9yeScsICdwcm94aW1pdHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvdWNoOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0b3VjaDogWydhdXRvJywgJ25vbmUnLCAnbWFuaXB1bGF0aW9uJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC14JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneCcsICdsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC15JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneScsICd1cCcsICdkb3duJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBQaW5jaCBab29tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gtcGluY2gtem9vbSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBVc2VyIFNlbGVjdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3VzZXItc2VsZWN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlbGVjdDogW3sgc2VsZWN0OiBbJ25vbmUnLCAndGV4dCcsICdhbGwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaWxsIENoYW5nZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpbGwtY2hhbmdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd3aWxsLWNoYW5nZSc6IFtcbiAgICAgICAgICAgICAgICB7ICd3aWxsLWNoYW5nZSc6IFsnYXV0bycsICdzY3JvbGwnLCAnY29udGVudHMnLCAndHJhbnNmb3JtJywgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBTVkdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsbFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbGxcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsbDogW3sgZmlsbDogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3Ryb2tlIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzdHJva2Utdyc6IFt7IHN0cm9rZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aCwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3Ryb2tlOiBbeyBzdHJva2U6IFtjb2xvcnMsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvLyBBY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcmVlbiBSZWFkZXJzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NyZWVuLXJlYWRlcnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3I6IFsnc3Itb25seScsICdub3Qtc3Itb25seSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JjZWQgQ29sb3IgQWRqdXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9yY2VkLWNvbG9yLWFkanVzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFt7ICdmb3JjZWQtY29sb3ItYWRqdXN0JzogWydhdXRvJywgJ25vbmUnXSB9XSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFsnb3ZlcmZsb3cteCcsICdvdmVyZmxvdy15J10sXG4gICAgICAgICAgICBvdmVyc2Nyb2xsOiBbJ292ZXJzY3JvbGwteCcsICdvdmVyc2Nyb2xsLXknXSxcbiAgICAgICAgICAgIGluc2V0OiBbJ2luc2V0LXgnLCAnaW5zZXQteScsICdzdGFydCcsICdlbmQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteCc6IFsncmlnaHQnLCAnbGVmdCddLFxuICAgICAgICAgICAgJ2luc2V0LXknOiBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgICAgICAgIGZsZXg6IFsnYmFzaXMnLCAnZ3JvdycsICdzaHJpbmsnXSxcbiAgICAgICAgICAgIGdhcDogWydnYXAteCcsICdnYXAteSddLFxuICAgICAgICAgICAgcDogWydweCcsICdweScsICdwcycsICdwZScsICdwdCcsICdwcicsICdwYicsICdwbCddLFxuICAgICAgICAgICAgcHg6IFsncHInLCAncGwnXSxcbiAgICAgICAgICAgIHB5OiBbJ3B0JywgJ3BiJ10sXG4gICAgICAgICAgICBtOiBbJ214JywgJ215JywgJ21zJywgJ21lJywgJ210JywgJ21yJywgJ21iJywgJ21sJ10sXG4gICAgICAgICAgICBteDogWydtcicsICdtbCddLFxuICAgICAgICAgICAgbXk6IFsnbXQnLCAnbWInXSxcbiAgICAgICAgICAgIHNpemU6IFsndycsICdoJ10sXG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgICAgICAnZnZuLW5vcm1hbCc6IFtcbiAgICAgICAgICAgICAgICAnZnZuLW9yZGluYWwnLFxuICAgICAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZpZ3VyZScsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZyYWN0aW9uJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnZnZuLW9yZGluYWwnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnbGluZS1jbGFtcCc6IFsnZGlzcGxheScsICdvdmVyZmxvdyddLFxuICAgICAgICAgICAgcm91bmRlZDogW1xuICAgICAgICAgICAgICAgICdyb3VuZGVkLXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXQnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWwnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWVzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10bCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdHInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJyJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1ibCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcyc6IFsncm91bmRlZC1zcycsICdyb3VuZGVkLWVzJ10sXG4gICAgICAgICAgICAncm91bmRlZC1lJzogWydyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10ciddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFsncm91bmRlZC10cicsICdyb3VuZGVkLWJyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1iJzogWydyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogWydib3JkZXItc3BhY2luZy14JywgJ2JvcmRlci1zcGFjaW5nLXknXSxcbiAgICAgICAgICAgICdib3JkZXItdyc6IFtcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcycsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWUnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFsnYm9yZGVyLXctcicsICdib3JkZXItdy1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXcteSc6IFsnYm9yZGVyLXctdCcsICdib3JkZXItdy1iJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItdCcsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogWydib3JkZXItY29sb3ItcicsICdib3JkZXItY29sb3ItbCddLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogWydib3JkZXItY29sb3ItdCcsICdib3JkZXItY29sb3ItYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtbXgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXgnOiBbJ3Njcm9sbC1tcicsICdzY3JvbGwtbWwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbJ3Njcm9sbC1tdCcsICdzY3JvbGwtbWInXSxcbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFtcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB4JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB5JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBzJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBlJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB0JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXByJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBiJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogWydzY3JvbGwtcHInLCAnc2Nyb2xsLXBsJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogWydzY3JvbGwtcHQnLCAnc2Nyb2xsLXBiJ10sXG4gICAgICAgICAgICB0b3VjaDogWyd0b3VjaC14JywgJ3RvdWNoLXknLCAndG91Y2gtcHonXSxcbiAgICAgICAgICAgICd0b3VjaC14JzogWyd0b3VjaCddLFxuICAgICAgICAgICAgJ3RvdWNoLXknOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gtcHonOiBbJ3RvdWNoJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczoge1xuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgICB9LFxuICAgIH0gYXMgY29uc3Qgc2F0aXNmaWVzIENvbmZpZzxEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHM+XG59XG4iLCAiaW1wb3J0IHsgQ29uZmlnRXh0ZW5zaW9uLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuLyoqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyBDb25maWcgd2hlcmUgb3RoZXIgY29uZmlnIHdpbGwgYmUgbWVyZ2VkIGludG8uIFRoaXMgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZC5cbiAqIEBwYXJhbSBjb25maWdFeHRlbnNpb24gUGFydGlhbCBjb25maWcgdG8gbWVyZ2UgaW50byB0aGUgYGJhc2VDb25maWdgLlxuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDb25maWdzID0gPENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcsIFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcj4oXG4gICAgYmFzZUNvbmZpZzogR2VuZXJpY0NvbmZpZyxcbiAgICB7XG4gICAgICAgIGNhY2hlU2l6ZSxcbiAgICAgICAgcHJlZml4LFxuICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lLFxuICAgICAgICBleHRlbmQgPSB7fSxcbiAgICAgICAgb3ZlcnJpZGUgPSB7fSxcbiAgICB9OiBDb25maWdFeHRlbnNpb248Q2xhc3NHcm91cElkcywgVGhlbWVHcm91cElkcz4sXG4pID0+IHtcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdjYWNoZVNpemUnLCBjYWNoZVNpemUpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAncHJlZml4JywgcHJlZml4KVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3NlcGFyYXRvcicsIHNlcGFyYXRvcilcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZScsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKVxuXG4gICAgZm9yIChjb25zdCBjb25maWdLZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICAgICAgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1tjb25maWdLZXkgYXMga2V5b2YgdHlwZW9mIG92ZXJyaWRlXSxcbiAgICAgICAgICAgIG92ZXJyaWRlW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXh0ZW5kKSB7XG4gICAgICAgIG1lcmdlQ29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgIGJhc2VDb25maWdba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICAgICAgZXh0ZW5kW2tleSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5kXSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBiYXNlQ29uZmlnXG59XG5cbmNvbnN0IG92ZXJyaWRlUHJvcGVydHkgPSA8VCBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIFQ+KFxuICAgIGJhc2VPYmplY3Q6IFQsXG4gICAgb3ZlcnJpZGVLZXk6IEssXG4gICAgb3ZlcnJpZGVWYWx1ZTogVFtLXSB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYmFzZU9iamVjdFtvdmVycmlkZUtleV0gPSBvdmVycmlkZVZhbHVlXG4gICAgfVxufVxuXG5jb25zdCBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMgPSAoXG4gICAgYmFzZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PixcbiAgICBvdmVycmlkZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PiB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvdmVycmlkZU9iamVjdCkge1xuICAgICAgICAgICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBrZXksIG92ZXJyaWRlT2JqZWN0W2tleV0pXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IG1lcmdlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG1lcmdlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG1lcmdlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1lcmdlT2JqZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZVZhbHVlID0gbWVyZ2VPYmplY3Rba2V5XVxuXG4gICAgICAgICAgICBpZiAobWVyZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYmFzZU9iamVjdFtrZXldID0gKGJhc2VPYmplY3Rba2V5XSB8fCBbXSkuY29uY2F0KG1lcmdlVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5pbXBvcnQgeyBtZXJnZUNvbmZpZ3MgfSBmcm9tICcuL21lcmdlLWNvbmZpZ3MnXG5pbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcywgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcblxuZXhwb3J0IGNvbnN0IGV4dGVuZFRhaWx3aW5kTWVyZ2UgPSA8XG4gICAgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuPihcbiAgICBjb25maWdFeHRlbnNpb246XG4gICAgICAgIHwgQ29uZmlnRXh0ZW5zaW9uPFxuICAgICAgICAgICAgICBEZWZhdWx0Q2xhc3NHcm91cElkcyB8IEFkZGl0aW9uYWxDbGFzc0dyb3VwSWRzLFxuICAgICAgICAgICAgICBEZWZhdWx0VGhlbWVHcm91cElkcyB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzXG4gICAgICAgICAgPlxuICAgICAgICB8IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQsXG4gICAgLi4uY3JlYXRlQ29uZmlnOiBDcmVhdGVDb25maWdTdWJzZXF1ZW50W11cbikgPT5cbiAgICB0eXBlb2YgY29uZmlnRXh0ZW5zaW9uID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnLCBjb25maWdFeHRlbnNpb24sIC4uLmNyZWF0ZUNvbmZpZylcbiAgICAgICAgOiBjcmVhdGVUYWlsd2luZE1lcmdlKFxuICAgICAgICAgICAgICAoKSA9PiBtZXJnZUNvbmZpZ3MoZ2V0RGVmYXVsdENvbmZpZygpLCBjb25maWdFeHRlbnNpb24pLFxuICAgICAgICAgICAgICAuLi5jcmVhdGVDb25maWcsXG4gICAgICAgICAgKVxuIiwgImltcG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UgfSBmcm9tICcuL2NyZWF0ZS10YWlsd2luZC1tZXJnZSdcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJ1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZylcbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgdHlwZSBDb2x1bW5EZWYgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBGaWx0ZXJJY29uLCBNYXhpbWl6ZSwgTWluaW1pemUsIFBhbmVsTGVmdENsb3NlLCBQYW5lbExlZnRPcGVuLCBSZWZyZXNoQ3cgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZywgTnVtZXJpY1N0cmluZyB9IGZyb20gXCIuLi8uLi9kYXRhL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvcG9wb3ZlclwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVJbnNlcnQgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlUXVlcnkgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVVcGRhdGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGVcIjtcbmltcG9ydCB7IHVzZUZpbHRlcmluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1wYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNlbGVjdGlvblwiO1xuaW1wb3J0IHsgdXNlU29ydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2Utc29ydGluZ1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsLCBTZWxlY3RIZWFkZXJDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL1NlbGVjdEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IFNlbGVjdFJvd0NlbGwsIFNlbGVjdFJvd0NlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvU2VsZWN0Um93Q2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgRmlsdGVyVHJlZSB9IGZyb20gXCIuL0ZpbHRlclRyZWVcIjtcbmltcG9ydCB7IERhdGFHcmlkIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXJDZWxsIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IGdldElucHV0IH0gZnJvbSBcIi4vaW5wdXQvZ2V0LWlucHV0XCI7XG5pbXBvcnQgeyBTdGFnZWRSb3dzIH0gZnJvbSBcIi4vU3RhZ2VkUm93c1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZVRhYmxlVmlld1Byb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3RpdmVUYWJsZVZpZXcoX3Byb3BzOiBBY3RpdmVUYWJsZVZpZXdQcm9wcykge1xuICBjb25zdCBpc011dGF0aW5nID0gQm9vbGVhbih1c2VJc011dGF0aW5nKCkpO1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yLCBpc0Z1bGxzY3JlZW4sIHRvZ2dsZUZ1bGxzY3JlZW4sIHRvZ2dsZU5hdmlnYXRpb24sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHNvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlIH0gPSB1c2VTb3J0aW5nKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlLCBzZXRQYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3N0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4oW10pO1xuICBjb25zdCB7IGFwcGxpZWRGaWx0ZXIsIHNldEFwcGxpZWRGaWx0ZXIsIGVkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXIsIHRvdGFsRWRpdGluZ0ZpbHRlcnMgfSA9IHVzZUZpbHRlcmluZygpO1xuXG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZywgcmVmZXRjaCB9ID0gdXNlQWN0aXZlVGFibGVRdWVyeSh7XG4gICAgLi4ucGFnaW5hdGlvblN0YXRlLFxuICAgIHNvcnRPcmRlcjogc29ydGluZ1N0YXRlLFxuICAgIGZpbHRlcjogYXBwbGllZEZpbHRlcixcbiAgfSk7XG4gIGNvbnN0IHsgZGVsZXRlU2VsZWN0aW9uLCBpc1NlbGVjdGluZywgcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlIH0gPSB1c2VTZWxlY3Rpb24oZGF0YSk7XG5cbiAgY29uc3QgcmVhZG9ubHkgPSAhT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkuc29tZSgoY29sdW1uKSA9PiBjb2x1bW4uaXNJblByaW1hcnlLZXkpO1xuICBjb25zdCBpc0luc2VydGluZyA9IHVzZUlzSW5zZXJ0aW5nKCk7XG4gIGNvbnN0IGluc2VydCA9IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCk7XG5cbiAgLy8gcmVzZXQgaW5zZXJ0Um93cyB3aGVuIGFjdGl2ZVRhYmxlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHNldFN0YWdlZFJvd3MoW10pLCBbYWN0aXZlVGFibGVdKTtcblxuICBpZiAoIWFjdGl2ZVRhYmxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlU3RhZ2VkUm93cygpIHtcbiAgICBpbnNlcnQubXV0YXRlKHN0YWdlZFJvd3MsIHtcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJSb3dzIGluc2VydGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV3U3RhZ2VkUm93KCkge1xuICAgIC8vIFRPRE86IHRoZSBuZXcgb2JqZWN0IHNob3VsZCBoYXZlIHNvbWUgdGhpbmdzIHNldCB0byBudWxsIGlmIHRoZXkncmUgbnVsbGFibGUgb3IgaGF2ZSBhIGRlZmF1bHQgdmFsdWU/XG4gICAgc2V0U3RhZ2VkUm93cygob2xkKSA9PiBbLi4ub2xkLCB7fV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZHJvcFN0YWdlZFJvd3MoKSB7XG4gICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWU6IHVua25vd24sIGNvbHVtbjogQ29sdW1uLCByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdXBkYXRlLm11dGF0ZSh7XG4gICAgICBkZXRhaWxzOiB7IGNoYW5nZXM6IHsgW2NvbHVtbi5uYW1lXTogdmFsdWUgfSwgcm93LCB0YWJsZTogYWN0aXZlVGFibGUhIH0sXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRmlsdGVyT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKG9wZW4gPT09IHRydWUpIHtcbiAgICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZWRpdGluZ0ZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVhbCBjb2x1bW4gZGVmaW5pdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGFiYXNlIGNvbHVtbnNcbiAgY29uc3QgY29uY3JldGVDb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkubWFwKChjb2x1bW4pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbHVtbi5uYW1lLFxuICAgICAgYWNjZXNzb3JLZXk6IGNvbHVtbi5uYW1lLFxuICAgICAgbWV0YTogY29sdW1uLFxuICAgICAgaGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH0pO1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW4sIHByb3BzIH0pfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlLCBjb2x1bW4sIGNlbGwucm93Lm9yaWdpbmFsKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIC8vIHRoZXNlIGFyZSBjb2x1bW5zIHRoYXQgZXhpc3QgdmlydHVhbGx5IGFuZCBhcmUgbm90IGRiIGNvbHVtbnNcbiAgY29uc3QgdmlydHVhbENvbHVtbkRlZnMgPSBbXG4gICAge1xuICAgICAgaWQ6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGFjY2Vzc29yS2V5OiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBlbmFibGVQaW5uaW5nOiB0cnVlLFxuICAgICAgZW5hYmxlUmVzaXppbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgICBkaXNhYmxlRHJhZ2dpbmc6IHRydWUsXG4gICAgICBzaXplOiA1MCxcbiAgICAgIG1pblNpemU6IDUwLFxuICAgICAgaGVhZGVyKHsgdGFibGUgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PFNlbGVjdEhlYWRlckNlbGxQcm9wcywgXCJ0YWJsZVwiIHwgXCJyZWFkb25seVwiPikgPT4gKFxuICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgY2VsbCh7IHJvdyB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8U2VsZWN0Um93Q2VsbFByb3BzLCBcInJvd1wiIHwgXCJyZWFkb25seVwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiA8U2VsZWN0Um93Q2VsbCByb3c9e3Jvd30gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+O1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdIHNhdGlzZmllcyAoQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiAmIHsgZGlzYWJsZURyYWdnaW5nPzogYm9vbGVhbiB9KVtdO1xuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBbLi4uY29uY3JldGVDb2x1bW5EZWZzLCAuLi52aXJ0dWFsQ29sdW1uRGVmc10uc29ydChkZWZhdWx0Q29sdW1uU29ydGluZyk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1iZy1zdHVkaW8taGVhZGVyLWJhY2tncm91bmQgcHMtZmxleCBwcy13LWZ1bGwgcHMtcC0yIHBzLXB5LTMgcHMtYm9yZGVyLWIgcHMtYmctY2FyZCBwcy1yb3VuZGVkLXQtbGdcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtZ3JvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXt0b2dnbGVOYXZpZ2F0aW9ufT5cbiAgICAgICAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiA/IDxQYW5lbExlZnRDbG9zZSAvPiA6IDxQYW5lbExlZnRPcGVuIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPFBvcG92ZXIgb25PcGVuQ2hhbmdlPXtvbkZpbHRlck9wZW5DaGFuZ2V9PlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT17Y24odG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgXCJwcy1ib3JkZXItcHJpbWFyeVwiKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZpbHRlckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0b3RhbEVkaXRpbmdGaWx0ZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlclRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJDb250ZW50IGFsaWduPVwic3RhcnRcIiBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwicHMtdy1taW4gcHMtbWF4LWgtWzUyMHB4XSBwcy1vdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIDxGaWx0ZXJUcmVlXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcj17ZWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyPXtzZXRFZGl0aW5nRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RWRpdGluZ0ZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGVkaXRpbmcgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7IC8vIFVwZGF0ZSB0aGUgYXBwbGllZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB0YWJsZT17YWN0aXZlVGFibGV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e25ld1N0YWdlZFJvd30gZGlzYWJsZWQ9e2lzSW5zZXJ0aW5nID4gMH0+XG4gICAgICAgICAgICAgICAgSW5zZXJ0IHJvd1xuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAge3N0YWdlZFJvd3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInNlY29uZGFyeVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3NhdmVTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICB7LyogTmVlZHMgc29tZSBpbXByb3ZlbWVudCAqL31cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZHJvcFN0YWdlZFJvd3N9PlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNTZWxlY3RpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtkZWxldGVTZWxlY3Rpb259PlxuICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJpY29uXCIgb25DbGljaz17KCkgPT4gdm9pZCByZWZldGNoKCl9IGRpc2FibGVkPXtpc0ZldGNoaW5nfT5cbiAgICAgICAgICAgICAgICA8UmVmcmVzaEN3IGNsYXNzTmFtZT17Y24oXCJwcy1oLTQgcHMtdy00XCIsIGlzRmV0Y2hpbmcgJiYgXCJwcy1hbmltYXRlLXNwaW5cIil9IC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cImljb25cIiBvbkNsaWNrPXt0b2dnbGVGdWxsc2NyZWVufT5cbiAgICAgICAgICAgICAgICB7aXNGdWxsc2NyZWVuID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPERhdGFHcmlkXG4gICAgICAgIGNvbHVtbkRlZnM9e2NvbHVtbkRlZnN9XG4gICAgICAgIGdldEJlZm9yZVJvd3M9eyh0YWJsZSkgPT4gPFN0YWdlZFJvd3Mgey4uLnsgdGFibGUsIHN0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3MgfX0gLz59XG4gICAgICAgIGlzTG9hZGluZz17aXNGZXRjaGluZ31cbiAgICAgICAgaXNQcm9jZXNzaW5nPXtpc011dGF0aW5nfVxuICAgICAgICBvblBhZ2luYXRpb25DaGFuZ2U9e3NldFBhZ2luYXRpb25TdGF0ZX1cbiAgICAgICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2U9e3NldFJvd1NlbGVjdGlvblN0YXRlfVxuICAgICAgICBvblNvcnRpbmdDaGFuZ2U9e3NldFNvcnRpbmdTdGF0ZX1cbiAgICAgICAgcGFnZUNvdW50PXtnZXRQYWdlQ291bnQoZGF0YT8uZmlsdGVyZWRSb3dDb3VudCA/PyBJbmZpbml0eSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplKX1cbiAgICAgICAgcGFnaW5hdGlvblN0YXRlPXtwYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIHJvd3M9e2RhdGE/LnJvd3MgPz8gW119XG4gICAgICAgIHJvd1NlbGVjdGlvblN0YXRlPXtyb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgc29ydGluZ1N0YXRlPXtzb3J0aW5nU3RhdGV9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlQ291bnQocm93Q291bnQ6IG51bWJlciB8IGJpZ2ludCB8IE51bWVyaWNTdHJpbmcgfCBCaWdJbnRTdHJpbmcsIHBhZ2VTaXplOiBudW1iZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAocm93Q291bnQgPT09IEluZmluaXR5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFnZUNvdW50ID0gTnVtYmVyKChCaWdJbnQocm93Q291bnQpICsgQmlnSW50KHBhZ2VTaXplKSAtIEJpZ0ludCgxKSkgLyBCaWdJbnQocGFnZVNpemUpKTtcblxuICByZXR1cm4gTnVtYmVyLmlzU2FmZUludGVnZXIocGFnZUNvdW50KSA/IHBhZ2VDb3VudCA6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29sdW1uU29ydGluZyhhOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBiOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KSB7XG4gIGNvbnN0IGFNZXRhID0gYS5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcbiAgY29uc3QgYk1ldGEgPSBiLm1ldGEgYXMgQ29sdW1uIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChhLmlkID09PSBcIl9fcHNfc2VsZWN0XCIgfHwgYi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBpZiAoYU1ldGEgPT09IHVuZGVmaW5lZCB8fCBiTWV0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDA7IC8vIGNhbid0IGJlIGNvbXBhcmVkLCBzaG91bGRuJ3QgaGFwcGVuXG4gIH1cblxuICBpZiAoYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgIWJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICghYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgYk1ldGEuaXNJblByaW1hcnlLZXkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiBhTWV0YS5uYW1lLmxvY2FsZUNvbXBhcmUoYk1ldGEubmFtZSk7XG59XG4iLCAiaW1wb3J0IHsgQ2FtZWxUb1Bhc2NhbCB9IGZyb20gJy4vdXRpbGl0eS10eXBlcyc7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGtlYmFiIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGtlYmFiaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvS2ViYWJDYXNlID0gKHN0cmluZzogc3RyaW5nKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvKFthLXowLTldKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gY2FtZWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgY2FtZWxpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9DYW1lbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvXihbQS1aXSl8W1xccy1fXSsoXFx3KS9nLCAobWF0Y2gsIHAxLCBwMikgPT5cbiAgICBwMiA/IHAyLnRvVXBwZXJDYXNlKCkgOiBwMS50b0xvd2VyQ2FzZSgpLFxuICApO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBwYXNjYWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcGFzY2FsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvUGFzY2FsQ2FzZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihzdHJpbmc6IFQpOiBDYW1lbFRvUGFzY2FsPFQ+ID0+IHtcbiAgY29uc3QgY2FtZWxDYXNlID0gdG9DYW1lbENhc2Uoc3RyaW5nKTtcblxuICByZXR1cm4gKGNhbWVsQ2FzZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNhbWVsQ2FzZS5zbGljZSgxKSkgYXMgQ2FtZWxUb1Bhc2NhbDxUPjtcbn07XG5cbi8qKlxuICogTWVyZ2VzIGNsYXNzZXMgaW50byBhIHNpbmdsZSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge2FycmF5fSBjbGFzc2VzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHN0cmluZyBvZiBjbGFzc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzZXMgPSA8Q2xhc3NUeXBlID0gc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4oLi4uY2xhc3NlczogQ2xhc3NUeXBlW10pID0+XG4gIGNsYXNzZXNcbiAgICAuZmlsdGVyKChjbGFzc05hbWUsIGluZGV4LCBhcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgQm9vbGVhbihjbGFzc05hbWUpICYmXG4gICAgICAgIChjbGFzc05hbWUgYXMgc3RyaW5nKS50cmltKCkgIT09ICcnICYmXG4gICAgICAgIGFycmF5LmluZGV4T2YoY2xhc3NOYW1lKSA9PT0gaW5kZXhcbiAgICAgICk7XG4gICAgfSlcbiAgICAuam9pbignICcpXG4gICAgLnRyaW0oKTtcbiIsICJleHBvcnQgZGVmYXVsdCB7XG4gIHhtbG5zOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICB3aWR0aDogMjQsXG4gIGhlaWdodDogMjQsXG4gIHZpZXdCb3g6ICcwIDAgMjQgMjQnLFxuICBmaWxsOiAnbm9uZScsXG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gIHN0cm9rZVdpZHRoOiAyLFxuICBzdHJva2VMaW5lY2FwOiAncm91bmQnLFxuICBzdHJva2VMaW5lam9pbjogJ3JvdW5kJyxcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWZhdWx0QXR0cmlidXRlcyBmcm9tICcuL2RlZmF1bHRBdHRyaWJ1dGVzJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuXG5pbnRlcmZhY2UgSWNvbkNvbXBvbmVudFByb3BzIGV4dGVuZHMgTHVjaWRlUHJvcHMge1xuICBpY29uTm9kZTogSWNvbk5vZGU7XG59XG5cbi8qKlxuICogTHVjaWRlIGljb24gY29tcG9uZW50XG4gKlxuICogQGNvbXBvbmVudCBJY29uXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5jb2xvciAtIFRoZSBjb2xvciBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnN0cm9rZVdpZHRoIC0gVGhlIHN0cm9rZSB3aWR0aCBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5hYnNvbHV0ZVN0cm9rZVdpZHRoIC0gV2hldGhlciB0byB1c2UgYWJzb2x1dGUgc3Ryb2tlIHdpZHRoXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY2xhc3NOYW1lIC0gVGhlIGNsYXNzIG5hbWUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7SWNvbk5vZGV9IHByb3BzLmNoaWxkcmVuIC0gVGhlIGNoaWxkcmVuIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5pY29uTm9kZSAtIFRoZSBpY29uIG5vZGUgb2YgdGhlIGljb25cbiAqXG4gKiBAcmV0dXJucyB7Rm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudH0gTHVjaWRlSWNvblxuICovXG5jb25zdCBJY29uID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uQ29tcG9uZW50UHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgY29sb3IgPSAnY3VycmVudENvbG9yJyxcbiAgICAgIHNpemUgPSAyNCxcbiAgICAgIHN0cm9rZVdpZHRoID0gMixcbiAgICAgIGFic29sdXRlU3Ryb2tlV2lkdGgsXG4gICAgICBjbGFzc05hbWUgPSAnJyxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICAuLi5yZXN0XG4gICAgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KFxuICAgICAgJ3N2ZycsXG4gICAgICB7XG4gICAgICAgIHJlZixcbiAgICAgICAgLi4uZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgICBoZWlnaHQ6IHNpemUsXG4gICAgICAgIHN0cm9rZTogY29sb3IsXG4gICAgICAgIHN0cm9rZVdpZHRoOiBhYnNvbHV0ZVN0cm9rZVdpZHRoID8gKE51bWJlcihzdHJva2VXaWR0aCkgKiAyNCkgLyBOdW1iZXIoc2l6ZSkgOiBzdHJva2VXaWR0aCxcbiAgICAgICAgY2xhc3NOYW1lOiBtZXJnZUNsYXNzZXMoJ2x1Y2lkZScsIGNsYXNzTmFtZSksXG4gICAgICAgIC4uLnJlc3QsXG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICAuLi5pY29uTm9kZS5tYXAoKFt0YWcsIGF0dHJzXSkgPT4gY3JlYXRlRWxlbWVudCh0YWcsIGF0dHJzKSksXG4gICAgICAgIC4uLihBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuIDogW2NoaWxkcmVuXSksXG4gICAgICBdLFxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBJY29uO1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBtZXJnZUNsYXNzZXMsIHRvS2ViYWJDYXNlIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuaW1wb3J0IHsgSWNvbk5vZGUsIEx1Y2lkZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgSWNvbiBmcm9tICcuL0ljb24nO1xuXG4vKipcbiAqIENyZWF0ZSBhIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICogQHBhcmFtIHtzdHJpbmd9IGljb25OYW1lXG4gKiBAcGFyYW0ge2FycmF5fSBpY29uTm9kZVxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgY3JlYXRlTHVjaWRlSWNvbiA9IChpY29uTmFtZTogc3RyaW5nLCBpY29uTm9kZTogSWNvbk5vZGUpID0+IHtcbiAgY29uc3QgQ29tcG9uZW50ID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBMdWNpZGVQcm9wcz4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+XG4gICAgY3JlYXRlRWxlbWVudChJY29uLCB7XG4gICAgICByZWYsXG4gICAgICBpY29uTm9kZSxcbiAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKGBsdWNpZGUtJHt0b0tlYmFiQ2FzZShpY29uTmFtZSl9YCwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLFxuICApO1xuXG4gIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGAke2ljb25OYW1lfWA7XG5cbiAgcmV0dXJuIENvbXBvbmVudDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUx1Y2lkZUljb247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd0Rvd25XaWRlTmFycm93XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNeUF4TmlBMElEUWdOQzAwSWlBdlBnb2dJRHh3WVhSb0lHUTlJazAzSURJd1ZqUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRFJvTVRBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElEaG9OeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb05DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy1kb3duLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dEb3duV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93RG93bldpZGVOYXJyb3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20zIDE2IDQgNCA0LTQnLCBrZXk6ICcxY282d2onIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyAyMFY0Jywga2V5OiAnMXlveGVjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDRoMTAnLCBrZXk6ICcxdzg3Z2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgOGg3Jywga2V5OiAnZGp5ZTM0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDQnLCBrZXk6ICdxOHRpaDQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93RG93bldpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd1VwV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBNElEUXROQ0EwSURRaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRjZ05IWXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREUyYURjaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElESXdhRFFpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd1VwV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93VXBXaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyA4IDQtNCA0IDQnLCBrZXk6ICcxMXdsN3UnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyA0djE2Jywga2V5OiAnMWdsZmN4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDEwJywga2V5OiAnMTQzOGppJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDE2aDcnLCBrZXk6ICd1b3Npc3YnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMjBoNCcsIGtleTogJzFrcmMzMicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQXJyb3dVcFdpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGVja1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05pQTVJREUzYkMwMUxUVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGVja1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZWNrID0gY3JlYXRlTHVjaWRlSWNvbignQ2hlY2snLCBbWydwYXRoJywgeyBkOiAnTTIwIDYgOSAxN2wtNS01Jywga2V5OiAnMWdtZjJjJyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGVjaztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25Eb3duXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUE1SURZZ05pQTJMVFlpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkRvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgOSA2IDYgNi02Jywga2V5OiAncXJ1bnNsJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFVnTVRndE5pMDJJRFl0TmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkxlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNSAxOC02LTYgNi02Jywga2V5OiAnMXduZmczJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25SaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0T1NBeE9DQTJMVFl0TmkwMklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uUmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ205IDE4IDYtNi02LTYnLCBrZXk6ICdtdGhod3EnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25SaWdodDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25VcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UVXROaTAyTFRZZ05pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblVwID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblVwJywgW1sncGF0aCcsIHsgZDogJ20xOCAxNS02LTYtNiA2Jywga2V5OiAnMTUzdWR6JyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc0xlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1URWdNVGN0TlMwMUlEVXROU0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRjdE5TMDFJRFV0TlNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc0xlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uc0xlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xMSAxNy01LTUgNS01Jywga2V5OiAnMTN6aGFmJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE4IDE3LTUtNSA1LTUnLCBrZXk6ICdoOGE4ZXQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25zUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQXhOeUExTFRVdE5TMDFJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHhNeUF4TnlBMUxUVXROUzAxSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbnMtcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNSaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgMTcgNS01LTUtNScsIGtleTogJ3huandxJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTEzIDE3IDUtNS01LTUnLCBrZXk6ICcxN3htbWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVIZWxwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJakV5SWlCeVBTSXhNQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PUzR3T1NBNVlUTWdNeUF3SURBZ01TQTFMamd6SURGak1DQXlMVE1nTXkweklETWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXlJREUzYUM0d01TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGUtaGVscFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZUhlbHAgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGVIZWxwJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnLCBrZXk6ICcxbWdsYXknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDMnLCBrZXk6ICcxdTc3M3MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTdoLjAxJywga2V5OiAncDMycDA1JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVIZWxwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJakV5SWlCeVBTSXhNQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2lyY2xlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnLCBrZXk6ICcxbWdsYXknIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENvcHlcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVFFpSUdobGFXZG9kRDBpTVRRaUlIZzlJamdpSUhrOUlqZ2lJSEo0UFNJeUlpQnllVDBpTWlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTkNBeE5tTXRNUzR4SURBdE1pMHVPUzB5TFRKV05HTXdMVEV1TVM0NUxUSWdNaTB5YURFd1l6RXVNU0F3SURJZ0xqa2dNaUF5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29weVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcHkgPSBjcmVhdGVMdWNpZGVJY29uKCdDb3B5JywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTQnLCBoZWlnaHQ6ICcxNCcsIHg6ICc4JywgeTogJzgnLCByeDogJzInLCByeTogJzInLCBrZXk6ICcxN2p5ZWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNCAxNmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAyJywga2V5OiAneml4OXVmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDb3B5O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29ybmVyRG93bkxlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNJNUlERXdJRFFnTVRVZ09TQXlNQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NakFnTkhZM1lUUWdOQ0F3SURBZ01TMDBJRFJJTkNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Nvcm5lci1kb3duLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDb3JuZXJEb3duTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Nvcm5lckRvd25MZWZ0JywgW1xuICBbJ3BvbHlsaW5lJywgeyBwb2ludHM6ICc5IDEwIDQgMTUgOSAyMCcsIGtleTogJ3IzanBydicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMCA0djdhNCA0IDAgMCAxLTQgNEg0Jywga2V5OiAnNm81YjdsJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDb3JuZXJEb3duTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEZpbHRlclxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXZHZiaUJ3YjJsdWRITTlJakl5SURNZ01pQXpJREV3SURFeUxqUTJJREV3SURFNUlERTBJREl4SURFMElERXlMalEySURJeUlETWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9maWx0ZXJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBGaWx0ZXIgPSBjcmVhdGVMdWNpZGVJY29uKCdGaWx0ZXInLCBbXG4gIFsncG9seWdvbicsIHsgcG9pbnRzOiAnMjIgMyAyIDMgMTAgMTIuNDYgMTAgMTkgMTQgMjEgMTQgMTIuNDYgMjIgMycsIGtleTogJzF5Zzc3ZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgR3JpcFZlcnRpY2FsXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0k1SWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlPU0lnWTNrOUlqVWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpFNUlpQnlQU0l4SWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpFMUlpQmplVDBpTVRJaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpTVRVaUlHTjVQU0kxSWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVGtpSUhJOUlqRWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9ncmlwLXZlcnRpY2FsXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgR3JpcFZlcnRpY2FsID0gY3JlYXRlTHVjaWRlSWNvbignR3JpcFZlcnRpY2FsJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxMicsIHI6ICcxJywga2V5OiAnMXZjdGdmJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnaHAwdGNmJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnMTknLCByOiAnMScsIGtleTogJ2ZrampmNicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICcxMicsIHI6ICcxJywga2V5OiAnMXRtYWlqJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzUnLCByOiAnMScsIGtleTogJzE5bDI4ZScgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZjR6b2ozJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBHcmlwVmVydGljYWw7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBLZXlSb3VuZFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWk0MU9EWWdNVGN1TkRFMFFUSWdNaUF3SURBZ01DQXlJREU0TGpneU9GWXlNV0V4SURFZ01DQXdJREFnTVNBeGFETmhNU0F4SURBZ01DQXdJREV0TVhZdE1XRXhJREVnTUNBd0lERWdNUzB4YURGaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhQzR4TnpKaE1pQXlJREFnTUNBd0lERXVOREUwTFM0MU9EWnNMamd4TkMwdU9ERTBZVFl1TlNBMkxqVWdNQ0F4SURBdE5DMDBlaUlnTHo0S0lDQThZMmx5WTJ4bElHTjRQU0l4Tmk0MUlpQmplVDBpTnk0MUlpQnlQU0l1TlNJZ1ptbHNiRDBpWTNWeWNtVnVkRU52Ykc5eUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2tleS1yb3VuZFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEtleVJvdW5kID0gY3JlYXRlTHVjaWRlSWNvbignS2V5Um91bmQnLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ00yLjU4NiAxNy40MTRBMiAyIDAgMCAwIDIgMTguODI4VjIxYTEgMSAwIDAgMCAxIDFoM2ExIDEgMCAwIDAgMS0xdi0xYTEgMSAwIDAgMSAxLTFoMWExIDEgMCAwIDAgMS0xdi0xYTEgMSAwIDAgMSAxLTFoLjE3MmEyIDIgMCAwIDAgMS40MTQtLjU4NmwuODE0LS44MTRhNi41IDYuNSAwIDEgMC00LTR6JyxcbiAgICAgIGtleTogJzFzNnQ3dCcsXG4gICAgfSxcbiAgXSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTYuNScsIGN5OiAnNy41JywgcjogJy41JywgZmlsbDogJ2N1cnJlbnRDb2xvcicsIGtleTogJ3cwZWtwZycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgS2V5Um91bmQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNYXhpbWl6ZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBelNEVmhNaUF5SURBZ01DQXdMVElnTW5ZeklpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQTRWalZoTWlBeUlEQWdNQ0F3TFRJdE1tZ3RNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NeUF4Tm5ZellUSWdNaUF3SURBZ01DQXlJREpvTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRZZ01qRm9NMkV5SURJZ01DQXdJREFnTWkweWRpMHpJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tYXhpbWl6ZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1heGltaXplID0gY3JlYXRlTHVjaWRlSWNvbignTWF4aW1pemUnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDNINWEyIDIgMCAwIDAtMiAydjMnLCBrZXk6ICcxZGNtaXQnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgOFY1YTIgMiAwIDAgMC0yLTJoLTMnLCBrZXk6ICcxZTRndDMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxNnYzYTIgMiAwIDAgMCAyIDJoMycsIGtleTogJ3dzbDVzYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNiAyMWgzYTIgMiAwIDAgMCAyLTJ2LTMnLCBrZXk6ICcxOHRyZWsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1heGltaXplO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTWluaW1pemVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXpkak5oTWlBeUlEQWdNQ0F4TFRJZ01rZ3pJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0E0YUMwellUSWdNaUF3SURBZ01TMHlMVEpXTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE5tZ3pZVElnTWlBd0lEQWdNU0F5SURKMk15SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UWWdNakYyTFROaE1pQXlJREFnTUNBeElESXRNbWd6SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWluaW1pemVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNaW5pbWl6ZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ01pbmltaXplJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAzdjNhMiAyIDAgMCAxLTIgMkgzJywga2V5OiAnaG9oYnRyJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDhoLTNhMiAyIDAgMCAxLTItMlYzJywga2V5OiAnNWp3MWYzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTZoM2EyIDIgMCAwIDEgMiAydjMnLCBrZXk6ICcxOTh0dnInIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMjF2LTNhMiAyIDAgMCAxIDItMmgzJywga2V5OiAncGg4bXhwJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNaW5pbWl6ZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1vdmVEb3duXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F4T0V3eE1pQXlNa3d4TmlBeE9DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNbFl5TWlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdmUtZG93blxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1vdmVEb3duID0gY3JlYXRlTHVjaWRlSWNvbignTW92ZURvd24nLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDE4TDEyIDIyTDE2IDE4Jywga2V5OiAnY3NrdmZ2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDJWMjInLCBrZXk6ICdyODlyemsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vdmVEb3duO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTW92ZVVwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0EyVERFeUlESk1NVFlnTmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01sWXlNaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbW92ZS11cFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1vdmVVcCA9IGNyZWF0ZUx1Y2lkZUljb24oJ01vdmVVcCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggNkwxMiAyTDE2IDYnLCBrZXk6ICcxeXZreXgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMlYyMicsIGtleTogJ3I4OXJ6aycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTW92ZVVwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGFuZWxMZWZ0Q2xvc2VcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNUlETjJNVGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEUySURFMUxUTXRNeUF6TFRNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BhbmVsLWxlZnQtY2xvc2VcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQYW5lbExlZnRDbG9zZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BhbmVsTGVmdENsb3NlJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOSAzdjE4Jywga2V5OiAnZmgzaHFhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE2IDE1LTMtMyAzLTMnLCBrZXk6ICcxNHk5OXonIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsTGVmdENsb3NlO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGFuZWxMZWZ0T3BlblxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGdpSUhnOUlqTWlJSGs5SWpNaUlISjRQU0l5SWlBdlBnb2dJRHh3WVhSb0lHUTlJazA1SUROMk1UZ2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaWJURTBJRGtnTXlBekxUTWdNeUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGFuZWwtbGVmdC1vcGVuXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGFuZWxMZWZ0T3BlbiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BhbmVsTGVmdE9wZW4nLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxOCcsIGhlaWdodDogJzE4JywgeDogJzMnLCB5OiAnMycsIHJ4OiAnMicsIGtleTogJ2FmaXR2NycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005IDN2MTgnLCBrZXk6ICdmaDNocWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTQgOSAzIDMtMyAzJywga2V5OiAnODAxMGVlJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbExlZnRPcGVuO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGluT2ZmXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVElnTVRkMk5TSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UVWdPUzR6TkZZM1lURWdNU0F3SURBZ01TQXhMVEVnTWlBeUlEQWdNQ0F3SURBdE5FZzNMamc1SWlBdlBnb2dJRHh3WVhSb0lHUTlJbTB5SURJZ01qQWdNakFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVGtnT1hZeExqYzJZVElnTWlBd0lEQWdNUzB4TGpFeElERXVOemxzTFRFdU56Z3VPVUV5SURJZ01DQXdJREFnTlNBeE5TNHlORll4Tm1FeElERWdNQ0F3SURBZ01TQXhhREV4SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGluLW9mZlxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBpbk9mZiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1Bpbk9mZicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3djUnLCBrZXk6ICdiYjFkdTknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTUgOS4zNFY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg3Ljg5Jywga2V5OiAnem53bnpxJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTIgMiAyMCAyMCcsIGtleTogJzFvb2V3eScgfV0sXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDl2MS43NmEyIDIgMCAwIDEtMS4xMSAxLjc5bC0xLjc4LjlBMiAyIDAgMCAwIDUgMTUuMjRWMTZhMSAxIDAgMCAwIDEgMWgxMScsXG4gICAgICBrZXk6ICdjOXFobTInLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGluT2ZmO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGluXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVElnTVRkMk5TSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9TQXhNQzQzTm1FeUlESWdNQ0F3SURFdE1TNHhNU0F4TGpjNWJDMHhMamM0TGpsQk1pQXlJREFnTUNBd0lEVWdNVFV1TWpSV01UWmhNU0F4SURBZ01DQXdJREVnTVdneE1tRXhJREVnTUNBd0lEQWdNUzB4ZGkwdU56WmhNaUF5SURBZ01DQXdMVEV1TVRFdE1TNDNPV3d0TVM0M09DMHVPVUV5SURJZ01DQXdJREVnTVRVZ01UQXVOelpXTjJFeElERWdNQ0F3SURFZ01TMHhJRElnTWlBd0lEQWdNQ0F3TFRSSU9HRXlJRElnTUNBd0lEQWdNQ0EwSURFZ01TQXdJREFnTVNBeElERjZJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9waW5cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQaW4gPSBjcmVhdGVMdWNpZGVJY29uKCdQaW4nLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN3Y1Jywga2V5OiAnYmIxZHU5JyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgMTAuNzZhMiAyIDAgMCAxLTEuMTEgMS43OWwtMS43OC45QTIgMiAwIDAgMCA1IDE1LjI0VjE2YTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtLjc2YTIgMiAwIDAgMC0xLjExLTEuNzlsLTEuNzgtLjlBMiAyIDAgMCAxIDE1IDEwLjc2VjdhMSAxIDAgMCAxIDEtMSAyIDIgMCAwIDAgMC00SDhhMiAyIDAgMCAwIDAgNCAxIDEgMCAwIDEgMSAxeicsXG4gICAgICBrZXk6ICcxbmt6OGInLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGluO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUmVmcmVzaEN3XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NeUF4TW1FNUlEa2dNQ0F3SURFZ09TMDVJRGt1TnpVZ09TNDNOU0F3SURBZ01TQTJMamMwSURJdU56Uk1NakVnT0NJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTWpFZ00zWTFhQzAxSWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBeE1tRTVJRGtnTUNBd0lERXRPU0E1SURrdU56VWdPUzQzTlNBd0lEQWdNUzAyTGpjMExUSXVOelJNTXlBeE5pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9DQXhOa2d6ZGpVaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3JlZnJlc2gtY3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBSZWZyZXNoQ3cgPSBjcmVhdGVMdWNpZGVJY29uKCdSZWZyZXNoQ3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00zIDEyYTkgOSAwIDAgMSA5LTkgOS43NSA5Ljc1IDAgMCAxIDYuNzQgMi43NEwyMSA4Jywga2V5OiAndjloNXZjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDN2NWgtNScsIGtleTogJzFxN3RvMCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNicsIGtleTogJzN1aWZsMycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ004IDE2SDN2NScsIGtleTogJzFjdjY3OCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmcmVzaEN3O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgVGFibGUyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PU0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNblkwYlRZdE5tZ3hNR0V5SURJZ01DQXdJREVnTWlBeWRqUk5PU0F6ZGpFNGJUQWdNR2d4TUdFeUlESWdNQ0F3SURBZ01pMHlWamxOT1NBeU1VZzFZVElnTWlBd0lEQWdNUzB5TFRKV09XMHdJREJvTVRnaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3RhYmxlLTJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBUYWJsZTIgPSBjcmVhdGVMdWNpZGVJY29uKCdUYWJsZTInLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDNINWEyIDIgMCAwIDAtMiAydjRtNi02aDEwYTIgMiAwIDAgMSAyIDJ2NE05IDN2MThtMCAwaDEwYTIgMiAwIDAgMCAyLTJWOU05IDIxSDVhMiAyIDAgMCAxLTItMlY5bTAgMGgxOCcsXG4gICAgICBrZXk6ICdndWdqODMnLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgVGFibGUyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgWFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRnZ05pQTJJREU0SWlBdlBnb2dJRHh3WVhSb0lHUTlJbTAySURZZ01USWdNVElpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMveFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFggPSBjcmVhdGVMdWNpZGVJY29uKCdYJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTggNiA2IDE4Jywga2V5OiAnMWJsNWY4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTYgNiAxMiAxMicsIGtleTogJ2Q4Yms2dicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgWDtcbiIsICJpbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGJhZGdlVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLXB4LTIuNSBwcy1weS0wLjUgcHMtdGV4dC14cyBwcy1mb250LXNlbWlib2xkIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1yaW5nLTIgZm9jdXM6cHMtcmluZy1yaW5nIGZvY3VzOnBzLXJpbmctb2Zmc2V0LTJcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLXByaW1hcnkvODBcIixcbiAgICAgICAgc2Vjb25kYXJ5OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBob3Zlcjpwcy1iZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctZGVzdHJ1Y3RpdmUgcHMtdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1kZXN0cnVjdGl2ZS84MFwiLFxuICAgICAgICBvdXRsaW5lOiBcInBzLXRleHQtZm9yZWdyb3VuZFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFkZ2VQcm9wcyBleHRlbmRzIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgVmFyaWFudFByb3BzPHR5cGVvZiBiYWRnZVZhcmlhbnRzPiB7fVxuXG5mdW5jdGlvbiBCYWRnZSh7IGNsYXNzTmFtZSwgdmFyaWFudCwgLi4ucHJvcHMgfTogQmFkZ2VQcm9wcykge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NuKGJhZGdlVmFyaWFudHMoeyB2YXJpYW50IH0pLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBCYWRnZSwgYmFkZ2VWYXJpYW50cyB9O1xuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYnV0dG9uVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWdhcC0yIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXJvdW5kZWQtbWQgcHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS85MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTogXCJwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzkwXCIsXG4gICAgICAgIG91dGxpbmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGdob3N0OiBcImhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGxpbms6IFwicHMtdGV4dC1wcmltYXJ5IHBzLXVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjpwcy11bmRlcmxpbmVcIixcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtaC05IHBzLXB4LTQgcHMtcHktMlwiLFxuICAgICAgICB4czogXCJwcy1oLTYgcHMtcm91bmRlZC1tZCBwcy1weC0yIHBzLXRleHQteHNcIixcbiAgICAgICAgc206IFwicHMtaC04IHBzLXJvdW5kZWQtbWQgcHMtcHgtMyBwcy10ZXh0LXhzXCIsXG4gICAgICAgIGxnOiBcInBzLWgtMTAgcHMtcm91bmRlZC1tZCBwcy1weC04XCIsXG4gICAgICAgIGljb246IFwicHMtaC05IHBzLXctOVwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgICBzaXplOiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xuICBleHRlbmRzIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxCdXR0b25FbGVtZW50LCBCdXR0b25Qcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdmFyaWFudCwgc2l6ZSwgYXNDaGlsZCA9IGZhbHNlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuICAgIHJldHVybiA8Q29tcCBjbGFzc05hbWU9e2NuKGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSwgY2xhc3NOYW1lIH0pKX0gcmVmPXtyZWZ9IHsuLi5wcm9wc30gLz47XG4gIH0sXG4pO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gXCJCdXR0b25cIjtcblxuZXhwb3J0IHsgQnV0dG9uLCBidXR0b25WYXJpYW50cyB9O1xuIiwgImltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgUG9wb3ZlciA9IFBvcG92ZXJQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgUG9wb3ZlclRyaWdnZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IFBvcG92ZXJBbmNob3IgPSBQb3BvdmVyUHJpbWl0aXZlLkFuY2hvcjtcblxuY29uc3QgUG9wb3ZlckNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBhbGlnbiA9IFwiY2VudGVyXCIsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFBvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy13LTcyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC00IHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1wb3BvdmVyLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ29udGVudC5kaXNwbGF5TmFtZSA9IFBvcG92ZXJQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgUG9wb3ZlciwgUG9wb3ZlclRyaWdnZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyQW5jaG9yIH07XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJpbnNlcnRcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmluc2VydCh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdCwgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhuZXdEYXRhKSB7XG4gICAgICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YTxBZGFwdGVyUXVlcnlSZXN1bHQ+KFxuICAgICAgICB7XG4gICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgIC8vIGhlcmUgd2UgcGFydGlhbGx5IG1hdGNoIHRoZSBxdWVyeSBrZXkgdG8gZ2V0IHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgICAgfSxcbiAgICAgICAgKG9sZERhdGEpID0+IHtcbiAgICAgICAgICBpZiAob2xkRGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2xkRGF0YTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub2xkRGF0YSxcbiAgICAgICAgICAgIHJvd3M6IFsuLi5uZXdEYXRhLnJvd3MsIC4uLm9sZERhdGEucm93c10sXG4gICAgICAgICAgfSBzYXRpc2ZpZXMgQWRhcHRlclF1ZXJ5UmVzdWx0O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlDbGllbnQsIFF1ZXJ5Q2xpZW50UHJvdmlkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyBSZWFjdFF1ZXJ5RGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zb25uZXJcIjtcbmltcG9ydCB7IE51cXNIYXNoQWRhcHRlciB9IGZyb20gXCIuL051cXNIYXNoQWRhcHRlclwiO1xuaW1wb3J0IHsgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgfSBmcm9tIFwiLi9TdHVkaW9cIjtcblxuLyoqXG4gKiBTdHVkaW8gY29udGV4dCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuaW50ZXJmYWNlIFN0dWRpb0NvbnRleHRWYWx1ZSB7XG4gIGFjdGl2ZVRhYmxlOiBUYWJsZSB8IG51bGw7XG4gIGFjdGl2ZVNjaGVtYTogc3RyaW5nO1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBzZXRBY3RpdmVUYWJsZTogKHRhYmxlOiBUYWJsZSB8IG51bGwpID0+IHZvaWQ7XG4gIHNldEFjdGl2ZVNjaGVtYTogKHNjaGVtYTogc3RyaW5nKSA9PiB2b2lkO1xuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBlbWl0VGVsZW1ldHJ5RXZlbnQ6IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbiAgLy8gVUkgc3RhdGVcbiAgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuICB0b2dnbGVGdWxsc2NyZWVuOiAoKSA9PiB2b2lkO1xuICBpc05hdmlnYXRpb25PcGVuOiBib29sZWFuO1xuICB0b2dnbGVOYXZpZ2F0aW9uOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBxdWVyeUNsaWVudCA9IG5ldyBRdWVyeUNsaWVudCgpO1xuXG4vKipcbiAqIENvbnRleHQgZm9yIHNoYXJpbmcgU3R1ZGlvIHN0YXRlIGFjcm9zcyBjb21wb25lbnRzXG4gKi9cbmNvbnN0IFN0dWRpb0NvbnRleHQgPSBjcmVhdGVDb250ZXh0PFN0dWRpb0NvbnRleHRWYWx1ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufT47XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW9Db250ZXh0UHJvdmlkZXIocHJvcHM6IFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIC4uLm90aGVyUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBbYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlXSA9IHVzZVN0YXRlPFRhYmxlIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFthY3RpdmVTY2hlbWEsIHNldEFjdGl2ZVNjaGVtYV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHByb3BzLmFkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcInB1YmxpY1wiKTtcbiAgY29uc3QgW2lzRnVsbHNjcmVlbiwgc2V0SXNGdWxsc2NyZWVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzTmF2aWdhdGlvbk9wZW4sIHNldElzTmF2aWdhdGlvbk9wZW5dID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgbGV0IG9uRXJyb3IgPSBwcm9wcy5vbkVycm9yO1xuICBvbkVycm9yID8/PSAoZXJyb3I6IEVycm9yKSA9PiB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKTtcblxuICBjb25zdCBlbWl0VGVsZW1ldHJ5RXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMub25UZWxlbWV0cnlFdmVudCA/PyAoKCkgPT4ge30pO1xuICB9LCBbcHJvcHMub25UZWxlbWV0cnlFdmVudF0pO1xuXG4gIGNvbnN0IHRvZ2dsZUZ1bGxzY3JlZW4gPSAoKSA9PiBzZXRJc0Z1bGxzY3JlZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgY29uc3QgdG9nZ2xlTmF2aWdhdGlvbiA9ICgpID0+IHNldElzTmF2aWdhdGlvbk9wZW4oKHByZXYpID0+ICFwcmV2KTtcbiAgcmV0dXJuIChcbiAgICA8UXVlcnlDbGllbnRQcm92aWRlciBjbGllbnQ9e3F1ZXJ5Q2xpZW50fT5cbiAgICAgIDxSZWFjdFF1ZXJ5RGV2dG9vbHMgLz5cbiAgICAgIDxUb2FzdGVyIC8+XG4gICAgICA8TnVxc0hhc2hBZGFwdGVyPlxuICAgICAgICA8U3R1ZGlvQ29udGV4dC5Qcm92aWRlclxuICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICAuLi5vdGhlclByb3BzLFxuICAgICAgICAgICAgYWN0aXZlVGFibGUsXG4gICAgICAgICAgICBhY3RpdmVTY2hlbWEsXG4gICAgICAgICAgICBpc0Z1bGxzY3JlZW4sXG4gICAgICAgICAgICBzZXRBY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIHNldEFjdGl2ZVNjaGVtYSxcbiAgICAgICAgICAgIG9uRXJyb3IsXG4gICAgICAgICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQsXG4gICAgICAgICAgICB0b2dnbGVGdWxsc2NyZWVuLFxuICAgICAgICAgICAgaXNOYXZpZ2F0aW9uT3BlbixcbiAgICAgICAgICAgIHRvZ2dsZU5hdmlnYXRpb24sXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9TdHVkaW9Db250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9OdXFzSGFzaEFkYXB0ZXI+XG4gICAgPC9RdWVyeUNsaWVudFByb3ZpZGVyPlxuICApO1xufVxuXG4vKipcbiAqIEhvb2sgdG8gYWNjZXNzIFN0dWRpbyBjb250ZXh0XG4gKiBAdGhyb3dzIEVycm9yIGlmIHVzZWQgb3V0c2lkZSBvZiBTdHVkaW8uUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0dWRpbygpOiBTdHVkaW9Db250ZXh0VmFsdWUge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChTdHVkaW9Db250ZXh0KTtcblxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJgdXNlU3R1ZGlvYCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYFN0dWRpb0NvbnRleHQuUHJvdmlkZXJgXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG4iLCAiJ3VzZSBjbGllbnQnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG9ubGluZU1hbmFnZXIsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUge1xuICBEZXZ0b29sc0J1dHRvblBvc2l0aW9uLFxuICBEZXZ0b29sc0Vycm9yVHlwZSxcbiAgRGV2dG9vbHNQb3NpdGlvbixcbn0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuZXhwb3J0IGludGVyZmFjZSBEZXZ0b29sc09wdGlvbnMge1xuICAvKipcbiAgICogU2V0IHRoaXMgdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgZGV2IHRvb2xzIHRvIGRlZmF1bHQgdG8gYmVpbmcgb3BlblxuICAgKi9cbiAgaW5pdGlhbElzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgUmVhY3QgUXVlcnkgbG9nbyB0byBvcGVuIGFuZCBjbG9zZSB0aGUgZGV2dG9vbHMgcGFuZWwuXG4gICAqICd0b3AtbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfCAnYm90dG9tLXJpZ2h0J1xuICAgKiBEZWZhdWx0cyB0byAnYm90dG9tLXJpZ2h0Jy5cbiAgICovXG4gIGJ1dHRvblBvc2l0aW9uPzogRGV2dG9vbHNCdXR0b25Qb3NpdGlvblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBSZWFjdCBRdWVyeSBkZXZ0b29scyBwYW5lbC5cbiAgICogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCdcbiAgICogRGVmYXVsdHMgdG8gJ2JvdHRvbScuXG4gICAqL1xuICBwb3NpdGlvbj86IERldnRvb2xzUG9zaXRpb25cbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YW5jZSBvZiBRdWVyeUNsaWVudFxuICAgKi9cbiAgY2xpZW50PzogUXVlcnlDbGllbnRcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvcnMgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhlIGRldnRvb2xzLlxuICAgKi9cbiAgZXJyb3JUeXBlcz86IEFycmF5PERldnRvb2xzRXJyb3JUeXBlPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcGFzcyBhIG5vbmNlIHRvIHRoZSBzdHlsZSB0YWcgdGhhdCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IChDU1ApIG5vbmNlIHRvIGFsbG93IGlubGluZSBzdHlsZXMuXG4gICAqL1xuICBzdHlsZU5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGF0dGFjaCB0aGUgZGV2dG9vbCdzIHN0eWxlcyB0byBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBET00uXG4gICAqL1xuICBzaGFkb3dET01UYXJnZXQ/OiBTaGFkb3dSb290XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFF1ZXJ5RGV2dG9vbHMoXG4gIHByb3BzOiBEZXZ0b29sc09wdGlvbnMsXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudChwcm9wcy5jbGllbnQpXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3Qge1xuICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgIHBvc2l0aW9uLFxuICAgIGluaXRpYWxJc09wZW4sXG4gICAgZXJyb3JUeXBlcyxcbiAgICBzdHlsZU5vbmNlLFxuICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgfSA9IHByb3BzXG4gIGNvbnN0IFtkZXZ0b29sc10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICBuZXcgVGFuc3RhY2tRdWVyeURldnRvb2xzKHtcbiAgICAgIGNsaWVudDogcXVlcnlDbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcjogJ1JlYWN0IFF1ZXJ5JyxcbiAgICAgIHZlcnNpb246ICc1JyxcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgIH0pLFxuICApXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRDbGllbnQocXVlcnlDbGllbnQpXG4gIH0sIFtxdWVyeUNsaWVudCwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJ1dHRvblBvc2l0aW9uKSB7XG4gICAgICBkZXZ0b29scy5zZXRCdXR0b25Qb3NpdGlvbihidXR0b25Qb3NpdGlvbilcbiAgICB9XG4gIH0sIFtidXR0b25Qb3NpdGlvbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBkZXZ0b29scy5zZXRQb3NpdGlvbihwb3NpdGlvbilcbiAgICB9XG4gIH0sIFtwb3NpdGlvbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0SW5pdGlhbElzT3Blbihpbml0aWFsSXNPcGVuIHx8IGZhbHNlKVxuICB9LCBbaW5pdGlhbElzT3BlbiwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzIHx8IFtdKVxuICB9LCBbZXJyb3JUeXBlcywgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICBkZXZ0b29scy5tb3VudChyZWYuY3VycmVudClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGV2dG9vbHMudW5tb3VudCgpXG4gICAgfVxuICB9LCBbZGV2dG9vbHNdKVxuXG4gIHJldHVybiA8ZGl2IGRpcj1cImx0clwiIGNsYXNzTmFtZT1cInRzcWQtcGFyZW50LWNvbnRhaW5lclwiIHJlZj17cmVmfT48L2Rpdj5cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTaWduYWwsIHJlbmRlciwgbGF6eSwgc2V0dXBTdHlsZVNoZWV0LCBjcmVhdGVDb21wb25lbnQsIG1lcmdlUHJvcHMgfSBmcm9tICcuL2NodW5rL0hSN1lYWjVILmpzJztcblxuLy8gc3JjL1RhbnN0YWNrUXVlcnlEZXZ0b29scy50c3hcbnZhciBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMgPSBjbGFzcyB7XG4gICNjbGllbnQ7XG4gICNvbmxpbmVNYW5hZ2VyO1xuICAjcXVlcnlGbGF2b3I7XG4gICN2ZXJzaW9uO1xuICAjaXNNb3VudGVkID0gZmFsc2U7XG4gICNzdHlsZU5vbmNlO1xuICAjc2hhZG93RE9NVGFyZ2V0O1xuICAjYnV0dG9uUG9zaXRpb247XG4gICNwb3NpdGlvbjtcbiAgI2luaXRpYWxJc09wZW47XG4gICNlcnJvclR5cGVzO1xuICAjQ29tcG9uZW50O1xuICAjZGlzcG9zZTtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3IsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXRcbiAgICB9ID0gY29uZmlnO1xuICAgIHRoaXMuI2NsaWVudCA9IGNyZWF0ZVNpZ25hbChjbGllbnQpO1xuICAgIHRoaXMuI3F1ZXJ5Rmxhdm9yID0gcXVlcnlGbGF2b3I7XG4gICAgdGhpcy4jdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy4jb25saW5lTWFuYWdlciA9IG9ubGluZU1hbmFnZXI7XG4gICAgdGhpcy4jc3R5bGVOb25jZSA9IHN0eWxlTm9uY2U7XG4gICAgdGhpcy4jc2hhZG93RE9NVGFyZ2V0ID0gc2hhZG93RE9NVGFyZ2V0O1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uID0gY3JlYXRlU2lnbmFsKGJ1dHRvblBvc2l0aW9uKTtcbiAgICB0aGlzLiNwb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChwb3NpdGlvbik7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlbiA9IGNyZWF0ZVNpZ25hbChpbml0aWFsSXNPcGVuKTtcbiAgICB0aGlzLiNlcnJvclR5cGVzID0gY3JlYXRlU2lnbmFsKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldEJ1dHRvblBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jcG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldEluaXRpYWxJc09wZW4oaXNPcGVuKSB7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlblsxXShpc09wZW4pO1xuICB9XG4gIHNldEVycm9yVHlwZXMoZXJyb3JUeXBlcykge1xuICAgIHRoaXMuI2Vycm9yVHlwZXNbMV0oZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0Q2xpZW50KGNsaWVudCkge1xuICAgIHRoaXMuI2NsaWVudFsxXShjbGllbnQpO1xuICB9XG4gIG1vdW50KGVsKSB7XG4gICAgaWYgKHRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgYWxyZWFkeSBtb3VudGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCBkaXNwb3NlID0gcmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IF9zZWxmJCA9IHRoaXM7XG4gICAgICBjb25zdCBbYnRuUG9zaXRpb25dID0gdGhpcy4jYnV0dG9uUG9zaXRpb247XG4gICAgICBjb25zdCBbcG9zXSA9IHRoaXMuI3Bvc2l0aW9uO1xuICAgICAgY29uc3QgW2lzT3Blbl0gPSB0aGlzLiNpbml0aWFsSXNPcGVuO1xuICAgICAgY29uc3QgW2Vycm9yc10gPSB0aGlzLiNlcnJvclR5cGVzO1xuICAgICAgY29uc3QgW3F1ZXJ5Q2xpZW50XSA9IHRoaXMuI2NsaWVudDtcbiAgICAgIGxldCBEZXZ0b29scztcbiAgICAgIGlmICh0aGlzLiNDb21wb25lbnQpIHtcbiAgICAgICAgRGV2dG9vbHMgPSB0aGlzLiNDb21wb25lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEZXZ0b29scyA9IGxhenkoKCkgPT4gaW1wb3J0KCcuL0RldnRvb2xzQ29tcG9uZW50L0NQSU9aUzVYLmpzJykpO1xuICAgICAgICB0aGlzLiNDb21wb25lbnQgPSBEZXZ0b29scztcbiAgICAgIH1cbiAgICAgIHNldHVwU3R5bGVTaGVldCh0aGlzLiNzdHlsZU5vbmNlLCB0aGlzLiNzaGFkb3dET01UYXJnZXQpO1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEZXZ0b29scywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGdldCBxdWVyeUZsYXZvcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNxdWVyeUZsYXZvcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jdmVyc2lvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9ubGluZU1hbmFnZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jb25saW5lTWFuYWdlcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHNoYWRvd0RPTVRhcmdldCgpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNzaGFkb3dET01UYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZ2V0IGNsaWVudCgpIHtcbiAgICAgICAgICByZXR1cm4gcXVlcnlDbGllbnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJ1dHRvblBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBidG5Qb3NpdGlvbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHBvcygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgaW5pdGlhbElzT3BlbigpIHtcbiAgICAgICAgICByZXR1cm4gaXNPcGVuKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvclR5cGVzKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcnMoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0sIGVsKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuI2Rpc3Bvc2UgPSBkaXNwb3NlO1xuICB9XG4gIHVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIG5vdCBtb3VudGVkXCIpO1xuICAgIH1cbiAgICB0aGlzLiNkaXNwb3NlPy4oKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSBmYWxzZTtcbiAgfVxufTtcblxuLy8gc3JjL1RhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsLnRzeFxudmFyIFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsID0gY2xhc3Mge1xuICAjY2xpZW50O1xuICAjb25saW5lTWFuYWdlcjtcbiAgI3F1ZXJ5Rmxhdm9yO1xuICAjdmVyc2lvbjtcbiAgI2lzTW91bnRlZCA9IGZhbHNlO1xuICAjc3R5bGVOb25jZTtcbiAgI3NoYWRvd0RPTVRhcmdldDtcbiAgI2J1dHRvblBvc2l0aW9uO1xuICAjcG9zaXRpb247XG4gICNpbml0aWFsSXNPcGVuO1xuICAjZXJyb3JUeXBlcztcbiAgI29uQ2xvc2U7XG4gICNDb21wb25lbnQ7XG4gICNkaXNwb3NlO1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcixcbiAgICAgIHZlcnNpb24sXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICAgIG9uQ2xvc2VcbiAgICB9ID0gY29uZmlnO1xuICAgIHRoaXMuI2NsaWVudCA9IGNyZWF0ZVNpZ25hbChjbGllbnQpO1xuICAgIHRoaXMuI3F1ZXJ5Rmxhdm9yID0gcXVlcnlGbGF2b3I7XG4gICAgdGhpcy4jdmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy4jb25saW5lTWFuYWdlciA9IG9ubGluZU1hbmFnZXI7XG4gICAgdGhpcy4jc3R5bGVOb25jZSA9IHN0eWxlTm9uY2U7XG4gICAgdGhpcy4jc2hhZG93RE9NVGFyZ2V0ID0gc2hhZG93RE9NVGFyZ2V0O1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uID0gY3JlYXRlU2lnbmFsKGJ1dHRvblBvc2l0aW9uKTtcbiAgICB0aGlzLiNwb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChwb3NpdGlvbik7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlbiA9IGNyZWF0ZVNpZ25hbChpbml0aWFsSXNPcGVuKTtcbiAgICB0aGlzLiNlcnJvclR5cGVzID0gY3JlYXRlU2lnbmFsKGVycm9yVHlwZXMpO1xuICAgIHRoaXMuI29uQ2xvc2UgPSBjcmVhdGVTaWduYWwob25DbG9zZSk7XG4gIH1cbiAgc2V0QnV0dG9uUG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0UG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNwb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0SW5pdGlhbElzT3Blbihpc09wZW4pIHtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuWzFdKGlzT3Blbik7XG4gIH1cbiAgc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzKSB7XG4gICAgdGhpcy4jZXJyb3JUeXBlc1sxXShlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRDbGllbnQoY2xpZW50KSB7XG4gICAgdGhpcy4jY2xpZW50WzFdKGNsaWVudCk7XG4gIH1cbiAgc2V0T25DbG9zZShvbkNsb3NlKSB7XG4gICAgdGhpcy4jb25DbG9zZVsxXSgoKSA9PiBvbkNsb3NlKTtcbiAgfVxuICBtb3VudChlbCkge1xuICAgIGlmICh0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIGFscmVhZHkgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGlzcG9zZSA9IHJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBfc2VsZiQgPSB0aGlzO1xuICAgICAgY29uc3QgW2J0blBvc2l0aW9uXSA9IHRoaXMuI2J1dHRvblBvc2l0aW9uO1xuICAgICAgY29uc3QgW3Bvc10gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtpc09wZW5dID0gdGhpcy4jaW5pdGlhbElzT3BlbjtcbiAgICAgIGNvbnN0IFtlcnJvcnNdID0gdGhpcy4jZXJyb3JUeXBlcztcbiAgICAgIGNvbnN0IFtxdWVyeUNsaWVudF0gPSB0aGlzLiNjbGllbnQ7XG4gICAgICBjb25zdCBbb25DbG9zZV0gPSB0aGlzLiNvbkNsb3NlO1xuICAgICAgbGV0IERldnRvb2xzO1xuICAgICAgaWYgKHRoaXMuI0NvbXBvbmVudCkge1xuICAgICAgICBEZXZ0b29scyA9IHRoaXMuI0NvbXBvbmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERldnRvb2xzID0gbGF6eSgoKSA9PiBpbXBvcnQoJy4vRGV2dG9vbHNQYW5lbENvbXBvbmVudC9PS0Y2RTQ1Ui5qcycpKTtcbiAgICAgICAgdGhpcy4jQ29tcG9uZW50ID0gRGV2dG9vbHM7XG4gICAgICB9XG4gICAgICBzZXR1cFN0eWxlU2hlZXQodGhpcy4jc3R5bGVOb25jZSwgdGhpcy4jc2hhZG93RE9NVGFyZ2V0KTtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGV2dG9vbHMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgcXVlcnlGbGF2b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jcXVlcnlGbGF2b3I7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3ZlcnNpb247XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbmxpbmVNYW5hZ2VyKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI29ubGluZU1hbmFnZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzaGFkb3dET01UYXJnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jc2hhZG93RE9NVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBidXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYnRuUG9zaXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwb3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGluaXRpYWxJc09wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JUeXBlcygpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbkNsb3NlKCkge1xuICAgICAgICAgIHJldHVybiBvbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9LCBlbCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgfVxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgdGhpcy4jZGlzcG9zZT8uKCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gZmFsc2U7XG4gIH1cbn07XG5cbmV4cG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29scywgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgfTtcbiIsICIndXNlIGNsaWVudCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgb25saW5lTWFuYWdlciwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5pbXBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgRGV2dG9vbHNFcnJvclR5cGUgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuXG5leHBvcnQgaW50ZXJmYWNlIERldnRvb2xzUGFuZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YW5jZSBvZiBRdWVyeUNsaWVudFxuICAgKi9cbiAgY2xpZW50PzogUXVlcnlDbGllbnRcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gZGVmaW5lIGN1c3RvbSBlcnJvcnMgdGhhdCBjYW4gYmUgc2hvd24gaW4gdGhlIGRldnRvb2xzLlxuICAgKi9cbiAgZXJyb3JUeXBlcz86IEFycmF5PERldnRvb2xzRXJyb3JUeXBlPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcGFzcyBhIG5vbmNlIHRvIHRoZSBzdHlsZSB0YWcgdGhhdCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaGVhZC4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IChDU1ApIG5vbmNlIHRvIGFsbG93IGlubGluZSBzdHlsZXMuXG4gICAqL1xuICBzdHlsZU5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGF0dGFjaCB0aGUgZGV2dG9vbCdzIHN0eWxlcyB0byBzcGVjaWZpYyBlbGVtZW50IGluIHRoZSBET00uXG4gICAqL1xuICBzaGFkb3dET01UYXJnZXQ/OiBTaGFkb3dSb290XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBzdHlsZXMgZm9yIHRoZSBkZXZ0b29scyBwYW5lbFxuICAgKiBAZGVmYXVsdCB7IGhlaWdodDogJzUwMHB4JyB9XG4gICAqIEBleGFtcGxlIHsgaGVpZ2h0OiAnMTAwJScgfVxuICAgKiBAZXhhbXBsZSB7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH1cbiAgICovXG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllc1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBkZXZ0b29scyBwYW5lbCBpcyBjbG9zZWRcbiAgICovXG4gIG9uQ2xvc2U/OiAoKSA9PiB1bmtub3duXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbChcbiAgcHJvcHM6IERldnRvb2xzUGFuZWxPcHRpb25zLFxuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQocHJvcHMuY2xpZW50KVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHsgZXJyb3JUeXBlcywgc3R5bGVOb25jZSwgc2hhZG93RE9NVGFyZ2V0IH0gPSBwcm9wc1xuICBjb25zdCBbZGV2dG9vbHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgbmV3IFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsKHtcbiAgICAgIGNsaWVudDogcXVlcnlDbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcjogJ1JlYWN0IFF1ZXJ5JyxcbiAgICAgIHZlcnNpb246ICc1JyxcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbjogJ2JvdHRvbS1sZWZ0JyxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIGluaXRpYWxJc09wZW46IHRydWUsXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICAgIG9uQ2xvc2U6IHByb3BzLm9uQ2xvc2UsXG4gICAgfSksXG4gIClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldENsaWVudChxdWVyeUNsaWVudClcbiAgfSwgW3F1ZXJ5Q2xpZW50LCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRPbkNsb3NlKHByb3BzLm9uQ2xvc2UgPz8gKCgpID0+IHt9KSlcbiAgfSwgW3Byb3BzLm9uQ2xvc2UsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEVycm9yVHlwZXMoZXJyb3JUeXBlcyB8fCBbXSlcbiAgfSwgW2Vycm9yVHlwZXMsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgZGV2dG9vbHMubW91bnQocmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRldnRvb2xzLnVubW91bnQoKVxuICAgIH1cbiAgfSwgW2RldnRvb2xzXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHN0eWxlPXt7IGhlaWdodDogJzUwMHB4JywgLi4ucHJvcHMuc3R5bGUgfX1cbiAgICAgIGNsYXNzTmFtZT1cInRzcWQtcGFyZW50LWNvbnRhaW5lclwiXG4gICAgICByZWY9e3JlZn1cbiAgICA+PC9kaXY+XG4gIClcbn1cbiIsICIndXNlIGNsaWVudCdcblxuaW1wb3J0ICogYXMgRGV2dG9vbHMgZnJvbSAnLi9SZWFjdFF1ZXJ5RGV2dG9vbHMnXG5pbXBvcnQgKiBhcyBEZXZ0b29sc1BhbmVsIGZyb20gJy4vUmVhY3RRdWVyeURldnRvb2xzUGFuZWwnXG5cbmV4cG9ydCBjb25zdCBSZWFjdFF1ZXJ5RGV2dG9vbHM6ICh0eXBlb2YgRGV2dG9vbHMpWydSZWFjdFF1ZXJ5RGV2dG9vbHMnXSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgOiBEZXZ0b29scy5SZWFjdFF1ZXJ5RGV2dG9vbHNcblxuZXhwb3J0IGNvbnN0IFJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsOiAodHlwZW9mIERldnRvb2xzUGFuZWwpWydSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCddID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICA6IERldnRvb2xzUGFuZWwuUmVhY3RRdWVyeURldnRvb2xzUGFuZWxcbiIsICJpbXBvcnQgeyBUb2FzdGVyIGFzIFNvbm5lciB9IGZyb20gXCJzb25uZXJcIjtcblxuLy8gaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQC91aS9zdHVkaW8vdXRpbC90aGVtZS1wcm92aWRlclwiO1xuXG50eXBlIFRvYXN0ZXJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBTb25uZXI+O1xuXG5jb25zdCBUb2FzdGVyID0gKHsgLi4ucHJvcHMgfTogVG9hc3RlclByb3BzKSA9PiB7XG4gIC8vIGNvbnN0IHsgdGhlbWUgPSBcInN5c3RlbVwiIH0gPSB1c2VUaGVtZSgpO1xuXG4gIHJldHVybiAoXG4gICAgPFNvbm5lclxuICAgICAgLy8gdGhlbWU9e3RoZW1lIGFzIFRvYXN0ZXJQcm9wc1tcInRoZW1lXCJdfVxuICAgICAgY2xhc3NOYW1lPVwicHMtdG9hc3RlciBwcy1ncm91cFwiXG4gICAgICB0b2FzdE9wdGlvbnM9e3tcbiAgICAgICAgY2xhc3NOYW1lczoge1xuICAgICAgICAgIHRvYXN0OlxuICAgICAgICAgICAgXCJncm91cCB0b2FzdCBncm91cC1bLnRvYXN0ZXJdOmJnLWJhY2tncm91bmQgZ3JvdXAtWy50b2FzdGVyXTp0ZXh0LWZvcmVncm91bmQgZ3JvdXAtWy50b2FzdGVyXTpib3JkZXItYm9yZGVyIGdyb3VwLVsudG9hc3Rlcl06c2hhZG93LWxnXCIsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFwiZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgYWN0aW9uQnV0dG9uOiBcImdyb3VwLVsudG9hc3RdOmJnLXByaW1hcnkgZ3JvdXAtWy50b2FzdF06dGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgICAgICBjYW5jZWxCdXR0b246IFwiZ3JvdXAtWy50b2FzdF06YmctbXV0ZWQgZ3JvdXAtWy50b2FzdF06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIH0sXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgeyBUb2FzdGVyIH07XG4iLCAiaW1wb3J0IHtcbiAgdW5zdGFibGVfQWRhcHRlck9wdGlvbnMgYXMgQWRhcHRlck9wdGlvbnMsXG4gIHVuc3RhYmxlX2NyZWF0ZUFkYXB0ZXJQcm92aWRlciBhcyBjcmVhdGVBZGFwdGVyUHJvdmlkZXIsXG59IGZyb20gXCJudXFzL2FkYXB0ZXJzL2N1c3RvbVwiO1xuaW1wb3J0IHsgRkMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCB0eXBlIHsgZGVmYXVsdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIEhvb2sgdGhhdCBOdXFzIHdpbGwgY2FsbCB0byByZWFkICYgd3JpdGUgVVJMIHN0YXRlLlxuICovXG5mdW5jdGlvbiB1c2VIYXNoQWRhcHRlcigpIHtcbiAgLy8gcmVhZCBjdXJyZW50IHN0YXRlIGZyb20gZXZlcnl0aGluZyBhZnRlciB0aGUgXHUyMDFDI1x1MjAxRFxuICBjb25zdCByYXdIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG4gIGNvbnN0IFtoYXNoUGFyYW1zLCBzZXRIYXNoUGFyYW1zXSA9IHVzZVN0YXRlKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuXG4gIC8vIHdyaXRlIG5ldyBzdGF0ZSBiYWNrIGludG8gdGhlIGhhc2ggZnJhZ21lbnRcbiAgZnVuY3Rpb24gdXBkYXRlVXJsKHVwZGF0ZWQ6IFVSTFNlYXJjaFBhcmFtcywgeyBoaXN0b3J5IH06IEFkYXB0ZXJPcHRpb25zKSB7XG4gICAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoIH0gPSB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3QgaGFzaCA9IHVwZGF0ZWQudG9TdHJpbmcoKTtcbiAgICBjb25zdCB1cmwgPSBgJHtwYXRobmFtZX0ke3NlYXJjaH0jJHtoYXNofWA7XG5cbiAgICBpZiAoaGlzdG9yeSA9PT0gXCJwdXNoXCIpIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICB9XG5cbiAgICBzZXRIYXNoUGFyYW1zKHVwZGF0ZWQpO1xuICB9XG5cbiAgLy8gZXhwb3NlIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgcGFyYW1zXG4gIGZ1bmN0aW9uIGdldFNlYXJjaFBhcmFtc1NuYXBzaG90KCkge1xuICAgIGNvbnN0IHJhdyA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuXG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3KTtcbiAgfVxuXG4gIC8vIHN5bmMgc3RhdGUgd2hlbiB1c2VyIG5hdmlnYXRlcyB2aWEgYnJvd3NlciBjb250cm9scyBvciBleHRlcm5hbCBzY3JpcHRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBoYW5kbGVIYXNoQ2hhbmdlKCkge1xuICAgICAgY29uc3QgcmF3SGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuICAgICAgc2V0SGFzaFBhcmFtcyhuZXcgVVJMU2VhcmNoUGFyYW1zKHJhd0hhc2gpKTtcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIiwgaGFuZGxlSGFzaENoYW5nZSk7XG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJoYXNoY2hhbmdlXCIsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHsgc2VhcmNoUGFyYW1zOiBoYXNoUGFyYW1zLCB1cGRhdGVVcmwsIGdldFNlYXJjaFBhcmFtc1NuYXBzaG90IH07XG59XG5cbi8qKlxuICogVGhlIGFkYXB0ZXIgcHJvdmlkZXIgY29tcG9uZW50IHlvdSB3cmFwIHlvdXIgYXBwIGluLlxuICovXG5leHBvcnQgY29uc3QgTnVxc0hhc2hBZGFwdGVyID0gY3JlYXRlQWRhcHRlclByb3ZpZGVyKHVzZUhhc2hBZGFwdGVyKSBhcyBGQzxQcm9wc1dpdGhDaGlsZHJlbj47XG4iLCAiaW1wb3J0IHsgaW5mZXJSb3dGaWx0ZXIsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5mdW5jdGlvbiBnZXRSb3dJZChyb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0YWJsZTogVGFibGUpIHtcbiAgY29uc3QgaWQgPSB7XG4gICAgZmlsdGVyOiBpbmZlclJvd0ZpbHRlcihyb3csIHRhYmxlLmNvbHVtbnMpLFxuICAgIHRhYmxlOiBgJHt0YWJsZS5zY2hlbWF9LiR7dGFibGUubmFtZX1gLFxuICB9O1xuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShpZCk7XG59XG5cbmZ1bmN0aW9uIGFkZFJvd0lkVG9Sb3cocm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IFRhYmxlKSB7XG4gIHJldHVybiB7IC4uLnJvdywgX19wc19yb3dpZDogZ2V0Um93SWQocm93LCB0YWJsZSkgfTtcbn1cblxudHlwZSBBZGFwdGVyUmVzdWx0ID0ge1xuICByb3c/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcm93cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkUm93SWRUb1Jlc3VsdDxUIGV4dGVuZHMgQWRhcHRlclJlc3VsdD4ocmVzdWx0OiBULCB0YWJsZTogVGFibGUpIHtcbiAgY29uc3QgeyByb3csIHJvd3MgfSA9IHJlc3VsdDtcblxuICBpZiAocm93ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJvdzogYWRkUm93SWRUb1Jvdyhyb3csIHRhYmxlKSB9O1xuICB9XG4gIGlmIChyb3dzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAuLi5yZXN1bHQsIHJvd3M6IHJvd3MubWFwKChyb3cpID0+IGFkZFJvd0lkVG9Sb3cocm93LCB0YWJsZSkpIH07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwgImltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJRdWVyeVJlc3VsdCwgRmlsdGVyR3JvdXAsIFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGFkZFJvd0lkVG9SZXN1bHQgfSBmcm9tIFwiLi91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUFjdGl2ZVRhYmxlUXVlcnlQcm9wcyB7XG4gIHBhZ2VJbmRleDogbnVtYmVyO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICBzb3J0T3JkZXI6IFNvcnRPcmRlckl0ZW1bXTtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlUXVlcnkocHJvcHM6IFVzZUFjdGl2ZVRhYmxlUXVlcnlQcm9wcykge1xuICBjb25zdCB7IHBhZ2VJbmRleCwgcGFnZVNpemUsIHNvcnRPcmRlciwgZmlsdGVyIH0gPSBwcm9wcztcblxuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIGVuYWJsZWQ6IEJvb2xlYW4oYWN0aXZlVGFibGUpLFxuICAgIGdjVGltZTogMCxcbiAgICBwbGFjZWhvbGRlckRhdGEocHJldmlvdXNEYXRhOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQsIHByZXZpb3VzUXVlcnkpIHtcbiAgICAgIGNvbnN0IFssIHNjaGVtYSwgLCB0YWJsZV0gPSBwcmV2aW91c1F1ZXJ5Py5xdWVyeUtleSB8fCBbXTtcblxuICAgICAgaWYgKHNjaGVtYSAhPT0gYWN0aXZlVGFibGU/LnNjaGVtYSB8fCB0YWJsZSAhPT0gYWN0aXZlVGFibGU/Lm5hbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNEYXRhO1xuICAgIH0sXG4gICAgYXN5bmMgcXVlcnlGbih7IHNpZ25hbCB9KSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdHNdID0gYXdhaXQgYWRhcHRlci5xdWVyeShcbiAgICAgICAgeyBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0T3JkZXIsIHRhYmxlOiBhY3RpdmVUYWJsZSEsIGZpbHRlciB9LFxuICAgICAgICB7IGFib3J0U2lnbmFsOiBzaWduYWwgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFkZFJvd0lkVG9SZXN1bHQocmVzdWx0cywgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIHF1ZXJ5S2V5OiBbXG4gICAgICBcInNjaGVtYVwiLFxuICAgICAgYWN0aXZlVGFibGU/LnNjaGVtYSB8fCBudWxsLFxuICAgICAgXCJ0YWJsZVwiLFxuICAgICAgYWN0aXZlVGFibGU/Lm5hbWUgfHwgbnVsbCxcbiAgICAgIFwicXVlcnlcIixcbiAgICAgIFwic29ydE9yZGVyXCIsXG4gICAgICBzb3J0T3JkZXIubWFwKChpdGVtKSA9PiBgJHtpdGVtLmNvbHVtbn06JHtpdGVtLmRpcmVjdGlvbn1gKS5qb2luKFwiLFwiKSB8fCBcIm5hdHVyYWxcIixcbiAgICAgIFwicGFnZUluZGV4XCIsXG4gICAgICBwYWdlSW5kZXgsXG4gICAgICBcInBhZ2VTaXplXCIsXG4gICAgICBwYWdlU2l6ZSxcbiAgICAgIFwiZmlsdGVyXCIsXG4gICAgICBKU09OLnN0cmluZ2lmeShmaWx0ZXIpLFxuICAgIF0sXG4gICAgc3RhbGVUaW1lOiBJbmZpbml0eSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgdHlwZSBRdWVyeUNsaWVudCwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgdHlwZSB7IEFkYXB0ZXJRdWVyeVJlc3VsdCwgQWRhcHRlclVwZGF0ZURldGFpbHMsIEFkYXB0ZXJVcGRhdGVPcHRpb25zLCBUYWJsZSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IGluZmVyUm93RmlsdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGEvcXVlcnlcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUFjdGl2ZVRhYmxlVXBkYXRlUGFyYW1zIHtcbiAgZGV0YWlsczogQWRhcHRlclVwZGF0ZURldGFpbHM7XG4gIG9wdGlvbnM6IEFkYXB0ZXJVcGRhdGVPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVVcGRhdGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIsIG9uRXJyb3IgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgY29uc3QgcXVlcnlLZXlQcmVmaXggPSBbXCJzY2hlbWFcIiwgYWN0aXZlVGFibGU/LnNjaGVtYSA/PyBudWxsLCBcInRhYmxlXCIsIGFjdGl2ZVRhYmxlPy5uYW1lID8/IG51bGxdIGFzIGNvbnN0O1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHBhcmFtczogVXNlQWN0aXZlVGFibGVVcGRhdGVQYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIudXBkYXRlKHBhcmFtcy5kZXRhaWxzLCBwYXJhbXMub3B0aW9ucyk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIG11dGF0aW9uS2V5OiBbLi4ucXVlcnlLZXlQcmVmaXgsIFwidXBkYXRlXCJdLFxuICAgIG9uRXJyb3IoZXJyb3IsIHBhcmFtcykge1xuICAgICAgY29uc3QgeyBjaGFuZ2VzLCByb3cgfSA9IHBhcmFtcy5kZXRhaWxzO1xuXG4gICAgICBvbkVycm9yKGVycm9yKTtcblxuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgY2hhbmdlZFJvdyA9IHsgLi4ucm93LCAuLi5jaGFuZ2VzIH07XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcihjaGFuZ2VkUm93LCBhY3RpdmVUYWJsZSEuY29sdW1ucyk7XG5cbiAgICAgICAgICByZXR1cm4gKGNhY2hlZFJvdykgPT4gcm93RmlsdGVyLmV2ZXJ5KChbY29sdW1uTmFtZSwgdmFsdWVdKSA9PiBjYWNoZWRSb3dbY29sdW1uTmFtZV0gPT09IHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcXVlcnlDbGllbnQsXG4gICAgICAgIHRhYmxlOiBhY3RpdmVUYWJsZSEsXG4gICAgICAgIHVwZGF0ZXJGbjogZnVuY3Rpb24gcmV2ZXJ0Q2hhbmdlcyhjYWNoZWRSb3cpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY2FjaGVkUm93LFxuICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoY2hhbmdlcykucmVkdWNlKFxuICAgICAgICAgICAgICAob3JpZ2luYWxWYWx1ZXMsIGNvbHVtbk5hbWUpID0+ICh7IC4uLm9yaWdpbmFsVmFsdWVzLCBbY29sdW1uTmFtZV06IHJvd1tjb2x1bW5OYW1lXSB9KSxcbiAgICAgICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uTXV0YXRlKHBhcmFtcykge1xuICAgICAgY29uc3QgeyBkZXRhaWxzIH0gPSBwYXJhbXM7XG5cbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IHsgcm93OiB1bmNoYW5nZWRSb3cgfSA9IGRldGFpbHM7XG5cbiAgICAgICAgICBjb25zdCByb3dGaWx0ZXIgPSBpbmZlclJvd0ZpbHRlcih1bmNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiBhcHBseUNoYW5nZXMoY2FjaGVkUm93KSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uY2FjaGVkUm93LCAuLi5kZXRhaWxzLmNoYW5nZXMgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKHJlc3VsdCwgcGFyYW1zKSB7XG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCB7IGNoYW5nZXMsIHJvdyB9ID0gcGFyYW1zLmRldGFpbHM7XG5cbiAgICAgICAgICBjb25zdCBjaGFuZ2VkUm93ID0geyAuLi5yb3csIC4uLmNoYW5nZXMgfTtcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKGNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiBhcHBseVJlYWxEYXRhV2hlbkZyZXNoZXIoY2FjaGVkUm93KSB7XG4gICAgICAgICAgY29uc3QgeyBfX3BzX3VwZGF0ZWRfYXRfXyB9ID0gY2FjaGVkUm93O1xuICAgICAgICAgIGNvbnN0IHsgcm93IH0gPSByZXN1bHQ7XG5cbiAgICAgICAgICAvLyByZXN1bHQgcm93IGlzIHN0YWxlLlxuICAgICAgICAgIGlmIChfX3BzX3VwZGF0ZWRfYXRfXyAhPSBudWxsICYmIHJvdy5fX3BzX3VwZGF0ZWRfYXRfXyA8PSBfX3BzX3VwZGF0ZWRfYXRfXykge1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFJvdztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4geyAuLi5jYWNoZWRSb3csIC4uLnJvdyB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICByZXRyeTogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvdmVyd3JpdGVDYWNoZWRSb3cocGFyYW1zOiB7XG4gIGdldEZpbmRlckZuOiAoKSA9PiAoY2FjaGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICB1cGRhdGVyRm46IChjYWNoZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcXVlcnlDbGllbnQ6IFF1ZXJ5Q2xpZW50O1xufSkge1xuICBjb25zdCB7IGdldEZpbmRlckZuLCBxdWVyeUNsaWVudCwgdGFibGUsIHVwZGF0ZXJGbiB9ID0gcGFyYW1zO1xuXG4gIGxldCBmaW5kZXI6IFJldHVyblR5cGU8dHlwZW9mIGdldEZpbmRlckZuPjtcblxuICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YShcbiAgICB7IGV4YWN0OiBmYWxzZSwgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCB0YWJsZS5zY2hlbWEsIFwidGFibGVcIiwgdGFibGUubmFtZSwgXCJxdWVyeVwiXSB9LFxuICAgIChjYWNoZWRSZXN1bHQ6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCk6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBjb25zdCB7IHJvd3M6IGNhY2hlZFJvd3MgPSBbXSB9ID0gY2FjaGVkUmVzdWx0IHx8IHt9O1xuXG4gICAgICBpZiAoY2FjaGVkUm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FjaGVkUm93SW5kZXggPSBjYWNoZWRSb3dzLmZpbmRJbmRleCgoZmluZGVyID8/PSBnZXRGaW5kZXJGbigpKSk7XG5cbiAgICAgIGlmIChjYWNoZWRSb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3Um93ID0gdXBkYXRlckZuKGNhY2hlZFJvd3NbY2FjaGVkUm93SW5kZXhdISk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNhY2hlZFJlc3VsdCEsXG4gICAgICAgIHJvd3M6IFsuLi5jYWNoZWRSb3dzLnNsaWNlKDAsIGNhY2hlZFJvd0luZGV4KSwgbmV3Um93LCAuLi5jYWNoZWRSb3dzLnNsaWNlKGNhY2hlZFJvd0luZGV4ICsgMSldLFxuICAgICAgfTtcbiAgICB9LFxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzaG9ydCBmcm9tIFwic2hvcnQtdXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IEZpbHRlckdyb3VwIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUXVlcnlTdGF0ZSB9IGZyb20gXCIuL251cXNcIjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRGaWx0ZXI6IEZpbHRlckdyb3VwID0ge1xuICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gIGZpbHRlcnM6IFtdLFxuICBhZnRlcjogXCJhbmRcIixcbiAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG59O1xuXG5jb25zdCBjb3VudEZpbHRlcnNSZWN1cnNpdmUgPSAoZmlsdGVyR3JvdXA6IEZpbHRlckdyb3VwKTogbnVtYmVyID0+IHtcbiAgbGV0IGNvdW50ID0gMDtcbiAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVyR3JvdXAuZmlsdGVycykge1xuICAgIGlmIChmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgICAgLy8gT25seSBjb3VudCBmaWx0ZXJzIHRoYXQgaGF2ZSBhIG5vbi1lbXB0eSBjb2x1bW4gc2VsZWN0ZWRcbiAgICAgIGlmIChmaWx0ZXIuY29sdW1uLnRyaW0oKSkge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZmlsdGVyLmtpbmQgPT09IFwiRmlsdGVyR3JvdXBcIikge1xuICAgICAgY291bnQgKz0gY291bnRGaWx0ZXJzUmVjdXJzaXZlKGZpbHRlcik7XG4gICAgfVxuICB9XG4gIHJldHVybiBjb3VudDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VGaWx0ZXJpbmcoKSB7XG4gIGNvbnN0IFtmaWx0ZXJQYXJhbSwgc2V0RmlsdGVyUGFyYW1dID0gdXNlUXVlcnlTdGF0ZShcImZpbHRlclwiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBKU09OLnN0cmluZ2lmeShkZWZhdWx0RmlsdGVyKSxcbiAgfSk7XG5cbiAgY29uc3QgYXBwbGllZEZpbHRlciA9IHVzZU1lbW8oKCkgPT4gSlNPTi5wYXJzZShmaWx0ZXJQYXJhbSkgYXMgRmlsdGVyR3JvdXAsIFtmaWx0ZXJQYXJhbV0pO1xuICBjb25zdCBzZXRBcHBsaWVkRmlsdGVyID0gKGZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQgc2V0RmlsdGVyUGFyYW0oSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSk7XG5cbiAgY29uc3QgW2VkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXJdID0gdXNlU3RhdGU8RmlsdGVyR3JvdXA+KGFwcGxpZWRGaWx0ZXIpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RWRpdGluZ0ZpbHRlcihhcHBsaWVkRmlsdGVyKTtcbiAgfSwgW2FwcGxpZWRGaWx0ZXJdKTtcblxuICBjb25zdCB0b3RhbEVkaXRpbmdGaWx0ZXJzID0gdXNlTWVtbygoKSA9PiBjb3VudEZpbHRlcnNSZWN1cnNpdmUoZWRpdGluZ0ZpbHRlciksIFtlZGl0aW5nRmlsdGVyXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhcHBsaWVkRmlsdGVyLFxuICAgIHNldEFwcGxpZWRGaWx0ZXIsXG4gICAgZWRpdGluZ0ZpbHRlcixcbiAgICBzZXRFZGl0aW5nRmlsdGVyLFxuICAgIHRvdGFsRWRpdGluZ0ZpbHRlcnMsXG4gIH07XG59XG4iLCAiLy8gd2UncmUgZW5zdXJpbmcgdGhhdCBrZXlzIGFyZSB0eXBlLXNhZmUuIHRoZXJlIGlzIG5vIHByb3BlciB3YXkgdG8gYWNoaWV2ZSBpdCBpbiBgbnVxc2AuXG4vLyB0aGUgYGRlY2xhcmUgbW9kdWxlYCB0ZWNobmlxdWUgcmVzdWx0cyBpbiBhZGRpbmcgb3ZlcmxvYWRzLCBub3Qgb3ZlcnJpZGluZyB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zLlxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQge1xuICB0eXBlIE9wdGlvbnMsXG4gIHR5cGUgUGFyc2VyLFxuICB1c2VRdWVyeVN0YXRlIGFzIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbCxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlT3B0aW9ucyxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlUmV0dXJuLFxuICB1c2VRdWVyeVN0YXRlcyBhcyB1c2VRdWVyeVN0YXRlc09yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzT3B0aW9ucyxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlc1JldHVybixcbn0gZnJvbSBcIm51cXNcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuZXhwb3J0ICogZnJvbSBcIm51cXNcIjtcblxuZXhwb3J0IHR5cGUgU3RhdGVLZXkgPSBcInBhZ2VJbmRleFwiIHwgXCJwYWdlU2l6ZVwiIHwgXCJ0YWJsZVwiIHwgXCJzb3J0XCIgfCBcInNjaGVtYVwiIHwgXCJ0ZXN0XCIgfCBcImZpbHRlclwiO1xuXG4vLyBsaWZ0ZWQgZnJvbSBAcHJpc21hL2NsaWVudC9ydW50aW1lXG50eXBlIEV4YWN0PEEsIFc+ID1cbiAgfCAoQSBleHRlbmRzIHVua25vd25cbiAgICAgID8gVyBleHRlbmRzIEFcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBbSyBpbiBrZXlvZiBBXTogRXhhY3Q8QVtLXSwgV1tLXT47XG4gICAgICAgICAgfVxuICAgICAgICA6IFdcbiAgICAgIDogbmV2ZXIpXG4gIHwgKEEgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgfCBib29sZWFuIHwgW10gPyBBIDogbmV2ZXIpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGtleU1hcDxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBrZXlNYXA6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiBrZXlNYXAgYXMgbmV2ZXI7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXJsS2V5czxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgc3RyaW5nPj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1cmxLZXlzOiBFeGFjdDxNYXAsIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4sXG4pOiBCcmFuZGVkS2V5TWFwPE1hcD4ge1xuICByZXR1cm4gdXJsS2V5cyBhcyBuZXZlcjtcbn1cblxuY29uc3QgX0JSQU5EX1NZTUJPTCA9IFN5bWJvbChcIkJSQU5EX1NZTUJPTFwiKTtcblxudHlwZSBCcmFuZGVkS2V5TWFwPE1hcD4gPSBNYXAgJiB7XG4gIFtLIGluIHR5cGVvZiBfQlJBTkRfU1lNQk9MXTogbmV2ZXI7XG59O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+ICYge1xuICAgIGRlZmF1bHRWYWx1ZTogVDtcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48Tm9uTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygb3B0aW9ucy5wYXJzZT4+LCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZztcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFBpY2s8VXNlUXVlcnlTdGF0ZU9wdGlvbnM8c3RyaW5nPiwga2V5b2YgT3B0aW9ucz4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXkpOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShrZXk6IFN0YXRlS2V5LCBvcHRpb25zPzogYW55KTogYW55IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbChrZXksIG9wdGlvbnMpO1xufVxuXG50eXBlIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcDxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+ID0gUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+LFxuPiA9IHtcbiAgW0tleSBpbiBrZXlvZiBNYXBdOiBLZXlNYXBWYWx1ZTxNYXBbS2V5XT47XG59O1xuXG50eXBlIEtleU1hcFZhbHVlPFR5cGU+ID0gUGFyc2VyPFR5cGU+ICZcbiAgT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU/OiBUeXBlO1xuICB9O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlczxLZXlNYXAgZXh0ZW5kcyBVc2VRdWVyeVN0YXRlc0tleXNNYXA+KFxuICBrZXlNYXA6IEJyYW5kZWRLZXlNYXA8S2V5TWFwPixcbiAgb3B0aW9ucz86IFBhcnRpYWw8VXNlUXVlcnlTdGF0ZXNPcHRpb25zPEtleU1hcD4+LFxuKTogVXNlUXVlcnlTdGF0ZXNSZXR1cm48S2V5TWFwPiB7XG4gIHJldHVybiB1c2VRdWVyeVN0YXRlc09yaWdpbmFsKGtleU1hcCBhcyBuZXZlciwgb3B0aW9ucyk7XG59XG4iLCAiaW1wb3J0IHsgdXNlSXNNdXRhdGluZyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuLyoqXG4gKiBIb29rIHRvIGtub3cgd2hldGhlciBhbiBpbnNlcnQgaXMgY3VycmVudGx5IG9uZ29pbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc0luc2VydGluZygpIHtcbiAgcmV0dXJuIHVzZUlzTXV0YXRpbmcoe1xuICAgIHByZWRpY2F0ZSh7IG9wdGlvbnM6IHsgbXV0YXRpb25LZXkgfSB9KSB7XG4gICAgICByZXR1cm4gbXV0YXRpb25LZXk/Lls0XSA9PT0gXCJpbnNlcnRcIjtcbiAgICB9LFxuICB9KTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IE9uQ2hhbmdlRm4sIFBhZ2luYXRpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGtleU1hcCwgcGFyc2VBc0luZGV4LCBwYXJzZUFzSW50ZWdlciwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5cbi8vIFRPRE86IGV2ZW50dWFsbHkgY29uZmlndXJhYmxlIC8gY29udHJvbGxlZCBieSB1c2VyLiBiYWJ5IHN0ZXBzLi5cbmNvbnN0IERFRkFVTFRfUEFHRV9TSVpFID0gMjU7XG5cbmNvbnN0IHBhZ2luYXRpb25QYXJzZXJzID0ga2V5TWFwKHtcbiAgcGFnZUluZGV4OiBwYXJzZUFzSW5kZXgud2l0aERlZmF1bHQoMCksIC8vIHplcm8tYmFzZWRcbiAgcGFnZVNpemU6IHBhcnNlQXNJbnRlZ2VyLndpdGhEZWZhdWx0KERFRkFVTFRfUEFHRV9TSVpFKSxcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUGFnaW5hdGlvbigpIHtcbiAgY29uc3QgW3sgcGFnZUluZGV4LCBwYWdlU2l6ZSB9LCBzZXRQYWdpbmF0aW9uXSA9IHVzZVF1ZXJ5U3RhdGVzKHBhZ2luYXRpb25QYXJzZXJzKTtcblxuICAvLyBDb21wYXRpYmxlIHdpdGggVGFuU3RhY2sgVGFibGUncyBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT5cbiAgY29uc3Qgc2V0UGFnaW5hdGlvblN0YXRlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT4gPSB1c2VDYWxsYmFjayhcbiAgICAodXBkYXRlck9yVmFsdWUpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB2b2lkIHNldFBhZ2luYXRpb24oKG9sZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gdXBkYXRlck9yVmFsdWUob2xkKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGFnZUluZGV4OiBuZXdTdGF0ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgICBwYWdlU2l6ZTogbmV3U3RhdGUucGFnZVNpemUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2b2lkIHNldFBhZ2luYXRpb24oe1xuICAgICAgICAgIHBhZ2VJbmRleDogdXBkYXRlck9yVmFsdWUucGFnZUluZGV4LFxuICAgICAgICAgIHBhZ2VTaXplOiB1cGRhdGVyT3JWYWx1ZS5wYWdlU2l6ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2V0UGFnaW5hdGlvbl0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYWdpbmF0aW9uU3RhdGU6IHsgcGFnZUluZGV4LCBwYWdlU2l6ZSB9LFxuICAgIHNldFBhZ2luYXRpb25TdGF0ZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFkYXB0ZXJRdWVyeVJlc3VsdCB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VBY3RpdmVUYWJsZURlbGV0ZSB9IGZyb20gXCIuL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4vdXNlLXBhZ2luYXRpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdGlvbihkYXRhOiBBZGFwdGVyUXVlcnlSZXN1bHQgfCB1bmRlZmluZWQpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgb25FcnJvciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlIH0gPSB1c2VQYWdpbmF0aW9uKCk7XG4gIGNvbnN0IFtyb3dTZWxlY3Rpb25TdGF0ZSwgc2V0Um93U2VsZWN0aW9uU3RhdGVdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KTtcbiAgY29uc3QgaXNTZWxlY3RpbmcgPSBPYmplY3Qua2V5cyhyb3dTZWxlY3Rpb25TdGF0ZSkubGVuZ3RoICE9PSAwO1xuICBjb25zdCB7IG11dGF0ZSB9ID0gdXNlQWN0aXZlVGFibGVEZWxldGUoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gc2V0Um93U2VsZWN0aW9uU3RhdGUoe30pLCBbYWN0aXZlVGFibGUsIHBhZ2luYXRpb25TdGF0ZS5wYWdlSW5kZXhdKTtcblxuICBmdW5jdGlvbiBkZWxldGVTZWxlY3Rpb24oKSB7XG4gICAgY29uc3Qgcm93cyA9IGRhdGE/LnJvd3MuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgIHJldHVybiByb3dTZWxlY3Rpb25TdGF0ZVtyb3cuX19wc19yb3dpZCBhcyBzdHJpbmddO1xuICAgIH0pO1xuXG4gICAgbXV0YXRlKHJvd3MgPz8gW10sIHtcbiAgICAgIG9uU3VjY2VzcygpIHtcbiAgICAgICAgc2V0Um93U2VsZWN0aW9uU3RhdGUoe30pO1xuICAgICAgfSxcbiAgICAgIG9uRXJyb3IsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRlbGV0ZVNlbGVjdGlvbixcbiAgICBzZXRSb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBpc1NlbGVjdGluZyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBRdWVyeUtleSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlRGVsZXRlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJkZWxldGVcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmRlbGV0ZSh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgICBhc3luYyBvblN1Y2Nlc3MoKSB7XG4gICAgICBhd2FpdCBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7XG4gICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgcXVlcnlLZXk6IFtcInNjaGVtYVwiLCBzY2hlbWEsIFwidGFibGVcIiwgdGFibGUsIFwicXVlcnlcIl0gYXMgbmV2ZXIgYXMgUXVlcnlLZXksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU29ydGluZygpIHtcbiAgLy8gVXNlIG51cXMgdG8gbWFuYWdlIHNvcnRpbmcgc3RhdGUgaW4gVVJMXG4gIGNvbnN0IFtzb3J0UGFyYW0sIHNldFNvcnRQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwic29ydFwiLCB7XG4gICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICB9KTtcblxuICAvLyBQYXJzZSBzb3J0aW5nIGZyb20gVVJMIHBhcmFtZXRlclxuICBjb25zdCBwYXJzZVNvcnRpbmcgPSAoc29ydFBhcmFtOiBzdHJpbmcgfCBudWxsKTogU29ydE9yZGVySXRlbVtdID0+IHtcbiAgICBpZiAoIXNvcnRQYXJhbSkgcmV0dXJuIFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEZvcm1hdDogY29sdW1uOmRpcmVjdGlvbixjb2x1bW46ZGlyZWN0aW9uXG4gICAgICByZXR1cm4gc29ydFBhcmFtXG4gICAgICAgIC5zcGxpdChcIixcIilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtjb2x1bW4sIGRpcmVjdGlvbl0gPSBpdGVtLnNwbGl0KFwiOlwiKTtcbiAgICAgICAgICBpZiAoIWNvbHVtbiB8fCAhZGlyZWN0aW9uIHx8ICFbXCJhc2NcIiwgXCJkZXNjXCJdLmluY2x1ZGVzKGRpcmVjdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyBjb2x1bW4sIGRpcmVjdGlvbjogZGlyZWN0aW9uIGFzIFwiYXNjXCIgfCBcImRlc2NcIiB9O1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFNvcnRPcmRlckl0ZW1bXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIHNvcnRpbmcgcGFyYW1ldGVyOlwiLCBlKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgLy8gQ3JlYXRlIGEgc3RhYmxlIHNvcnRpbmcgc3RhdGUgdGhhdCdzIGRlcml2ZWQgZnJvbSBVUkwgcGFyYW1ldGVyc1xuICBjb25zdCBbc29ydGluZ1N0YXRlLCBzZXRTb3J0aW5nU3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gcGFyc2VTb3J0aW5nKHNvcnRQYXJhbSkpO1xuXG4gIC8vIEtlZXAgaW50ZXJuYWwgc3RhdGUgc3luY2hyb25pemVkIHdpdGggVVJMIHBhcmFtZXRlcnNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXdTb3J0aW5nU3RhdGUgPSBwYXJzZVNvcnRpbmcoc29ydFBhcmFtKTtcbiAgICBzZXRTb3J0aW5nU3RhdGUobmV3U29ydGluZ1N0YXRlKTtcbiAgfSwgW3NvcnRQYXJhbV0pO1xuXG4gIC8vIFVwZGF0ZSBVUkwgd2hlbiBzb3J0aW5nIGNoYW5nZXMgZnJvbSB0aGUgVUlcbiAgY29uc3QgaGFuZGxlU29ydGluZ0NoYW5nZSA9IChuZXdTdGF0ZTogU29ydE9yZGVySXRlbVtdIHwgKChvbGQ6IFNvcnRPcmRlckl0ZW1bXSkgPT4gU29ydE9yZGVySXRlbVtdKSkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkU3RhdGUgPSB0eXBlb2YgbmV3U3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IG5ld1N0YXRlKHNvcnRpbmdTdGF0ZSkgOiBuZXdTdGF0ZTtcbiAgICBzZXRTb3J0aW5nU3RhdGUocmVzb2x2ZWRTdGF0ZSk7XG5cbiAgICAvLyBTZXJpYWxpemUgc29ydGluZyBzdGF0ZSB0byBVUkwgcGFyYW1ldGVyXG4gICAgY29uc3Qgc29ydFN0cmluZyA9XG4gICAgICByZXNvbHZlZFN0YXRlLmxlbmd0aCA+IDAgPyByZXNvbHZlZFN0YXRlLm1hcCgoaXRlbSkgPT4gYCR7aXRlbS5jb2x1bW59OiR7aXRlbS5kaXJlY3Rpb259YCkuam9pbihcIixcIikgOiBudWxsO1xuXG4gICAgdm9pZCBzZXRTb3J0UGFyYW0oc29ydFN0cmluZyk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzb3J0aW5nU3RhdGUsXG4gICAgc2V0U29ydGluZ1N0YXRlOiBoYW5kbGVTb3J0aW5nQ2hhbmdlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbkNlbGwgfSBmcm9tIFwiLi9Cb29sZWFuQ2VsbFwiO1xuaW1wb3J0IHR5cGUgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5pbXBvcnQgeyBEYXRlQ2VsbCB9IGZyb20gXCIuL0RhdGVDZWxsXCI7XG5pbXBvcnQgeyBFbXB0eUNlbGwgfSBmcm9tIFwiLi9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IEVudW1DZWxsIH0gZnJvbSBcIi4vRW51bUNlbGxcIjtcbmltcG9ydCB7IEpTT05DZWxsIH0gZnJvbSBcIi4vSlNPTkNlbGxcIjtcbmltcG9ydCB7IE51bGxDZWxsIH0gZnJvbSBcIi4vTnVsbENlbGxcIjtcbmltcG9ydCB7IE51bWVyaWNDZWxsIH0gZnJvbSBcIi4vTnVtZXJpY0NlbGxcIjtcbmltcG9ydCB7IFJhd0NlbGwgfSBmcm9tIFwiLi9SYXdDZWxsXCI7XG5pbXBvcnQgeyBUaW1lQ2VsbCB9IGZyb20gXCIuL1RpbWVDZWxsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZWxsKHtcbiAgY2VsbCxcbiAgY29sdW1uLFxuICBwcm9wcyxcbn06IHtcbiAgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIGNvbHVtbjogQ29sdW1uO1xuICBwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xufSkge1xuICBjb25zdCB2YWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiA8RW1wdHlDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gLz47XG4gIH1cblxuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gPE51bGxDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gLz47XG4gIH1cblxuICBjb25zdCB7IGdyb3VwLCBvcHRpb25zLCBpc0FycmF5IH0gPSBjb2x1bW4uZGF0YXR5cGU7XG5cbiAgaWYgKGdyb3VwID09PSBcImpzb25cIiB8fCBpc0FycmF5KSB7XG4gICAgcmV0dXJuIDxKU09OQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gPFJhd0NlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImVudW1cIikge1xuICAgIHJldHVybiA8RW51bUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IG9wdGlvbnM9e29wdGlvbnN9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiA8Qm9vbGVhbkNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImRhdGV0aW1lXCIpIHtcbiAgICByZXR1cm4gPERhdGVDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJ0aW1lXCIpIHtcbiAgICByZXR1cm4gPFRpbWVDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJudW1lcmljXCIpIHtcbiAgICByZXR1cm4gPE51bWVyaWNDZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJyYXdcIikge1xuICAgIGlmIChpc09iamVjdFR5cGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gPEpTT05DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gPFJhd0NlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWV9IC8+O1xuICB9XG5cbiAgZ3JvdXAgc2F0aXNmaWVzIG5ldmVyO1xuICB0aHJvdyBuZXcgRXJyb3IoYERhdGF0eXBlIGdyb3VwIFwiJHtncm91cCBhcyBzdHJpbmd9XCIgd2FzIG5vdCBoYW5kbGVkIGluICcvY2VsbC9nZXQtY2VsbC50c3gnYCk7XG59XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5jb25zdCBCb29sZWFuQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBCb29sZWFuQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICA8ZGl2IGRhdGEtY2VsbC10eXBlPVwiYm9vbGVhblwiPntTdHJpbmcoQm9vbGVhbih2YWx1ZSkpfTwvZGl2PlxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuQm9vbGVhbkNlbGwuZGlzcGxheU5hbWUgPSBcIkJvb2xlYW5DZWxsXCI7XG5cbmV4cG9ydCB7IEJvb2xlYW5DZWxsIH07XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRhYmxlID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctYXV0byBwcy1mbGV4IHBzLWl0ZW1zLXN0YXJ0IHBzLWgtZnVsbFwiPlxuICAgICAgPHRhYmxlIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtdy1mdWxsIHBzLWNhcHRpb24tYm90dG9tIHBzLXRleHQtc21cIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICAgIDwvZGl2PlxuICApLFxuKTtcblRhYmxlLmRpc3BsYXlOYW1lID0gXCJUYWJsZVwiO1xuXG5jb25zdCBUYWJsZUhlYWRlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiA8dGhlYWQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPixcbik7XG5UYWJsZUhlYWRlci5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkZXJcIjtcblxuY29uc3QgVGFibGVCb2R5ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dGJvZHkgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJbJl90cjpsYXN0LWNoaWxkXTpwcy1ib3JkZXItMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuVGFibGVCb2R5LmRpc3BsYXlOYW1lID0gXCJUYWJsZUJvZHlcIjtcblxuY29uc3QgVGFibGVGb290ZXIgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0Zm9vdFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtYm9yZGVyLXQgcHMtYmctbXV0ZWQvNTAgcHMtZm9udC1tZWRpdW0gWyY+dHJdOmxhc3Q6cHMtYm9yZGVyLWItMFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICksXG4pO1xuVGFibGVGb290ZXIuZGlzcGxheU5hbWUgPSBcIlRhYmxlRm9vdGVyXCI7XG5cbmNvbnN0IFRhYmxlUm93ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVSb3dFbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVSb3dFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRyXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtYm9yZGVyLWIgcHMtdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6cHMtYmctbXV0ZWQvNTAgZGF0YS1bc3RhdGU9c2VsZWN0ZWRdOnBzLWJnLW11dGVkXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZVJvdy5kaXNwbGF5TmFtZSA9IFwiVGFibGVSb3dcIjtcblxuY29uc3QgVGFibGVIZWFkID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudCwgUmVhY3QuVGhIVE1MQXR0cmlidXRlczxIVE1MVGFibGVDZWxsRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0aFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtaC0xMCBwcy1weC0yIHBzLXRleHQtbGVmdCBwcy1hbGlnbi1taWRkbGUgcHMtZm9udC1tZWRpdW0gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZUhlYWQuZGlzcGxheU5hbWUgPSBcIlRhYmxlSGVhZFwiO1xuXG5jb25zdCBUYWJsZUNlbGwgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBSZWFjdC5UZEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiA8dGQgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy1hbGlnbi1taWRkbGVcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPixcbik7XG5UYWJsZUNlbGwuZGlzcGxheU5hbWUgPSBcIlRhYmxlQ2VsbFwiO1xuXG5jb25zdCBUYWJsZUNhcHRpb24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDxjYXB0aW9uIHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKFwicHMtbXQtNCBwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICksXG4pO1xuVGFibGVDYXB0aW9uLmRpc3BsYXlOYW1lID0gXCJUYWJsZUNhcHRpb25cIjtcblxuZXhwb3J0IHsgVGFibGUsIFRhYmxlSGVhZGVyLCBUYWJsZUJvZHksIFRhYmxlRm9vdGVyLCBUYWJsZUhlYWQsIFRhYmxlUm93LCBUYWJsZUNlbGwsIFRhYmxlQ2FwdGlvbiB9O1xuIiwgImltcG9ydCB7IENvcHkgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBpc1ZhbGlkRWxlbWVudCwgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdHlwZSBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29udGV4dE1lbnUsIENvbnRleHRNZW51Q29udGVudCwgQ29udGV4dE1lbnVJdGVtLCBDb250ZXh0TWVudVRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9jb250ZXh0LW1lbnVcIjtcblxuZXhwb3J0IHR5cGUgRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPG9iamVjdD47XG5cbi8vIFRPRE86IFRoaXMgbmVlZHMgdG8gYmUgaW52ZXJzaWZpZWQgLSB0byBtYWtlIGl0IGV4dGVuc2libGUsIGFuZCBhZGFwdGFibGUgdG8gZGlmZmVyZW50IHNpdHVhdGlvbnMuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUocHJvcHM6IERhdGFHcmlkQ2VsbENvbnRleHRNZW51UHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGV4dE1lbnU+XG4gICAgICA8Q29udGV4dE1lbnVUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLWJsb2NrIHBzLXctZnVsbCBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldIHBzLWxlYWRpbmctW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQ29udGV4dE1lbnVUcmlnZ2VyPlxuICAgICAgPENvbnRleHRNZW51Q29udGVudD5cbiAgICAgICAgPENvbnRleHRNZW51SXRlbVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBleHRyYWN0VGV4dENvbnRlbnQoY2hpbGRyZW4pO1xuICAgICAgICAgICAgdm9pZCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBjb3B5IHRvIGNsaXBib2FyZDpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Q29weSBzaXplPXsxMn0gLz5cbiAgICAgICAgICBDb3B5XG4gICAgICAgIDwvQ29udGV4dE1lbnVJdGVtPlxuICAgICAgPC9Db250ZXh0TWVudUNvbnRlbnQ+XG4gICAgPC9Db250ZXh0TWVudT5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRleHRDb250ZW50KG5vZGU6IFJlYWN0Tm9kZSk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2Ygbm9kZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2Ygbm9kZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gU3RyaW5nKG5vZGUpO1xuICB9XG5cbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICBjb25zdCBwcm9wcyA9IG5vZGUucHJvcHMgYXMgeyB0ZXh0Pzogc3RyaW5nOyBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSB9O1xuXG4gICAgLy8gSGFuZGxlIFJldmVhbFRleHQgY29tcG9uZW50IHNwZWNpZmljYWxseVxuICAgIGlmIChub2RlLnR5cGUgJiYgdHlwZW9mIG5vZGUudHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIG5vZGUudHlwZS5uYW1lID09PSBcIlJldmVhbFRleHRcIikge1xuICAgICAgcmV0dXJuIHByb3BzLnRleHQgfHwgXCJcIjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgTnVsbFZhbHVlIGNvbXBvbmVudFxuICAgIGlmIChub2RlLnR5cGUgJiYgdHlwZW9mIG5vZGUudHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIG5vZGUudHlwZS5uYW1lID09PSBcIk51bGxWYWx1ZVwiKSB7XG4gICAgICByZXR1cm4gXCJOVUxMXCI7XG4gICAgfVxuXG4gICAgLy8gUmVjdXJzaXZlbHkgZXh0cmFjdCB0ZXh0IGZyb20gY2hpbGRyZW5cbiAgICBpZiAocHJvcHMuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBleHRyYWN0VGV4dENvbnRlbnQocHJvcHMuY2hpbGRyZW4gYXMgUmVhY3ROb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUubWFwKGV4dHJhY3RUZXh0Q29udGVudCkuam9pbihcIlwiKTtcbiAgfVxuXG4gIHJldHVybiBcIlwiO1xufVxuIiwgImltcG9ydCAqIGFzIENvbnRleHRNZW51UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dC1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgQ29udGV4dE1lbnUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBDb250ZXh0TWVudVRyaWdnZXIgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBDb250ZXh0TWVudUdyb3VwID0gQ29udGV4dE1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IENvbnRleHRNZW51UG9ydGFsID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YiA9IENvbnRleHRNZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgQ29udGV4dE1lbnVSYWRpb0dyb3VwID0gQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgQ29udGV4dE1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG8gcHMtaC00IHBzLXctNFwiIC8+XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj5cbikpO1xuQ29udGV4dE1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTdWJDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnRcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy16LTUwIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTEgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LWxnIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtWy0tcmFkaXgtY29udGV4dC1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodF0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Db250ZXh0TWVudUNvbnRlbnQuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51SXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIGNoZWNrZWQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuQ29udGV4dE1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+XG4+KCh7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2lyY2xlIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTQgcHMtZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAge2NoaWxkcmVufVxuICA8L0NvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuQ29udGV4dE1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0uZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWw+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZCBwcy10ZXh0LWZvcmVncm91bmRcIiwgaW5zZXQgJiYgXCJwcy1wbC04XCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudUxhYmVsLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ29udGV4dE1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3JcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtLW14LTEgcHMtbXktMSBwcy1oLXB4IHBzLWJnLWJvcmRlclwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51U2hvcnRjdXQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuICApO1xufTtcbkNvbnRleHRNZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkNvbnRleHRNZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgQ29udGV4dE1lbnUsXG4gIENvbnRleHRNZW51VHJpZ2dlcixcbiAgQ29udGV4dE1lbnVDb250ZW50LFxuICBDb250ZXh0TWVudUl0ZW0sXG4gIENvbnRleHRNZW51Q2hlY2tib3hJdGVtLFxuICBDb250ZXh0TWVudVJhZGlvSXRlbSxcbiAgQ29udGV4dE1lbnVMYWJlbCxcbiAgQ29udGV4dE1lbnVTZXBhcmF0b3IsXG4gIENvbnRleHRNZW51U2hvcnRjdXQsXG4gIENvbnRleHRNZW51R3JvdXAsXG4gIENvbnRleHRNZW51UG9ydGFsLFxuICBDb250ZXh0TWVudVN1YixcbiAgQ29udGV4dE1lbnVTdWJDb250ZW50LFxuICBDb250ZXh0TWVudVN1YlRyaWdnZXIsXG4gIENvbnRleHRNZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiaW1wb3J0IHsgdHlwZSBDU1NQcm9wZXJ0aWVzLCBEZXRhaWxlZEhUTUxQcm9wcywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBUYWJsZUNlbGwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBEYXRhR3JpZENlbGxDb250ZXh0TWVudSB9IGZyb20gXCIuLi9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbFByb3BzIGV4dGVuZHMgUHJvcHNXaXRoQ2hpbGRyZW4sIERldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPHVua25vd24+LCB1bmtub3duPiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2VsbChwcm9wczogQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgcmVmLCBzdHlsZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlQ2VsbFxuICAgICAgey4uLmZvcndhcmRlZFByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1wLTAgcHMtYm9yZGVyLXIgcHMtYm9yZGVyLWIgcHMtYm9yZGVyLXRhYmxlLWJvcmRlclwiLFxuICAgICAgICAvLyBUT0RPOiBLZWVwaW5nIHRoaXMgdGVtcG9yYXJpbHk7IG1pZ2h0IG5lZWQgaXQgbGF0ZXIgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVzXG4gICAgICAgIC8vIFwiZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy0yIGRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctaW5kaWdvLTQwMCBkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLWluc2V0XCIsXG4gICAgICAgIFwicHMtY3Vyc29yLXBvaW50ZXJcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHJlZj17cmVmIGFzIG5ldmVyfVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgID5cbiAgICAgIDxEYXRhR3JpZENlbGxDb250ZXh0TWVudT57Y2hpbGRyZW59PC9EYXRhR3JpZENlbGxDb250ZXh0TWVudT5cbiAgICA8L1RhYmxlQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHN0cmluZyB8IERhdGUgfCBudW1iZXI7XG59XG5cbmNvbnN0IERhdGVDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IERhdGVDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuRGF0ZUNlbGwuZGlzcGxheU5hbWUgPSBcIkRhdGVDZWxsXCI7XG5cbmV4cG9ydCB7IERhdGVDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbXB0eUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xufVxuXG5jb25zdCBFbXB0eUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogRW1wdHlDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0gLz47XG59KTtcbkVtcHR5Q2VsbC5kaXNwbGF5TmFtZSA9IFwiRW1wdHlDZWxsXCI7XG5cbmV4cG9ydCB7IEVtcHR5Q2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW51bUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogdW5rbm93bjtcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xufVxuXG5jb25zdCBFbnVtQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBFbnVtQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIG9wdGlvbnMsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkVudW1DZWxsLmRpc3BsYXlOYW1lID0gXCJFbnVtQ2VsbFwiO1xuXG5leHBvcnQgeyBFbnVtQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSlNPTkNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmtub3duW107XG59XG5cbmNvbnN0IEpTT05DZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEpTT05DZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMil9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5KU09OQ2VsbC5kaXNwbGF5TmFtZSA9IFwiSlNPTkNlbGxcIjtcblxuZXhwb3J0IHsgSlNPTkNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbn1cblxuY29uc3QgTnVsbENlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogTnVsbENlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICA8Y29kZSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNjBcIj5OVUxMPC9jb2RlPlxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuTnVsbENlbGwuZGlzcGxheU5hbWUgPSBcIk51bGxDZWxsXCI7XG5cbmV4cG9ydCB7IE51bGxDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOdW1lcmljQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5jb25zdCBOdW1lcmljQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBOdW1lcmljQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICA8ZGl2IGRhdGEtY2VsbC10eXBlPVwibnVtZXJpY1wiPnt2YWx1ZSA9PT0gbnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKHZhbHVlKX08L2Rpdj5cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbk51bWVyaWNDZWxsLmRpc3BsYXlOYW1lID0gXCJOdW1lcmljQ2VsbFwiO1xuXG5leHBvcnQgeyBOdW1lcmljQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF3Q2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5jb25zdCBSYXdDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IFJhd0NlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5SYXdDZWxsLmRpc3BsYXlOYW1lID0gXCJSYXdDZWxsXCI7XG5cbmV4cG9ydCB7IFJhd0NlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHN0cmluZyB8IERhdGUgfCBudW1iZXI7XG59XG5cbmNvbnN0IFRpbWVDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IFRpbWVDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuVGltZUNlbGwuZGlzcGxheU5hbWUgPSBcIlRpbWVDZWxsXCI7XG5cbmV4cG9ydCB7IFRpbWVDZWxsIH07XG4iLCAiaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENoZWNrYm94IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9jaGVja2JveFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEhlYWRlckNlbGxQcm9wcyB7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn1cblxuY29uc3QgU2VsZWN0SGVhZGVyQ2VsbCA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIFNlbGVjdEhlYWRlckNlbGxQcm9wcz4oKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyB0YWJsZSwgcmVhZG9ubHksIGNsYXNzTmFtZSwgc3R5bGUsIC4uLnJlc3QgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9IHN0eWxlPXtzdHlsZX0gey4uLnJlc3R9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy13LWZ1bGxcIj5cbiAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgY2hlY2tlZD17dGFibGUuZ2V0SXNBbGxSb3dzU2VsZWN0ZWQoKX1cbiAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9eyh2YWx1ZSkgPT4gdGFibGUudG9nZ2xlQWxsUm93c1NlbGVjdGVkKCEhdmFsdWUpfVxuICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cblNlbGVjdEhlYWRlckNlbGwuZGlzcGxheU5hbWUgPSBcIlNlbGVjdEhlYWRlckNlbGxcIjtcblxuZXhwb3J0IHsgU2VsZWN0SGVhZGVyQ2VsbCB9O1xuIiwgImltcG9ydCAqIGFzIENoZWNrYm94UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY2hlY2tib3hcIjtcbmltcG9ydCB7IENoZWNrIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENoZWNrYm94UHJpbWl0aXZlLlJvb3RcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWgtNCBwcy13LTQgcHMtc2hyaW5rLTAgcHMtcm91bmRlZC1zbSBwcy1ib3JkZXIgcHMtYm9yZGVyLXByaW1hcnkgcHMtc2hhZG93IGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3IgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXRleHQtY3VycmVudFwiKX0+XG4gICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgPC9DaGVja2JveFByaW1pdGl2ZS5JbmRpY2F0b3I+XG4gIDwvQ2hlY2tib3hQcmltaXRpdmUuUm9vdD5cbikpO1xuQ2hlY2tib3guZGlzcGxheU5hbWUgPSBDaGVja2JveFByaW1pdGl2ZS5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBDaGVja2JveCB9O1xuIiwgImltcG9ydCB7IFJvdyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94XCI7XG5cbmltcG9ydCB7IFNlbGVjdENlbGwgfSBmcm9tIFwiLi9TZWxlY3RDZWxsXCI7XG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdFJvd0NlbGxQcm9wcyB7XG4gIHJvdzogUm93PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICByZWFkb25seTogYm9vbGVhbjtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xufVxuXG5jb25zdCBTZWxlY3RSb3dDZWxsID0gZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgU2VsZWN0Um93Q2VsbFByb3BzPigocHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IHJvdywgcmVhZG9ubHksIGNsYXNzTmFtZSwgc3R5bGUsIC4uLnJlc3QgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdENlbGwgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSBzdHlsZT17c3R5bGV9IHsuLi5yZXN0fT5cbiAgICAgIDxDaGVja2JveFxuICAgICAgICBjaGVja2VkPXtyb3cuZ2V0SXNTZWxlY3RlZCgpfVxuICAgICAgICBkaXNhYmxlZD17IXJvdy5nZXRDYW5TZWxlY3QoKSB8fCByZWFkb25seX1cbiAgICAgICAgb25DaGVja2VkQ2hhbmdlPXtyb3cuZ2V0VG9nZ2xlU2VsZWN0ZWRIYW5kbGVyKCl9XG4gICAgICAvPlxuICAgIDwvU2VsZWN0Q2VsbD5cbiAgKTtcbn0pO1xuXG5TZWxlY3RSb3dDZWxsLmRpc3BsYXlOYW1lID0gXCJTZWxlY3RSb3dDZWxsXCI7XG5cbmV4cG9ydCB7IFNlbGVjdFJvd0NlbGwgfTtcbiIsICJpbXBvcnQgeyB0eXBlIENTU1Byb3BlcnRpZXMsIERldGFpbGVkSFRNTFByb3BzLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlQ2VsbCwgVGFibGVIZWFkIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdENlbGxQcm9wcyBleHRlbmRzIFByb3BzV2l0aENoaWxkcmVuLCBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczx1bmtub3duPiwgdW5rbm93bj4ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbiAgaXNIZWFkZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0Q2VsbChwcm9wczogU2VsZWN0Q2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgcmVmLCBzdHlsZSwgaXNIZWFkZXIgPSBmYWxzZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNlbGVjdENsYXNzZXMgPSBjbihcbiAgICBcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXAtMCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLXctZnVsbCBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldIHBzLWxlYWRpbmctW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldXCIsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzSGVhZGVyID8gKFxuICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgey4uLmZvcndhcmRlZFByb3BzfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oc2VsZWN0Q2xhc3NlcywgXCJwcy1oLTEwIHBzLWJnLXRhYmxlLWhlYWQgcHMtei0zMCBwcy1zdGlja3kgcHMtdG9wLTAgcHMtbGVmdC0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgcmVmPXtyZWYgYXMgbmV2ZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgKSA6IChcbiAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgIHsuLi5mb3J3YXJkZWRQcm9wc31cbiAgICAgICAgICBjbGFzc05hbWU9e2NuKHNlbGVjdENsYXNzZXMsIFwicHMtei0xMCBwcy1oLVszOXB4XVwiLCBjbGFzc05hbWUpfVxuICAgICAgICAgIHJlZj17cmVmIGFzIG5ldmVyfVxuICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuaW50ZXJmYWNlIFBvcG92ZXJDZWxsQ29udGV4dFZhbHVlIHtcbiAgb3BlbjogYm9vbGVhbjtcbiAgc2V0T3BlbjogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcG92ZXJDZWxsQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8UG9wb3ZlckNlbGxDb250ZXh0VmFsdWUgfCBudWxsPihudWxsKTtcblxuY29uc3QgUG9wb3ZlckNlbGwgPSAoeyBjaGlsZHJlbiwgLi4ucHJvcHMgfTogUG9wb3ZlclByaW1pdGl2ZS5Qb3BvdmVyUHJvcHMpID0+IHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPFBvcG92ZXJDZWxsQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBvcGVuLCBzZXRPcGVuIH19PlxuICAgICAgPFBvcG92ZXJQcmltaXRpdmUuUm9vdCBvcGVuPXtvcGVufSBvbk9wZW5DaGFuZ2U9e3NldE9wZW59IHsuLi5wcm9wc30+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvUG9wb3ZlclByaW1pdGl2ZS5Sb290PlxuICAgIDwvUG9wb3ZlckNlbGxDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblBvcG92ZXJDZWxsLmRpc3BsYXlOYW1lID0gXCJQb3BvdmVyQ2VsbFwiO1xuXG5pbnRlcmZhY2UgUG9wb3ZlckNlbGxUcmlnZ2VyUHJvcHMgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj4ge1xuICBvbkRvdWJsZUNsaWNrPzogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgUG9wb3ZlckNlbGxUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+LCBQb3BvdmVyQ2VsbFRyaWdnZXJQcm9wcz4oXG4gICh7IGNoaWxkcmVuLCBvbkRvdWJsZUNsaWNrLCBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIC8vIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFBvcG92ZXJDZWxsQ29udGV4dCk7XG4gICAgLy8gY29uc3QgW2lzRm9jdXNlZCwgc2V0SXNGb2N1c2VkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gUmVhY3QudXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKTtcblxuICAgIC8vIFRPRE86IEtlZXBpbmcgdGhpcyB0ZW1wb3JhcmlseTsgbWlnaHQgbmVlZCBpdCBsYXRlciBkZXBlbmRpbmcgb24gaW5wdXQgdHlwZXNcbiAgICAvLyBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vICAgY29uc3QgaGFuZGxlRG9jdW1lbnRDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIC8vICAgICBpZiAodHJpZ2dlclJlZi5jdXJyZW50ICYmICF0cmlnZ2VyUmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgIC8vICAgICAgIC8vIGNvbnNvbGUubG9nKFwiT3V0c2lkZSBjbGljayAtIHJlbW92aW5nIGZvY3VzXCIpO1xuICAgIC8vICAgICAgIHNldElzRm9jdXNlZChmYWxzZSk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH07XG5cbiAgICAvLyAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAvLyAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRG9jdW1lbnRDbGljayk7XG4gICAgLy8gfSwgW10pO1xuXG4gICAgLy8gY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIC8vICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIC8vICAgc2V0SXNGb2N1c2VkKHRydWUpO1xuICAgIC8vICAgY29udGV4dD8uc2V0T3Blbih0cnVlKTtcblxuICAgIC8vICAgaWYgKGUuZGV0YWlsID09PSAyICYmIG9uRG91YmxlQ2xpY2spIHtcbiAgICAvLyAgICAgb25Eb3VibGVDbGljaygpO1xuICAgIC8vICAgfVxuICAgIC8vIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlclxuICAgICAgICByZWY9eyhub2RlKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZWYgPT09IFwiZnVuY3Rpb25cIikgcmVmKG5vZGUpO1xuICAgICAgICAgIGVsc2UgaWYgKHJlZikgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETyBuZWVkcyB0byBiZSBpbnZlc3RpZ2F0ZWRcbiAgICAgICAgICB0cmlnZ2VyUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9fVxuICAgICAgICAvLyBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgLy8gZGF0YS1mb2N1cz17aXNGb2N1c2VkLnRvU3RyaW5nKCl9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXCJ3LWZ1bGwgaC1mdWxsIGN1cnNvci1wb2ludGVyXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Qb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI+XG4gICAgKTtcbiAgfSxcbik7XG5Qb3BvdmVyQ2VsbFRyaWdnZXIuZGlzcGxheU5hbWUgPSBcIlBvcG92ZXJDZWxsVHJpZ2dlclwiO1xuXG5jb25zdCBQb3BvdmVyQ2VsbENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBhbGlnbiA9IFwiY2VudGVyXCIsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFBvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMiBwcy16LTUwIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIHBzLW91dGxpbmUtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpmYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOmZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpzbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06c2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnNsaWRlLWluLWZyb20tYm90dG9tLTJcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIC8vIHdlIGFyZSBoYW5kbGluZyB0aGlzIG91cnNlbHZlcywgZG8gbm90IGxldCByYWRpeCB0YWtlIG92ZXJcbiAgICAgIG9uRXNjYXBlS2V5RG93bj17KGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvUG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblBvcG92ZXJDZWxsQ29udGVudC5kaXNwbGF5TmFtZSA9IFBvcG92ZXJQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBvcG92ZXJBY3Rpb25zKGFjdGlvbnM6IHtcbiAgb25TYXZlPzogKCkgPT4gYm9vbGVhbiB8IHZvaWQ7XG4gIG9uQ2FuY2VsPzogKCkgPT4gdm9pZDtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFBvcG92ZXJDZWxsQ29udGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlU2F2ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWN0aW9ucy5yZWFkb25seSkge1xuICAgICAgY29udGV4dD8uc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICAgIGlmIChhY3Rpb25zLm9uU2F2ZSkge1xuICAgICAgYWN0aW9ucy5vblNhdmUoKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbnRleHQuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9LCBbYWN0aW9ucy5vblNhdmUsIGNvbnRleHRdKTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFjdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnRleHQ/LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9ucy5vbkNhbmNlbCkge1xuICAgICAgYWN0aW9ucy5vbkNhbmNlbCgpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH0sIFthY3Rpb25zLm9uQ2FuY2VsLCBjb250ZXh0XSk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAvLyBjaGVjayBpZiBlbnRlciBpcyBwcmVzc2VkIGFuZCBwcmVzc2VkIHdpdGhvdXQgc2hpZnRcbiAgICAgIGlmICgoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIlJldHVyblwiKSAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaGFuZGxlU2F2ZSgpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgICAgaGFuZGxlQ2FuY2VsKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuICB9LCBbaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsXSk7XG5cbiAgcmV0dXJuIHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH07XG59XG5cbmV4cG9ydCB7IFBvcG92ZXJDZWxsLCBQb3BvdmVyQ2VsbFRyaWdnZXIsIFBvcG92ZXJDZWxsQ29udGVudCB9O1xuIiwgImltcG9ydCB0eXBlIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFBvcG92ZXJDZWxsLCBQb3BvdmVyQ2VsbENvbnRlbnQsIFBvcG92ZXJDZWxsVHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGVhYmxlQ2VsbFByb3BzIHtcbiAgY2VsbENvbXBvbmVudDogUmVhY3ROb2RlO1xuICBpbnB1dENvbXBvbmVudDogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gV3JpdGVhYmxlQ2VsbChwcm9wczogV3JpdGVhYmxlQ2VsbFByb3BzKSB7XG4gIGNvbnN0IHsgY2VsbENvbXBvbmVudCwgaW5wdXRDb21wb25lbnQgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPFBvcG92ZXJDZWxsPlxuICAgICAgPFBvcG92ZXJDZWxsVHJpZ2dlciBhc0NoaWxkPntjZWxsQ29tcG9uZW50fTwvUG9wb3ZlckNlbGxUcmlnZ2VyPlxuICAgICAgPFBvcG92ZXJDZWxsQ29udGVudFxuICAgICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICAgICAgYWxpZ25PZmZzZXQ9ey0xfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcm91bmRlZC1ub25lIHBzLWJnLW11dGVkXCIsXG4gICAgICAgICAgXCJwcy1wLTAgcHMtei0zMCBwcy1nYXAtMCBwcy1ib3JkZXItcHJpbWFyeVwiLFxuICAgICAgICAgIFwicHMtdy1bY2FsYyh2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXytfMXB4KV0gcHMtbWF4LXctNzIgcHMtbWluLXctNzJcIixcbiAgICAgICAgKX1cbiAgICAgICAgc2lkZU9mZnNldD17LTQwfVxuICAgICAgPlxuICAgICAgICB7aW5wdXRDb21wb25lbnR9XG4gICAgICA8L1BvcG92ZXJDZWxsQ29udGVudD5cbiAgICA8L1BvcG92ZXJDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7XG4gIGNsb3Nlc3RDZW50ZXIsXG4gIERuZENvbnRleHQsXG4gIHR5cGUgRHJhZ0VuZEV2ZW50LFxuICBEcmFnT3ZlcmxheSxcbiAgdHlwZSBEcmFnU3RhcnRFdmVudCxcbiAgS2V5Ym9hcmRTZW5zb3IsXG4gIFBvaW50ZXJTZW5zb3IsXG4gIHR5cGUgVW5pcXVlSWRlbnRpZmllcixcbiAgdXNlU2Vuc29yLFxuICB1c2VTZW5zb3JzLFxufSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHtcbiAgYXJyYXlNb3ZlLFxuICBTb3J0YWJsZUNvbnRleHQsXG4gIHNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyxcbiAgdXNlU29ydGFibGUsXG4gIHZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSxcbn0gZnJvbSBcIkBkbmQta2l0L3NvcnRhYmxlXCI7XG5pbXBvcnQgeyBDU1MgfSBmcm9tIFwiQGRuZC1raXQvdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBDaGV2cm9uRG93biwgQ2hldnJvblJpZ2h0LCBHcmlwVmVydGljYWwsIEhlbHBDaXJjbGUsIFggfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBtb3Rpb24gfSBmcm9tIFwibW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgc2hvcnQgZnJvbSBcInNob3J0LXV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW5GaWx0ZXIsIEZpbHRlckdyb3VwLCBGaWx0ZXJPcGVyYXRvciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IGNvZXJjZVRvU3RyaW5nLCBjb2VyY2VUb1ZhbHVlIH0gZnJvbSBcIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgRHJvcGRvd25NZW51LCBEcm9wZG93bk1lbnVDb250ZW50LCBEcm9wZG93bk1lbnVUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbmNvbnN0IExlYWRpbmdPcGVyYXRvclNlbGVjdCA9ICh7XG4gIHZhbHVlLFxuICBvblZhbHVlQ2hhbmdlLFxuICBkaXNhYmxlZCxcbiAgdHJpZ2dlckNsYXNzTmFtZSA9IFwicHMtdy0yMCBwcy10ZXh0LXhzIHBzLWgtOFwiLFxufToge1xuICB2YWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uVmFsdWVDaGFuZ2U6ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0cmlnZ2VyQ2xhc3NOYW1lPzogc3RyaW5nO1xufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTZWxlY3QgdmFsdWU9e3ZhbHVlfSBvblZhbHVlQ2hhbmdlPXtvblZhbHVlQ2hhbmdlfSBkaXNhYmxlZD17ZGlzYWJsZWR9PlxuICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPXt0cmlnZ2VyQ2xhc3NOYW1lfT5cbiAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiTG9naWNcIiAvPlxuICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiYW5kXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+QU5EPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPk9SPC9kaXY+XG4gICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICA8L1NlbGVjdD5cbiAgKTtcbn07XG5cbi8vIFJlbmRlcnMgdGhlIHByZXZpZXcgb2YgdGhlIGl0ZW0gYmVpbmcgZHJhZ2dlZCBpbiB0aGUgRHJhZ092ZXJsYXkuXG5jb25zdCBEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyA9ICh7XG4gIGFjdGl2ZUlkLFxuICBpdGVtcyxcbiAgdGFibGUsXG59OiB7XG4gIGFjdGl2ZUlkOiBVbmlxdWVJZGVudGlmaWVyO1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICB0YWJsZTogVGFibGU7XG59KSA9PiB7XG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG4gIGlmICghYWN0aXZlSXRlbSkgcmV0dXJuIG51bGw7XG5cbiAgbGV0IGxlYWRpbmdPcGVyYXRvclZhbHVlOiBcImFuZFwiIHwgXCJvclwiID0gXCJhbmRcIjsgLy8gRGVmYXVsdFxuICBsZXQgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSBmYWxzZTtcbiAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBhY3RpdmVJZCk7XG5cbiAgaWYgKGFjdGl2ZUl0ZW1JbmRleCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0l0ZW0gPSBpdGVtc1thY3RpdmVJdGVtSW5kZXggLSAxXTtcbiAgICBpZiAocHJldmlvdXNJdGVtKSB7XG4gICAgICAvLyAnYWZ0ZXInIGZyb20gdGhlIHByZXZpb3VzIGl0ZW0gZGV0ZXJtaW5lcyB0aGUgb3BlcmF0b3IgbGVhZGluZyBpbnRvIHRoZSBjdXJyZW50IGl0ZW1cbiAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlID0gcHJldmlvdXNJdGVtLmFmdGVyO1xuICAgICAgc2hvd0xlYWRpbmdPcEZvck92ZXJsYXkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhY3RpdmVJdGVtLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICBmaWx0ZXI9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIHVwZGF0ZXNcbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fSAvLyBPdmVybGF5IGlzIG5vbi1pbnRlcmFjdGl2ZSBmb3IgZGVsZXRlc1xuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX0gLy8gTm9uLWludGVyYWN0aXZlXG4gICAgICAvPlxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudFxuICAgICAgICBncm91cD17YWN0aXZlSXRlbX1cbiAgICAgICAgb25VcGRhdGU9eygpID0+IHt9fVxuICAgICAgICBvbkRlbGV0ZT17KCkgPT4ge319XG4gICAgICAgIGlzUm9vdD17ZmFsc2V9IC8vIERyYWdnZWQgaXRlbSBpbiBvdmVybGF5IGlzIG5vdCB0aGUgcm9vdFxuICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3BGb3JPdmVybGF5fVxuICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXsoKSA9PiB7fX1cbiAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtmYWxzZX0gLy8gTm9uLWludGVyYWN0aXZlIGZvciBwcmV2aWV3XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn07XG5cbi8vIE1hbmFnZXMgRE5EIGNvbnRleHQgYW5kIHJlbmRlcmluZyBvZiBzb3J0YWJsZSBmaWx0ZXIgaXRlbXMgZm9yIGEgZ3JvdXAuXG5jb25zdCBGaWx0ZXJMaXN0SXRlbXMgPSAoe1xuICBpdGVtcyxcbiAgcGFyZW50R3JvdXBJZCxcbiAgdGFibGUsXG4gIG9uVXBkYXRlSXRlbSxcbiAgb25EZWxldGVJdGVtLFxuICBvblJlb3JkZXJJdGVtcyxcbiAgYWN0aXZlRHJhZ0lkLFxuICBvbkRyYWdTdGFydCxcbiAgb25EcmFnRW5kU2lnbmFsLFxufToge1xuICBpdGVtczogQXJyYXk8Q29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA+O1xuICBwYXJlbnRHcm91cElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIG9uVXBkYXRlSXRlbTogKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRJdGVtOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGVJdGVtOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgb25SZW9yZGVySXRlbXM6IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB2b2lkO1xuICBhY3RpdmVEcmFnSWQ6IFVuaXF1ZUlkZW50aWZpZXIgfCBudWxsO1xuICBvbkRyYWdTdGFydDogKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4gdm9pZDtcbiAgb25EcmFnRW5kU2lnbmFsOiAoKSA9PiB2b2lkOyAvLyBDYWxsYmFjayB0byBzaWduYWwgZHJhZyBvcGVyYXRpb24gY29tcGxldGlvblxufSkgPT4ge1xuICBjb25zdCBzb3J0YWJsZUl0ZW1JZHMgPSB1c2VNZW1vKCgpID0+IGl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCksIFtpdGVtc10pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhcbiAgICB1c2VTZW5zb3IoUG9pbnRlclNlbnNvciwgeyBhY3RpdmF0aW9uQ29uc3RyYWludDogeyBkaXN0YW5jZTogOCB9IH0pLFxuICAgIHVzZVNlbnNvcihLZXlib2FyZFNlbnNvciwgeyBjb29yZGluYXRlR2V0dGVyOiBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMgfSksXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlSW50ZXJuYWxEcmFnRW5kID0gKGV2ZW50OiBEcmFnRW5kRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IGFjdGl2ZSwgb3ZlciB9ID0gZXZlbnQ7XG4gICAgaWYgKG92ZXIgJiYgYWN0aXZlLmlkICE9PSBvdmVyLmlkKSB7XG4gICAgICBjb25zdCBvbGRJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlLmlkKTtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSBvdmVyLmlkKTtcbiAgICAgIGlmIChvbGRJbmRleCAhPT0gLTEgJiYgbmV3SW5kZXggIT09IC0xKSB7XG4gICAgICAgIG9uUmVvcmRlckl0ZW1zKG9sZEluZGV4LCBuZXdJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICAgIG9uRHJhZ0VuZFNpZ25hbCgpOyAvLyBTaWduYWwgdG8gcGFyZW50IHRoYXQgZHJhZyBoYXMgZW5kZWQgKGUuZy4sIHRvIGNsZWFyIGFjdGl2ZURyYWdJZClcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxEbmRDb250ZXh0XG4gICAgICBzZW5zb3JzPXtzZW5zb3JzfVxuICAgICAgY29sbGlzaW9uRGV0ZWN0aW9uPXtjbG9zZXN0Q2VudGVyfVxuICAgICAgb25EcmFnU3RhcnQ9e29uRHJhZ1N0YXJ0fVxuICAgICAgb25EcmFnRW5kPXtoYW5kbGVJbnRlcm5hbERyYWdFbmR9XG4gICAgPlxuICAgICAgPFNvcnRhYmxlQ29udGV4dCBpdGVtcz17c29ydGFibGVJdGVtSWRzfSBzdHJhdGVneT17dmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5fT5cbiAgICAgICAge2l0ZW1zLm1hcCgoY3VycmVudEZpbHRlckl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHNob3dMZWFkaW5nT3AgPSBmYWxzZTtcbiAgICAgICAgICBsZXQgbGVhZGluZ09wVmFsOiBcImFuZFwiIHwgXCJvclwiIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBvbkxlYWRpbmdPcENoYW5nZUZuOiAoKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICBzaG93TGVhZGluZ09wID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZJdGVtID0gaXRlbXNbaW5kZXggLSAxXSE7XG4gICAgICAgICAgICBsZWFkaW5nT3BWYWwgPSBwcmV2SXRlbS5hZnRlcjtcbiAgICAgICAgICAgIG9uTGVhZGluZ09wQ2hhbmdlRm4gPSAobmV3VmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFByZXZJdGVtID0geyAuLi5wcmV2SXRlbSwgYWZ0ZXI6IG5ld1ZhbHVlIH07XG4gICAgICAgICAgICAgIG9uVXBkYXRlSXRlbShpbmRleCAtIDEsIHVwZGF0ZWRQcmV2SXRlbSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaXNMZWFkaW5nT3BUYXJnZXRMYXN0ID0gaW5kZXggLSAxID09PSBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U29ydGFibGVGaWx0ZXJJdGVtXG4gICAgICAgICAgICAgIGtleT17Y3VycmVudEZpbHRlckl0ZW0uaWR9XG4gICAgICAgICAgICAgIGZpbHRlcj17Y3VycmVudEZpbHRlckl0ZW19XG4gICAgICAgICAgICAgIG9uVXBkYXRlPXsodXBkYXRlZEZpbHRlcikgPT4gb25VcGRhdGVJdGVtKGluZGV4LCB1cGRhdGVkRmlsdGVyKX1cbiAgICAgICAgICAgICAgb25EZWxldGU9eygpID0+IG9uRGVsZXRlSXRlbShpbmRleCl9XG4gICAgICAgICAgICAgIHBhcmVudERuZElkPXtwYXJlbnRHcm91cElkfVxuICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgIHNob3dMZWFkaW5nT3BlcmF0b3I9e3Nob3dMZWFkaW5nT3B9XG4gICAgICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BWYWx9XG4gICAgICAgICAgICAgIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPXtvbkxlYWRpbmdPcENoYW5nZUZufVxuICAgICAgICAgICAgICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q9e2lzTGVhZGluZ09wVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgIHtjcmVhdGVQb3J0YWwoXG4gICAgICAgIDxEcmFnT3ZlcmxheT5cbiAgICAgICAgICB7YWN0aXZlRHJhZ0lkID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1vcGFjaXR5LTgwXCI+XG4gICAgICAgICAgICAgIDxEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyBhY3RpdmVJZD17YWN0aXZlRHJhZ0lkfSBpdGVtcz17aXRlbXN9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L0RyYWdPdmVybGF5PixcbiAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICl9XG4gICAgPC9EbmRDb250ZXh0PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNvcnRhYmxlIGZpbHRlciBpdGVtXG5jb25zdCBTb3J0YWJsZUZpbHRlckl0ZW0gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgcGFyZW50RG5kSWQsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cDtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIHBhcmVudERuZElkOiBVbmlxdWVJZGVudGlmaWVyO1xuICB0YWJsZTogVGFibGU7XG4gIHNob3dMZWFkaW5nT3BlcmF0b3I/OiBib29sZWFuO1xuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT86IFwiYW5kXCIgfCBcIm9yXCI7XG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlPzogKHZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB2b2lkO1xuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3Q/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgc2V0Tm9kZVJlZiwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGZpbHRlci5pZCxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiBmaWx0ZXIua2luZCxcbiAgICAgIHBhcmVudElkOiBwYXJlbnREbmRJZCxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBzdHlsZSA9IHtcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIG9wYWNpdHk6IGlzRHJhZ2dpbmcgPyAwLjUgOiAxLFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e3NldE5vZGVSZWZ9IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtZ2FwLTJcIj5cbiAgICAgIHtmaWx0ZXIua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIiA/IChcbiAgICAgICAgPEZpbHRlckNvbmRpdGlvblxuICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApIDogKFxuICAgICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgICBncm91cD17ZmlsdGVyfVxuICAgICAgICAgIG9uVXBkYXRlPXtvblVwZGF0ZX1cbiAgICAgICAgICBvbkRlbGV0ZT17b25EZWxldGV9XG4gICAgICAgICAgZHJhZ0hhbmRsZVByb3BzPXt7IC4uLmF0dHJpYnV0ZXMsIC4uLmxpc3RlbmVycyB9fVxuICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wZXJhdG9yfVxuICAgICAgICAgIGxlYWRpbmdPcGVyYXRvclZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IGZvciBhIHNpbmdsZSBmaWx0ZXIgY29uZGl0aW9uXG5jb25zdCBGaWx0ZXJDb25kaXRpb24gPSAoe1xuICBmaWx0ZXIsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRGaWx0ZXI6IENvbHVtbkZpbHRlcikgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgaGFuZGxlQ29sdW1uQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgY29sdW1uOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVyYXRvckNoYW5nZSA9ICh2YWx1ZTogRmlsdGVyT3BlcmF0b3IpID0+IHtcbiAgICBvblVwZGF0ZSh7IC4uLmZpbHRlciwgb3BlcmF0b3I6IHZhbHVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICBjb25zdCBjb2x1bW5JbmZvID0gdGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXTtcblxuICAgIGlmIChjb2x1bW5JbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlVG9WYWx1ZShjb2x1bW5JbmZvLCBmaWx0ZXIub3BlcmF0b3IsIHJhd1ZhbHVlKTtcblxuICAgICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIHZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgW2VkaXRlZFZhbHVlLCBzZXRFZGl0ZWRWYWx1ZV0gPSB1c2VTdGF0ZShcbiAgICBjb2VyY2VUb1N0cmluZyh0YWJsZS5jb2x1bW5zW2ZpbHRlci5jb2x1bW5dLCBmaWx0ZXIub3BlcmF0b3IsIGZpbHRlci52YWx1ZSksXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdlxuICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtdy1mdWxsXCJcbiAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCI+XG4gICAgICAgICAgPEdyaXBWZXJ0aWNhbCBjbGFzc05hbWU9XCJwcy10ZXh0LWdyYXktNTAwXCIgc2l6ZT17MTZ9IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICB7c2hvd0xlYWRpbmdPcGVyYXRvciAmJiBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSA/IChcbiAgICAgICAgICAgIDxMZWFkaW5nT3BlcmF0b3JTZWxlY3RcbiAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIuY29sdW1ufSBvblZhbHVlQ2hhbmdlPXtoYW5kbGVDb2x1bW5DaGFuZ2V9PlxuICAgICAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdy0yOCBwcy10ZXh0LXhzIHBzLWgtOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0VmFsdWUgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY29sdW1uXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICB7T2JqZWN0LmtleXModGFibGUuY29sdW1ucykubWFwKChjb2x1bW4pID0+IChcbiAgICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e2NvbHVtbn0gdmFsdWU9e2NvbHVtbn0+XG4gICAgICAgICAgICAgICAgICB7Y29sdW1ufVxuICAgICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8U2VsZWN0IHZhbHVlPXtmaWx0ZXIub3BlcmF0b3J9IG9uVmFsdWVDaGFuZ2U9eyh2YWx1ZSkgPT4gaGFuZGxlT3BlcmF0b3JDaGFuZ2UodmFsdWUgYXMgRmlsdGVyT3BlcmF0b3IpfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiT3BlcmF0b3JcIiAvPlxuICAgICAgICAgICAgPC9TZWxlY3RUcmlnZ2VyPlxuICAgICAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPVwiPj08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiIT1cIj4hPTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+XCI+Jmd0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI+PVwiPiZndDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjxcIj4mbHQ7PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIjw9XCI+Jmx0Oz08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXNcIj5pczwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpcyBub3RcIj5pcyBub3Q8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibGlrZVwiPmxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm90IGxpa2VcIj5ub3QgbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJpbGlrZVwiPmlsaWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBpbGlrZVwiPm5vdCBpbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgIDwvU2VsZWN0Q29udGVudD5cbiAgICAgICAgICA8L1NlbGVjdD5cblxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgdmFsdWU9e2VkaXRlZFZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgIHNldEVkaXRlZFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UoZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwcy13LTI0IHBzLXRleHQteHMgcHMtaC04XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBmaWx0ZXIgZ3JvdXAgKEFORC9PUilcbmNvbnN0IEZpbHRlckdyb3VwQ29tcG9uZW50ID0gKHtcbiAgZ3JvdXAsXG4gIG9uVXBkYXRlLFxuICBvbkRlbGV0ZSxcbiAgZHJhZ0hhbmRsZVByb3BzLFxuICBpc1Jvb3QgPSBmYWxzZSxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBncm91cDogRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEdyb3VwOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgb25EZWxldGU6ICgpID0+IHZvaWQ7XG4gIGRyYWdIYW5kbGVQcm9wcz86IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcbiAgaXNSb290PzogYm9vbGVhbjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFthY3RpdmVEcmFnSWQsIHNldEFjdGl2ZURyYWdJZF0gPSB1c2VTdGF0ZTxVbmlxdWVJZGVudGlmaWVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQWRkRmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcjogQ29sdW1uRmlsdGVyID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkNvbHVtbkZpbHRlclwiLFxuICAgICAgY29sdW1uOiBPYmplY3Qua2V5cyh0YWJsZS5jb2x1bW5zKVswXSA/PyBcIlwiLCAvLyBBbHdheXMgc2VsZWN0IGZpcnN0IGNvbFxuICAgICAgb3BlcmF0b3I6IFwiPVwiLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3RmlsdGVyXSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBZGRHcm91cCA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdHcm91cDogRmlsdGVyR3JvdXAgPSB7XG4gICAgICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbiAgICAgIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgYWZ0ZXI6IFwiYW5kXCIsXG4gICAgfTtcblxuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IFsuLi5ncm91cC5maWx0ZXJzLCBuZXdHcm91cF0gfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlSXRlbUluR3JvdXAgPSAoaW5kZXg6IG51bWJlciwgdXBkYXRlZEZpbHRlck9yR3JvdXA6IENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IFsuLi5ncm91cC5maWx0ZXJzXTtcbiAgICBuZXdGaWx0ZXJzW2luZGV4XSA9IHVwZGF0ZWRGaWx0ZXJPckdyb3VwO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgZGVsZXRlSXRlbUZyb21Hcm91cCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IFsuLi5ncm91cC5maWx0ZXJzXTtcbiAgICBuZXdGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogbmV3RmlsdGVycyB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSAoZXZlbnQ6IERyYWdTdGFydEV2ZW50KSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKGV2ZW50LmFjdGl2ZS5pZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZFNpZ25hbCA9ICgpID0+IHtcbiAgICBzZXRBY3RpdmVEcmFnSWQobnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVvcmRlckl0ZW1zID0gKG9sZEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAob2xkSW5kZXggPT09IG5ld0luZGV4KSByZXR1cm47XG4gICAgY29uc3QgcmVvcmRlcmVkRmlsdGVycyA9IGFycmF5TW92ZShncm91cC5maWx0ZXJzLCBvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IHJlb3JkZXJlZEZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyR3JvdXBDb250ZW50ID0gKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKCFncm91cC5maWx0ZXJzIHx8IGdyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXBsLTYgcHMtdGV4dC1zbSBwcy10ZXh0LW5ldXRyYWwtNTAwIHBzLWl0YWxpY1wiPlxuICAgICAgICAgIFRoaXMgZ3JvdXAgaXMgZW1wdHkuIEFkZCBhIGZpbHRlciBvciBhbm90aGVyIGdyb3VwLlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxtb3Rpb24uZGl2IHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmUgcHMtZ2FwLTJcIiwgaXNSb290ID8gXCJcIiA6IFwicHMtcGItMlwiKX0+XG4gICAgICAgICAgPEZpbHRlckxpc3RJdGVtc1xuICAgICAgICAgICAgaXRlbXM9e2dyb3VwLmZpbHRlcnN9XG4gICAgICAgICAgICBwYXJlbnRHcm91cElkPXtncm91cC5pZH1cbiAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIG9uVXBkYXRlSXRlbT17dXBkYXRlSXRlbUluR3JvdXB9XG4gICAgICAgICAgICBvbkRlbGV0ZUl0ZW09e2RlbGV0ZUl0ZW1Gcm9tR3JvdXB9XG4gICAgICAgICAgICBvblJlb3JkZXJJdGVtcz17aGFuZGxlUmVvcmRlckl0ZW1zfVxuICAgICAgICAgICAgYWN0aXZlRHJhZ0lkPXthY3RpdmVEcmFnSWR9XG4gICAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgICAgb25EcmFnRW5kU2lnbmFsPXtoYW5kbGVEcmFnRW5kU2lnbmFsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8bW90aW9uLmRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LWZ1bGxcIiwgaXNFeHBhbmRlZCA/IFwicHMtZ2FwLTJcIiA6IFwiXCIpfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cywganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zXG4gICAgICAgICAgICAgIDxkaXYgey4uLmRyYWdIYW5kbGVQcm9wc30gY2xhc3NOYW1lPVwicHMtY3Vyc29yLWdyYWJcIiBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX0+XG4gICAgICAgICAgICAgICAge2lzRXhwYW5kZWQgPyA8Q2hldnJvbkRvd24gc2l6ZT17MTZ9IC8+IDogPENoZXZyb25SaWdodCBzaXplPXsxNn0gLz59XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgJiYgIWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXtvbkxlYWRpbmdPcGVyYXRvckNoYW5nZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWRkRmlsdGVyfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgb3ZlcmZsb3ctaGlkZGVuIHBzLXRyYW5zaXRpb24tYWxsXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBZGQgRmlsdGVyXG4gICAgICAgICAgICAgIHtncm91cC5maWx0ZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgIDxCYWRnZSBjbGFzc05hbWU9XCJwcy10cmFuc2l0aW9uLWFsbFwiPlxuICAgICAgICAgICAgICAgICAgPEFuaW1hdGVOdW1iZXIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT57Z3JvdXAuZmlsdGVycy5sZW5ndGh9PC9BbmltYXRlTnVtYmVyPlxuICAgICAgICAgICAgICAgIDwvQmFkZ2U+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e2hhbmRsZUFkZEdyb3VwfSBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMVwiPlxuICAgICAgICAgICAgICBBZGQgR3JvdXBcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHtpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVUcmlnZ2VyIGFzQ2hpbGQ+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiPlxuICAgICAgICAgICAgICAgICAgICA8SGVscENpcmNsZSBjbGFzc05hbWU9XCJwcy1zaXplLTRcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50IGFsaWduPVwiY2VudGVyXCIgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtcC00IHBzLXRleHQtY2VudGVyIHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTYwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIE5vIGZpbHRlcnMgYXBwbGllZCB5ZXQuIEFkZCBmaWx0ZXJzIHRvIHByZXZpZXcgeW91ciBxdWVyeS5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtMiBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLWJnLW5ldXRyYWwtMTAwIHBzLXJvdW5kZWQtc20gcHMtZm9udC1tb25vXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFF1ZXJ5VmlzdWFsaXplciBmaWx0ZXI9e2dyb3VwfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7IWlzUm9vdCAmJiAoXG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInhzXCIgb25DbGljaz17b25EZWxldGV9PlxuICAgICAgICAgICAgICAgIDxYIHNpemU9ezE0fSAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oaXNSb290ID8gXCJcIiA6IFwicHMtbWwtNlwiKX0+e3JlbmRlckdyb3VwQ29udGVudCgpfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tb3Rpb24uZGl2PlxuICApO1xufTtcblxuLy8gQ29tcG9uZW50IHRvIHZpc3VhbGl6ZSB0aGUgcXVlcnkgc3RyaW5nXG5jb25zdCBRdWVyeVZpc3VhbGl6ZXIgPSAoeyBmaWx0ZXIgfTogeyBmaWx0ZXI6IEZpbHRlckdyb3VwIH0pOiBSZWFjdE5vZGUgPT4ge1xuICBsZXQgaXNBbmRHcm91cE9wZW4gPSAwO1xuXG4gIGlmIChmaWx0ZXIuZmlsdGVycy5sZW5ndGggPT09IDApIHJldHVybiBcIiggKVwiO1xuXG4gIGNvbnN0IGdyb3VwID0gZmlsdGVyLmZpbHRlcnMubWFwKChmLCBpKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogUmVhY3ROb2RlO1xuICAgIGNvbnN0IGlzTGFzdCA9IGZpbHRlci5maWx0ZXJzLmxlbmd0aCAtIDEgPT09IGk7XG5cbiAgICBpZiAoaXNBbmRHcm91cE9wZW4gPT09IC0xKSB7XG4gICAgICBpc0FuZEdyb3VwT3BlbiA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGYuYWZ0ZXIgPT09IFwiYW5kXCIgJiYgIWlzTGFzdCkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gKz0gMTtcbiAgICB9XG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuICYmIChpc0xhc3QgfHwgZi5hZnRlciA9PT0gXCJvclwiKSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAtMTtcbiAgICB9XG5cbiAgICBpZiAoZi5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgICBjb25zdCB7IGNvbHVtbiwgb3BlcmF0b3IgfSA9IGY7XG5cbiAgICAgIHJlc3VsdCA9IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8c3Bhbj4ge2NvbHVtbn0gPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPiB7b3BlcmF0b3J9IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4gPyA8L3NwYW4+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gPFF1ZXJ5VmlzdWFsaXplciBmaWx0ZXI9e2Z9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8RnJhZ21lbnQga2V5PXtmLmlkfT5cbiAgICAgICAge2lzQW5kR3JvdXBPcGVuID09PSAxID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPig8L3NwYW4+IDogXCJcIn1cbiAgICAgICAge3Jlc3VsdH1cbiAgICAgICAge2lzQW5kR3JvdXBPcGVuID09PSAtMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4pPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHshaXNMYXN0ICYmIDxzcGFuIGNsYXNzTmFtZT1cInBzLXVwcGVyY2FzZSBwcy10ZXh0LWJsdWUtNTAwIHBzLWZvbnQtc2VtaWJvbGRcIj4ge2YuYWZ0ZXJ9IDwvc3Bhbj59XG4gICAgICA8L0ZyYWdtZW50PlxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiA8c3Bhbj57Z3JvdXB9PC9zcGFuPjtcbn07XG5cbi8vIE1haW4gY29tcG9uZW50XG5leHBvcnQgZnVuY3Rpb24gRmlsdGVyVHJlZSh7XG4gIGZpbHRlcixcbiAgc2V0RmlsdGVyLFxuICBzZXRBcHBsaWVkRmlsdGVyLFxuICB0YWJsZSxcbn06IHtcbiAgZmlsdGVyOiBGaWx0ZXJHcm91cDtcbiAgc2V0RmlsdGVyOiAodXBkYXRlZEZpbHRlcjogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIHNldEFwcGxpZWRGaWx0ZXI6IChmaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICB0YWJsZTogVGFibGU7XG59KSB7XG4gIGNvbnN0IGhhbmRsZUFwcGx5RmlsdGVycyA9ICgpID0+IHtcbiAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTRcIj5cbiAgICAgIDxGaWx0ZXJHcm91cENvbXBvbmVudCBncm91cD17ZmlsdGVyfSBvblVwZGF0ZT17c2V0RmlsdGVyfSBvbkRlbGV0ZT17KCkgPT4ge319IGlzUm9vdD17dHJ1ZX0gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZGVmYXVsdFwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInBzLXNlbGYtZW5kXCIgb25DbGljaz17aGFuZGxlQXBwbHlGaWx0ZXJzfT5cbiAgICAgICAgQXBwbHkgRmlsdGVyc1xuICAgICAgPC9CdXR0b24+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDb2x1bW4sIEZpbHRlck9wZXJhdG9yIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9WYWx1ZShjb2x1bW46IENvbHVtbiB8IHVuZGVmaW5lZCwgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLCB2YWx1ZTogc3RyaW5nKTogdW5rbm93biB7XG4gIGNvbnN0IGRhdGFUeXBlR3JvdXAgPSBjb2x1bW4/LmRhdGF0eXBlLmdyb3VwO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IFwibnVsbFwiID8gbnVsbCA6IHZhbHVlO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gdmFsdWUgPT09IFwidHJ1ZVwiO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJkYXRldGltZVwiKSByZXR1cm4gdmFsdWU7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJyYXdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiB2YWx1ZTtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJqc29uXCIpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpIGFzIHVua25vd247XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcih2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VUb1N0cmluZyhcbiAgY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsXG4gIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciB8IHVuZGVmaW5lZCxcbiAgdmFsdWU6IHVua25vd24sXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAob3BlcmF0b3IgJiYgKG9wZXJhdG9yID09PSBcImlzXCIgfHwgb3BlcmF0b3IgPT09IFwiaXMgbm90XCIpKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsID8gXCJudWxsXCIgOiBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJib29sZWFuXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJkYXRldGltZVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZW51bVwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwibnVtZXJpY1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgaWYgKHZhbHVlID09PSBcIlwiKSByZXR1cm4gXCJcIjtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuIiwgImltcG9ydCAqIGFzIERyb3Bkb3duTWVudVByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRyb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93bk1lbnUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgRHJvcGRvd25NZW51VHJpZ2dlciA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBEcm9wZG93bk1lbnVHcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51UG9ydGFsID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YjtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9Hcm91cCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXJcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1iZy1hY2NlbnQgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0b1wiIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXI+XG4pKTtcbkRyb3Bkb3duTWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtei01MCBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1sZyBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bdmFyKC0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpXSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZFwiLFxuICAgICAgICBcImRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ecm9wZG93bk1lbnVDb250ZW50LmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudUl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MCBbJj5zdmddOnBzLXNpemUtNCBbJj5zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51SXRlbS5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBjaGVja2VkLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2lyY2xlIGNsYXNzTmFtZT1cInBzLWgtMiBwcy13LTIgcHMtZmlsbC1jdXJyZW50XCIgLz5cbiAgICAgIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgPC9zcGFuPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9Ecm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Ecm9wZG93bk1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGluc2V0ICYmIFwicHMtcGwtOFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51TGFiZWwuZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWwuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51U2hvcnRjdXQgPSAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLW9wYWNpdHktNjBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn07XG5Ecm9wZG93bk1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51U2hvcnRjdXRcIjtcblxuZXhwb3J0IHtcbiAgRHJvcGRvd25NZW51LFxuICBEcm9wZG93bk1lbnVUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVDb250ZW50LFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgRHJvcGRvd25NZW51TGFiZWwsXG4gIERyb3Bkb3duTWVudVNlcGFyYXRvcixcbiAgRHJvcGRvd25NZW51U2hvcnRjdXQsXG4gIERyb3Bkb3duTWVudUdyb3VwLFxuICBEcm9wZG93bk1lbnVQb3J0YWwsXG4gIERyb3Bkb3duTWVudVN1YixcbiAgRHJvcGRvd25NZW51U3ViQ29udGVudCxcbiAgRHJvcGRvd25NZW51U3ViVHJpZ2dlcixcbiAgRHJvcGRvd25NZW51UmFkaW9Hcm91cCxcbn07XG4iLCAiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IElucHV0ID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MSW5wdXRFbGVtZW50LCBSZWFjdC5Db21wb25lbnRQcm9wczxcImlucHV0XCI+PihcbiAgKHsgY2xhc3NOYW1lLCB0eXBlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1mbGV4IHBzLWgtOSBwcy13LWZ1bGwgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMSBwcy1zaGFkb3ctc20gcHMtdHJhbnNpdGlvbi1jb2xvcnMgZmlsZTpwcy1ib3JkZXItMCBmaWxlOnBzLWJnLXRyYW5zcGFyZW50IGZpbGU6cHMtdGV4dC1zbSBmaWxlOnBzLWZvbnQtbWVkaXVtIGZpbGU6cHMtdGV4dC1mb3JlZ3JvdW5kIHBsYWNlaG9sZGVyOnBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1jdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MFwiLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfSxcbik7XG5JbnB1dC5kaXNwbGF5TmFtZSA9IFwiSW5wdXRcIjtcblxuZXhwb3J0IHsgSW5wdXQgfTtcbiIsICJpbXBvcnQgKiBhcyBTZWxlY3RQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zZWxlY3RcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uRG93biwgQ2hldnJvblVwIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWYsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBTZWxlY3QgPSBTZWxlY3RQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgU2VsZWN0R3JvdXAgPSBTZWxlY3RQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IFNlbGVjdFZhbHVlID0gU2VsZWN0UHJpbWl0aXZlLlZhbHVlO1xuXG5jb25zdCBTZWxlY3RUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPiAmIHsgbGFiZWw/OiBSZWFjdE5vZGUgfVxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBsYWJlbCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtaC05IHBzLXctZnVsbCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTIgcHMtdGV4dC1zbSBwcy1zaGFkb3ctc20gcHMtcmluZy1vZmZzZXQtYmFja2dyb3VuZCBkYXRhLVtwbGFjZWhvbGRlcl06cHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZvY3VzOnBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1yaW5nLTEgZm9jdXM6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIFsmPnNwYW5dOnBzLWxpbmUtY2xhbXAtMVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMVwiPlxuICAgICAge2xhYmVsICYmIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPntsYWJlbH06PC9zcGFuPn1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkljb24gYXNDaGlsZD5cbiAgICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00IHBzLW9wYWNpdHktNTBcIiAvPlxuICAgIDwvU2VsZWN0UHJpbWl0aXZlLkljb24+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+XG4pKTtcblNlbGVjdFRyaWdnZXIuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuVHJpZ2dlci5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsVXBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvblxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1weS0xXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZXZyb25VcCBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTY3JvbGxEb3duQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9TZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbikpO1xuU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCBwb3NpdGlvbiA9IFwicG9wcGVyXCIsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1yZWxhdGl2ZSBwcy16LTUwIHBzLW1heC1oLVstLXJhZGl4LXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHRdIHBzLW1pbi13LVs4cmVtXSBwcy1vdmVyZmxvdy15LWF1dG8gcHMtb3ZlcmZsb3cteC1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBwb3NpdGlvbiA9PT0gXCJwb3BwZXJcIiAmJlxuICAgICAgICAgIFwiZGF0YS1bc2lkZT1ib3R0b21dOnBzLXRyYW5zbGF0ZS15LTEgZGF0YS1bc2lkZT1sZWZ0XTpwcy0tdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXJpZ2h0XTpwcy10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9dG9wXTpwcy0tdHJhbnNsYXRlLXktMVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcG9zaXRpb249e3Bvc2l0aW9ufVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxTZWxlY3RTY3JvbGxVcEJ1dHRvbiAvPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydFxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtcC0xXCIsXG4gICAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICAgIFwicHMtaC1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0KV0gcHMtdy1mdWxsIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1zZWxlY3QtdHJpZ2dlci13aWR0aCldXCIsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0PlxuICAgICAgPFNlbGVjdFNjcm9sbERvd25CdXR0b24gLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5Db250ZW50PlxuICA8L1NlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblNlbGVjdENvbnRlbnQuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5MYWJlbD5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5MYWJlbFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLWZvbnQtc2VtaWJvbGRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcblNlbGVjdExhYmVsLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy13LWZ1bGwgcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHktMS41IHBzLXBsLTIgcHMtcHItOCBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZm9jdXM6cHMtdGV4dC1hY2NlbnQtZm9yZWdyb3VuZCBkYXRhLVtkaXNhYmxlZF06cHMtcG9pbnRlci1ldmVudHMtbm9uZSBkYXRhLVtkaXNhYmxlZF06cHMtb3BhY2l0eS01MFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICA8U2VsZWN0UHJpbWl0aXZlLkl0ZW1UZXh0PntjaGlsZHJlbn08L1NlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbT5cbikpO1xuU2VsZWN0SXRlbS5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5JdGVtLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBTZWxlY3RTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvciByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLS1teC0xIHBzLW15LTEgcHMtaC1weCBwcy1iZy1tdXRlZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcblNlbGVjdFNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7XG4gIFNlbGVjdCxcbiAgU2VsZWN0R3JvdXAsXG4gIFNlbGVjdFZhbHVlLFxuICBTZWxlY3RUcmlnZ2VyLFxuICBTZWxlY3RDb250ZW50LFxuICBTZWxlY3RMYWJlbCxcbiAgU2VsZWN0SXRlbSxcbiAgU2VsZWN0U2VwYXJhdG9yLFxuICBTZWxlY3RTY3JvbGxVcEJ1dHRvbixcbiAgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbixcbn07XG4iLCAiaW1wb3J0IHsgRG5kQ29udGV4dCwgdHlwZSBEcmFnRW5kRXZlbnQsIE1vdXNlU2Vuc29yLCB1c2VTZW5zb3IsIHVzZVNlbnNvcnMgfSBmcm9tIFwiQGRuZC1raXQvY29yZVwiO1xuaW1wb3J0IHsgYXJyYXlNb3ZlLCBob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSwgU29ydGFibGVDb250ZXh0LCB1c2VTb3J0YWJsZSB9IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2UsIFJvd1NlbGVjdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb2x1bW5QaW5uaW5nU3RhdGUsXG4gIHR5cGUgQ29sdW1uU2l6aW5nU3RhdGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgdHlwZSBIZWFkZXIsXG4gIHR5cGUgT25DaGFuZ2VGbixcbiAgdHlwZSBQYWdpbmF0aW9uU3RhdGUsXG4gIHR5cGUgU29ydGluZ1N0YXRlLFxuICB0eXBlIFRhYmxlIGFzIFJlYWN0VGFibGUsXG4gIHVzZVJlYWN0VGFibGUsXG59IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IFJlYWN0VGFibGVEZXZ0b29scyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHNcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50VHlwZSxcbiAgdHlwZSBDU1NQcm9wZXJ0aWVzLFxuICB0eXBlIFByb3BzV2l0aENoaWxkcmVuLFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc2tlbGV0b25cIjtcbmltcG9ydCB7IFRhYmxlLCBUYWJsZUJvZHksIFRhYmxlQ2VsbCwgVGFibGVIZWFkLCBUYWJsZUhlYWRlciwgVGFibGVSb3cgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IENlbGxQcm9wcyB9IGZyb20gXCIuLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IERhdGFHcmlkSGVhZGVyIH0gZnJvbSBcIi4vRGF0YUdyaWRIZWFkZXJcIjtcbmltcG9ydCB7IERhdGFHcmlkTG9hZGluZ0JhciB9IGZyb20gXCIuL0RhdGFHcmlkTG9hZGluZ0JhclwiO1xuaW1wb3J0IHsgRGF0YUdyaWRQYWdpbmF0aW9uIH0gZnJvbSBcIi4vRGF0YUdyaWRQYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcblxuLy8gQWRkIHRoaXMgbmV3IGNvbXBvbmVudCBmb3IgZHJhZ2dhYmxlIGhlYWRlciBjZWxsc1xudHlwZSBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBoZWFkZXI6IEhlYWRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIHN0eWxlOiBDU1NQcm9wZXJ0aWVzO1xuICB0YWJsZTogUmV0dXJuVHlwZTx0eXBlb2YgdXNlUmVhY3RUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+O1xufT47XG5cbmNvbnN0IERyYWdnYWJsZUhlYWRlckNlbGwgPSAocHJvcHM6IERyYWdnYWJsZUhlYWRlckNlbGxQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGhlYWRlciwgc3R5bGU6IGNvbW1vblN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgZGlzYWJsZURyYWdnaW5nID0gXCJkaXNhYmxlRHJhZ2dpbmdcIiBpbiBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZjtcblxuICBjb25zdCB7IGF0dHJpYnV0ZXMsIGxpc3RlbmVycywgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCBzZXROb2RlUmVmLCBpc0RyYWdnaW5nIH0gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgfSk7XG5cbiAgY29uc3QgZHJhZ1N0eWxlID0ge1xuICAgIC4uLmNvbW1vblN0eWxlLFxuICAgIGN1cnNvcjogXCJncmFiXCIsXG4gICAgdG91Y2hBY3Rpb246IFwibm9uZVwiLFxuICAgIHRyYW5zZm9ybTogQ1NTLlRyYW5zZm9ybS50b1N0cmluZyh0cmFuc2Zvcm0pLFxuICAgIHRyYW5zaXRpb24sXG4gIH0gYXMgQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBjb21tb25DbGFzcyA9IGNuKGNsYXNzTmFtZSwgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIpO1xuICBjb25zdCBkcmFnQ2xhc3MgPSBjbihjb21tb25DbGFzcywgaXNEcmFnZ2luZyAmJiBcIiFwcy16LTUwIHBzLWJvcmRlci0yIHBzLWJvcmRlci12aW9sZXQtNTAwXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlSGVhZFxuICAgICAgcmVmPXtzZXROb2RlUmVmfVxuICAgICAgey4uLmF0dHJpYnV0ZXN9XG4gICAgICB7Li4ubGlzdGVuZXJzfVxuICAgICAgc3R5bGU9e2Rpc2FibGVEcmFnZ2luZyA/IGNvbW1vblN0eWxlIDogZHJhZ1N0eWxlfVxuICAgICAgY2xhc3NOYW1lPXtkaXNhYmxlRHJhZ2dpbmcgPyBjb21tb25DbGFzcyA6IGRyYWdDbGFzc31cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L1RhYmxlSGVhZD5cbiAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQcm9wcyB7XG4gIGNvbHVtbkRlZnM6IEFjY2Vzc29yS2V5Q29sdW1uRGVmQmFzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5bXTtcbiAgZ2V0QmVmb3JlUm93cz8odGhpczogdm9pZCwgdGFibGU6IFJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogUmVhY3ROb2RlO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbjtcbiAgb25QYWdpbmF0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFBhZ2luYXRpb25TdGF0ZT47XG4gIG9uUm93U2VsZWN0aW9uQ2hhbmdlOiBPbkNoYW5nZUZuPFJvd1NlbGVjdGlvblN0YXRlPjtcbiAgb25Tb3J0aW5nQ2hhbmdlPzogT25DaGFuZ2VGbjxTb3J0T3JkZXJJdGVtW10+O1xuICBwYWdlQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnaW5hdGlvblN0YXRlOiBQYWdpbmF0aW9uU3RhdGU7XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHJvd1NlbGVjdGlvblN0YXRlOiBSb3dTZWxlY3Rpb25TdGF0ZTtcbiAgc29ydGluZ1N0YXRlPzogU29ydE9yZGVySXRlbVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWQocHJvcHM6IERhdGFHcmlkUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbHVtbkRlZnMsXG4gICAgZ2V0QmVmb3JlUm93cyxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNQcm9jZXNzaW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2UsXG4gICAgcGFnZUNvdW50LFxuICAgIHBhZ2luYXRpb25TdGF0ZSxcbiAgICByb3dzLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHNvcnRpbmdTdGF0ZSxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IFtjb2x1bW5PcmRlciwgc2V0Q29sdW1uT3JkZXJdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW2NvbHVtblBpbm5pbmcsIHNldENvbHVtblBpbm5pbmddID0gdXNlU3RhdGU8Q29sdW1uUGlubmluZ1N0YXRlPih7IGxlZnQ6IFtcIl9fcHNfc2VsZWN0XCJdLCByaWdodDogW10gfSk7XG4gIGNvbnN0IFtjb2x1bW5TaXppbmcsIHNldENvbHVtblNpemluZ10gPSB1c2VTdGF0ZTxDb2x1bW5TaXppbmdTdGF0ZT4oe30pO1xuICBjb25zdCBzb3J0aW5nID0gdXNlTWVtbygoKSA9PiB0b1NvcnRpbmdTdGF0ZShzb3J0aW5nU3RhdGUpLCBbc29ydGluZ1N0YXRlXSk7XG4gIGNvbnN0IGRpc3BsYXlMb2FkZXIgPSBpc0xvYWRpbmcgfHwgaXNQcm9jZXNzaW5nO1xuXG4gIC8vIFJlc2V0IGNvbHVtbiBvcmRlciwgcGlubmluZywgYW5kIHNpemluZyB3aGVuIGNvbHVtbkRlZnMgY2hhbmdlICh3aGljaCBoYXBwZW5zIHdoZW4gdGFibGUgY2hhbmdlcylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRDb2x1bW5PcmRlcihjb2x1bW5EZWZzLm1hcCgoeyBhY2Nlc3NvcktleSB9KSA9PiBhY2Nlc3NvcktleSkpO1xuICAgIHNldENvbHVtblBpbm5pbmcoeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICAgIHNldENvbHVtblNpemluZyh7fSk7XG4gIH0sIFtjb2x1bW5EZWZzXSk7XG5cbiAgLy8gaGFuZGxlcyBtb3ZpbmcgYW5kIHJlLW9yZGVyaW5nIG9mIHRoZSBjb2x1bW5zIGFuZCBzdGF0ZVxuICBmdW5jdGlvbiBoYW5kbGVEcmFnRW5kKHsgYWN0aXZlLCBvdmVyIH06IERyYWdFbmRFdmVudCkge1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgc2V0Q29sdW1uT3JkZXIoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gb3JkZXIuaW5kZXhPZihhY3RpdmUuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3Qgb3ZlckluZGV4ID0gb3JkZXIuaW5kZXhPZihvdmVyLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiBhcnJheU1vdmUob3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29uZmlndXJlIHRoZSBtb3VzZSBzZW5zb3IgZm9yIGRyYWcgYW5kIGRyb3BcbiAgY29uc3QgbW91c2VTZW5zb3IgPSB1c2VTZW5zb3IoTW91c2VTZW5zb3IsIHtcbiAgICAvLyBSZXF1aXJlIHRoZSBtb3VzZSB0byBtb3ZlIGJ5IDEwIHBpeGVscyBiZWZvcmUgYWN0aXZhdGluZ1xuICAgIGFjdGl2YXRpb25Db25zdHJhaW50OiB7XG4gICAgICBkaXN0YW5jZTogMTAsXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHNlbnNvcnMgPSB1c2VTZW5zb3JzKG1vdXNlU2Vuc29yKTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIGNvbHVtblJlc2l6ZU1vZGU6IFwib25DaGFuZ2VcIixcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGRhdGE6IHJvd3MsXG4gICAgZGVmYXVsdENvbHVtbjogeyBzaXplOiAyMDAsIG1pblNpemU6IDUwLCBtYXhTaXplOiA1MDAgfSxcbiAgICBlbmFibGVDb2x1bW5QaW5uaW5nOiB0cnVlLFxuICAgIGVuYWJsZUNvbHVtblJlc2l6aW5nOiB0cnVlLFxuICAgIGVuYWJsZVJvd1NlbGVjdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVTb3J0aW5nOiBCb29sZWFuKG9uU29ydGluZ0NoYW5nZSAmJiBzb3J0aW5nU3RhdGUpLFxuICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgZ2V0Um93SWQ6ICh7IF9fcHNfcm93aWQgfSkgPT4gX19wc19yb3dpZCBhcyBzdHJpbmcsXG4gICAgbWFudWFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICBtYW51YWxTb3J0aW5nOiB0cnVlLFxuICAgIG9uQ29sdW1uT3JkZXJDaGFuZ2U6IHNldENvbHVtbk9yZGVyLFxuICAgIG9uQ29sdW1uUGlubmluZ0NoYW5nZTogc2V0Q29sdW1uUGlubmluZyxcbiAgICBvbkNvbHVtblNpemluZ0NoYW5nZTogc2V0Q29sdW1uU2l6aW5nLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZSxcbiAgICBvblJvd1NlbGVjdGlvbkNoYW5nZSxcbiAgICBvblNvcnRpbmdDaGFuZ2U6ICh1cGRhdGVyT3JWYWx1ZSkgPT5cbiAgICAgIG9uU29ydGluZ0NoYW5nZT8uKChvbGQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdXBkYXRlck9yVmFsdWUgPSB1cGRhdGVyT3JWYWx1ZSh0b1NvcnRpbmdTdGF0ZShvbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b1NvcnRPcmRlckl0ZW1zKHVwZGF0ZXJPclZhbHVlKTtcbiAgICAgIH0pLFxuICAgIHBhZ2VDb3VudCxcbiAgICBzdGF0ZToge1xuICAgICAgY29sdW1uT3JkZXIsXG4gICAgICBjb2x1bW5QaW5uaW5nLFxuICAgICAgY29sdW1uU2l6aW5nLFxuICAgICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvblN0YXRlLFxuICAgICAgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICAgIHNvcnRpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRPRE86IHBhdGNoIHNvIGl0IGlzIG5vdCBidW5kbGVkIGxpa2UgcmVhY3QtcXVlcnkgZGV2dG9vbHMsIG9yIHJlbW92ZSBjb21wbGV0ZWx5IG9uY2UgZGF0YSBncmlkIGlzIHN0YWJsZSBhbmQgdGVzdGVkLiAqL31cbiAgICAgIHtwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBudWxsIDogPFJlYWN0VGFibGVEZXZ0b29scyB0YWJsZT17dGFibGV9IC8+fVxuICAgICAgPGRpdiBkYXRhLXN0dWRpbz1cImNvbnRlbnRcIiBjbGFzc05hbWU9XCJwcy1mbGV4LTEgcHMtdy0wIHBzLWgtMCBwcy1taW4tdy1mdWxsIHBzLWZsZXggcHMtZmxleC1jb2wgcHMtcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdj57ZGlzcGxheUxvYWRlciAmJiA8RGF0YUdyaWRMb2FkaW5nQmFyIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIC1wcy10b3AtWzFweF0gcHMtbGVmdC0wIHBzLXJpZ2h0LTBcIiAvPn08L2Rpdj5cbiAgICAgICAgPERuZENvbnRleHQgc2Vuc29ycz17c2Vuc29yc30gb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfT5cbiAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPVwicHMtdGFibGUtZml4ZWQgcHMtYm9yZGVyLXNlcGFyYXRlIHBzLWJvcmRlci1zcGFjaW5nLTAgcHMtYm94LWJvcmRlciBwcy13LWF1dG9cIj5cbiAgICAgICAgICAgIDxUYWJsZUhlYWRlcj5cbiAgICAgICAgICAgICAge3RhYmxlLmdldEhlYWRlckdyb3VwcygpLm1hcCgoaGVhZGVyR3JvdXApID0+IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3cga2V5PXtoZWFkZXJHcm91cC5pZH0+XG4gICAgICAgICAgICAgICAgICA8U29ydGFibGVDb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zPXtoZWFkZXJHcm91cC5oZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaGVhZGVyKSA9PiAhKFwiZGlzYWJsZURyYWdnaW5nXCIgaW4gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYpKVxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGhlYWRlcikgPT4gaGVhZGVyLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k9e2hvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoKGhlYWRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3Igc2VsZWN0IGNvbHVtblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgaGVhZGVyIGZ1bmN0aW9uIGRpcmVjdGx5LCB3aGljaCBzaG91bGQgYmUgU2VsZWN0SGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyRm4gPSBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGhlYWRlckZuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGVhZGVyQ29tcG9uZW50ID0gaGVhZGVyRm4oaGVhZGVyLmdldENvbnRleHQoKSkgYXMgdW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgSGVhZGVyQ29tcG9uZW50IGlzIGEgZnVuY3Rpb24gKG5ldyBhcHByb2FjaCB3aXRoIHByb3BzIGZvcndhcmRpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgSGVhZGVyQ29tcG9uZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaW5uaW5nU3R5bGVzID0gZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uaW5nU3R5bGVzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3Bpbm5pbmdTdHlsZXMuc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtIZWFkZXJDb21wb25lbnQoe30pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBIZWFkZXJDb21wb25lbnQgaXMgYSBkaXJlY3QgSlNYIGVsZW1lbnQgKG9sZCBhcHByb2FjaClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVIZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIikuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBzLXNlbGVjdC1ub25lIHBzLXRvdWNoLW5vbmUgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXRhYmxlLWhlYWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17Z2V0Q29sdW1uUGlubmluZ1N0eWxlcyhoZWFkZXIuY29sdW1uLCBcImhlYWRlclwiKS5zdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7SGVhZGVyQ29tcG9uZW50IGFzIEpTWC5FbGVtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gUmVndWxhciBjb2x1bW5zIHVzZSB0aGUgZHJhZ2dhYmxlIGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJhZ2dhYmxlSGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2hlYWRlci5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyPXtoZWFkZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEhlYWRlciBoZWFkZXI9e2hlYWRlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJhZ2dhYmxlSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9UYWJsZUhlYWRlcj5cbiAgICAgICAgICAgIDxUYWJsZUJvZHk+XG4gICAgICAgICAgICAgIHtnZXRCZWZvcmVSb3dzPy4odGFibGUpfVxuICAgICAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgdGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGFibGVSb3dcbiAgICAgICAgICAgICAgICAgICAga2V5PXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgXCJwcy1iZy10YWJsZS1yb3cgcHMtb2RkOmJnLXRhYmxlLXJvdy1vZGQgcHMtZ3JvdXAgWyY6bGFzdC1vZi10eXBlX3RkXTpwcy1ib3JkZXItYi0wIHBzLWdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlIENlbGwgPSBDb21wb25lbnRUeXBlPE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPj47XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImdyb3VwLW9kZDpwcy1iZy1uZXV0cmFsLTUwIGdyb3VwLWV2ZW46cHMtYmctd2hpdGUgZ3JvdXAtaG92ZXI6cHMtYmctbmV1dHJhbC0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbCBrZXk9e2NlbGwuaWR9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZWxsLmdldFZhbHVlKCkgYXMgUmVhY3ROb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW49e2NvbHVtbkRlZnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTI0IHBzLXRleHQtbGVmdCBwcy1wLVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00LzVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTIvM1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9UYWJsZUJvZHk+XG4gICAgICAgICAgPC9UYWJsZT5cbiAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICB7IXBhZ2VDb3VudCB8fCBwYWdlQ291bnQgPCAyID8gbnVsbCA6IDxEYXRhR3JpZFBhZ2luYXRpb24gdGFibGU9e3RhYmxlfSB2YXJpYW50PVwibnVtZXJpY1wiIC8+fVxuXG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzPy5sZW5ndGggPT09IDAgJiYgIWlzTG9hZGluZyAmJiAhaXNQcm9jZXNzaW5nICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWFic29sdXRlIC1wcy1pbnNldC0wIHBzLXBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+Tm8gcmVzdWx0cyBmb3VuZDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgIEl0IGRvZXNuJmFwb3M7dCBsb29rIGxpa2UgeW91IGhhdmUgYW55IGRhdGEgaW4gdGhpcyB0YWJsZS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0aW5nU3RhdGUoZnJvbTogU29ydE9yZGVySXRlbVtdIHwgdW5kZWZpbmVkKTogU29ydGluZ1N0YXRlIHtcbiAgcmV0dXJuIGZyb20/Lm1hcCgoaXRlbSkgPT4gKHsgaWQ6IGl0ZW0uY29sdW1uLCBkZXNjOiBpdGVtLmRpcmVjdGlvbiA9PT0gXCJkZXNjXCIgfSkpIHx8IFtdO1xufVxuXG5mdW5jdGlvbiB0b1NvcnRPcmRlckl0ZW1zKGZyb206IFNvcnRpbmdTdGF0ZSk6IFNvcnRPcmRlckl0ZW1bXSB7XG4gIHJldHVybiBmcm9tLm1hcCgoaXRlbSkgPT4gKHtcbiAgICBjb2x1bW46IGl0ZW0uaWQsXG4gICAgZGlyZWN0aW9uOiBpdGVtLmRlc2MgPyBcImRlc2NcIiA6IFwiYXNjXCIsXG4gIH0pKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGdldEl0ZW0gPSAoa2V5OiBzdHJpbmcpOiB1bmtub3duID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gICAgaWYgKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShpdGVtVmFsdWUpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUxvY2FsU3RvcmFnZTxUPihcbiAga2V5OiBzdHJpbmcsXG4gIGRlZmF1bHRWYWx1ZTogVCB8IHVuZGVmaW5lZFxuKTogW1QgfCB1bmRlZmluZWQsIChuZXdWYWw6IFQgfCAoKHByZXZWYWw6IFQpID0+IFQpKSA9PiB2b2lkXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGU8VD4oKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0SXRlbShrZXkpIGFzIFQgfCB1bmRlZmluZWRcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBpbml0aWFsVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHNldFZhbHVlKFxuICAgICAgICB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWVcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWUoaW5pdGlhbFZhbHVlKVxuICAgIH1cbiAgfSwgW2RlZmF1bHRWYWx1ZSwga2V5XSlcblxuICBjb25zdCBzZXR0ZXIgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAodXBkYXRlcjogYW55KSA9PiB7XG4gICAgICBzZXRWYWx1ZShvbGQgPT4ge1xuICAgICAgICBsZXQgbmV3VmFsID0gdXBkYXRlclxuXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlciA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgbmV3VmFsID0gdXBkYXRlcihvbGQpXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkpXG4gICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICByZXR1cm4gbmV3VmFsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2tleV1cbiAgKVxuXG4gIHJldHVybiBbdmFsdWUsIHNldHRlcl1cbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VGhlbWUgPSB7XG4gIGJhY2tncm91bmQ6ICcjMGIxNTIxJyxcbiAgYmFja2dyb3VuZEFsdDogJyMxMzIzMzcnLFxuICBmb3JlZ3JvdW5kOiAnd2hpdGUnLFxuICBncmF5OiAnIzNmNGU2MCcsXG4gIGdyYXlBbHQ6ICcjMjIyZTNlJyxcbiAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgaW5wdXRUZXh0Q29sb3I6ICcjMDAwJyxcbiAgc3VjY2VzczogJyMwMGFiNTInLFxuICBkYW5nZXI6ICcjZmYwMDg1JyxcbiAgYWN0aXZlOiAnIzAwNmJmZicsXG4gIHdhcm5pbmc6ICcjZmZiMjAwJyxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgVGhlbWUgPSB0eXBlb2YgZGVmYXVsdFRoZW1lXG5pbnRlcmZhY2UgUHJvdmlkZXJQcm9wcyB7XG4gIHRoZW1lOiBUaGVtZVxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxufVxuXG5jb25zdCBUaGVtZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KGRlZmF1bHRUaGVtZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoeyB0aGVtZSwgLi4ucmVzdCB9OiBQcm92aWRlclByb3BzKSB7XG4gIHJldHVybiA8VGhlbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGVtZX0gey4uLnJlc3R9IC8+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxufVxuIiwgImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIC8vIEtlZXAgdHJhY2sgb2YgdGhlIHByZWZlcmVuY2UgaW4gc3RhdGUsIHN0YXJ0IHdpdGggdGhlIGN1cnJlbnQgbWF0Y2hcbiAgY29uc3QgW2lzTWF0Y2gsIHNldElzTWF0Y2hdID0gUmVhY3QudXNlU3RhdGUoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzXG4gICAgfVxuICB9KVxuXG4gIC8vIFdhdGNoIGZvciBjaGFuZ2VzXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoIXdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBtYXRjaGVyXG4gICAgICBjb25zdCBtYXRjaGVyID0gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpXG5cbiAgICAgIC8vIENyZWF0ZSBvdXIgaGFuZGxlclxuICAgICAgY29uc3Qgb25DaGFuZ2UgPSAoeyBtYXRjaGVzIH06IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PlxuICAgICAgICBzZXRJc01hdGNoKG1hdGNoZXMpXG5cbiAgICAgIC8vIExpc3RlbiBmb3IgY2hhbmdlc1xuICAgICAgbWF0Y2hlci5hZGRMaXN0ZW5lcihvbkNoYW5nZSlcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgLy8gU3RvcCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXNcbiAgICAgICAgbWF0Y2hlci5yZW1vdmVMaXN0ZW5lcihvbkNoYW5nZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc01hdGNoLCBxdWVyeSwgc2V0SXNNYXRjaF0pXG5cbiAgcmV0dXJuIGlzTWF0Y2hcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFRoZW1lLCB1c2VUaGVtZSB9IGZyb20gJy4vdGhlbWUnXG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknXG5cbmNvbnN0IGlzU2VydmVyID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcblxudHlwZSBTdHlsZWRDb21wb25lbnQ8VD4gPSBUIGV4dGVuZHMgJ2J1dHRvbidcbiAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICAgIEhUTUxCdXR0b25FbGVtZW50XG4gICAgPlxuICA6IFQgZXh0ZW5kcyAnaW5wdXQnXG4gICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgSFRNTElucHV0RWxlbWVudFxuICAgICAgPlxuICAgIDogVCBleHRlbmRzICdzZWxlY3QnXG4gICAgICA/IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgICAgICAgIFJlYWN0LlNlbGVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxTZWxlY3RFbGVtZW50PixcbiAgICAgICAgICBIVE1MU2VsZWN0RWxlbWVudFxuICAgICAgICA+XG4gICAgICA6IFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXBcbiAgICAgICAgPyBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF0+XG4gICAgICAgIDogbmV2ZXJcblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0NvbG9yKG1hdGNoOiBSb3V0ZU1hdGNoLCB0aGVtZTogVGhlbWUpIHtcbi8vICAgcmV0dXJuIG1hdGNoLmlzTG9hZGluZ1xuLy8gICAgID8gdGhlbWUuYWN0aXZlXG4vLyAgICAgOiBtYXRjaC5zdGF0dXMgPT09ICdyZWplY3RlZCdcbi8vICAgICA/IHRoZW1lLmRhbmdlclxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncGVuZGluZydcbi8vICAgICA/IHRoZW1lLndhcm5pbmdcbi8vICAgICA6IHRoZW1lLnN1Y2Nlc3Ncbi8vIH1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5U3RhdHVzTGFiZWwocXVlcnk6IFF1ZXJ5KSB7XG4vLyAgIHJldHVybiBxdWVyeS5zdGF0ZS5pc0ZldGNoaW5nXG4vLyAgICAgPyAnZmV0Y2hpbmcnXG4vLyAgICAgOiAhcXVlcnkuZ2V0T2JzZXJ2ZXJzQ291bnQoKVxuLy8gICAgID8gJ2luYWN0aXZlJ1xuLy8gICAgIDogcXVlcnkuaXNTdGFsZSgpXG4vLyAgICAgPyAnc3RhbGUnXG4vLyAgICAgOiAnZnJlc2gnXG4vLyB9XG5cbnR5cGUgU3R5bGVzID1cbiAgfCBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIHwgKChwcm9wczogUmVjb3JkPHN0cmluZywgYW55PiwgdGhlbWU6IFRoZW1lKSA9PiBSZWFjdC5DU1NQcm9wZXJ0aWVzKVxuXG5leHBvcnQgZnVuY3Rpb24gc3R5bGVkPFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0eXBlOiBULFxuICBuZXdTdHlsZXM6IFN0eWxlcyxcbiAgcXVlcmllczogUmVjb3JkPHN0cmluZywgU3R5bGVzPiA9IHt9XG4pIHtcbiAgcmV0dXJuIFJlYWN0LmZvcndhcmRSZWY8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdLCBTdHlsZWRDb21wb25lbnQ8VD4+KFxuICAgICh7IHN0eWxlLCAuLi5yZXN0IH0sIHJlZikgPT4ge1xuICAgICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG5cbiAgICAgIGNvbnN0IG1lZGlhU3R5bGVzID0gT2JqZWN0LmVudHJpZXMocXVlcmllcykucmVkdWNlKFxuICAgICAgICAoY3VycmVudCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgICAgICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkoa2V5KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgICAgICAgICAuLi4odHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocmVzdCwgdGhlbWUpIDogdmFsdWUpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGN1cnJlbnRcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcblxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQodHlwZSwge1xuICAgICAgICAuLi5yZXN0LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIC4uLih0eXBlb2YgbmV3U3R5bGVzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IG5ld1N0eWxlcyhyZXN0LCB0aGVtZSlcbiAgICAgICAgICAgIDogbmV3U3R5bGVzKSxcbiAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAuLi5tZWRpYVN0eWxlcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVmLFxuICAgICAgfSlcbiAgICB9XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzTW91bnRlZCgpIHtcbiAgY29uc3QgbW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNb3VudGVkID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gbW91bnRlZFJlZi5jdXJyZW50LCBbXSlcblxuICBSZWFjdFtpc1NlcnZlciA/ICd1c2VFZmZlY3QnIDogJ3VzZUxheW91dEVmZmVjdCddKCgpID0+IHtcbiAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gaXNNb3VudGVkXG59XG5cbi8qKlxuICogVGhpcyBob29rIGlzIGEgc2FmZSB1c2VTdGF0ZSB2ZXJzaW9uIHdoaWNoIHNjaGVkdWxlcyBzdGF0ZSB1cGRhdGVzIGluIG1pY3JvdGFza3NcbiAqIHRvIHByZXZlbnQgdXBkYXRpbmcgYSBjb21wb25lbnQgc3RhdGUgd2hpbGUgUmVhY3QgaXMgcmVuZGVyaW5nIGRpZmZlcmVudCBjb21wb25lbnRzXG4gKiBvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IG1vdW50ZWQgYW55bW9yZS5cbiAqL1xuZnVuY3Rpb24gdXNlU2FmZVN0YXRlPFQ+KGluaXRpYWxTdGF0ZTogVCk6IFtULCAodmFsdWU6IFQpID0+IHZvaWRdIHtcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsU3RhdGUpXG5cbiAgY29uc3Qgc2FmZVNldFN0YXRlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBUKSA9PiB7XG4gICAgICBzY2hlZHVsZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIGlmIChpc01vdW50ZWQoKSkge1xuICAgICAgICAgIHNldFN0YXRlKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgW2lzTW91bnRlZF1cbiAgKVxuXG4gIHJldHVybiBbc3RhdGUsIHNhZmVTZXRTdGF0ZV1cbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBtaWNyb3Rhc2suXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2NoZWR1bGUgc3RhdGUgdXBkYXRlcyBhZnRlciByZW5kZXJpbmcuXG4gKi9cbmZ1bmN0aW9uIHNjaGVkdWxlTWljcm90YXNrKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGVycm9yID0+XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH0pXG4gICAgKVxufVxuIiwgImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBjb25zdCBQYW5lbCA9IHN0eWxlZChcbiAgJ2RpdicsXG4gIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICAgIGZvbnRTaXplOiAnY2xhbXAoMTJweCwgMS41dncsIDE0cHgpJyxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuYmFja2dyb3VuZCxcbiAgICBjb2xvcjogdGhlbWUuZm9yZWdyb3VuZCxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzoge1xuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgfSxcbiAgICAnKG1heC13aWR0aDogNjAwcHgpJzoge1xuICAgICAgZm9udFNpemU6ICcuOWVtJyxcbiAgICAgIC8vIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gIH1cbilcblxuY29uc3QgQWN0aXZlUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoKSA9PiAoe1xuICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA3MDBweCknOiAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICAgIGJvcmRlclRvcDogYDJweCBzb2xpZCAke3RoZW1lLmdyYXl9YCxcbiAgICB9KSxcbiAgfVxuKVxuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gc3R5bGVkKCdidXR0b24nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgYmFja2dyb3VuZDogdGhlbWUuZ3JheSxcbiAgYm9yZGVyOiAnMCcsXG4gIGJvcmRlclJhZGl1czogJy4zZW0nLFxuICBjb2xvcjogJ3doaXRlJyxcbiAgcGFkZGluZzogJy41ZW0nLFxuICBvcGFjaXR5OiBwcm9wcy5kaXNhYmxlZCA/ICcuNScgOiB1bmRlZmluZWQsXG4gIGN1cnNvcjogJ3BvaW50ZXInLFxufSkpXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleXMgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuLy8gICBmb250U2l6ZTogJzAuOWVtJyxcbi8vIH0pXG5cbi8vIGV4cG9ydCBjb25zdCBRdWVyeUtleSA9IHN0eWxlZCgnc3BhbicsIHtcbi8vICAgZGlzcGxheTogJ2lubGluZS1mbGV4Jyxcbi8vICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4vLyAgIHBhZGRpbmc6ICcuMmVtIC40ZW0nLFxuLy8gICBmb250V2VpZ2h0OiAnYm9sZCcsXG4vLyAgIHRleHRTaGFkb3c6ICcwIDAgMTBweCBibGFjaycsXG4vLyAgIGJvcmRlclJhZGl1czogJy4yZW0nLFxuLy8gfSlcblxuY29uc3QgQ29kZSA9IHN0eWxlZCgnY29kZScsIHtcbiAgZm9udFNpemU6ICcuOWVtJyxcbn0pXG5cbmNvbnN0IElucHV0ID0gc3R5bGVkKCdpbnB1dCcsIChfcHJvcHMsIHRoZW1lKSA9PiAoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICBib3JkZXI6IDAsXG4gIGJvcmRlclJhZGl1czogJy4yZW0nLFxuICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIGZvbnRTaXplOiAnLjllbScsXG4gIGxpbmVIZWlnaHQ6IGAxLjNgLFxuICBwYWRkaW5nOiAnLjNlbSAuNGVtJyxcbn0pKVxuXG5jb25zdCBTZWxlY3QgPSBzdHlsZWQoXG4gICdzZWxlY3QnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBkaXNwbGF5OiBgaW5saW5lLWJsb2NrYCxcbiAgICBmb250U2l6ZTogYC45ZW1gLFxuICAgIGZvbnRGYW1pbHk6IGBzYW5zLXNlcmlmYCxcbiAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgICBwYWRkaW5nOiBgLjNlbSAxLjVlbSAuM2VtIC41ZW1gLFxuICAgIGhlaWdodDogJ2F1dG8nLFxuICAgIGJvcmRlcjogMCxcbiAgICBib3JkZXJSYWRpdXM6IGAuMmVtYCxcbiAgICBhcHBlYXJhbmNlOiBgbm9uZWAsXG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuaW5wdXRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyBmaWxsPSclMjM0NDQ0NDQnPjxwb2x5Z29uIHBvaW50cz0nMCwyNSAxMDAsMjUgNTAsNzUnLz48L3N2Zz5cIilgLFxuICAgIGJhY2tncm91bmRSZXBlYXQ6IGBuby1yZXBlYXRgLFxuICAgIGJhY2tncm91bmRQb3NpdGlvbjogYHJpZ2h0IC41NWVtIGNlbnRlcmAsXG4gICAgYmFja2dyb3VuZFNpemU6IGAuNjVlbSBhdXRvLCAxMDAlYCxcbiAgICBjb2xvcjogdGhlbWUuaW5wdXRUZXh0Q29sb3IsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDUwMHB4KSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9XG4pXG4iLCAiLy8gQHRzLW5vY2hlY2tcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBFbnRyeSA9IHN0eWxlZCgnZGl2Jywge1xuICBmb250RmFtaWx5OiAnTWVubG8sIG1vbm9zcGFjZScsXG4gIGZvbnRTaXplOiAnMC43cmVtJyxcbiAgbGluZUhlaWdodDogJzEuNycsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59KVxuXG5jb25zdCBMYWJlbCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIGNvbG9yOiAnd2hpdGUnLFxufSlcblxuY29uc3QgVmFsdWUgPSBzdHlsZWQoJ3NwYW4nLCAocHJvcHMsIHRoZW1lKSA9PiAoe1xuICBjb2xvcjogdGhlbWUuZGFuZ2VyLFxufSkpXG5cbmNvbnN0IFN1YkVudHJpZXMgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbWFyZ2luTGVmdDogJy4xcmVtJyxcbiAgcGFkZGluZ0xlZnQ6ICcxcmVtJyxcbiAgYm9yZGVyTGVmdDogJzJweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSknLFxufSlcblxuY29uc3QgSW5mbyA9IHN0eWxlZCgnc3BhbicsIHtcbiAgY29sb3I6ICdncmV5JyxcbiAgZm9udFNpemU6ICcuN3JlbScsXG59KVxuXG5jb25zdCBFeHBhbmRlciA9ICh7IGV4cGFuZGVkLCBzdHlsZSA9IHt9LCAuLi5yZXN0IH0pID0+IChcbiAgPHNwYW5cbiAgICBzdHlsZT17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICB0cmFuc2l0aW9uOiAnYWxsIC4xcyBlYXNlJyxcbiAgICAgIHRyYW5zZm9ybTogYHJvdGF0ZSgke2V4cGFuZGVkID8gOTAgOiAwfWRlZykgJHtzdHlsZS50cmFuc2Zvcm0gfHwgJyd9YCxcbiAgICAgIC4uLnN0eWxlLFxuICAgIH19XG4gID5cbiAgICDilrZcbiAgPC9zcGFuPlxuKVxuXG5jb25zdCBEZWZhdWx0UmVuZGVyZXIgPSAoe1xuICBoYW5kbGVFbnRyeSxcbiAgbGFiZWwsXG4gIHZhbHVlLFxuICAvLyBwYXRoLFxuICBzdWJFbnRyaWVzLFxuICBzdWJFbnRyeVBhZ2VzLFxuICB0eXBlLFxuICAvLyBkZXB0aCxcbiAgZXhwYW5kZWQsXG4gIHRvZ2dsZSxcbiAgcGFnZVNpemUsXG4gIHJlbmRlcmVyLFxufSkgPT4ge1xuICBjb25zdCBbdmFsdWVTbmFwc2hvdCwgc2V0VmFsdWVTbmFwc2hvdF0gPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpXG4gIGNvbnN0IFtleHBhbmRlZFBhZ2VzLCBzZXRFeHBhbmRlZFBhZ2VzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxuXG4gIGNvbnN0IHJlZnJlc2hWYWx1ZVNuYXBzaG90ID0gKCkgPT4ge1xuICAgIHNldFZhbHVlU25hcHNob3QodmFsdWUoKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEVudHJ5IGtleT17bGFiZWx9PlxuICAgICAge3N1YkVudHJ5UGFnZXM/Lmxlbmd0aCA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWwgb25DbGljaz17KCkgPT4gdG9nZ2xlKCl9PlxuICAgICAgICAgICAgPEV4cGFuZGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gLz4ge2xhYmVsfXsnICd9XG4gICAgICAgICAgICA8SW5mbz5cbiAgICAgICAgICAgICAge1N0cmluZyh0eXBlKS50b0xvd2VyQ2FzZSgpID09PSAnaXRlcmFibGUnID8gJyhJdGVyYWJsZSkgJyA6ICcnfVxuICAgICAgICAgICAgICB7c3ViRW50cmllcy5sZW5ndGh9IHtzdWJFbnRyaWVzLmxlbmd0aCA+IDEgPyBgaXRlbXNgIDogYGl0ZW1gfVxuICAgICAgICAgICAgPC9JbmZvPlxuICAgICAgICAgIDwvTGFiZWw+XG4gICAgICAgICAge2V4cGFuZGVkID8gKFxuICAgICAgICAgICAgc3ViRW50cnlQYWdlcy5sZW5ndGggPT09IDEgPyAoXG4gICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgIHtzdWJFbnRyaWVzLm1hcChlbnRyeSA9PiBoYW5kbGVFbnRyeShlbnRyeSkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cnlQYWdlcy5tYXAoKGVudHJpZXMsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICA8RW50cnk+XG4gICAgICAgICAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeHBhbmRlZFBhZ2VzKG9sZCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5pbmNsdWRlcyhpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb2xkLmZpbHRlcihkID0+IGQgIT09IGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbLi4ub2xkLCBpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IFt7aW5kZXggKiBwYWdlU2l6ZX0gLi4ueycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCAqIHBhZ2VTaXplICsgcGFnZVNpemUgLSAxfV1cbiAgICAgICAgICAgICAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZFBhZ2VzLmluY2x1ZGVzKGluZGV4KSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdWJFbnRyaWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9FbnRyeT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IHR5cGUgPT09ICdmdW5jdGlvbicgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICByZW5kZXJlcj17cmVuZGVyZXJ9XG4gICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17cmVmcmVzaFZhbHVlU25hcHNob3R9PlxuICAgICAgICAgICAgICAgIDxMYWJlbD57bGFiZWx9PC9MYWJlbD4g8J+UhHsnICd9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlU25hcHNob3R9XG4gICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e3t9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TGFiZWw+e2xhYmVsfTo8L0xhYmVsPnsnICd9XG4gICAgICAgICAgPFZhbHVlPlxuICAgICAgICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QodmFsdWUpKSl9XG4gICAgICAgICAgPC9WYWx1ZT5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvRW50cnk+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhwbG9yZXIoe1xuICB2YWx1ZSxcbiAgZGVmYXVsdEV4cGFuZGVkLFxuICByZW5kZXJlciA9IERlZmF1bHRSZW5kZXJlcixcbiAgcGFnZVNpemUgPSAxMDAsXG4gIGRlcHRoID0gMCxcbiAgLi4ucmVzdFxufSkge1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRFeHBhbmRlZClcblxuICBjb25zdCB0b2dnbGUgPSBzZXQgPT4ge1xuICAgIHNldEV4cGFuZGVkKG9sZCA9PiAodHlwZW9mIHNldCAhPT0gJ3VuZGVmaW5lZCcgPyBzZXQgOiAhb2xkKSlcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBbXVxuXG4gIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG4gIGxldCBzdWJFbnRyaWVzXG4gIGNvbnN0IHN1YkVudHJ5UGFnZXMgPSBbXVxuXG4gIGNvbnN0IG1ha2VQcm9wZXJ0eSA9IHN1YiA9PiB7XG4gICAgY29uc3QgbmV3UGF0aCA9IHBhdGguY29uY2F0KHN1Yi5sYWJlbClcbiAgICBjb25zdCBzdWJEZWZhdWx0RXhwYW5kZWQgPVxuICAgICAgZGVmYXVsdEV4cGFuZGVkID09PSB0cnVlXG4gICAgICAgID8geyBbc3ViLmxhYmVsXTogdHJ1ZSB9XG4gICAgICAgIDogZGVmYXVsdEV4cGFuZGVkPy5bc3ViLmxhYmVsXVxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdWIsXG4gICAgICBzdWJQYXRoOiBzdWIsXG4gICAgICBwYXRoOiBuZXdQYXRoLFxuICAgICAgZGVwdGg6IGRlcHRoICsgMSxcbiAgICAgIGRlZmF1bHRFeHBhbmRlZDogc3ViRGVmYXVsdEV4cGFuZGVkLFxuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHR5cGUgPSAnYXJyYXknXG4gICAgc3ViRW50cmllcyA9IHZhbHVlLm1hcCgoZCwgaSkgPT5cbiAgICAgIG1ha2VQcm9wZXJ0eSh7XG4gICAgICAgIGxhYmVsOiBpLFxuICAgICAgICB2YWx1ZTogZCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiB2YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHR5cGUgPSAnSXRlcmFibGUnXG4gICAgc3ViRW50cmllcyA9IEFycmF5LmZyb20odmFsdWUsICh2YWwsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgIH0pXG4gICAgKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHR5cGUgPSAnZnVuY3Rpb24nXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHR5cGUgPSAnb2JqZWN0J1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgICBzdWJFbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2xhYmVsLCB2YWx1ZV0pID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdWJFbnRyaWVzKSB7XG4gICAgbGV0IGkgPSAwXG5cbiAgICB3aGlsZSAoaSA8IHN1YkVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBzdWJFbnRyeVBhZ2VzLnB1c2goc3ViRW50cmllcy5zbGljZShpLCBpICsgcGFnZVNpemUpKVxuICAgICAgaSA9IGkgKyBwYWdlU2l6ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZW5kZXJlcih7XG4gICAgaGFuZGxlRW50cnk6IGVudHJ5ID0+IChcbiAgICAgIDxFeHBsb3JlciBrZXk9e2VudHJ5LmxhYmVsfSByZW5kZXJlcj17cmVuZGVyZXJ9IHsuLi5yZXN0fSB7Li4uZW50cnl9IC8+XG4gICAgKSxcbiAgICB0eXBlLFxuICAgIHN1YkVudHJpZXMsXG4gICAgc3ViRW50cnlQYWdlcyxcbiAgICBkZXB0aCxcbiAgICB2YWx1ZSxcbiAgICBwYXRoLFxuICAgIGV4cGFuZGVkLFxuICAgIHRvZ2dsZSxcbiAgICBwYWdlU2l6ZSxcbiAgICAuLi5yZXN0LFxuICB9KVxufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2dvKHByb3BzOiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnXG4gICAgICB3aWR0aD1cIjQwcHhcIlxuICAgICAgaGVpZ2h0PVwiNDBweFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDE5MCAxOTBcIlxuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZVdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbFJ1bGU9XCJldmVub2RkXCI+XG4gICAgICAgIDxnIGlkPVwib2ctd2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTI4LjAwMDAwMCwgLTIxLjAwMDAwMClcIj5cbiAgICAgICAgICA8ZyBpZD1cIkdyb3VwLTJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjguMDAwMDAwLCAzMS4wMDAwMDApXCI+XG4gICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLCAxMC4wMDAwMDApXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0zOS43MjM5NzEyLDUxLjM0MzYyMzcgQzM2LjYzMTIyNCwzNi4zNjI4NzcgMzUuOTY3NTExMiwyNC44NzI3NzIyIDM3Ljk2NjYzMzEsMTYuNTI5MzU1MSBDMzkuMTU1NTk2NSwxMS41NjcxNjc4IDQxLjMyOTMwODgsNy41MTkwODQ2MiA0NC42MzQ2MDY0LDQuNTk4NDYzMDUgQzQ4LjEyNDEzOTQsMS41MTUwNDc3NyA1Mi41MzYwMzI3LDAuMDAyMDEyMTY2MDYgNTcuNDkzMjU3LDAuMDAyMDEyMTY2MDYgQzY1LjY3MTIwMTMsMC4wMDIwMTIxNjYwNiA3NC4yNjgyNjAyLDMuNzI3MzIxNDMgODMuNDU1NzI0NiwxMC44MDQ0MjY0IEM4Ny4yMDMxMjAzLDEzLjY5MTA0NTggOTEuMDkyNDM2NiwxNy4xNzA0MTEgOTUuMTMxNjUxNSwyMS4yNDQ0NzQ2IEM5NS40NTMxNDA0LDIwLjgzMTAyNjUgOTUuODE2NTQxNiwyMC40NDEwNDUzIDk2LjIyMTQzMDEsMjAuMDgwNjE1MiBDMTA3LjY0MDk4LDkuOTE0OTcxNTggMTE3LjI1NTI0NSwzLjU5ODkyNzE2IDEyNS40Nzg0MDgsMS4xNjM2NTA2OCBDMTMwLjM2Nzg5OSwtMC4yODQzNjQwMDUgMTM0Ljk1ODUyNiwtMC40MjIzMTc5NzggMTM5LjEzODkzNiwwLjk4MzAzMTAyMSBDMTQzLjU1MTYzMSwyLjQ2NjQ2ODQ0IDE0Ny4wNjc2Niw1LjUzMjk0ODg4IDE0OS41NDgzMTQsOS44MjgxMDkxMiBDMTUzLjY0MjI4OCwxNi45MTY2NzM1IDE1NC43MjE5MTgsMjYuMjMxMDk4MyAxNTMuMTk1NTk1LDM3LjczMjAyNDMgQzE1Mi41NzM0NTEsNDIuNDE5OTExMiAxNTEuNTA5ODUsNDcuNTI2MzgzMSAxNTAuMDA3MDk0LDUzLjA1OTMxNTMgQzE1MC41NzQwNDUsNTMuMTI3NzA4NiAxNTEuMTQyNDE2LDUzLjI1MzI4MDggMTUxLjcwNTA0MSw1My40Mzk1Mjk3IEMxNjYuMTkzOTMyLDU4LjIzNTg2NzggMTc2LjQ1MzU4Miw2My4zOTM3NDYyIDE4Mi42NjUwMjEsNjkuMjg4MjgzOSBDMTg2LjM2MDY2OSw3Mi43OTUzODMxIDE4OC43NzM5NzIsNzYuNjk5ODQzNCAxODkuNjQ2MzY1LDgxLjAyMTgyMDQgQzE5MC41NjcxNzYsODUuNTgzNjc0NiAxODkuNjY5MzEzLDkwLjE1OTMzMTYgMTg3LjE5MTU0OCw5NC40NTEyOTY3IEMxODMuMTA1MjExLDEwMS41Mjk2MTQgMTc1LjU5MTY0MywxMDcuMTEyMjEgMTY0Ljg4NzU4NywxMTEuNTM0MDMxIEMxNjAuNTg5NTUyLDExMy4zMDk1MzkgMTU1LjcyNjU3OSwxMTQuOTE3NTU5IDE1MC4yOTMyNTksMTE2LjM2Mzc0OCBDMTUwLjU0MTE3NiwxMTYuOTIyOTIgMTUwLjczMzUyMSwxMTcuNTE2NzU5IDE1MC44NjIxMzgsMTE4LjEzOTc1OCBDMTUzLjk1NDg4NiwxMzMuMTIwNTA1IDE1NC42MTg1OTgsMTQ0LjYxMDYxIDE1Mi42MTk0NzcsMTUyLjk1NDAyNyBDMTUxLjQzMDUxMywxNTcuOTE2MjE0IDE0OS4yNTY4MDEsMTYxLjk2NDI5NyAxNDUuOTUxNTAzLDE2NC44ODQ5MTkgQzE0Mi40NjE5NywxNjcuOTY4MzM0IDEzOC4wNTAwNzcsMTY5LjQ4MTM3IDEzMy4wOTI4NTMsMTY5LjQ4MTM3IEMxMjQuOTE0OTA4LDE2OS40ODEzNyAxMTYuMzE3ODUsMTY1Ljc1NjA2MSAxMDcuMTMwMzg1LDE1OC42Nzg5NTYgQzEwMy4zNDMxMDQsMTU1Ljc2MTYxMyA5OS40MTA4NjU1LDE1Mi4yMzg4MzkgOTUuMzI1NDMzNywxNDguMTA4NjE5IEM5NC45MDUwNzUzLDE0OC43NjU0NzQgOTQuMzg4OTY4MSwxNDkuMzc2MDExIDkzLjc3ODU2OTksMTQ5LjkxOTM4NSBDODIuMzU5MDE5OCwxNjAuMDg1MDI4IDcyLjc0NDc1NSwxNjYuNDAxMDczIDY0LjUyMTU5MTUsMTY4LjgzNjM0OSBDNTkuNjMyMTAwOSwxNzAuMjg0MzY0IDU1LjA0MTQ3MzYsMTcwLjQyMjMxOCA1MC44NjEwNjM2LDE2OS4wMTY5NjkgQzQ2LjQ0ODM2ODYsMTY3LjUzMzUzMiA0Mi45MzIzNDA0LDE2NC40NjcwNTEgNDAuNDUxNjg2MiwxNjAuMTcxODkxIEMzNi4zNTc3MTE2LDE1My4wODMzMjcgMzUuMjc4MDgyMywxNDMuNzY4OTAyIDM2LjgwNDQwNTMsMTMyLjI2Nzk3NiBDMzcuNDQ5MDM4LDEyNy40MTA2MzQgMzguNTY3NjIsMTIyLjEwMzg5OCA0MC4xNTc1ODkxLDExNi4zMzkwMDkgQzM5LjUzNjEwNDEsMTE2LjI3NjEwNCAzOC45MTIwNzU0LDExNi4xNDQ4MTYgMzguMjk0OTU5MSwxMTUuOTQwNTI5IEMyMy44MDYwNjg0LDExMS4xNDQxOTEgMTMuNTQ2NDE4NCwxMDUuOTg2MzEyIDcuMzM0OTc4OTIsMTAwLjA5MTc3NSBDMy42MzkzMzEyMSw5Ni41ODQ2NzU0IDEuMjI2MDI3NTIsOTIuNjgwMjE1MSAwLjM1MzYzNTIzNSw4OC4zNTgyMzgxIEMtMC41NjcxNzYzMzMsODMuNzk2MzgzOSAwLjMzMDY4NjU4MSw3OS4yMjA3MjY5IDIuODA4NDUyMzYsNzQuOTI4NzYxOCBDNi44OTQ3ODg2Myw2Ny44NTA0NDQzIDE0LjQwODM1NjUsNjIuMjY3ODQ4MSAyNS4xMTI0MTMzLDU3Ljg0NjAyNzMgQzI5LjUzODUxNDMsNTYuMDE3NjE1NCAzNC41NjM3MjA4LDU0LjM2NjgyMiA0MC4xOTM5Mzk0LDUyLjg4NzQ2NzQgQzM5Ljk5MzMzOTMsNTIuMzk2OTE3MSAzOS44MzQ5Mzc0LDUxLjg4MTEyMzUgMzkuNzIzOTcxMiw1MS4zNDM2MjM3IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUGF0aFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMwMDJDNEJcIlxuICAgICAgICAgICAgICAgIGZpbGxSdWxlPVwibm9uemVyb1wiXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDk1LjAwMDAwMCwgODUuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05NS4wMDAwMDAsIC04NS4wMDAwMDApIFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk05MS43MzUsMTEwIEw5MS43MzUsMTE2IEw4MC42MzIyMDUxLDExNiBDNzguODQxMTI4NiwxMTYgNzcuMTg2ODYxNCwxMTUuMDQxOTc1IDc2LjI5NTQ0ODksMTEzLjQ4ODQ4MyBMNzQuMjk0LDExMCBMOTEuNzM1LDExMCBaIE0xMTYuMTgxLDExMCBMMTE0LjE4MDI1NiwxMTMuNDg4NDgzIEMxMTMuMjg4ODQ0LDExNS4wNDE5NzUgMTExLjYzNDU3NiwxMTYgMTA5Ljg0MzUsMTE2IEw5OC43MzUsMTE2IEw5OC43MzUsMTEwIEwxMTYuMTgxLDExMCBaIE05MS43MzUsOTYgTDkxLjczNSwxMDMgTDcwLjI3NywxMDMgTDY2LjI2LDk2IEw5MS43MzUsOTYgWiBNMTI0LjIxNSw5NiBMMTIwLjE5OCwxMDMgTDk4LjczNSwxMDMgTDk4LjczNSw5NiBMMTI0LjIxNSw5NiBaIE05MS43MzUsODIgTDkxLjczNSw4OSBMNjIuMjQ0LDg5IEw2MS42NjMyNDM4LDg3Ljk4ODQ4MjYgQzYwLjc3ODkxODcsODYuNDQ3MzQxNyA2MC43Nzg5MTg3LDg0LjU1MjY1ODMgNjEuNjYzMjQzOCw4My4wMTE1MTc0IEw2Mi4yNDMsODIgTDkxLjczNSw4MiBaIE0xMjguMjMyLDgyIEwxMjguODEyNDYxLDgzLjAxMTUxNzQgQzEyOS42OTY3ODYsODQuNTUyNjU4MyAxMjkuNjk2Nzg2LDg2LjQ0NzM0MTcgMTI4LjgxMjQ2MSw4Ny45ODg0ODI2IEwxMjguMjMxLDg5IEw5OC43MzUsODkgTDk4LjczNSw4MiBMMTI4LjIzMiw4MiBaIE05MS43MzUsNjggTDkxLjczNSw3NSBMNjYuMjYsNzUgTDcwLjI3Nyw2OCBMOTEuNzM1LDY4IFogTTEyMC4xOTgsNjggTDEyNC4yMTUsNzUgTDk4LjczNSw3NSBMOTguNzM1LDY4IEwxMjAuMTk4LDY4IFogTTkxLjczNSw1NSBMOTEuNzM1LDYxIEw3NC4yOTMsNjEgTDc2LjI5NTQ0ODksNTcuNTExNTE3NCBDNzcuMTg2ODYxNCw1NS45NTgwMjUgNzguODQxMTI4Niw1NSA4MC42MzIyMDUxLDU1IEw5MS43MzUsNTUgWiBNMTA5Ljg0MzUsNTUgQzExMS42MzQ1NzYsNTUgMTEzLjI4ODg0NCw1NS45NTgwMjUgMTE0LjE4MDI1Niw1Ny41MTE1MTc0IEwxMTYuMTgyLDYxIEw5OC43MzUsNjEgTDk4LjczNSw1NSBMMTA5Ljg0MzUsNTUgWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJQb2x5Z29uLTJcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZEOTRDXCJcbiAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTU0Ljg2MDE3MjksOTguMzU3NzU3OCBDNTYuMTcxNTIyNCw5Ny42MDgyODU2IDU3LjgzNjAyNDYsOTguMDc0NjAxNCA1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU4LjU3Nzk0MjQsOTkuMzk5MzAzNCBMNTkuMDUyNTg0MywxMDAuMjQzNTIgQzYyLjg1NjMzOTIsMTA2Ljk4Mjk5MyA2Ni44MTkwMTE2LDExMy4zODAxNzYgNzAuOTQwNjAxNiwxMTkuNDM1MDY4IEM3NS44MDc4ODA4LDEyNi41ODU0MjcgODEuMjgxODQsMTMzLjgyNDExIDg3LjM2MjQ3OTIsMTQxLjE1MTExNSBDODguMzE2ODc3OCwxNDIuMzAxMTQgODguMTg0OTQzNywxNDQuMDExMTc2IDg3LjA2NTY4NiwxNDQuOTk3OTM3IEw4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODYuNDU0MjA4NSwxNDUuNTM0NjI1IEM2Ni4zNDY1Mzg5LDE2My4xMDMzMTQgNTMuMjc3ODE4OCwxNjYuNjEyNTUyIDQ3LjI0ODA0ODIsMTU2LjA2MjM0MSBDNDEuMzUwMDY1MiwxNDUuNzQyNzE3IDQzLjQ4NDQ5MTUsMTI2Ljk4Mjg4OCA1My42NTEzMjc0LDk5Ljc4Mjg1MjYgQzUzLjg3NjgxOCw5OS4xNzk1ODIxIDU0LjMwNDU4NjEsOTguNjc1MjkxIDU0Ljg2MDE3MjksOTguMzU3NzU3OCBaIE0xNDAuNTM0MTc3LDExOS4wNDE1MDQgQzE0MS45ODYxMzEsMTE4Ljc4NTE3NyAxNDMuMzc1NDk2LDExOS43NDIxMzggMTQzLjY1OTYzLDEyMS4xOTQyNDIgTDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuODEyODE1LDEyMS45ODYzNzYgQzE0OC43ODIzNjUsMTQ3Ljk5NTQ1OSAxNDUuMjgzMzQ4LDE2MSAxMzMuMzE1NzY0LDE2MSBDMTIxLjYwOTc0NSwxNjEgMTA2LjcwODcyNCwxNDkuOTA5MDA3IDg4LjYxMjcwMTgsMTI3LjcyNzAyMiBDODguMjExMzQ5NSwxMjcuMjM1MDQ3IDg3Ljk5NDU3MjMsMTI2LjYxNzM3MSA4OCwxMjUuOTgxNTA5IEM4OC4wMTMxNTgsMTI0LjQ4MDY4NiA4OS4yMzU3ODU0LDEyMy4yNzQ2NTEgOTAuNzMwOTE4LDEyMy4yODc3NTYgTDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MS42ODQ2NTQ0LDEyMy4yOTQ1MzEgQzk5LjMwNTY5NzksMTIzLjMzNTk5NCAxMDYuNzE0Mzg3LDEyMy4wNzE1OTEgMTEzLjkxMDcyMywxMjIuNTAxMzIzIEMxMjIuNDA5MDM5LDEyMS44Mjc4OCAxMzEuMjgzNTIzLDEyMC42NzQ2MDcgMTQwLjUzNDE3NywxMTkuMDQxNTA0IFogTTE0Ny40MDg3MjYsNjMuODExOTY2MyBDMTQ3LjkzMjEzOSw2Mi40MDI2OTAzIDE0OS41MDgzODYsNjEuNjYzNDUzNyAxNTAuOTU0NTgxLDYyLjE0OTAxMiBMMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MS43NDI1NTIsNjIuNDE1NDg1NCBDMTc3LjU4Mzc2Myw3MS4yMTc5MjIgMTg3LjQwMjM1Niw4MC44OTE2ODA1IDE4MS4xOTgzMzIsOTEuNDM2NzYwOSBDMTc1LjEyOTkwNCwxMDEuNzUxMzY2IDE1Ny40ODQzNDcsMTA5LjI2MDMzOSAxMjguMjYxNjYsMTEzLjk2MzY3OCBDMTI3LjYxMzUyOSwxMTQuMDY3OTk0IDEyNi45NDg2NDMsMTEzLjk0NTk2OSAxMjYuMzgyNzM1LDExMy42MTg4NDMgQzEyNS4wNDcwMjUsMTEyLjg0NjcyOSAxMjQuNjAyMDQ2LDExMS4xNTgyMTQgMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuMzg4ODQ4LDEwOS44NDc0MzggTDEyNS44ODkzMjgsMTA5LjAxMDUgQzEyOS44NzcxODMsMTAyLjMxNjMzIDEzMy40ODEzNTgsOTUuNjU0MjYyMSAxMzYuNzAxODU0LDg5LjAyNDI5NTcgQzE0MC41MDUwMSw4MS4xOTQ4MTc5IDE0NC4wNzM5NjcsNzIuNzkwNzA4MSAxNDcuNDA4NzI2LDYzLjgxMTk2NjMgWiBNNjEuNzM4MzM5OCw1Ni4wMzYzMjE4IEM2Mi4zODY0NzA4LDU1LjkzMjAwNjMgNjMuMDUxMzU2NSw1Ni4wNTQwMzE1IDYzLjYxNzI2NDYsNTYuMzgxMTU3MyBDNjQuOTUyOTc1NCw1Ny4xNTMyNzEgNjUuMzk3OTUzOCw1OC44NDE3ODYyIDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuNjExMTUxNyw2MC4xNTI1NjE1IEw2NC4xMTA2NzE4LDYwLjk4OTUwMDEgQzYwLjEyMjgxNjgsNjcuNjgzNjY5OSA1Ni41MTg2NDE2LDc0LjM0NTczNzkgNTMuMjk4MTQ2Miw4MC45NzU3MDQzIEM0OS40OTQ5OSw4OC44MDUxODIxIDQ1LjkyNjAzMjgsOTcuMjA5MjkxOSA0Mi41OTEyNzQ0LDEwNi4xODgwMzQgQzQyLjA2Nzg2MDgsMTA3LjU5NzMxIDQwLjQ5MTYxNDIsMTA4LjMzNjU0NiAzOS4wNDU0MTksMTA3Ljg1MDk4OCBMMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM4LjI1NzQ0NzUsMTA3LjU4NDUxNSBDMTIuNDE2MjM3Miw5OC43ODIwNzggMi41OTc2NDM5OCw4OS4xMDgzMTk1IDguODAxNjY3ODYsNzguNTYzMjM5MSBDMTQuODcwMDk1Nyw2OC4yNDg2MzM1IDMyLjUxNTY1Myw2MC43Mzk2NjExIDYxLjczODMzOTgsNTYuMDM2MzIxOCBaIE0xMDMuNTQ1NzkyLDI0LjQ2NTM3NDYgQzEyMy42NTM0NjEsNi44OTY2ODY0MSAxMzYuNzIyMTgxLDMuMzg3NDQ3NzggMTQyLjc1MTk1MiwxMy45Mzc2NTg3IEMxNDguNjQ5OTM1LDI0LjI1NzI4MjYgMTQ2LjUxNTUwOCw0My4wMTcxMTIyIDEzNi4zNDg2NzMsNzAuMjE3MTQ3NCBDMTM2LjEyMzE4Miw3MC44MjA0MTc5IDEzNS42OTU0MTQsNzEuMzI0NzA5IDEzNS4xMzk4MjcsNzEuNjQyMjQyMiBDMTMzLjgyODQ3OCw3Mi4zOTE3MTQ0IDEzMi4xNjM5NzUsNzEuOTI1Mzk4NiAxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMS40MjIwNTgsNzAuNjAwNjk2NiBMMTMwLjk0NzQxNiw2OS43NTY0Nzk4IEMxMjcuMTQzNjYxLDYzLjAxNzAwNjUgMTIzLjE4MDk4OCw1Ni42MTk4MjM5IDExOS4wNTkzOTgsNTAuNTY0OTMyIEMxMTQuMTkyMTE5LDQzLjQxNDU3MjcgMTA4LjcxODE2LDM2LjE3NTg5MDMgMTAyLjYzNzUyMSwyOC44NDg4ODQ3IEMxMDEuNjgzMTIyLDI3LjY5ODg2MDIgMTAxLjgxNTA1NiwyNS45ODg4MjQzIDEwMi45MzQzMTQsMjUuMDAyMDYyOSBMMTAyLjkzNDMxNCwyNS4wMDIwNjI5IFogTTU3LjY4NDIzNjEsOCBDNjkuMzkwMjU1MSw4IDg0LjI5MTI3NTgsMTkuMDkwOTkyNiAxMDIuMzg3Mjk4LDQxLjI3Mjk3NzcgQzEwMi43ODg2NTEsNDEuNzY0OTUyNyAxMDMuMDA1NDI4LDQyLjM4MjYyODggMTAzLDQzLjAxODQ5MTEgQzEwMi45ODY4NDIsNDQuNTE5MzE0NCAxMDEuNzY0MjE1LDQ1LjcyNTM0ODkgMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEwxMDAuMjY5MDgyLDQ1LjcxMjI0NDUgTDk5LjMxNTM0NTYsNDUuNzA1NDY4OSBDOTEuNjk0MzAyMSw0NS42NjQwMDYzIDg0LjI4NTYxMjYsNDUuOTI4NDA5MSA3Ny4wODkyNzcyLDQ2LjQ5ODY3NzMgQzY4LjU5MDk2MTIsNDcuMTcyMTIgNTkuNzE2NDc2Nyw0OC4zMjUzOTMgNTAuNDY1ODIzNSw0OS45NTg0OTYyIEM0OS4wMTM4NjkxLDUwLjIxNDgyMzEgNDcuNjI0NTA0NCw0OS4yNTc4NjE4IDQ3LjM0MDM2OTcsNDcuODA1NzU4IEw0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMTg3MTg0Niw0Ny4wMTM2MjM1IEM0Mi4yMTc2MzQ3LDIxLjAwNDU0MTIgNDUuNzE2NjUxOSw4IDU3LjY4NDIzNjEsOCBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIkNvbWJpbmVkLVNoYXBlXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGNDE1NFwiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG4gIClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSdcblxuaW1wb3J0IHVzZUxvY2FsU3RvcmFnZSBmcm9tICcuL3VzZUxvY2FsU3RvcmFnZSdcbmltcG9ydCB7IHVzZUlzTW91bnRlZCB9IGZyb20gJy4vdXRpbHMnXG5cbmltcG9ydCB7IFBhbmVsLCBCdXR0b24gfSBmcm9tICcuL3N0eWxlZENvbXBvbmVudHMnXG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBkZWZhdWx0VGhlbWUgYXMgdGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuLy8gaW1wb3J0IHsgZ2V0UXVlcnlTdGF0dXNMYWJlbCwgZ2V0UXVlcnlTdGF0dXNDb2xvciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgRXhwbG9yZXIgZnJvbSAnLi9FeHBsb3JlcidcbmltcG9ydCBMb2dvIGZyb20gJy4vTG9nbydcblxuaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVhY3QgdGFibGUgdG8gYXR0YWNoIHRoZSBkZXZ0b29scyB0by5cbiAgICovXG4gIHRhYmxlOiBhbnlcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHBhbmVsLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBldGMuXG4gICAqL1xuICBwYW5lbFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LFxuICAgIEhUTUxEaXZFbGVtZW50XG4gID5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGFkZCBwcm9wcyB0byB0aGUgY2xvc2UgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgY2xvc2VCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIHRvZ2dsZSBidXR0b24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBjbGFzc05hbWUsIHN0eWxlIChtZXJnZSBhbmQgb3ZlcnJpZGUgZGVmYXVsdCBzdHlsZSksIG9uQ2xpY2sgKGV4dGVuZCBkZWZhdWx0IGhhbmRsZXIpLCBldGMuXG4gICAqL1xuICB0b2dnbGVCdXR0b25Qcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBIVE1MQnV0dG9uRWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byByZW5kZXIgdGhlIGRldnRvb2xzIGluc2lkZSBhIGRpZmZlcmVudCB0eXBlIG9mIGNvbnRhaW5lciBlbGVtZW50IGZvciBhMTF5IHB1cnBvc2VzLlxuICAgKiBBbnkgc3RyaW5nIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgdmFsaWQgaW50cmluc2ljIEpTWCBlbGVtZW50IGlzIGFsbG93ZWQuXG4gICAqIERlZmF1bHRzIHRvICdmb290ZXInLlxuICAgKi9cbiAgY29udGFpbmVyRWxlbWVudD86IHN0cmluZyB8IGFueVxufVxuXG5pbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3Qgc3R5bGUgb2JqZWN0IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBpbmxpbmUgc3R5bGVzXG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBSZWFjdCBjbGFzc05hbWUgcHJvcGVydHkgdXNlZCB0byBzdHlsZSBhIGNvbXBvbmVudCB3aXRoIGNsYXNzZXNcbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogQSBib29sZWFuIHZhcmlhYmxlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGFuZWwgaXMgb3BlbiBvciBjbG9zZWRcbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0b2dnbGVzIHRoZSBvcGVuIGFuZCBjbG9zZSBzdGF0ZSBvZiB0aGUgcGFuZWxcbiAgICovXG4gIHNldElzT3BlbjogKGlzT3BlbjogYm9vbGVhbikgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzKHtcbiAgaW5pdGlhbElzT3BlbixcbiAgdGFibGUsXG4gIHBhbmVsUHJvcHMgPSB7fSxcbiAgdG9nZ2xlQnV0dG9uUHJvcHMgPSB7fSxcbiAgY29udGFpbmVyRWxlbWVudDogQ29udGFpbmVyID0gJ2Zvb3RlcicsXG59OiBEZXZ0b29sc09wdGlvbnMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3Qgcm9vdFJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcGFuZWxSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gICAgJ3JlYWN0VGFibGVEZXZ0b29sc09wZW4nLFxuICAgIGluaXRpYWxJc09wZW5cbiAgKVxuICBjb25zdCBpc01vdW50ZWQgPSB1c2VJc01vdW50ZWQoKVxuXG4gIGNvbnN0IHsgc3R5bGU6IHBhbmVsU3R5bGUgPSB7fSwgLi4ub3RoZXJQYW5lbFByb3BzIH0gPSBwYW5lbFByb3BzXG5cbiAgY29uc3Qge1xuICAgIHN0eWxlOiB0b2dnbGVCdXR0b25TdHlsZSA9IHt9LFxuICAgIG9uQ2xpY2s6IG9uVG9nZ2xlQ2xpY2ssXG4gICAgLi4ub3RoZXJUb2dnbGVCdXR0b25Qcm9wc1xuICB9ID0gdG9nZ2xlQnV0dG9uUHJvcHNcblxuICAvLyBEbyBub3QgcmVuZGVyIG9uIHRoZSBzZXJ2ZXJcbiAgaWYgKCFpc01vdW50ZWQoKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgcmVmPXtyb290UmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNcIj5cbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIHshaXNPcGVuID8gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgey4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHN9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiT3BlbiBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgICAgICAgICAgIG9uVG9nZ2xlQ2xpY2sgJiYgb25Ub2dnbGVDbGljayhlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICBtYXJnaW46ICcuNXJlbScsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMS41ZW0nLFxuICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgICAgICAgICAgIC4uLnRvZ2dsZUJ1dHRvblN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TG9nbyBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFxuICAgICAgICAgICAgcmVmPXtwYW5lbFJlZiBhcyBhbnl9XG4gICAgICAgICAgICB7Li4ub3RoZXJQYW5lbFByb3BzfVxuICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICBzZXRJc09wZW49e3NldElzT3Blbn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIG1heEhlaWdodDogJzgwdmgnLFxuICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAuLi5wYW5lbFN0eWxlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgIDwvQ29udGFpbmVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICBEZXZ0b29sc1BhbmVsT3B0aW9uc1xuPihmdW5jdGlvbiBSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbChwcm9wcywgcmVmKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcbiAgY29uc3Qge1xuICAgIHRhYmxlLFxuICAgIGlzT3BlbiA9IHRydWUsXG4gICAgc2V0SXNPcGVuLFxuICAgIC4uLnBhbmVsUHJvcHNcbiAgfSA9IHByb3BzIGFzIERldnRvb2xzUGFuZWxPcHRpb25zICYge1xuICAgIHRhYmxlOiBUYWJsZTxhbnk+XG4gIH1cblxuICAvLyBjb25zdCBbYWN0aXZlTWF0Y2hJZCwgc2V0QWN0aXZlUm91dGVJZF0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gIC8vICAgJ3JlYWN0VGFibGVEZXZ0b29sc0FjdGl2ZVJvdXRlSWQnLFxuICAvLyAgICcnLFxuICAvLyApXG5cbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgPFBhbmVsIHJlZj17cmVmfSBjbGFzc05hbWU9XCJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbFwiIHsuLi5wYW5lbFByb3BzfT5cbiAgICAgICAgPHN0eWxlXG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYFxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICoge1xuICAgICAgICAgICAgICBzY3JvbGxiYXItY29sb3I6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH0gJHt0aGVtZS5ncmF5fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsICo6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10cmFjaywgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IC41ZW07XG4gICAgICAgICAgICAgIGJvcmRlcjogM3B4IHNvbGlkICR7dGhlbWUuYmFja2dyb3VuZEFsdH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGZsZXg6ICcxIDEgNTAwcHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNDAlJyxcbiAgICAgICAgICAgIG1heEhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7dGhlbWUuZ3JheUFsdH1gLFxuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdGhlbWUuYmFja2dyb3VuZEFsdCxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ29cbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4oZmFsc2UpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnY2xhbXAoLjhyZW0sIDJ2dywgMS4zcmVtKScsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZWFjdCBUYWJsZXsnICd9XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRGV2dG9vbHNcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIFJlYWN0IFRhYmxlIERldnRvb2xzXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBDbG9zZVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgIGZsZXg6ICcxJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkluc3RhbmNlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGV9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTdGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFN0YXRlKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcuNXJlbScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0QWxsQ29sdW1ucygpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDb3JlIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0Q29yZVJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJGaWx0ZXJlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEZpbHRlcmVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlNvcnRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFNvcnRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJHcm91cGVkIE1vZGVsXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGFibGUuZ2V0R3JvdXBlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJFeHBhbmRlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEV4cGFuZGVkUm93TW9kZWwoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7LyogPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJy41ZW0nLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RXhwbG9yZXJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlJvdyBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1BhbmVsPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKVxufSlcbiIsICJpbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5mdW5jdGlvbiBTa2VsZXRvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1hbmltYXRlLXB1bHNlIHBzLXJvdW5kZWQtbWQgcHMtYmctZm9yZWdyb3VuZC8xMFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9O1xuIiwgImltcG9ydCB7IGZsZXhSZW5kZXIsIHR5cGUgSGVhZGVyIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQXJyb3dEb3duV2lkZU5hcnJvdywgQXJyb3dVcFdpZGVOYXJyb3csIENoZXZyb25Eb3duLCBNb3ZlRG93biwgTW92ZVVwLCBQaW4sIFBpbk9mZiwgWCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IEFuaW1hdGVQcmVzZW5jZSwgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbn0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvZHJvcGRvd24tbWVudVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUHJvcHM8VERhdGE+IHtcbiAgaGVhZGVyOiBIZWFkZXI8VERhdGEsIHVua25vd24+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlcjxURGF0YT4ocHJvcHM6IEhlYWRlclByb3BzPFREYXRhPikge1xuICBjb25zdCB7IGhlYWRlciwgY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlblwiLCBjbGFzc05hbWUpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzXCI+XG4gICAgICAgICAge2hlYWRlci5pc1BsYWNlaG9sZGVyID8gbnVsbCA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtbWluLXctMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1taW4tdy0wIHBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtZm9yZWdyb3VuZC85MFwiPlxuICAgICAgICAgICAgICAgIHtmbGV4UmVuZGVyKGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlciwgaGVhZGVyLmdldENvbnRleHQoKSl9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLXNocmluay0wIHBzLWdhcC0xXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtbWwtMVwiPlxuICAgICAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICAgICAga2V5PVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogLTQgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMiB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNb3ZlRG93biBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkgPT09IFwiYXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAsIHk6IDQgfX1cbiAgICAgICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSwgeTogMCB9fVxuICAgICAgICAgICAgICAgICAgZXhpdD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZVVwIHNpemU9ezE0fSBjbGFzc05hbWU9XCJwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L0FuaW1hdGVQcmVzZW5jZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUGluKCkgJiYgaGVhZGVyLmNvbHVtbi5pZCAhPT0gXCJzZWxlY3RcIiAmJiAoXG4gICAgICAgICAgICA8RHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgY2xhc3NOYW1lPVwicHMtcHgtMCBwcy1oLTYgcHMtdy02XCI+XG4gICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gc2l6ZT17MTJ9IC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuU29ydCgpICYmIChcbiAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4udG9nZ2xlU29ydGluZygpfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyLmNvbHVtbi5nZXROZXh0U29ydGluZ09yZGVyKCkgPT09IFwiZGVzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93bldpZGVOYXJyb3cgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgZGVzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IGhlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXBXaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGFzY2VuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxYIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWwgc29ydGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudUl0ZW0gb25DbGljaz17KCkgPT4gaGVhZGVyLmNvbHVtbi5waW4oaGVhZGVyLmNvbHVtbi5nZXRJc1Bpbm5lZCgpID8gZmFsc2UgOiBcImxlZnRcIil9PlxuICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluT2ZmIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFVucGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQaW4gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgUGluIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICB7aGVhZGVyLmNvbHVtbi5nZXRDYW5SZXNpemUoKSAmJiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ub3VjaFN0YXJ0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGhlYWRlci5nZXRSZXNpemVIYW5kbGVyKCkoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICBvbktleURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiB8fCBlLmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICAgIFwicHMtYWJzb2x1dGUgcHMtcmlnaHQtMCBwcy10b3AtMCBwcy1oLWZ1bGwgcHMtdy1weCBwcy1jdXJzb3ItY29sLXJlc2l6ZSBwcy1ib3JkZXIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOnBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgICAgICApfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZXNpemUgY29sdW1uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkTG9hZGluZ0Jhcih7IGNsYXNzTmFtZSB9OiBEYXRhR3JpZExvYWRpbmdCYXJQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtbG9hZGluZy1iYXJcbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLVsycHhdIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtYmctdGFibGUtYm9yZGVyIHBzLXotNTBcIiwgY2xhc3NOYW1lKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWFuaW1hdGUtaW5kZXRlcm1pbmF0ZS1iYXIgcHMtaC1mdWxsIHBzLXctMS8zIHBzLXJvdW5kZWQtci1mdWxsIHBzLWJnLXByaW1hcnlcIiAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgQ2hldnJvbkxlZnQsIENoZXZyb25SaWdodCwgQ2hldnJvbnNMZWZ0LCBDaGV2cm9uc1JpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHZhcmlhbnQ/OiBcImJhc2ljXCIgfCBcIm51bWVyaWNcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkUGFnaW5hdGlvbihwcm9wczogRGF0YUdyaWRQYWdpbmF0aW9uUHJvcHMpIHtcbiAgY29uc3QgeyB0YWJsZSwgdmFyaWFudCA9IFwiYmFzaWNcIiB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBwYWdlSW5kZXggfSA9IHRhYmxlLmdldFN0YXRlKCkucGFnaW5hdGlvbjtcbiAgY29uc3QgcGFnZUNvdW50ID0gdGFibGUuZ2V0UGFnZUNvdW50KCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJvdW5kZWQtYi1sZyBwcy1vdmVyZmxvdy1jbGlwIHBzLXN0aWNreSBwcy1ib3R0b20tMCBwcy1sZWZ0LTAgcHMtYm9yZGVyLXQtMCB3LWZ1bGwgcHMtei0yMCBwcy1wLTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXNwYWNlLXgtMiBwcy1weS0yIHBzLXB4LTIgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy1iYWNrZHJvcC1ibHVyLXNtIHBzLWJnLXRhYmxlLWhlYWQvOTBcIj5cbiAgICAgICAge3ZhcmlhbnQgPT09IFwiYmFzaWNcIiA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQcmV2aW91c1xuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC05XCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBOZXh0XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXNwYWNlLXgtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLnNldFBhZ2VJbmRleCgwKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25MZWZ0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMSBwcy10ZXh0LXhzIHBzLWZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgUGFnZVxuICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBtaW49ezF9XG4gICAgICAgICAgICAgICAgICBtYXg9e3BhZ2VDb3VudH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYWdlSW5kZXggKyAxfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0xNlwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZUluZGV4ID0gZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIC0gMSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldFBhZ2VJbmRleChwYWdlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXNocmluay0wIHBzLXctbWF4XCI+b2Yge3BhZ2VDb3VudH08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUubmV4dFBhZ2UoKX0gZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfT5cbiAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUNvdW50IC0gMSl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5OZXh0UGFnZSgpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENoZXZyb25zUmlnaHQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtblBpbm5pbmdTdHlsZXMoY29sdW1uOiBDb2x1bW48UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBraW5kOiBcImhlYWRlclwiIHwgXCJjZWxsXCIpIHtcbiAgY29uc3QgaXNQaW5uZWQgPSBjb2x1bW4uZ2V0SXNQaW5uZWQoKTtcbiAgY29uc3QgaXNMZWZ0UGlubmVkID0gaXNQaW5uZWQgPT09IFwibGVmdFwiO1xuICBjb25zdCBpc1JpZ2h0UGlubmVkID0gaXNQaW5uZWQgPT09IFwicmlnaHRcIjtcbiAgY29uc3QgaXNTZWxlY3RDb2x1bW4gPSBjb2x1bW4uaWQgPT09IFwiX19wc19zZWxlY3RcIjtcblxuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZTogY24oXG4gICAgICBcInBzLWdyb3VwIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIixcbiAgICAgIFwicHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXRleHQtZWxsaXBzaXNcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYgXCJwcy1zdGlja3lcIixcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJoZWFkZXJcIiAmJiAoaXNTZWxlY3RDb2x1bW4gPyBcInBzLXotMzBcIiA6IFwicHMtei0yMFwiKSxcbiAgICAgIChpc0xlZnRQaW5uZWQgfHwgaXNSaWdodFBpbm5lZCkgJiYga2luZCA9PT0gXCJjZWxsXCIgJiYgKGlzU2VsZWN0Q29sdW1uID8gXCJwcy16LTEwXCIgOiBcInBzLXotMFwiKSxcbiAgICAgIGlzTGVmdFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bMnB4XzBfNXB4Xy0ycHhfcmdiYSgwLDAsMCwwLjEpXVwiLFxuICAgICAgaXNSaWdodFBpbm5lZCAmJiBcInBzLXNoYWRvdy1bLTJweF8wXzVweF8tMnB4X3JnYmEoMCwwLDAsMC4xKV1cIixcbiAgICApLFxuICAgIHN0eWxlOiB7XG4gICAgICBtaW5XaWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICB3aWR0aDogYCR7Y29sdW1uLmdldFNpemUoKX1weGAsXG4gICAgICBsZWZ0OiBpc0xlZnRQaW5uZWQgPyBgJHtjb2x1bW4uZ2V0U3RhcnQoXCJsZWZ0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiBpc1JpZ2h0UGlubmVkID8gYCR7Y29sdW1uLmdldEFmdGVyKFwicmlnaHRcIil9cHhgIDogdW5kZWZpbmVkLFxuICAgICAgcG9zaXRpb246IGlzUGlubmVkID8gKFwic3RpY2t5XCIgYXMgY29uc3QpIDogdW5kZWZpbmVkLFxuICAgIH0gYXMgQ1NTUHJvcGVydGllcyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgKiBhcyBUb29sdGlwUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdG9vbHRpcFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFRvb2x0aXBQcm92aWRlciA9IFRvb2x0aXBQcmltaXRpdmUuUHJvdmlkZXI7XG5cbmNvbnN0IFRvb2x0aXAgPSBUb29sdGlwUHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IFRvb2x0aXBUcmlnZ2VyID0gVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyO1xuXG5jb25zdCBUb29sdGlwQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFRvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtcm91bmRlZC1tZCBwcy1iZy1wcmltYXJ5IHBzLXB4LTMgcHMtcHktMS41IHBzLXRleHQteHMgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtYW5pbWF0ZS1pbiBwcy1mYWRlLWluLTAgcHMtem9vbS1pbi05NSBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1Rvb2x0aXBQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Ub29sdGlwQ29udGVudC5kaXNwbGF5TmFtZSA9IFRvb2x0aXBQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgVG9vbHRpcCwgVG9vbHRpcFRyaWdnZXIsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIgfTtcbiIsICJpbXBvcnQgeyBLZXlSb3VuZCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBQcm92aWRlciwgVG9vbHRpcFRyaWdnZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90b29sdGlwXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZEhlYWRlckNlbGwoeyBjb2x1bW4gfTogeyBjb2x1bW46IENvbHVtbiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlclwiPlxuICAgICAge2NvbHVtbi5pc0luUHJpbWFyeUtleSAmJiAoXG4gICAgICAgIDxUb29sdGlwUHJvdmlkZXIgZGVsYXlEdXJhdGlvbj17MTIwfT5cbiAgICAgICAgICA8VG9vbHRpcD5cbiAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICA8S2V5Um91bmQgc2l6ZT17MTJ9IGNsYXNzTmFtZT1cInBzLXRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXBUcmlnZ2VyPlxuICAgICAgICAgICAgPFRvb2x0aXBDb250ZW50IHNpZGU9XCJib3R0b21cIiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlByaW1hcnkgS2V5PC9zcGFuPlxuICAgICAgICAgICAgPC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvVG9vbHRpcFByb3ZpZGVyPlxuICAgICAgKX1cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtbWVkaXVtIHBzLXRydW5jYXRlXCI+e2NvbHVtbi5uYW1lfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLW92ZXJmbG93LWhpZGRlbiBwcy10ZXh0LWVsbGlwc2lzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC83MCBwcy1sb3dlcmNhc2UgcHMtdHJ1bmNhdGVcIj5cbiAgICAgICAge2NvbHVtbi5kYXRhdHlwZS5uYW1lfVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiLi9Cb29sZWFuSW5wdXRcIjtcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gXCIuL0RhdGVJbnB1dFwiO1xuaW1wb3J0IHsgRW51bUlucHV0IH0gZnJvbSBcIi4vRW51bUlucHV0XCI7XG5pbXBvcnQgeyBKc29uSW5wdXQgfSBmcm9tIFwiLi9Kc29uSW5wdXRcIjtcbmltcG9ydCB7IE51bWVyaWNJbnB1dCB9IGZyb20gXCIuL051bWVyaWNJbnB1dFwiO1xuaW1wb3J0IHsgUmF3SW5wdXQgfSBmcm9tIFwiLi9SYXdJbnB1dFwiO1xuaW1wb3J0IHsgVGltZUlucHV0IH0gZnJvbSBcIi4vVGltZUlucHV0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dChwcm9wczoge1xuICBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0OiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufSkge1xuICBjb25zdCB7IGNlbGwsIGNvbHVtbiwgb25TdWJtaXQgfSA9IHByb3BzO1xuICBjb25zdCB7IGdyb3VwLCBvcHRpb25zLCBpc0FycmF5IH0gPSBjb2x1bW4uZGF0YXR5cGU7XG4gIGNvbnN0IHJlYWRvbmx5ID0gY29sdW1uLmlzQ29tcHV0ZWQgfHwgcHJvcHMucmVhZG9ubHk7XG5cbiAgY29uc3QgY2VsbFZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIC8vIG9uIHJvdyBpbnNlcnRpb25zLCB3ZSB0cmVhdCB1bmRlZmluZWQgYXMgZW1wdHkgaW5wdXRcbiAgY29uc3QgdmFsdWUgPSBjZWxsVmFsdWUgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBjZWxsVmFsdWU7XG5cbiAgaWYgKGdyb3VwID09PSBcImRhdGV0aW1lXCIpIHtcbiAgICByZXR1cm4gPERhdGVJbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwidGltZVwiKSB7XG4gICAgcmV0dXJuIDxUaW1lSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImpzb25cIiB8fCBpc0FycmF5KSB7XG4gICAgcmV0dXJuIDxKc29uSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiA8Qm9vbGVhbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJlbnVtXCIpIHtcbiAgICByZXR1cm4gPEVudW1JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gb3B0aW9ucz17b3B0aW9uc30gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgcmV0dXJuIDxOdW1lcmljSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UmF3SW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17aXNPYmplY3RUeXBlKHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlfSByZWFkb25seT17cmVhZG9ubHl9IC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9sYWJlbFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQm9vbGVhbklucHV0KHByb3BzOiBCb29sZWFuSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCA/IGZhbHNlIDogKHZhbHVlIGFzIGJvb2xlYW4pKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlVG9TdWJtaXQgPSBzZXRUb051bGwgPyBudWxsIDogY3VycmVudFZhbHVlO1xuICAgIGlmICh2YWx1ZVRvU3VibWl0ICE9PSB2YWx1ZSkge1xuICAgICAgb25TdWJtaXQodmFsdWVUb1N1Ym1pdCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMCBwcy1weC0yXCI+XG4gICAgICAgIDxMYWJlbCBodG1sRm9yPVwiYm9vbGVhbi1pbnB1dFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIj5cbiAgICAgICAgICBCb29sZWFuXG4gICAgICAgIDwvTGFiZWw+XG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgIGluaXRpYWw9e3sgb3BhY2l0eTogMCB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMjQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgIGlkPVwiYm9vbGVhbi1pbnB1dFwiXG4gICAgICAgICAgICBjaGVja2VkPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGRhdGEtdmFsdWVcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtZm9udC1tb25vXCJcbiAgICAgICAgICBpbml0aWFsPXt7IHg6IC00MCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIGFuaW1hdGU9e3sgeDogMCwgb3BhY2l0eTogMSB9fVxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTIsIGRlbGF5OiAwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7c2V0VG9OdWxsID8gXCJOVUxMXCIgOiBTdHJpbmcoY3VycmVudFZhbHVlKX1cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgTGFiZWxQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1sYWJlbFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBsYWJlbFZhcmlhbnRzID0gY3ZhKFxuICBcInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW0gcHMtbGVhZGluZy1ub25lIHBlZXItZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIHBlZXItZGlzYWJsZWQ6cHMtb3BhY2l0eS03MFwiLFxuKTtcblxuY29uc3QgTGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBMYWJlbFByaW1pdGl2ZS5Sb290PiAmIFZhcmlhbnRQcm9wczx0eXBlb2YgbGFiZWxWYXJpYW50cz5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPExhYmVsUHJpbWl0aXZlLlJvb3QgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24obGFiZWxWYXJpYW50cygpLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4pKTtcbkxhYmVsLmRpc3BsYXlOYW1lID0gTGFiZWxQcmltaXRpdmUuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgTGFiZWwgfTtcbiIsICJpbXBvcnQgKiBhcyBTd2l0Y2hQcmltaXRpdmVzIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc3dpdGNoXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgU3dpdGNoID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTd2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTd2l0Y2hQcmltaXRpdmVzLlJvb3RcbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1wZWVyIHBzLWlubGluZS1mbGV4IHBzLWgtNSBwcy13LTkgcHMtc2hyaW5rLTAgcHMtY3Vyc29yLXBvaW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtZnVsbCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0yIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGZvY3VzLXZpc2libGU6cHMtcmluZy1vZmZzZXQtMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LWJhY2tncm91bmQgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLWJnLWlucHV0XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gICAgcmVmPXtyZWZ9XG4gID5cbiAgICA8U3dpdGNoUHJpbWl0aXZlcy5UaHVtYlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1wb2ludGVyLWV2ZW50cy1ub25lIHBzLWJsb2NrIHBzLWgtNCBwcy13LTQgcHMtcm91bmRlZC1mdWxsIHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LWxnIHBzLXJpbmctMCBwcy10cmFuc2l0aW9uLXRyYW5zZm9ybSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10cmFuc2xhdGUteC00IGRhdGEtW3N0YXRlPXVuY2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtMFwiLFxuICAgICAgKX1cbiAgICAvPlxuICA8L1N3aXRjaFByaW1pdGl2ZXMuUm9vdD5cbikpO1xuU3dpdGNoLmRpc3BsYXlOYW1lID0gU3dpdGNoUHJpbWl0aXZlcy5Sb290LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBTd2l0Y2ggfTtcbiIsICJpbXBvcnQgeyBDb3JuZXJEb3duTGVmdCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvc3dpdGNoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRBY3Rpb25zUHJvcHMge1xuICBvblNhdmU/OiAoKSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICBvbk51bGxDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgaXNOdWxsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBJbnB1dEFjdGlvbnMgPSAoe1xuICBvblNhdmUsXG4gIG9uQ2FuY2VsLFxuICBvbkNsb3NlLFxuICBvbk51bGxDaGFuZ2UsXG4gIGlzTnVsbCA9IGZhbHNlLFxuICByZWFkb25seSxcbn06IElucHV0QWN0aW9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChvbk51bGxDaGFuZ2UpIG9uTnVsbENoYW5nZShjaGVja2VkKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gKCkgPT4ge1xuICAgIGlmIChvblNhdmUpIG9uU2F2ZSgpO1xuICAgIGlmIChvbkNsb3NlKSBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGlmIChvbkNhbmNlbCkgb25DYW5jZWwoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdGV4dC14cyBwcy1cIj5cbiAgICAgIHshcmVhZG9ubHkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTIgcHMtbXItYXV0b1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZVNhdmV9PlxuICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgPENvcm5lckRvd25MZWZ0IHNpemU9ezEyfSBzdHJva2VXaWR0aD17Mn0gLz5cbiAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICBTYXZlIGNoYW5nZXNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlciBwcy1jdXJzb3ItcG9pbnRlclwiIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH0+XG4gICAgICAgICAgICAgIDxrYmQgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtanVzdGlmeS1jZW50ZXIgcHMtaXRlbXMtY2VudGVyIHBzLWgtNiBwcy13LTYgcHMtcm91bmRlZC1tZCBwcy1iZy1tdXRlZCBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgcHMtdGV4dC1bOHB4XSBwcy1sZWFkaW5nLW5vbmUgcHMtZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgIEVzY1xuICAgICAgICAgICAgICA8L2tiZD57XCIgXCJ9XG4gICAgICAgICAgICAgIENhbmNlbCBjaGFuZ2VzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7b25OdWxsQ2hhbmdlICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtMSBwcy1wLTJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZ2FwLTEgcHMtaXRlbXMtY2VudGVyXCIgaHRtbEZvcj1cInNldC1udWxsYWJsZVwiPlxuICAgICAgICAgICAgICAgIDxTd2l0Y2ggaWQ9XCJzZXQtbnVsbGFibGVcIiBjaGVja2VkPXtpc051bGx9IG9uQ2hlY2tlZENoYW5nZT17aGFuZGxlTnVsbENoYW5nZX0gLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5TZXQgdG8gTlVMTDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCAiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tIFwiZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdFwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9pbnB1dFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcbmltcG9ydCB7IHVzZUlucHV0IH0gZnJvbSBcIi4vdXNlLWlucHV0XCI7XG5cbi8vIEluaXRpYWxpemUgZGF5anMgcGx1Z2luc1xuZGF5anMuZXh0ZW5kKGxvY2FsaXplZEZvcm1hdCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIGNvbHVtbjogQ29sdW1uO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVJbnB1dChwcm9wczogRGF0ZUlucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICAvLyBGb3JtYXQgdGhlIGRhdGUgdXNpbmcgZGF5anMgYmFzZWQgb24gZGV0ZWN0ZWQgZm9ybWF0XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKCFkYXRlLmlzVmFsaWQoKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIC8vIERldGVjdCBpZiBpbnB1dCBoYXMgdGltZSBjb21wb25lbnRcbiAgICAgIGNvbnN0IGhhc1RpbWUgPSBpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKTtcblxuICAgICAgLy8gSHVtYW4tcmVhZGFibGUgZm9ybWF0IChsb2NhbGl6ZWQpXG4gICAgICBpZiAoaGFzVGltZSkge1xuICAgICAgICAvLyBGb3IgdGltZXN0YW1wcywgc2hvdyBmdWxsIGRhdGUgYW5kIHRpbWVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTEwgTFRTXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIGRhdGVzLCBqdXN0IHNob3cgdGhlIGRhdGVcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiTExcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWREYXRlfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlSW5wdXRQcm9wcyB7XG4gIGluaXRpYWxWYWx1ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlucHV0KHByb3BzOiBVc2VJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlIH0gPSBwcm9wcztcblxuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlID8/IFwiXCIpO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcblxuaW1wb3J0IHsgYmFkZ2VWYXJpYW50cyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudW1JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbnVtSW5wdXQocHJvcHM6IEVudW1JbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIGNvbHVtbiwgdmFsdWUsIG9wdGlvbnMgPSBbXSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUob3B0aW9uKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGwsIHZhbHVlXSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7IC8vIFJlc2V0IG51bGwgc3RhdGUgYXMgd2VsbFxuICB9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLWZvbnQtbW9ubyBwcy1oLVt2YXIoLS1zdHVkaW8tY2VsbC1oZWlnaHQpXSBwcy1weC0yIHBzLXB5LTAgcHMtdy1mdWxsIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgIHtjdXJyZW50VmFsdWV9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1mbGV4LXdyYXAgcHMtZ2FwLTIgcHMtcC0yIHBzLW1pbi13LVt2YXIoLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItd2lkdGgpXSBwcy1tYXgtdy1bNTAwcHhdIHctZnVsbCBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLW92ZXJmbG93LXktc2Nyb2xsIHBzLW1heC1oLTMyXCI+XG4gICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAga2V5PXtvcHRpb259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQ6IG9wdGlvbiA9PT0gY3VycmVudFZhbHVlID8gXCJkZWZhdWx0XCIgOiBcIm91dGxpbmVcIiB9KX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZXRUb051bGwgfHwgcmVhZG9ubHl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbn1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25JbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSnNvbklucHV0KHByb3BzOiBKc29uSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gXCJcIiA6IEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZz4oaW5pdGlhbFZhbHVlKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uVmFsdWUgPSBjdXJyZW50VmFsdWUgPT09IFwiXCIgPyBudWxsIDogKEpTT04ucGFyc2UoY3VycmVudFZhbHVlKSBhcyBvYmplY3QpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGpzb25WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGpzb25WYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICByb3dzPXs1fVxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtYmFzZSBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2xhYmVsXCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNJbnB1dFByb3BzIHtcbiAgY29sdW1uOiBDb2x1bW47XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTnVtZXJpY0lucHV0KHByb3BzOiBOdW1lcmljSW5wdXRQcm9wcykge1xuICBjb25zdCB7IHZhbHVlLCBvblN1Ym1pdCwgY29sdW1uLCByZWFkb25seSB9ID0gcHJvcHM7XG4gIGNvbnN0IGlzTnVsbGFibGUgPSBjb2x1bW4ubnVsbGFibGUgPT09IHRydWU7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KHZhbHVlID09PSBudWxsID8gXCJcIiA6IFN0cmluZyh2YWx1ZSkpO1xuICBjb25zdCBbc2V0VG9OdWxsLCBzZXRTZXRUb051bGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwpO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2V0VG9OdWxsKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgb25TdWJtaXQobnVsbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gbnVtYmVyXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IE51bWJlcihjdXJyZW50VmFsdWUpO1xuXG4gICAgLy8gT25seSBzdWJtaXQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KG51bWVyaWNWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbY3VycmVudFZhbHVlLCB2YWx1ZSwgb25TdWJtaXQsIHNldFRvTnVsbF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICAvLyBSZXNldCB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgc2V0Q3VycmVudFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgc2V0U2V0VG9OdWxsKHZhbHVlID09PSBudWxsKTtcbiAgfTtcblxuICAvLyBVc2Ugb3VyIGhvb2sgdG8gZ2V0IGhhbmRsZXJzIHRoYXQgaW5jbHVkZSBwb3BvdmVyIGNsb3NpbmdcbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1pdGVtcy1jZW50ZXIgcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtZ2FwLTQgcHMtcHktMFwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cIm51bWVyaWMtaW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgTnVtZXJpY1xuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgcGF0dGVybj1cIlxcZCpcIlxuICAgICAgICAgIHZhbHVlPXtjdXJyZW50VmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1hcHBlYXJhbmNlLW5vbmUgcHMtdy1mdWxsIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1vdXRsaW5lLW5vbmUgcHMtc2hhZG93LW5vbmUgcHMtYmctdHJhbnNwYXJlbnQgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgc3RlcD1cImFueVwiXG4gICAgICAgICAgbGFuZz1cImVuX0VOXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhd0lucHV0UHJvcHMge1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgdmFsdWU6IHVua25vd247XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmF3SW5wdXQocHJvcHM6IFJhd0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyBvblN1Ym1pdCwgdmFsdWUsIHJlYWRvbmx5IH0gPSBwcm9wcztcblxuICBjb25zdCBpbml0aWFsVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHsgaGFuZGxlT25DaGFuZ2UsIHZhbHVlOiBpbnB1dFZhbHVlIH0gPSB1c2VJbnB1dCh7IGluaXRpYWxWYWx1ZSB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVPblN1Ym1pdChldmVudDogRm9ybUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChpbnB1dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sIFtpbnB1dFZhbHVlLCBpbml0aWFsVmFsdWUsIG9uU3VibWl0XSk7XG5cbiAgY29uc3QgY2FuY2VsQWN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3QgeyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfSA9IHVzZVBvcG92ZXJBY3Rpb25zKHtcbiAgICBvblNhdmU6IGhhbmRsZUlucHV0U3VibWl0LFxuICAgIG9uQ2FuY2VsOiBjYW5jZWxBY3Rpb24sXG4gICAgcmVhZG9ubHksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVPblN1Ym1pdH0+XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWNlbGwtaW5wdXQtbGVhZGluZyBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtc2hhZG93LW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTAgcHMtcmVzaXplLW5vbmUgcHMtcHgtW3ZhcigtLXN0dWRpby1jZWxsLXNwYWNpbmcpXVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZU9uQ2hhbmdlfVxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lSW5wdXQocHJvcHM6IFRpbWVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRpbWUgdmFsdWVzIGluIGEgaHVtYW4tcmVhZGFibGUgbWFubmVyXG4gIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFpbnB1dFZhbHVlLmluY2x1ZGVzKFwiOlwiKSkgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgIGNvbnN0IGhhc1RpbWV6b25lID0gL1srLV1cXGR7Mn0oOlxcZHsyfSk/JC8udGVzdChpbnB1dFZhbHVlKTtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhgMjAwMC0wMS0wMSAke2lucHV0VmFsdWV9YCk7XG4gICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KFwiaDptbSBBXCIpICsgKGhhc1RpbWV6b25lID8gYCAoJHtkYXRlLmZvcm1hdChcIlpcIil9KWAgOiBcIlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZVJlZ2V4ID0gLyhcXGR7MSwyfSk6KFxcZHsyfSk6KFxcZHsyfSkoPzpcXC5cXGQrKT8oWystXVxcZHsyfSg/OjpcXGR7Mn0pPyk/LztcbiAgICAgIGNvbnN0IG1hdGNoID0gaW5wdXRWYWx1ZS5tYXRjaCh0aW1lUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQobWF0Y2hbMV0gfHwgXCIxMlwiLCAxMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtYXRjaFsyXSB8fCBcIjAwXCI7XG4gICAgICAgIGNvbnN0IHR6T2Zmc2V0ID0gbWF0Y2hbNF0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgcGVyaW9kID0gaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG4gICAgICAgIGNvbnN0IGhvdXIxMiA9IGhvdXJzICUgMTIgPT09IDAgPyAxMiA6IGhvdXJzICUgMTI7XG5cbiAgICAgICAgcmV0dXJuIGAke2hvdXIxMn06JHttaW51dGVzfSAke3BlcmlvZH0ke3R6T2Zmc2V0ID8gYCAoJHt0ek9mZnNldH0pYCA6IFwiXCJ9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgICB9XG4gIH0sIFtpbnB1dFZhbHVlXSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvcm1hdHRlZCB2YWx1ZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtZm9udC1tb25vIHBzLXRleHQtZm9yZWdyb3VuZFwiPntmb3JtYXR0ZWRUaW1lfTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zIG9uU2F2ZT17aGFuZGxlU2F2ZX0gb25DYW5jZWw9e2hhbmRsZUNhbmNlbH0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IENvbHVtbkRlZiwgVGFibGUsIHVzZVJlYWN0VGFibGUgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudFR5cGUsIERpc3BhdGNoLCBTZXRTdGF0ZUFjdGlvbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5cbmltcG9ydCB7IHVzZUlzSW5zZXJ0aW5nIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmdcIjtcbmltcG9ydCB7IENlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvQ2VsbFwiO1xuaW1wb3J0IHsgRW1wdHlDZWxsIH0gZnJvbSBcIi4vY2VsbC9FbXB0eUNlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBXcml0ZWFibGVDZWxsIH0gZnJvbSBcIi4vY2VsbC9Xcml0ZWFibGVDZWxsXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIH0gZnJvbSBcIi4vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZ1wiO1xuaW1wb3J0IHsgZ2V0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC9nZXQtaW5wdXRcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgc3RhZ2VkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgc2V0U3RhZ2VkUm93czogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFN0YWdlZFJvd3MocHJvcHM6IFByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGU6IHBhcmVudFRhYmxlLCBzdGFnZWRSb3dzLCBzZXRTdGFnZWRSb3dzIH0gPSBwcm9wcztcbiAgY29uc3QgcmVhZG9ubHkgPSBCb29sZWFuKHVzZUlzSW5zZXJ0aW5nKCkpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVN0YWdlZFJvdyhyb3dJbmRleDogbnVtYmVyLCBwYXJ0aWFsUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgIHNldFN0YWdlZFJvd3MoKHByZXZSb3dzKSA9PiB7XG4gICAgICBjb25zdCBuZXdSb3dzID0gWy4uLnByZXZSb3dzXTtcbiAgICAgIG5ld1Jvd3Nbcm93SW5kZXhdID0geyAuLi5uZXdSb3dzW3Jvd0luZGV4XSwgLi4ucGFydGlhbFJvdyB9O1xuXG4gICAgICByZXR1cm4gbmV3Um93cztcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBPYmplY3QudmFsdWVzKHBhcmVudFRhYmxlLm9wdGlvbnMuY29sdW1ucykubWFwKChjb2x1bW4pID0+IHtcbiAgICBpZiAoY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgY2VsbCgpIHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gPEVtcHR5Q2VsbCAvPjtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8V3JpdGVhYmxlQ2VsbFxuICAgICAgICAgICAgY2VsbENvbXBvbmVudD17Z2V0Q2VsbCh7IGNlbGwsIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLCBwcm9wcyB9KX1cbiAgICAgICAgICAgIGlucHV0Q29tcG9uZW50PXtnZXRJbnB1dCh7XG4gICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLm1ldGEgYXMgQ29sdW1uLFxuICAgICAgICAgICAgICBvblN1Ym1pdCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YWdlZFJvdyhwcm9wcy5yb3dJbmRleCwgeyBbY29sdW1uLmlkIV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIGNvbnN0IHRhYmxlID0gdXNlUmVhY3RUYWJsZSh7XG4gICAgLi4ucGFyZW50VGFibGUub3B0aW9ucyxcbiAgICBjb2x1bW5zOiBjb2x1bW5EZWZzLFxuICAgIGVuYWJsZVNvcnRpbmc6IGZhbHNlLFxuICAgIG9uUGFnaW5hdGlvbkNoYW5nZTogdW5kZWZpbmVkLFxuICAgIG9uU29ydGluZ0NoYW5nZTogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHN0YWdlZFJvd3MsXG4gICAgc3RhdGU6IG9taXQocGFyZW50VGFibGUub3B0aW9ucy5zdGF0ZSwgW1wicGFnaW5hdGlvblwiLCBcInNvcnRpbmdcIl0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7dGFibGUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAgIDxUYWJsZVJvdyBrZXk9e2l9PlxuICAgICAgICAgIHtyb3cuZ2V0VmlzaWJsZUNlbGxzKCkubWFwKChjZWxsLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4gJiB7IHJvd0luZGV4OiBudW1iZXIgfT47XG4gICAgICAgICAgICAgIGNvbnN0IENlbGwgPSBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbChjZWxsLmdldENvbnRleHQoKSkgYXMgQ2VsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxDZWxsIGtleT17an0gey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX0gcm93SW5kZXg9e2l9IC8+O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IFRhYmxlMiB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgU2VsZWN0LCBTZWxlY3RDb250ZW50LCBTZWxlY3RJdGVtLCBTZWxlY3RUcmlnZ2VyLCBTZWxlY3RWYWx1ZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL3NlbGVjdFwiO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9za2VsZXRvblwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZVwiO1xuaW1wb3J0IHsgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2UtaW50cm9zcGVjdGlvblwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5cbnR5cGUgTmF2aWdhdGlvblByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvbih7IGNsYXNzTmFtZSB9OiBOYXZpZ2F0aW9uUHJvcHMpIHtcbiAgLy8gVXNlIHRoZSBjdXN0b20gaG9vayB0byBnZXQgYWxsIG5lY2Vzc2FyeSBzdGF0ZSBhbmQgaGFuZGxlcnNcbiAgY29uc3QgeyB0YWJsZXMsIGFjdGl2ZVRhYmxlLCBpc0xvYWRpbmcsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuXG4gIGNvbnN0IHNpZGVCYXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctNDggcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtMCBwcy10ZXh0LWNhcmQtZm9yZWdyb3VuZCBwcy1zaGFkb3cteHNcIixcbiAgICBjbGFzc05hbWUsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c2lkZUJhckNsYXNzZXN9PlxuICAgICAgPE5hdmlnYXRpb24uU2NoZW1hU2VsZWN0b3IgLz5cblxuICAgICAgPE5hdmlnYXRpb24uQmxvY2sgbGFiZWw9XCJUYWJsZXNcIj5cbiAgICAgICAge3RhYmxlcy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgIHRhYmxlcy5tYXAoKHRhYmxlKSA9PiAoXG4gICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtXG4gICAgICAgICAgICAgIGtleT17YCR7dGFibGUuc2NoZW1hfS0ke3RhYmxlLm5hbWV9YH1cbiAgICAgICAgICAgICAgYXNDaGlsZFxuICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlVGFibGUgPT09IHRhYmxlfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGFibGVDaGFuZ2UodGFibGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Bwcy1weS0xIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzIHBzLXRleHQtZm9yZWdyb3VuZC82MCBob3Zlcjpwcy10ZXh0LWZvcmVncm91bmQgcHMtdHJhbnNpdGlvbi1hbGwgcHMtY3Vyc29yLXBvaW50ZXIgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWJnLXNsYXRlLTIwMCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtZm9yZWdyb3VuZCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtdGV4dC1mb3JlZ3JvdW5kYH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGEgaHJlZj17YCN0YWJsZT0ke3RhYmxlLm5hbWV9JnNjaGVtYT0ke3RhYmxlLnNjaGVtYX1gfT57dGFibGUubmFtZX08L2E+XG4gICAgICAgICAgICA8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApIDogaXNMb2FkaW5nID8gKFxuICAgICAgICAgIEFycmF5KDQpXG4gICAgICAgICAgICAuZmlsbChudWxsKVxuICAgICAgICAgICAgLm1hcCgoXywgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPE5hdmlnYXRpb24uSXRlbSBrZXk9e2luZGV4fSB3cmFwQ2hpbGRyZW5JblNwYW49e2ZhbHNlfT5cbiAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC0zIHBzLXctZnVsbFwiIC8+XG4gICAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICAgKSlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtPk5vIHRhYmxlcyBmb3VuZDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICApfVxuICAgICAgPC9OYXZpZ2F0aW9uLkJsb2NrPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5jb25zdCBCbG9jayA9ICh7IGNsYXNzTmFtZSwgbGFiZWwsIGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4gJiB7IGxhYmVsOiBzdHJpbmcgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHsuLi5wcm9wc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xIHBzLXB0LTQgcHMtcGItMiBwcy1weC00IHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy1zbGF0ZS01MC81MCBwcy1iYWNrZHJvcC1ibHVyLXNtXCI+XG4gICAgICAgIDxUYWJsZTIgc2l6ZT17MTZ9IGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MFwiIC8+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtXCI+e2xhYmVsfTwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuYXYgYXJpYS1sYWJlbD17bGFiZWx9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLXB4IHBzLXBiLTMgcHMtcC0yXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvbmF2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgSXRlbSA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgYXNDaGlsZCA9IGZhbHNlLFxuICBpc0FjdGl2ZSxcbiAgc2l6ZSxcbiAgY2hpbGRyZW4sXG4gIHdyYXBDaGlsZHJlbkluU3BhbiA9IHRydWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImJ1dHRvblwiPiAmIHtcbiAgYXNDaGlsZD86IGJvb2xlYW47XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgc2l6ZT86IFwiZGVmYXVsdFwiIHwgXCJzbVwiO1xuICB3cmFwQ2hpbGRyZW5JblNwYW4/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuXG4gIHJldHVybiAoXG4gICAgPENvbXBcbiAgICAgIGRhdGEtc2lkZWJhcj1cIm1lbnUtYnV0dG9uXCJcbiAgICAgIGRhdGEtc2l6ZT17c2l6ZX1cbiAgICAgIGRhdGEtYWN0aXZlPXtpc0FjdGl2ZX1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcHktMS41IHBzLXB4LTIgcHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy1yb3VuZGVkLW1kIHBzLWZsZXggcHMtZ2FwLTIgcHMtaXRlbXMtY2VudGVyIHBzLWJvcmRlciBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctdHJhbnNwYXJlbnRcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7d3JhcENoaWxkcmVuSW5TcGFuID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtdHJ1bmNhdGVcIj57Y2hpbGRyZW59PC9zcGFuPiA6IGNoaWxkcmVufVxuICAgIDwvQ29tcD5cbiAgKTtcbn07XG5cbmNvbnN0IFNjaGVtYVNlbGVjdG9yID0gKCkgPT4ge1xuICAvLyBHZXQgc2NoZW1hcyBmcm9tIGludHJvc3BlY3Rpb24gYW5kIGFjdGl2ZSBzY2hlbWEgbWFuYWdlbWVudFxuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGlzTG9hZGluZzogaXNJbnRyb3NwZWN0aW9uTG9hZGluZyB9ID0gdXNlSW50cm9zcGVjdGlvbigpO1xuICBjb25zdCB7IGFjdGl2ZVNjaGVtYSwgaGFuZGxlU2NoZW1hQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuXG4gIC8vIEV4dHJhY3Qgc2NoZW1hIG5hbWVzIGZyb20gaW50cm9zcGVjdGlvbiBkYXRhXG4gIGNvbnN0IHNjaGVtYU5hbWVzID0gT2JqZWN0LmtleXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzIHx8IHt9KTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgIDxTZWxlY3QgdmFsdWU9e2FjdGl2ZVNjaGVtYX0gb25WYWx1ZUNoYW5nZT17aGFuZGxlU2NoZW1hQ2hhbmdlfT5cbiAgICAgICAgPFNlbGVjdFRyaWdnZXIgY2xhc3NOYW1lPVwicHMtdGV4dC14c1wiIGxhYmVsPVwiU2NoZW1hXCI+XG4gICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHNjaGVtYVwiIC8+XG4gICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgPFNlbGVjdENvbnRlbnQ+XG4gICAgICAgICAge2lzSW50cm9zcGVjdGlvbkxvYWRpbmcgPyAoXG4gICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxvYWRpbmdcIj5Mb2FkaW5nIHNjaGVtYXMuLi48L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgKSA6IHNjaGVtYU5hbWVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICBzY2hlbWFOYW1lcy5tYXAoKHNjaGVtYSkgPT4gKFxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSBrZXk9e3NjaGVtYX0gdmFsdWU9e3NjaGVtYX0gY2xhc3NOYW1lPVwicHMtdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgIHtzY2hlbWF9XG4gICAgICAgICAgICAgIDwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwibm8tc2NoZW1hc1wiPk5vIHNjaGVtYXMgZm91bmQ8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgPC9TZWxlY3Q+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5OYXZpZ2F0aW9uLkJsb2NrID0gQmxvY2s7XG5OYXZpZ2F0aW9uLkl0ZW0gPSBJdGVtO1xuTmF2aWdhdGlvbi5TY2hlbWFTZWxlY3RvciA9IFNjaGVtYVNlbGVjdG9yO1xuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGtleU1hcCwgdXNlUXVlcnlTdGF0ZSwgdXNlUXVlcnlTdGF0ZXMgfSBmcm9tIFwiLi9udXFzXCI7XG5pbXBvcnQgeyBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCwgdXNlSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuL3VzZS1pbnRyb3NwZWN0aW9uXCI7XG5cbi8qKlxuICogSG9vayB0byBlbmNhcHN1bGF0ZSBhbGwgbG9naWMgZm9yIG1hbmFnaW5nIHRoZSBhY3RpdmUgdGFibGUgc2VsZWN0aW9uLlxuICogSGFuZGxlcyBzeW5jaW5nIHdpdGggVVJMIHBhcmFtcywgZGVmYXVsdCBzZWxlY3Rpb24sIGFuZCBleHBvc2VzIGEgc2ltcGxlIEFQSSBmb3IgY29uc3VtZXJzLlxuICogU2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoaW4gU3R1ZGlvIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIGFjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlU2NoZW1hLCBhZGFwdGVyLCBlbWl0VGVsZW1ldHJ5RXZlbnQgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGRhdGFVcGRhdGVkQXQgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgaXNMb2FkaW5nID0gZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQ7XG5cbiAgY29uc3QgW3RhYmxlQW5kU2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYV0gPSB1c2VRdWVyeVN0YXRlcyhcbiAgICBrZXlNYXAoe1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgfHwgYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgfHwgYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwicHVibGljXCIsXG4gICAgICB9LFxuICAgIH0pLFxuICApO1xuXG4gIC8vIEFkZCBxdWVyeSBzdGF0ZSBmb3IgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXNcbiAgY29uc3QgWywgc2V0UGFnZVBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJwYWdlSW5kZXhcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuICBjb25zdCBbLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInNvcnRcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIEdldCBhbGwgdGFibGVzIGZvciB0aGUgY3VycmVudCBzY2hlbWEgZnJvbSBVUkwgb3IgZGVmYXVsdFxuICBjb25zdCB0YWJsZXM6IFRhYmxlW10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAvLyBBbHdheXMgdXNlIHRoZSBhY3RpdmVTY2hlbWEgZnJvbSBjb250ZXh0XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzW2FjdGl2ZVNjaGVtYV0/LnRhYmxlcyB8fCB7fSk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXMsIGFjdGl2ZVNjaGVtYV0pO1xuXG4gIC8vIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgdGFibGVzIGFjcm9zcyBhbGwgc2NoZW1hc1xuICBjb25zdCB0b3RhbFRhYmxlQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXMpLnJlZHVjZSgoc3VtLCBzY2hlbWEpID0+IHtcbiAgICAgIHJldHVybiBzdW0gKyBPYmplY3Qua2V5cyhzY2hlbWEudGFibGVzKS5sZW5ndGg7XG4gICAgfSwgMCk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXNdKTtcblxuICBjb25zdCBbZmlyc3RUYWJsZV0gPSB0YWJsZXM7XG5cbiAgLy8gRWZmZWN0IHRvIHN5bmMgYWN0aXZlIHRhYmxlIHdpdGggVVJMIHBhcmFtIGFuZCBkZWZhdWx0c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmcpIHJldHVybjtcbiAgICAvLyBJZiBzY2hlbWEgYW5kIHRhYmxlIHBhcmFtcyBpbiBVUkwsIHRyeSB0byBzZXQgdGhhdCB0YWJsZVxuICAgIGlmICh0YWJsZUFuZFNjaGVtYT8udGFibGUgJiYgdGFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIExvb2sgZm9yIGEgdGFibGUgdGhhdCBtYXRjaGVzIGJvdGggbmFtZSBhbmQgc2NoZW1hIGZyb20gVVJMIHBhcmFtc1xuICAgICAgY29uc3QgdGFibGVGcm9tUGFyYW0gPSB0YWJsZXMuZmluZCgodCkgPT4gdC5uYW1lID09PSB0YWJsZUFuZFNjaGVtYS50YWJsZSAmJiB0LnNjaGVtYSA9PT0gYWN0aXZlU2NoZW1hKTtcblxuICAgICAgaWYgKHRhYmxlRnJvbVBhcmFtKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKHRhYmxlRnJvbVBhcmFtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiBubyBzY2hlbWEvdGFibGUgcGFyYW1zIG9yIG5vdCBmb3VuZCwgc2V0IGZpcnN0IHRhYmxlIGFzIGRlZmF1bHRcbiAgICBpZiAodGFibGVzLmxlbmd0aCA+IDAgJiYgIWFjdGl2ZVRhYmxlKSB7XG4gICAgICBzZXRBY3RpdmVUYWJsZShmaXJzdFRhYmxlIHx8IG51bGwpO1xuICAgICAgaWYgKGZpcnN0VGFibGUpIHtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBmaXJzdFRhYmxlLm5hbWUsIHNjaGVtYTogYWN0aXZlU2NoZW1hIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzTG9hZGluZywgdGFibGVBbmRTY2hlbWEsIHRhYmxlcywgZmlyc3RUYWJsZSwgYWN0aXZlVGFibGUsIGFjdGl2ZVNjaGVtYSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hXSk7XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgYWN0aXZlIHRhYmxlIGFuZCB1cGRhdGUgdGhlIFVSTCBwYXJhbS5cbiAgICogQWxzbyBjbGVhcnMgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlVGFibGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VGFibGU6IFRhYmxlKSA9PiB7XG4gICAgICBpZiAoYWN0aXZlVGFibGUgIT09IG5ld1RhYmxlKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKG5ld1RhYmxlKTtcbiAgICAgICAgLy8gRW5zdXJlIGJvdGggdGFibGUgYW5kIHNjaGVtYSBhcmUgYWx3YXlzIGluY2x1ZGVkIGluIHRoZSBVUkxcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7XG4gICAgICAgICAgdGFibGU6IG5ld1RhYmxlLm5hbWUsXG4gICAgICAgICAgc2NoZW1hOiBuZXdUYWJsZS5zY2hlbWEsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBVcGRhdGUgYWN0aXZlIHNjaGVtYSB0byBtYXRjaCB0aGUgdGFibGUncyBzY2hlbWFcbiAgICAgICAgaWYgKGFjdGl2ZVNjaGVtYSAhPT0gbmV3VGFibGUuc2NoZW1hKSB7XG4gICAgICAgICAgc2V0QWN0aXZlU2NoZW1hKG5ld1RhYmxlLnNjaGVtYSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2xlYXIgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzXG4gICAgICAgIHZvaWQgc2V0UGFnZVBhcmFtKG51bGwpO1xuICAgICAgICB2b2lkIHNldFNvcnRQYXJhbShudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFthY3RpdmVUYWJsZSwgYWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVUYWJsZSwgc2V0QWN0aXZlU2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYSwgc2V0UGFnZVBhcmFtLCBzZXRTb3J0UGFyYW1dLFxuICApO1xuXG4gIC8vIEhhbmRsZSBzY2hlbWEgY2hhbmdlXG4gIGNvbnN0IGhhbmRsZVNjaGVtYUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdTY2hlbWE6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKG5ld1NjaGVtYSAhPT0gYWN0aXZlU2NoZW1hKSB7XG4gICAgICAgIHNldEFjdGl2ZVNjaGVtYShuZXdTY2hlbWEpO1xuICAgICAgICB2b2lkIHNldFRhYmxlQW5kU2NoZW1hKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBzY2hlbWE6IG5ld1NjaGVtYSB9KSk7XG5cbiAgICAgICAgLy8gSWYgYWN0aXZlIHRhYmxlIGlzIG5vdCBpbiB0aGUgbmV3IHNjaGVtYSwgY2xlYXIgaXRcbiAgICAgICAgaWYgKGFjdGl2ZVRhYmxlICYmIGFjdGl2ZVRhYmxlLnNjaGVtYSAhPT0gbmV3U2NoZW1hKSB7XG4gICAgICAgICAgc2V0QWN0aXZlVGFibGUobnVsbCk7XG4gICAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSgocHJldikgPT4gKHsgLi4ucHJldiwgdGFibGU6IG51bGwgfSkpO1xuICAgICAgICAgIHZvaWQgc2V0UGFnZVBhcmFtKG51bGwpO1xuICAgICAgICAgIHZvaWQgc2V0U29ydFBhcmFtKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbYWN0aXZlU2NoZW1hLCBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVUYWJsZSwgc2V0VGFibGVBbmRTY2hlbWEsIHNldFBhZ2VQYXJhbSwgc2V0U29ydFBhcmFtXSxcbiAgKTtcblxuICAvLyBTeW5jIFVSTCBzY2hlbWEgcGFyYW1ldGVyIHdpdGggYWN0aXZlU2NoZW1hIGZyb20gY29udGV4dFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIE9ubHkgdXBkYXRlIFVSTCBpZiB0aGUgc2NoZW1hIGZyb20gVVJMIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhY3RpdmVTY2hlbWFcbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnNjaGVtYSAhPT0gYWN0aXZlU2NoZW1hICYmICFpc0xvYWRpbmcpIHtcbiAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoKHByZXYpID0+ICh7IC4uLnByZXYsIHNjaGVtYTogYWN0aXZlU2NoZW1hIH0pKTtcbiAgICB9XG4gIH0sIFthY3RpdmVTY2hlbWEsIHRhYmxlQW5kU2NoZW1hPy5zY2hlbWEsIHNldFRhYmxlQW5kU2NoZW1hLCBpc0xvYWRpbmddKTtcblxuICAvLyBFbnN1cmUgc2NoZW1hIHBhcmFtIGV4aXN0cyBpbiBVUkwgb24gaW5pdGlhbCBsb2FkXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gSWYgc2NoZW1hIHBhcmFtIGlzIG1pc3NpbmcsIGVtcHR5IHN0cmluZywgb3IgZW1wdHksIGFkZCBpdCB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlXG4gICAgaWYgKCghdGFibGVBbmRTY2hlbWE/LnNjaGVtYSB8fCB0YWJsZUFuZFNjaGVtYS5zY2hlbWEgPT09IFwiXCIpICYmICFpc0xvYWRpbmcpIHtcbiAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoKHByZXYpID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIHNjaGVtYTogYWN0aXZlU2NoZW1hLFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwgW2lzTG9hZGluZywgdGFibGVBbmRTY2hlbWE/LnNjaGVtYSwgYWN0aXZlU2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYV0pO1xuXG4gIC8vIFN5bmMgYWN0aXZlU2NoZW1hIGluIGNvbnRleHQgd2l0aCBVUkwgc2NoZW1hIHBhcmFtZXRlclxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFVwZGF0ZSB0aGUgYWN0aXZlU2NoZW1hIGluIGNvbnRleHQgd2hlbiBVUkwgc2NoZW1hIHBhcmFtIGNoYW5nZXNcbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnNjaGVtYSAmJiB0YWJsZUFuZFNjaGVtYS5zY2hlbWEgIT09IGFjdGl2ZVNjaGVtYSkge1xuICAgICAgc2V0QWN0aXZlU2NoZW1hKHRhYmxlQW5kU2NoZW1hLnNjaGVtYSk7XG4gICAgfVxuICB9LCBbdGFibGVBbmRTY2hlbWE/LnNjaGVtYSwgYWN0aXZlU2NoZW1hLCBzZXRBY3RpdmVTY2hlbWFdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkYXRhVXBkYXRlZEF0ICE9PSAtMSkge1xuICAgICAgZW1pdFRlbGVtZXRyeUV2ZW50KHtcbiAgICAgICAgZXZlbnQ6IFwic3R1ZGlvX2xhdW5jaGVkXCIsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICBldmVudF9pZDogdXVpZHY0KCksXG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgdGFibGVfY291bnQ6IHRvdGFsVGFibGVDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3RhYmxlcywgZW1pdFRlbGVtZXRyeUV2ZW50LCBkYXRhVXBkYXRlZEF0LCB0b3RhbFRhYmxlQ291bnRdKTtcblxuICByZXR1cm4ge1xuICAgIHRhYmxlcyxcbiAgICBhY3RpdmVUYWJsZSxcbiAgICBhY3RpdmVTY2hlbWEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGhhbmRsZVRhYmxlQ2hhbmdlLFxuICAgIGhhbmRsZVNjaGVtYUNoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA9IC0xO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW50cm9zcGVjdGlvbigpIHtcbiAgY29uc3QgeyBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIGluaXRpYWxEYXRhOiB7XG4gICAgICBzY2hlbWFzOiB7XG4gICAgICAgIFthZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJkYlwiXToge1xuICAgICAgICAgIHRhYmxlczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGltZXpvbmU6IFwiVVRDXCIsXG4gICAgICBmaWx0ZXJPcGVyYXRvcnM6IFtdLFxuICAgIH0gc2F0aXNmaWVzIEludHJvc3BlY3Rpb24sXG4gICAgaW5pdGlhbERhdGFVcGRhdGVkQXQ6IElOSVRJQUxfREFUQV9VUERBVEVEX0FULFxuICAgIHF1ZXJ5Rm46IGFzeW5jICh7IHNpZ25hbCB9KSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIGludHJvc3BlY3Rpb25dID0gYXdhaXQgYWRhcHRlci5pbnRyb3NwZWN0KHsgYWJvcnRTaWduYWw6IHNpZ25hbCB9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW50cm9zcGVjdGlvbjtcbiAgICB9LFxuICAgIHF1ZXJ5S2V5OiBbXCJpbnRyb3NwZWN0aW9uXCJdLFxuICAgIC8vIGlmIGlzIGluaXRpYWwgZGF0YSwgcmVmZXRjaCBpbW1lZGlhdGVseSwgb3RoZXJ3aXNlLCBuZXZlciByZWZldGNoIGF1dG9tYXRpY2FsbHkgaW4gdGhlIGJhY2tncm91bmQuXG4gICAgLy8gd2UgY2FuIHN0aWxsIHJlZmV0Y2ggbWFudWFsbHkgdXNpbmcgdGhlIHF1ZXJ5IGNsaWVudCAtIHByb2JhYmx5IHRyaWdnZXJlZCBieSBhIGJ1dHRvbi5cbiAgICBzdGFsZVRpbWU6IChjdHgpID0+IChjdHguc3RhdGUuZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQgPyAwIDogSW5maW5pdHkpLFxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI0TUFBQSxPQUFTLG1CQUFBQSxHQUFpQixVQUFBQyxPQUFjLGVDQ3hDLE9BQTBCLFFBQUFDLE9BQVksT0NxQnRDLElBQU1DLEdBQXVCLElBRWhCQyxHQUF5QkMsR0FBeUIsQ0FDM0QsSUFBTUMsRUFBV0MsR0FBZUYsQ0FBTSxFQUNoQyxDQUFFRyx1QkFBQUEsRUFBd0JDLCtCQUFBQSxDQUFnQyxFQUFHSixFQTBCbkUsTUFBTyxDQUNISyxnQkF6QnFCQyxHQUFxQixDQUMxQyxJQUFNQyxFQUFhRCxFQUFVRSxNQUFNVixFQUFvQixFQUd2RCxPQUFJUyxFQUFXLENBQUMsSUFBTSxJQUFNQSxFQUFXRSxTQUFXLEdBQzlDRixFQUFXRyxNQUFLLEVBR2JDLEdBQWtCSixFQUFZTixDQUFRLEdBQUtXLEdBQStCTixDQUFTLENBQzlGLEVBaUJJTyw0QkFmZ0NBLENBQ2hDQyxFQUNBQyxJQUNBLENBQ0EsSUFBTUMsRUFBWWIsRUFBdUJXLENBQVksR0FBSyxDQUFBLEVBRTFELE9BQUlDLEdBQXNC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U0FBQUosR0FDQ1YsR0FBQ2UsR0FBTyxJQUFQLENBQ0MsUUFBUyxDQUFFLE1BQU8sRUFBRyxRQUFTLENBQUUsRUFDaEMsUUFBUyxDQUFFLE1BQU8sT0FBUSxRQUFTLENBQUUsRUFDckMsS0FBTSxDQUFFLE1BQU8sRUFBRyxRQUFTLENBQUUsRUFDN0IsV0FBWSxDQUFFLFNBQVUsR0FBSyxFQUU3QixTQUFBZixHQUFDZ0IsR0FBQSxFQUFXLEVBQ2QsRUFFSixFQUVBaEIsR0FBQ2UsR0FBTyxJQUFQLENBQ0MsVUFBVSw2SUFDVixXQUFZLENBQUUsU0FBVSxHQUFLLEVBRTdCLFNBQUFmLEdBQUNpQixHQUFBLEVBQWdCLEVBQ25CLEdBQ0YsRUFDRixDQUVKIiwKICAibmFtZXMiOiBbIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiY2xzeCIsICJDTEFTU19QQVJUX1NFUEFSQVRPUiIsICJjcmVhdGVDbGFzc0dyb3VwVXRpbHMiLCAiY29uZmlnIiwgImNsYXNzTWFwIiwgImNyZWF0ZUNsYXNzTWFwIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cHMiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIiwgImdldENsYXNzR3JvdXBJZCIsICJjbGFzc05hbWUiLCAiY2xhc3NQYXJ0cyIsICJzcGxpdCIsICJsZW5ndGgiLCAic2hpZnQiLCAiZ2V0R3JvdXBSZWN1cnNpdmUiLCAiZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5IiwgImdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyIsICJjbGFzc0dyb3VwSWQiLCAiaGFzUG9zdGZpeE1vZGlmaWVyIiwgImNvbmZsaWN0cyIsICJjbGFzc1BhcnRPYmplY3QiLCAiY3VycmVudENsYXNzUGFydCIsICJuZXh0Q2xhc3NQYXJ0T2JqZWN0IiwgIm5leHRQYXJ0IiwgImdldCIsICJjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQiLCAic2xpY2UiLCAidW5kZWZpbmVkIiwgInZhbGlkYXRvcnMiLCAiY2xhc3NSZXN0IiwgImpvaW4iLCAiZmluZCIsICJ2YWxpZGF0b3IiLCAiYXJiaXRyYXJ5UHJvcGVydHlSZWdleCIsICJ0ZXN0IiwgImFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lIiwgImV4ZWMiLCAicHJvcGVydHkiLCAic3Vic3RyaW5nIiwgImluZGV4T2YiLCAidGhlbWUiLCAicHJlZml4IiwgIk1hcCIsICJwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzIiwgImdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMiLCAiT2JqZWN0IiwgImVudHJpZXMiLCAiY2xhc3NHcm91cHMiLCAiZm9yRWFjaCIsICJjbGFzc0dyb3VwIiwgInByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkiLCAiY2xhc3NEZWZpbml0aW9uIiwgImNsYXNzUGFydE9iamVjdFRvRWRpdCIsICJnZXRQYXJ0IiwgImlzVGhlbWVHZXR0ZXIiLCAicHVzaCIsICJrZXkiLCAicGF0aCIsICJjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0IiwgInBhdGhQYXJ0IiwgImhhcyIsICJzZXQiLCAiZnVuYyIsICJjbGFzc0dyb3VwRW50cmllcyIsICJtYXAiLCAicHJlZml4ZWRDbGFzc0dyb3VwIiwgImZyb21FbnRyaWVzIiwgInZhbHVlIiwgImNyZWF0ZUxydUNhY2hlIiwgIm1heENhY2hlU2l6ZSIsICJjYWNoZVNpemUiLCAiY2FjaGUiLCAicHJldmlvdXNDYWNoZSIsICJ1cGRhdGUiLCAiSU1QT1JUQU5UX01PRElGSUVSIiwgImNyZWF0ZVBhcnNlQ2xhc3NOYW1lIiwgInNlcGFyYXRvciIsICJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsICJpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciIsICJmaXJzdFNlcGFyYXRvckNoYXJhY3RlciIsICJzZXBhcmF0b3JMZW5ndGgiLCAicGFyc2VDbGFzc05hbWUiLCAibW9kaWZpZXJzIiwgImJyYWNrZXREZXB0aCIsICJtb2RpZmllclN0YXJ0IiwgInBvc3RmaXhNb2RpZmllclBvc2l0aW9uIiwgImluZGV4IiwgImN1cnJlbnRDaGFyYWN0ZXIiLCAiYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciIsICJoYXNJbXBvcnRhbnRNb2RpZmllciIsICJzdGFydHNXaXRoIiwgImJhc2VDbGFzc05hbWUiLCAibWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiIsICJzb3J0TW9kaWZpZXJzIiwgInNvcnRlZE1vZGlmaWVycyIsICJ1bnNvcnRlZE1vZGlmaWVycyIsICJtb2RpZmllciIsICJzb3J0IiwgImNyZWF0ZUNvbmZpZ1V0aWxzIiwgIlNQTElUX0NMQVNTRVNfUkVHRVgiLCAibWVyZ2VDbGFzc0xpc3QiLCAiY2xhc3NMaXN0IiwgImNvbmZpZ1V0aWxzIiwgImNsYXNzR3JvdXBzSW5Db25mbGljdCIsICJjbGFzc05hbWVzIiwgInRyaW0iLCAicmVzdWx0IiwgIm9yaWdpbmFsQ2xhc3NOYW1lIiwgIkJvb2xlYW4iLCAidmFyaWFudE1vZGlmaWVyIiwgIm1vZGlmaWVySWQiLCAiY2xhc3NJZCIsICJpbmNsdWRlcyIsICJjb25mbGljdEdyb3VwcyIsICJpIiwgImdyb3VwIiwgInR3Sm9pbiIsICJhcmd1bWVudCIsICJyZXNvbHZlZFZhbHVlIiwgInN0cmluZyIsICJhcmd1bWVudHMiLCAidG9WYWx1ZSIsICJtaXgiLCAiayIsICJjcmVhdGVUYWlsd2luZE1lcmdlIiwgImNyZWF0ZUNvbmZpZ0ZpcnN0IiwgImNyZWF0ZUNvbmZpZ1Jlc3QiLCAiY2FjaGVHZXQiLCAiY2FjaGVTZXQiLCAiZnVuY3Rpb25Ub0NhbGwiLCAiaW5pdFRhaWx3aW5kTWVyZ2UiLCAicmVkdWNlIiwgInByZXZpb3VzQ29uZmlnIiwgImNyZWF0ZUNvbmZpZ0N1cnJlbnQiLCAidGFpbHdpbmRNZXJnZSIsICJjYWNoZWRSZXN1bHQiLCAiYXBwbHkiLCAiZnJvbVRoZW1lIiwgInRoZW1lR2V0dGVyIiwgImFyYml0cmFyeVZhbHVlUmVnZXgiLCAiZnJhY3Rpb25SZWdleCIsICJzdHJpbmdMZW5ndGhzIiwgIlNldCIsICJ0c2hpcnRVbml0UmVnZXgiLCAibGVuZ3RoVW5pdFJlZ2V4IiwgImNvbG9yRnVuY3Rpb25SZWdleCIsICJzaGFkb3dSZWdleCIsICJpbWFnZVJlZ2V4IiwgImlzTGVuZ3RoIiwgImlzTnVtYmVyIiwgImlzQXJiaXRyYXJ5TGVuZ3RoIiwgImdldElzQXJiaXRyYXJ5VmFsdWUiLCAiaXNMZW5ndGhPbmx5IiwgIk51bWJlciIsICJpc05hTiIsICJpc0FyYml0cmFyeU51bWJlciIsICJpc0ludGVnZXIiLCAiaXNQZXJjZW50IiwgImVuZHNXaXRoIiwgImlzQXJiaXRyYXJ5VmFsdWUiLCAiaXNUc2hpcnRTaXplIiwgInNpemVMYWJlbHMiLCAiaXNBcmJpdHJhcnlTaXplIiwgImlzTmV2ZXIiLCAiaXNBcmJpdHJhcnlQb3NpdGlvbiIsICJpbWFnZUxhYmVscyIsICJpc0FyYml0cmFyeUltYWdlIiwgImlzSW1hZ2UiLCAiaXNBcmJpdHJhcnlTaGFkb3ciLCAiaXNTaGFkb3ciLCAiaXNBbnkiLCAibGFiZWwiLCAidGVzdFZhbHVlIiwgImdldERlZmF1bHRDb25maWciLCAiY29sb3JzIiwgImZyb21UaGVtZSIsICJzcGFjaW5nIiwgImJsdXIiLCAiYnJpZ2h0bmVzcyIsICJib3JkZXJDb2xvciIsICJib3JkZXJSYWRpdXMiLCAiYm9yZGVyU3BhY2luZyIsICJib3JkZXJXaWR0aCIsICJjb250cmFzdCIsICJncmF5c2NhbGUiLCAiaHVlUm90YXRlIiwgImludmVydCIsICJnYXAiLCAiZ3JhZGllbnRDb2xvclN0b3BzIiwgImdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zIiwgImluc2V0IiwgIm1hcmdpbiIsICJvcGFjaXR5IiwgInBhZGRpbmciLCAic2F0dXJhdGUiLCAic2NhbGUiLCAic2VwaWEiLCAic2tldyIsICJzcGFjZSIsICJ0cmFuc2xhdGUiLCAiZ2V0T3ZlcnNjcm9sbCIsICJnZXRPdmVyZmxvdyIsICJnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkiLCAiaXNBcmJpdHJhcnlWYWx1ZSIsICJnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSIsICJnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkiLCAiaXNMZW5ndGgiLCAiaXNBcmJpdHJhcnlMZW5ndGgiLCAiZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkiLCAiaXNOdW1iZXIiLCAiZ2V0UG9zaXRpb25zIiwgImdldExpbmVTdHlsZXMiLCAiZ2V0QmxlbmRNb2RlcyIsICJnZXRBbGlnbiIsICJnZXRaZXJvQW5kRW1wdHkiLCAiZ2V0QnJlYWtzIiwgImdldE51bWJlckFuZEFyYml0cmFyeSIsICJjYWNoZVNpemUiLCAic2VwYXJhdG9yIiwgInRoZW1lIiwgImlzQW55IiwgImlzVHNoaXJ0U2l6ZSIsICJpc1BlcmNlbnQiLCAiY2xhc3NHcm91cHMiLCAiYXNwZWN0IiwgImNvbnRhaW5lciIsICJjb2x1bW5zIiwgImJveCIsICJkaXNwbGF5IiwgImZsb2F0IiwgImNsZWFyIiwgImlzb2xhdGlvbiIsICJvYmplY3QiLCAib3ZlcmZsb3ciLCAib3ZlcnNjcm9sbCIsICJwb3NpdGlvbiIsICJzdGFydCIsICJlbmQiLCAidG9wIiwgInJpZ2h0IiwgImJvdHRvbSIsICJsZWZ0IiwgInZpc2liaWxpdHkiLCAieiIsICJpc0ludGVnZXIiLCAiYmFzaXMiLCAiZmxleCIsICJncm93IiwgInNocmluayIsICJvcmRlciIsICJjb2wiLCAic3BhbiIsICJyb3ciLCAianVzdGlmeSIsICJjb250ZW50IiwgIml0ZW1zIiwgInNlbGYiLCAicCIsICJweCIsICJweSIsICJwcyIsICJwZSIsICJwdCIsICJwciIsICJwYiIsICJwbCIsICJtIiwgIm14IiwgIm15IiwgIm1zIiwgIm1lIiwgIm10IiwgIm1yIiwgIm1iIiwgIm1sIiwgInciLCAic2NyZWVuIiwgImgiLCAic2l6ZSIsICJ0ZXh0IiwgImZvbnQiLCAiaXNBcmJpdHJhcnlOdW1iZXIiLCAidHJhY2tpbmciLCAibGVhZGluZyIsICJsaXN0IiwgInBsYWNlaG9sZGVyIiwgImRlY29yYXRpb24iLCAiaW5kZW50IiwgImFsaWduIiwgIndoaXRlc3BhY2UiLCAiYnJlYWsiLCAiaHlwaGVucyIsICJiZyIsICJpc0FyYml0cmFyeVBvc2l0aW9uIiwgInJlcGVhdCIsICJpc0FyYml0cmFyeVNpemUiLCAiaXNBcmJpdHJhcnlJbWFnZSIsICJmcm9tIiwgInZpYSIsICJ0byIsICJyb3VuZGVkIiwgImJvcmRlciIsICJkaXZpZGUiLCAib3V0bGluZSIsICJyaW5nIiwgInNoYWRvdyIsICJpc0FyYml0cmFyeVNoYWRvdyIsICJmaWx0ZXIiLCAidGFibGUiLCAiY2FwdGlvbiIsICJ0cmFuc2l0aW9uIiwgImR1cmF0aW9uIiwgImVhc2UiLCAiZGVsYXkiLCAiYW5pbWF0ZSIsICJ0cmFuc2Zvcm0iLCAicm90YXRlIiwgIm9yaWdpbiIsICJhY2NlbnQiLCAiYXBwZWFyYW5jZSIsICJjdXJzb3IiLCAiY2FyZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzbmFwIiwgInRvdWNoIiwgInNlbGVjdCIsICJmaWxsIiwgInN0cm9rZSIsICJzciIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBzIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyIsICJtZXJnZUNvbmZpZ3MiLCAiYmFzZUNvbmZpZyIsICJwcmVmaXgiLCAiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLCAiZXh0ZW5kIiwgIm92ZXJyaWRlIiwgIm92ZXJyaWRlUHJvcGVydHkiLCAiY29uZmlnS2V5IiwgIm92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyIsICJrZXkiLCAibWVyZ2VDb25maWdQcm9wZXJ0aWVzIiwgImJhc2VPYmplY3QiLCAib3ZlcnJpZGVLZXkiLCAib3ZlcnJpZGVWYWx1ZSIsICJ1bmRlZmluZWQiLCAib3ZlcnJpZGVPYmplY3QiLCAibWVyZ2VPYmplY3QiLCAibWVyZ2VWYWx1ZSIsICJjb25jYXQiLCAiZXh0ZW5kVGFpbHdpbmRNZXJnZSIsICJjb25maWdFeHRlbnNpb24iLCAiY3JlYXRlQ29uZmlnIiwgImNyZWF0ZVRhaWx3aW5kTWVyZ2UiLCAidHdNZXJnZSIsICJleHRlbmRUYWlsd2luZE1lcmdlIiwgImNuIiwgImlucHV0cyIsICJjbHN4IiwgInVzZUlzTXV0YXRpbmciLCAidG9LZWJhYkNhc2UiLCAic3RyaW5nIiwgIm1lcmdlQ2xhc3NlcyIsICJjbGFzc2VzIiwgImNsYXNzTmFtZSIsICJpbmRleCIsICJhcnJheSIsICJkZWZhdWx0QXR0cmlidXRlcyIsICJJY29uIiwgImZvcndhcmRSZWYiLCAiY29sb3IiLCAic2l6ZSIsICJzdHJva2VXaWR0aCIsICJhYnNvbHV0ZVN0cm9rZVdpZHRoIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJpY29uTm9kZSIsICJyZXN0IiwgInJlZiIsICJjcmVhdGVFbGVtZW50IiwgImRlZmF1bHRBdHRyaWJ1dGVzIiwgIm1lcmdlQ2xhc3NlcyIsICJ0YWciLCAiYXR0cnMiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJpY29uTmFtZSIsICJpY29uTm9kZSIsICJDb21wb25lbnQiLCAiZm9yd2FyZFJlZiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNyZWF0ZUVsZW1lbnQiLCAiSWNvbiIsICJtZXJnZUNsYXNzZXMiLCAidG9LZWJhYkNhc2UiLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFycm93VXBXaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hlY2siLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblJpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNMZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZUhlbHAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaXJjbGUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3B5IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ29ybmVyRG93bkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJGaWx0ZXIiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJHcmlwVmVydGljYWwiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJLZXlSb3VuZCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1heGltaXplIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWluaW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNb3ZlRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVVcCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBhbmVsTGVmdENsb3NlIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0T3BlbiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBpbk9mZiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBpbiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlJlZnJlc2hDdyIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlRhYmxlMiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlgiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJjdmEiLCAianN4IiwgImJhZGdlVmFyaWFudHMiLCAiY3ZhIiwgIkJhZGdlIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInByb3BzIiwgImNuIiwgIlNsb3QiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJidXR0b25WYXJpYW50cyIsICJjdmEiLCAiQnV0dG9uIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInNpemUiLCAiYXNDaGlsZCIsICJwcm9wcyIsICJyZWYiLCAiU2xvdCIsICJjbiIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIlBvcG92ZXJDb250ZW50IiwgImNsYXNzTmFtZSIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJqc3giLCAiY24iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnRQcm92aWRlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICIjY2xpZW50IiwgIiNvbmxpbmVNYW5hZ2VyIiwgIiNxdWVyeUZsYXZvciIsICIjdmVyc2lvbiIsICIjaXNNb3VudGVkIiwgIiNzdHlsZU5vbmNlIiwgIiNzaGFkb3dET01UYXJnZXQiLCAiI2J1dHRvblBvc2l0aW9uIiwgIiNwb3NpdGlvbiIsICIjaW5pdGlhbElzT3BlbiIsICIjZXJyb3JUeXBlcyIsICIjQ29tcG9uZW50IiwgIiNkaXNwb3NlIiwgImNvbmZpZyIsICJjbGllbnQiLCAicXVlcnlGbGF2b3IiLCAidmVyc2lvbiIsICJvbmxpbmVNYW5hZ2VyIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJjcmVhdGVTaWduYWwiLCAiaXNPcGVuIiwgImVsIiwgImRpc3Bvc2UiLCAicmVuZGVyIiwgIl9zZWxmJCIsICJidG5Qb3NpdGlvbiIsICJwb3MiLCAiZXJyb3JzIiwgInF1ZXJ5Q2xpZW50IiwgIkRldnRvb2xzIiwgImxhenkiLCAic2V0dXBTdHlsZVNoZWV0IiwgImNyZWF0ZUNvbXBvbmVudCIsICJtZXJnZVByb3BzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIiNvbkNsb3NlIiwgIm9uQ2xvc2UiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiYnV0dG9uUG9zaXRpb24iLCAicG9zaXRpb24iLCAiaW5pdGlhbElzT3BlbiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0IiwgIm9ubGluZU1hbmFnZXIiLCAidXNlUXVlcnlDbGllbnQiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgInByb3BzIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInJlZiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIm9ubGluZU1hbmFnZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzIiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgImNyZWF0ZUNvbnRleHQiLCAidXNlQ29udGV4dCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInRvYXN0IiwgIlNvbm5lciIsICJqc3giLCAiVG9hc3RlciIsICJwcm9wcyIsICJjcmVhdGVBZGFwdGVyUHJvdmlkZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZUhhc2hBZGFwdGVyIiwgInJhd0hhc2giLCAiaGFzaFBhcmFtcyIsICJzZXRIYXNoUGFyYW1zIiwgInVwZGF0ZVVybCIsICJ1cGRhdGVkIiwgImhpc3RvcnkiLCAicGF0aG5hbWUiLCAic2VhcmNoIiwgImhhc2giLCAidXJsIiwgImdldFNlYXJjaFBhcmFtc1NuYXBzaG90IiwgInJhdyIsICJoYW5kbGVIYXNoQ2hhbmdlIiwgIk51cXNIYXNoQWRhcHRlciIsICJqc3giLCAianN4cyIsICJxdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudCIsICJTdHVkaW9Db250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgInByb3BzIiwgImNoaWxkcmVuIiwgIm90aGVyUHJvcHMiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAidXNlU3RhdGUiLCAiYWN0aXZlU2NoZW1hIiwgInNldEFjdGl2ZVNjaGVtYSIsICJpc0Z1bGxzY3JlZW4iLCAic2V0SXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAic2V0SXNOYXZpZ2F0aW9uT3BlbiIsICJvbkVycm9yIiwgImVycm9yIiwgInRvYXN0IiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VNZW1vIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAicHJldiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzMiIsICJUb2FzdGVyIiwgIk51cXNIYXNoQWRhcHRlciIsICJ1c2VTdHVkaW8iLCAiY29udGV4dCIsICJ1c2VDb250ZXh0IiwgImdldFJvd0lkIiwgInJvdyIsICJ0YWJsZSIsICJpZCIsICJpbmZlclJvd0ZpbHRlciIsICJhZGRSb3dJZFRvUm93IiwgImFkZFJvd0lkVG9SZXN1bHQiLCAicmVzdWx0IiwgInJvd3MiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgImFkZFJvd0lkVG9SZXN1bHQiLCAibmV3RGF0YSIsICJvbGREYXRhIiwgInVzZVF1ZXJ5IiwgInVzZUFjdGl2ZVRhYmxlUXVlcnkiLCAicHJvcHMiLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNvcnRPcmRlciIsICJmaWx0ZXIiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAicHJldmlvdXNEYXRhIiwgInByZXZpb3VzUXVlcnkiLCAic2NoZW1hIiwgInRhYmxlIiwgInNpZ25hbCIsICJlcnJvciIsICJyZXN1bHRzIiwgImFkZFJvd0lkVG9SZXN1bHQiLCAiaXRlbSIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJ1c2VBY3RpdmVUYWJsZVVwZGF0ZSIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInF1ZXJ5S2V5UHJlZml4IiwgInVzZU11dGF0aW9uIiwgInBhcmFtcyIsICJlcnJvciIsICJyZXN1bHQiLCAiY2hhbmdlcyIsICJyb3ciLCAib3ZlcndyaXRlQ2FjaGVkUm93IiwgImNoYW5nZWRSb3ciLCAicm93RmlsdGVyIiwgImluZmVyUm93RmlsdGVyIiwgImNhY2hlZFJvdyIsICJjb2x1bW5OYW1lIiwgInZhbHVlIiwgIm9yaWdpbmFsVmFsdWVzIiwgImRldGFpbHMiLCAidW5jaGFuZ2VkUm93IiwgIl9fcHNfdXBkYXRlZF9hdF9fIiwgImdldEZpbmRlckZuIiwgInRhYmxlIiwgInVwZGF0ZXJGbiIsICJmaW5kZXIiLCAiY2FjaGVkUmVzdWx0IiwgImNhY2hlZFJvd3MiLCAiY2FjaGVkUm93SW5kZXgiLCAibmV3Um93IiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInNob3J0IiwgIm51cXNfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJ1c2VRdWVyeVN0YXRlIiwgInVzZVF1ZXJ5U3RhdGVzIiwgIl9fcmVFeHBvcnQiLCAibnVxc19leHBvcnRzIiwgIm51cXNfc3RhciIsICJ1c2VRdWVyeVN0YXRlT3JpZ2luYWwiLCAidXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJfQlJBTkRfU1lNQk9MIiwgInVzZVF1ZXJ5U3RhdGUiLCAia2V5IiwgIm9wdGlvbnMiLCAidXNlUXVlcnlTdGF0ZXMiLCAiZGVmYXVsdEZpbHRlciIsICJzaG9ydCIsICJjb3VudEZpbHRlcnNSZWN1cnNpdmUiLCAiZmlsdGVyR3JvdXAiLCAiY291bnQiLCAiZmlsdGVyIiwgInVzZUZpbHRlcmluZyIsICJmaWx0ZXJQYXJhbSIsICJzZXRGaWx0ZXJQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAidXNlTWVtbyIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VJc011dGF0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgIm11dGF0aW9uS2V5IiwgInVzZUNhbGxiYWNrIiwgIkRFRkFVTFRfUEFHRV9TSVpFIiwgInBhZ2luYXRpb25QYXJzZXJzIiwgInVzZVBhZ2luYXRpb24iLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNldFBhZ2luYXRpb24iLCAidXNlUXVlcnlTdGF0ZXMiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJuZXdTdGF0ZSIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAic2NoZW1hIiwgInRhYmxlIiwgInVzZU11dGF0aW9uIiwgInJvd3MiLCAiZXJyb3IiLCAicmVzdWx0IiwgInVzZVNlbGVjdGlvbiIsICJkYXRhIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAidXNlU3R1ZGlvIiwgInBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVN0YXRlIiwgImlzU2VsZWN0aW5nIiwgIm11dGF0ZSIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJ1c2VFZmZlY3QiLCAiZGVsZXRlU2VsZWN0aW9uIiwgInJvd3MiLCAicm93IiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInNvcnRQYXJhbSIsICJzZXRTb3J0UGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJwYXJzZVNvcnRpbmciLCAiaXRlbSIsICJjb2x1bW4iLCAiZGlyZWN0aW9uIiwgImUiLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAibmV3U29ydGluZ1N0YXRlIiwgIm5ld1N0YXRlIiwgInJlc29sdmVkU3RhdGUiLCAic29ydFN0cmluZyIsICJpc09iamVjdFR5cGUiLCAiZm9yd2FyZFJlZiIsICJSZWFjdCIsICJqc3giLCAiVGFibGUiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJUYWJsZUhlYWRlciIsICJUYWJsZUJvZHkiLCAiVGFibGVGb290ZXIiLCAiVGFibGVSb3ciLCAiVGFibGVIZWFkIiwgIlRhYmxlQ2VsbCIsICJUYWJsZUNhcHRpb24iLCAiaXNWYWxpZEVsZW1lbnQiLCAiQ29udGV4dE1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiQ29udGV4dE1lbnUiLCAiQ29udGV4dE1lbnVUcmlnZ2VyIiwgIkNvbnRleHRNZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJDb250ZXh0TWVudVN1YkNvbnRlbnQiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJDb250ZXh0TWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkNvbnRleHRNZW51UmFkaW9JdGVtIiwgIkNpcmNsZSIsICJDb250ZXh0TWVudUxhYmVsIiwgIkNvbnRleHRNZW51U2VwYXJhdG9yIiwgIkNvbnRleHRNZW51U2hvcnRjdXQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiQ29udGV4dE1lbnUiLCAiQ29udGV4dE1lbnVUcmlnZ2VyIiwgIkNvbnRleHRNZW51Q29udGVudCIsICJDb250ZXh0TWVudUl0ZW0iLCAiY29udGVudCIsICJleHRyYWN0VGV4dENvbnRlbnQiLCAiZXJyb3IiLCAiQ29weSIsICJub2RlIiwgImlzVmFsaWRFbGVtZW50IiwgImpzeCIsICJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJyZWYiLCAic3R5bGUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiVGFibGVDZWxsIiwgImNuIiwgIkRhdGFHcmlkQ2VsbENvbnRleHRNZW51IiwgImpzeCIsICJCb29sZWFuQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkRhdGVDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRW1wdHlDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRW51bUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAib3B0aW9ucyIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkpTT05DZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiTnVsbENlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJOdW1lcmljQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIlJhd0NlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJUaW1lQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImpzeCIsICJnZXRDZWxsIiwgImNlbGwiLCAiY29sdW1uIiwgInByb3BzIiwgInZhbHVlIiwgIkVtcHR5Q2VsbCIsICJOdWxsQ2VsbCIsICJncm91cCIsICJvcHRpb25zIiwgImlzQXJyYXkiLCAiSlNPTkNlbGwiLCAiUmF3Q2VsbCIsICJFbnVtQ2VsbCIsICJCb29sZWFuQ2VsbCIsICJEYXRlQ2VsbCIsICJUaW1lQ2VsbCIsICJOdW1lcmljQ2VsbCIsICJpc09iamVjdFR5cGUiLCAiZm9yd2FyZFJlZiIsICJDaGVja2JveFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiQ2hlY2tib3giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJDaGVjayIsICJqc3giLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJ0YWJsZSIsICJyZWFkb25seSIsICJjbGFzc05hbWUiLCAic3R5bGUiLCAicmVzdCIsICJDaGVja2JveCIsICJ2YWx1ZSIsICJmb3J3YXJkUmVmIiwgIkZyYWdtZW50IiwgImpzeCIsICJTZWxlY3RDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJyZWYiLCAic3R5bGUiLCAiaXNIZWFkZXIiLCAiZm9yd2FyZGVkUHJvcHMiLCAic2VsZWN0Q2xhc3NlcyIsICJjbiIsICJUYWJsZUhlYWQiLCAiVGFibGVDZWxsIiwgImpzeCIsICJTZWxlY3RSb3dDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgInJvdyIsICJyZWFkb25seSIsICJjbGFzc05hbWUiLCAic3R5bGUiLCAicmVzdCIsICJTZWxlY3RDZWxsIiwgIkNoZWNrYm94IiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXJDZWxsQ29udGV4dCIsICJQb3BvdmVyQ2VsbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJvcGVuIiwgInNldE9wZW4iLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIm9uRG91YmxlQ2xpY2siLCAiY2xhc3NOYW1lIiwgInJlZiIsICJ0cmlnZ2VyUmVmIiwgIm5vZGUiLCAiY24iLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAiZXZlbnQiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYWN0aW9ucyIsICJjb250ZXh0IiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgImhhbmRsZUtleURvd24iLCAianN4IiwgImpzeHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJwcm9wcyIsICJjZWxsQ29tcG9uZW50IiwgImlucHV0Q29tcG9uZW50IiwgIlBvcG92ZXJDZWxsIiwgIlBvcG92ZXJDZWxsVHJpZ2dlciIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiY24iLCAiY2xvc2VzdENlbnRlciIsICJEbmRDb250ZXh0IiwgIkRyYWdPdmVybGF5IiwgIktleWJvYXJkU2Vuc29yIiwgIlBvaW50ZXJTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgIlNvcnRhYmxlQ29udGV4dCIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAidXNlU29ydGFibGUiLCAidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIkNTUyIsICJtb3Rpb24iLCAiQW5pbWF0ZU51bWJlciIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImNyZWF0ZVBvcnRhbCIsICJzaG9ydCIsICJjb2VyY2VUb1ZhbHVlIiwgImNvbHVtbiIsICJvcGVyYXRvciIsICJ2YWx1ZSIsICJkYXRhVHlwZUdyb3VwIiwgImNvZXJjZVRvU3RyaW5nIiwgIkRyb3Bkb3duTWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJEcm9wZG93bk1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkRyb3Bkb3duTWVudVN1YkNvbnRlbnQiLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJzaWRlT2Zmc2V0IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiRHJvcGRvd25NZW51UmFkaW9JdGVtIiwgIkNpcmNsZSIsICJEcm9wZG93bk1lbnVMYWJlbCIsICJEcm9wZG93bk1lbnVTZXBhcmF0b3IiLCAiRHJvcGRvd25NZW51U2hvcnRjdXQiLCAiUmVhY3QiLCAianN4IiwgIklucHV0IiwgImNsYXNzTmFtZSIsICJ0eXBlIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTZWxlY3RQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiU2VsZWN0IiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdFRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImNoaWxkcmVuIiwgImxhYmVsIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uRG93biIsICJTZWxlY3RTY3JvbGxVcEJ1dHRvbiIsICJDaGV2cm9uVXAiLCAiU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiIsICJTZWxlY3RDb250ZW50IiwgInBvc2l0aW9uIiwgIlNlbGVjdExhYmVsIiwgIlNlbGVjdEl0ZW0iLCAiQ2hlY2siLCAiU2VsZWN0U2VwYXJhdG9yIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkxlYWRpbmdPcGVyYXRvclNlbGVjdCIsICJ2YWx1ZSIsICJvblZhbHVlQ2hhbmdlIiwgImRpc2FibGVkIiwgInRyaWdnZXJDbGFzc05hbWUiLCAiU2VsZWN0IiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJTZWxlY3RJdGVtIiwgIkRyYWdnYWJsZUZpbHRlckl0ZW1QcmV2aWV3IiwgImFjdGl2ZUlkIiwgIml0ZW1zIiwgInRhYmxlIiwgImFjdGl2ZUl0ZW0iLCAiaXRlbSIsICJsZWFkaW5nT3BlcmF0b3JWYWx1ZSIsICJzaG93TGVhZGluZ09wRm9yT3ZlcmxheSIsICJhY3RpdmVJdGVtSW5kZXgiLCAicHJldmlvdXNJdGVtIiwgIkZpbHRlckNvbmRpdGlvbiIsICJGaWx0ZXJHcm91cENvbXBvbmVudCIsICJGaWx0ZXJMaXN0SXRlbXMiLCAicGFyZW50R3JvdXBJZCIsICJvblVwZGF0ZUl0ZW0iLCAib25EZWxldGVJdGVtIiwgIm9uUmVvcmRlckl0ZW1zIiwgImFjdGl2ZURyYWdJZCIsICJvbkRyYWdTdGFydCIsICJvbkRyYWdFbmRTaWduYWwiLCAic29ydGFibGVJdGVtSWRzIiwgInVzZU1lbW8iLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInVzZVNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgIktleWJvYXJkU2Vuc29yIiwgInNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyIsICJEbmRDb250ZXh0IiwgImNsb3Nlc3RDZW50ZXIiLCAiZXZlbnQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib2xkSW5kZXgiLCAibmV3SW5kZXgiLCAiU29ydGFibGVDb250ZXh0IiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJjdXJyZW50RmlsdGVySXRlbSIsICJpbmRleCIsICJzaG93TGVhZGluZ09wIiwgImxlYWRpbmdPcFZhbCIsICJvbkxlYWRpbmdPcENoYW5nZUZuIiwgImlzTGVhZGluZ09wVGFyZ2V0TGFzdCIsICJwcmV2SXRlbSIsICJuZXdWYWx1ZSIsICJ1cGRhdGVkUHJldkl0ZW0iLCAiU29ydGFibGVGaWx0ZXJJdGVtIiwgInVwZGF0ZWRGaWx0ZXIiLCAiY3JlYXRlUG9ydGFsIiwgIkRyYWdPdmVybGF5IiwgImZpbHRlciIsICJvblVwZGF0ZSIsICJvbkRlbGV0ZSIsICJwYXJlbnREbmRJZCIsICJzaG93TGVhZGluZ09wZXJhdG9yIiwgIm9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlIiwgImlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJzZXROb2RlUmVmIiwgInRyYW5zZm9ybSIsICJ0cmFuc2l0aW9uIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAic3R5bGUiLCAiQ1NTIiwgImRyYWdIYW5kbGVQcm9wcyIsICJoYW5kbGVDb2x1bW5DaGFuZ2UiLCAiaGFuZGxlT3BlcmF0b3JDaGFuZ2UiLCAiaGFuZGxlVmFsdWVDaGFuZ2UiLCAiZSIsICJyYXdWYWx1ZSIsICJjb2x1bW5JbmZvIiwgImNvZXJjZVRvVmFsdWUiLCAiZWRpdGVkVmFsdWUiLCAic2V0RWRpdGVkVmFsdWUiLCAidXNlU3RhdGUiLCAiY29lcmNlVG9TdHJpbmciLCAibW90aW9uIiwgIkdyaXBWZXJ0aWNhbCIsICJjb2x1bW4iLCAiSW5wdXQiLCAiQnV0dG9uIiwgIlgiLCAiZ3JvdXAiLCAiaXNSb290IiwgImlzRXhwYW5kZWQiLCAic2V0SXNFeHBhbmRlZCIsICJzZXRBY3RpdmVEcmFnSWQiLCAiaGFuZGxlQWRkRmlsdGVyIiwgIm5ld0ZpbHRlciIsICJzaG9ydCIsICJoYW5kbGVBZGRHcm91cCIsICJuZXdHcm91cCIsICJ1cGRhdGVJdGVtSW5Hcm91cCIsICJ1cGRhdGVkRmlsdGVyT3JHcm91cCIsICJuZXdGaWx0ZXJzIiwgImRlbGV0ZUl0ZW1Gcm9tR3JvdXAiLCAiaGFuZGxlRHJhZ1N0YXJ0IiwgImhhbmRsZURyYWdFbmRTaWduYWwiLCAiaGFuZGxlUmVvcmRlckl0ZW1zIiwgInJlb3JkZXJlZEZpbHRlcnMiLCAiYXJyYXlNb3ZlIiwgInJlbmRlckdyb3VwQ29udGVudCIsICJjbiIsICJDaGV2cm9uRG93biIsICJDaGV2cm9uUmlnaHQiLCAiQmFkZ2UiLCAiQW5pbWF0ZU51bWJlciIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJDaXJjbGVIZWxwIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiUXVlcnlWaXN1YWxpemVyIiwgImlzQW5kR3JvdXBPcGVuIiwgImYiLCAiaSIsICJyZXN1bHQiLCAiaXNMYXN0IiwgIm9wZXJhdG9yIiwgIkZpbHRlclRyZWUiLCAic2V0RmlsdGVyIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiRG5kQ29udGV4dCIsICJNb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAidXNlU2Vuc29ycyIsICJhcnJheU1vdmUiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiU29ydGFibGVDb250ZXh0IiwgInVzZVNvcnRhYmxlIiwgIkNTUyIsICJnZXRDb3JlUm93TW9kZWwiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRJdGVtIiwgImtleSIsICJpdGVtVmFsdWUiLCAibG9jYWxTdG9yYWdlIiwgIkpTT04iLCAicGFyc2UiLCAidXNlTG9jYWxTdG9yYWdlIiwgImRlZmF1bHRWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJ1c2VFZmZlY3QiLCAiaW5pdGlhbFZhbHVlIiwgInNldHRlciIsICJ1c2VDYWxsYmFjayIsICJ1cGRhdGVyIiwgIm9sZCIsICJuZXdWYWwiLCAic2V0SXRlbSIsICJzdHJpbmdpZnkiLCAiZGVmYXVsdFRoZW1lIiwgImJhY2tncm91bmQiLCAiYmFja2dyb3VuZEFsdCIsICJmb3JlZ3JvdW5kIiwgImdyYXkiLCAiZ3JheUFsdCIsICJpbnB1dEJhY2tncm91bmRDb2xvciIsICJpbnB1dFRleHRDb2xvciIsICJzdWNjZXNzIiwgImRhbmdlciIsICJhY3RpdmUiLCAid2FybmluZyIsICJUaGVtZUNvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJUaGVtZVByb3ZpZGVyIiwgIl9yZWYiLCAidGhlbWUiLCAicmVzdCIsICJjcmVhdGVFbGVtZW50IiwgIlByb3ZpZGVyIiwgIl9leHRlbmRzIiwgInVzZVRoZW1lIiwgInVzZUNvbnRleHQiLCAidXNlTWVkaWFRdWVyeSIsICJxdWVyeSIsICJpc01hdGNoIiwgInNldElzTWF0Y2giLCAid2luZG93IiwgIm1hdGNoTWVkaWEiLCAibWF0Y2hlcyIsICJtYXRjaGVyIiwgIm9uQ2hhbmdlIiwgImFkZExpc3RlbmVyIiwgInJlbW92ZUxpc3RlbmVyIiwgImlzU2VydmVyIiwgInN0eWxlZCIsICJ0eXBlIiwgIm5ld1N0eWxlcyIsICJxdWVyaWVzIiwgImZvcndhcmRSZWYiLCAicmVmIiwgInN0eWxlIiwgIm1lZGlhU3R5bGVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgInJlZHVjZSIsICJjdXJyZW50IiwgIl9yZWYyIiwgInVzZUlzTW91bnRlZCIsICJtb3VudGVkUmVmIiwgInVzZVJlZiIsICJpc01vdW50ZWQiLCAiUGFuZWwiLCAiX3Byb3BzIiwgImZvbnRTaXplIiwgImZvbnRGYW1pbHkiLCAiZGlzcGxheSIsICJiYWNrZ3JvdW5kQ29sb3IiLCAiY29sb3IiLCAiZmxleERpcmVjdGlvbiIsICJmbGV4IiwgIm92ZXJmbG93IiwgImhlaWdodCIsICIobWF4LXdpZHRoOiA3MDBweCkiLCAiYm9yZGVyVG9wIiwgIkJ1dHRvbiIsICJwcm9wcyIsICJhcHBlYXJhbmNlIiwgImZvbnRXZWlnaHQiLCAiYm9yZGVyIiwgImJvcmRlclJhZGl1cyIsICJwYWRkaW5nIiwgIm9wYWNpdHkiLCAiZGlzYWJsZWQiLCAidW5kZWZpbmVkIiwgImN1cnNvciIsICJsaW5lSGVpZ2h0IiwgIldlYmtpdEFwcGVhcmFuY2UiLCAiYmFja2dyb3VuZEltYWdlIiwgImJhY2tncm91bmRSZXBlYXQiLCAiYmFja2dyb3VuZFBvc2l0aW9uIiwgImJhY2tncm91bmRTaXplIiwgIkVudHJ5IiwgIm91dGxpbmUiLCAid29yZEJyZWFrIiwgIkxhYmVsIiwgIlZhbHVlIiwgIlN1YkVudHJpZXMiLCAibWFyZ2luTGVmdCIsICJwYWRkaW5nTGVmdCIsICJib3JkZXJMZWZ0IiwgIkluZm8iLCAiRXhwYW5kZXIiLCAiZXhwYW5kZWQiLCAidHJhbnNpdGlvbiIsICJ0cmFuc2Zvcm0iLCAiRGVmYXVsdFJlbmRlcmVyIiwgImhhbmRsZUVudHJ5IiwgImxhYmVsIiwgInN1YkVudHJpZXMiLCAic3ViRW50cnlQYWdlcyIsICJ0b2dnbGUiLCAicGFnZVNpemUiLCAicmVuZGVyZXIiLCAidmFsdWVTbmFwc2hvdCIsICJzZXRWYWx1ZVNuYXBzaG90IiwgImV4cGFuZGVkUGFnZXMiLCAic2V0RXhwYW5kZWRQYWdlcyIsICJyZWZyZXNoVmFsdWVTbmFwc2hvdCIsICJsZW5ndGgiLCAiRnJhZ21lbnQiLCAib25DbGljayIsICJTdHJpbmciLCAidG9Mb3dlckNhc2UiLCAibWFwIiwgImVudHJ5IiwgImluZGV4IiwgImluY2x1ZGVzIiwgImZpbHRlciIsICJkIiwgIkV4cGxvcmVyIiwgImRlZmF1bHRFeHBhbmRlZCIsICJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwgIl9yZWYzIiwgImRlcHRoIiwgInNldEV4cGFuZGVkIiwgInNldCIsICJwYXRoIiwgIm1ha2VQcm9wZXJ0eSIsICJzdWIiLCAibmV3UGF0aCIsICJjb25jYXQiLCAic3ViRGVmYXVsdEV4cGFuZGVkIiwgInN1YlBhdGgiLCAiQXJyYXkiLCAiaXNBcnJheSIsICJpIiwgIlN5bWJvbCIsICJpdGVyYXRvciIsICJmcm9tIiwgInZhbCIsICJfcmVmNCIsICJwdXNoIiwgInNsaWNlIiwgIkxvZ28iLCAid2lkdGgiLCAidmlld0JveCIsICJ2ZXJzaW9uIiwgInN0cm9rZSIsICJzdHJva2VXaWR0aCIsICJmaWxsIiwgImZpbGxSdWxlIiwgImlkIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJpbml0aWFsSXNPcGVuIiwgInRhYmxlIiwgInBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uUHJvcHMiLCAiY29udGFpbmVyRWxlbWVudCIsICJDb250YWluZXIiLCAicm9vdFJlZiIsICJwYW5lbFJlZiIsICJpc09wZW4iLCAic2V0SXNPcGVuIiwgInBhbmVsU3R5bGUiLCAib3RoZXJQYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblN0eWxlIiwgIm9uVG9nZ2xlQ2xpY2siLCAib3RoZXJUb2dnbGVCdXR0b25Qcm9wcyIsICJjbGFzc05hbWUiLCAiUmVhY3RUYWJsZURldnRvb2xzUGFuZWwiLCAibWF4SGVpZ2h0IiwgImUiLCAibWFyZ2luIiwgImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwgIl9faHRtbCIsICJtaW5IZWlnaHQiLCAiYm9yZGVyUmlnaHQiLCAianVzdGlmeUNvbnRlbnQiLCAiYWxpZ25JdGVtcyIsICJtYXJnaW5SaWdodCIsICJmbGV4V3JhcCIsICJvdmVyZmxvd1kiLCAiZ2V0U3RhdGUiLCAiZ2V0QWxsQ29sdW1ucyIsICJnZXRDb3JlUm93TW9kZWwiLCAiZ2V0RmlsdGVyZWRSb3dNb2RlbCIsICJnZXRTb3J0ZWRSb3dNb2RlbCIsICJnZXRHcm91cGVkUm93TW9kZWwiLCAiZ2V0RXhwYW5kZWRSb3dNb2RlbCIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgImpzeCIsICJTa2VsZXRvbiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAiY24iLCAiZmxleFJlbmRlciIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyIiwgInByb3BzIiwgImhlYWRlciIsICJjbGFzc05hbWUiLCAiY24iLCAiZmxleFJlbmRlciIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgIk1vdmVEb3duIiwgIk1vdmVVcCIsICJEcm9wZG93bk1lbnUiLCAiRHJvcGRvd25NZW51VHJpZ2dlciIsICJCdXR0b24iLCAiQ2hldnJvbkRvd24iLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkFycm93RG93bldpZGVOYXJyb3ciLCAiQXJyb3dVcFdpZGVOYXJyb3ciLCAiWCIsICJQaW5PZmYiLCAiUGluIiwgImUiLCAianN4IiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJjbGFzc05hbWUiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgInByb3BzIiwgInRhYmxlIiwgInZhcmlhbnQiLCAicGFnZUluZGV4IiwgInBhZ2VDb3VudCIsICJCdXR0b24iLCAiQ2hldnJvbnNMZWZ0IiwgIkNoZXZyb25MZWZ0IiwgIklucHV0IiwgImUiLCAiQ2hldnJvblJpZ2h0IiwgIkNoZXZyb25zUmlnaHQiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJjb2x1bW4iLCAia2luZCIsICJpc1Bpbm5lZCIsICJpc0xlZnRQaW5uZWQiLCAiaXNSaWdodFBpbm5lZCIsICJpc1NlbGVjdENvbHVtbiIsICJjbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEcmFnZ2FibGVIZWFkZXJDZWxsIiwgInByb3BzIiwgImNoaWxkcmVuIiwgImNsYXNzTmFtZSIsICJoZWFkZXIiLCAiY29tbW9uU3R5bGUiLCAiZGlzYWJsZURyYWdnaW5nIiwgImF0dHJpYnV0ZXMiLCAibGlzdGVuZXJzIiwgInRyYW5zZm9ybSIsICJ0cmFuc2l0aW9uIiwgInNldE5vZGVSZWYiLCAiaXNEcmFnZ2luZyIsICJ1c2VTb3J0YWJsZSIsICJkcmFnU3R5bGUiLCAiQ1NTIiwgImNvbW1vbkNsYXNzIiwgImNuIiwgImRyYWdDbGFzcyIsICJUYWJsZUhlYWQiLCAiRGF0YUdyaWQiLCAiY29sdW1uRGVmcyIsICJnZXRCZWZvcmVSb3dzIiwgImlzTG9hZGluZyIsICJpc1Byb2Nlc3NpbmciLCAib25QYWdpbmF0aW9uQ2hhbmdlIiwgIm9uUm93U2VsZWN0aW9uQ2hhbmdlIiwgIm9uU29ydGluZ0NoYW5nZSIsICJwYWdlQ291bnQiLCAicGFnaW5hdGlvblN0YXRlIiwgInJvd3MiLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic29ydGluZ1N0YXRlIiwgImNvbHVtbk9yZGVyIiwgInNldENvbHVtbk9yZGVyIiwgInVzZVN0YXRlIiwgImNvbHVtblBpbm5pbmciLCAic2V0Q29sdW1uUGlubmluZyIsICJjb2x1bW5TaXppbmciLCAic2V0Q29sdW1uU2l6aW5nIiwgInNvcnRpbmciLCAidXNlTWVtbyIsICJ0b1NvcnRpbmdTdGF0ZSIsICJkaXNwbGF5TG9hZGVyIiwgInVzZUVmZmVjdCIsICJhY2Nlc3NvcktleSIsICJoYW5kbGVEcmFnRW5kIiwgImFjdGl2ZSIsICJvdmVyIiwgIm9yZGVyIiwgImFjdGl2ZUluZGV4IiwgIm92ZXJJbmRleCIsICJhcnJheU1vdmUiLCAibW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgIk1vdXNlU2Vuc29yIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ0YWJsZSIsICJ1c2VSZWFjdFRhYmxlIiwgImdldENvcmVSb3dNb2RlbCIsICJfX3BzX3Jvd2lkIiwgInVwZGF0ZXJPclZhbHVlIiwgIm9sZCIsICJ0b1NvcnRPcmRlckl0ZW1zIiwgIlJlYWN0VGFibGVEZXZ0b29scyIsICJEYXRhR3JpZExvYWRpbmdCYXIiLCAiRG5kQ29udGV4dCIsICJUYWJsZSIsICJUYWJsZUhlYWRlciIsICJoZWFkZXJHcm91cCIsICJUYWJsZVJvdyIsICJTb3J0YWJsZUNvbnRleHQiLCAiaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiaGVhZGVyRm4iLCAiSGVhZGVyQ29tcG9uZW50IiwgInBpbm5pbmdTdHlsZXMiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJEYXRhR3JpZEhlYWRlciIsICJUYWJsZUJvZHkiLCAicm93IiwgImNlbGwiLCAiaSIsICJDZWxsIiwgIlRhYmxlQ2VsbCIsICJTa2VsZXRvbiIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJmcm9tIiwgIml0ZW0iLCAiVG9vbHRpcFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiVG9vbHRpcENvbnRlbnQiLCAiY2xhc3NOYW1lIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjb2x1bW4iLCAiVG9vbHRpcFByb3ZpZGVyIiwgIlRvb2x0aXAiLCAiVG9vbHRpcFRyaWdnZXIiLCAiS2V5Um91bmQiLCAiVG9vbHRpcENvbnRlbnQiLCAiaXNPYmplY3RUeXBlIiwgIm1vdGlvbiIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJMYWJlbFByaW1pdGl2ZSIsICJjdmEiLCAiUmVhY3QiLCAianN4IiwgImxhYmVsVmFyaWFudHMiLCAiY3ZhIiwgIkxhYmVsIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU3dpdGNoUHJpbWl0aXZlcyIsICJSZWFjdCIsICJqc3giLCAiU3dpdGNoIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiSW5wdXRBY3Rpb25zIiwgIm9uU2F2ZSIsICJvbkNhbmNlbCIsICJvbkNsb3NlIiwgIm9uTnVsbENoYW5nZSIsICJpc051bGwiLCAicmVhZG9ubHkiLCAiQ29ybmVyRG93bkxlZnQiLCAiU3dpdGNoIiwgImNoZWNrZWQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQm9vbGVhbklucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJ2YWx1ZVRvU3VibWl0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJtb3Rpb24iLCAiU3dpdGNoIiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ1c2VJbnB1dCIsICJwcm9wcyIsICJpbml0aWFsVmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiZXZlbnQiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIkRhdGVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJmb3JtYXR0ZWREYXRlIiwgInVzZU1lbW8iLCAiZGF0ZSIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgInVzZUNhbGxiYWNrIiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkVudW1JbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAidmFsdWUiLCAib3B0aW9ucyIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImluaXRpYWxWYWx1ZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaGFuZGxlU2VsZWN0T3B0aW9uIiwgIm9wdGlvbiIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImJhZGdlVmFyaWFudHMiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkpzb25JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZUNoYW5nZSIsICJlIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJqc29uVmFsdWUiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJOdW1lcmljSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAibnVtZXJpY1ZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJMYWJlbCIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiUmF3SW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAidXNlQ2FsbGJhY2siLCAidXNlTWVtbyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAiVGltZUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImZvcm1hdHRlZFRpbWUiLCAidXNlTWVtbyIsICJoYXNUaW1lem9uZSIsICJkYXRlIiwgInRpbWVSZWdleCIsICJtYXRjaCIsICJob3VycyIsICJtaW51dGVzIiwgInR6T2Zmc2V0IiwgInBlcmlvZCIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgImpzeCIsICJnZXRJbnB1dCIsICJwcm9wcyIsICJjZWxsIiwgImNvbHVtbiIsICJvblN1Ym1pdCIsICJncm91cCIsICJvcHRpb25zIiwgImlzQXJyYXkiLCAicmVhZG9ubHkiLCAiY2VsbFZhbHVlIiwgInZhbHVlIiwgIkRhdGVJbnB1dCIsICJUaW1lSW5wdXQiLCAiSnNvbklucHV0IiwgIkJvb2xlYW5JbnB1dCIsICJFbnVtSW5wdXQiLCAiTnVtZXJpY0lucHV0IiwgIlJhd0lucHV0IiwgImlzT2JqZWN0VHlwZSIsICJ1c2VSZWFjdFRhYmxlIiwgIm9taXQiLCAiRnJhZ21lbnQiLCAianN4IiwgIlN0YWdlZFJvd3MiLCAicHJvcHMiLCAicGFyZW50VGFibGUiLCAic3RhZ2VkUm93cyIsICJzZXRTdGFnZWRSb3dzIiwgInJlYWRvbmx5IiwgInVzZUlzSW5zZXJ0aW5nIiwgInVwZGF0ZVN0YWdlZFJvdyIsICJyb3dJbmRleCIsICJwYXJ0aWFsUm93IiwgInByZXZSb3dzIiwgIm5ld1Jvd3MiLCAiY29sdW1uRGVmcyIsICJjb2x1bW4iLCAiRW1wdHlDZWxsIiwgImNlbGwiLCAiV3JpdGVhYmxlQ2VsbCIsICJnZXRDZWxsIiwgImdldElucHV0IiwgInZhbHVlIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJyb3ciLCAiaSIsICJUYWJsZVJvdyIsICJqIiwgIkNlbGwiLCAiZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJBY3RpdmVUYWJsZVZpZXciLCAiX3Byb3BzIiwgImlzTXV0YXRpbmciLCAidXNlSXNNdXRhdGluZyIsICJhY3RpdmVUYWJsZSIsICJvbkVycm9yIiwgImlzRnVsbHNjcmVlbiIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInRvZ2dsZU5hdmlnYXRpb24iLCAiaXNOYXZpZ2F0aW9uT3BlbiIsICJ1c2VTdHVkaW8iLCAic29ydGluZ1N0YXRlIiwgInNldFNvcnRpbmdTdGF0ZSIsICJ1c2VTb3J0aW5nIiwgInBhZ2luYXRpb25TdGF0ZSIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlUGFnaW5hdGlvbiIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAidXNlU3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgImVkaXRpbmdGaWx0ZXIiLCAic2V0RWRpdGluZ0ZpbHRlciIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUZpbHRlcmluZyIsICJkYXRhIiwgImlzRmV0Y2hpbmciLCAicmVmZXRjaCIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgImRlbGV0ZVNlbGVjdGlvbiIsICJpc1NlbGVjdGluZyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzZXRSb3dTZWxlY3Rpb25TdGF0ZSIsICJ1c2VTZWxlY3Rpb24iLCAicmVhZG9ubHkiLCAiY29sdW1uIiwgImlzSW5zZXJ0aW5nIiwgInVzZUlzSW5zZXJ0aW5nIiwgImluc2VydCIsICJ1c2VBY3RpdmVUYWJsZUluc2VydCIsICJ1cGRhdGUiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAidXNlRWZmZWN0IiwgInNhdmVTdGFnZWRSb3dzIiwgInRvYXN0IiwgIm5ld1N0YWdlZFJvdyIsICJvbGQiLCAiZHJvcFN0YWdlZFJvd3MiLCAiaGFuZGxlQ2VsbElucHV0U3VibWl0IiwgInZhbHVlIiwgInJvdyIsICJvbkZpbHRlck9wZW5DaGFuZ2UiLCAib3BlbiIsICJjb25jcmV0ZUNvbHVtbkRlZnMiLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgImNlbGwiLCAicHJvcHMiLCAiV3JpdGVhYmxlQ2VsbCIsICJnZXRDZWxsIiwgImdldElucHV0IiwgInZpcnR1YWxDb2x1bW5EZWZzIiwgInRhYmxlIiwgIlNlbGVjdEhlYWRlckNlbGwiLCAiU2VsZWN0Um93Q2VsbCIsICJjb2x1bW5EZWZzIiwgImRlZmF1bHRDb2x1bW5Tb3J0aW5nIiwgIkJ1dHRvbiIsICJQYW5lbExlZnRDbG9zZSIsICJQYW5lbExlZnRPcGVuIiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiY24iLCAiRmlsdGVyIiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiRmlsdGVyVHJlZSIsICJmaWx0ZXIiLCAiUmVmcmVzaEN3IiwgIk1pbmltaXplIiwgIk1heGltaXplIiwgIkRhdGFHcmlkIiwgIlN0YWdlZFJvd3MiLCAiZ2V0UGFnZUNvdW50IiwgInJvd0NvdW50IiwgInBhZ2VTaXplIiwgInBhZ2VDb3VudCIsICJhIiwgImIiLCAiYU1ldGEiLCAiYk1ldGEiLCAiU2xvdCIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1dWlkdjQiLCAidXNlUXVlcnkiLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJ1c2VRdWVyeSIsICJzaWduYWwiLCAiZXJyb3IiLCAiaW50cm9zcGVjdGlvbiIsICJjdHgiLCAidXNlQWN0aXZlVGFibGUiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAiYWN0aXZlU2NoZW1hIiwgInNldEFjdGl2ZVNjaGVtYSIsICJhZGFwdGVyIiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VTdHVkaW8iLCAiaW50cm9zcGVjdGlvbiIsICJkYXRhVXBkYXRlZEF0IiwgInVzZUludHJvc3BlY3Rpb24iLCAiaXNMb2FkaW5nIiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInRhYmxlQW5kU2NoZW1hIiwgInNldFRhYmxlQW5kU2NoZW1hIiwgInVzZVF1ZXJ5U3RhdGVzIiwgInYiLCAic2V0UGFnZVBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAic2V0U29ydFBhcmFtIiwgInRhYmxlcyIsICJ1c2VNZW1vIiwgInRvdGFsVGFibGVDb3VudCIsICJzdW0iLCAic2NoZW1hIiwgImZpcnN0VGFibGUiLCAidXNlRWZmZWN0IiwgInRhYmxlRnJvbVBhcmFtIiwgInQiLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQ2FsbGJhY2siLCAibmV3VGFibGUiLCAiaGFuZGxlU2NoZW1hQ2hhbmdlIiwgIm5ld1NjaGVtYSIsICJwcmV2IiwgInV1aWR2NCIsICJqc3giLCAianN4cyIsICJOYXZpZ2F0aW9uIiwgImNsYXNzTmFtZSIsICJ0YWJsZXMiLCAiYWN0aXZlVGFibGUiLCAiaXNMb2FkaW5nIiwgImhhbmRsZVRhYmxlQ2hhbmdlIiwgInVzZUFjdGl2ZVRhYmxlIiwgInNpZGVCYXJDbGFzc2VzIiwgImNuIiwgInRhYmxlIiwgIl8iLCAiaW5kZXgiLCAiU2tlbGV0b24iLCAiQmxvY2siLCAibGFiZWwiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAiVGFibGUyIiwgIkl0ZW0iLCAiYXNDaGlsZCIsICJpc0FjdGl2ZSIsICJzaXplIiwgIndyYXBDaGlsZHJlbkluU3BhbiIsICJTbG90IiwgIlNjaGVtYVNlbGVjdG9yIiwgImludHJvc3BlY3Rpb24iLCAiaXNJbnRyb3NwZWN0aW9uTG9hZGluZyIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImFjdGl2ZVNjaGVtYSIsICJoYW5kbGVTY2hlbWFDaGFuZ2UiLCAic2NoZW1hTmFtZXMiLCAiU2VsZWN0IiwgIlNlbGVjdFRyaWdnZXIiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0Q29udGVudCIsICJTZWxlY3RJdGVtIiwgInNjaGVtYSIsICJqc3giLCAianN4cyIsICJTdHVkaW8iLCAicHJvcHMiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgIm9uVGVsZW1ldHJ5RXZlbnQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgIlN0dWRpb0NvbnRlbnQiLCAiaXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgImNvbnRhaW5lckNsYXNzZXMiLCAiY24iLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJOYXZpZ2F0aW9uIiwgIkFjdGl2ZVRhYmxlVmlldyJdCn0K