gotty/bindata/static/js/gotty.js
Søren L. Hansen 41f09daf42 Improve JS workflow
Now we can launch Chrome from vscode and also set breakpoints and have
them be respected.

Work still to be done:

The "Launch Chrome" task should compile the typescript stuff.

It takes too long to rebuild the typescript stuff. It is bothersome
during development. If we can work around that with webpack, that's
great. If generating the gotty bundle is what makes it all time
consuming, we should skip the bundle generation for development and
change the index.html to point to a not-bundled version.

Partially fixes #3
2022-11-28 15:03:43 -08:00

3 lines
3.2 MiB
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*! For license information please see gotty.js.LICENSE.txt */
(()=>{var e={138:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Alert:()=>St,Button:()=>kt,Carousel:()=>qt,Collapse:()=>Jt,Dropdown:()=>br,Modal:()=>zr,Offcanvas:()=>Yr,Popover:()=>An,ScrollSpy:()=>$n,Tab:()=>In,Toast:()=>Nn,Tooltip:()=>gn});var n={};r.r(n),r.d(n,{afterMain:()=>w,afterRead:()=>A,afterWrite:()=>$,applyStyles:()=>M,arrow:()=>Q,auto:()=>l,basePlacements:()=>c,beforeMain:()=>y,beforeRead:()=>m,beforeWrite:()=>x,bottom:()=>o,clippingParents:()=>u,computeStyles:()=>ne,createPopper:()=>Me,createPopperBase:()=>De,createPopperLite:()=>Oe,detectOverflow:()=>ve,end:()=>h,eventListeners:()=>oe,flip:()=>Ae,hide:()=>we,left:()=>a,main:()=>C,modifierPhases:()=>k,offset:()=>xe,placements:()=>g,popper:()=>p,popperGenerator:()=>Re,popperOffsets:()=>Se,preventOverflow:()=>$e,read:()=>v,reference:()=>_,right:()=>s,start:()=>d,top:()=>i,variationPlacements:()=>b,viewport:()=>f,write:()=>S});var i="top",o="bottom",s="right",a="left",l="auto",c=[i,o,s,a],d="start",h="end",u="clippingParents",f="viewport",p="popper",_="reference",b=c.reduce((function(e,t){return e.concat([t+"-"+d,t+"-"+h])}),[]),g=[].concat(c,[l]).reduce((function(e,t){return e.concat([t,t+"-"+d,t+"-"+h])}),[]),m="beforeRead",v="read",A="afterRead",y="beforeMain",C="main",w="afterMain",x="beforeWrite",S="write",$="afterWrite",k=[m,v,A,y,C,w,x,S,$];function E(e){return e?(e.nodeName||"").toLowerCase():null}function B(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function L(e){return e instanceof B(e).Element||e instanceof Element}function R(e){return e instanceof B(e).HTMLElement||e instanceof HTMLElement}function D(e){return"undefined"!=typeof ShadowRoot&&(e instanceof B(e).ShadowRoot||e instanceof ShadowRoot)}const M={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var r=t.styles[e]||{},n=t.attributes[e]||{},i=t.elements[e];R(i)&&E(i)&&(Object.assign(i.style,r),Object.keys(n).forEach((function(e){var t=n[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,r={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.styles=r,t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach((function(e){var n=t.elements[e],i=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:r[e]).reduce((function(e,t){return e[t]="",e}),{});R(n)&&E(n)&&(Object.assign(n.style,o),Object.keys(i).forEach((function(e){n.removeAttribute(e)})))}))}},requires:["computeStyles"]};function O(e){return e.split("-")[0]}var T=Math.max,I=Math.min,P=Math.round;function F(){var e=navigator.userAgentData;return null!=e&&e.brands?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function H(){return!/^((?!chrome|android).)*safari/i.test(F())}function j(e,t,r){void 0===t&&(t=!1),void 0===r&&(r=!1);var n=e.getBoundingClientRect(),i=1,o=1;t&&R(e)&&(i=e.offsetWidth>0&&P(n.width)/e.offsetWidth||1,o=e.offsetHeight>0&&P(n.height)/e.offsetHeight||1);var s=(L(e)?B(e):window).visualViewport,a=!H()&&r,l=(n.left+(a&&s?s.offsetLeft:0))/i,c=(n.top+(a&&s?s.offsetTop:0))/o,d=n.width/i,h=n.height/o;return{width:d,height:h,top:c,right:l+d,bottom:c+h,left:l,x:l,y:c}}function z(e){var t=j(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function N(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&D(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function U(e){return B(e).getComputedStyle(e)}function W(e){return["table","td","th"].indexOf(E(e))>=0}function q(e){return((L(e)?e.ownerDocument:e.document)||window.document).documentElement}function G(e){return"html"===E(e)?e:e.assignedSlot||e.parentNode||(D(e)?e.host:null)||q(e)}function V(e){return R(e)&&"fixed"!==U(e).position?e.offsetParent:null}function K(e){for(var t=B(e),r=V(e);r&&W(r)&&"static"===U(r).position;)r=V(r);return r&&("html"===E(r)||"body"===E(r)&&"static"===U(r).position)?t:r||function(e){var t=/firefox/i.test(F());if(/Trident/i.test(F())&&R(e)&&"fixed"===U(e).position)return null;var r=G(e);for(D(r)&&(r=r.host);R(r)&&["html","body"].indexOf(E(r))<0;){var n=U(r);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||t&&"filter"===n.willChange||t&&n.filter&&"none"!==n.filter)return r;r=r.parentNode}return null}(e)||t}function Z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Y(e,t,r){return T(e,I(t,r))}function X(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function J(e,t){return t.reduce((function(t,r){return t[r]=e,t}),{})}const Q={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,r=e.state,n=e.name,l=e.options,d=r.elements.arrow,h=r.modifiersData.popperOffsets,u=O(r.placement),f=Z(u),p=[a,s].indexOf(u)>=0?"height":"width";if(d&&h){var _=function(e,t){return X("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:J(e,c))}(l.padding,r),b=z(d),g="y"===f?i:a,m="y"===f?o:s,v=r.rects.reference[p]+r.rects.reference[f]-h[f]-r.rects.popper[p],A=h[f]-r.rects.reference[f],y=K(d),C=y?"y"===f?y.clientHeight||0:y.clientWidth||0:0,w=v/2-A/2,x=_[g],S=C-b[p]-_[m],$=C/2-b[p]/2+w,k=Y(x,$,S),E=f;r.modifiersData[n]=((t={})[E]=k,t.centerOffset=k-$,t)}},effect:function(e){var t=e.state,r=e.options.element,n=void 0===r?"[data-popper-arrow]":r;null!=n&&("string"!=typeof n||(n=t.elements.popper.querySelector(n)))&&N(t.elements.popper,n)&&(t.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ee(e){return e.split("-")[1]}var te={top:"auto",right:"auto",bottom:"auto",left:"auto"};function re(e){var t,r=e.popper,n=e.popperRect,l=e.placement,c=e.variation,d=e.offsets,u=e.position,f=e.gpuAcceleration,p=e.adaptive,_=e.roundOffsets,b=e.isFixed,g=d.x,m=void 0===g?0:g,v=d.y,A=void 0===v?0:v,y="function"==typeof _?_({x:m,y:A}):{x:m,y:A};m=y.x,A=y.y;var C=d.hasOwnProperty("x"),w=d.hasOwnProperty("y"),x=a,S=i,$=window;if(p){var k=K(r),E="clientHeight",L="clientWidth";if(k===B(r)&&"static"!==U(k=q(r)).position&&"absolute"===u&&(E="scrollHeight",L="scrollWidth"),l===i||(l===a||l===s)&&c===h)S=o,A-=(b&&k===$&&$.visualViewport?$.visualViewport.height:k[E])-n.height,A*=f?1:-1;if(l===a||(l===i||l===o)&&c===h)x=s,m-=(b&&k===$&&$.visualViewport?$.visualViewport.width:k[L])-n.width,m*=f?1:-1}var R,D=Object.assign({position:u},p&&te),M=!0===_?function(e){var t=e.x,r=e.y,n=window.devicePixelRatio||1;return{x:P(t*n)/n||0,y:P(r*n)/n||0}}({x:m,y:A}):{x:m,y:A};return m=M.x,A=M.y,f?Object.assign({},D,((R={})[S]=w?"0":"",R[x]=C?"0":"",R.transform=($.devicePixelRatio||1)<=1?"translate("+m+"px, "+A+"px)":"translate3d("+m+"px, "+A+"px, 0)",R)):Object.assign({},D,((t={})[S]=w?A+"px":"",t[x]=C?m+"px":"",t.transform="",t))}const ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,r=e.options,n=r.gpuAcceleration,i=void 0===n||n,o=r.adaptive,s=void 0===o||o,a=r.roundOffsets,l=void 0===a||a,c={placement:O(t.placement),variation:ee(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,re(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,re(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};var ie={passive:!0};const oe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,r=e.instance,n=e.options,i=n.scroll,o=void 0===i||i,s=n.resize,a=void 0===s||s,l=B(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach((function(e){e.addEventListener("scroll",r.update,ie)})),a&&l.addEventListener("resize",r.update,ie),function(){o&&c.forEach((function(e){e.removeEventListener("scroll",r.update,ie)})),a&&l.removeEventListener("resize",r.update,ie)}},data:{}};var se={left:"right",right:"left",bottom:"top",top:"bottom"};function ae(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var le={start:"end",end:"start"};function ce(e){return e.replace(/start|end/g,(function(e){return le[e]}))}function de(e){var t=B(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function he(e){return j(q(e)).left+de(e).scrollLeft}function ue(e){var t=U(e),r=t.overflow,n=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+i+n)}function fe(e){return["html","body","#document"].indexOf(E(e))>=0?e.ownerDocument.body:R(e)&&ue(e)?e:fe(G(e))}function pe(e,t){var r;void 0===t&&(t=[]);var n=fe(e),i=n===(null==(r=e.ownerDocument)?void 0:r.body),o=B(n),s=i?[o].concat(o.visualViewport||[],ue(n)?n:[]):n,a=t.concat(s);return i?a:a.concat(pe(G(s)))}function _e(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function be(e,t,r){return t===f?_e(function(e,t){var r=B(e),n=q(e),i=r.visualViewport,o=n.clientWidth,s=n.clientHeight,a=0,l=0;if(i){o=i.width,s=i.height;var c=H();(c||!c&&"fixed"===t)&&(a=i.offsetLeft,l=i.offsetTop)}return{width:o,height:s,x:a+he(e),y:l}}(e,r)):L(t)?function(e,t){var r=j(e,!1,"fixed"===t);return r.top=r.top+e.clientTop,r.left=r.left+e.clientLeft,r.bottom=r.top+e.clientHeight,r.right=r.left+e.clientWidth,r.width=e.clientWidth,r.height=e.clientHeight,r.x=r.left,r.y=r.top,r}(t,r):_e(function(e){var t,r=q(e),n=de(e),i=null==(t=e.ownerDocument)?void 0:t.body,o=T(r.scrollWidth,r.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=T(r.scrollHeight,r.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),a=-n.scrollLeft+he(e),l=-n.scrollTop;return"rtl"===U(i||r).direction&&(a+=T(r.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:l}}(q(e)))}function ge(e,t,r,n){var i="clippingParents"===t?function(e){var t=pe(G(e)),r=["absolute","fixed"].indexOf(U(e).position)>=0&&R(e)?K(e):e;return L(r)?t.filter((function(e){return L(e)&&N(e,r)&&"body"!==E(e)})):[]}(e):[].concat(t),o=[].concat(i,[r]),s=o[0],a=o.reduce((function(t,r){var i=be(e,r,n);return t.top=T(i.top,t.top),t.right=I(i.right,t.right),t.bottom=I(i.bottom,t.bottom),t.left=T(i.left,t.left),t}),be(e,s,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function me(e){var t,r=e.reference,n=e.element,l=e.placement,c=l?O(l):null,u=l?ee(l):null,f=r.x+r.width/2-n.width/2,p=r.y+r.height/2-n.height/2;switch(c){case i:t={x:f,y:r.y-n.height};break;case o:t={x:f,y:r.y+r.height};break;case s:t={x:r.x+r.width,y:p};break;case a:t={x:r.x-n.width,y:p};break;default:t={x:r.x,y:r.y}}var _=c?Z(c):null;if(null!=_){var b="y"===_?"height":"width";switch(u){case d:t[_]=t[_]-(r[b]/2-n[b]/2);break;case h:t[_]=t[_]+(r[b]/2-n[b]/2)}}return t}function ve(e,t){void 0===t&&(t={});var r=t,n=r.placement,a=void 0===n?e.placement:n,l=r.strategy,d=void 0===l?e.strategy:l,h=r.boundary,b=void 0===h?u:h,g=r.rootBoundary,m=void 0===g?f:g,v=r.elementContext,A=void 0===v?p:v,y=r.altBoundary,C=void 0!==y&&y,w=r.padding,x=void 0===w?0:w,S=X("number"!=typeof x?x:J(x,c)),$=A===p?_:p,k=e.rects.popper,E=e.elements[C?$:A],B=ge(L(E)?E:E.contextElement||q(e.elements.popper),b,m,d),R=j(e.elements.reference),D=me({reference:R,element:k,strategy:"absolute",placement:a}),M=_e(Object.assign({},k,D)),O=A===p?M:R,T={top:B.top-O.top+S.top,bottom:O.bottom-B.bottom+S.bottom,left:B.left-O.left+S.left,right:O.right-B.right+S.right},I=e.modifiersData.offset;if(A===p&&I){var P=I[a];Object.keys(T).forEach((function(e){var t=[s,o].indexOf(e)>=0?1:-1,r=[i,o].indexOf(e)>=0?"y":"x";T[e]+=P[r]*t}))}return T}const Ae={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var h=r.mainAxis,u=void 0===h||h,f=r.altAxis,p=void 0===f||f,_=r.fallbackPlacements,m=r.padding,v=r.boundary,A=r.rootBoundary,y=r.altBoundary,C=r.flipVariations,w=void 0===C||C,x=r.allowedAutoPlacements,S=t.options.placement,$=O(S),k=_||($===S||!w?[ae(S)]:function(e){if(O(e)===l)return[];var t=ae(e);return[ce(e),t,ce(t)]}(S)),E=[S].concat(k).reduce((function(e,r){return e.concat(O(r)===l?function(e,t){void 0===t&&(t={});var r=t,n=r.placement,i=r.boundary,o=r.rootBoundary,s=r.padding,a=r.flipVariations,l=r.allowedAutoPlacements,d=void 0===l?g:l,h=ee(n),u=h?a?b:b.filter((function(e){return ee(e)===h})):c,f=u.filter((function(e){return d.indexOf(e)>=0}));0===f.length&&(f=u);var p=f.reduce((function(t,r){return t[r]=ve(e,{placement:r,boundary:i,rootBoundary:o,padding:s})[O(r)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:r,boundary:v,rootBoundary:A,padding:m,flipVariations:w,allowedAutoPlacements:x}):r)}),[]),B=t.rects.reference,L=t.rects.popper,R=new Map,D=!0,M=E[0],T=0;T<E.length;T++){var I=E[T],P=O(I),F=ee(I)===d,H=[i,o].indexOf(P)>=0,j=H?"width":"height",z=ve(t,{placement:I,boundary:v,rootBoundary:A,altBoundary:y,padding:m}),N=H?F?s:a:F?o:i;B[j]>L[j]&&(N=ae(N));var U=ae(N),W=[];if(u&&W.push(z[P]<=0),p&&W.push(z[N]<=0,z[U]<=0),W.every((function(e){return e}))){M=I,D=!1;break}R.set(I,W)}if(D)for(var q=function(e){var t=E.find((function(t){var r=R.get(t);if(r)return r.slice(0,e).every((function(e){return e}))}));if(t)return M=t,"break"},G=w?3:1;G>0;G--){if("break"===q(G))break}t.placement!==M&&(t.modifiersData[n]._skip=!0,t.placement=M,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ye(e,t,r){return void 0===r&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Ce(e){return[i,s,o,a].some((function(t){return e[t]>=0}))}const we={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,r=e.name,n=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,s=ve(t,{elementContext:"reference"}),a=ve(t,{altBoundary:!0}),l=ye(s,n),c=ye(a,i,o),d=Ce(l),h=Ce(c);t.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:d,hasPopperEscaped:h},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":h})}};const xe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,r=e.options,n=e.name,o=r.offset,l=void 0===o?[0,0]:o,c=g.reduce((function(e,r){return e[r]=function(e,t,r){var n=O(e),o=[a,i].indexOf(n)>=0?-1:1,l="function"==typeof r?r(Object.assign({},t,{placement:e})):r,c=l[0],d=l[1];return c=c||0,d=(d||0)*o,[a,s].indexOf(n)>=0?{x:d,y:c}:{x:c,y:d}}(r,t.rects,l),e}),{}),d=c[t.placement],h=d.x,u=d.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=h,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=c}};const Se={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,r=e.name;t.modifiersData[r]=me({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};const $e={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,r=e.options,n=e.name,l=r.mainAxis,c=void 0===l||l,h=r.altAxis,u=void 0!==h&&h,f=r.boundary,p=r.rootBoundary,_=r.altBoundary,b=r.padding,g=r.tether,m=void 0===g||g,v=r.tetherOffset,A=void 0===v?0:v,y=ve(t,{boundary:f,rootBoundary:p,padding:b,altBoundary:_}),C=O(t.placement),w=ee(t.placement),x=!w,S=Z(C),$="x"===S?"y":"x",k=t.modifiersData.popperOffsets,E=t.rects.reference,B=t.rects.popper,L="function"==typeof A?A(Object.assign({},t.rects,{placement:t.placement})):A,R="number"==typeof L?{mainAxis:L,altAxis:L}:Object.assign({mainAxis:0,altAxis:0},L),D=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,M={x:0,y:0};if(k){if(c){var P,F="y"===S?i:a,H="y"===S?o:s,j="y"===S?"height":"width",N=k[S],U=N+y[F],W=N-y[H],q=m?-B[j]/2:0,G=w===d?E[j]:B[j],V=w===d?-B[j]:-E[j],X=t.elements.arrow,J=m&&X?z(X):{width:0,height:0},Q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=Q[F],re=Q[H],ne=Y(0,E[j],J[j]),ie=x?E[j]/2-q-ne-te-R.mainAxis:G-ne-te-R.mainAxis,oe=x?-E[j]/2+q+ne+re+R.mainAxis:V+ne+re+R.mainAxis,se=t.elements.arrow&&K(t.elements.arrow),ae=se?"y"===S?se.clientTop||0:se.clientLeft||0:0,le=null!=(P=null==D?void 0:D[S])?P:0,ce=N+oe-le,de=Y(m?I(U,N+ie-le-ae):U,N,m?T(W,ce):W);k[S]=de,M[S]=de-N}if(u){var he,ue="x"===S?i:a,fe="x"===S?o:s,pe=k[$],_e="y"===$?"height":"width",be=pe+y[ue],ge=pe-y[fe],me=-1!==[i,a].indexOf(C),Ae=null!=(he=null==D?void 0:D[$])?he:0,ye=me?be:pe-E[_e]-B[_e]-Ae+R.altAxis,Ce=me?pe+E[_e]+B[_e]-Ae-R.altAxis:ge,we=m&&me?function(e,t,r){var n=Y(e,t,r);return n>r?r:n}(ye,pe,Ce):Y(m?ye:be,pe,m?Ce:ge);k[$]=we,M[$]=we-pe}t.modifiersData[n]=M}},requiresIfExists:["offset"]};function ke(e,t,r){void 0===r&&(r=!1);var n,i,o=R(t),s=R(t)&&function(e){var t=e.getBoundingClientRect(),r=P(t.width)/e.offsetWidth||1,n=P(t.height)/e.offsetHeight||1;return 1!==r||1!==n}(t),a=q(t),l=j(e,s,r),c={scrollLeft:0,scrollTop:0},d={x:0,y:0};return(o||!o&&!r)&&(("body"!==E(t)||ue(a))&&(c=(n=t)!==B(n)&&R(n)?{scrollLeft:(i=n).scrollLeft,scrollTop:i.scrollTop}:de(n)),R(t)?((d=j(t,!0)).x+=t.clientLeft,d.y+=t.clientTop):a&&(d.x=he(a))),{x:l.left+c.scrollLeft-d.x,y:l.top+c.scrollTop-d.y,width:l.width,height:l.height}}function Ee(e){var t=new Map,r=new Set,n=[];function i(e){r.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!r.has(e)){var n=t.get(e);n&&i(n)}})),n.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){r.has(e.name)||i(e)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Le(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function Re(e){void 0===e&&(e={});var t=e,r=t.defaultModifiers,n=void 0===r?[]:r,i=t.defaultOptions,o=void 0===i?Be:i;return function(e,t,r){void 0===r&&(r=o);var i,s,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},Be,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},l=[],c=!1,d={state:a,setOptions:function(r){var i="function"==typeof r?r(a.options):r;h(),a.options=Object.assign({},o,a.options,i),a.scrollParents={reference:L(e)?pe(e):e.contextElement?pe(e.contextElement):[],popper:pe(t)};var s=function(e){var t=Ee(e);return k.reduce((function(e,r){return e.concat(t.filter((function(e){return e.phase===r})))}),[])}(function(e){var t=e.reduce((function(e,t){var r=e[t.name];return e[t.name]=r?Object.assign({},r,t,{options:Object.assign({},r.options,t.options),data:Object.assign({},r.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}([].concat(n,a.options.modifiers)));return a.orderedModifiers=s.filter((function(e){return e.enabled})),a.orderedModifiers.forEach((function(e){var t=e.name,r=e.options,n=void 0===r?{}:r,i=e.effect;if("function"==typeof i){var o=i({state:a,name:t,instance:d,options:n}),s=function(){};l.push(o||s)}})),d.update()},forceUpdate:function(){if(!c){var e=a.elements,t=e.reference,r=e.popper;if(Le(t,r)){a.rects={reference:ke(t,K(r),"fixed"===a.options.strategy),popper:z(r)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(e){return a.modifiersData[e.name]=Object.assign({},e.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var i=a.orderedModifiers[n],o=i.fn,s=i.options,l=void 0===s?{}:s,h=i.name;"function"==typeof o&&(a=o({state:a,options:l,name:h,instance:d})||a)}else a.reset=!1,n=-1}}},update:(i=function(){return new Promise((function(e){d.forceUpdate(),e(a)}))},function(){return s||(s=new Promise((function(e){Promise.resolve().then((function(){s=void 0,e(i())}))}))),s}),destroy:function(){h(),c=!0}};if(!Le(e,t))return d;function h(){l.forEach((function(e){return e()})),l=[]}return d.setOptions(r).then((function(e){!c&&r.onFirstUpdate&&r.onFirstUpdate(e)})),d}}var De=Re(),Me=Re({defaultModifiers:[oe,Se,ne,M,xe,Ae,$e,Q,we]}),Oe=Re({defaultModifiers:[oe,Se,ne,M]});const Te="transitionend",Ie=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let r=e.getAttribute("href");if(!r||!r.includes("#")&&!r.startsWith("."))return null;r.includes("#")&&!r.startsWith("#")&&(r=`#${r.split("#")[1]}`),t=r&&"#"!==r?r.trim():null}return t},Pe=e=>{const t=Ie(e);return t&&document.querySelector(t)?t:null},Fe=e=>{const t=Ie(e);return t?document.querySelector(t):null},He=e=>{e.dispatchEvent(new Event(Te))},je=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),ze=e=>je(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(e):null,Ne=e=>{if(!je(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),r=e.closest("details:not([open])");if(!r)return t;if(r!==e){const t=e.closest("summary");if(t&&t.parentNode!==r)return!1;if(null===t)return!1}return t},Ue=e=>!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"))),We=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?We(e.parentNode):null},qe=()=>{},Ge=e=>{e.offsetHeight},Ve=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Ke=[],Ze=()=>"rtl"===document.documentElement.dir,Ye=e=>{var t;t=()=>{const t=Ve();if(t){const r=e.NAME,n=t.fn[r];t.fn[r]=e.jQueryInterface,t.fn[r].Constructor=e,t.fn[r].noConflict=()=>(t.fn[r]=n,e.jQueryInterface)}},"loading"===document.readyState?(Ke.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of Ke)e()})),Ke.push(t)):t()},Xe=e=>{"function"==typeof e&&e()},Je=(e,t,r=!0)=>{if(!r)return void Xe(e);const n=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:r}=window.getComputedStyle(e);const n=Number.parseFloat(t),i=Number.parseFloat(r);return n||i?(t=t.split(",")[0],r=r.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(r))):0})(t)+5;let i=!1;const o=({target:r})=>{r===t&&(i=!0,t.removeEventListener(Te,o),Xe(e))};t.addEventListener(Te,o),setTimeout((()=>{i||He(t)}),n)},Qe=(e,t,r,n)=>{const i=e.length;let o=e.indexOf(t);return-1===o?!r&&n?e[i-1]:e[0]:(o+=r?1:-1,n&&(o=(o+i)%i),e[Math.max(0,Math.min(o,i-1))])},et=/[^.]*(?=\..*)\.|.*/,tt=/\..*/,rt=/::\d+$/,nt={};let it=1;const ot={mouseenter:"mouseover",mouseleave:"mouseout"},st=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function at(e,t){return t&&`${t}::${it++}`||e.uidEvent||it++}function lt(e){const t=at(e);return e.uidEvent=t,nt[t]=nt[t]||{},nt[t]}function ct(e,t,r=null){return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===r))}function dt(e,t,r){const n="string"==typeof t,i=n?r:t||r;let o=pt(e);return st.has(o)||(o=e),[n,i,o]}function ht(e,t,r,n,i){if("string"!=typeof t||!e)return;let[o,s,a]=dt(t,r,n);if(t in ot){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=lt(e),c=l[a]||(l[a]={}),d=ct(c,s,o?r:null);if(d)return void(d.oneOff=d.oneOff&&i);const h=at(s,t.replace(et,"")),u=o?function(e,t,r){return function n(i){const o=e.querySelectorAll(t);for(let{target:s}=i;s&&s!==this;s=s.parentNode)for(const a of o)if(a===s)return bt(i,{delegateTarget:s}),n.oneOff&&_t.off(e,i.type,t,r),r.apply(s,[i])}}(e,r,s):function(e,t){return function r(n){return bt(n,{delegateTarget:e}),r.oneOff&&_t.off(e,n.type,t),t.apply(e,[n])}}(e,s);u.delegationSelector=o?r:null,u.callable=s,u.oneOff=i,u.uidEvent=h,c[h]=u,e.addEventListener(a,u,o)}function ut(e,t,r,n,i){const o=ct(t[r],n,i);o&&(e.removeEventListener(r,o,Boolean(i)),delete t[r][o.uidEvent])}function ft(e,t,r,n){const i=t[r]||{};for(const o of Object.keys(i))if(o.includes(n)){const n=i[o];ut(e,t,r,n.callable,n.delegationSelector)}}function pt(e){return e=e.replace(tt,""),ot[e]||e}const _t={on(e,t,r,n){ht(e,t,r,n,!1)},one(e,t,r,n){ht(e,t,r,n,!0)},off(e,t,r,n){if("string"!=typeof t||!e)return;const[i,o,s]=dt(t,r,n),a=s!==t,l=lt(e),c=l[s]||{},d=t.startsWith(".");if(void 0===o){if(d)for(const r of Object.keys(l))ft(e,l,r,t.slice(1));for(const r of Object.keys(c)){const n=r.replace(rt,"");if(!a||t.includes(n)){const t=c[r];ut(e,l,s,t.callable,t.delegationSelector)}}}else{if(!Object.keys(c).length)return;ut(e,l,s,o,i?r:null)}},trigger(e,t,r){if("string"!=typeof t||!e)return null;const n=Ve();let i=null,o=!0,s=!0,a=!1;t!==pt(t)&&n&&(i=n.Event(t,r),n(e).trigger(i),o=!i.isPropagationStopped(),s=!i.isImmediatePropagationStopped(),a=i.isDefaultPrevented());let l=new Event(t,{bubbles:o,cancelable:!0});return l=bt(l,r),a&&l.preventDefault(),s&&e.dispatchEvent(l),l.defaultPrevented&&i&&i.preventDefault(),l}};function bt(e,t){for(const[r,n]of Object.entries(t||{}))try{e[r]=n}catch(t){Object.defineProperty(e,r,{configurable:!0,get:()=>n})}return e}const gt=new Map,mt={set(e,t,r){gt.has(e)||gt.set(e,new Map);const n=gt.get(e);n.has(t)||0===n.size?n.set(t,r):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(e,t)=>gt.has(e)&&gt.get(e).get(t)||null,remove(e,t){if(!gt.has(e))return;const r=gt.get(e);r.delete(t),0===r.size&&gt.delete(e)}};function vt(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function At(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const yt={setDataAttribute(e,t,r){e.setAttribute(`data-bs-${At(t)}`,r)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${At(t)}`)},getDataAttributes(e){if(!e)return{};const t={},r=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const n of r){let r=n.replace(/^bs/,"");r=r.charAt(0).toLowerCase()+r.slice(1,r.length),t[r]=vt(e.dataset[n])}return t},getDataAttribute:(e,t)=>vt(e.getAttribute(`data-bs-${At(t)}`))};class Ct{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const r=je(t)?yt.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof r?r:{},...je(t)?yt.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const n of Object.keys(t)){const i=t[n],o=e[n],s=je(o)?"element":null==(r=o)?`${r}`:Object.prototype.toString.call(r).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}var r}}class wt extends Ct{constructor(e,t){super(),(e=ze(e))&&(this._element=e,this._config=this._getConfig(t),mt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){mt.remove(this._element,this.constructor.DATA_KEY),_t.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,r=!0){Je(e,t,r)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return mt.get(ze(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.2.0"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const xt=(e,t="hide")=>{const r=`click.dismiss${e.EVENT_KEY}`,n=e.NAME;_t.on(document,r,`[data-bs-dismiss="${n}"]`,(function(r){if(["A","AREA"].includes(this.tagName)&&r.preventDefault(),Ue(this))return;const i=Fe(this)||this.closest(`.${n}`);e.getOrCreateInstance(i)[t]()}))};class St extends wt{static get NAME(){return"alert"}close(){if(_t.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,e)}_destroyElement(){this._element.remove(),_t.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(e){return this.each((function(){const t=St.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}xt(St,"close"),Ye(St);const $t='[data-bs-toggle="button"]';class kt extends wt{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(e){return this.each((function(){const t=kt.getOrCreateInstance(this);"toggle"===e&&t[e]()}))}}_t.on(document,"click.bs.button.data-api",$t,(e=>{e.preventDefault();const t=e.target.closest($t);kt.getOrCreateInstance(t).toggle()})),Ye(kt);const Et={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const r=[];let n=e.parentNode.closest(t);for(;n;)r.push(n),n=n.parentNode.closest(t);return r},prev(e,t){let r=e.previousElementSibling;for(;r;){if(r.matches(t))return[r];r=r.previousElementSibling}return[]},next(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return[r];r=r.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!Ue(e)&&Ne(e)))}},Bt=".bs.swipe",Lt={endCallback:null,leftCallback:null,rightCallback:null},Rt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Dt extends Ct{constructor(e,t){super(),this._element=e,e&&Dt.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Lt}static get DefaultType(){return Rt}static get NAME(){return"swipe"}dispose(){_t.off(this._element,Bt)}_start(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),Xe(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=40)return;const t=e/this._deltaX;this._deltaX=0,t&&Xe(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(_t.on(this._element,"pointerdown.bs.swipe",(e=>this._start(e))),_t.on(this._element,"pointerup.bs.swipe",(e=>this._end(e))),this._element.classList.add("pointer-event")):(_t.on(this._element,"touchstart.bs.swipe",(e=>this._start(e))),_t.on(this._element,"touchmove.bs.swipe",(e=>this._move(e))),_t.on(this._element,"touchend.bs.swipe",(e=>this._end(e))))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const Mt="next",Ot="prev",Tt="left",It="right",Pt="slid.bs.carousel",Ft="carousel",Ht="active",jt=".active",zt=".carousel-item",Nt={ArrowLeft:It,ArrowRight:Tt},Ut={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Wt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class qt extends wt{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Et.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Ft&&this.cycle()}static get Default(){return Ut}static get DefaultType(){return Wt}static get NAME(){return"carousel"}next(){this._slide(Mt)}nextWhenVisible(){!document.hidden&&Ne(this._element)&&this.next()}prev(){this._slide(Ot)}pause(){this._isSliding&&He(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?_t.one(this._element,Pt,(()=>this.cycle())):this.cycle())}to(e){const t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding)return void _t.one(this._element,Pt,(()=>this.to(e)));const r=this._getItemIndex(this._getActive());if(r===e)return;const n=e>r?Mt:Ot;this._slide(n,t[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&_t.on(this._element,"keydown.bs.carousel",(e=>this._keydown(e))),"hover"===this._config.pause&&(_t.on(this._element,"mouseenter.bs.carousel",(()=>this.pause())),_t.on(this._element,"mouseleave.bs.carousel",(()=>this._maybeEnableCycle()))),this._config.touch&&Dt.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const e of Et.find(".carousel-item img",this._element))_t.on(e,"dragstart.bs.carousel",(e=>e.preventDefault()));const e={leftCallback:()=>this._slide(this._directionToOrder(Tt)),rightCallback:()=>this._slide(this._directionToOrder(It)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Dt(this._element,e)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=Nt[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=Et.findOne(jt,this._indicatorsElement);t.classList.remove(Ht),t.removeAttribute("aria-current");const r=Et.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);r&&(r.classList.add(Ht),r.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}_slide(e,t=null){if(this._isSliding)return;const r=this._getActive(),n=e===Mt,i=t||Qe(this._getItems(),r,n,this._config.wrap);if(i===r)return;const o=this._getItemIndex(i),s=t=>_t.trigger(this._element,t,{relatedTarget:i,direction:this._orderToDirection(e),from:this._getItemIndex(r),to:o});if(s("slide.bs.carousel").defaultPrevented)return;if(!r||!i)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=i;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";i.classList.add(c),Ge(i),r.classList.add(l),i.classList.add(l);this._queueCallback((()=>{i.classList.remove(l,c),i.classList.add(Ht),r.classList.remove(Ht,c,l),this._isSliding=!1,s(Pt)}),r,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Et.findOne(".active.carousel-item",this._element)}_getItems(){return Et.find(zt,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return Ze()?e===Tt?Ot:Mt:e===Tt?Mt:Ot}_orderToDirection(e){return Ze()?e===Ot?Tt:It:e===Ot?It:Tt}static jQueryInterface(e){return this.each((function(){const t=qt.getOrCreateInstance(this,e);if("number"!=typeof e){if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}}else t.to(e)}))}}_t.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",(function(e){const t=Fe(this);if(!t||!t.classList.contains(Ft))return;e.preventDefault();const r=qt.getOrCreateInstance(t),n=this.getAttribute("data-bs-slide-to");return n?(r.to(n),void r._maybeEnableCycle()):"next"===yt.getDataAttribute(this,"slide")?(r.next(),void r._maybeEnableCycle()):(r.prev(),void r._maybeEnableCycle())})),_t.on(window,"load.bs.carousel.data-api",(()=>{const e=Et.find('[data-bs-ride="carousel"]');for(const t of e)qt.getOrCreateInstance(t)})),Ye(qt);const Gt="show",Vt="collapse",Kt="collapsing",Zt='[data-bs-toggle="collapse"]',Yt={parent:null,toggle:!0},Xt={parent:"(null|element)",toggle:"boolean"};class Jt extends wt{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const r=Et.find(Zt);for(const e of r){const t=Pe(e),r=Et.find(t).filter((e=>e===this._element));null!==t&&r.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Yt}static get DefaultType(){return Xt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>Jt.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(_t.trigger(this._element,"show.bs.collapse").defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(Vt),this._element.classList.add(Kt),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const r=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Kt),this._element.classList.add(Vt,Gt),this._element.style[t]="",_t.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[t]=`${this._element[r]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(_t.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,Ge(this._element),this._element.classList.add(Kt),this._element.classList.remove(Vt,Gt);for(const e of this._triggerArray){const t=Fe(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Kt),this._element.classList.add(Vt),_t.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(e=this._element){return e.classList.contains(Gt)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=ze(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(Zt);for(const t of e){const e=Fe(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=Et.find(":scope .collapse .collapse",this._config.parent);return Et.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const r of e)r.classList.toggle("collapsed",!t),r.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const r=Jt.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===r[e])throw new TypeError(`No method named "${e}"`);r[e]()}}))}}_t.on(document,"click.bs.collapse.data-api",Zt,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();const t=Pe(this),r=Et.find(t);for(const e of r)Jt.getOrCreateInstance(e,{toggle:!1}).toggle()})),Ye(Jt);const Qt="dropdown",er="ArrowUp",tr="ArrowDown",rr="click.bs.dropdown.data-api",nr="keydown.bs.dropdown.data-api",ir="show",or='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',sr=`${or}.show`,ar=".dropdown-menu",lr=Ze()?"top-end":"top-start",cr=Ze()?"top-start":"top-end",dr=Ze()?"bottom-end":"bottom-start",hr=Ze()?"bottom-start":"bottom-end",ur=Ze()?"left-start":"right-start",fr=Ze()?"right-start":"left-start",pr={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},_r={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class br extends wt{constructor(e,t){super(e,t),this._popper=null,this._parent=this._element.parentNode,this._menu=Et.findOne(ar,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return pr}static get DefaultType(){return _r}static get NAME(){return Qt}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Ue(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!_t.trigger(this._element,"show.bs.dropdown",e).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of[].concat(...document.body.children))_t.on(e,"mouseover",qe);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(ir),this._element.classList.add(ir),_t.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(Ue(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){if(!_t.trigger(this._element,"hide.bs.dropdown",e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))_t.off(e,"mouseover",qe);this._popper&&this._popper.destroy(),this._menu.classList.remove(ir),this._element.classList.remove(ir),this._element.setAttribute("aria-expanded","false"),yt.removeDataAttribute(this._menu,"popper"),_t.trigger(this._element,"hidden.bs.dropdown",e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!je(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${Qt.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){if(void 0===n)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=this._parent:je(this._config.reference)?e=ze(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const t=this._getPopperConfig();this._popper=Me(e,this._menu,t)}_isShown(){return this._menu.classList.contains(ir)}_getPlacement(){const e=this._parent;if(e.classList.contains("dropend"))return ur;if(e.classList.contains("dropstart"))return fr;if(e.classList.contains("dropup-center"))return"top";if(e.classList.contains("dropdown-center"))return"bottom";const t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?cr:lr:t?hr:dr}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(yt.setDataAttribute(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_selectMenuItem({key:e,target:t}){const r=Et.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((e=>Ne(e)));r.length&&Qe(r,t,e===tr,!r.includes(t)).focus()}static jQueryInterface(e){return this.each((function(){const t=br.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}static clearMenus(e){if(2===e.button||"keyup"===e.type&&"Tab"!==e.key)return;const t=Et.find(sr);for(const r of t){const t=br.getInstance(r);if(!t||!1===t._config.autoClose)continue;const n=e.composedPath(),i=n.includes(t._menu);if(n.includes(t._element)||"inside"===t._config.autoClose&&!i||"outside"===t._config.autoClose&&i)continue;if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const o={relatedTarget:t._element};"click"===e.type&&(o.clickEvent=e),t._completeHide(o)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),r="Escape"===e.key,n=[er,tr].includes(e.key);if(!n&&!r)return;if(t&&!r)return;e.preventDefault();const i=Et.findOne(or,e.delegateTarget.parentNode),o=br.getOrCreateInstance(i);if(n)return e.stopPropagation(),o.show(),void o._selectMenuItem(e);o._isShown()&&(e.stopPropagation(),o.hide(),i.focus())}}_t.on(document,nr,or,br.dataApiKeydownHandler),_t.on(document,nr,ar,br.dataApiKeydownHandler),_t.on(document,rr,br.clearMenus),_t.on(document,"keyup.bs.dropdown.data-api",br.clearMenus),_t.on(document,rr,or,(function(e){e.preventDefault(),br.getOrCreateInstance(this).toggle()})),Ye(br);const gr=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",mr=".sticky-top",vr="padding-right",Ar="margin-right";class yr{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,vr,(t=>t+e)),this._setElementAttributes(gr,vr,(t=>t+e)),this._setElementAttributes(mr,Ar,(t=>t-e))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,vr),this._resetElementAttributes(gr,vr),this._resetElementAttributes(mr,Ar)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,r){const n=this.getWidth();this._applyManipulationCallback(e,(e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+n)return;this._saveInitialAttribute(e,t);const i=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${r(Number.parseFloat(i))}px`)}))}_saveInitialAttribute(e,t){const r=e.style.getPropertyValue(t);r&&yt.setDataAttribute(e,t,r)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,(e=>{const r=yt.getDataAttribute(e,t);null!==r?(yt.removeDataAttribute(e,t),e.style.setProperty(t,r)):e.style.removeProperty(t)}))}_applyManipulationCallback(e,t){if(je(e))t(e);else for(const r of Et.find(e,this._element))t(r)}}const Cr="backdrop",wr="show",xr="mousedown.bs.backdrop",Sr={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},$r={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class kr extends Ct{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return Sr}static get DefaultType(){return $r}static get NAME(){return Cr}show(e){if(!this._config.isVisible)return void Xe(e);this._append();const t=this._getElement();this._config.isAnimated&&Ge(t),t.classList.add(wr),this._emulateAnimation((()=>{Xe(e)}))}hide(e){this._config.isVisible?(this._getElement().classList.remove(wr),this._emulateAnimation((()=>{this.dispose(),Xe(e)}))):Xe(e)}dispose(){this._isAppended&&(_t.off(this._element,xr),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=ze(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),_t.on(e,xr,(()=>{Xe(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(e){Je(e,this._getElement(),this._config.isAnimated)}}const Er=".bs.focustrap",Br="backward",Lr={autofocus:!0,trapElement:null},Rr={autofocus:"boolean",trapElement:"element"};class Dr extends Ct{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Lr}static get DefaultType(){return Rr}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),_t.off(document,Er),_t.on(document,"focusin.bs.focustrap",(e=>this._handleFocusin(e))),_t.on(document,"keydown.tab.bs.focustrap",(e=>this._handleKeydown(e))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,_t.off(document,Er))}_handleFocusin(e){const{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;const r=Et.focusableChildren(t);0===r.length?t.focus():this._lastTabNavDirection===Br?r[r.length-1].focus():r[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?Br:"forward")}}const Mr=".bs.modal",Or="hidden.bs.modal",Tr="show.bs.modal",Ir="modal-open",Pr="show",Fr="modal-static",Hr={backdrop:!0,focus:!0,keyboard:!0},jr={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class zr extends wt{constructor(e,t){super(e,t),this._dialog=Et.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new yr,this._addEventListeners()}static get Default(){return Hr}static get DefaultType(){return jr}static get NAME(){return"modal"}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown||this._isTransitioning)return;_t.trigger(this._element,Tr,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ir),this._adjustDialog(),this._backdrop.show((()=>this._showElement(e))))}hide(){if(!this._isShown||this._isTransitioning)return;_t.trigger(this._element,"hide.bs.modal").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Pr),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated()))}dispose(){for(const e of[window,this._dialog])_t.off(e,Mr);this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new kr({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Dr({trapElement:this._element})}_showElement(e){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const t=Et.findOne(".modal-body",this._dialog);t&&(t.scrollTop=0),Ge(this._element),this._element.classList.add(Pr);this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,_t.trigger(this._element,"shown.bs.modal",{relatedTarget:e})}),this._dialog,this._isAnimated())}_addEventListeners(){_t.on(this._element,"keydown.dismiss.bs.modal",(e=>{if("Escape"===e.key)return this._config.keyboard?(e.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),_t.on(window,"resize.bs.modal",(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),_t.on(this._element,"mousedown.dismiss.bs.modal",(e=>{e.target===e.currentTarget&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Ir),this._resetAdjustments(),this._scrollBar.reset(),_t.trigger(this._element,Or)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(_t.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._element.style.overflowY;"hidden"===t||this._element.classList.contains(Fr)||(e||(this._element.style.overflowY="hidden"),this._element.classList.add(Fr),this._queueCallback((()=>{this._element.classList.remove(Fr),this._queueCallback((()=>{this._element.style.overflowY=t}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),r=t>0;if(r&&!e){const e=Ze()?"paddingLeft":"paddingRight";this._element.style[e]=`${t}px`}if(!r&&e){const e=Ze()?"paddingRight":"paddingLeft";this._element.style[e]=`${t}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,t){return this.each((function(){const r=zr.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===r[e])throw new TypeError(`No method named "${e}"`);r[e](t)}}))}}_t.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(e){const t=Fe(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),_t.one(t,Tr,(e=>{e.defaultPrevented||_t.one(t,Or,(()=>{Ne(this)&&this.focus()}))}));const r=Et.findOne(".modal.show");r&&zr.getInstance(r).hide();zr.getOrCreateInstance(t).toggle(this)})),xt(zr),Ye(zr);const Nr="show",Ur="showing",Wr="hiding",qr=".offcanvas.show",Gr="hidePrevented.bs.offcanvas",Vr="hidden.bs.offcanvas",Kr={backdrop:!0,keyboard:!0,scroll:!1},Zr={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Yr extends wt{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Kr}static get DefaultType(){return Zr}static get NAME(){return"offcanvas"}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown)return;if(_t.trigger(this._element,"show.bs.offcanvas",{relatedTarget:e}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||(new yr).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Ur);this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Nr),this._element.classList.remove(Ur),_t.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:e})}),this._element,!0)}hide(){if(!this._isShown)return;if(_t.trigger(this._element,"hide.bs.offcanvas").defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Wr),this._backdrop.hide();this._queueCallback((()=>{this._element.classList.remove(Nr,Wr),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new yr).reset(),_t.trigger(this._element,Vr)}),this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=Boolean(this._config.backdrop);return new kr({className:"offcanvas-backdrop",isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?()=>{"static"!==this._config.backdrop?this.hide():_t.trigger(this._element,Gr)}:null})}_initializeFocusTrap(){return new Dr({trapElement:this._element})}_addEventListeners(){_t.on(this._element,"keydown.dismiss.bs.offcanvas",(e=>{"Escape"===e.key&&(this._config.keyboard?this.hide():_t.trigger(this._element,Gr))}))}static jQueryInterface(e){return this.each((function(){const t=Yr.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}_t.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(e){const t=Fe(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),Ue(this))return;_t.one(t,Vr,(()=>{Ne(this)&&this.focus()}));const r=Et.findOne(qr);r&&r!==t&&Yr.getInstance(r).hide();Yr.getOrCreateInstance(t).toggle(this)})),_t.on(window,"load.bs.offcanvas.data-api",(()=>{for(const e of Et.find(qr))Yr.getOrCreateInstance(e).show()})),_t.on(window,"resize.bs.offcanvas",(()=>{for(const e of Et.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(e).position&&Yr.getOrCreateInstance(e).hide()})),xt(Yr),Ye(Yr);const Xr=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Jr=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Qr=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,en=(e,t)=>{const r=e.nodeName.toLowerCase();return t.includes(r)?!Xr.has(r)||Boolean(Jr.test(e.nodeValue)||Qr.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(r)))},tn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]};const rn={allowList:tn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},nn={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},on={entry:"(string|element|function|null)",selector:"(string|element)"};class sn extends Ct{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return rn}static get DefaultType(){return nn}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,r]of Object.entries(this._config.content))this._setContent(e,r,t);const t=e.children[0],r=this._resolvePossibleFunction(this._config.extraClass);return r&&t.classList.add(...r.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,r]of Object.entries(e))super._typeCheckConfig({selector:t,entry:r},on)}_setContent(e,t,r){const n=Et.findOne(r,e);n&&((t=this._resolvePossibleFunction(t))?je(t)?this._putElementInTemplate(ze(t),n):this._config.html?n.innerHTML=this._maybeSanitize(t):n.textContent=t:n.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,r){if(!e.length)return e;if(r&&"function"==typeof r)return r(e);const n=(new window.DOMParser).parseFromString(e,"text/html"),i=[].concat(...n.body.querySelectorAll("*"));for(const e of i){const r=e.nodeName.toLowerCase();if(!Object.keys(t).includes(r)){e.remove();continue}const n=[].concat(...e.attributes),i=[].concat(t["*"]||[],t[r]||[]);for(const t of n)en(t,i)||e.removeAttribute(t.nodeName)}return n.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return"function"==typeof e?e(this):e}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const an=new Set(["sanitize","allowList","sanitizeFn"]),ln="fade",cn="show",dn=".modal",hn="hide.bs.modal",un="hover",fn="focus",pn={AUTO:"auto",TOP:"top",RIGHT:Ze()?"left":"right",BOTTOM:"bottom",LEFT:Ze()?"right":"left"},_n={allowList:tn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},bn={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class gn extends wt{constructor(e,t){if(void 0===n)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=!1,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners()}static get Default(){return _n}static get DefaultType(){return bn}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(e){if(this._isEnabled){if(e){const t=this._initializeOnDelegatedTarget(e);return t._activeTrigger.click=!t._activeTrigger.click,void(t._isWithActiveTrigger()?t._enter():t._leave())}this._isShown()?this._leave():this._enter()}}dispose(){clearTimeout(this._timeout),_t.off(this._element.closest(dn),hn,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=_t.trigger(this._element,this.constructor.eventName("show")),t=(We(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this.tip&&(this.tip.remove(),this.tip=null);const r=this._getTipElement();this._element.setAttribute("aria-describedby",r.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(r),_t.trigger(this._element,this.constructor.eventName("inserted"))),this._popper?this._popper.update():this._popper=this._createPopper(r),r.classList.add(cn),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))_t.on(e,"mouseover",qe);this._queueCallback((()=>{const e=this._isHovered;this._isHovered=!1,_t.trigger(this._element,this.constructor.eventName("shown")),e&&this._leave()}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(_t.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;const e=this._getTipElement();if(e.classList.remove(cn),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))_t.off(e,"mouseover",qe);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=!1;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||e.remove(),this._element.removeAttribute("aria-describedby"),_t.trigger(this._element,this.constructor.eventName("hidden")),this._disposePopper())}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(ln,cn),t.classList.add(`bs-${this.constructor.NAME}-auto`);const r=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",r),this._isAnimated()&&t.classList.add(ln),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new sn({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._config.originalTitle}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ln)}_isShown(){return this.tip&&this.tip.classList.contains(cn)}_createPopper(e){const t="function"==typeof this._config.placement?this._config.placement.call(this,e,this._element):this._config.placement,r=pn[t.toUpperCase()];return Me(this._element,e,this._getPopperConfig(r))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return"function"==typeof e?e.call(this._element):e}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)_t.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>this.toggle(e)));else if("manual"!==t){const e=t===un?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),r=t===un?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");_t.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?fn:un]=!0,t._enter()})),_t.on(this._element,r,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?fn:un]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},_t.on(this._element.closest(dn),hn,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const e=this._config.originalTitle;e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=yt.getDataAttributes(this._element);for(const e of Object.keys(t))an.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:ze(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),e.originalTitle=this._element.getAttribute("title")||"","number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const t in this._config)this.constructor.Default[t]!==this._config[t]&&(e[t]=this._config[t]);return e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(e){return this.each((function(){const t=gn.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}Ye(gn);const mn={...gn.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},vn={...gn.DefaultType,content:"(null|string|element|function)"};class An extends gn{static get Default(){return mn}static get DefaultType(){return vn}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(e){return this.each((function(){const t=An.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}Ye(An);const yn="click.bs.scrollspy",Cn="active",wn="[href]",xn={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null},Sn={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element"};class $n extends wt{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return xn}static get DefaultType(){return Sn}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=ze(e.target)||document.body,e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(_t.off(this._config.target,yn),_t.on(this._config.target,yn,wn,(e=>{const t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();const r=this._rootElement||window,n=t.offsetTop-this._element.offsetTop;if(r.scrollTo)return void r.scrollTo({top:n,behavior:"smooth"});r.scrollTop=n}})))}_getNewObserver(){const e={root:this._rootElement,threshold:[.1,.5,1],rootMargin:this._getRootMargin()};return new IntersectionObserver((e=>this._observerCallback(e)),e)}_observerCallback(e){const t=e=>this._targetLinks.get(`#${e.target.id}`),r=e=>{this._previousScrollData.visibleEntryTop=e.target.offsetTop,this._process(t(e))},n=(this._rootElement||document.documentElement).scrollTop,i=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of e){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(t(o));continue}const e=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(i&&e){if(r(o),!n)return}else i||e||r(o)}}_getRootMargin(){return this._config.offset?`${this._config.offset}px 0px -30%`:this._config.rootMargin}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=Et.find(wn,this._config.target);for(const t of e){if(!t.hash||Ue(t))continue;const e=Et.findOne(t.hash,this._element);Ne(e)&&(this._targetLinks.set(t.hash,t),this._observableSections.set(t.hash,e))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add(Cn),this._activateParents(e),_t.trigger(this._element,"activate.bs.scrollspy",{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("dropdown-item"))Et.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add(Cn);else for(const t of Et.parents(e,".nav, .list-group"))for(const e of Et.prev(t,".nav-link, .nav-item > .nav-link, .list-group-item"))e.classList.add(Cn)}_clearActiveClass(e){e.classList.remove(Cn);const t=Et.find("[href].active",e);for(const e of t)e.classList.remove(Cn)}static jQueryInterface(e){return this.each((function(){const t=$n.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}}))}}_t.on(window,"load.bs.scrollspy.data-api",(()=>{for(const e of Et.find('[data-bs-spy="scroll"]'))$n.getOrCreateInstance(e)})),Ye($n);const kn="ArrowLeft",En="ArrowRight",Bn="ArrowUp",Ln="ArrowDown",Rn="active",Dn="fade",Mn="show",On='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Tn=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ${On}`;class In extends wt{constructor(e){super(e),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),_t.on(this._element,"keydown.bs.tab",(e=>this._keydown(e))))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),r=t?_t.trigger(t,"hide.bs.tab",{relatedTarget:e}):null;_t.trigger(e,"show.bs.tab",{relatedTarget:t}).defaultPrevented||r&&r.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){if(!e)return;e.classList.add(Rn),this._activate(Fe(e));this._queueCallback((()=>{"tab"===e.getAttribute("role")?(e.focus(),e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleDropDown(e,!0),_t.trigger(e,"shown.bs.tab",{relatedTarget:t})):e.classList.add(Mn)}),e,e.classList.contains(Dn))}_deactivate(e,t){if(!e)return;e.classList.remove(Rn),e.blur(),this._deactivate(Fe(e));this._queueCallback((()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleDropDown(e,!1),_t.trigger(e,"hidden.bs.tab",{relatedTarget:t})):e.classList.remove(Mn)}),e,e.classList.contains(Dn))}_keydown(e){if(![kn,En,Bn,Ln].includes(e.key))return;e.stopPropagation(),e.preventDefault();const t=[En,Ln].includes(e.key),r=Qe(this._getChildren().filter((e=>!Ue(e))),e.target,t,!0);r&&In.getOrCreateInstance(r).show()}_getChildren(){return Et.find(Tn,this._parent)}_getActiveElem(){return this._getChildren().find((e=>this._elemIsActive(e)))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),r=this._getOuterElement(e);e.setAttribute("aria-selected",t),r!==e&&this._setAttributeIfNotExists(r,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=Fe(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`#${e.id}`))}_toggleDropDown(e,t){const r=this._getOuterElement(e);if(!r.classList.contains("dropdown"))return;const n=(e,n)=>{const i=Et.findOne(e,r);i&&i.classList.toggle(n,t)};n(".dropdown-toggle",Rn),n(".dropdown-menu",Mn),n(".dropdown-item",Rn),r.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,r){e.hasAttribute(t)||e.setAttribute(t,r)}_elemIsActive(e){return e.classList.contains(Rn)}_getInnerElement(e){return e.matches(Tn)?e:Et.findOne(Tn,e)}_getOuterElement(e){return e.closest(".nav-item, .list-group-item")||e}static jQueryInterface(e){return this.each((function(){const t=In.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}}))}}_t.on(document,"click.bs.tab",On,(function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),Ue(this)||In.getOrCreateInstance(this).show()})),_t.on(window,"load.bs.tab",(()=>{for(const e of Et.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]'))In.getOrCreateInstance(e)})),Ye(In);const Pn="hide",Fn="show",Hn="showing",jn={animation:"boolean",autohide:"boolean",delay:"number"},zn={animation:!0,autohide:!0,delay:5e3};class Nn extends wt{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return zn}static get DefaultType(){return jn}static get NAME(){return"toast"}show(){if(_t.trigger(this._element,"show.bs.toast").defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(Pn),Ge(this._element),this._element.classList.add(Fn,Hn),this._queueCallback((()=>{this._element.classList.remove(Hn),_t.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation)}hide(){if(!this.isShown())return;if(_t.trigger(this._element,"hide.bs.toast").defaultPrevented)return;this._element.classList.add(Hn),this._queueCallback((()=>{this._element.classList.add(Pn),this._element.classList.remove(Hn,Fn),_t.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Fn),super.dispose()}isShown(){return this._element.classList.contains(Fn)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const r=e.relatedTarget;this._element===r||this._element.contains(r)||this._maybeScheduleHide()}_setListeners(){_t.on(this._element,"mouseover.bs.toast",(e=>this._onInteraction(e,!0))),_t.on(this._element,"mouseout.bs.toast",(e=>this._onInteraction(e,!1))),_t.on(this._element,"focusin.bs.toast",(e=>this._onInteraction(e,!0))),_t.on(this._element,"focusout.bs.toast",(e=>this._onInteraction(e,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each((function(){const t=Nn.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}xt(Nn),Ye(Nn)},606:(e,t)=>{var r;r=function(e){e.version="1.2.2";var t=function(){for(var e=0,t=new Array(256),r=0;256!=r;++r)e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=1&(e=r)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1)?-306674912^e>>>1:e>>>1,t[r]=e;return"undefined"!=typeof Int32Array?new Int32Array(t):t}(),r=function(e){var t=0,r=0,n=0,i="undefined"!=typeof Int32Array?new Int32Array(4096):new Array(4096);for(n=0;256!=n;++n)i[n]=e[n];for(n=0;256!=n;++n)for(r=e[n],t=256+n;t<4096;t+=256)r=i[t]=r>>>8^e[255&r];var o=[];for(n=1;16!=n;++n)o[n-1]="undefined"!=typeof Int32Array?i.subarray(256*n,256*n+256):i.slice(256*n,256*n+256);return o}(t),n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],l=r[5],c=r[6],d=r[7],h=r[8],u=r[9],f=r[10],p=r[11],_=r[12],b=r[13],g=r[14];e.table=t,e.bstr=function(e,r){for(var n=-1^r,i=0,o=e.length;i<o;)n=n>>>8^t[255&(n^e.charCodeAt(i++))];return~n},e.buf=function(e,r){for(var m=-1^r,v=e.length-15,A=0;A<v;)m=g[e[A++]^255&m]^b[e[A++]^m>>8&255]^_[e[A++]^m>>16&255]^p[e[A++]^m>>>24]^f[e[A++]]^u[e[A++]]^h[e[A++]]^d[e[A++]]^c[e[A++]]^l[e[A++]]^a[e[A++]]^s[e[A++]]^o[e[A++]]^i[e[A++]]^n[e[A++]]^t[e[A++]];for(v+=15;A<v;)m=m>>>8^t[255&(m^e[A++])];return~m},e.str=function(e,r){for(var n=-1^r,i=0,o=e.length,s=0,a=0;i<o;)(s=e.charCodeAt(i++))<128?n=n>>>8^t[255&(n^s)]:s<2048?n=(n=n>>>8^t[255&(n^(192|s>>6&31))])>>>8^t[255&(n^(128|63&s))]:s>=55296&&s<57344?(s=64+(1023&s),a=1023&e.charCodeAt(i++),n=(n=(n=(n=n>>>8^t[255&(n^(240|s>>8&7))])>>>8^t[255&(n^(128|s>>2&63))])>>>8^t[255&(n^(128|a>>6&15|(3&s)<<4))])>>>8^t[255&(n^(128|63&a))]):n=(n=(n=n>>>8^t[255&(n^(224|s>>12&15))])>>>8^t[255&(n^(128|s>>6&63))])>>>8^t[255&(n^(128|63&s))];return~n}},"undefined"==typeof DO_NOT_EXPORT_CRC?r(t):r({})},687:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(15),i=r.n(n),o=r(645),s=r.n(o)()(i());s.push([e.id,'/*!\n * Bootstrap v5.2.0 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Copyright 2011-2022 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */:root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 13, 110, 253;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg-rgb: 255, 255, 255;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-bg: #fff;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.375rem;--bs-border-radius-sm: 0.25rem;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-2xl: 2rem;--bs-border-radius-pill: 50rem;--bs-link-color: #0d6efd;--bs-link-hover-color: #0a58ca;--bs-code-color: #d63384;--bs-highlight-bg: #fff3cd}*,*::before,*::after{box-sizing:border-box}@media(prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media(min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + 0.6vw)}@media(min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + 0.3vw)}@media(min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:0.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:#6c757d}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-0.5*var(--bs-gutter-x));margin-left:calc(-0.5*var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: 0.25rem}.g-1,.gy-1{--bs-gutter-y: 0.25rem}.g-2,.gx-2{--bs-gutter-x: 0.5rem}.g-2,.gy-2{--bs-gutter-y: 0.5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media(min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: 0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: 0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: 0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: 0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media(min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: 0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y: 0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x: 0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y: 0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media(min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: 0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: 0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: 0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: 0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media(min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: 0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: 0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: 0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: 0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media(min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: 0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: 0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: 0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: 0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #212529;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.375rem;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check:focus+.btn,.btn:focus{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn-check:active+.btn,.btn:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus,.btn-check:active+.btn:focus,.btn:active:focus,.btn.active:focus,.btn.show:focus{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0b5ed7;--bs-btn-hover-border-color: #0a58ca;--bs-btn-focus-shadow-rgb: 49, 132, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0a58ca;--bs-btn-active-border-color: #0a53be;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #0d6efd;--bs-btn-disabled-border-color: #0d6efd}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5c636a;--bs-btn-hover-border-color: #565e64;--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565e64;--bs-btn-active-border-color: #51585e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #157347;--bs-btn-hover-border-color: #146c43;--bs-btn-focus-shadow-rgb: 60, 153, 110;--bs-btn-active-color: #fff;--bs-btn-active-bg: #146c43;--bs-btn-active-border-color: #13653f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #31d2f2;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffca2c;--bs-btn-hover-border-color: #ffc720;--bs-btn-focus-shadow-rgb: 217, 164, 6;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd39;--bs-btn-active-border-color: #ffc720;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #bb2d3b;--bs-btn-hover-border-color: #b02a37;--bs-btn-focus-shadow-rgb: 225, 83, 97;--bs-btn-active-color: #fff;--bs-btn-active-bg: #b02a37;--bs-btn-active-border-color: #a52834;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #424649;--bs-btn-hover-border-color: #373b3e;--bs-btn-focus-shadow-rgb: 66, 70, 73;--bs-btn-active-color: #fff;--bs-btn-active-bg: #4d5154;--bs-btn-active-border-color: #373b3e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-primary{--bs-btn-color: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0d6efd;--bs-btn-hover-border-color: #0d6efd;--bs-btn-focus-shadow-rgb: 13, 110, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0d6efd;--bs-btn-active-border-color: #0d6efd;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #0d6efd;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0d6efd;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25, 135, 84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255, 193, 7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220, 53, 69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33, 37, 41;--bs-btn-active-color: #fff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: none;--bs-btn-focus-shadow-rgb: 49, 132, 253;text-decoration:underline}.btn-link:focus{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.25rem}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #e9ecef;--bs-progress-border-radius: 0.375rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #0d6efd;--bs-progress-bar-transition: width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 16 16\' fill=\'%23000\'%3e%3cpath d=\'M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z\'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(var(--bs-modal-header-padding-y)*-0.5) calc(var(--bs-modal-header-padding-x)*-0.5) calc(var(--bs-modal-header-padding-y)*-0.5) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}',"",{version:3,sources:["webpack://./src/bootstrap.scss","webpack://./node_modules/bootstrap/scss/mixins/_banner.scss","webpack://./node_modules/bootstrap/scss/_root.scss","webpack://./node_modules/bootstrap/scss/vendor/_rfs.scss","webpack://./node_modules/bootstrap/scss/_reboot.scss","webpack://./node_modules/bootstrap/scss/_variables.scss","webpack://./node_modules/bootstrap/scss/mixins/_border-radius.scss","webpack://./node_modules/bootstrap/scss/_type.scss","webpack://./node_modules/bootstrap/scss/mixins/_lists.scss","webpack://./node_modules/bootstrap/scss/_images.scss","webpack://./node_modules/bootstrap/scss/mixins/_image.scss","webpack://./node_modules/bootstrap/scss/_containers.scss","webpack://./node_modules/bootstrap/scss/mixins/_container.scss","webpack://./node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack://./node_modules/bootstrap/scss/_grid.scss","webpack://./node_modules/bootstrap/scss/mixins/_grid.scss","webpack://./node_modules/bootstrap/scss/_buttons.scss","webpack://./node_modules/bootstrap/scss/mixins/_gradients.scss","webpack://./node_modules/bootstrap/scss/mixins/_transition.scss","webpack://./node_modules/bootstrap/scss/mixins/_buttons.scss","webpack://./node_modules/bootstrap/scss/_transitions.scss","webpack://./node_modules/bootstrap/scss/_progress.scss","webpack://./node_modules/bootstrap/scss/_close.scss","webpack://./node_modules/bootstrap/scss/_modal.scss","webpack://./node_modules/bootstrap/scss/mixins/_backdrop.scss","webpack://./node_modules/bootstrap/scss/_spinners.scss"],names:[],mappings:"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",sourcesContent:['/*!\n * Bootstrap v5.2.0 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Copyright 2011-2022 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */:root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 13, 110, 253;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg-rgb: 255, 255, 255;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-bg: #fff;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.375rem;--bs-border-radius-sm: 0.25rem;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-2xl: 2rem;--bs-border-radius-pill: 50rem;--bs-link-color: #0d6efd;--bs-link-hover-color: #0a58ca;--bs-code-color: #d63384;--bs-highlight-bg: #fff3cd}*,*::before,*::after{box-sizing:border-box}@media(prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media(min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + 0.6vw)}@media(min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + 0.3vw)}@media(min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:0.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:#6c757d}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-0.5*var(--bs-gutter-x));margin-left:calc(-0.5*var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: 0.25rem}.g-1,.gy-1{--bs-gutter-y: 0.25rem}.g-2,.gx-2{--bs-gutter-x: 0.5rem}.g-2,.gy-2{--bs-gutter-y: 0.5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media(min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: 0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: 0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: 0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: 0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media(min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: 0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y: 0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x: 0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y: 0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media(min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: 0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: 0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: 0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: 0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media(min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: 0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: 0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: 0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: 0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media(min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: 0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: 0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: 0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: 0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #212529;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.375rem;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check:focus+.btn,.btn:focus{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn-check:active+.btn,.btn:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus,.btn-check:active+.btn:focus,.btn:active:focus,.btn.active:focus,.btn.show:focus{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0b5ed7;--bs-btn-hover-border-color: #0a58ca;--bs-btn-focus-shadow-rgb: 49, 132, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0a58ca;--bs-btn-active-border-color: #0a53be;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #0d6efd;--bs-btn-disabled-border-color: #0d6efd}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5c636a;--bs-btn-hover-border-color: #565e64;--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565e64;--bs-btn-active-border-color: #51585e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #157347;--bs-btn-hover-border-color: #146c43;--bs-btn-focus-shadow-rgb: 60, 153, 110;--bs-btn-active-color: #fff;--bs-btn-active-bg: #146c43;--bs-btn-active-border-color: #13653f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #31d2f2;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffca2c;--bs-btn-hover-border-color: #ffc720;--bs-btn-focus-shadow-rgb: 217, 164, 6;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd39;--bs-btn-active-border-color: #ffc720;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #bb2d3b;--bs-btn-hover-border-color: #b02a37;--bs-btn-focus-shadow-rgb: 225, 83, 97;--bs-btn-active-color: #fff;--bs-btn-active-bg: #b02a37;--bs-btn-active-border-color: #a52834;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #424649;--bs-btn-hover-border-color: #373b3e;--bs-btn-focus-shadow-rgb: 66, 70, 73;--bs-btn-active-color: #fff;--bs-btn-active-bg: #4d5154;--bs-btn-active-border-color: #373b3e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-primary{--bs-btn-color: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0d6efd;--bs-btn-hover-border-color: #0d6efd;--bs-btn-focus-shadow-rgb: 13, 110, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0d6efd;--bs-btn-active-border-color: #0d6efd;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #0d6efd;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0d6efd;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25, 135, 84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255, 193, 7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220, 53, 69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33, 37, 41;--bs-btn-active-color: #fff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: none;--bs-btn-focus-shadow-rgb: 49, 132, 253;text-decoration:underline}.btn-link:focus{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.25rem}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #e9ecef;--bs-progress-border-radius: 0.375rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #0d6efd;--bs-progress-bar-transition: width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 16 16\' fill=\'%23000\'%3e%3cpath d=\'M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z\'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(var(--bs-modal-header-padding-y)*-0.5) calc(var(--bs-modal-header-padding-x)*-0.5) calc(var(--bs-modal-header-padding-y)*-0.5) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}','@mixin bsBanner($file, $suffix:"") {\n /*!\n * Bootstrap #{$file} v5.2.0 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Copyright 2011-2022 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n\n',":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{$font-family-base};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n // scss-docs-end root-body-variables\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-hover-color: #{$link-hover-color};\n\n --#{$prefix}code-color: #{$code-color};\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n}\n",'// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error "`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error "`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.";\n}\n\n// Mode. Possibilities: "min-media-query", "max-media-query"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, "enable" or "disable"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error "Cannot divide by 0";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n "px": 1px,\n "rem": 1rem,\n "em": 1em,\n "%": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == "em" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \'\';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \' 0\';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == "number", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \' \' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \' \' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn\'t a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \' \' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \'\';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \' 0\';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == "number", unit($value), false);\n\n // If $value isn\'t a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \' \' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \' \' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \' calc(\' + $min-width + if($value < 0, \' - \', \' + \') + $variable-width + \')\';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n','// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox\'s gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: var(--#{$prefix}link-color);\n text-decoration: $link-decoration;\n\n &:hover {\n color: var(--#{$prefix}link-hover-color);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don\'t allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn\'t be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`<button>` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role="button"] {\n cursor: pointer;\n}\n\nselect {\n // Remove the inheritance of word-wrap in Safari.\n // See https://github.com/twbs/bootstrap/issues/24990\n word-wrap: normal;\n\n // Undo the opacity change from Chrome\n &:disabled {\n opacity: 1;\n }\n}\n\n// Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n// See https://stackoverflow.com/a/54997118\n\n[list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not([type="week"]):not([type="time"])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add "hand" cursor to non-disabled button elements.\n\nbutton,\n[type="button"], // 1\n[type="reset"],\n[type="submit"] {\n -webkit-appearance: button; // 2\n\n @if $enable-button-pointers {\n &:not(:disabled) {\n cursor: pointer; // 3\n }\n }\n}\n\n// Remove inner border and padding from Firefox, but don\'t restore the outline like Normalize.\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don\'t break their (horizontal) containers.\n\ntextarea {\n resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n// unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n// So we reset that to ensure fieldsets behave more like a standard block element.\n// See https://github.com/twbs/bootstrap/issues/12359\n// and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n// 2. Reset the default outline behavior of fieldsets so they don\'t affect page layout.\n\nfieldset {\n min-width: 0; // 1\n padding: 0; // 2\n margin: 0; // 2\n border: 0; // 2\n}\n\n// 1. By using `float: left`, the legend will behave like a block element.\n// This way the border of a fieldset wraps around the legend if present.\n// 2. Fix wrapping bug.\n// See https://github.com/twbs/bootstrap/issues/29712\n\nlegend {\n float: left; // 1\n width: 100%;\n padding: 0;\n margin-bottom: $legend-margin-bottom;\n @include font-size($legend-font-size);\n font-weight: $legend-font-weight;\n line-height: inherit;\n\n + * {\n clear: left; // 2\n }\n}\n\n// Fix height of inputs with a type of datetime-local, date, month, week, or time\n// See https://github.com/twbs/bootstrap/issues/18842\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n// 1. Correct the outline style in Safari.\n// 2. This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it\'s not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\n[type="search"] {\n outline-offset: -2px; // 1\n -webkit-appearance: textfield; // 2\n}\n\n// 1. A few input types should stay LTR\n// See https://rtlstyling.com/posts/rtl-styling#form-inputs\n// 2. RTL only output\n// See https://rtlcss.com/learn/usage-guide/control-directives/#raw\n\n/* rtl:raw:\n[type="tel"],\n[type="url"],\n[type="email"],\n[type="number"] {\n direction: ltr;\n}\n*/\n\n// Remove the inner padding in Chrome and Safari on macOS.\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n// Remove padding around color pickers in webkit browsers\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n\n// 1. Inherit font family and line height for file input buttons\n// 2. Correct the inability to style clickable types in iOS and Safari.\n\n::file-selector-button {\n font: inherit; // 1\n -webkit-appearance: button; // 2\n}\n\n// Correct element displays\n\noutput {\n display: inline-block;\n}\n\n// Remove border from iframe\n\niframe {\n border: 0;\n}\n\n// Summary\n//\n// 1. Add the correct display in all browsers\n\nsummary {\n display: list-item; // 1\n cursor: pointer;\n}\n\n\n// Progress\n//\n// Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\nprogress {\n vertical-align: baseline;\n}\n\n\n// Hidden attribute\n//\n// Always hide an element with the `hidden` HTML attribute.\n\n[hidden] {\n display: none !important;\n}\n','// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n "100": $gray-100,\n "200": $gray-200,\n "300": $gray-300,\n "400": $gray-400,\n "500": $gray-500,\n "600": $gray-600,\n "700": $gray-700,\n "800": $gray-800,\n "900": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n "blue": $blue,\n "indigo": $indigo,\n "purple": $purple,\n "pink": $pink,\n "red": $red,\n "orange": $orange,\n "yellow": $yellow,\n "green": $green,\n "teal": $teal,\n "cyan": $cyan,\n "black": $black,\n "white": $white,\n "gray": $gray-600,\n "gray-dark": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n "blue-100": $blue-100,\n "blue-200": $blue-200,\n "blue-300": $blue-300,\n "blue-400": $blue-400,\n "blue-500": $blue-500,\n "blue-600": $blue-600,\n "blue-700": $blue-700,\n "blue-800": $blue-800,\n "blue-900": $blue-900\n) !default;\n\n$indigos: (\n "indigo-100": $indigo-100,\n "indigo-200": $indigo-200,\n "indigo-300": $indigo-300,\n "indigo-400": $indigo-400,\n "indigo-500": $indigo-500,\n "indigo-600": $indigo-600,\n "indigo-700": $indigo-700,\n "indigo-800": $indigo-800,\n "indigo-900": $indigo-900\n) !default;\n\n$purples: (\n "purple-100": $purple-100,\n "purple-200": $purple-200,\n "purple-300": $purple-300,\n "purple-400": $purple-400,\n "purple-500": $purple-500,\n "purple-600": $purple-600,\n "purple-700": $purple-700,\n "purple-800": $purple-800,\n "purple-900": $purple-900\n) !default;\n\n$pinks: (\n "pink-100": $pink-100,\n "pink-200": $pink-200,\n "pink-300": $pink-300,\n "pink-400": $pink-400,\n "pink-500": $pink-500,\n "pink-600": $pink-600,\n "pink-700": $pink-700,\n "pink-800": $pink-800,\n "pink-900": $pink-900\n) !default;\n\n$reds: (\n "red-100": $red-100,\n "red-200": $red-200,\n "red-300": $red-300,\n "red-400": $red-400,\n "red-500": $red-500,\n "red-600": $red-600,\n "red-700": $red-700,\n "red-800": $red-800,\n "red-900": $red-900\n) !default;\n\n$oranges: (\n "orange-100": $orange-100,\n "orange-200": $orange-200,\n "orange-300": $orange-300,\n "orange-400": $orange-400,\n "orange-500": $orange-500,\n "orange-600": $orange-600,\n "orange-700": $orange-700,\n "orange-800": $orange-800,\n "orange-900": $orange-900\n) !default;\n\n$yellows: (\n "yellow-100": $yellow-100,\n "yellow-200": $yellow-200,\n "yellow-300": $yellow-300,\n "yellow-400": $yellow-400,\n "yellow-500": $yellow-500,\n "yellow-600": $yellow-600,\n "yellow-700": $yellow-700,\n "yellow-800": $yellow-800,\n "yellow-900": $yellow-900\n) !default;\n\n$greens: (\n "green-100": $green-100,\n "green-200": $green-200,\n "green-300": $green-300,\n "green-400": $green-400,\n "green-500": $green-500,\n "green-600": $green-600,\n "green-700": $green-700,\n "green-800": $green-800,\n "green-900": $green-900\n) !default;\n\n$teals: (\n "teal-100": $teal-100,\n "teal-200": $teal-200,\n "teal-300": $teal-300,\n "teal-400": $teal-400,\n "teal-500": $teal-500,\n "teal-600": $teal-600,\n "teal-700": $teal-700,\n "teal-800": $teal-800,\n "teal-900": $teal-900\n) !default;\n\n$cyans: (\n "cyan-100": $cyan-100,\n "cyan-200": $cyan-200,\n "cyan-300": $cyan-300,\n "cyan-400": $cyan-400,\n "cyan-500": $cyan-500,\n "cyan-600": $cyan-600,\n "cyan-700": $cyan-700,\n "cyan-800": $cyan-800,\n "cyan-900": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n "primary": $primary,\n "secondary": $secondary,\n "success": $success,\n "info": $info,\n "warning": $warning,\n "danger": $danger,\n "light": $light,\n "dark": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n ("<", "%3c"),\n (">", "%3e"),\n ("#", "%23"),\n ("(", "%28"),\n (")", "%29"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n$body-text-align: null !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");\n@include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, "$container-max-widths");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-2xl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n "1x1": 100%,\n "4x3": calc(3 / 4 * 100%),\n "16x9": calc(9 / 16 * 100%),\n "21x9": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n$text-muted: $gray-600 !default;\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: $border-width !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}body-color) !default;\n$table-bg: transparent !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: $border-width !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n "primary": shift-color($primary, $table-bg-scale),\n "secondary": shift-color($secondary, $table-bg-scale),\n "success": shift-color($success, $table-bg-scale),\n "info": shift-color($info, $table-bg-scale),\n "warning": shift-color($warning, $table-bg-scale),\n "danger": shift-color($danger, $table-bg-scale),\n "light": $light,\n "dark": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur: 0 !default;\n$input-btn-focus-box-shadow: 0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap\'s buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: $body-bg !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: $gray-200 !default;\n$input-disabled-border-color: null !default;\n\n$input-color: $body-color !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-sm: $border-radius-sm !default;\n$input-border-radius-lg: $border-radius-lg !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n$input-plaintext-color: $body-color !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: 1px solid rgba($black, .25) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 20 20\'><path fill=\'none\' stroke=\'#{$form-check-input-checked-color}\' stroke-linecap=\'round\' stroke-linejoin=\'round\' stroke-width=\'3\' d=\'m6 10 3 3 6-6\'/></svg>") !default;\n$form-check-radio-checked-bg-image: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'-4 -4 8 8\'><circle r=\'2\' fill=\'#{$form-check-input-checked-color}\'/></svg>") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 20 20\'><path fill=\'none\' stroke=\'#{$form-check-input-indeterminate-color}\' stroke-linecap=\'round\' stroke-linejoin=\'round\' stroke-width=\'3\' d=\'M6 10h8\'/></svg>") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'-4 -4 8 8\'><circle r=\'3\' fill=\'#{$form-switch-color}\'/></svg>") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'-4 -4 8 8\'><circle r=\'3\' fill=\'#{$form-switch-focus-color}\'/></svg>") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'-4 -4 8 8\'><circle r=\'3\' fill=\'#{$form-switch-checked-color}\'/></svg>") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 16 16\'><path fill=\'none\' stroke=\'#{$form-select-indicator-color}\' stroke-linecap=\'round\' stroke-linejoin=\'round\' stroke-width=\'2\' d=\'m2 5 6 6 6-6\'/></svg>") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: $gray-300 !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: $gray-500 !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: $input-group-addon-bg !default;\n$form-file-button-hover-bg: shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'><path fill=\'#{$form-feedback-icon-valid-color}\' d=\'M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z\'/></svg>") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 12 12\' width=\'12\' height=\'12\' fill=\'none\' stroke=\'#{$form-feedback-icon-invalid-color}\'><circle cx=\'6\' cy=\'6\' r=\'4.5\'/><path stroke-linejoin=\'round\' d=\'M5.8 3.6h.4L6 6.5z\'/><circle cx=\'6\' cy=\'8.2\' r=\'.6\' fill=\'#{$form-feedback-icon-invalid-color}\' stroke=\'none\'/></svg>") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n "valid": (\n "color": $form-feedback-valid-color,\n "icon": $form-feedback-icon-valid\n ),\n "invalid": (\n "color": $form-feedback-invalid-color,\n "icon": $form-feedback-icon-invalid\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 30 30\'><path stroke=\'#{$navbar-dark-color}\' stroke-linecap=\'round\' stroke-miterlimit=\'10\' stroke-width=\'2\' d=\'M4 7h22M4 15h22M4 23h22\'/></svg>") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .55) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 30 30\'><path stroke=\'#{$navbar-light-color}\' stroke-linecap=\'round\' stroke-miterlimit=\'10\' stroke-width=\'2\' d=\'M4 7h22M4 15h22M4 23h22\'/></svg>") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: $body-color !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: shade-color($dropdown-link-color, 10%) !default;\n$dropdown-link-hover-bg: $gray-200 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-500 !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: $white !default;\n$pagination-border-radius: $border-radius !default;\n$pagination-border-width: $border-width !default;\n$pagination-margin-start: ($pagination-border-width * -1) !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: $gray-200 !default;\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: $border-radius-sm !default;\n$pagination-border-radius-lg: $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-border-width: $border-width !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: $border-radius !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: $white !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default;\n$accordion-bg: $body-bg !default;\n$accordion-border-width: $border-width !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: $border-radius !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: $accordion-color !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color: shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $accordion-button-color !default;\n$accordion-icon-active-color: $accordion-button-active-color !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 16 16\' fill=\'#{$accordion-icon-color}\'><path fill-rule=\'evenodd\' d=\'M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\'/></svg>") !default;\n$accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 16 16\' fill=\'#{$accordion-icon-active-color}\'><path fill-rule=\'evenodd\' d=\'M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\'/></svg>") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: shade-color($popover-bg, 6%) !default;\n$popover-header-color: var(--#{$prefix}heading-color) !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba($white, .85) !default;\n$toast-border-width: $border-width !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: $border-radius !default;\n$toast-box-shadow: $box-shadow !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: $gray-600 !default;\n$toast-header-background-color: rgba($white, .85) !default;\n$toast-header-border-color: rgba($black, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: $white !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-border-radius: $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: $box-shadow-inset !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: $gray-900 !default;\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n$list-group-item-bg-scale: -80% !default;\n$list-group-item-color-scale: 40% !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: quote("/") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 16 16\' fill=\'#{$carousel-control-color}\'><path d=\'M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\'/></svg>") !default;\n$carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 16 16\' fill=\'#{$carousel-control-color}\'><path d=\'M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\'/></svg>") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url("data:image/svg+xml,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 16 16\' fill=\'#{$btn-close-color}\'><path d=\'M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z\'/></svg>") !default;\n$btn-close-focus-shadow: $input-btn-focus-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: $modal-content-bg !default;\n$offcanvas-color: $modal-content-color !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n',"// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n $return: ();\n @each $value in $radius {\n @if type-of($value) == number {\n $return: append($return, max($value, 0));\n } @else {\n $return: append($return, $value);\n }\n }\n @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\n @if $enable-rounded {\n border-radius: valid-radius($radius);\n }\n @else if $fallback-border-radius != false {\n border-radius: $fallback-border-radius;\n }\n}\n\n@mixin border-top-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n border-top-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-right-radius: valid-radius($radius);\n border-bottom-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-right-radius: valid-radius($radius);\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-top-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-left-radius: valid-radius($radius);\n }\n}\n\n@mixin border-top-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-top-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-end-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-right-radius: valid-radius($radius);\n }\n}\n\n@mixin border-bottom-start-radius($radius: $border-radius) {\n @if $enable-rounded {\n border-bottom-left-radius: valid-radius($radius);\n }\n}\n// scss-docs-end border-radius-mixins\n",'//\n// Headings\n//\n.h1 {\n @extend h1;\n}\n\n.h2 {\n @extend h2;\n}\n\n.h3 {\n @extend h3;\n}\n\n.h4 {\n @extend h4;\n}\n\n.h5 {\n @extend h5;\n}\n\n.h6 {\n @extend h6;\n}\n\n\n.lead {\n @include font-size($lead-font-size);\n font-weight: $lead-font-weight;\n}\n\n// Type display classes\n@each $display, $font-size in $display-font-sizes {\n .display-#{$display} {\n @include font-size($font-size);\n font-family: $display-font-family;\n font-style: $display-font-style;\n font-weight: $display-font-weight;\n line-height: $display-line-height;\n }\n}\n\n//\n// Emphasis\n//\n.small {\n @extend small;\n}\n\n.mark {\n @extend mark;\n}\n\n//\n// Lists\n//\n\n.list-unstyled {\n @include list-unstyled();\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n @include list-unstyled();\n}\n.list-inline-item {\n display: inline-block;\n\n &:not(:last-child) {\n margin-right: $list-inline-padding;\n }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n @include font-size($initialism-font-size);\n text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n margin-bottom: $blockquote-margin-y;\n @include font-size($blockquote-font-size);\n\n > :last-child {\n margin-bottom: 0;\n }\n}\n\n.blockquote-footer {\n margin-top: -$blockquote-margin-y;\n margin-bottom: $blockquote-margin-y;\n @include font-size($blockquote-footer-font-size);\n color: $blockquote-footer-color;\n\n &::before {\n content: "\\2014\\00A0"; // em dash, nbsp\n }\n}\n',"// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n @include img-fluid();\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n padding: $thumbnail-padding;\n background-color: $thumbnail-bg;\n border: $thumbnail-border-width solid $thumbnail-border-color;\n @include border-radius($thumbnail-border-radius);\n @include box-shadow($thumbnail-box-shadow);\n\n // Keep them at most 100% wide\n @include img-fluid();\n}\n\n//\n// Figures\n//\n\n.figure {\n // Ensures the caption's text aligns with the image.\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: $spacer * .5;\n line-height: 1;\n}\n\n.figure-caption {\n @include font-size($figure-caption-font-size);\n color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n // Part 1: Set a maximum relative to the parent\n max-width: 100%;\n // Part 2: Override the height to auto, otherwise images will be stretched\n // when setting a width and height attribute on the img element.\n height: auto;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n",'// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error "breakpoint `#{$name}` not found in `#{$breakpoints}`";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// "" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// "-sm"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint\'s minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n',"// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n",'//\n// Base styles\n//\n\n.btn {\n // scss-docs-start btn-css-vars\n --#{$prefix}btn-padding-x: #{$btn-padding-x};\n --#{$prefix}btn-padding-y: #{$btn-padding-y};\n --#{$prefix}btn-font-family: #{$btn-font-family};\n @include rfs($btn-font-size, --#{$prefix}btn-font-size);\n --#{$prefix}btn-font-weight: #{$btn-font-weight};\n --#{$prefix}btn-line-height: #{$btn-line-height};\n --#{$prefix}btn-color: #{$body-color};\n --#{$prefix}btn-bg: transparent;\n --#{$prefix}btn-border-width: #{$btn-border-width};\n --#{$prefix}btn-border-color: transparent;\n --#{$prefix}btn-border-radius: #{$btn-border-radius};\n --#{$prefix}btn-box-shadow: #{$btn-box-shadow};\n --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};\n --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5);\n // scss-docs-end btn-css-vars\n\n display: inline-block;\n padding: var(--#{$prefix}btn-padding-y) var(--#{$prefix}btn-padding-x);\n font-family: var(--#{$prefix}btn-font-family);\n @include font-size(var(--#{$prefix}btn-font-size));\n font-weight: var(--#{$prefix}btn-font-weight);\n line-height: var(--#{$prefix}btn-line-height);\n color: var(--#{$prefix}btn-color);\n text-align: center;\n text-decoration: if($link-decoration == none, null, none);\n white-space: $btn-white-space;\n vertical-align: middle;\n cursor: if($enable-button-pointers, pointer, null);\n user-select: none;\n border: var(--#{$prefix}btn-border-width) solid var(--#{$prefix}btn-border-color);\n @include border-radius(var(--#{$prefix}btn-border-radius));\n @include gradient-bg(var(--#{$prefix}btn-bg));\n @include box-shadow(var(--#{$prefix}btn-box-shadow));\n @include transition($btn-transition);\n\n &:hover {\n color: var(--#{$prefix}btn-hover-color);\n text-decoration: if($link-hover-decoration == underline, none, null);\n background-color: var(--#{$prefix}btn-hover-bg);\n border-color: var(--#{$prefix}btn-hover-border-color);\n }\n\n .btn-check:focus + &,\n &:focus {\n color: var(--#{$prefix}btn-hover-color);\n @include gradient-bg(var(--#{$prefix}btn-hover-bg));\n border-color: var(--#{$prefix}btn-hover-border-color);\n outline: 0;\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);\n } @else {\n box-shadow: var(--#{$prefix}btn-focus-box-shadow);\n }\n }\n\n .btn-check:checked + &,\n .btn-check:active + &,\n &:active,\n &.active,\n &.show {\n color: var(--#{$prefix}btn-active-color);\n background-color: var(--#{$prefix}btn-active-bg);\n // Remove CSS gradients if they\'re enabled\n background-image: if($enable-gradients, none, null);\n border-color: var(--#{$prefix}btn-active-border-color);\n @include box-shadow(var(--#{$prefix}btn-active-shadow));\n\n &:focus {\n // Avoid using mixin so we can pass custom focus shadow properly\n @if $enable-shadows {\n box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow);\n } @else {\n box-shadow: var(--#{$prefix}btn-focus-box-shadow);\n }\n }\n }\n\n &:disabled,\n &.disabled,\n fieldset:disabled & {\n color: var(--#{$prefix}btn-disabled-color);\n pointer-events: none;\n background-color: var(--#{$prefix}btn-disabled-bg);\n background-image: if($enable-gradients, none, null);\n border-color: var(--#{$prefix}btn-disabled-border-color);\n opacity: var(--#{$prefix}btn-disabled-opacity);\n @include box-shadow(none);\n }\n}\n\n\n//\n// Alternate buttons\n//\n\n// scss-docs-start btn-variant-loops\n@each $color, $value in $theme-colors {\n .btn-#{$color} {\n @if $color == "light" {\n @include button-variant(\n $value,\n $value,\n $hover-background: shade-color($value, $btn-hover-bg-shade-amount),\n $hover-border: shade-color($value, $btn-hover-border-shade-amount),\n $active-background: shade-color($value, $btn-active-bg-shade-amount),\n $active-border: shade-color($value, $btn-active-border-shade-amount)\n );\n } @else if $color == "dark" {\n @include button-variant(\n $value,\n $value,\n $hover-background: tint-color($value, $btn-hover-bg-tint-amount),\n $hover-border: tint-color($value, $btn-hover-border-tint-amount),\n $active-background: tint-color($value, $btn-active-bg-tint-amount),\n $active-border: tint-color($value, $btn-active-border-tint-amount)\n );\n } @else {\n @include button-variant($value, $value);\n }\n }\n}\n\n@each $color, $value in $theme-colors {\n .btn-outline-#{$color} {\n @include button-outline-variant($value);\n }\n}\n// scss-docs-end btn-variant-loops\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n --#{$prefix}btn-font-weight: #{$font-weight-normal};\n --#{$prefix}btn-color: #{$btn-link-color};\n --#{$prefix}btn-bg: transparent;\n --#{$prefix}btn-border-color: transparent;\n --#{$prefix}btn-hover-color: #{$btn-link-hover-color};\n --#{$prefix}btn-hover-border-color: transparent;\n --#{$prefix}btn-active-color: #{$btn-link-hover-color};\n --#{$prefix}btn-active-border-color: transparent;\n --#{$prefix}btn-disabled-color: #{$btn-link-disabled-color};\n --#{$prefix}btn-disabled-border-color: transparent;\n --#{$prefix}btn-box-shadow: none;\n --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix(color-contrast($primary), $primary, 15%))};\n\n text-decoration: $link-decoration;\n\n &:hover,\n &:focus {\n text-decoration: $link-hover-decoration;\n }\n\n &:focus {\n color: var(--#{$prefix}btn-color);\n }\n\n &:hover {\n color: var(--#{$prefix}btn-hover-color);\n }\n\n // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);\n}\n',"// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n background-color: $color;\n\n @if $enable-gradients {\n background-image: var(--#{$prefix}gradient);\n }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n @if length($transition) == 0 {\n $transition: $transition-base;\n }\n\n @if length($transition) > 1 {\n @each $value in $transition {\n @if $value == null or $value == none {\n @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n }\n }\n }\n\n @if $enable-transitions {\n @if nth($transition, 1) != null {\n transition: $transition;\n }\n\n @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n// scss-docs-start btn-variant-mixin\n@mixin button-variant(\n $background,\n $border,\n $color: color-contrast($background),\n $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),\n $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),\n $hover-color: color-contrast($hover-background),\n $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),\n $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),\n $active-color: color-contrast($active-background),\n $disabled-background: $background,\n $disabled-border: $border,\n $disabled-color: color-contrast($disabled-background)\n) {\n --#{$prefix}btn-color: #{$color};\n --#{$prefix}btn-bg: #{$background};\n --#{$prefix}btn-border-color: #{$border};\n --#{$prefix}btn-hover-color: #{$hover-color};\n --#{$prefix}btn-hover-bg: #{$hover-background};\n --#{$prefix}btn-hover-border-color: #{$hover-border};\n --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border, 15%))};\n --#{$prefix}btn-active-color: #{$active-color};\n --#{$prefix}btn-active-bg: #{$active-background};\n --#{$prefix}btn-active-border-color: #{$active-border};\n --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};\n --#{$prefix}btn-disabled-color: #{$disabled-color};\n --#{$prefix}btn-disabled-bg: #{$disabled-background};\n --#{$prefix}btn-disabled-border-color: #{$disabled-border};\n}\n// scss-docs-end btn-variant-mixin\n\n// scss-docs-start btn-outline-variant-mixin\n@mixin button-outline-variant(\n $color,\n $color-hover: color-contrast($color),\n $active-background: $color,\n $active-border: $color,\n $active-color: color-contrast($active-background)\n) {\n --#{$prefix}btn-color: #{$color};\n --#{$prefix}btn-border-color: #{$color};\n --#{$prefix}btn-hover-color: #{$color-hover};\n --#{$prefix}btn-hover-bg: #{$active-background};\n --#{$prefix}btn-hover-border-color: #{$active-border};\n --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};\n --#{$prefix}btn-active-color: #{$active-color};\n --#{$prefix}btn-active-bg: #{$active-background};\n --#{$prefix}btn-active-border-color: #{$active-border};\n --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};\n --#{$prefix}btn-disabled-color: #{$color};\n --#{$prefix}btn-disabled-bg: transparent;\n --#{$prefix}btn-disabled-border-color: #{$color};\n --#{$prefix}gradient: none;\n}\n// scss-docs-end btn-outline-variant-mixin\n\n// scss-docs-start btn-size-mixin\n@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {\n --#{$prefix}btn-padding-y: #{$padding-y};\n --#{$prefix}btn-padding-x: #{$padding-x};\n @include rfs($font-size, --#{$prefix}btn-font-size);\n --#{$prefix}btn-border-radius: #{$border-radius};\n}\n// scss-docs-end btn-size-mixin\n",".fade {\n @include transition($transition-fade);\n\n &:not(.show) {\n opacity: 0;\n }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n &:not(.show) {\n display: none;\n }\n}\n\n.collapsing {\n height: 0;\n overflow: hidden;\n @include transition($transition-collapse);\n\n &.collapse-horizontal {\n width: 0;\n height: auto;\n @include transition($transition-collapse-width);\n }\n}\n// scss-docs-end collapse-classes\n","// Disable animation if transitions are disabled\n\n// scss-docs-start progress-keyframes\n@if $enable-transitions {\n @keyframes progress-bar-stripes {\n 0% { background-position-x: $progress-height; }\n }\n}\n// scss-docs-end progress-keyframes\n\n.progress {\n // scss-docs-start progress-css-vars\n --#{$prefix}progress-height: #{$progress-height};\n @include rfs($progress-font-size, --#{$prefix}progress-font-size);\n --#{$prefix}progress-bg: #{$progress-bg};\n --#{$prefix}progress-border-radius: #{$progress-border-radius};\n --#{$prefix}progress-box-shadow: #{$progress-box-shadow};\n --#{$prefix}progress-bar-color: #{$progress-bar-color};\n --#{$prefix}progress-bar-bg: #{$progress-bar-bg};\n --#{$prefix}progress-bar-transition: #{$progress-bar-transition};\n // scss-docs-end progress-css-vars\n\n display: flex;\n height: var(--#{$prefix}progress-height);\n overflow: hidden; // force rounded corners by cropping it\n @include font-size(var(--#{$prefix}progress-font-size));\n background-color: var(--#{$prefix}progress-bg);\n @include border-radius(var(--#{$prefix}progress-border-radius));\n @include box-shadow(var(--#{$prefix}progress-box-shadow));\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: var(--#{$prefix}progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--#{$prefix}progress-bar-bg);\n @include transition(var(--#{$prefix}progress-bar-transition));\n}\n\n.progress-bar-striped {\n @include gradient-striped();\n background-size: var(--#{$prefix}progress-height) var(--#{$prefix}progress-height);\n}\n\n@if $enable-transitions {\n .progress-bar-animated {\n animation: $progress-bar-animation-timing progress-bar-stripes;\n\n @if $enable-reduced-motion {\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n }\n }\n}\n",'// Transparent background and border properties included for button version.\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href="#"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n.btn-close {\n box-sizing: content-box;\n width: $btn-close-width;\n height: $btn-close-height;\n padding: $btn-close-padding-y $btn-close-padding-x;\n color: $btn-close-color;\n background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements\n border: 0; // for button elements\n @include border-radius();\n opacity: $btn-close-opacity;\n\n // Override <a>\'s hover style\n &:hover {\n color: $btn-close-color;\n text-decoration: none;\n opacity: $btn-close-hover-opacity;\n }\n\n &:focus {\n outline: 0;\n box-shadow: $btn-close-focus-shadow;\n opacity: $btn-close-focus-opacity;\n }\n\n &:disabled,\n &.disabled {\n pointer-events: none;\n user-select: none;\n opacity: $btn-close-disabled-opacity;\n }\n}\n\n.btn-close-white {\n filter: $btn-close-white-filter;\n}\n','// stylelint-disable function-disallowed-list\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and stuff\n\n\n// Container that the modal scrolls within\n.modal {\n // scss-docs-start modal-css-vars\n --#{$prefix}modal-zindex: #{$zindex-modal};\n --#{$prefix}modal-width: #{$modal-md};\n --#{$prefix}modal-padding: #{$modal-inner-padding};\n --#{$prefix}modal-margin: #{$modal-dialog-margin};\n --#{$prefix}modal-color: #{$modal-content-color};\n --#{$prefix}modal-bg: #{$modal-content-bg};\n --#{$prefix}modal-border-color: #{$modal-content-border-color};\n --#{$prefix}modal-border-width: #{$modal-content-border-width};\n --#{$prefix}modal-border-radius: #{$modal-content-border-radius};\n --#{$prefix}modal-box-shadow: #{$modal-content-box-shadow-xs};\n --#{$prefix}modal-inner-border-radius: #{$modal-content-inner-border-radius};\n --#{$prefix}modal-header-padding-x: #{$modal-header-padding-x};\n --#{$prefix}modal-header-padding-y: #{$modal-header-padding-y};\n --#{$prefix}modal-header-padding: #{$modal-header-padding}; // Todo in v6: Split this padding into x and y\n --#{$prefix}modal-header-border-color: #{$modal-header-border-color};\n --#{$prefix}modal-header-border-width: #{$modal-header-border-width};\n --#{$prefix}modal-title-line-height: #{$modal-title-line-height};\n --#{$prefix}modal-footer-gap: #{$modal-footer-margin-between};\n --#{$prefix}modal-footer-bg: #{$modal-footer-bg};\n --#{$prefix}modal-footer-border-color: #{$modal-footer-border-color};\n --#{$prefix}modal-footer-border-width: #{$modal-footer-border-width};\n // scss-docs-end modal-css-vars\n\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--#{$prefix}modal-zindex);\n display: none;\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n // We deliberately don\'t use `-webkit-overflow-scrolling: touch;` due to a\n // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n // See also https://github.com/twbs/bootstrap/issues/17695\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: var(--#{$prefix}modal-margin);\n // allow clicks to pass through for custom click handling to close modal\n pointer-events: none;\n\n // When fading in the modal, animate it to slide down\n .modal.fade & {\n @include transition($modal-transition);\n transform: $modal-fade-transform;\n }\n .modal.show & {\n transform: $modal-show-transform;\n }\n\n // When trying to close, animate focus to scale\n .modal.modal-static & {\n transform: $modal-scale-transform;\n }\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--#{$prefix}modal-margin) * 2);\n\n .modal-content {\n max-height: 100%;\n overflow: hidden;\n }\n\n .modal-body {\n overflow-y: auto;\n }\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - var(--#{$prefix}modal-margin) * 2);\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\n // counteract the pointer-events: none; in the .modal-dialog\n color: var(--#{$prefix}modal-color);\n pointer-events: auto;\n background-color: var(--#{$prefix}modal-bg);\n background-clip: padding-box;\n border: var(--#{$prefix}modal-border-width) solid var(--#{$prefix}modal-border-color);\n @include border-radius(var(--#{$prefix}modal-border-radius));\n @include box-shadow(var(--#{$prefix}modal-box-shadow));\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n // scss-docs-start modal-backdrop-css-vars\n --#{$prefix}backdrop-zindex: #{$zindex-modal-backdrop};\n --#{$prefix}backdrop-bg: #{$modal-backdrop-bg};\n --#{$prefix}backdrop-opacity: #{$modal-backdrop-opacity};\n // scss-docs-end modal-backdrop-css-vars\n\n @include overlay-backdrop(var(--#{$prefix}backdrop-zindex), var(--#{$prefix}backdrop-bg), var(--#{$prefix}backdrop-opacity));\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n padding: var(--#{$prefix}modal-header-padding);\n border-bottom: var(--#{$prefix}modal-header-border-width) solid var(--#{$prefix}modal-header-border-color);\n @include border-top-radius(var(--#{$prefix}modal-inner-border-radius));\n\n .btn-close {\n padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);\n margin: calc(var(--#{$prefix}modal-header-padding-y) * -.5) calc(var(--#{$prefix}modal-header-padding-x) * -.5) calc(var(--#{$prefix}modal-header-padding-y) * -.5) auto;\n }\n}\n\n// Title text within header\n.modal-title {\n margin-bottom: 0;\n line-height: var(--#{$prefix}modal-title-line-height);\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n // Enable `flex-grow: 1` so that the body take up as much space as possible\n // when there should be a fixed height on `.modal-dialog`.\n flex: 1 1 auto;\n padding: var(--#{$prefix}modal-padding);\n}\n\n// Footer (for actions)\n.modal-footer {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center; // vertically center\n justify-content: flex-end; // Right align buttons with flex property because text-align doesn\'t work on flex items\n padding: calc(var(--#{$prefix}modal-padding) - var(--#{$prefix}modal-footer-gap) * .5);\n background-color: var(--#{$prefix}modal-footer-bg);\n border-top: var(--#{$prefix}modal-footer-border-width) solid var(--#{$prefix}modal-footer-border-color);\n @include border-bottom-radius(var(--#{$prefix}modal-inner-border-radius));\n\n // Place margin between footer elements\n // This solution is far from ideal because of the universal selector usage,\n // but is needed to fix https://github.com/twbs/bootstrap/issues/24800\n > * {\n margin: calc(var(--#{$prefix}modal-footer-gap) * .5); // Todo in v6: replace with gap on parent class\n }\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n .modal {\n --#{$prefix}modal-margin: #{$modal-dialog-margin-y-sm-up};\n --#{$prefix}modal-box-shadow: #{$modal-content-box-shadow-sm-up};\n }\n\n // Automatically set modal\'s width for larger viewports\n .modal-dialog {\n max-width: var(--#{$prefix}modal-width);\n margin-right: auto;\n margin-left: auto;\n }\n\n .modal-sm {\n --#{$prefix}modal-width: #{$modal-sm};\n }\n}\n\n@include media-breakpoint-up(lg) {\n .modal-lg,\n .modal-xl {\n --#{$prefix}modal-width: #{$modal-lg};\n }\n}\n\n@include media-breakpoint-up(xl) {\n .modal-xl {\n --#{$prefix}modal-width: #{$modal-xl};\n }\n}\n\n// scss-docs-start modal-fullscreen-loop\n@each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n $postfix: if($infix != "", $infix + "-down", "");\n\n @include media-breakpoint-down($breakpoint) {\n .modal-fullscreen#{$postfix} {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n\n .modal-content {\n height: 100%;\n border: 0;\n @include border-radius(0);\n }\n\n .modal-header,\n .modal-footer {\n @include border-radius(0);\n }\n\n .modal-body {\n overflow-y: auto;\n }\n }\n }\n}\n// scss-docs-end modal-fullscreen-loop\n',"// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {\n position: fixed;\n top: 0;\n left: 0;\n z-index: $zindex;\n width: 100vw;\n height: 100vh;\n background-color: $backdrop-bg;\n\n // Fade for backdrop\n &.fade { opacity: 0; }\n &.show { opacity: $backdrop-opacity; }\n}\n",'//\n// Rotating border\n//\n\n.spinner-grow,\n.spinner-border {\n display: inline-block;\n width: var(--#{$prefix}spinner-width);\n height: var(--#{$prefix}spinner-height);\n vertical-align: var(--#{$prefix}spinner-vertical-align);\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 50%;\n animation: var(--#{$prefix}spinner-animation-speed) linear infinite var(--#{$prefix}spinner-animation-name);\n}\n\n// scss-docs-start spinner-border-keyframes\n@keyframes spinner-border {\n to { transform: rotate(360deg) #{"/* rtl:ignore */"}; }\n}\n// scss-docs-end spinner-border-keyframes\n\n.spinner-border {\n // scss-docs-start spinner-border-css-vars\n --#{$prefix}spinner-width: #{$spinner-width};\n --#{$prefix}spinner-height: #{$spinner-height};\n --#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};\n --#{$prefix}spinner-border-width: #{$spinner-border-width};\n --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};\n --#{$prefix}spinner-animation-name: spinner-border;\n // scss-docs-end spinner-border-css-vars\n\n border: var(--#{$prefix}spinner-border-width) solid currentcolor;\n border-right-color: transparent;\n}\n\n.spinner-border-sm {\n // scss-docs-start spinner-border-sm-css-vars\n --#{$prefix}spinner-width: #{$spinner-width-sm};\n --#{$prefix}spinner-height: #{$spinner-height-sm};\n --#{$prefix}spinner-border-width: #{$spinner-border-width-sm};\n // scss-docs-end spinner-border-sm-css-vars\n}\n\n//\n// Growing circle\n//\n\n// scss-docs-start spinner-grow-keyframes\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n transform: none;\n }\n}\n// scss-docs-end spinner-grow-keyframes\n\n.spinner-grow {\n // scss-docs-start spinner-grow-css-vars\n --#{$prefix}spinner-width: #{$spinner-width};\n --#{$prefix}spinner-height: #{$spinner-height};\n --#{$prefix}spinner-vertical-align: #{$spinner-vertical-align};\n --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed};\n --#{$prefix}spinner-animation-name: spinner-grow;\n // scss-docs-end spinner-grow-css-vars\n\n background-color: currentcolor;\n opacity: 0;\n}\n\n.spinner-grow-sm {\n --#{$prefix}spinner-width: #{$spinner-width-sm};\n --#{$prefix}spinner-height: #{$spinner-height-sm};\n}\n\n@if $enable-reduced-motion {\n @media (prefers-reduced-motion: reduce) {\n .spinner-border,\n .spinner-grow {\n --#{$prefix}spinner-animation-speed: #{$spinner-animation-speed * 2};\n }\n }\n}\n'],sourceRoot:""}]);const a=s},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r=e(t);return t[2]?"@media ".concat(t[2]," {").concat(r,"}"):r})).join("")},t.i=function(e,r,n){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(n)for(var o=0;o<this.length;o++){var s=this[o][0];null!=s&&(i[s]=!0)}for(var a=0;a<e.length;a++){var l=[].concat(e[a]);n&&i[l[0]]||(r&&(l[2]?l[2]="".concat(r," and ").concat(l[2]):l[2]=r),t.push(l))}},t}},15:e=>{"use strict";function t(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=e&&("undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"]);if(null==r)return;var n,i,o=[],s=!0,a=!1;try{for(r=r.call(e);!(s=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);s=!0);}catch(e){a=!0,i=e}finally{try{s||null==r.return||r.return()}finally{if(a)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}e.exports=function(e){var r=t(e,4),n=r[1],i=r[3];if(!i)return n;if("function"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),s="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(o),a="/*# ".concat(s," */"),l=i.sources.map((function(e){return"/*# sourceURL=".concat(i.sourceRoot||"").concat(e," */")}));return[n].concat(l).concat([a]).join("\n")}return[n].join("\n")}},400:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Component:()=>v,Fragment:()=>m,cloneElement:()=>j,createContext:()=>z,createElement:()=>_,createRef:()=>g,h:()=>_,hydrate:()=>H,isValidElement:()=>s,options:()=>i,render:()=>F,toChildArray:()=>$});var n,i,o,s,a,l,c,d={},h=[],u=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function f(e,t){for(var r in t)e[r]=t[r];return e}function p(e){var t=e.parentNode;t&&t.removeChild(e)}function _(e,t,r){var i,o,s,a={};for(s in t)"key"==s?i=t[s]:"ref"==s?o=t[s]:a[s]=t[s];if(arguments.length>2&&(a.children=arguments.length>3?n.call(arguments,2):r),"function"==typeof e&&null!=e.defaultProps)for(s in e.defaultProps)void 0===a[s]&&(a[s]=e.defaultProps[s]);return b(e,a,i,o,null)}function b(e,t,r,n,s){var a={type:e,props:t,key:r,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==s?++o:s};return null==s&&null!=i.vnode&&i.vnode(a),a}function g(){return{current:null}}function m(e){return e.children}function v(e,t){this.props=e,this.context=t}function A(e,t){if(null==t)return e.__?A(e.__,e.__.__k.indexOf(e)+1):null;for(var r;t<e.__k.length;t++)if(null!=(r=e.__k[t])&&null!=r.__e)return r.__e;return"function"==typeof e.type?A(e):null}function y(e){var t,r;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(r=e.__k[t])&&null!=r.__e){e.__e=e.__c.base=r.__e;break}return y(e)}}function C(e){(!e.__d&&(e.__d=!0)&&a.push(e)&&!w.__r++||l!==i.debounceRendering)&&((l=i.debounceRendering)||setTimeout)(w)}function w(){for(var e;w.__r=a.length;)e=a.sort((function(e,t){return e.__v.__b-t.__v.__b})),a=[],e.some((function(e){var t,r,n,i,o,s;e.__d&&(o=(i=(t=e).__v).__e,(s=t.__P)&&(r=[],(n=f({},i)).__v=i.__v+1,D(s,i,n,t.__n,void 0!==s.ownerSVGElement,null!=i.__h?[o]:null,r,null==o?A(i):o,i.__h),M(r,i),i.__e!=o&&y(i)))}))}function x(e,t,r,n,i,o,s,a,l,c){var u,f,p,_,g,v,y,C=n&&n.__k||h,w=C.length;for(r.__k=[],u=0;u<t.length;u++)if(null!=(_=r.__k[u]=null==(_=t[u])||"boolean"==typeof _?null:"string"==typeof _||"number"==typeof _||"bigint"==typeof _?b(null,_,null,null,_):Array.isArray(_)?b(m,{children:_},null,null,null):_.__b>0?b(_.type,_.props,_.key,null,_.__v):_)){if(_.__=r,_.__b=r.__b+1,null===(p=C[u])||p&&_.key==p.key&&_.type===p.type)C[u]=void 0;else for(f=0;f<w;f++){if((p=C[f])&&_.key==p.key&&_.type===p.type){C[f]=void 0;break}p=null}D(e,_,p=p||d,i,o,s,a,l,c),g=_.__e,(f=_.ref)&&p.ref!=f&&(y||(y=[]),p.ref&&y.push(p.ref,null,_),y.push(f,_.__c||g,_)),null!=g?(null==v&&(v=g),"function"==typeof _.type&&_.__k===p.__k?_.__d=l=S(_,l,e):l=k(e,_,p,C,g,l),"function"==typeof r.type&&(r.__d=l)):l&&p.__e==l&&l.parentNode!=e&&(l=A(p))}for(r.__e=v,u=w;u--;)null!=C[u]&&("function"==typeof r.type&&null!=C[u].__e&&C[u].__e==r.__d&&(r.__d=A(n,u+1)),I(C[u],C[u]));if(y)for(u=0;u<y.length;u++)T(y[u],y[++u],y[++u])}function S(e,t,r){for(var n,i=e.__k,o=0;i&&o<i.length;o++)(n=i[o])&&(n.__=e,t="function"==typeof n.type?S(n,t,r):k(r,n,n,i,n.__e,t));return t}function $(e,t){return t=t||[],null==e||"boolean"==typeof e||(Array.isArray(e)?e.some((function(e){$(e,t)})):t.push(e)),t}function k(e,t,r,n,i,o){var s,a,l;if(void 0!==t.__d)s=t.__d,t.__d=void 0;else if(null==r||i!=o||null==i.parentNode)e:if(null==o||o.parentNode!==e)e.appendChild(i),s=null;else{for(a=o,l=0;(a=a.nextSibling)&&l<n.length;l+=2)if(a==i)break e;e.insertBefore(i,o),s=o}return void 0!==s?s:i.nextSibling}function E(e,t,r){"-"===t[0]?e.setProperty(t,r):e[t]=null==r?"":"number"!=typeof r||u.test(t)?r:r+"px"}function B(e,t,r,n,i){var o;e:if("style"===t)if("string"==typeof r)e.style.cssText=r;else{if("string"==typeof n&&(e.style.cssText=n=""),n)for(t in n)r&&t in r||E(e.style,t,"");if(r)for(t in r)n&&r[t]===n[t]||E(e.style,t,r[t])}else if("o"===t[0]&&"n"===t[1])o=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+o]=r,r?n||e.addEventListener(t,o?R:L,o):e.removeEventListener(t,o?R:L,o);else if("dangerouslySetInnerHTML"!==t){if(i)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==r?"":r;break e}catch(e){}"function"==typeof r||(null!=r&&(!1!==r||"a"===t[0]&&"r"===t[1])?e.setAttribute(t,r):e.removeAttribute(t))}}function L(e){this.l[e.type+!1](i.event?i.event(e):e)}function R(e){this.l[e.type+!0](i.event?i.event(e):e)}function D(e,t,r,n,o,s,a,l,c){var d,h,u,p,_,b,g,A,y,C,w,S,$,k=t.type;if(void 0!==t.constructor)return null;null!=r.__h&&(c=r.__h,l=t.__e=r.__e,t.__h=null,s=[l]),(d=i.__b)&&d(t);try{e:if("function"==typeof k){if(A=t.props,y=(d=k.contextType)&&n[d.__c],C=d?y?y.props.value:d.__:n,r.__c?g=(h=t.__c=r.__c).__=h.__E:("prototype"in k&&k.prototype.render?t.__c=h=new k(A,C):(t.__c=h=new v(A,C),h.constructor=k,h.render=P),y&&y.sub(h),h.props=A,h.state||(h.state={}),h.context=C,h.__n=n,u=h.__d=!0,h.__h=[]),null==h.__s&&(h.__s=h.state),null!=k.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=f({},h.__s)),f(h.__s,k.getDerivedStateFromProps(A,h.__s))),p=h.props,_=h.state,u)null==k.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(null==k.getDerivedStateFromProps&&A!==p&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(A,C),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(A,h.__s,C)||t.__v===r.__v){h.props=A,h.state=h.__s,t.__v!==r.__v&&(h.__d=!1),h.__v=t,t.__e=r.__e,t.__k=r.__k,t.__k.forEach((function(e){e&&(e.__=t)})),h.__h.length&&a.push(h);break e}null!=h.componentWillUpdate&&h.componentWillUpdate(A,h.__s,C),null!=h.componentDidUpdate&&h.__h.push((function(){h.componentDidUpdate(p,_,b)}))}if(h.context=C,h.props=A,h.__v=t,h.__P=e,w=i.__r,S=0,"prototype"in k&&k.prototype.render)h.state=h.__s,h.__d=!1,w&&w(t),d=h.render(h.props,h.state,h.context);else do{h.__d=!1,w&&w(t),d=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++S<25);h.state=h.__s,null!=h.getChildContext&&(n=f(f({},n),h.getChildContext())),u||null==h.getSnapshotBeforeUpdate||(b=h.getSnapshotBeforeUpdate(p,_)),$=null!=d&&d.type===m&&null==d.key?d.props.children:d,x(e,Array.isArray($)?$:[$],t,r,n,o,s,a,l,c),h.base=t.__e,t.__h=null,h.__h.length&&a.push(h),g&&(h.__E=h.__=null),h.__e=!1}else null==s&&t.__v===r.__v?(t.__k=r.__k,t.__e=r.__e):t.__e=O(r.__e,t,r,n,o,s,a,c);(d=i.diffed)&&d(t)}catch(e){t.__v=null,(c||null!=s)&&(t.__e=l,t.__h=!!c,s[s.indexOf(l)]=null),i.__e(e,t,r)}}function M(e,t){i.__c&&i.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){i.__e(e,t.__v)}}))}function O(e,t,r,i,o,s,a,l){var c,h,u,f=r.props,_=t.props,b=t.type,g=0;if("svg"===b&&(o=!0),null!=s)for(;g<s.length;g++)if((c=s[g])&&"setAttribute"in c==!!b&&(b?c.localName===b:3===c.nodeType)){e=c,s[g]=null;break}if(null==e){if(null===b)return document.createTextNode(_);e=o?document.createElementNS("http://www.w3.org/2000/svg",b):document.createElement(b,_.is&&_),s=null,l=!1}if(null===b)f===_||l&&e.data===_||(e.data=_);else{if(s=s&&n.call(e.childNodes),h=(f=r.props||d).dangerouslySetInnerHTML,u=_.dangerouslySetInnerHTML,!l){if(null!=s)for(f={},g=0;g<e.attributes.length;g++)f[e.attributes[g].name]=e.attributes[g].value;(u||h)&&(u&&(h&&u.__html==h.__html||u.__html===e.innerHTML)||(e.innerHTML=u&&u.__html||""))}if(function(e,t,r,n,i){var o;for(o in r)"children"===o||"key"===o||o in t||B(e,o,null,r[o],n);for(o in t)i&&"function"!=typeof t[o]||"children"===o||"key"===o||"value"===o||"checked"===o||r[o]===t[o]||B(e,o,t[o],r[o],n)}(e,_,f,o,l),u)t.__k=[];else if(g=t.props.children,x(e,Array.isArray(g)?g:[g],t,r,i,o&&"foreignObject"!==b,s,a,s?s[0]:r.__k&&A(r,0),l),null!=s)for(g=s.length;g--;)null!=s[g]&&p(s[g]);l||("value"in _&&void 0!==(g=_.value)&&(g!==e.value||"progress"===b&&!g||"option"===b&&g!==f.value)&&B(e,"value",g,f.value,!1),"checked"in _&&void 0!==(g=_.checked)&&g!==e.checked&&B(e,"checked",g,f.checked,!1))}return e}function T(e,t,r){try{"function"==typeof e?e(t):e.current=t}catch(e){i.__e(e,r)}}function I(e,t,r){var n,o;if(i.unmount&&i.unmount(e),(n=e.ref)&&(n.current&&n.current!==e.__e||T(n,null,t)),null!=(n=e.__c)){if(n.componentWillUnmount)try{n.componentWillUnmount()}catch(e){i.__e(e,t)}n.base=n.__P=null}if(n=e.__k)for(o=0;o<n.length;o++)n[o]&&I(n[o],t,"function"!=typeof e.type);r||null==e.__e||p(e.__e),e.__e=e.__d=void 0}function P(e,t,r){return this.constructor(e,r)}function F(e,t,r){var o,s,a;i.__&&i.__(e,t),s=(o="function"==typeof r)?null:r&&r.__k||t.__k,a=[],D(t,e=(!o&&r||t).__k=_(m,null,[e]),s||d,d,void 0!==t.ownerSVGElement,!o&&r?[r]:s?null:t.firstChild?n.call(t.childNodes):null,a,!o&&r?r:s?s.__e:t.firstChild,o),M(a,e)}function H(e,t){F(e,t,H)}function j(e,t,r){var i,o,s,a=f({},e.props);for(s in t)"key"==s?i=t[s]:"ref"==s?o=t[s]:a[s]=t[s];return arguments.length>2&&(a.children=arguments.length>3?n.call(arguments,2):r),b(e.type,a,i||e.key,o||e.ref,null)}function z(e,t){var r={__c:t="__cC"+c++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var r,n;return this.getChildContext||(r=[],(n={})[t]=this,this.getChildContext=function(){return n},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&r.some(C)},this.sub=function(e){r.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){r.splice(r.indexOf(e),1),t&&t.call(e)}}),e.children}};return r.Provider.__=r.Consumer.contextType=r}n=h.slice,i={__e:function(e,t,r,n){for(var i,o,s;t=t.__;)if((i=t.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(e)),s=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(e,n||{}),s=i.__d),s)return i.__E=i}catch(t){e=t}throw e}},o=0,s=function(e){return null!=e&&void 0===e.constructor},v.prototype.setState=function(e,t){var r;r=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=f({},this.state),"function"==typeof e&&(e=e(f({},r),this.props)),e&&f(r,e),null!=e&&this.__v&&(t&&this.__h.push(t),C(this))},v.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),C(this))},v.prototype.render=m,a=[],w.__r=0,c=0},584:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Fragment:()=>n.Fragment,jsx:()=>o,jsxDEV:()=>o,jsxs:()=>o});var n=r(400),i=0;function o(e,t,r,o,s){var a,l,c={};for(l in t)"ref"==l?a=t[l]:c[l]=t[l];var d={type:e,props:c,key:r,ref:a,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--i,__source:s,__self:o};if("function"==typeof e&&(a=e.defaultProps))for(l in a)void 0===c[l]&&(c[l]=a[l]);return n.options.vnode&&n.options.vnode(d),d}},791:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(379),i=r.n(n),o=r(687),s={insert:"head",singleton:!1};i()(o.Z,s);const a=o.Z.locals||{}},379:(e,t,r)=>{"use strict";var n,i=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},o=function(){var e={};return function(t){if(void 0===e[t]){var r=document.querySelector(t);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}e[t]=r}return e[t]}}(),s=[];function a(e){for(var t=-1,r=0;r<s.length;r++)if(s[r].identifier===e){t=r;break}return t}function l(e,t){for(var r={},n=[],i=0;i<e.length;i++){var o=e[i],l=t.base?o[0]+t.base:o[0],c=r[l]||0,d="".concat(l," ").concat(c);r[l]=c+1;var h=a(d),u={css:o[1],media:o[2],sourceMap:o[3]};-1!==h?(s[h].references++,s[h].updater(u)):s.push({identifier:d,updater:b(u,t),references:1}),n.push(d)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var i=r.nc;i&&(n.nonce=i)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var s=o(e.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(t)}return t}var d,h=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function u(e,t,r,n){var i=r?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=h(t,i);else{var o=document.createTextNode(i),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(o,s[t]):e.appendChild(o)}}function f(e,t,r){var n=r.css,i=r.media,o=r.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),o&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var p=null,_=0;function b(e,t){var r,n,i;if(t.singleton){var o=_++;r=p||(p=c(t)),n=u.bind(null,r,o,!1),i=u.bind(null,r,o,!0)}else r=c(t),n=f.bind(null,r,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(r)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var r=l(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<r.length;n++){var i=a(r[n]);s[i].references--}for(var o=l(e,t),c=0;c<r.length;c++){var d=a(r[c]);0===s[d].references&&(s[d].updater(),s.splice(d,1))}r=o}}}},464:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Button=t.MyModal=void 0;const n=r(584),i=r(400),o=r(138);r(791);class s extends i.Component{ref=(0,i.createRef)();constructor(){super()}componentDidMount(){o.Modal.getOrCreateInstance(this.ref.current).show(),this.ref.current?.addEventListener("hide.bs.modal",(()=>{this.props.dismissHandler&&this.props.dismissHandler()}))}componentWillUnmount(){this.hide()}hide(){o.Modal.getOrCreateInstance(this.ref.current).hide()}render(){return(0,n.jsx)("div",{class:"modal fade",ref:this.ref,tabIndex:-1,"aria-hidden":"true",children:(0,n.jsx)("div",{class:"modal-dialog",children:(0,n.jsxs)("div",{class:"modal-content",children:[(0,n.jsxs)("div",{class:"modal-header",children:[(0,n.jsx)("h5",{class:"modal-title",children:this.props.title}),(0,n.jsx)("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"})]}),(0,n.jsx)("div",{class:"modal-body",children:this.props.children}),(0,n.jsx)("div",{class:"modal-footer",children:this.props.buttons})]})})})}}t.MyModal=s,t.Button=function(e){let t="btn btn-"+e.priority;return(0,n.jsx)("button",{type:"button",disabled:e.disabled,class:t,onClick:()=>{e.clickHandler&&e.clickHandler()},children:e.children})}},69:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Connection=t.ConnectionFactory=void 0;t.ConnectionFactory=class{url;protocols;constructor(e,t){this.url=e,this.protocols=t}create(){return new r(this.url,this.protocols)}};class r{bare;constructor(e,t){this.bare=new WebSocket(e,t)}open(){}close(){this.bare.close()}send(e){this.bare.send(e)}isOpen(){return this.bare.readyState==WebSocket.CONNECTING||this.bare.readyState==WebSocket.OPEN}onOpen(e){this.bare.onopen=t=>{e()}}onReceive(e){this.bare.onmessage=t=>{e(t.data)}}onClose(e){this.bare.onclose=t=>{e()}}}t.Connection=r},139:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WebTTY=t.msgSetBufferSize=t.msgSetReconnect=t.msgSetPreferences=t.msgSetWindowTitle=t.msgPong=t.msgOutput=t.msgUnknownOutput=t.msgSetEncoding=t.msgResizeTerminal=t.msgPing=t.msgInput=t.msgInputUnknown=t.protocols=void 0,t.protocols=["webtty"],t.msgInputUnknown="0",t.msgInput="1",t.msgPing="2",t.msgResizeTerminal="3",t.msgSetEncoding="4",t.msgUnknownOutput="0",t.msgOutput="1",t.msgPong="2",t.msgSetWindowTitle="3",t.msgSetPreferences="4",t.msgSetReconnect="5",t.msgSetBufferSize="6";t.WebTTY=class{term;connectionFactory;connection;args;authToken;reconnect;bufSize;constructor(e,t,r,n){this.term=e,this.connectionFactory=t,this.args=r,this.authToken=n,this.reconnect=-1,this.bufSize=1024}open(){let e,r,n=this.connectionFactory.create();this.connection=n;const i=()=>{n.onOpen((()=>{const t=this.term.info();this.initializeConnection(this.args,this.authToken),this.term.onResize(((e,t)=>{this.sendResizeTerminal(e,t)})),this.sendResizeTerminal(t.columns,t.rows),this.sendSetEncoding("base64"),this.term.onInput((e=>{this.sendInput(e)})),e=setInterval((()=>{this.sendPing()}),3e4)})),n.onReceive((e=>{const r=e.slice(1);switch(e[0]){case t.msgOutput:this.term.output(Uint8Array.from(atob(r),(e=>e.charCodeAt(0))));break;case t.msgPong:break;case t.msgSetWindowTitle:this.term.setWindowTitle(r);break;case t.msgSetPreferences:const e=JSON.parse(r);this.term.setPreferences(e);break;case t.msgSetReconnect:const n=JSON.parse(r);console.log("Enabling reconnect: "+n+" seconds"),this.reconnect=n;break;case t.msgSetBufferSize:const i=JSON.parse(r);this.bufSize=i}})),n.onClose((()=>{clearInterval(e),this.term.deactivate(),this.term.showMessage("Connection Closed",0),this.reconnect>0&&(r=setTimeout((()=>{n=this.connectionFactory.create(),this.term.reset(),i()}),1e3*this.reconnect))})),n.open()};return i(),()=>{clearTimeout(r),n.close()}}initializeConnection(e,t){this.connection.send(JSON.stringify({Arguments:e,AuthToken:t}))}sendInput(e){let r,n=this.bufSize-1;r="string"==typeof e?e:String.fromCharCode(...e);let i=3*Math.floor(n/4);for(let e=0;e<Math.ceil(r.length/i);e++){let n=r.substring(e*i,Math.min((e+1)*i,r.length));this.connection.send(t.msgInput+btoa(n))}}sendPing(){this.connection.send(t.msgPing)}sendResizeTerminal(e,r){this.connection.send(t.msgResizeTerminal+JSON.stringify({columns:e,rows:r}))}sendSetEncoding(e){this.connection.send(t.msgSetEncoding+e)}}},339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OurXterm=void 0;const n=r(320),i=r(617),o=r(511),s=r(292),a=r(903);t.OurXterm=class{elem;term;resizeListener;message;messageTimeout;messageTimer;onResizeHandler;onDataHandler;fitAddOn;zmodemAddon;toServer;encoder;constructor(e){this.elem=e,this.term=new n.Terminal,this.fitAddOn=new i.FitAddon,this.zmodemAddon=new a.ZModemAddon({toTerminal:e=>this.term.write(e),toServer:e=>this.sendInput(e)}),this.term.loadAddon(new o.WebLinksAddon),this.term.loadAddon(this.fitAddOn),this.term.loadAddon(this.zmodemAddon),this.message=e.ownerDocument.createElement("div"),this.message.className="xterm-overlay",this.messageTimeout=2e3,this.resizeListener=()=>{this.fitAddOn.fit(),this.term.scrollToBottom(),this.showMessage(String(this.term.cols)+"x"+String(this.term.rows),this.messageTimeout)},this.term.open(e),this.term.focus(),this.resizeListener(),window.addEventListener("resize",(()=>{this.resizeListener()}))}info(){return{columns:this.term.cols,rows:this.term.rows}}output(e){this.zmodemAddon.consume(e)}getMessage(){return this.message}showMessage(e,t){this.message.innerHTML=e,this.showMessageElem(t)}showMessageElem(e){this.elem.appendChild(this.message),this.messageTimer&&clearTimeout(this.messageTimer),e>0&&(this.messageTimer=setTimeout((()=>{try{this.elem.removeChild(this.message)}catch(e){console.error(e)}}),e))}removeMessage(){this.message.parentNode==this.elem&&this.elem.removeChild(this.message)}setWindowTitle(e){document.title=e}setPreferences(e){Object.keys(e).forEach((t=>{"EnableWebGL"==t&&t?this.term.loadAddon(new s.WebglAddon):"font-size"==t?this.term.setOption("fontSize",e[t]):"font-family"==t&&this.term.setOption("fontFamily",e[t])}))}sendInput(e){return this.toServer(e)}onInput(e){this.encoder=new TextEncoder,this.toServer=e,void 0===this.onDataHandler&&(this.onDataHandler=this.term.onData((e=>{this.toServer(this.encoder.encode(e))})))}onResize(e){this.onResizeHandler=this.term.onResize((()=>{e(this.term.cols,this.term.rows)}))}deactivate(){this.onDataHandler.dispose(),this.onResizeHandler.dispose(),this.term.blur()}reset(){this.removeMessage(),this.term.clear()}close(){window.removeEventListener("resize",this.resizeListener),this.term.dispose()}disableStdin(){this.term.options.disableStdin=!0}enableStdin(){this.term.options.disableStdin=!1}focus(){this.term.focus()}}},903:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileModal=t.ReceiveFileModal=t.ZModemAddon=void 0;const n=r(584),i=r(694),o=r(464),s=r(400);function a(e){let{min:t,max:r,now:i}=e,o="0";return"number"==typeof t&&"number"==typeof r&&"number"==typeof i&&t!=r&&(o=(100*(i-t)/(r-t)).toFixed(0)),(0,n.jsx)("div",{class:"progress",children:(0,n.jsx)("div",{class:"progress-bar",role:"progressbar",style:"width: "+o+"%","aria-valuenow":i,"aria-valuemin":t,"aria-valuemax":r,children:e.children})})}t.ZModemAddon=class{term;elem;sentry;toTerminal;toServer;constructor(e){this.createElement(),this.toTerminal=e.toTerminal,this.toServer=e.toServer,this.init()}createElement(){this.elem=document.createElement("div"),document.body.prepend(this.elem)}consume(e){this.sentry.consume(e)}activate(e){this.term=e}dispose(){}init(){(0,s.render)((0,n.jsx)(n.Fragment,{}),this.elem),this.sentry=new i.Sentry({to_terminal:e=>this.toTerminal(e),on_detect:e=>this.onDetect(e),sender:e=>{this.toServer(e)},on_retract:()=>this.reset()})}reset(){this.init(),this.term.options.disableStdin=!1,this.term.focus()}onDetect(e){var t=e.confirm();this.term.options.disableStdin=!0,t.on("session_end",(()=>{this.reset()})),"send"===t.type?this.send(t):(t.on("offer",(e=>this.onOffer(e))),t.start())}send(e){(0,s.render)((0,n.jsx)(c,{session:e}),this.elem)}onOffer(e){(0,s.render)((0,n.jsx)(l,{xfer:e,onFinish:()=>this.reset()}),this.elem)}};class l extends s.Component{constructor(e){super(e),this.setState({state:"notstarted"})}accept(){this.setState({state:"started"});let e=setInterval((()=>this.forceUpdate()),100);this.props.xfer.accept().then((t=>{clearInterval(e),this.forceUpdate(),"skipped"!=this.state.state&&i.Browser.save_to_disk(t,this.props.xfer.get_details().name),this.setState({state:"done"})}))}finish(){console.log("finished"),this.props.onFinish&&this.props.onFinish()}progress(){if("notstarted"!==this.state.state)return(0,n.jsx)(a,{min:0,max:this.props.xfer.get_details().size,now:this.props.xfer.get_offset()})}skip(){this.props.xfer.skip(),this.setState({state:"skipped"})}buttons(){switch(this.state.state){case"notstarted":return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.Button,{priority:"primary",clickHandler:()=>{this.accept()},children:"Accept"}),(0,n.jsx)(o.Button,{priority:"secondary",clickHandler:()=>{this.skip()},children:"Decline"})]});case"started":return(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(o.Button,{priority:"danger",clickHandler:()=>{this.skip()},children:"Cancel"})});case"skipped":return(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(o.Button,{priority:"danger",disabled:!0,children:"Skipping..."})})}}render(){if("done"!=this.state.state)return(0,n.jsxs)(o.MyModal,{title:"Incoming file",buttons:this.buttons(),children:["Accept ",(0,n.jsx)("code",{children:this.props.xfer.get_details().name})," (",this.props.xfer.get_details().size.toLocaleString(void 0,{maximumFractionDigits:0})," bytes)?",this.progress()]})}}t.ReceiveFileModal=l;class c extends s.Component{filePickerRef=(0,s.createRef)();constructor(e){super(e),this.setState({state:"notstarted"})}buttons(){switch(this.state.state){case"started":return(0,n.jsx)(n.Fragment,{children:(0,n.jsxs)(o.Button,{priority:"primary",clickHandler:()=>{this.send()},disabled:!0,children:["Sending...",(0,n.jsx)("span",{class:"spinner-border spinner-border-sm",role:"status","aria-hidden":"true"})]})});case"notstarted":return(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(o.Button,{priority:"primary",clickHandler:()=>{this.send()},children:"Send"})});default:return}}send(){i.Browser.send_files(this.props.session,this.filePickerRef.current.files,{on_offer_response:(e,t)=>{this.setState({state:"started"})}}).then((()=>{this.setState({state:"done"}),this.props.session.close(),void 0!==this.props.onFinish&&this.props.onFinish()})).catch((e=>console.log(e)))}render(){if("done"!=this.state.state)return(0,n.jsx)(o.MyModal,{title:"Send file(s)",buttons:this.buttons(),children:(0,n.jsxs)("div",{class:"mb-3",children:[(0,n.jsx)("label",{for:"formFileMultiple",class:"form-label",children:"Remote requested file transfer"}),(0,n.jsx)("input",{ref:this.filePickerRef,class:"form-control form-control-sm",type:"file",id:"formFileMultiple",multiple:!0})]})})}}t.SendFileModal=c},617:e=>{self,e.exports=(()=>{"use strict";var e={775:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0;var r=function(){function e(){}return e.prototype.activate=function(e){this._terminal=e},e.prototype.dispose=function(){},e.prototype.fit=function(){var e=this.proposeDimensions();if(e&&this._terminal){var t=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}},e.prototype.proposeDimensions=function(){if(this._terminal&&this._terminal.element&&this._terminal.element.parentElement){var e=this._terminal._core;if(0!==e._renderService.dimensions.actualCellWidth&&0!==e._renderService.dimensions.actualCellHeight){var t=window.getComputedStyle(this._terminal.element.parentElement),r=parseInt(t.getPropertyValue("height")),n=Math.max(0,parseInt(t.getPropertyValue("width"))),i=window.getComputedStyle(this._terminal.element),o=r-(parseInt(i.getPropertyValue("padding-top"))+parseInt(i.getPropertyValue("padding-bottom"))),s=n-(parseInt(i.getPropertyValue("padding-right"))+parseInt(i.getPropertyValue("padding-left")))-e.viewport.scrollBarWidth;return{cols:Math.max(2,Math.floor(s/e._renderService.dimensions.actualCellWidth)),rows:Math.max(1,Math.floor(o/e._renderService.dimensions.actualCellHeight))}}}},e}();t.FitAddon=r}},t={};return function r(n){if(t[n])return t[n].exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}(775)})()},511:e=>{window,e.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WebLinksAddon=void 0;var n=r(1),i=new RegExp("(?:^|[^\\da-z\\.-]+)((https?:\\/\\/)((([\\da-z\\.-]+)\\.([a-z\\.]{2,6}))|((\\d{1,3}\\.){3}\\d{1,3})|(localhost))(:\\d{1,5})?((\\/[\\/\\w\\.\\-%~:+@]*)*([^:\"'\\s]))?(\\?[0-9\\w\\[\\]\\(\\)\\/\\?\\!#@$%&'*+,:;~\\=\\.\\-]*)?(#[0-9\\w\\[\\]\\(\\)\\/\\?\\!#@$%&'*+,:;~\\=\\.\\-]*)?)($|[^\\/\\w\\.\\-%]+)");function o(e,t){var r=window.open();r?(r.opener=null,r.location.href=t):console.warn("Opening link blocked as opener could not be cleared")}var s=function(){function e(e,t,r){void 0===e&&(e=o),void 0===t&&(t={}),void 0===r&&(r=!1),this._handler=e,this._options=t,this._useLinkProvider=r,this._options.matchIndex=1}return e.prototype.activate=function(e){this._terminal=e,this._useLinkProvider&&"registerLinkProvider"in this._terminal?this._linkProvider=this._terminal.registerLinkProvider(new n.WebLinkProvider(this._terminal,i,this._handler)):this._linkMatcherId=this._terminal.registerLinkMatcher(i,this._handler,this._options)},e.prototype.dispose=function(){var e;void 0!==this._linkMatcherId&&void 0!==this._terminal&&this._terminal.deregisterLinkMatcher(this._linkMatcherId),null===(e=this._linkProvider)||void 0===e||e.dispose()},e}();t.WebLinksAddon=s},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkComputer=t.WebLinkProvider=void 0;var n=function(){function e(e,t,r){this._terminal=e,this._regex=t,this._handler=r}return e.prototype.provideLinks=function(e,t){t(i.computeLink(e,this._regex,this._terminal,this._handler))},e}();t.WebLinkProvider=n;var i=function(){function e(){}return e.computeLink=function(t,r,n,i){for(var o,s=new RegExp(r.source,(r.flags||"")+"g"),a=e._translateBufferLineToStringWithWrap(t-1,!1,n),l=a[0],c=a[1],d=-1,h=[];null!==(o=s.exec(l));){var u=o[1];if(!u){console.log("match found without corresponding matchIndex");break}if(d=l.indexOf(u,d+1),s.lastIndex=d+u.length,d<0)break;for(var f=d+u.length,p=c+1;f>n.cols;)f-=n.cols,p++;var _={start:{x:d+1,y:c+1},end:{x:f,y:p}};h.push({range:_,text:u,activate:i})}return h},e._translateBufferLineToStringWithWrap=function(e,t,r){var n,i,o="";do{if(!(a=r.buffer.active.getLine(e)))break;a.isWrapped&&e--,i=a.isWrapped}while(i);var s=e;do{var a,l=r.buffer.active.getLine(e+1);if(n=!!l&&l.isWrapped,!(a=r.buffer.active.getLine(e)))break;o+=a.translateToString(!n&&t).substring(0,r.cols),e++}while(n);return[o,s]},e}();t.LinkComputer=i}])},292:e=>{self,e.exports=(()=>{"use strict";var e={965:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.GlyphRenderer=void 0;var n=r(381),i=r(310),o=r(455),s=r(259),a=r(855),l=r(147),c=10,d=c*Float32Array.BYTES_PER_ELEMENT,h=function(){function e(e,t,r,i){this._terminal=e,this._colors=t,this._gl=r,this._dimensions=i,this._activeBuffer=0,this._vertices={count:0,attributes:new Float32Array(0),attributesBuffers:[new Float32Array(0),new Float32Array(0)],selectionAttributes:new Float32Array(0)};var o=this._gl,s=n.throwIfFalsy(n.createProgram(o,"#version 300 es\nlayout (location = 0) in vec2 a_unitquad;\nlayout (location = 1) in vec2 a_cellpos;\nlayout (location = 2) in vec2 a_offset;\nlayout (location = 3) in vec2 a_size;\nlayout (location = 4) in vec2 a_texcoord;\nlayout (location = 5) in vec2 a_texsize;\n\nuniform mat4 u_projection;\nuniform vec2 u_resolution;\n\nout vec2 v_texcoord;\n\nvoid main() {\n vec2 zeroToOne = (a_offset / u_resolution) + a_cellpos + (a_unitquad * a_size);\n gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0);\n v_texcoord = a_texcoord + a_unitquad * a_texsize;\n}","#version 300 es\nprecision lowp float;\n\nin vec2 v_texcoord;\n\nuniform sampler2D u_texture;\n\nout vec4 outColor;\n\nvoid main() {\n outColor = texture(u_texture, v_texcoord);\n}"));this._program=s,this._projectionLocation=n.throwIfFalsy(o.getUniformLocation(this._program,"u_projection")),this._resolutionLocation=n.throwIfFalsy(o.getUniformLocation(this._program,"u_resolution")),this._textureLocation=n.throwIfFalsy(o.getUniformLocation(this._program,"u_texture")),this._vertexArrayObject=o.createVertexArray(),o.bindVertexArray(this._vertexArrayObject);var a=new Float32Array([0,0,1,0,0,1,1,1]),l=o.createBuffer();o.bindBuffer(o.ARRAY_BUFFER,l),o.bufferData(o.ARRAY_BUFFER,a,o.STATIC_DRAW),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,this._gl.FLOAT,!1,0,0);var c=new Uint8Array([0,1,3,0,2,3]),h=o.createBuffer();o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,h),o.bufferData(o.ELEMENT_ARRAY_BUFFER,c,o.STATIC_DRAW),this._attributesBuffer=n.throwIfFalsy(o.createBuffer()),o.bindBuffer(o.ARRAY_BUFFER,this._attributesBuffer),o.enableVertexAttribArray(2),o.vertexAttribPointer(2,2,o.FLOAT,!1,d,0),o.vertexAttribDivisor(2,1),o.enableVertexAttribArray(3),o.vertexAttribPointer(3,2,o.FLOAT,!1,d,2*Float32Array.BYTES_PER_ELEMENT),o.vertexAttribDivisor(3,1),o.enableVertexAttribArray(4),o.vertexAttribPointer(4,2,o.FLOAT,!1,d,4*Float32Array.BYTES_PER_ELEMENT),o.vertexAttribDivisor(4,1),o.enableVertexAttribArray(5),o.vertexAttribPointer(5,2,o.FLOAT,!1,d,6*Float32Array.BYTES_PER_ELEMENT),o.vertexAttribDivisor(5,1),o.enableVertexAttribArray(1),o.vertexAttribPointer(1,2,o.FLOAT,!1,d,8*Float32Array.BYTES_PER_ELEMENT),o.vertexAttribDivisor(1,1),this._atlasTexture=n.throwIfFalsy(o.createTexture()),o.bindTexture(o.TEXTURE_2D,this._atlasTexture),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,1,1,0,o.RGBA,o.UNSIGNED_BYTE,new Uint8Array([0,0,255,255])),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.enable(o.BLEND),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),this.onResize()}return e.prototype.beginFrame=function(){return!this._atlas||this._atlas.beginFrame()},e.prototype.updateCell=function(e,t,r,n,i,o){this._updateCell(this._vertices.attributes,e,t,r,n,i,o)},e.prototype._updateCell=function(e,t,r,n,i,s,l){var d,h=(r*this._terminal.cols+t)*c;n!==a.NULL_CELL_CODE&&n!==a.WHITESPACE_CELL_CODE&&void 0!==n?this._atlas&&((d=l&&l.length>1?this._atlas.getRasterizedGlyphCombinedChar(l,i,s):this._atlas.getRasterizedGlyph(n,i,s))?(e[h]=-d.offset.x+this._dimensions.scaledCharLeft,e[h+1]=-d.offset.y+this._dimensions.scaledCharTop,e[h+2]=d.size.x/this._dimensions.scaledCanvasWidth,e[h+3]=d.size.y/this._dimensions.scaledCanvasHeight,e[h+4]=d.texturePositionClipSpace.x,e[h+5]=d.texturePositionClipSpace.y,e[h+6]=d.sizeClipSpace.x,e[h+7]=d.sizeClipSpace.y):o.fill(e,0,h,h+c-1-2)):o.fill(e,0,h,h+c-1-2)},e.prototype.updateSelection=function(e){var t=this._terminal;this._vertices.selectionAttributes=s.slice(this._vertices.attributes,0);var r=this._colors.selectionOpaque.rgba>>>8|50331648;if(e.selection.columnSelectMode)for(var n=e.selection.startCol,i=e.selection.endCol-n,o=e.selection.viewportCappedEndRow-e.selection.viewportCappedStartRow+1,a=e.selection.viewportCappedStartRow;a<e.selection.viewportCappedStartRow+o;a++)this._updateSelectionRange(n,n+i,a,e,r);else{n=e.selection.viewportStartRow===e.selection.viewportCappedStartRow?e.selection.startCol:0;var l=e.selection.viewportCappedStartRow===e.selection.viewportCappedEndRow?e.selection.endCol:t.cols;this._updateSelectionRange(n,l,e.selection.viewportCappedStartRow,e,r);var c=Math.max(e.selection.viewportCappedEndRow-e.selection.viewportCappedStartRow-1,0);for(a=e.selection.viewportCappedStartRow+1;a<=e.selection.viewportCappedStartRow+c;a++)this._updateSelectionRange(0,l,a,e,r);if(e.selection.viewportCappedStartRow!==e.selection.viewportCappedEndRow){var d=e.selection.viewportEndRow===e.selection.viewportCappedEndRow?e.selection.endCol:t.cols;this._updateSelectionRange(0,d,e.selection.viewportCappedEndRow,e,r)}}},e.prototype._updateSelectionRange=function(e,t,r,n,o){for(var s,a=this._terminal,c=r+a.buffer.active.viewportY,d=e;d<t;d++){var h=(r*this._terminal.cols+d)*i.RENDER_MODEL_INDICIES_PER_CELL,u=n.cells[h],f=n.cells[h+i.RENDER_MODEL_FG_OFFSET];if(67108864&f){var p=new l.AttributeData;switch(p.fg=f,p.bg=n.cells[h+i.RENDER_MODEL_BG_OFFSET],f&=-134217728,p.getBgColorMode()){case 16777216:case 33554432:var _=this._getColorFromAnsiIndex(p.getBgColor()).rgba;f|=_>>8&16711680|_>>8&65280|_>>8&255;case 50331648:var b=l.AttributeData.toColorRGB(p.getBgColor());f|=b[0]<<16|b[1]<<8|b[2]<<0;default:var g=this._colors.background.rgba;f|=g>>8&16711680|g>>8&65280|g>>8&255}f|=50331648}if(u&i.COMBINED_CHAR_BIT_MASK){s||(s=a.buffer.active.getLine(c));var m=s.getCell(d).getChars();this._updateCell(this._vertices.selectionAttributes,d,r,n.cells[h],o,f,m)}else this._updateCell(this._vertices.selectionAttributes,d,r,n.cells[h],o,f)}},e.prototype._getColorFromAnsiIndex=function(e){if(e>=this._colors.ansi.length)throw new Error("No color found for idx "+e);return this._colors.ansi[e]},e.prototype.onResize=function(){var e=this._terminal,t=this._gl;t.viewport(0,0,t.canvas.width,t.canvas.height);var r=e.cols*e.rows*c;if(this._vertices.count!==r){this._vertices.count=r,this._vertices.attributes=new Float32Array(r);for(var n=0;n<this._vertices.attributesBuffers.length;n++)this._vertices.attributesBuffers[n]=new Float32Array(r);for(var i=0,o=0;o<e.rows;o++)for(var s=0;s<e.cols;s++)this._vertices.attributes[i+8]=s/e.cols,this._vertices.attributes[i+9]=o/e.rows,i+=c}},e.prototype.setColors=function(){},e.prototype.render=function(e,t){if(this._atlas){var r=this._gl;r.useProgram(this._program),r.bindVertexArray(this._vertexArrayObject),this._activeBuffer=(this._activeBuffer+1)%2;for(var i=this._vertices.attributesBuffers[this._activeBuffer],o=0,s=0;s<e.lineLengths.length;s++){var a=s*this._terminal.cols*c,l=(t?this._vertices.selectionAttributes:this._vertices.attributes).subarray(a,a+e.lineLengths[s]*c);i.set(l,o),o+=l.length}r.bindBuffer(r.ARRAY_BUFFER,this._attributesBuffer),r.bufferData(r.ARRAY_BUFFER,i.subarray(0,o),r.STREAM_DRAW),this._atlas.hasCanvasChanged&&(this._atlas.hasCanvasChanged=!1,r.uniform1i(this._textureLocation,0),r.activeTexture(r.TEXTURE0+0),r.bindTexture(r.TEXTURE_2D,this._atlasTexture),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,this._atlas.cacheCanvas),r.generateMipmap(r.TEXTURE_2D)),r.uniformMatrix4fv(this._projectionLocation,!1,n.PROJECTION_MATRIX),r.uniform2f(this._resolutionLocation,r.canvas.width,r.canvas.height),r.drawElementsInstanced(r.TRIANGLES,6,r.UNSIGNED_BYTE,0,o/c)}},e.prototype.setAtlas=function(e){var t=this._gl;this._atlas=e,t.bindTexture(t.TEXTURE_2D,this._atlasTexture),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e.cacheCanvas),t.generateMipmap(t.TEXTURE_2D)},e.prototype.setDimensions=function(e){this._dimensions=e},e}();t.GlyphRenderer=h},344:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.RectangleRenderer=void 0;var n=r(381),i=r(455),o=r(310),s=8*Float32Array.BYTES_PER_ELEMENT,a=function(){function e(e,t,r,i){this._terminal=e,this._colors=t,this._gl=r,this._dimensions=i,this._vertices={count:0,attributes:new Float32Array(160),selection:new Float32Array(24)};var o=this._gl;this._program=n.throwIfFalsy(n.createProgram(o,"#version 300 es\nlayout (location = 0) in vec2 a_position;\nlayout (location = 1) in vec2 a_size;\nlayout (location = 2) in vec4 a_color;\nlayout (location = 3) in vec2 a_unitquad;\n\nuniform mat4 u_projection;\nuniform vec2 u_resolution;\n\nout vec4 v_color;\n\nvoid main() {\n vec2 zeroToOne = (a_position + (a_unitquad * a_size)) / u_resolution;\n gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0);\n v_color = a_color;\n}","#version 300 es\nprecision lowp float;\n\nin vec4 v_color;\n\nout vec4 outColor;\n\nvoid main() {\n outColor = v_color;\n}")),this._resolutionLocation=n.throwIfFalsy(o.getUniformLocation(this._program,"u_resolution")),this._projectionLocation=n.throwIfFalsy(o.getUniformLocation(this._program,"u_projection")),this._vertexArrayObject=o.createVertexArray(),o.bindVertexArray(this._vertexArrayObject);var a=new Float32Array([0,0,1,0,0,1,1,1]),l=o.createBuffer();o.bindBuffer(o.ARRAY_BUFFER,l),o.bufferData(o.ARRAY_BUFFER,a,o.STATIC_DRAW),o.enableVertexAttribArray(3),o.vertexAttribPointer(3,2,this._gl.FLOAT,!1,0,0);var c=new Uint8Array([0,1,3,0,2,3]),d=o.createBuffer();o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,d),o.bufferData(o.ELEMENT_ARRAY_BUFFER,c,o.STATIC_DRAW),this._attributesBuffer=n.throwIfFalsy(o.createBuffer()),o.bindBuffer(o.ARRAY_BUFFER,this._attributesBuffer),o.enableVertexAttribArray(0),o.vertexAttribPointer(0,2,o.FLOAT,!1,s,0),o.vertexAttribDivisor(0,1),o.enableVertexAttribArray(1),o.vertexAttribPointer(1,2,o.FLOAT,!1,s,2*Float32Array.BYTES_PER_ELEMENT),o.vertexAttribDivisor(1,1),o.enableVertexAttribArray(2),o.vertexAttribPointer(2,4,o.FLOAT,!1,s,4*Float32Array.BYTES_PER_ELEMENT),o.vertexAttribDivisor(2,1),this._updateCachedColors()}return e.prototype.render=function(){var e=this._gl;e.useProgram(this._program),e.bindVertexArray(this._vertexArrayObject),e.uniformMatrix4fv(this._projectionLocation,!1,n.PROJECTION_MATRIX),e.uniform2f(this._resolutionLocation,e.canvas.width,e.canvas.height),e.bindBuffer(e.ARRAY_BUFFER,this._attributesBuffer),e.bufferData(e.ARRAY_BUFFER,this._vertices.attributes,e.DYNAMIC_DRAW),e.drawElementsInstanced(this._gl.TRIANGLES,6,e.UNSIGNED_BYTE,0,this._vertices.count),e.bindBuffer(e.ARRAY_BUFFER,this._attributesBuffer),e.bufferData(e.ARRAY_BUFFER,this._vertices.selection,e.DYNAMIC_DRAW),e.drawElementsInstanced(this._gl.TRIANGLES,6,e.UNSIGNED_BYTE,0,3)},e.prototype.onResize=function(){this._updateViewportRectangle()},e.prototype.setColors=function(){this._updateCachedColors(),this._updateViewportRectangle()},e.prototype._updateCachedColors=function(){this._bgFloat=this._colorToFloat32Array(this._colors.background),this._selectionFloat=this._colorToFloat32Array(this._colors.selectionOpaque)},e.prototype._updateViewportRectangle=function(){this._addRectangleFloat(this._vertices.attributes,0,0,0,this._terminal.cols*this._dimensions.scaledCellWidth,this._terminal.rows*this._dimensions.scaledCellHeight,this._bgFloat)},e.prototype.updateSelection=function(e){var t=this._terminal;if(e.hasSelection)if(e.columnSelectMode){var r=e.startCol,n=e.endCol-r,o=e.viewportCappedEndRow-e.viewportCappedStartRow+1;this._addRectangleFloat(this._vertices.selection,0,r*this._dimensions.scaledCellWidth,e.viewportCappedStartRow*this._dimensions.scaledCellHeight,n*this._dimensions.scaledCellWidth,o*this._dimensions.scaledCellHeight,this._selectionFloat),i.fill(this._vertices.selection,0,8)}else{r=e.viewportStartRow===e.viewportCappedStartRow?e.startCol:0;var s=e.viewportCappedStartRow===e.viewportEndRow?e.endCol:t.cols;this._addRectangleFloat(this._vertices.selection,0,r*this._dimensions.scaledCellWidth,e.viewportCappedStartRow*this._dimensions.scaledCellHeight,(s-r)*this._dimensions.scaledCellWidth,this._dimensions.scaledCellHeight,this._selectionFloat);var a=Math.max(e.viewportCappedEndRow-e.viewportCappedStartRow-1,0);if(this._addRectangleFloat(this._vertices.selection,8,0,(e.viewportCappedStartRow+1)*this._dimensions.scaledCellHeight,t.cols*this._dimensions.scaledCellWidth,a*this._dimensions.scaledCellHeight,this._selectionFloat),e.viewportCappedStartRow!==e.viewportCappedEndRow){var l=e.viewportEndRow===e.viewportCappedEndRow?e.endCol:t.cols;this._addRectangleFloat(this._vertices.selection,16,0,e.viewportCappedEndRow*this._dimensions.scaledCellHeight,l*this._dimensions.scaledCellWidth,this._dimensions.scaledCellHeight,this._selectionFloat)}else i.fill(this._vertices.selection,0,16)}else i.fill(this._vertices.selection,0,0)},e.prototype.updateBackgrounds=function(e){for(var t=this._terminal,r=this._vertices,n=1,i=0;i<t.rows;i++){for(var s=-1,a=0,l=0,c=!1,d=0;d<t.cols;d++){var h=(i*t.cols+d)*o.RENDER_MODEL_INDICIES_PER_CELL,u=e.cells[h+o.RENDER_MODEL_BG_OFFSET],f=e.cells[h+o.RENDER_MODEL_FG_OFFSET],p=!!(67108864&f);if(u!==a||f!==l&&(c||p)){if(0!==a||c&&0!==l){var _=8*n++;this._updateRectangle(r,_,l,a,s,d,i)}s=d,a=u,l=f,c=p}}(0!==a||c&&0!==l)&&(_=8*n++,this._updateRectangle(r,_,l,a,s,t.cols,i))}r.count=n},e.prototype._updateRectangle=function(e,t,r,i,o,s,a){var l;if(67108864&r)switch(50331648&r){case 16777216:case 33554432:l=this._colors.ansi[255&r].rgba;break;case 50331648:l=(16777215&r)<<8;break;default:l=this._colors.foreground.rgba}else switch(50331648&i){case 16777216:case 33554432:l=this._colors.ansi[255&i].rgba;break;case 50331648:l=(16777215&i)<<8;break;default:l=this._colors.background.rgba}e.attributes.length<t+4&&(e.attributes=n.expandFloat32Array(e.attributes,this._terminal.rows*this._terminal.cols*8));var c=o*this._dimensions.scaledCellWidth,d=a*this._dimensions.scaledCellHeight,h=(l>>24&255)/255,u=(l>>16&255)/255,f=(l>>8&255)/255;this._addRectangle(e.attributes,t,c,d,(s-o)*this._dimensions.scaledCellWidth,this._dimensions.scaledCellHeight,h,u,f,1)},e.prototype._addRectangle=function(e,t,r,n,i,o,s,a,l,c){e[t]=r,e[t+1]=n,e[t+2]=i,e[t+3]=o,e[t+4]=s,e[t+5]=a,e[t+6]=l,e[t+7]=c},e.prototype._addRectangleFloat=function(e,t,r,n,i,o,s){e[t]=r,e[t+1]=n,e[t+2]=i,e[t+3]=o,e[t+4]=s[0],e[t+5]=s[1],e[t+6]=s[2],e[t+7]=s[3]},e.prototype._colorToFloat32Array=function(e){return new Float32Array([(e.rgba>>24&255)/255,(e.rgba>>16&255)/255,(e.rgba>>8&255)/255,(255&e.rgba)/255])},e}();t.RectangleRenderer=a},310:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.RenderModel=t.COMBINED_CHAR_BIT_MASK=t.RENDER_MODEL_FG_OFFSET=t.RENDER_MODEL_BG_OFFSET=t.RENDER_MODEL_INDICIES_PER_CELL=void 0;var n=r(455);t.RENDER_MODEL_INDICIES_PER_CELL=3,t.RENDER_MODEL_BG_OFFSET=1,t.RENDER_MODEL_FG_OFFSET=2,t.COMBINED_CHAR_BIT_MASK=2147483648;var i=function(){function e(){this.cells=new Uint32Array(0),this.lineLengths=new Uint32Array(0),this.selection={hasSelection:!1,columnSelectMode:!1,viewportStartRow:0,viewportEndRow:0,viewportCappedStartRow:0,viewportCappedEndRow:0,startCol:0,endCol:0}}return e.prototype.resize=function(e,r){var n=e*r*t.RENDER_MODEL_INDICIES_PER_CELL;n!==this.cells.length&&(this.cells=new Uint32Array(n),this.lineLengths=new Uint32Array(r))},e.prototype.clear=function(){n.fill(this.cells,0,0),n.fill(this.lineLengths,0,0)},e.prototype.clearSelection=function(){this.selection.hasSelection=!1,this.selection.viewportStartRow=0,this.selection.viewportEndRow=0,this.selection.viewportCappedStartRow=0,this.selection.viewportCappedEndRow=0,this.selection.startCol=0,this.selection.endCol=0},e}();t.RenderModel=i},259:(e,t)=>{function r(e,t,r){void 0===t&&(t=0),void 0===r&&(r=e.length),t<0&&(t=(e.length+t)%e.length),r=r>=e.length?e.length:(e.length+r)%e.length,t=Math.min(t,r);for(var n=new e.constructor(r-t),i=0;i<r-t;++i)n[i]=e[i+t];return n}Object.defineProperty(t,"__esModule",{value:!0}),t.sliceFallback=t.slice=void 0,t.slice=function(e,t,n){return e.slice?e.slice(t,n):r(e,t,n)},t.sliceFallback=r},795:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WebglAddon=void 0;var n=r(666),i=function(){function e(e){this._preserveDrawingBuffer=e}return e.prototype.activate=function(e){if(!e.element)throw new Error("Cannot activate WebglAddon before Terminal.open");this._terminal=e;var t=e._core._renderService,r=e._core._colorManager.colors;this._renderer=new n.WebglRenderer(e,r,this._preserveDrawingBuffer),t.setRenderer(this._renderer)},e.prototype.dispose=function(){if(!this._terminal)throw new Error("Cannot dispose WebglAddon because it is activated");var e=this._terminal._core._renderService;e.setRenderer(this._terminal._core._createRenderer()),e.onResize(this._terminal.cols,this._terminal.rows),this._renderer=void 0},Object.defineProperty(e.prototype,"textureAtlas",{get:function(){var e;return null===(e=this._renderer)||void 0===e?void 0:e.textureAtlas},enumerable:!1,configurable:!0}),e.prototype.clearTextureAtlas=function(){var e;null===(e=this._renderer)||void 0===e||e.clearCharAtlas()},e}();t.WebglAddon=i},666:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.WebglRenderer=void 0;var o=r(965),s=r(733),a=r(461),l=r(713),c=r(344),d=r(310),h=r(859),u=r(855),f=r(345),p=r(782),_=function(e){function t(t,r,n){var i=e.call(this)||this;i._terminal=t,i._colors=r,i._model=new d.RenderModel,i._workCell=new p.CellData,i._onRequestRedraw=new f.EventEmitter,i._core=i._terminal._core,i._renderLayers=[new s.LinkRenderLayer(i._core.screenElement,2,i._colors,i._core),new a.CursorRenderLayer(i._core.screenElement,3,i._colors,i._onRequestRedraw)],i.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},i._devicePixelRatio=window.devicePixelRatio,i._updateDimensions(),i._canvas=document.createElement("canvas");var l={antialias:!1,depth:!1,preserveDrawingBuffer:n};if(i._gl=i._canvas.getContext("webgl2",l),!i._gl)throw new Error("WebGL2 not supported "+i._gl);return i._core.screenElement.appendChild(i._canvas),i._rectangleRenderer=new c.RectangleRenderer(i._terminal,i._colors,i._gl,i.dimensions),i._glyphRenderer=new o.GlyphRenderer(i._terminal,i._colors,i._gl,i.dimensions),i.onCharSizeChanged(),i._isAttached=document.body.contains(i._core.screenElement),i}return i(t,e),Object.defineProperty(t.prototype,"onRequestRedraw",{get:function(){return this._onRequestRedraw.event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){this._renderLayers.forEach((function(e){return e.dispose()})),this._core.screenElement.removeChild(this._canvas),e.prototype.dispose.call(this)},Object.defineProperty(t.prototype,"textureAtlas",{get:function(){var e;return null===(e=this._charAtlas)||void 0===e?void 0:e.cacheCanvas},enumerable:!1,configurable:!0}),t.prototype.setColors=function(e){var t=this;this._colors=e,this._renderLayers.forEach((function(e){e.setColors(t._terminal,t._colors),e.reset(t._terminal)})),this._rectangleRenderer.setColors(),this._glyphRenderer.setColors(),this._refreshCharAtlas(),this._model.clear()},t.prototype.onDevicePixelRatioChange=function(){this._devicePixelRatio!==window.devicePixelRatio&&(this._devicePixelRatio=window.devicePixelRatio,this.onResize(this._terminal.cols,this._terminal.rows))},t.prototype.onResize=function(e,t){var r=this;this._updateDimensions(),this._model.resize(this._terminal.cols,this._terminal.rows),this._renderLayers.forEach((function(e){return e.resize(r._terminal,r.dimensions)})),this._canvas.width=this.dimensions.scaledCanvasWidth,this._canvas.height=this.dimensions.scaledCanvasHeight,this._canvas.style.width=this.dimensions.canvasWidth+"px",this._canvas.style.height=this.dimensions.canvasHeight+"px",this._core.screenElement.style.width=this.dimensions.canvasWidth+"px",this._core.screenElement.style.height=this.dimensions.canvasHeight+"px",this._rectangleRenderer.onResize(),this._model.selection.hasSelection&&this._rectangleRenderer.updateSelection(this._model.selection),this._glyphRenderer.setDimensions(this.dimensions),this._glyphRenderer.onResize(),this._refreshCharAtlas(),this._model.clear()},t.prototype.onCharSizeChanged=function(){this.onResize(this._terminal.cols,this._terminal.rows)},t.prototype.onBlur=function(){var e=this;this._renderLayers.forEach((function(t){return t.onBlur(e._terminal)}))},t.prototype.onFocus=function(){var e=this;this._renderLayers.forEach((function(t){return t.onFocus(e._terminal)}))},t.prototype.onSelectionChanged=function(e,t,r){var n=this;this._renderLayers.forEach((function(i){return i.onSelectionChanged(n._terminal,e,t,r)})),this._updateSelectionModel(e,t,r),this._onRequestRedraw.fire({start:0,end:this._terminal.rows-1})},t.prototype.onCursorMove=function(){var e=this;this._renderLayers.forEach((function(t){return t.onCursorMove(e._terminal)}))},t.prototype.onOptionsChanged=function(){var e=this;this._renderLayers.forEach((function(t){return t.onOptionsChanged(e._terminal)})),this._updateDimensions(),this._refreshCharAtlas()},t.prototype._refreshCharAtlas=function(){if(this.dimensions.scaledCharWidth<=0&&this.dimensions.scaledCharHeight<=0)this._isAttached=!1;else{var e=l.acquireCharAtlas(this._terminal,this._colors,this.dimensions.scaledCharWidth,this.dimensions.scaledCharHeight);if(!("getRasterizedGlyph"in e))throw new Error("The webgl renderer only works with the webgl char atlas");this._charAtlas=e,this._charAtlas.warmUp(),this._glyphRenderer.setAtlas(this._charAtlas)}},t.prototype.clearCharAtlas=function(){var e;null===(e=this._charAtlas)||void 0===e||e.clearTexture(),this._model.clear(),this._updateModel(0,this._terminal.rows-1),this._onRequestRedraw.fire({start:0,end:this._terminal.rows-1})},t.prototype.clear=function(){var e=this;this._renderLayers.forEach((function(t){return t.reset(e._terminal)}))},t.prototype.registerCharacterJoiner=function(e){return-1},t.prototype.deregisterCharacterJoiner=function(e){return!1},t.prototype.renderRows=function(e,t){var r=this;if(!this._isAttached){if(!(document.body.contains(this._core.screenElement)&&this._core._charSizeService.width&&this._core._charSizeService.height))return;this._updateDimensions(),this._refreshCharAtlas(),this._isAttached=!0}this._renderLayers.forEach((function(n){return n.onGridChanged(r._terminal,e,t)})),this._glyphRenderer.beginFrame()&&(this._model.clear(),this._updateSelectionModel(void 0,void 0)),this._updateModel(e,t),this._rectangleRenderer.render(),this._glyphRenderer.render(this._model,this._model.selection.hasSelection)},t.prototype._updateModel=function(e,t){for(var r=this._core,n=e;n<=t;n++){var i=n+r.buffer.ydisp,o=r.buffer.lines.get(i);this._model.lineLengths[n]=0;for(var s=0;s<r.cols;s++){o.loadCell(s,this._workCell);var a=this._workCell.getChars(),l=this._workCell.getCode(),c=(n*r.cols+s)*d.RENDER_MODEL_INDICIES_PER_CELL;l!==u.NULL_CELL_CODE&&(this._model.lineLengths[n]=s+1),this._model.cells[c]===l&&this._model.cells[c+d.RENDER_MODEL_BG_OFFSET]===this._workCell.bg&&this._model.cells[c+d.RENDER_MODEL_FG_OFFSET]===this._workCell.fg||(a.length>1&&(l|=d.COMBINED_CHAR_BIT_MASK),this._model.cells[c]=l,this._model.cells[c+d.RENDER_MODEL_BG_OFFSET]=this._workCell.bg,this._model.cells[c+d.RENDER_MODEL_FG_OFFSET]=this._workCell.fg,this._glyphRenderer.updateCell(s,n,l,this._workCell.bg,this._workCell.fg,a))}}this._rectangleRenderer.updateBackgrounds(this._model),this._model.selection.hasSelection&&this._glyphRenderer.updateSelection(this._model)},t.prototype._updateSelectionModel=function(e,t,r){void 0===r&&(r=!1);var n=this._terminal;if(!e||!t||e[0]===t[0]&&e[1]===t[1])return this._model.clearSelection(),void this._rectangleRenderer.updateSelection(this._model.selection);var i=e[1]-n.buffer.active.viewportY,o=t[1]-n.buffer.active.viewportY,s=Math.max(i,0),a=Math.min(o,n.rows-1);if(s>=n.rows||a<0)return this._model.clearSelection(),void this._rectangleRenderer.updateSelection(this._model.selection);this._model.selection.hasSelection=!0,this._model.selection.columnSelectMode=r,this._model.selection.viewportStartRow=i,this._model.selection.viewportEndRow=o,this._model.selection.viewportCappedStartRow=s,this._model.selection.viewportCappedEndRow=a,this._model.selection.startCol=e[0],this._model.selection.endCol=t[0],this._rectangleRenderer.updateSelection(this._model.selection)},t.prototype._updateDimensions=function(){this._core._charSizeService.width&&this._core._charSizeService.height&&(this.dimensions.scaledCharWidth=Math.floor(this._core._charSizeService.width*this._devicePixelRatio),this.dimensions.scaledCharHeight=Math.ceil(this._core._charSizeService.height*this._devicePixelRatio),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._terminal.getOption("lineHeight")),this.dimensions.scaledCharTop=1===this._terminal.getOption("lineHeight")?0:Math.round((this.dimensions.scaledCellHeight-this.dimensions.scaledCharHeight)/2),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._terminal.getOption("letterSpacing")),this.dimensions.scaledCharLeft=Math.floor(this._terminal.getOption("letterSpacing")/2),this.dimensions.scaledCanvasHeight=this._terminal.rows*this.dimensions.scaledCellHeight,this.dimensions.scaledCanvasWidth=this._terminal.cols*this.dimensions.scaledCellWidth,this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/this._devicePixelRatio),this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/this._devicePixelRatio),this.dimensions.actualCellHeight=this.dimensions.scaledCellHeight/this._devicePixelRatio,this.dimensions.actualCellWidth=this.dimensions.scaledCellWidth/this._devicePixelRatio)},t}(h.Disposable);t.WebglRenderer=_},381:(e,t)=>{function r(e,t,r){var i=n(e.createShader(t));if(e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS))return i;console.error(e.getShaderInfoLog(i)),e.deleteShader(i)}function n(e){if(!e)throw new Error("value must not be falsy");return e}Object.defineProperty(t,"__esModule",{value:!0}),t.throwIfFalsy=t.expandFloat32Array=t.createShader=t.createProgram=t.PROJECTION_MATRIX=void 0,t.PROJECTION_MATRIX=new Float32Array([2,0,0,0,0,-2,0,0,0,0,1,0,-1,1,0,1]),t.createProgram=function(e,t,i){var o=n(e.createProgram());if(e.attachShader(o,n(r(e,e.VERTEX_SHADER,t))),e.attachShader(o,n(r(e,e.FRAGMENT_SHADER,i))),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS))return o;console.error(e.getProgramInfoLog(o)),e.deleteProgram(o)},t.createShader=r,t.expandFloat32Array=function(e,t){for(var r=Math.min(2*e.length,t),n=new Float32Array(r),i=0;i<e.length;i++)n[i]=e[i];return n},t.throwIfFalsy=n},713:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.removeTerminalFromCache=t.acquireCharAtlas=void 0;var n=r(433),i=r(167),o=[];t.acquireCharAtlas=function(e,t,r,s){for(var a=n.generateConfig(r,s,e,t),l=0;l<o.length;l++){var c=(d=o[l]).ownedBy.indexOf(e);if(c>=0){if(n.configEquals(d.config,a))return d.atlas;1===d.ownedBy.length?(d.atlas.dispose(),o.splice(l,1)):d.ownedBy.splice(c,1);break}}for(l=0;l<o.length;l++){var d=o[l];if(n.configEquals(d.config,a))return d.ownedBy.push(e),d.atlas}var h={atlas:new i.WebglCharAtlas(document,a),config:a,ownedBy:[e]};return o.push(h),h.atlas},t.removeTerminalFromCache=function(e){for(var t=0;t<o.length;t++){var r=o[t].ownedBy.indexOf(e);if(-1!==r){1===o[t].ownedBy.length?(o[t].atlas.dispose(),o.splice(t,1)):o[t].ownedBy.splice(r,1);break}}}},433:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.is256Color=t.configEquals=t.generateConfig=void 0;var r={css:"",rgba:0};t.generateConfig=function(e,t,n,i){var o={foreground:i.foreground,background:i.background,cursor:r,cursorAccent:r,selectionTransparent:r,selectionOpaque:r,ansi:i.ansi.slice(),contrastCache:i.contrastCache};return{devicePixelRatio:window.devicePixelRatio,scaledCharWidth:e,scaledCharHeight:t,fontFamily:n.getOption("fontFamily"),fontSize:n.getOption("fontSize"),fontWeight:n.getOption("fontWeight"),fontWeightBold:n.getOption("fontWeightBold"),allowTransparency:n.getOption("allowTransparency"),drawBoldTextInBrightColors:n.getOption("drawBoldTextInBrightColors"),minimumContrastRatio:n.getOption("minimumContrastRatio"),colors:o}},t.configEquals=function(e,t){for(var r=0;r<e.colors.ansi.length;r++)if(e.colors.ansi[r].rgba!==t.colors.ansi[r].rgba)return!1;return e.devicePixelRatio===t.devicePixelRatio&&e.fontFamily===t.fontFamily&&e.fontSize===t.fontSize&&e.fontWeight===t.fontWeight&&e.fontWeightBold===t.fontWeightBold&&e.allowTransparency===t.allowTransparency&&e.scaledCharWidth===t.scaledCharWidth&&e.scaledCharHeight===t.scaledCharHeight&&e.drawBoldTextInBrightColors===t.drawBoldTextInBrightColors&&e.minimumContrastRatio===t.minimumContrastRatio&&e.colors.foreground===t.colors.foreground&&e.colors.background===t.colors.background},t.is256Color=function(e){return 16777216==(50331648&e)||33554432==(50331648&e)}},167:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WebglCharAtlas=void 0;var n=r(499),i=r(855),o=r(381),s=r(147),a=r(742),l=1024,c=1024,d=Math.floor(819.2),h={css:"rgba(0, 0, 0, 0)",rgba:0},u={offset:{x:0,y:0},texturePosition:{x:0,y:0},texturePositionClipSpace:{x:0,y:0},size:{x:0,y:0},sizeClipSpace:{x:0,y:0}},f=function(){function e(e,t){this._config=t,this._didWarmUp=!1,this._cacheMap={},this._cacheMapCombined={},this._currentRowY=0,this._currentRowX=0,this._currentRowHeight=0,this.hasCanvasChanged=!1,this._workBoundingBox={top:0,left:0,bottom:0,right:0},this._workAttributeData=new s.AttributeData,this.cacheCanvas=e.createElement("canvas"),this.cacheCanvas.width=l,this.cacheCanvas.height=c,this._cacheCtx=o.throwIfFalsy(this.cacheCanvas.getContext("2d",{alpha:!0})),this._tmpCanvas=e.createElement("canvas"),this._tmpCanvas.width=2*this._config.scaledCharWidth+4,this._tmpCanvas.height=this._config.scaledCharHeight+4,this._tmpCtx=o.throwIfFalsy(this._tmpCanvas.getContext("2d",{alpha:this._config.allowTransparency}))}return e.prototype.dispose=function(){this.cacheCanvas.parentElement&&this.cacheCanvas.parentElement.removeChild(this.cacheCanvas)},e.prototype.warmUp=function(){this._didWarmUp||(this._doWarmUp(),this._didWarmUp=!0)},e.prototype._doWarmUp=function(){for(var e,t,r=33;r<126;r++){var n=this._drawToCache(r,i.DEFAULT_COLOR,i.DEFAULT_COLOR);this._cacheMap[r]=((e={})[i.DEFAULT_COLOR]=((t={})[i.DEFAULT_COLOR]=n,t),e)}},e.prototype.beginFrame=function(){return this._currentRowY>d&&(this.clearTexture(),this.warmUp(),!0)},e.prototype.clearTexture=function(){0===this._currentRowX&&0===this._currentRowY||(this._cacheCtx.clearRect(0,0,l,c),this._cacheMap={},this._cacheMapCombined={},this._currentRowHeight=0,this._currentRowX=0,this._currentRowY=0,this._didWarmUp=!1)},e.prototype.getRasterizedGlyphCombinedChar=function(e,t,r){var n,i=this._cacheMapCombined[e];i||(i={},this._cacheMapCombined[e]=i);var o=i[t];return o&&(n=o[r]),n||(n=this._drawToCache(e,t,r),i[t]||(i[t]={}),i[t][r]=n),n},e.prototype.getRasterizedGlyph=function(e,t,r){var n,i=this._cacheMap[e];i||(i={},this._cacheMap[e]=i);var o=i[t];return o&&(n=o[r]),n||(n=this._drawToCache(e,t,r),i[t]||(i[t]={}),i[t][r]=n),n},e.prototype._getColorFromAnsiIndex=function(e){if(e>=this._config.colors.ansi.length)throw new Error("No color found for idx "+e);return this._config.colors.ansi[e]},e.prototype._getBackgroundColor=function(e,t,r){if(this._config.allowTransparency)return h;switch(e){case 16777216:case 33554432:return this._getColorFromAnsiIndex(t);case 50331648:var n=s.AttributeData.toColorRGB(t);return{rgba:t<<8,css:"#"+p(n[0])+p(n[1])+p(n[2])};default:return r?this._config.colors.foreground:this._config.colors.background}},e.prototype._getForegroundCss=function(e,t,r,n,i,o,l,c){var d=this._getMinimumContrastCss(e,t,r,n,i,o,l,c);if(d)return d;switch(i){case 16777216:case 33554432:return this._config.drawBoldTextInBrightColors&&c&&o<8&&(o+=8),this._getColorFromAnsiIndex(o).css;case 50331648:var h=s.AttributeData.toColorRGB(o);return a.channels.toCss(h[0],h[1],h[2]);default:if(l){var u=this._config.colors.background.css;return 9===u.length?u.substr(0,7):u}return this._config.colors.foreground.css}},e.prototype._resolveBackgroundRgba=function(e,t,r){switch(e){case 16777216:case 33554432:return this._getColorFromAnsiIndex(t).rgba;case 50331648:return t<<8;default:return r?this._config.colors.foreground.rgba:this._config.colors.background.rgba}},e.prototype._resolveForegroundRgba=function(e,t,r,n){switch(e){case 16777216:case 33554432:return this._config.drawBoldTextInBrightColors&&n&&t<8&&(t+=8),this._getColorFromAnsiIndex(t).rgba;case 50331648:return t<<8;default:return r?this._config.colors.background.rgba:this._config.colors.foreground.rgba}},e.prototype._getMinimumContrastCss=function(e,t,r,n,i,o,s,l){if(1!==this._config.minimumContrastRatio){var c=this._config.colors.contrastCache.getCss(e,n);if(void 0!==c)return c||void 0;var d=this._resolveBackgroundRgba(t,r,s),h=this._resolveForegroundRgba(i,o,s,l),u=a.rgba.ensureContrastRatio(d,h,this._config.minimumContrastRatio);if(u){var f=a.channels.toCss(u>>24&255,u>>16&255,u>>8&255);return this._config.colors.contrastCache.setCss(e,n,f),f}this._config.colors.contrastCache.setCss(e,n,null)}},e.prototype._drawToCache=function(e,t,r){var i="number"==typeof e?String.fromCharCode(e):e;if(this.hasCanvasChanged=!0,this._tmpCtx.save(),this._workAttributeData.fg=r,this._workAttributeData.bg=t,this._workAttributeData.isInvisible())return u;var o=!!this._workAttributeData.isBold(),s=!!this._workAttributeData.isInverse(),a=!!this._workAttributeData.isDim(),d=!!this._workAttributeData.isItalic(),h=this._workAttributeData.getFgColor(),f=this._workAttributeData.getFgColorMode(),p=this._workAttributeData.getBgColor(),_=this._workAttributeData.getBgColorMode();if(s){var b=h;h=p,p=b;var g=f;f=_,_=g}var m=this._getBackgroundColor(_,p,s);this._tmpCtx.globalCompositeOperation="copy",this._tmpCtx.fillStyle=m.css,this._tmpCtx.fillRect(0,0,this._tmpCanvas.width,this._tmpCanvas.height),this._tmpCtx.globalCompositeOperation="source-over";var v=o?this._config.fontWeightBold:this._config.fontWeight,A=d?"italic":"";this._tmpCtx.font=A+" "+v+" "+this._config.fontSize*this._config.devicePixelRatio+"px "+this._config.fontFamily,this._tmpCtx.textBaseline="middle",this._tmpCtx.fillStyle=this._getForegroundCss(t,_,p,r,f,h,s,o),a&&(this._tmpCtx.globalAlpha=n.DIM_OPACITY),this._tmpCtx.fillText(i,2,2+this._config.scaledCharHeight/2),this._tmpCtx.restore();var y=this._tmpCtx.getImageData(0,0,this._tmpCanvas.width,this._tmpCanvas.height);if(function(e,t){for(var r=!0,n=t.rgba>>>24,i=t.rgba>>>16&255,o=t.rgba>>>8&255,s=0;s<e.data.length;s+=4)e.data[s]===n&&e.data[s+1]===i&&e.data[s+2]===o?e.data[s+3]=0:r=!1;return r}(y,m))return u;var C=this._findGlyphBoundingBox(y,this._workBoundingBox),w=this._clipImageData(y,this._workBoundingBox);return this._currentRowX+this._config.scaledCharWidth>l&&(this._currentRowX=0,this._currentRowY+=this._currentRowHeight,this._currentRowHeight=0),C.texturePosition.x=this._currentRowX,C.texturePosition.y=this._currentRowY,C.texturePositionClipSpace.x=this._currentRowX/l,C.texturePositionClipSpace.y=this._currentRowY/c,this._currentRowHeight=Math.max(this._currentRowHeight,C.size.y),this._currentRowX+=C.size.x,this._cacheCtx.putImageData(w,C.texturePosition.x,C.texturePosition.y),C},e.prototype._findGlyphBoundingBox=function(e,t){t.top=0;for(var r=!1,n=0;n<this._tmpCanvas.height;n++){for(var i=0;i<this._tmpCanvas.width;i++){var o=n*this._tmpCanvas.width*4+4*i+3;if(0!==e.data[o]){t.top=n,r=!0;break}}if(r)break}for(t.left=0,r=!1,i=0;i<this._tmpCanvas.width;i++){for(n=0;n<this._tmpCanvas.height;n++)if(o=n*this._tmpCanvas.width*4+4*i+3,0!==e.data[o]){t.left=i,r=!0;break}if(r)break}for(t.right=this._tmpCanvas.width,r=!1,i=this._tmpCanvas.width-1;i>=0;i--){for(n=0;n<this._tmpCanvas.height;n++)if(o=n*this._tmpCanvas.width*4+4*i+3,0!==e.data[o]){t.right=i,r=!0;break}if(r)break}for(t.bottom=this._tmpCanvas.height,r=!1,n=this._tmpCanvas.height-1;n>=0;n--){for(i=0;i<this._tmpCanvas.width;i++)if(o=n*this._tmpCanvas.width*4+4*i+3,0!==e.data[o]){t.bottom=n,r=!0;break}if(r)break}return{texturePosition:{x:0,y:0},texturePositionClipSpace:{x:0,y:0},size:{x:t.right-t.left+1,y:t.bottom-t.top+1},sizeClipSpace:{x:(t.right-t.left+1)/l,y:(t.bottom-t.top+1)/c},offset:{x:2-t.left,y:2-t.top}}},e.prototype._clipImageData=function(e,t){for(var r=t.right-t.left+1,n=t.bottom-t.top+1,i=new Uint8ClampedArray(r*n*4),o=t.top;o<=t.bottom;o++)for(var s=t.left;s<=t.right;s++){var a=o*this._tmpCanvas.width*4+4*s,l=(o-t.top)*r*4+4*(s-t.left);i[l]=e.data[a],i[l+1]=e.data[a+1],i[l+2]=e.data[a+2],i[l+3]=e.data[a+3]}return new ImageData(i,r,n)},e}();function p(e){var t=e.toString(16);return t.length<2?"0"+t:t}t.WebglCharAtlas=f},592:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaseRenderLayer=void 0;var n=r(713),i=r(381),o=function(){function e(e,t,r,n,i){this._container=e,this._alpha=n,this._colors=i,this._scaledCharWidth=0,this._scaledCharHeight=0,this._scaledCellWidth=0,this._scaledCellHeight=0,this._scaledCharLeft=0,this._scaledCharTop=0,this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-"+t+"-layer"),this._canvas.style.zIndex=r.toString(),this._initCanvas(),this._container.appendChild(this._canvas)}return e.prototype.dispose=function(){this._container.removeChild(this._canvas),this._charAtlas&&this._charAtlas.dispose()},e.prototype._initCanvas=function(){this._ctx=i.throwIfFalsy(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()},e.prototype.onOptionsChanged=function(e){},e.prototype.onBlur=function(e){},e.prototype.onFocus=function(e){},e.prototype.onCursorMove=function(e){},e.prototype.onGridChanged=function(e,t,r){},e.prototype.onSelectionChanged=function(e,t,r,n){void 0===n&&(n=!1)},e.prototype.setColors=function(e,t){this._refreshCharAtlas(e,t)},e.prototype._setTransparency=function(e,t){if(t!==this._alpha){var r=this._canvas;this._alpha=t,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,r),this._refreshCharAtlas(e,this._colors),this.onGridChanged(e,0,e.rows-1)}},e.prototype._refreshCharAtlas=function(e,t){this._scaledCharWidth<=0&&this._scaledCharHeight<=0||(this._charAtlas=n.acquireCharAtlas(e,t,this._scaledCharWidth,this._scaledCharHeight),this._charAtlas.warmUp())},e.prototype.resize=function(e,t){this._scaledCellWidth=t.scaledCellWidth,this._scaledCellHeight=t.scaledCellHeight,this._scaledCharWidth=t.scaledCharWidth,this._scaledCharHeight=t.scaledCharHeight,this._scaledCharLeft=t.scaledCharLeft,this._scaledCharTop=t.scaledCharTop,this._canvas.width=t.scaledCanvasWidth,this._canvas.height=t.scaledCanvasHeight,this._canvas.style.width=t.canvasWidth+"px",this._canvas.style.height=t.canvasHeight+"px",this._alpha||this._clearAll(),this._refreshCharAtlas(e,this._colors)},e.prototype._fillCells=function(e,t,r,n){this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,r*this._scaledCellWidth,n*this._scaledCellHeight)},e.prototype._fillBottomLineAtCells=function(e,t,r){void 0===r&&(r=1),this._ctx.fillRect(e*this._scaledCellWidth,(t+1)*this._scaledCellHeight-window.devicePixelRatio-1,r*this._scaledCellWidth,window.devicePixelRatio)},e.prototype._fillLeftLineAtCell=function(e,t,r){this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,window.devicePixelRatio*r,this._scaledCellHeight)},e.prototype._strokeRectAtCell=function(e,t,r,n){this._ctx.lineWidth=window.devicePixelRatio,this._ctx.strokeRect(e*this._scaledCellWidth+window.devicePixelRatio/2,t*this._scaledCellHeight+window.devicePixelRatio/2,r*this._scaledCellWidth-window.devicePixelRatio,n*this._scaledCellHeight-window.devicePixelRatio)},e.prototype._clearAll=function(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))},e.prototype._clearCells=function(e,t,r,n){this._alpha?this._ctx.clearRect(e*this._scaledCellWidth,t*this._scaledCellHeight,r*this._scaledCellWidth,n*this._scaledCellHeight):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,r*this._scaledCellWidth,n*this._scaledCellHeight))},e.prototype._fillCharTrueColor=function(e,t,r,n){this._ctx.font=this._getFont(e,!1,!1),this._ctx.textBaseline="middle",this._clipRow(e,n),this._ctx.fillText(t.getChars(),r*this._scaledCellWidth+this._scaledCharLeft,n*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight/2)},e.prototype._clipRow=function(e,t){this._ctx.beginPath(),this._ctx.rect(0,t*this._scaledCellHeight,e.cols*this._scaledCellWidth,this._scaledCellHeight),this._ctx.clip()},e.prototype._getFont=function(e,t,r){return(r?"italic":"")+" "+(t?e.getOption("fontWeightBold"):e.getOption("fontWeight"))+" "+e.getOption("fontSize")*window.devicePixelRatio+"px "+e.getOption("fontFamily")},e}();t.BaseRenderLayer=o},461:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.CursorRenderLayer=void 0;var o=r(592),s=r(782),a=600,l=function(e){function t(t,r,n,i){var o=e.call(this,t,"cursor",r,!0,n)||this;return o._onRequestRefreshRowsEvent=i,o._cell=new s.CellData,o._state={x:0,y:0,isFocused:!1,style:"",width:0},o._cursorRenderers={bar:o._renderBarCursor.bind(o),block:o._renderBlockCursor.bind(o),underline:o._renderUnderlineCursor.bind(o)},o}return i(t,e),t.prototype.resize=function(t,r){e.prototype.resize.call(this,t,r),this._state={x:0,y:0,isFocused:!1,style:"",width:0}},t.prototype.reset=function(e){this._clearCursor(),this._cursorBlinkStateManager&&(this._cursorBlinkStateManager.dispose(),this.onOptionsChanged(e))},t.prototype.onBlur=function(e){this._cursorBlinkStateManager&&this._cursorBlinkStateManager.pause(),this._onRequestRefreshRowsEvent.fire({start:e.buffer.active.cursorY,end:e.buffer.active.cursorY})},t.prototype.onFocus=function(e){this._cursorBlinkStateManager?this._cursorBlinkStateManager.resume(e):this._onRequestRefreshRowsEvent.fire({start:e.buffer.active.cursorY,end:e.buffer.active.cursorY})},t.prototype.onOptionsChanged=function(e){var t,r=this;e.getOption("cursorBlink")?this._cursorBlinkStateManager||(this._cursorBlinkStateManager=new c(e,(function(){r._render(e,!0)}))):(null===(t=this._cursorBlinkStateManager)||void 0===t||t.dispose(),this._cursorBlinkStateManager=void 0),this._onRequestRefreshRowsEvent.fire({start:e.buffer.active.cursorY,end:e.buffer.active.cursorY})},t.prototype.onCursorMove=function(e){this._cursorBlinkStateManager&&this._cursorBlinkStateManager.restartBlinkAnimation(e)},t.prototype.onGridChanged=function(e,t,r){!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isPaused?this._render(e,!1):this._cursorBlinkStateManager.restartBlinkAnimation(e)},t.prototype._render=function(e,t){if(e._core._coreService.isCursorInitialized&&!e._core._coreService.isCursorHidden){var r=e.buffer.active.baseY+e.buffer.active.cursorY,n=r-e.buffer.active.viewportY,i=Math.min(e.buffer.active.cursorX,e.cols-1);if(n<0||n>=e.rows)this._clearCursor();else if(e._core.buffer.lines.get(r).loadCell(i,this._cell),void 0!==this._cell.content){if(!d(e)){this._clearCursor(),this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css;var o=e.getOption("cursorStyle");return o&&"block"!==o?this._cursorRenderers[o](e,i,n,this._cell):this._renderBlurCursor(e,i,n,this._cell),this._ctx.restore(),this._state.x=i,this._state.y=n,this._state.isFocused=!1,this._state.style=o,void(this._state.width=this._cell.getWidth())}if(!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isCursorVisible){if(this._state){if(this._state.x===i&&this._state.y===n&&this._state.isFocused===d(e)&&this._state.style===e.getOption("cursorStyle")&&this._state.width===this._cell.getWidth())return;this._clearCursor()}this._ctx.save(),this._cursorRenderers[e.getOption("cursorStyle")||"block"](e,i,n,this._cell),this._ctx.restore(),this._state.x=i,this._state.y=n,this._state.isFocused=!1,this._state.style=e.getOption("cursorStyle"),this._state.width=this._cell.getWidth()}else this._clearCursor()}}else this._clearCursor()},t.prototype._clearCursor=function(){this._state&&(this._clearCells(this._state.x,this._state.y,this._state.width,1),this._state={x:0,y:0,isFocused:!1,style:"",width:0})},t.prototype._renderBarCursor=function(e,t,r,n){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillLeftLineAtCell(t,r,e.getOption("cursorWidth")),this._ctx.restore()},t.prototype._renderBlockCursor=function(e,t,r,n){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillCells(t,r,n.getWidth(),1),this._ctx.fillStyle=this._colors.cursorAccent.css,this._fillCharTrueColor(e,n,t,r),this._ctx.restore()},t.prototype._renderUnderlineCursor=function(e,t,r,n){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillBottomLineAtCells(t,r),this._ctx.restore()},t.prototype._renderBlurCursor=function(e,t,r,n){this._ctx.save(),this._ctx.strokeStyle=this._colors.cursor.css,this._strokeRectAtCell(t,r,n.getWidth(),1),this._ctx.restore()},t}(o.BaseRenderLayer);t.CursorRenderLayer=l;var c=function(){function e(e,t){this._renderCallback=t,this.isCursorVisible=!0,d(e)&&this._restartInterval()}return Object.defineProperty(e.prototype,"isPaused",{get:function(){return!(this._blinkStartTimeout||this._blinkInterval)},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},e.prototype.restartBlinkAnimation=function(e){var t=this;this.isPaused||(this._animationTimeRestarted=Date.now(),this.isCursorVisible=!0,this._animationFrame||(this._animationFrame=window.requestAnimationFrame((function(){t._renderCallback(),t._animationFrame=void 0}))))},e.prototype._restartInterval=function(e){var t=this;void 0===e&&(e=a),this._blinkInterval&&window.clearInterval(this._blinkInterval),this._blinkStartTimeout=window.setTimeout((function(){if(t._animationTimeRestarted){var e=a-(Date.now()-t._animationTimeRestarted);if(t._animationTimeRestarted=void 0,e>0)return void t._restartInterval(e)}t.isCursorVisible=!1,t._animationFrame=window.requestAnimationFrame((function(){t._renderCallback(),t._animationFrame=void 0})),t._blinkInterval=window.setInterval((function(){if(t._animationTimeRestarted){var e=a-(Date.now()-t._animationTimeRestarted);return t._animationTimeRestarted=void 0,void t._restartInterval(e)}t.isCursorVisible=!t.isCursorVisible,t._animationFrame=window.requestAnimationFrame((function(){t._renderCallback(),t._animationFrame=void 0}))}),a)}),e)},e.prototype.pause=function(){this.isCursorVisible=!0,this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},e.prototype.resume=function(e){this.pause(),this._animationTimeRestarted=void 0,this._restartInterval(),this.restartBlinkAnimation(e)},e}();function d(e){return document.activeElement===e.textarea&&document.hasFocus()}},733:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.LinkRenderLayer=void 0;var o=r(592),s=r(499),a=r(433),l=function(e){function t(t,r,n,i){var o=e.call(this,t,"link",r,!0,n)||this;return i.linkifier.onShowLinkUnderline((function(e){return o._onShowLinkUnderline(e)})),i.linkifier.onHideLinkUnderline((function(e){return o._onHideLinkUnderline(e)})),i.linkifier2.onShowLinkUnderline((function(e){return o._onShowLinkUnderline(e)})),i.linkifier2.onHideLinkUnderline((function(e){return o._onHideLinkUnderline(e)})),o}return i(t,e),t.prototype.resize=function(t,r){e.prototype.resize.call(this,t,r),this._state=void 0},t.prototype.reset=function(e){this._clearCurrentLink()},t.prototype._clearCurrentLink=function(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);var e=this._state.y2-this._state.y1-1;e>0&&this._clearCells(0,this._state.y1+1,this._state.cols,e),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}},t.prototype._onShowLinkUnderline=function(e){if(e.fg===s.INVERTED_DEFAULT_COLOR?this._ctx.fillStyle=this._colors.background.css:void 0!==e.fg&&a.is256Color(e.fg)?this._ctx.fillStyle=this._colors.ansi[e.fg].css:this._ctx.fillStyle=this._colors.foreground.css,e.y1===e.y2)this._fillBottomLineAtCells(e.x1,e.y1,e.x2-e.x1);else{this._fillBottomLineAtCells(e.x1,e.y1,e.cols-e.x1);for(var t=e.y1+1;t<e.y2;t++)this._fillBottomLineAtCells(0,t,e.cols);this._fillBottomLineAtCells(0,e.y2,e.x2)}this._state=e},t.prototype._onHideLinkUnderline=function(e){this._clearCurrentLink()},t}(o.BaseRenderLayer);t.LinkRenderLayer=l},742:(e,t)=>{var r,n,i,o;function s(e){var t=e.toString(16);return t.length<2?"0"+t:t}function a(e,t){return e<t?(t+.05)/(e+.05):(e+.05)/(t+.05)}Object.defineProperty(t,"__esModule",{value:!0}),t.contrastRatio=t.toPaddedHex=t.rgba=t.rgb=t.css=t.color=t.channels=void 0,function(e){e.toCss=function(e,t,r,n){return void 0!==n?"#"+s(e)+s(t)+s(r)+s(n):"#"+s(e)+s(t)+s(r)},e.toRgba=function(e,t,r,n){return void 0===n&&(n=255),(e<<24|t<<16|r<<8|n)>>>0}}(r=t.channels||(t.channels={})),(n=t.color||(t.color={})).blend=function(e,t){var n=(255&t.rgba)/255;if(1===n)return{css:t.css,rgba:t.rgba};var i=t.rgba>>24&255,o=t.rgba>>16&255,s=t.rgba>>8&255,a=e.rgba>>24&255,l=e.rgba>>16&255,c=e.rgba>>8&255,d=a+Math.round((i-a)*n),h=l+Math.round((o-l)*n),u=c+Math.round((s-c)*n);return{css:r.toCss(d,h,u),rgba:r.toRgba(d,h,u)}},n.isOpaque=function(e){return 255==(255&e.rgba)},n.ensureContrastRatio=function(e,t,r){var n=o.ensureContrastRatio(e.rgba,t.rgba,r);if(n)return o.toColor(n>>24&255,n>>16&255,n>>8&255)},n.opaque=function(e){var t=(255|e.rgba)>>>0,n=o.toChannels(t),i=n[0],s=n[1],a=n[2];return{css:r.toCss(i,s,a),rgba:t}},n.opacity=function(e,t){var n=Math.round(255*t),i=o.toChannels(e.rgba),s=i[0],a=i[1],l=i[2];return{css:r.toCss(s,a,l,n),rgba:r.toRgba(s,a,l,n)}},(t.css||(t.css={})).toColor=function(e){switch(e.length){case 7:return{css:e,rgba:(parseInt(e.slice(1),16)<<8|255)>>>0};case 9:return{css:e,rgba:parseInt(e.slice(1),16)>>>0}}throw new Error("css.toColor: Unsupported css format")},function(e){function t(e,t,r){var n=e/255,i=t/255,o=r/255;return.2126*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))+.7152*(i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4))+.0722*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))}e.relativeLuminance=function(e){return t(e>>16&255,e>>8&255,255&e)},e.relativeLuminance2=t}(i=t.rgb||(t.rgb={})),function(e){function t(e,t,r){for(var n=e>>24&255,o=e>>16&255,s=e>>8&255,l=t>>24&255,c=t>>16&255,d=t>>8&255,h=a(i.relativeLuminance2(l,d,c),i.relativeLuminance2(n,o,s));h<r&&(l>0||c>0||d>0);)l-=Math.max(0,Math.ceil(.1*l)),c-=Math.max(0,Math.ceil(.1*c)),d-=Math.max(0,Math.ceil(.1*d)),h=a(i.relativeLuminance2(l,d,c),i.relativeLuminance2(n,o,s));return(l<<24|c<<16|d<<8|255)>>>0}function n(e,t,r){for(var n=e>>24&255,o=e>>16&255,s=e>>8&255,l=t>>24&255,c=t>>16&255,d=t>>8&255,h=a(i.relativeLuminance2(l,d,c),i.relativeLuminance2(n,o,s));h<r&&(l<255||c<255||d<255);)l=Math.min(255,l+Math.ceil(.1*(255-l))),c=Math.min(255,c+Math.ceil(.1*(255-c))),d=Math.min(255,d+Math.ceil(.1*(255-d))),h=a(i.relativeLuminance2(l,d,c),i.relativeLuminance2(n,o,s));return(l<<24|c<<16|d<<8|255)>>>0}e.ensureContrastRatio=function(e,r,o){var s=i.relativeLuminance(e>>8),l=i.relativeLuminance(r>>8);if(a(s,l)<o)return l<s?t(e,r,o):n(e,r,o)},e.reduceLuminance=t,e.increaseLuminance=n,e.toChannels=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]},e.toColor=function(e,t,n){return{css:r.toCss(e,t,n),rgba:r.toRgba(e,t,n)}}}(o=t.rgba||(t.rgba={})),t.toPaddedHex=s,t.contrastRatio=a},499:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CHAR_ATLAS_CELL_SPACING=t.DIM_OPACITY=t.INVERTED_DEFAULT_COLOR=void 0,t.INVERTED_DEFAULT_COLOR=257,t.DIM_OPACITY=.5,t.CHAR_ATLAS_CELL_SPACING=1},345:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.forwardEvent=t.EventEmitter=void 0;var r=function(){function e(){this._listeners=[],this._disposed=!1}return Object.defineProperty(e.prototype,"event",{get:function(){var e=this;return this._event||(this._event=function(t){return e._listeners.push(t),{dispose:function(){if(!e._disposed)for(var r=0;r<e._listeners.length;r++)if(e._listeners[r]===t)return void e._listeners.splice(r,1)}}}),this._event},enumerable:!1,configurable:!0}),e.prototype.fire=function(e,t){for(var r=[],n=0;n<this._listeners.length;n++)r.push(this._listeners[n]);for(n=0;n<r.length;n++)r[n].call(void 0,e,t)},e.prototype.dispose=function(){this._listeners&&(this._listeners.length=0),this._disposed=!0},e}();t.EventEmitter=r,t.forwardEvent=function(e,t){return e((function(e){return t.fire(e)}))}},859:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getDisposeArrayDisposable=t.disposeArray=t.Disposable=void 0;var r=function(){function e(){this._disposables=[],this._isDisposed=!1}return e.prototype.dispose=function(){this._isDisposed=!0;for(var e=0,t=this._disposables;e<t.length;e++)t[e].dispose();this._disposables.length=0},e.prototype.register=function(e){return this._disposables.push(e),e},e.prototype.unregister=function(e){var t=this._disposables.indexOf(e);-1!==t&&this._disposables.splice(t,1)},e}();function n(e){for(var t=0,r=e;t<r.length;t++)r[t].dispose();e.length=0}t.Disposable=r,t.disposeArray=n,t.getDisposeArrayDisposable=function(e){return{dispose:function(){return n(e)}}}},455:(e,t)=>{function r(e,t,r,n){if(void 0===r&&(r=0),void 0===n&&(n=e.length),r>=e.length)return e;r=(e.length+r)%e.length,n=n>=e.length?e.length:(e.length+n)%e.length;for(var i=r;i<n;++i)e[i]=t;return e}Object.defineProperty(t,"__esModule",{value:!0}),t.concat=t.fillFallback=t.fill=void 0,t.fill=function(e,t,n,i){return e.fill?e.fill(t,n,i):r(e,t,n,i)},t.fillFallback=r,t.concat=function(e,t){var r=new e.constructor(e.length+t.length);return r.set(e),r.set(t,e.length),r}},147:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ExtendedAttrs=t.AttributeData=void 0;var r=function(){function e(){this.fg=0,this.bg=0,this.extended=new n}return e.toColorRGB=function(e){return[e>>>16&255,e>>>8&255,255&e]},e.fromColorRGB=function(e){return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},e.prototype.clone=function(){var t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t},e.prototype.isInverse=function(){return 67108864&this.fg},e.prototype.isBold=function(){return 134217728&this.fg},e.prototype.isUnderline=function(){return 268435456&this.fg},e.prototype.isBlink=function(){return 536870912&this.fg},e.prototype.isInvisible=function(){return 1073741824&this.fg},e.prototype.isItalic=function(){return 67108864&this.bg},e.prototype.isDim=function(){return 134217728&this.bg},e.prototype.getFgColorMode=function(){return 50331648&this.fg},e.prototype.getBgColorMode=function(){return 50331648&this.bg},e.prototype.isFgRGB=function(){return 50331648==(50331648&this.fg)},e.prototype.isBgRGB=function(){return 50331648==(50331648&this.bg)},e.prototype.isFgPalette=function(){return 16777216==(50331648&this.fg)||33554432==(50331648&this.fg)},e.prototype.isBgPalette=function(){return 16777216==(50331648&this.bg)||33554432==(50331648&this.bg)},e.prototype.isFgDefault=function(){return 0==(50331648&this.fg)},e.prototype.isBgDefault=function(){return 0==(50331648&this.bg)},e.prototype.isAttributeDefault=function(){return 0===this.fg&&0===this.bg},e.prototype.getFgColor=function(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}},e.prototype.getBgColor=function(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}},e.prototype.hasExtendedAttrs=function(){return 268435456&this.bg},e.prototype.updateExtended=function(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456},e.prototype.getUnderlineColor=function(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()},e.prototype.getUnderlineColorMode=function(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()},e.prototype.isUnderlineColorRGB=function(){return 268435456&this.bg&&~this.extended.underlineColor?50331648==(50331648&this.extended.underlineColor):this.isFgRGB()},e.prototype.isUnderlineColorPalette=function(){return 268435456&this.bg&&~this.extended.underlineColor?16777216==(50331648&this.extended.underlineColor)||33554432==(50331648&this.extended.underlineColor):this.isFgPalette()},e.prototype.isUnderlineColorDefault=function(){return 268435456&this.bg&&~this.extended.underlineColor?0==(50331648&this.extended.underlineColor):this.isFgDefault()},e.prototype.getUnderlineStyle=function(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0},e}();t.AttributeData=r;var n=function(){function e(e,t){void 0===e&&(e=0),void 0===t&&(t=-1),this.underlineStyle=e,this.underlineColor=t}return e.prototype.clone=function(){return new e(this.underlineStyle,this.underlineColor)},e.prototype.isEmpty=function(){return 0===this.underlineStyle},e}();t.ExtendedAttrs=n},782:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.CellData=void 0;var o=r(133),s=r(855),a=r(147),l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.content=0,t.fg=0,t.bg=0,t.extended=new a.ExtendedAttrs,t.combinedData="",t}return i(t,e),t.fromCharData=function(e){var r=new t;return r.setFromCharData(e),r},t.prototype.isCombined=function(){return 2097152&this.content},t.prototype.getWidth=function(){return this.content>>22},t.prototype.getChars=function(){return 2097152&this.content?this.combinedData:2097151&this.content?o.stringFromCodePoint(2097151&this.content):""},t.prototype.getCode=function(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content},t.prototype.setFromCharData=function(e){this.fg=e[s.CHAR_DATA_ATTR_INDEX],this.bg=0;var t=!1;if(e[s.CHAR_DATA_CHAR_INDEX].length>2)t=!0;else if(2===e[s.CHAR_DATA_CHAR_INDEX].length){var r=e[s.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=r&&r<=56319){var n=e[s.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=n&&n<=57343?this.content=1024*(r-55296)+n-56320+65536|e[s.CHAR_DATA_WIDTH_INDEX]<<22:t=!0}else t=!0}else this.content=e[s.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|e[s.CHAR_DATA_WIDTH_INDEX]<<22;t&&(this.combinedData=e[s.CHAR_DATA_CHAR_INDEX],this.content=2097152|e[s.CHAR_DATA_WIDTH_INDEX]<<22)},t.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},t}(a.AttributeData);t.CellData=l},855:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WHITESPACE_CELL_CODE=t.WHITESPACE_CELL_WIDTH=t.WHITESPACE_CELL_CHAR=t.NULL_CELL_CODE=t.NULL_CELL_WIDTH=t.NULL_CELL_CHAR=t.CHAR_DATA_CODE_INDEX=t.CHAR_DATA_WIDTH_INDEX=t.CHAR_DATA_CHAR_INDEX=t.CHAR_DATA_ATTR_INDEX=t.DEFAULT_ATTR=t.DEFAULT_COLOR=void 0,t.DEFAULT_COLOR=256,t.DEFAULT_ATTR=256|t.DEFAULT_COLOR<<9,t.CHAR_DATA_ATTR_INDEX=0,t.CHAR_DATA_CHAR_INDEX=1,t.CHAR_DATA_WIDTH_INDEX=2,t.CHAR_DATA_CODE_INDEX=3,t.NULL_CELL_CHAR="",t.NULL_CELL_WIDTH=1,t.NULL_CELL_CODE=0,t.WHITESPACE_CELL_CHAR=" ",t.WHITESPACE_CELL_WIDTH=1,t.WHITESPACE_CELL_CODE=32},133:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Utf8ToUtf32=t.StringToUtf32=t.utf32ToString=t.stringFromCodePoint=void 0,t.stringFromCodePoint=function(e){return e>65535?(e-=65536,String.fromCharCode(55296+(e>>10))+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)},t.utf32ToString=function(e,t,r){void 0===t&&(t=0),void 0===r&&(r=e.length);for(var n="",i=t;i<r;++i){var o=e[i];o>65535?(o-=65536,n+=String.fromCharCode(55296+(o>>10))+String.fromCharCode(o%1024+56320)):n+=String.fromCharCode(o)}return n};var r=function(){function e(){this._interim=0}return e.prototype.clear=function(){this._interim=0},e.prototype.decode=function(e,t){var r=e.length;if(!r)return 0;var n=0,i=0;this._interim&&(56320<=(a=e.charCodeAt(i++))&&a<=57343?t[n++]=1024*(this._interim-55296)+a-56320+65536:(t[n++]=this._interim,t[n++]=a),this._interim=0);for(var o=i;o<r;++o){var s=e.charCodeAt(o);if(55296<=s&&s<=56319){if(++o>=r)return this._interim=s,n;var a;56320<=(a=e.charCodeAt(o))&&a<=57343?t[n++]=1024*(s-55296)+a-56320+65536:(t[n++]=s,t[n++]=a)}else 65279!==s&&(t[n++]=s)}return n},e}();t.StringToUtf32=r;var n=function(){function e(){this.interim=new Uint8Array(3)}return e.prototype.clear=function(){this.interim.fill(0)},e.prototype.decode=function(e,t){var r=e.length;if(!r)return 0;var n,i,o,s,a=0,l=0,c=0;if(this.interim[0]){var d=!1,h=this.interim[0];h&=192==(224&h)?31:224==(240&h)?15:7;for(var u=0,f=void 0;(f=63&this.interim[++u])&&u<4;)h<<=6,h|=f;for(var p=192==(224&this.interim[0])?2:224==(240&this.interim[0])?3:4,_=p-u;c<_;){if(c>=r)return 0;if(128!=(192&(f=e[c++]))){c--,d=!0;break}this.interim[u++]=f,h<<=6,h|=63&f}d||(2===p?h<128?c--:t[a++]=h:3===p?h<2048||h>=55296&&h<=57343||65279===h||(t[a++]=h):h<65536||h>1114111||(t[a++]=h)),this.interim.fill(0)}for(var b=r-4,g=c;g<r;){for(;!(!(g<b)||128&(n=e[g])||128&(i=e[g+1])||128&(o=e[g+2])||128&(s=e[g+3]));)t[a++]=n,t[a++]=i,t[a++]=o,t[a++]=s,g+=4;if((n=e[g++])<128)t[a++]=n;else if(192==(224&n)){if(g>=r)return this.interim[0]=n,a;if(128!=(192&(i=e[g++]))){g--;continue}if((l=(31&n)<<6|63&i)<128){g--;continue}t[a++]=l}else if(224==(240&n)){if(g>=r)return this.interim[0]=n,a;if(128!=(192&(i=e[g++]))){g--;continue}if(g>=r)return this.interim[0]=n,this.interim[1]=i,a;if(128!=(192&(o=e[g++]))){g--;continue}if((l=(15&n)<<12|(63&i)<<6|63&o)<2048||l>=55296&&l<=57343||65279===l)continue;t[a++]=l}else if(240==(248&n)){if(g>=r)return this.interim[0]=n,a;if(128!=(192&(i=e[g++]))){g--;continue}if(g>=r)return this.interim[0]=n,this.interim[1]=i,a;if(128!=(192&(o=e[g++]))){g--;continue}if(g>=r)return this.interim[0]=n,this.interim[1]=i,this.interim[2]=o,a;if(128!=(192&(s=e[g++]))){g--;continue}if((l=(7&n)<<18|(63&i)<<12|(63&o)<<6|63&s)<65536||l>1114111)continue;t[a++]=l}}return a},e}();t.Utf8ToUtf32=n}},t={};return function r(n){if(t[n])return t[n].exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}(795)})()},320:e=>{self,e.exports=(()=>{"use strict";var e={4567:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.AccessibilityManager=void 0;var o=r(9042),s=r(6114),a=r(9924),l=r(3656),c=r(844),d=r(5596),h=r(9631),u=function(e){function t(t,r){var n=e.call(this)||this;n._terminal=t,n._renderService=r,n._liveRegionLineCount=0,n._charsToConsume=[],n._charsToAnnounce="",n._accessibilityTreeRoot=document.createElement("div"),n._accessibilityTreeRoot.classList.add("xterm-accessibility"),n._accessibilityTreeRoot.tabIndex=0,n._rowContainer=document.createElement("div"),n._rowContainer.setAttribute("role","list"),n._rowContainer.classList.add("xterm-accessibility-tree"),n._rowElements=[];for(var i=0;i<n._terminal.rows;i++)n._rowElements[i]=n._createAccessibilityTreeNode(),n._rowContainer.appendChild(n._rowElements[i]);if(n._topBoundaryFocusListener=function(e){return n._onBoundaryFocus(e,0)},n._bottomBoundaryFocusListener=function(e){return n._onBoundaryFocus(e,1)},n._rowElements[0].addEventListener("focus",n._topBoundaryFocusListener),n._rowElements[n._rowElements.length-1].addEventListener("focus",n._bottomBoundaryFocusListener),n._refreshRowsDimensions(),n._accessibilityTreeRoot.appendChild(n._rowContainer),n._renderRowsDebouncer=new a.TimeBasedDebouncer(n._renderRows.bind(n)),n._refreshRows(),n._liveRegion=document.createElement("div"),n._liveRegion.classList.add("live-region"),n._liveRegion.setAttribute("aria-live","assertive"),n._accessibilityTreeRoot.appendChild(n._liveRegion),!n._terminal.element)throw new Error("Cannot enable accessibility before Terminal.open");return n._terminal.element.insertAdjacentElement("afterbegin",n._accessibilityTreeRoot),n.register(n._renderRowsDebouncer),n.register(n._terminal.onResize((function(e){return n._onResize(e.rows)}))),n.register(n._terminal.onRender((function(e){return n._refreshRows(e.start,e.end)}))),n.register(n._terminal.onScroll((function(){return n._refreshRows()}))),n.register(n._terminal.onA11yChar((function(e){return n._onChar(e)}))),n.register(n._terminal.onLineFeed((function(){return n._onChar("\n")}))),n.register(n._terminal.onA11yTab((function(e){return n._onTab(e)}))),n.register(n._terminal.onKey((function(e){return n._onKey(e.key)}))),n.register(n._terminal.onBlur((function(){return n._clearLiveRegion()}))),n.register(n._renderService.onDimensionsChange((function(){return n._refreshRowsDimensions()}))),n._screenDprMonitor=new d.ScreenDprMonitor,n.register(n._screenDprMonitor),n._screenDprMonitor.setListener((function(){return n._refreshRowsDimensions()})),n.register((0,l.addDisposableDomListener)(window,"resize",(function(){return n._refreshRowsDimensions()}))),n}return i(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),(0,h.removeElementFromParent)(this._accessibilityTreeRoot),this._rowElements.length=0},t.prototype._onBoundaryFocus=function(e,t){var r=e.target,n=this._rowElements[0===t?1:this._rowElements.length-2];if(r.getAttribute("aria-posinset")!==(0===t?"1":""+this._terminal.buffer.lines.length)&&e.relatedTarget===n){var i,o;if(0===t?(i=r,o=this._rowElements.pop(),this._rowContainer.removeChild(o)):(i=this._rowElements.shift(),o=r,this._rowContainer.removeChild(i)),i.removeEventListener("focus",this._topBoundaryFocusListener),o.removeEventListener("focus",this._bottomBoundaryFocusListener),0===t){var s=this._createAccessibilityTreeNode();this._rowElements.unshift(s),this._rowContainer.insertAdjacentElement("afterbegin",s)}else s=this._createAccessibilityTreeNode(),this._rowElements.push(s),this._rowContainer.appendChild(s);this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._terminal.scrollLines(0===t?-1:1),this._rowElements[0===t?1:this._rowElements.length-2].focus(),e.preventDefault(),e.stopImmediatePropagation()}},t.prototype._onResize=function(e){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(var t=this._rowContainer.children.length;t<this._terminal.rows;t++)this._rowElements[t]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[t]);for(;this._rowElements.length>e;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()},t.prototype._createAccessibilityTreeNode=function(){var e=document.createElement("div");return e.setAttribute("role","listitem"),e.tabIndex=-1,this._refreshRowDimensions(e),e},t.prototype._onTab=function(e){for(var t=0;t<e;t++)this._onChar(" ")},t.prototype._onChar=function(e){var t=this;this._liveRegionLineCount<21&&(this._charsToConsume.length>0?this._charsToConsume.shift()!==e&&(this._charsToAnnounce+=e):this._charsToAnnounce+=e,"\n"===e&&(this._liveRegionLineCount++,21===this._liveRegionLineCount&&(this._liveRegion.textContent+=o.tooMuchOutput)),s.isMac&&this._liveRegion.textContent&&this._liveRegion.textContent.length>0&&!this._liveRegion.parentNode&&setTimeout((function(){t._accessibilityTreeRoot.appendChild(t._liveRegion)}),0))},t.prototype._clearLiveRegion=function(){this._liveRegion.textContent="",this._liveRegionLineCount=0,s.isMac&&(0,h.removeElementFromParent)(this._liveRegion)},t.prototype._onKey=function(e){this._clearLiveRegion(),this._charsToConsume.push(e)},t.prototype._refreshRows=function(e,t){this._renderRowsDebouncer.refresh(e,t,this._terminal.rows)},t.prototype._renderRows=function(e,t){for(var r=this._terminal.buffer,n=r.lines.length.toString(),i=e;i<=t;i++){var o=r.translateBufferLineToString(r.ydisp+i,!0),s=(r.ydisp+i+1).toString(),a=this._rowElements[i];a&&(0===o.length?a.innerText=" ":a.textContent=o,a.setAttribute("aria-posinset",s),a.setAttribute("aria-setsize",n))}this._announceCharacters()},t.prototype._refreshRowsDimensions=function(){if(this._renderService.dimensions.actualCellHeight){this._rowElements.length!==this._terminal.rows&&this._onResize(this._terminal.rows);for(var e=0;e<this._terminal.rows;e++)this._refreshRowDimensions(this._rowElements[e])}},t.prototype._refreshRowDimensions=function(e){e.style.height=this._renderService.dimensions.actualCellHeight+"px"},t.prototype._announceCharacters=function(){0!==this._charsToAnnounce.length&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")},t}(c.Disposable);t.AccessibilityManager=u},3614:(e,t)=>{function r(e){return e.replace(/\r?\n/g,"\r")}function n(e,t){return t?"[200~"+e+"[201~":e}function i(e,t,i){e=n(e=r(e),i.decPrivateModes.bracketedPasteMode),i.triggerDataEvent(e,!0),t.value=""}function o(e,t,r){var n=r.getBoundingClientRect(),i=e.clientX-n.left-10,o=e.clientY-n.top-10;t.style.width="20px",t.style.height="20px",t.style.left=i+"px",t.style.top=o+"px",t.style.zIndex="1000",t.focus()}Object.defineProperty(t,"__esModule",{value:!0}),t.rightClickHandler=t.moveTextAreaUnderMouseCursor=t.paste=t.handlePasteEvent=t.copyHandler=t.bracketTextForPaste=t.prepareTextForTerminal=void 0,t.prepareTextForTerminal=r,t.bracketTextForPaste=n,t.copyHandler=function(e,t){e.clipboardData&&e.clipboardData.setData("text/plain",t.selectionText),e.preventDefault()},t.handlePasteEvent=function(e,t,r){e.stopPropagation(),e.clipboardData&&i(e.clipboardData.getData("text/plain"),t,r)},t.paste=i,t.moveTextAreaUnderMouseCursor=o,t.rightClickHandler=function(e,t,r,n,i){o(e,t,r),i&&n.rightClickSelect(e),t.value=n.selectionText,t.select()}},7239:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorContrastCache=void 0;var r=function(){function e(){this._color={},this._rgba={}}return e.prototype.clear=function(){this._color={},this._rgba={}},e.prototype.setCss=function(e,t,r){this._rgba[e]||(this._rgba[e]={}),this._rgba[e][t]=r},e.prototype.getCss=function(e,t){return this._rgba[e]?this._rgba[e][t]:void 0},e.prototype.setColor=function(e,t,r){this._color[e]||(this._color[e]={}),this._color[e][t]=r},e.prototype.getColor=function(e,t){return this._color[e]?this._color[e][t]:void 0},e}();t.ColorContrastCache=r},5680:function(e,t,r){var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s};Object.defineProperty(t,"__esModule",{value:!0}),t.ColorManager=t.DEFAULT_ANSI_COLORS=void 0;var i=r(8055),o=r(7239),s=i.css.toColor("#ffffff"),a=i.css.toColor("#000000"),l=i.css.toColor("#ffffff"),c=i.css.toColor("#000000"),d={css:"rgba(255, 255, 255, 0.3)",rgba:4294967117};t.DEFAULT_ANSI_COLORS=Object.freeze(function(){for(var e=[i.css.toColor("#2e3436"),i.css.toColor("#cc0000"),i.css.toColor("#4e9a06"),i.css.toColor("#c4a000"),i.css.toColor("#3465a4"),i.css.toColor("#75507b"),i.css.toColor("#06989a"),i.css.toColor("#d3d7cf"),i.css.toColor("#555753"),i.css.toColor("#ef2929"),i.css.toColor("#8ae234"),i.css.toColor("#fce94f"),i.css.toColor("#729fcf"),i.css.toColor("#ad7fa8"),i.css.toColor("#34e2e2"),i.css.toColor("#eeeeec")],t=[0,95,135,175,215,255],r=0;r<216;r++){var n=t[r/36%6|0],o=t[r/6%6|0],s=t[r%6];e.push({css:i.channels.toCss(n,o,s),rgba:i.channels.toRgba(n,o,s)})}for(r=0;r<24;r++){var a=8+10*r;e.push({css:i.channels.toCss(a,a,a),rgba:i.channels.toRgba(a,a,a)})}return e}());var h=function(){function e(e,r){this.allowTransparency=r;var n=e.createElement("canvas");n.width=1,n.height=1;var h=n.getContext("2d");if(!h)throw new Error("Could not get rendering context");this._ctx=h,this._ctx.globalCompositeOperation="copy",this._litmusColor=this._ctx.createLinearGradient(0,0,1,1),this._contrastCache=new o.ColorContrastCache,this.colors={foreground:s,background:a,cursor:l,cursorAccent:c,selectionTransparent:d,selectionOpaque:i.color.blend(a,d),selectionForeground:void 0,ansi:t.DEFAULT_ANSI_COLORS.slice(),contrastCache:this._contrastCache},this._updateRestoreColors()}return e.prototype.onOptionsChange=function(e){"minimumContrastRatio"===e&&this._contrastCache.clear()},e.prototype.setTheme=function(e){void 0===e&&(e={}),this.colors.foreground=this._parseColor(e.foreground,s),this.colors.background=this._parseColor(e.background,a),this.colors.cursor=this._parseColor(e.cursor,l,!0),this.colors.cursorAccent=this._parseColor(e.cursorAccent,c,!0),this.colors.selectionTransparent=this._parseColor(e.selection,d,!0),this.colors.selectionOpaque=i.color.blend(this.colors.background,this.colors.selectionTransparent);var r={css:"",rgba:0};this.colors.selectionForeground=e.selectionForeground?this._parseColor(e.selectionForeground,r):void 0,this.colors.selectionForeground===r&&(this.colors.selectionForeground=void 0),i.color.isOpaque(this.colors.selectionTransparent)&&(this.colors.selectionTransparent=i.color.opacity(this.colors.selectionTransparent,.3)),this.colors.ansi[0]=this._parseColor(e.black,t.DEFAULT_ANSI_COLORS[0]),this.colors.ansi[1]=this._parseColor(e.red,t.DEFAULT_ANSI_COLORS[1]),this.colors.ansi[2]=this._parseColor(e.green,t.DEFAULT_ANSI_COLORS[2]),this.colors.ansi[3]=this._parseColor(e.yellow,t.DEFAULT_ANSI_COLORS[3]),this.colors.ansi[4]=this._parseColor(e.blue,t.DEFAULT_ANSI_COLORS[4]),this.colors.ansi[5]=this._parseColor(e.magenta,t.DEFAULT_ANSI_COLORS[5]),this.colors.ansi[6]=this._parseColor(e.cyan,t.DEFAULT_ANSI_COLORS[6]),this.colors.ansi[7]=this._parseColor(e.white,t.DEFAULT_ANSI_COLORS[7]),this.colors.ansi[8]=this._parseColor(e.brightBlack,t.DEFAULT_ANSI_COLORS[8]),this.colors.ansi[9]=this._parseColor(e.brightRed,t.DEFAULT_ANSI_COLORS[9]),this.colors.ansi[10]=this._parseColor(e.brightGreen,t.DEFAULT_ANSI_COLORS[10]),this.colors.ansi[11]=this._parseColor(e.brightYellow,t.DEFAULT_ANSI_COLORS[11]),this.colors.ansi[12]=this._parseColor(e.brightBlue,t.DEFAULT_ANSI_COLORS[12]),this.colors.ansi[13]=this._parseColor(e.brightMagenta,t.DEFAULT_ANSI_COLORS[13]),this.colors.ansi[14]=this._parseColor(e.brightCyan,t.DEFAULT_ANSI_COLORS[14]),this.colors.ansi[15]=this._parseColor(e.brightWhite,t.DEFAULT_ANSI_COLORS[15]),this._contrastCache.clear(),this._updateRestoreColors()},e.prototype.restoreColor=function(e){if(void 0!==e)switch(e){case 256:this.colors.foreground=this._restoreColors.foreground;break;case 257:this.colors.background=this._restoreColors.background;break;case 258:this.colors.cursor=this._restoreColors.cursor;break;default:this.colors.ansi[e]=this._restoreColors.ansi[e]}else for(var t=0;t<this._restoreColors.ansi.length;++t)this.colors.ansi[t]=this._restoreColors.ansi[t]},e.prototype._updateRestoreColors=function(){this._restoreColors={foreground:this.colors.foreground,background:this.colors.background,cursor:this.colors.cursor,ansi:this.colors.ansi.slice()}},e.prototype._parseColor=function(e,t,r){if(void 0===r&&(r=this.allowTransparency),void 0===e)return t;if(this._ctx.fillStyle=this._litmusColor,this._ctx.fillStyle=e,"string"!=typeof this._ctx.fillStyle)return console.warn("Color: "+e+" is invalid using fallback "+t.css),t;this._ctx.fillRect(0,0,1,1);var o=this._ctx.getImageData(0,0,1,1).data;if(255!==o[3]){if(!r)return console.warn("Color: "+e+" is using transparency, but allowTransparency is false. Using fallback "+t.css+"."),t;var s=n(this._ctx.fillStyle.substring(5,this._ctx.fillStyle.length-1).split(",").map((function(e){return Number(e)})),4),a=s[0],l=s[1],c=s[2],d=s[3],h=Math.round(255*d);return{rgba:i.channels.toRgba(a,l,c,h),css:e}}return{css:this._ctx.fillStyle,rgba:i.channels.toRgba(o[0],o[1],o[2],o[3])}},e}();t.ColorManager=h},9631:function(e,t){var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.removeElementFromParent=void 0,t.removeElementFromParent=function(){for(var e,t,n,i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];try{for(var s=r(i),a=s.next();!a.done;a=s.next()){var l=a.value;null===(n=null==l?void 0:l.parentElement)||void 0===n||n.removeChild(l)}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}}},3656:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addDisposableDomListener=void 0,t.addDisposableDomListener=function(e,t,r,n){e.addEventListener(t,r,n);var i=!1;return{dispose:function(){i||(i=!0,e.removeEventListener(t,r,n))}}}},3551:function(e,t,r){var n=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},i=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.MouseZone=t.Linkifier=void 0;var o=r(8460),s=r(2585),a=function(){function e(e,t,r){this._bufferService=e,this._logService=t,this._unicodeService=r,this._linkMatchers=[],this._nextLinkMatcherId=0,this._onShowLinkUnderline=new o.EventEmitter,this._onHideLinkUnderline=new o.EventEmitter,this._onLinkTooltip=new o.EventEmitter,this._rowsToLinkify={start:void 0,end:void 0}}return Object.defineProperty(e.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onLinkTooltip",{get:function(){return this._onLinkTooltip.event},enumerable:!1,configurable:!0}),e.prototype.attachToDom=function(e,t){this._element=e,this._mouseZoneManager=t},e.prototype.linkifyRows=function(t,r){var n=this;this._mouseZoneManager&&(void 0===this._rowsToLinkify.start||void 0===this._rowsToLinkify.end?(this._rowsToLinkify.start=t,this._rowsToLinkify.end=r):(this._rowsToLinkify.start=Math.min(this._rowsToLinkify.start,t),this._rowsToLinkify.end=Math.max(this._rowsToLinkify.end,r)),this._mouseZoneManager.clearAll(t,r),this._rowsTimeoutId&&clearTimeout(this._rowsTimeoutId),this._rowsTimeoutId=setTimeout((function(){return n._linkifyRows()}),e._timeBeforeLatency))},e.prototype._linkifyRows=function(){this._rowsTimeoutId=void 0;var e=this._bufferService.buffer;if(void 0!==this._rowsToLinkify.start&&void 0!==this._rowsToLinkify.end){var t=e.ydisp+this._rowsToLinkify.start;if(!(t>=e.lines.length)){for(var r=e.ydisp+Math.min(this._rowsToLinkify.end,this._bufferService.rows)+1,n=Math.ceil(2e3/this._bufferService.cols),i=this._bufferService.buffer.iterator(!1,t,r,n,n);i.hasNext();)for(var o=i.next(),s=0;s<this._linkMatchers.length;s++)this._doLinkifyRow(o.range.first,o.content,this._linkMatchers[s]);this._rowsToLinkify.start=void 0,this._rowsToLinkify.end=void 0}}else this._logService.debug("_rowToLinkify was unset before _linkifyRows was called")},e.prototype.registerLinkMatcher=function(e,t,r){if(void 0===r&&(r={}),!t)throw new Error("handler must be defined");var n={id:this._nextLinkMatcherId++,regex:e,handler:t,matchIndex:r.matchIndex,validationCallback:r.validationCallback,hoverTooltipCallback:r.tooltipCallback,hoverLeaveCallback:r.leaveCallback,willLinkActivate:r.willLinkActivate,priority:r.priority||0};return this._addLinkMatcherToList(n),n.id},e.prototype._addLinkMatcherToList=function(e){if(0!==this._linkMatchers.length){for(var t=this._linkMatchers.length-1;t>=0;t--)if(e.priority<=this._linkMatchers[t].priority)return void this._linkMatchers.splice(t+1,0,e);this._linkMatchers.splice(0,0,e)}else this._linkMatchers.push(e)},e.prototype.deregisterLinkMatcher=function(e){for(var t=0;t<this._linkMatchers.length;t++)if(this._linkMatchers[t].id===e)return this._linkMatchers.splice(t,1),!0;return!1},e.prototype._doLinkifyRow=function(e,t,r){for(var n,i=this,o=new RegExp(r.regex.source,(r.regex.flags||"")+"g"),s=-1,a=function(){var a=n["number"!=typeof r.matchIndex?0:r.matchIndex];if(!a)return l._logService.debug("match found without corresponding matchIndex",n,r),"break";if(s=t.indexOf(a,s+1),o.lastIndex=s+a.length,s<0)return"break";var c=l._bufferService.buffer.stringIndexToBufferIndex(e,s);if(c[0]<0)return"break";var d=l._bufferService.buffer.lines.get(c[0]);if(!d)return"break";var h=d.getFg(c[1]),u=h?h>>9&511:void 0;r.validationCallback?r.validationCallback(a,(function(e){i._rowsTimeoutId||e&&i._addLink(c[1],c[0]-i._bufferService.buffer.ydisp,a,r,u)})):l._addLink(c[1],c[0]-l._bufferService.buffer.ydisp,a,r,u)},l=this;null!==(n=o.exec(t))&&"break"!==a(););},e.prototype._addLink=function(e,t,r,n,i){var o=this;if(this._mouseZoneManager&&this._element){var s=this._unicodeService.getStringCellWidth(r),a=e%this._bufferService.cols,c=t+Math.floor(e/this._bufferService.cols),d=(a+s)%this._bufferService.cols,h=c+Math.floor((a+s)/this._bufferService.cols);0===d&&(d=this._bufferService.cols,h--),this._mouseZoneManager.add(new l(a+1,c+1,d+1,h+1,(function(e){if(n.handler)return n.handler(e,r);var t=window.open();t?(t.opener=null,t.location.href=r):console.warn("Opening link blocked as opener could not be cleared")}),(function(){o._onShowLinkUnderline.fire(o._createLinkHoverEvent(a,c,d,h,i)),o._element.classList.add("xterm-cursor-pointer")}),(function(e){o._onLinkTooltip.fire(o._createLinkHoverEvent(a,c,d,h,i)),n.hoverTooltipCallback&&n.hoverTooltipCallback(e,r,{start:{x:a,y:c},end:{x:d,y:h}})}),(function(){o._onHideLinkUnderline.fire(o._createLinkHoverEvent(a,c,d,h,i)),o._element.classList.remove("xterm-cursor-pointer"),n.hoverLeaveCallback&&n.hoverLeaveCallback()}),(function(e){return!n.willLinkActivate||n.willLinkActivate(e,r)})))}},e.prototype._createLinkHoverEvent=function(e,t,r,n,i){return{x1:e,y1:t,x2:r,y2:n,cols:this._bufferService.cols,fg:i}},e._timeBeforeLatency=200,e=n([i(0,s.IBufferService),i(1,s.ILogService),i(2,s.IUnicodeService)],e)}();t.Linkifier=a;var l=function(e,t,r,n,i,o,s,a,l){this.x1=e,this.y1=t,this.x2=r,this.y2=n,this.clickCallback=i,this.hoverCallback=o,this.tooltipCallback=s,this.leaveCallback=a,this.willLinkActivate=l};t.MouseZone=l},6465:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},l=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s};Object.defineProperty(t,"__esModule",{value:!0}),t.Linkifier2=void 0;var c=r(2585),d=r(8460),h=r(844),u=r(3656),f=function(e){function t(t){var r=e.call(this)||this;return r._bufferService=t,r._linkProviders=[],r._linkCacheDisposables=[],r._isMouseOut=!0,r._activeLine=-1,r._onShowLinkUnderline=r.register(new d.EventEmitter),r._onHideLinkUnderline=r.register(new d.EventEmitter),r.register((0,h.getDisposeArrayDisposable)(r._linkCacheDisposables)),r}return i(t,e),Object.defineProperty(t.prototype,"currentLink",{get:function(){return this._currentLink},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),t.prototype.registerLinkProvider=function(e){var t=this;return this._linkProviders.push(e),{dispose:function(){var r=t._linkProviders.indexOf(e);-1!==r&&t._linkProviders.splice(r,1)}}},t.prototype.attachToDom=function(e,t,r){var n=this;this._element=e,this._mouseService=t,this._renderService=r,this.register((0,u.addDisposableDomListener)(this._element,"mouseleave",(function(){n._isMouseOut=!0,n._clearCurrentLink()}))),this.register((0,u.addDisposableDomListener)(this._element,"mousemove",this._onMouseMove.bind(this))),this.register((0,u.addDisposableDomListener)(this._element,"mousedown",this._handleMouseDown.bind(this))),this.register((0,u.addDisposableDomListener)(this._element,"mouseup",this._handleMouseUp.bind(this)))},t.prototype._onMouseMove=function(e){if(this._lastMouseEvent=e,this._element&&this._mouseService){var t=this._positionFromMouseEvent(e,this._element,this._mouseService);if(t){this._isMouseOut=!1;for(var r=e.composedPath(),n=0;n<r.length;n++){var i=r[n];if(i.classList.contains("xterm"))break;if(i.classList.contains("xterm-hover"))return}this._lastBufferCell&&t.x===this._lastBufferCell.x&&t.y===this._lastBufferCell.y||(this._onHover(t),this._lastBufferCell=t)}}},t.prototype._onHover=function(e){if(this._activeLine!==e.y)return this._clearCurrentLink(),void this._askForLink(e,!1);this._currentLink&&this._linkAtPosition(this._currentLink.link,e)||(this._clearCurrentLink(),this._askForLink(e,!0))},t.prototype._askForLink=function(e,t){var r,n,i,o,s=this;this._activeProviderReplies&&t||(null===(i=this._activeProviderReplies)||void 0===i||i.forEach((function(e){null==e||e.forEach((function(e){e.link.dispose&&e.link.dispose()}))})),this._activeProviderReplies=new Map,this._activeLine=e.y);var c=!1,d=function(r,n){t?(null===(o=h._activeProviderReplies)||void 0===o?void 0:o.get(r))&&(c=h._checkLinkProviderResult(r,e,c)):n.provideLinks(e.y,(function(t){var n,i;if(!s._isMouseOut){var o=null==t?void 0:t.map((function(e){return{link:e}}));null===(n=s._activeProviderReplies)||void 0===n||n.set(r,o),c=s._checkLinkProviderResult(r,e,c),(null===(i=s._activeProviderReplies)||void 0===i?void 0:i.size)===s._linkProviders.length&&s._removeIntersectingLinks(e.y,s._activeProviderReplies)}}))},h=this;try{for(var u=a(this._linkProviders.entries()),f=u.next();!f.done;f=u.next()){var p=l(f.value,2);d(p[0],p[1])}}catch(e){r={error:e}}finally{try{f&&!f.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}},t.prototype._removeIntersectingLinks=function(e,t){for(var r=new Set,n=0;n<t.size;n++){var i=t.get(n);if(i)for(var o=0;o<i.length;o++)for(var s=i[o],a=s.link.range.start.y<e?0:s.link.range.start.x,l=s.link.range.end.y>e?this._bufferService.cols:s.link.range.end.x,c=a;c<=l;c++){if(r.has(c)){i.splice(o--,1);break}r.add(c)}}},t.prototype._checkLinkProviderResult=function(e,t,r){var n,i=this;if(!this._activeProviderReplies)return r;for(var o=this._activeProviderReplies.get(e),s=!1,a=0;a<e;a++)this._activeProviderReplies.has(a)&&!this._activeProviderReplies.get(a)||(s=!0);if(!s&&o){var l=o.find((function(e){return i._linkAtPosition(e.link,t)}));l&&(r=!0,this._handleNewLink(l))}if(this._activeProviderReplies.size===this._linkProviders.length&&!r)for(a=0;a<this._activeProviderReplies.size;a++){var c=null===(n=this._activeProviderReplies.get(a))||void 0===n?void 0:n.find((function(e){return i._linkAtPosition(e.link,t)}));if(c){r=!0,this._handleNewLink(c);break}}return r},t.prototype._handleMouseDown=function(){this._mouseDownLink=this._currentLink},t.prototype._handleMouseUp=function(e){if(this._element&&this._mouseService&&this._currentLink){var t=this._positionFromMouseEvent(e,this._element,this._mouseService);t&&this._mouseDownLink===this._currentLink&&this._linkAtPosition(this._currentLink.link,t)&&this._currentLink.link.activate(e,this._currentLink.link.text)}},t.prototype._clearCurrentLink=function(e,t){this._element&&this._currentLink&&this._lastMouseEvent&&(!e||!t||this._currentLink.link.range.start.y>=e&&this._currentLink.link.range.end.y<=t)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,h.disposeArray)(this._linkCacheDisposables))},t.prototype._handleNewLink=function(e){var t=this;if(this._element&&this._lastMouseEvent&&this._mouseService){var r=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);r&&this._linkAtPosition(e.link,r)&&(this._currentLink=e,this._currentLink.state={decorations:{underline:void 0===e.link.decorations||e.link.decorations.underline,pointerCursor:void 0===e.link.decorations||e.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,e.link,this._lastMouseEvent),e.link.decorations={},Object.defineProperties(e.link.decorations,{pointerCursor:{get:function(){var e,r;return null===(r=null===(e=t._currentLink)||void 0===e?void 0:e.state)||void 0===r?void 0:r.decorations.pointerCursor},set:function(e){var r,n;(null===(r=t._currentLink)||void 0===r?void 0:r.state)&&t._currentLink.state.decorations.pointerCursor!==e&&(t._currentLink.state.decorations.pointerCursor=e,t._currentLink.state.isHovered&&(null===(n=t._element)||void 0===n||n.classList.toggle("xterm-cursor-pointer",e)))}},underline:{get:function(){var e,r;return null===(r=null===(e=t._currentLink)||void 0===e?void 0:e.state)||void 0===r?void 0:r.decorations.underline},set:function(r){var n,i,o;(null===(n=t._currentLink)||void 0===n?void 0:n.state)&&(null===(o=null===(i=t._currentLink)||void 0===i?void 0:i.state)||void 0===o?void 0:o.decorations.underline)!==r&&(t._currentLink.state.decorations.underline=r,t._currentLink.state.isHovered&&t._fireUnderlineEvent(e.link,r))}}}),this._renderService&&this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange((function(e){var r=0===e.start?0:e.start+1+t._bufferService.buffer.ydisp;t._clearCurrentLink(r,e.end+1+t._bufferService.buffer.ydisp)}))))}},t.prototype._linkHover=function(e,t,r){var n;(null===(n=this._currentLink)||void 0===n?void 0:n.state)&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!0),this._currentLink.state.decorations.pointerCursor&&e.classList.add("xterm-cursor-pointer")),t.hover&&t.hover(r,t.text)},t.prototype._fireUnderlineEvent=function(e,t){var r=e.range,n=this._bufferService.buffer.ydisp,i=this._createLinkUnderlineEvent(r.start.x-1,r.start.y-n-1,r.end.x,r.end.y-n-1,void 0);(t?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(i)},t.prototype._linkLeave=function(e,t,r){var n;(null===(n=this._currentLink)||void 0===n?void 0:n.state)&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(t,!1),this._currentLink.state.decorations.pointerCursor&&e.classList.remove("xterm-cursor-pointer")),t.leave&&t.leave(r,t.text)},t.prototype._linkAtPosition=function(e,t){var r=e.range.start.y===e.range.end.y,n=e.range.start.y<t.y,i=e.range.end.y>t.y;return(r&&e.range.start.x<=t.x&&e.range.end.x>=t.x||n&&e.range.end.x>=t.x||i&&e.range.start.x<=t.x||n&&i)&&e.range.start.y<=t.y&&e.range.end.y>=t.y},t.prototype._positionFromMouseEvent=function(e,t,r){var n=r.getCoords(e,t,this._bufferService.cols,this._bufferService.rows);if(n)return{x:n[0],y:n[1]+this._bufferService.buffer.ydisp}},t.prototype._createLinkUnderlineEvent=function(e,t,r,n,i){return{x1:e,y1:t,x2:r,y2:n,cols:this._bufferService.cols,fg:i}},o([s(0,c.IBufferService)],t)}(h.Disposable);t.Linkifier2=f},9042:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.tooMuchOutput=t.promptLabel=void 0,t.promptLabel="Terminal input",t.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},6954:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.MouseZoneManager=void 0;var a=r(844),l=r(3656),c=r(4725),d=r(2585),h=function(e){function t(t,r,n,i,o,s){var a=e.call(this)||this;return a._element=t,a._screenElement=r,a._bufferService=n,a._mouseService=i,a._selectionService=o,a._optionsService=s,a._zones=[],a._areZonesActive=!1,a._lastHoverCoords=[void 0,void 0],a._initialSelectionLength=0,a.register((0,l.addDisposableDomListener)(a._element,"mousedown",(function(e){return a._onMouseDown(e)}))),a._mouseMoveListener=function(e){return a._onMouseMove(e)},a._mouseLeaveListener=function(e){return a._onMouseLeave(e)},a._clickListener=function(e){return a._onClick(e)},a}return i(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._deactivate()},t.prototype.add=function(e){this._zones.push(e),1===this._zones.length&&this._activate()},t.prototype.clearAll=function(e,t){if(0!==this._zones.length){e&&t||(e=0,t=this._bufferService.rows-1);for(var r=0;r<this._zones.length;r++){var n=this._zones[r];(n.y1>e&&n.y1<=t+1||n.y2>e&&n.y2<=t+1||n.y1<e&&n.y2>t+1)&&(this._currentZone&&this._currentZone===n&&(this._currentZone.leaveCallback(),this._currentZone=void 0),this._zones.splice(r--,1))}0===this._zones.length&&this._deactivate()}},t.prototype._activate=function(){this._areZonesActive||(this._areZonesActive=!0,this._element.addEventListener("mousemove",this._mouseMoveListener),this._element.addEventListener("mouseleave",this._mouseLeaveListener),this._element.addEventListener("click",this._clickListener))},t.prototype._deactivate=function(){this._areZonesActive&&(this._areZonesActive=!1,this._element.removeEventListener("mousemove",this._mouseMoveListener),this._element.removeEventListener("mouseleave",this._mouseLeaveListener),this._element.removeEventListener("click",this._clickListener))},t.prototype._onMouseMove=function(e){this._lastHoverCoords[0]===e.pageX&&this._lastHoverCoords[1]===e.pageY||(this._onHover(e),this._lastHoverCoords=[e.pageX,e.pageY])},t.prototype._onHover=function(e){var t=this,r=this._findZoneEventAt(e);r!==this._currentZone&&(this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout)),r&&(this._currentZone=r,r.hoverCallback&&r.hoverCallback(e),this._tooltipTimeout=window.setTimeout((function(){return t._onTooltip(e)}),this._optionsService.rawOptions.linkTooltipHoverDuration)))},t.prototype._onTooltip=function(e){this._tooltipTimeout=void 0;var t=this._findZoneEventAt(e);null==t||t.tooltipCallback(e)},t.prototype._onMouseDown=function(e){if(this._initialSelectionLength=this._getSelectionLength(),this._areZonesActive){var t=this._findZoneEventAt(e);(null==t?void 0:t.willLinkActivate(e))&&(e.preventDefault(),e.stopImmediatePropagation())}},t.prototype._onMouseLeave=function(e){this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout))},t.prototype._onClick=function(e){var t=this._findZoneEventAt(e),r=this._getSelectionLength();t&&r===this._initialSelectionLength&&(t.clickCallback(e),e.preventDefault(),e.stopImmediatePropagation())},t.prototype._getSelectionLength=function(){var e=this._selectionService.selectionText;return e?e.length:0},t.prototype._findZoneEventAt=function(e){var t=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows);if(t)for(var r=t[0],n=t[1],i=0;i<this._zones.length;i++){var o=this._zones[i];if(o.y1===o.y2){if(n===o.y1&&r>=o.x1&&r<o.x2)return o}else if(n===o.y1&&r>=o.x1||n===o.y2&&r<o.x2||n>o.y1&&n<o.y2)return o}},o([s(2,d.IBufferService),s(3,c.IMouseService),s(4,c.ISelectionService),s(5,d.IOptionsService)],t)}(a.Disposable);t.MouseZoneManager=h},6193:function(e,t){var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.RenderDebouncer=void 0;var n=function(){function e(e){this._renderCallback=e,this._refreshCallbacks=[]}return e.prototype.dispose=function(){this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},e.prototype.addRefreshCallback=function(e){var t=this;return this._refreshCallbacks.push(e),this._animationFrame||(this._animationFrame=window.requestAnimationFrame((function(){return t._innerRefresh()}))),this._animationFrame},e.prototype.refresh=function(e,t,r){var n=this;this._rowCount=r,e=void 0!==e?e:0,t=void 0!==t?t:this._rowCount-1,this._rowStart=void 0!==this._rowStart?Math.min(this._rowStart,e):e,this._rowEnd=void 0!==this._rowEnd?Math.max(this._rowEnd,t):t,this._animationFrame||(this._animationFrame=window.requestAnimationFrame((function(){return n._innerRefresh()})))},e.prototype._innerRefresh=function(){if(this._animationFrame=void 0,void 0!==this._rowStart&&void 0!==this._rowEnd&&void 0!==this._rowCount){var e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,t),this._runRefreshCallbacks()}else this._runRefreshCallbacks()},e.prototype._runRefreshCallbacks=function(){var e,t;try{for(var n=r(this._refreshCallbacks),i=n.next();!i.done;i=n.next())(0,i.value)(0)}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}this._refreshCallbacks=[]},e}();t.RenderDebouncer=n},5596:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.ScreenDprMonitor=void 0;var o=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._currentDevicePixelRatio=window.devicePixelRatio,t}return i(t,e),t.prototype.setListener=function(e){var t=this;this._listener&&this.clearListener(),this._listener=e,this._outerListener=function(){t._listener&&(t._listener(window.devicePixelRatio,t._currentDevicePixelRatio),t._updateDpr())},this._updateDpr()},t.prototype.dispose=function(){e.prototype.dispose.call(this),this.clearListener()},t.prototype._updateDpr=function(){var e;this._outerListener&&(null===(e=this._resolutionMediaMatchList)||void 0===e||e.removeListener(this._outerListener),this._currentDevicePixelRatio=window.devicePixelRatio,this._resolutionMediaMatchList=window.matchMedia("screen and (resolution: "+window.devicePixelRatio+"dppx)"),this._resolutionMediaMatchList.addListener(this._outerListener))},t.prototype.clearListener=function(){this._resolutionMediaMatchList&&this._listener&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._listener=void 0,this._outerListener=void 0)},t}(r(844).Disposable);t.ScreenDprMonitor=o},3236:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},s=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s},a=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,i=0,o=t.length;i<o;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))};Object.defineProperty(t,"__esModule",{value:!0}),t.Terminal=void 0;var l=r(2950),c=r(1680),d=r(3614),h=r(2584),u=r(5435),f=r(3525),p=r(3551),_=r(9312),b=r(6114),g=r(3656),m=r(9042),v=r(357),A=r(6954),y=r(4567),C=r(1296),w=r(7399),x=r(8460),S=r(8437),$=r(5680),k=r(3230),E=r(4725),B=r(428),L=r(8934),R=r(6465),D=r(5114),M=r(8969),O=r(8055),T=r(4269),I=r(5941),P=r(3107),F=r(5744),H=r(9074),j=r(2585),z="undefined"!=typeof window?window.document:null,N=function(e){function t(t){void 0===t&&(t={});var r=e.call(this,t)||this;return r.browser=b,r._keyDownHandled=!1,r._keyDownSeen=!1,r._keyPressHandled=!1,r._unprocessedDeadKey=!1,r._onCursorMove=new x.EventEmitter,r._onKey=new x.EventEmitter,r._onRender=new x.EventEmitter,r._onSelectionChange=new x.EventEmitter,r._onTitleChange=new x.EventEmitter,r._onBell=new x.EventEmitter,r._onFocus=new x.EventEmitter,r._onBlur=new x.EventEmitter,r._onA11yCharEmitter=new x.EventEmitter,r._onA11yTabEmitter=new x.EventEmitter,r._setup(),r.linkifier=r._instantiationService.createInstance(p.Linkifier),r.linkifier2=r.register(r._instantiationService.createInstance(R.Linkifier2)),r._decorationService=r._instantiationService.createInstance(H.DecorationService),r._instantiationService.setService(j.IDecorationService,r._decorationService),r.register(r._inputHandler.onRequestBell((function(){return r.bell()}))),r.register(r._inputHandler.onRequestRefreshRows((function(e,t){return r.refresh(e,t)}))),r.register(r._inputHandler.onRequestSendFocus((function(){return r._reportFocus()}))),r.register(r._inputHandler.onRequestReset((function(){return r.reset()}))),r.register(r._inputHandler.onRequestWindowsOptionsReport((function(e){return r._reportWindowsOptions(e)}))),r.register(r._inputHandler.onColor((function(e){return r._handleColorEvent(e)}))),r.register((0,x.forwardEvent)(r._inputHandler.onCursorMove,r._onCursorMove)),r.register((0,x.forwardEvent)(r._inputHandler.onTitleChange,r._onTitleChange)),r.register((0,x.forwardEvent)(r._inputHandler.onA11yChar,r._onA11yCharEmitter)),r.register((0,x.forwardEvent)(r._inputHandler.onA11yTab,r._onA11yTabEmitter)),r.register(r._bufferService.onResize((function(e){return r._afterResize(e.cols,e.rows)}))),r}return i(t,e),Object.defineProperty(t.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onKey",{get:function(){return this._onKey.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onBell",{get:function(){return this._onBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onFocus",{get:function(){return this._onFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onBlur",{get:function(){return this._onBlur.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onA11yChar",{get:function(){return this._onA11yCharEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onA11yTab",{get:function(){return this._onA11yTabEmitter.event},enumerable:!1,configurable:!0}),t.prototype._handleColorEvent=function(e){var t,r,n,i;if(this._colorManager){try{for(var l=o(e),c=l.next();!c.done;c=l.next()){var d=c.value,u=void 0,f="";switch(d.index){case 256:u="foreground",f="10";break;case 257:u="background",f="11";break;case 258:u="cursor",f="12";break;default:u="ansi",f="4;"+d.index}if(u)switch(d.type){case 0:var p=O.color.toColorRGB("ansi"===u?this._colorManager.colors.ansi[d.index]:this._colorManager.colors[u]);this.coreService.triggerDataEvent(h.C0.ESC+"]"+f+";"+(0,I.toRgbString)(p)+h.C1_ESCAPED.ST);break;case 1:"ansi"===u?this._colorManager.colors.ansi[d.index]=O.rgba.toColor.apply(O.rgba,a([],s(d.color),!1)):this._colorManager.colors[u]=O.rgba.toColor.apply(O.rgba,a([],s(d.color),!1));break;case 2:this._colorManager.restoreColor(d.index)}}}catch(e){t={error:e}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(t)throw t.error}}null===(n=this._renderService)||void 0===n||n.setColors(this._colorManager.colors),null===(i=this.viewport)||void 0===i||i.onThemeChange(this._colorManager.colors)}},t.prototype.dispose=function(){var t,r,n;this._isDisposed||(e.prototype.dispose.call(this),null===(t=this._renderService)||void 0===t||t.dispose(),this._customKeyEventHandler=void 0,this.write=function(){},null===(n=null===(r=this.element)||void 0===r?void 0:r.parentNode)||void 0===n||n.removeChild(this.element))},t.prototype._setup=function(){e.prototype._setup.call(this),this._customKeyEventHandler=void 0},Object.defineProperty(t.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!1,configurable:!0}),t.prototype.focus=function(){this.textarea&&this.textarea.focus({preventScroll:!0})},t.prototype._updateOptions=function(t){var r,n,i,o;switch(e.prototype._updateOptions.call(this,t),t){case"fontFamily":case"fontSize":null===(r=this._renderService)||void 0===r||r.clear(),null===(n=this._charSizeService)||void 0===n||n.measure();break;case"cursorBlink":case"cursorStyle":this.refresh(this.buffer.y,this.buffer.y);break;case"customGlyphs":case"drawBoldTextInBrightColors":case"letterSpacing":case"lineHeight":case"fontWeight":case"fontWeightBold":case"minimumContrastRatio":this._renderService&&(this._renderService.clear(),this._renderService.onResize(this.cols,this.rows),this.refresh(0,this.rows-1));break;case"rendererType":this._renderService&&(this._renderService.setRenderer(this._createRenderer()),this._renderService.onResize(this.cols,this.rows));break;case"scrollback":null===(i=this.viewport)||void 0===i||i.syncScrollArea();break;case"screenReaderMode":this.optionsService.rawOptions.screenReaderMode?!this._accessibilityManager&&this._renderService&&(this._accessibilityManager=new y.AccessibilityManager(this,this._renderService)):(null===(o=this._accessibilityManager)||void 0===o||o.dispose(),this._accessibilityManager=void 0);break;case"tabStopWidth":this.buffers.setupTabStops();break;case"theme":this._setTheme(this.optionsService.rawOptions.theme)}},t.prototype._onTextAreaFocus=function(e){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(h.C0.ESC+"[I"),this.updateCursorStyle(e),this.element.classList.add("focus"),this._showCursor(),this._onFocus.fire()},t.prototype.blur=function(){var e;return null===(e=this.textarea)||void 0===e?void 0:e.blur()},t.prototype._onTextAreaBlur=function(){this.textarea.value="",this.refresh(this.buffer.y,this.buffer.y),this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(h.C0.ESC+"[O"),this.element.classList.remove("focus"),this._onBlur.fire()},t.prototype._syncTextArea=function(){if(this.textarea&&this.buffer.isCursorInViewport&&!this._compositionHelper.isComposing&&this._renderService){var e=this.buffer.ybase+this.buffer.y,t=this.buffer.lines.get(e);if(t){var r=Math.min(this.buffer.x,this.cols-1),n=this._renderService.dimensions.actualCellHeight,i=t.getWidth(r),o=this._renderService.dimensions.actualCellWidth*i,s=this.buffer.y*this._renderService.dimensions.actualCellHeight,a=r*this._renderService.dimensions.actualCellWidth;this.textarea.style.left=a+"px",this.textarea.style.top=s+"px",this.textarea.style.width=o+"px",this.textarea.style.height=n+"px",this.textarea.style.lineHeight=n+"px",this.textarea.style.zIndex="-5"}}},t.prototype._initGlobal=function(){var e=this;this._bindKeys(),this.register((0,g.addDisposableDomListener)(this.element,"copy",(function(t){e.hasSelection()&&(0,d.copyHandler)(t,e._selectionService)})));var t=function(t){return(0,d.handlePasteEvent)(t,e.textarea,e.coreService)};this.register((0,g.addDisposableDomListener)(this.textarea,"paste",t)),this.register((0,g.addDisposableDomListener)(this.element,"paste",t)),b.isFirefox?this.register((0,g.addDisposableDomListener)(this.element,"mousedown",(function(t){2===t.button&&(0,d.rightClickHandler)(t,e.textarea,e.screenElement,e._selectionService,e.options.rightClickSelectsWord)}))):this.register((0,g.addDisposableDomListener)(this.element,"contextmenu",(function(t){(0,d.rightClickHandler)(t,e.textarea,e.screenElement,e._selectionService,e.options.rightClickSelectsWord)}))),b.isLinux&&this.register((0,g.addDisposableDomListener)(this.element,"auxclick",(function(t){1===t.button&&(0,d.moveTextAreaUnderMouseCursor)(t,e.textarea,e.screenElement)})))},t.prototype._bindKeys=function(){var e=this;this.register((0,g.addDisposableDomListener)(this.textarea,"keyup",(function(t){return e._keyUp(t)}),!0)),this.register((0,g.addDisposableDomListener)(this.textarea,"keydown",(function(t){return e._keyDown(t)}),!0)),this.register((0,g.addDisposableDomListener)(this.textarea,"keypress",(function(t){return e._keyPress(t)}),!0)),this.register((0,g.addDisposableDomListener)(this.textarea,"compositionstart",(function(){return e._compositionHelper.compositionstart()}))),this.register((0,g.addDisposableDomListener)(this.textarea,"compositionupdate",(function(t){return e._compositionHelper.compositionupdate(t)}))),this.register((0,g.addDisposableDomListener)(this.textarea,"compositionend",(function(){return e._compositionHelper.compositionend()}))),this.register((0,g.addDisposableDomListener)(this.textarea,"input",(function(t){return e._inputEvent(t)}),!0)),this.register(this.onRender((function(){return e._compositionHelper.updateCompositionElements()}))),this.register(this.onRender((function(t){return e._queueLinkification(t.start,t.end)})))},t.prototype.open=function(e){var t=this;if(!e)throw new Error("Terminal requires a parent element.");e.isConnected||this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"),this._document=e.ownerDocument,this.element=this._document.createElement("div"),this.element.dir="ltr",this.element.classList.add("terminal"),this.element.classList.add("xterm"),this.element.setAttribute("tabindex","0"),e.appendChild(this.element);var r=z.createDocumentFragment();this._viewportElement=z.createElement("div"),this._viewportElement.classList.add("xterm-viewport"),r.appendChild(this._viewportElement),this._viewportScrollArea=z.createElement("div"),this._viewportScrollArea.classList.add("xterm-scroll-area"),this._viewportElement.appendChild(this._viewportScrollArea),this.screenElement=z.createElement("div"),this.screenElement.classList.add("xterm-screen"),this._helperContainer=z.createElement("div"),this._helperContainer.classList.add("xterm-helpers"),this.screenElement.appendChild(this._helperContainer),r.appendChild(this.screenElement),this.textarea=z.createElement("textarea"),this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("aria-label",m.promptLabel),this.textarea.setAttribute("aria-multiline","false"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.tabIndex=0,this.register((0,g.addDisposableDomListener)(this.textarea,"focus",(function(e){return t._onTextAreaFocus(e)}))),this.register((0,g.addDisposableDomListener)(this.textarea,"blur",(function(){return t._onTextAreaBlur()}))),this._helperContainer.appendChild(this.textarea);var n=this._instantiationService.createInstance(D.CoreBrowserService,this.textarea);this._instantiationService.setService(E.ICoreBrowserService,n),this._charSizeService=this._instantiationService.createInstance(B.CharSizeService,this._document,this._helperContainer),this._instantiationService.setService(E.ICharSizeService,this._charSizeService),this._theme=this.options.theme||this._theme,this._colorManager=new $.ColorManager(z,this.options.allowTransparency),this.register(this.optionsService.onOptionChange((function(e){return t._colorManager.onOptionsChange(e)}))),this._colorManager.setTheme(this._theme),this._characterJoinerService=this._instantiationService.createInstance(T.CharacterJoinerService),this._instantiationService.setService(E.ICharacterJoinerService,this._characterJoinerService);var i=this._createRenderer();this._renderService=this.register(this._instantiationService.createInstance(k.RenderService,i,this.rows,this.screenElement)),this._instantiationService.setService(E.IRenderService,this._renderService),this.register(this._renderService.onRenderedViewportChange((function(e){return t._onRender.fire(e)}))),this.onResize((function(e){return t._renderService.resize(e.cols,e.rows)})),this._compositionView=z.createElement("div"),this._compositionView.classList.add("composition-view"),this._compositionHelper=this._instantiationService.createInstance(l.CompositionHelper,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this.element.appendChild(r),this._soundService=this._instantiationService.createInstance(v.SoundService),this._instantiationService.setService(E.ISoundService,this._soundService),this._mouseService=this._instantiationService.createInstance(L.MouseService),this._instantiationService.setService(E.IMouseService,this._mouseService),this.viewport=this._instantiationService.createInstance(c.Viewport,(function(e){return t.scrollLines(e,!0,1)}),this._viewportElement,this._viewportScrollArea,this.element),this.viewport.onThemeChange(this._colorManager.colors),this.register(this._inputHandler.onRequestSyncScrollBar((function(){return t.viewport.syncScrollArea()}))),this.register(this.viewport),this.register(this.onCursorMove((function(){t._renderService.onCursorMove(),t._syncTextArea()}))),this.register(this.onResize((function(){return t._renderService.onResize(t.cols,t.rows)}))),this.register(this.onBlur((function(){return t._renderService.onBlur()}))),this.register(this.onFocus((function(){return t._renderService.onFocus()}))),this.register(this._renderService.onDimensionsChange((function(){return t.viewport.syncScrollArea()}))),this._selectionService=this.register(this._instantiationService.createInstance(_.SelectionService,this.element,this.screenElement,this.linkifier2)),this._instantiationService.setService(E.ISelectionService,this._selectionService),this.register(this._selectionService.onRequestScrollLines((function(e){return t.scrollLines(e.amount,e.suppressScrollEvent)}))),this.register(this._selectionService.onSelectionChange((function(){return t._onSelectionChange.fire()}))),this.register(this._selectionService.onRequestRedraw((function(e){return t._renderService.onSelectionChanged(e.start,e.end,e.columnSelectMode)}))),this.register(this._selectionService.onLinuxMouseSelection((function(e){t.textarea.value=e,t.textarea.focus(),t.textarea.select()}))),this.register(this._onScroll.event((function(e){t.viewport.syncScrollArea(),t._selectionService.refresh()}))),this.register((0,g.addDisposableDomListener)(this._viewportElement,"scroll",(function(){return t._selectionService.refresh()}))),this._mouseZoneManager=this._instantiationService.createInstance(A.MouseZoneManager,this.element,this.screenElement),this.register(this._mouseZoneManager),this.register(this.onScroll((function(){return t._mouseZoneManager.clearAll()}))),this.linkifier.attachToDom(this.element,this._mouseZoneManager),this.linkifier2.attachToDom(this.screenElement,this._mouseService,this._renderService),this.register(this._instantiationService.createInstance(P.BufferDecorationRenderer,this.screenElement)),this.register((0,g.addDisposableDomListener)(this.element,"mousedown",(function(e){return t._selectionService.onMouseDown(e)}))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add("enable-mouse-events")):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager=new y.AccessibilityManager(this,this._renderService)),this.options.overviewRulerWidth&&(this._overviewRulerRenderer=this._instantiationService.createInstance(F.OverviewRulerRenderer,this._viewportElement,this.screenElement)),this.optionsService.onOptionChange((function(){!t._overviewRulerRenderer&&t.options.overviewRulerWidth&&t._viewportElement&&t.screenElement&&(t._overviewRulerRenderer=t._instantiationService.createInstance(F.OverviewRulerRenderer,t._viewportElement,t.screenElement))})),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()},t.prototype._createRenderer=function(){switch(this.options.rendererType){case"canvas":return this._instantiationService.createInstance(f.Renderer,this._colorManager.colors,this.screenElement,this.linkifier,this.linkifier2);case"dom":return this._instantiationService.createInstance(C.DomRenderer,this._colorManager.colors,this.element,this.screenElement,this._viewportElement,this.linkifier,this.linkifier2);default:throw new Error('Unrecognized rendererType "'+this.options.rendererType+'"')}},t.prototype._setTheme=function(e){var t,r,n;this._theme=e,null===(t=this._colorManager)||void 0===t||t.setTheme(e),null===(r=this._renderService)||void 0===r||r.setColors(this._colorManager.colors),null===(n=this.viewport)||void 0===n||n.onThemeChange(this._colorManager.colors)},t.prototype.bindMouse=function(){var e=this,t=this,r=this.element;function n(e){var r,n,i=t._mouseService.getRawByteCoords(e,t.screenElement,t.cols,t.rows);if(!i)return!1;switch(e.overrideType||e.type){case"mousemove":n=32,void 0===e.buttons?(r=3,void 0!==e.button&&(r=e.button<3?e.button:3)):r=1&e.buttons?0:4&e.buttons?1:2&e.buttons?2:3;break;case"mouseup":n=0,r=e.button<3?e.button:3;break;case"mousedown":n=1,r=e.button<3?e.button:3;break;case"wheel":if(0===t.viewport.getLinesScrolled(e))return!1;n=e.deltaY<0?0:1,r=4;break;default:return!1}return!(void 0===n||void 0===r||r>4)&&t.coreMouseService.triggerMouseEvent({col:i.x-33,row:i.y-33,button:r,action:n,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey})}var i={mouseup:null,wheel:null,mousedrag:null,mousemove:null},o=function(t){return n(t),t.buttons||(e._document.removeEventListener("mouseup",i.mouseup),i.mousedrag&&e._document.removeEventListener("mousemove",i.mousedrag)),e.cancel(t)},s=function(t){return n(t),e.cancel(t,!0)},a=function(e){e.buttons&&n(e)},l=function(e){e.buttons||n(e)};this.register(this.coreMouseService.onProtocolChange((function(t){t?("debug"===e.optionsService.rawOptions.logLevel&&e._logService.debug("Binding to mouse events:",e.coreMouseService.explainEvents(t)),e.element.classList.add("enable-mouse-events"),e._selectionService.disable()):(e._logService.debug("Unbinding from mouse events."),e.element.classList.remove("enable-mouse-events"),e._selectionService.enable()),8&t?i.mousemove||(r.addEventListener("mousemove",l),i.mousemove=l):(r.removeEventListener("mousemove",i.mousemove),i.mousemove=null),16&t?i.wheel||(r.addEventListener("wheel",s,{passive:!1}),i.wheel=s):(r.removeEventListener("wheel",i.wheel),i.wheel=null),2&t?i.mouseup||(i.mouseup=o):(e._document.removeEventListener("mouseup",i.mouseup),i.mouseup=null),4&t?i.mousedrag||(i.mousedrag=a):(e._document.removeEventListener("mousemove",i.mousedrag),i.mousedrag=null)}))),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,g.addDisposableDomListener)(r,"mousedown",(function(t){if(t.preventDefault(),e.focus(),e.coreMouseService.areMouseEventsActive&&!e._selectionService.shouldForceSelection(t))return n(t),i.mouseup&&e._document.addEventListener("mouseup",i.mouseup),i.mousedrag&&e._document.addEventListener("mousemove",i.mousedrag),e.cancel(t)}))),this.register((0,g.addDisposableDomListener)(r,"wheel",(function(t){if(!i.wheel){if(!e.buffer.hasScrollback){var r=e.viewport.getLinesScrolled(t);if(0===r)return;for(var n=h.C0.ESC+(e.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(t.deltaY<0?"A":"B"),o="",s=0;s<Math.abs(r);s++)o+=n;return e.coreService.triggerDataEvent(o,!0),e.cancel(t,!0)}return e.viewport.onWheel(t)?e.cancel(t):void 0}}),{passive:!1})),this.register((0,g.addDisposableDomListener)(r,"touchstart",(function(t){if(!e.coreMouseService.areMouseEventsActive)return e.viewport.onTouchStart(t),e.cancel(t)}),{passive:!0})),this.register((0,g.addDisposableDomListener)(r,"touchmove",(function(t){if(!e.coreMouseService.areMouseEventsActive)return e.viewport.onTouchMove(t)?void 0:e.cancel(t)}),{passive:!1}))},t.prototype.refresh=function(e,t){var r;null===(r=this._renderService)||void 0===r||r.refreshRows(e,t)},t.prototype._queueLinkification=function(e,t){var r;null===(r=this.linkifier)||void 0===r||r.linkifyRows(e,t)},t.prototype.updateCursorStyle=function(e){var t;(null===(t=this._selectionService)||void 0===t?void 0:t.shouldColumnSelect(e))?this.element.classList.add("column-select"):this.element.classList.remove("column-select")},t.prototype._showCursor=function(){this.coreService.isCursorInitialized||(this.coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))},t.prototype.scrollLines=function(t,r,n){void 0===n&&(n=0),e.prototype.scrollLines.call(this,t,r,n),this.refresh(0,this.rows-1)},t.prototype.paste=function(e){(0,d.paste)(e,this.textarea,this.coreService)},t.prototype.attachCustomKeyEventHandler=function(e){this._customKeyEventHandler=e},t.prototype.registerLinkMatcher=function(e,t,r){var n=this.linkifier.registerLinkMatcher(e,t,r);return this.refresh(0,this.rows-1),n},t.prototype.deregisterLinkMatcher=function(e){this.linkifier.deregisterLinkMatcher(e)&&this.refresh(0,this.rows-1)},t.prototype.registerLinkProvider=function(e){return this.linkifier2.registerLinkProvider(e)},t.prototype.registerCharacterJoiner=function(e){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");var t=this._characterJoinerService.register(e);return this.refresh(0,this.rows-1),t},t.prototype.deregisterCharacterJoiner=function(e){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");this._characterJoinerService.deregister(e)&&this.refresh(0,this.rows-1)},Object.defineProperty(t.prototype,"markers",{get:function(){return this.buffer.markers},enumerable:!1,configurable:!0}),t.prototype.addMarker=function(e){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+e)},t.prototype.registerDecoration=function(e){return this._decorationService.registerDecoration(e)},t.prototype.hasSelection=function(){return!!this._selectionService&&this._selectionService.hasSelection},t.prototype.select=function(e,t,r){this._selectionService.setSelection(e,t,r)},t.prototype.getSelection=function(){return this._selectionService?this._selectionService.selectionText:""},t.prototype.getSelectionPosition=function(){if(this._selectionService&&this._selectionService.hasSelection)return{startColumn:this._selectionService.selectionStart[0],startRow:this._selectionService.selectionStart[1],endColumn:this._selectionService.selectionEnd[0],endRow:this._selectionService.selectionEnd[1]}},t.prototype.clearSelection=function(){var e;null===(e=this._selectionService)||void 0===e||e.clearSelection()},t.prototype.selectAll=function(){var e;null===(e=this._selectionService)||void 0===e||e.selectAll()},t.prototype.selectLines=function(e,t){var r;null===(r=this._selectionService)||void 0===r||r.selectLines(e,t)},t.prototype._keyDown=function(e){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))return!1;var t=this.browser.isMac&&this.options.macOptionIsMeta&&e.altKey;if(!t&&!this._compositionHelper.keydown(e))return this.buffer.ybase!==this.buffer.ydisp&&this._bufferService.scrollToBottom(),!1;t||"Dead"!==e.key&&"AltGraph"!==e.key||(this._unprocessedDeadKey=!0);var r=(0,w.evaluateKeyboardEvent)(e,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(e),3===r.type||2===r.type){var n=this.rows-1;return this.scrollLines(2===r.type?-n:n),this.cancel(e,!0)}return 1===r.type&&this.selectAll(),!!this._isThirdLevelShift(this.browser,e)||(r.cancel&&this.cancel(e,!0),!r.key||!!(e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&1===e.key.length&&e.key.charCodeAt(0)>=65&&e.key.charCodeAt(0)<=90)||(this._unprocessedDeadKey?(this._unprocessedDeadKey=!1,!0):(r.key!==h.C0.ETX&&r.key!==h.C0.CR||(this.textarea.value=""),this._onKey.fire({key:r.key,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(r.key,!0),this.optionsService.rawOptions.screenReaderMode?void(this._keyDownHandled=!0):this.cancel(e,!0))))},t.prototype._isThirdLevelShift=function(e,t){var r=e.isMac&&!this.options.macOptionIsMeta&&t.altKey&&!t.ctrlKey&&!t.metaKey||e.isWindows&&t.altKey&&t.ctrlKey&&!t.metaKey||e.isWindows&&t.getModifierState("AltGraph");return"keypress"===t.type?r:r&&(!t.keyCode||t.keyCode>47)},t.prototype._keyUp=function(e){this._keyDownSeen=!1,this._customKeyEventHandler&&!1===this._customKeyEventHandler(e)||(function(e){return 16===e.keyCode||17===e.keyCode||18===e.keyCode}(e)||this.focus(),this.updateCursorStyle(e),this._keyPressHandled=!1)},t.prototype._keyPress=function(e){var t;if(this._keyPressHandled=!1,this._keyDownHandled)return!1;if(this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))return!1;if(this.cancel(e),e.charCode)t=e.charCode;else if(null===e.which||void 0===e.which)t=e.keyCode;else{if(0===e.which||0===e.charCode)return!1;t=e.which}return!(!t||(e.altKey||e.ctrlKey||e.metaKey)&&!this._isThirdLevelShift(this.browser,e)||(t=String.fromCharCode(t),this._onKey.fire({key:t,domEvent:e}),this._showCursor(),this.coreService.triggerDataEvent(t,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))},t.prototype._inputEvent=function(e){if(e.data&&"insertText"===e.inputType&&(!e.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;var t=e.data;return this.coreService.triggerDataEvent(t,!0),this.cancel(e),!0}return!1},t.prototype.bell=function(){var e;this._soundBell()&&(null===(e=this._soundService)||void 0===e||e.playBellSound()),this._onBell.fire()},t.prototype.resize=function(t,r){t!==this.cols||r!==this.rows?e.prototype.resize.call(this,t,r):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()},t.prototype._afterResize=function(e,t){var r,n;null===(r=this._charSizeService)||void 0===r||r.measure(),null===(n=this.viewport)||void 0===n||n.syncScrollArea(!0)},t.prototype.clear=function(){if(0!==this.buffer.ybase||0!==this.buffer.y){this.buffer.clearAllMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(var e=1;e<this.rows;e++)this.buffer.lines.push(this.buffer.getBlankLine(S.DEFAULT_ATTR_DATA));this.refresh(0,this.rows-1),this._onScroll.fire({position:this.buffer.ydisp,source:0})}},t.prototype.reset=function(){var t,r;this.options.rows=this.rows,this.options.cols=this.cols;var n=this._customKeyEventHandler;this._setup(),e.prototype.reset.call(this),null===(t=this._selectionService)||void 0===t||t.reset(),this._decorationService.reset(),this._customKeyEventHandler=n,this.refresh(0,this.rows-1),null===(r=this.viewport)||void 0===r||r.syncScrollArea()},t.prototype.clearTextureAtlas=function(){var e;null===(e=this._renderService)||void 0===e||e.clearTextureAtlas()},t.prototype._reportFocus=function(){var e;(null===(e=this.element)||void 0===e?void 0:e.classList.contains("focus"))?this.coreService.triggerDataEvent(h.C0.ESC+"[I"):this.coreService.triggerDataEvent(h.C0.ESC+"[O")},t.prototype._reportWindowsOptions=function(e){if(this._renderService)switch(e){case u.WindowsOptionsReportType.GET_WIN_SIZE_PIXELS:var t=this._renderService.dimensions.scaledCanvasWidth.toFixed(0),r=this._renderService.dimensions.scaledCanvasHeight.toFixed(0);this.coreService.triggerDataEvent(h.C0.ESC+"[4;"+r+";"+t+"t");break;case u.WindowsOptionsReportType.GET_CELL_SIZE_PIXELS:var n=this._renderService.dimensions.scaledCellWidth.toFixed(0),i=this._renderService.dimensions.scaledCellHeight.toFixed(0);this.coreService.triggerDataEvent(h.C0.ESC+"[6;"+i+";"+n+"t")}},t.prototype.cancel=function(e,t){if(this.options.cancelEvents||t)return e.preventDefault(),e.stopPropagation(),!1},t.prototype._visualBell=function(){return!1},t.prototype._soundBell=function(){return"sound"===this.options.bellStyle},t}(M.CoreTerminal);t.Terminal=N},9924:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TimeBasedDebouncer=void 0;var r=function(){function e(e,t){void 0===t&&(t=1e3),this._renderCallback=e,this._debounceThresholdMS=t,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}return e.prototype.dispose=function(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)},e.prototype.refresh=function(e,t,r){var n=this;this._rowCount=r,e=void 0!==e?e:0,t=void 0!==t?t:this._rowCount-1,this._rowStart=void 0!==this._rowStart?Math.min(this._rowStart,e):e,this._rowEnd=void 0!==this._rowEnd?Math.max(this._rowEnd,t):t;var i=Date.now();if(i-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=i,this._innerRefresh();else if(!this._additionalRefreshRequested){var o=i-this._lastRefreshMs,s=this._debounceThresholdMS-o;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout((function(){n._lastRefreshMs=Date.now(),n._innerRefresh(),n._additionalRefreshRequested=!1,n._refreshTimeoutID=void 0}),s)}},e.prototype._innerRefresh=function(){if(void 0!==this._rowStart&&void 0!==this._rowEnd&&void 0!==this._rowCount){var e=Math.max(this._rowStart,0),t=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(e,t)}},e}();t.TimeBasedDebouncer=r},1680:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.Viewport=void 0;var a=r(844),l=r(3656),c=r(4725),d=r(2585),h=function(e){function t(t,r,n,i,o,s,a,c){var d=e.call(this)||this;return d._scrollLines=t,d._viewportElement=r,d._scrollArea=n,d._element=i,d._bufferService=o,d._optionsService=s,d._charSizeService=a,d._renderService=c,d.scrollBarWidth=0,d._currentRowHeight=0,d._currentScaledCellHeight=0,d._lastRecordedBufferLength=0,d._lastRecordedViewportHeight=0,d._lastRecordedBufferHeight=0,d._lastTouchY=0,d._lastScrollTop=0,d._wheelPartialScroll=0,d._refreshAnimationFrame=null,d._ignoreNextScrollEvent=!1,d.scrollBarWidth=d._viewportElement.offsetWidth-d._scrollArea.offsetWidth||15,d.register((0,l.addDisposableDomListener)(d._viewportElement,"scroll",d._onScroll.bind(d))),d._activeBuffer=d._bufferService.buffer,d.register(d._bufferService.buffers.onBufferActivate((function(e){return d._activeBuffer=e.activeBuffer}))),d._renderDimensions=d._renderService.dimensions,d.register(d._renderService.onDimensionsChange((function(e){return d._renderDimensions=e}))),setTimeout((function(){return d.syncScrollArea()}),0),d}return i(t,e),t.prototype.onThemeChange=function(e){this._viewportElement.style.backgroundColor=e.background.css},t.prototype._refresh=function(e){var t=this;if(e)return this._innerRefresh(),void(null!==this._refreshAnimationFrame&&cancelAnimationFrame(this._refreshAnimationFrame));null===this._refreshAnimationFrame&&(this._refreshAnimationFrame=requestAnimationFrame((function(){return t._innerRefresh()})))},t.prototype._innerRefresh=function(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderService.dimensions.scaledCellHeight/window.devicePixelRatio,this._currentScaledCellHeight=this._renderService.dimensions.scaledCellHeight,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;var e=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.canvasHeight);this._lastRecordedBufferHeight!==e&&(this._lastRecordedBufferHeight=e,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}var t=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==t&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=t),this._refreshAnimationFrame=null},t.prototype.syncScrollArea=function(e){if(void 0===e&&(e=!1),this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(e);this._lastRecordedViewportHeight===this._renderService.dimensions.canvasHeight&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.scaledCellHeight===this._currentScaledCellHeight||this._refresh(e)},t.prototype._onScroll=function(e){if(this._lastScrollTop=this._viewportElement.scrollTop,this._viewportElement.offsetParent){if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._scrollLines(0);var t=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._scrollLines(t)}},t.prototype._bubbleScroll=function(e,t){var r=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(t<0&&0!==this._viewportElement.scrollTop||t>0&&r<this._lastRecordedBufferHeight)||(e.cancelable&&e.preventDefault(),!1)},t.prototype.onWheel=function(e){var t=this._getPixelsScrolled(e);return 0!==t&&(this._viewportElement.scrollTop+=t,this._bubbleScroll(e,t))},t.prototype._getPixelsScrolled=function(e){if(0===e.deltaY||e.shiftKey)return 0;var t=this._applyScrollModifier(e.deltaY,e);return e.deltaMode===WheelEvent.DOM_DELTA_LINE?t*=this._currentRowHeight:e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t*=this._currentRowHeight*this._bufferService.rows),t},t.prototype.getLinesScrolled=function(e){if(0===e.deltaY||e.shiftKey)return 0;var t=this._applyScrollModifier(e.deltaY,e);return e.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(t/=this._currentRowHeight+0,this._wheelPartialScroll+=t,t=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t*=this._bufferService.rows),t},t.prototype._applyScrollModifier=function(e,t){var r=this._optionsService.rawOptions.fastScrollModifier;return"alt"===r&&t.altKey||"ctrl"===r&&t.ctrlKey||"shift"===r&&t.shiftKey?e*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:e*this._optionsService.rawOptions.scrollSensitivity},t.prototype.onTouchStart=function(e){this._lastTouchY=e.touches[0].pageY},t.prototype.onTouchMove=function(e){var t=this._lastTouchY-e.touches[0].pageY;return this._lastTouchY=e.touches[0].pageY,0!==t&&(this._viewportElement.scrollTop+=t,this._bubbleScroll(e,t))},o([s(4,d.IBufferService),s(5,d.IOptionsService),s(6,c.ICharSizeService),s(7,c.IRenderService)],t)}(a.Disposable);t.Viewport=h},3107:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.BufferDecorationRenderer=void 0;var l=r(3656),c=r(4725),d=r(844),h=r(2585),u=function(e){function t(t,r,n,i){var o=e.call(this)||this;return o._screenElement=t,o._bufferService=r,o._decorationService=n,o._renderService=i,o._decorationElements=new Map,o._altBufferIsActive=!1,o._dimensionsChanged=!1,o._container=document.createElement("div"),o._container.classList.add("xterm-decoration-container"),o._screenElement.appendChild(o._container),o.register(o._renderService.onRenderedViewportChange((function(){return o._queueRefresh()}))),o.register(o._renderService.onDimensionsChange((function(){o._dimensionsChanged=!0,o._queueRefresh()}))),o.register((0,l.addDisposableDomListener)(window,"resize",(function(){return o._queueRefresh()}))),o.register(o._bufferService.buffers.onBufferActivate((function(){o._altBufferIsActive=o._bufferService.buffer===o._bufferService.buffers.alt}))),o.register(o._decorationService.onDecorationRegistered((function(){return o._queueRefresh()}))),o.register(o._decorationService.onDecorationRemoved((function(e){return o._removeDecoration(e)}))),o}return i(t,e),t.prototype.dispose=function(){this._container.remove(),this._decorationElements.clear(),e.prototype.dispose.call(this)},t.prototype._queueRefresh=function(){var e=this;void 0===this._animationFrame&&(this._animationFrame=this._renderService.addRefreshCallback((function(){e.refreshDecorations(),e._animationFrame=void 0})))},t.prototype.refreshDecorations=function(){var e,t;try{for(var r=a(this._decorationService.decorations),n=r.next();!n.done;n=r.next()){var i=n.value;this._renderDecoration(i)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this._dimensionsChanged=!1},t.prototype._renderDecoration=function(e){this._refreshStyle(e),this._dimensionsChanged&&this._refreshXPosition(e)},t.prototype._createElement=function(e){var t,r=document.createElement("div");r.classList.add("xterm-decoration"),r.style.width=Math.round((e.options.width||1)*this._renderService.dimensions.actualCellWidth)+"px",r.style.height=(e.options.height||1)*this._renderService.dimensions.actualCellHeight+"px",r.style.top=(e.marker.line-this._bufferService.buffers.active.ydisp)*this._renderService.dimensions.actualCellHeight+"px",r.style.lineHeight=this._renderService.dimensions.actualCellHeight+"px";var n=null!==(t=e.options.x)&&void 0!==t?t:0;return n&&n>this._bufferService.cols&&(r.style.display="none"),this._refreshXPosition(e,r),r},t.prototype._refreshStyle=function(e){var t=this,r=e.marker.line-this._bufferService.buffers.active.ydisp;if(r<0||r>=this._bufferService.rows)e.element&&(e.element.style.display="none",e.onRenderEmitter.fire(e.element));else{var n=this._decorationElements.get(e);n||(e.onDispose((function(){return t._removeDecoration(e)})),n=this._createElement(e),e.element=n,this._decorationElements.set(e,n),this._container.appendChild(n)),n.style.top=r*this._renderService.dimensions.actualCellHeight+"px",n.style.display=this._altBufferIsActive?"none":"block",e.onRenderEmitter.fire(n)}},t.prototype._refreshXPosition=function(e,t){var r;if(void 0===t&&(t=e.element),t){var n=null!==(r=e.options.x)&&void 0!==r?r:0;"right"===(e.options.anchor||"left")?t.style.right=n?n*this._renderService.dimensions.actualCellWidth+"px":"":t.style.left=n?n*this._renderService.dimensions.actualCellWidth+"px":""}},t.prototype._removeDecoration=function(e){var t;null===(t=this._decorationElements.get(e))||void 0===t||t.remove(),this._decorationElements.delete(e)},o([s(1,h.IBufferService),s(2,h.IDecorationService),s(3,c.IRenderService)],t)}(d.Disposable);t.BufferDecorationRenderer=u},5871:function(e,t){var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.ColorZoneStore=void 0;var n=function(){function e(){this._zones=[],this._zonePool=[],this._zonePoolIndex=0,this._linePadding={full:0,left:0,center:0,right:0}}return Object.defineProperty(e.prototype,"zones",{get:function(){return this._zonePool.length=Math.min(this._zonePool.length,this._zones.length),this._zones},enumerable:!1,configurable:!0}),e.prototype.clear=function(){this._zones.length=0,this._zonePoolIndex=0},e.prototype.addDecoration=function(e){var t,n;if(e.options.overviewRulerOptions){try{for(var i=r(this._zones),o=i.next();!o.done;o=i.next()){var s=o.value;if(s.color===e.options.overviewRulerOptions.color&&s.position===e.options.overviewRulerOptions.position){if(this._lineIntersectsZone(s,e.marker.line))return;if(this._lineAdjacentToZone(s,e.marker.line,e.options.overviewRulerOptions.position))return void this._addLineToZone(s,e.marker.line)}}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}if(this._zonePoolIndex<this._zonePool.length)return this._zonePool[this._zonePoolIndex].color=e.options.overviewRulerOptions.color,this._zonePool[this._zonePoolIndex].position=e.options.overviewRulerOptions.position,this._zonePool[this._zonePoolIndex].startBufferLine=e.marker.line,this._zonePool[this._zonePoolIndex].endBufferLine=e.marker.line,void this._zones.push(this._zonePool[this._zonePoolIndex++]);this._zones.push({color:e.options.overviewRulerOptions.color,position:e.options.overviewRulerOptions.position,startBufferLine:e.marker.line,endBufferLine:e.marker.line}),this._zonePool.push(this._zones[this._zones.length-1]),this._zonePoolIndex++}},e.prototype.setPadding=function(e){this._linePadding=e},e.prototype._lineIntersectsZone=function(e,t){return t>=e.startBufferLine&&t<=e.endBufferLine},e.prototype._lineAdjacentToZone=function(e,t,r){return t>=e.startBufferLine-this._linePadding[r||"full"]&&t<=e.endBufferLine+this._linePadding[r||"full"]},e.prototype._addLineToZone=function(e,t){e.startBufferLine=Math.min(e.startBufferLine,t),e.endBufferLine=Math.max(e.endBufferLine,t)},e}();t.ColorZoneStore=n},5744:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.OverviewRulerRenderer=void 0;var l=r(5871),c=r(3656),d=r(4725),h=r(844),u=r(2585),f={full:0,left:0,center:0,right:0},p={full:0,left:0,center:0,right:0},_={full:0,left:0,center:0,right:0},b=function(e){function t(t,r,n,i,o,s){var a,c=e.call(this)||this;c._viewportElement=t,c._screenElement=r,c._bufferService=n,c._decorationService=i,c._renderService=o,c._optionsService=s,c._colorZoneStore=new l.ColorZoneStore,c._shouldUpdateDimensions=!0,c._shouldUpdateAnchor=!0,c._lastKnownBufferLength=0,c._canvas=document.createElement("canvas"),c._canvas.classList.add("xterm-decoration-overview-ruler"),c._refreshCanvasDimensions(),null===(a=c._viewportElement.parentElement)||void 0===a||a.insertBefore(c._canvas,c._viewportElement);var d=c._canvas.getContext("2d");if(!d)throw new Error("Ctx cannot be null");return c._ctx=d,c._registerDecorationListeners(),c._registerBufferChangeListeners(),c._registerDimensionChangeListeners(),c}return i(t,e),Object.defineProperty(t.prototype,"_width",{get:function(){return this._optionsService.options.overviewRulerWidth||0},enumerable:!1,configurable:!0}),t.prototype._registerDecorationListeners=function(){var e=this;this.register(this._decorationService.onDecorationRegistered((function(){return e._queueRefresh(void 0,!0)}))),this.register(this._decorationService.onDecorationRemoved((function(){return e._queueRefresh(void 0,!0)})))},t.prototype._registerBufferChangeListeners=function(){var e=this;this.register(this._renderService.onRenderedViewportChange((function(){return e._queueRefresh()}))),this.register(this._bufferService.buffers.onBufferActivate((function(){e._canvas.style.display=e._bufferService.buffer===e._bufferService.buffers.alt?"none":"block"}))),this.register(this._bufferService.onScroll((function(){e._lastKnownBufferLength!==e._bufferService.buffers.normal.lines.length&&(e._refreshDrawHeightConstants(),e._refreshColorZonePadding())})))},t.prototype._registerDimensionChangeListeners=function(){var e=this;this.register(this._renderService.onRender((function(){e._containerHeight&&e._containerHeight===e._screenElement.clientHeight||(e._queueRefresh(!0),e._containerHeight=e._screenElement.clientHeight)}))),this.register(this._optionsService.onOptionChange((function(t){"overviewRulerWidth"===t&&e._queueRefresh(!0)}))),this.register((0,c.addDisposableDomListener)(window,"resize",(function(){e._queueRefresh(!0)}))),this._queueRefresh(!0)},t.prototype.dispose=function(){var t;null===(t=this._canvas)||void 0===t||t.remove(),e.prototype.dispose.call(this)},t.prototype._refreshDrawConstants=function(){var e=Math.floor(this._canvas.width/3),t=Math.ceil(this._canvas.width/3);p.full=this._canvas.width,p.left=e,p.center=t,p.right=e,this._refreshDrawHeightConstants(),_.full=0,_.left=0,_.center=p.left,_.right=p.left+p.center},t.prototype._refreshDrawHeightConstants=function(){f.full=Math.round(2*window.devicePixelRatio);var e=this._canvas.height/this._bufferService.buffer.lines.length,t=Math.round(Math.max(Math.min(e,12),6)*window.devicePixelRatio);f.left=t,f.center=t,f.right=t},t.prototype._refreshColorZonePadding=function(){this._colorZoneStore.setPadding({full:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*f.full),left:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*f.left),center:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*f.center),right:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*f.right)}),this._lastKnownBufferLength=this._bufferService.buffers.normal.lines.length},t.prototype._refreshCanvasDimensions=function(){this._canvas.style.width=this._width+"px",this._canvas.width=Math.round(this._width*window.devicePixelRatio),this._canvas.style.height=this._screenElement.clientHeight+"px",this._canvas.height=Math.round(this._screenElement.clientHeight*window.devicePixelRatio),this._refreshDrawConstants(),this._refreshColorZonePadding()},t.prototype._refreshDecorations=function(){var e,t,r,n,i,o;this._shouldUpdateDimensions&&this._refreshCanvasDimensions(),this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height),this._colorZoneStore.clear();try{for(var s=a(this._decorationService.decorations),l=s.next();!l.done;l=s.next()){var c=l.value;this._colorZoneStore.addDecoration(c)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}this._ctx.lineWidth=1;var d=this._colorZoneStore.zones;try{for(var h=a(d),u=h.next();!u.done;u=h.next())"full"!==(_=u.value).position&&this._renderColorZone(_)}catch(e){r={error:e}}finally{try{u&&!u.done&&(n=h.return)&&n.call(h)}finally{if(r)throw r.error}}try{for(var f=a(d),p=f.next();!p.done;p=f.next()){var _;"full"===(_=p.value).position&&this._renderColorZone(_)}}catch(e){i={error:e}}finally{try{p&&!p.done&&(o=f.return)&&o.call(f)}finally{if(i)throw i.error}}this._shouldUpdateDimensions=!1,this._shouldUpdateAnchor=!1},t.prototype._renderColorZone=function(e){this._ctx.fillStyle=e.color,this._ctx.fillRect(_[e.position||"full"],Math.round((this._canvas.height-1)*(e.startBufferLine/this._bufferService.buffers.active.lines.length)-f[e.position||"full"]/2),p[e.position||"full"],Math.round((this._canvas.height-1)*((e.endBufferLine-e.startBufferLine)/this._bufferService.buffers.active.lines.length)+f[e.position||"full"]))},t.prototype._queueRefresh=function(e,t){var r=this;this._shouldUpdateDimensions=e||this._shouldUpdateDimensions,this._shouldUpdateAnchor=t||this._shouldUpdateAnchor,void 0===this._animationFrame&&(this._animationFrame=window.requestAnimationFrame((function(){r._refreshDecorations(),r._animationFrame=void 0})))},o([s(2,u.IBufferService),s(3,u.IDecorationService),s(4,d.IRenderService),s(5,u.IOptionsService)],t)}(h.Disposable);t.OverviewRulerRenderer=b},2950:function(e,t,r){var n=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},i=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CompositionHelper=void 0;var o=r(4725),s=r(2585),a=function(){function e(e,t,r,n,i,o){this._textarea=e,this._compositionView=t,this._bufferService=r,this._optionsService=n,this._coreService=i,this._renderService=o,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}return Object.defineProperty(e.prototype,"isComposing",{get:function(){return this._isComposing},enumerable:!1,configurable:!0}),e.prototype.compositionstart=function(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")},e.prototype.compositionupdate=function(e){var t=this;this._compositionView.textContent=e.data,this.updateCompositionElements(),setTimeout((function(){t._compositionPosition.end=t._textarea.value.length}),0)},e.prototype.compositionend=function(){this._finalizeComposition(!0)},e.prototype.keydown=function(e){if(this._isComposing||this._isSendingComposition){if(229===e.keyCode)return!1;if(16===e.keyCode||17===e.keyCode||18===e.keyCode)return!1;this._finalizeComposition(!1)}return 229!==e.keyCode||(this._handleAnyTextareaChanges(),!1)},e.prototype._finalizeComposition=function(e){var t=this;if(this._compositionView.classList.remove("active"),this._isComposing=!1,e){var r={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout((function(){var e;t._isSendingComposition&&(t._isSendingComposition=!1,r.start+=t._dataAlreadySent.length,(e=t._isComposing?t._textarea.value.substring(r.start,r.end):t._textarea.value.substring(r.start)).length>0&&t._coreService.triggerDataEvent(e,!0))}),0)}else{this._isSendingComposition=!1;var n=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(n,!0)}},e.prototype._handleAnyTextareaChanges=function(){var e=this,t=this._textarea.value;setTimeout((function(){if(!e._isComposing){var r=e._textarea.value.replace(t,"");r.length>0&&(e._dataAlreadySent=r,e._coreService.triggerDataEvent(r,!0))}}),0)},e.prototype.updateCompositionElements=function(e){var t=this;if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){var r=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),n=this._renderService.dimensions.actualCellHeight,i=this._bufferService.buffer.y*this._renderService.dimensions.actualCellHeight,o=r*this._renderService.dimensions.actualCellWidth;this._compositionView.style.left=o+"px",this._compositionView.style.top=i+"px",this._compositionView.style.height=n+"px",this._compositionView.style.lineHeight=n+"px",this._compositionView.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._compositionView.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var s=this._compositionView.getBoundingClientRect();this._textarea.style.left=o+"px",this._textarea.style.top=i+"px",this._textarea.style.width=Math.max(s.width,1)+"px",this._textarea.style.height=Math.max(s.height,1)+"px",this._textarea.style.lineHeight=s.height+"px"}e||setTimeout((function(){return t.updateCompositionElements(!0)}),0)}},n([i(2,s.IBufferService),i(3,s.IOptionsService),i(4,s.ICoreService),i(5,o.IRenderService)],e)}();t.CompositionHelper=a},9806:(e,t)=>{function r(e,t,r){var n=r.getBoundingClientRect(),i=e.getComputedStyle(r),o=parseInt(i.getPropertyValue("padding-left")),s=parseInt(i.getPropertyValue("padding-top"));return[t.clientX-n.left-o,t.clientY-n.top-s]}Object.defineProperty(t,"__esModule",{value:!0}),t.getRawByteCoords=t.getCoords=t.getCoordsRelativeToElement=void 0,t.getCoordsRelativeToElement=r,t.getCoords=function(e,t,n,i,o,s,a,l,c){if(s){var d=r(e,t,n);if(d)return d[0]=Math.ceil((d[0]+(c?a/2:0))/a),d[1]=Math.ceil(d[1]/l),d[0]=Math.min(Math.max(d[0],1),i+(c?1:0)),d[1]=Math.min(Math.max(d[1],1),o),d}},t.getRawByteCoords=function(e){if(e)return{x:e[0]+32,y:e[1]+32}}},9504:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.moveToCellSequence=void 0;var n=r(2584);function i(e,t,r,n){var i=e-o(r,e),a=t-o(r,t),d=Math.abs(i-a)-function(e,t,r){for(var n=0,i=e-o(r,e),a=t-o(r,t),l=0;l<Math.abs(i-a);l++){var c="A"===s(e,t)?-1:1,d=r.buffer.lines.get(i+c*l);(null==d?void 0:d.isWrapped)&&n++}return n}(e,t,r);return c(d,l(s(e,t),n))}function o(e,t){for(var r=0,n=e.buffer.lines.get(t),i=null==n?void 0:n.isWrapped;i&&t>=0&&t<e.rows;)r++,i=null==(n=e.buffer.lines.get(--t))?void 0:n.isWrapped;return r}function s(e,t){return e>t?"A":"B"}function a(e,t,r,n,i,o){for(var s=e,a=t,l="";s!==r||a!==n;)s+=i?1:-1,i&&s>o.cols-1?(l+=o.buffer.translateBufferLineToString(a,!1,e,s),s=0,e=0,a++):!i&&s<0&&(l+=o.buffer.translateBufferLineToString(a,!1,0,e+1),e=s=o.cols-1,a--);return l+o.buffer.translateBufferLineToString(a,!1,e,s)}function l(e,t){var r=t?"O":"[";return n.C0.ESC+r+e}function c(e,t){e=Math.floor(e);for(var r="",n=0;n<e;n++)r+=t;return r}t.moveToCellSequence=function(e,t,r,n){var s,d=r.buffer.x,h=r.buffer.y;if(!r.buffer.hasScrollback)return function(e,t,r,n,s,d){return 0===i(t,n,s,d).length?"":c(a(e,t,e,t-o(s,t),!1,s).length,l("D",d))}(d,h,0,t,r,n)+i(h,t,r,n)+function(e,t,r,n,s,d){var h;h=i(t,n,s,d).length>0?n-o(s,n):t;var u=n,f=function(e,t,r,n,s,a){var l;return l=i(r,n,s,a).length>0?n-o(s,n):t,e<r&&l<=n||e>=r&&l<n?"C":"D"}(e,t,r,n,s,d);return c(a(e,h,r,u,"C"===f,s).length,l(f,d))}(d,h,e,t,r,n);if(h===t)return s=d>e?"D":"C",c(Math.abs(d-e),l(s,n));s=h>t?"D":"C";var u=Math.abs(h-t);return c(function(e,t){return t.cols-e}(h>t?e:d,r)+(u-1)*r.cols+1+((h>t?d:e)-1),l(s,n))}},4389:function(e,t,r){var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},n.apply(this,arguments)},i=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.Terminal=void 0;var o=r(3236),s=r(9042),a=r(7975),l=r(7090),c=r(5741),d=r(8285),h=["cols","rows"],u=function(){function e(e){var t=this;this._core=new o.Terminal(e),this._addonManager=new c.AddonManager,this._publicOptions=n({},this._core.options);var r=function(e){return t._core.options[e]},i=function(e,r){t._checkReadonlyOptions(e),t._core.options[e]=r};for(var s in this._core.options){var a={get:r.bind(this,s),set:i.bind(this,s)};Object.defineProperty(this._publicOptions,s,a)}}return e.prototype._checkReadonlyOptions=function(e){if(h.includes(e))throw new Error('Option "'+e+'" can only be set in the constructor')},e.prototype._checkProposedApi=function(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")},Object.defineProperty(e.prototype,"onBell",{get:function(){return this._core.onBell},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onBinary",{get:function(){return this._core.onBinary},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onCursorMove",{get:function(){return this._core.onCursorMove},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onData",{get:function(){return this._core.onData},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onKey",{get:function(){return this._core.onKey},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onLineFeed",{get:function(){return this._core.onLineFeed},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onRender",{get:function(){return this._core.onRender},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onResize",{get:function(){return this._core.onResize},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onScroll",{get:function(){return this._core.onScroll},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onSelectionChange",{get:function(){return this._core.onSelectionChange},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onTitleChange",{get:function(){return this._core.onTitleChange},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onWriteParsed",{get:function(){return this._core.onWriteParsed},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"element",{get:function(){return this._core.element},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parser",{get:function(){return this._checkProposedApi(),this._parser||(this._parser=new a.ParserApi(this._core)),this._parser},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"unicode",{get:function(){return this._checkProposedApi(),new l.UnicodeApi(this._core)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"textarea",{get:function(){return this._core.textarea},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"rows",{get:function(){return this._core.rows},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"cols",{get:function(){return this._core.cols},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"buffer",{get:function(){return this._checkProposedApi(),this._buffer||(this._buffer=new d.BufferNamespaceApi(this._core)),this._buffer},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"markers",{get:function(){return this._checkProposedApi(),this._core.markers},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modes",{get:function(){var e=this._core.coreService.decPrivateModes,t="none";switch(this._core.coreMouseService.activeProtocol){case"X10":t="x10";break;case"VT200":t="vt200";break;case"DRAG":t="drag";break;case"ANY":t="any"}return{applicationCursorKeysMode:e.applicationCursorKeys,applicationKeypadMode:e.applicationKeypad,bracketedPasteMode:e.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:t,originMode:e.origin,reverseWraparoundMode:e.reverseWraparound,sendFocusMode:e.sendFocus,wraparoundMode:e.wraparound}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"options",{get:function(){return this._publicOptions},set:function(e){for(var t in e)this._publicOptions[t]=e[t]},enumerable:!1,configurable:!0}),e.prototype.blur=function(){this._core.blur()},e.prototype.focus=function(){this._core.focus()},e.prototype.resize=function(e,t){this._verifyIntegers(e,t),this._core.resize(e,t)},e.prototype.open=function(e){this._core.open(e)},e.prototype.attachCustomKeyEventHandler=function(e){this._core.attachCustomKeyEventHandler(e)},e.prototype.registerLinkMatcher=function(e,t,r){return this._checkProposedApi(),this._core.registerLinkMatcher(e,t,r)},e.prototype.deregisterLinkMatcher=function(e){this._checkProposedApi(),this._core.deregisterLinkMatcher(e)},e.prototype.registerLinkProvider=function(e){return this._checkProposedApi(),this._core.registerLinkProvider(e)},e.prototype.registerCharacterJoiner=function(e){return this._checkProposedApi(),this._core.registerCharacterJoiner(e)},e.prototype.deregisterCharacterJoiner=function(e){this._checkProposedApi(),this._core.deregisterCharacterJoiner(e)},e.prototype.registerMarker=function(e){return void 0===e&&(e=0),this._checkProposedApi(),this._verifyIntegers(e),this._core.addMarker(e)},e.prototype.registerDecoration=function(e){var t,r,n;return this._checkProposedApi(),this._verifyPositiveIntegers(null!==(t=e.x)&&void 0!==t?t:0,null!==(r=e.width)&&void 0!==r?r:0,null!==(n=e.height)&&void 0!==n?n:0),this._core.registerDecoration(e)},e.prototype.addMarker=function(e){return this.registerMarker(e)},e.prototype.hasSelection=function(){return this._core.hasSelection()},e.prototype.select=function(e,t,r){this._verifyIntegers(e,t,r),this._core.select(e,t,r)},e.prototype.getSelection=function(){return this._core.getSelection()},e.prototype.getSelectionPosition=function(){return this._core.getSelectionPosition()},e.prototype.clearSelection=function(){this._core.clearSelection()},e.prototype.selectAll=function(){this._core.selectAll()},e.prototype.selectLines=function(e,t){this._verifyIntegers(e,t),this._core.selectLines(e,t)},e.prototype.dispose=function(){this._addonManager.dispose(),this._core.dispose()},e.prototype.scrollLines=function(e){this._verifyIntegers(e),this._core.scrollLines(e)},e.prototype.scrollPages=function(e){this._verifyIntegers(e),this._core.scrollPages(e)},e.prototype.scrollToTop=function(){this._core.scrollToTop()},e.prototype.scrollToBottom=function(){this._core.scrollToBottom()},e.prototype.scrollToLine=function(e){this._verifyIntegers(e),this._core.scrollToLine(e)},e.prototype.clear=function(){this._core.clear()},e.prototype.write=function(e,t){this._core.write(e,t)},e.prototype.writeUtf8=function(e,t){this._core.write(e,t)},e.prototype.writeln=function(e,t){this._core.write(e),this._core.write("\r\n",t)},e.prototype.paste=function(e){this._core.paste(e)},e.prototype.getOption=function(e){return this._core.optionsService.getOption(e)},e.prototype.setOption=function(e,t){this._checkReadonlyOptions(e),this._core.optionsService.setOption(e,t)},e.prototype.refresh=function(e,t){this._verifyIntegers(e,t),this._core.refresh(e,t)},e.prototype.reset=function(){this._core.reset()},e.prototype.clearTextureAtlas=function(){this._core.clearTextureAtlas()},e.prototype.loadAddon=function(e){return this._addonManager.loadAddon(this,e)},Object.defineProperty(e,"strings",{get:function(){return s},enumerable:!1,configurable:!0}),e.prototype._verifyIntegers=function(){for(var e,t,r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];try{for(var o=i(r),s=o.next();!s.done;s=o.next()){var a=s.value;if(a===1/0||isNaN(a)||a%1!=0)throw new Error("This API only accepts integers")}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}},e.prototype._verifyPositiveIntegers=function(){for(var e,t,r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];try{for(var o=i(r),s=o.next();!s.done;s=o.next()){var a=s.value;if(a&&(a===1/0||isNaN(a)||a%1!=0||a<0))throw new Error("This API only accepts positive integers")}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}},e}();t.Terminal=u},1546:function(e,t,r){var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseRenderLayer=void 0;var i=r(643),o=r(8803),s=r(1420),a=r(3734),l=r(1752),c=r(8055),d=r(9631),h=r(8978),u=function(){function e(e,t,r,n,i,o,s,a,l){this._container=e,this._alpha=n,this._colors=i,this._rendererId=o,this._bufferService=s,this._optionsService=a,this._decorationService=l,this._scaledCharWidth=0,this._scaledCharHeight=0,this._scaledCellWidth=0,this._scaledCellHeight=0,this._scaledCharLeft=0,this._scaledCharTop=0,this._columnSelectMode=!1,this._currentGlyphIdentifier={chars:"",code:0,bg:0,fg:0,bold:!1,dim:!1,italic:!1},this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-"+t+"-layer"),this._canvas.style.zIndex=r.toString(),this._initCanvas(),this._container.appendChild(this._canvas)}return e.prototype.dispose=function(){var e;(0,d.removeElementFromParent)(this._canvas),null===(e=this._charAtlas)||void 0===e||e.dispose()},e.prototype._initCanvas=function(){this._ctx=(0,l.throwIfFalsy)(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()},e.prototype.onOptionsChanged=function(){},e.prototype.onBlur=function(){},e.prototype.onFocus=function(){},e.prototype.onCursorMove=function(){},e.prototype.onGridChanged=function(e,t){},e.prototype.onSelectionChanged=function(e,t,r){void 0===r&&(r=!1),this._selectionStart=e,this._selectionEnd=t,this._columnSelectMode=r},e.prototype.setColors=function(e){this._refreshCharAtlas(e)},e.prototype._setTransparency=function(e){if(e!==this._alpha){var t=this._canvas;this._alpha=e,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,t),this._refreshCharAtlas(this._colors),this.onGridChanged(0,this._bufferService.rows-1)}},e.prototype._refreshCharAtlas=function(e){this._scaledCharWidth<=0&&this._scaledCharHeight<=0||(this._charAtlas=(0,s.acquireCharAtlas)(this._optionsService.rawOptions,this._rendererId,e,this._scaledCharWidth,this._scaledCharHeight),this._charAtlas.warmUp())},e.prototype.resize=function(e){this._scaledCellWidth=e.scaledCellWidth,this._scaledCellHeight=e.scaledCellHeight,this._scaledCharWidth=e.scaledCharWidth,this._scaledCharHeight=e.scaledCharHeight,this._scaledCharLeft=e.scaledCharLeft,this._scaledCharTop=e.scaledCharTop,this._canvas.width=e.scaledCanvasWidth,this._canvas.height=e.scaledCanvasHeight,this._canvas.style.width=e.canvasWidth+"px",this._canvas.style.height=e.canvasHeight+"px",this._alpha||this._clearAll(),this._refreshCharAtlas(this._colors)},e.prototype.clearTextureAtlas=function(){var e;null===(e=this._charAtlas)||void 0===e||e.clear()},e.prototype._fillCells=function(e,t,r,n){this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,r*this._scaledCellWidth,n*this._scaledCellHeight)},e.prototype._fillMiddleLineAtCells=function(e,t,r){void 0===r&&(r=1);var n=Math.ceil(.5*this._scaledCellHeight);this._ctx.fillRect(e*this._scaledCellWidth,(t+1)*this._scaledCellHeight-n-window.devicePixelRatio,r*this._scaledCellWidth,window.devicePixelRatio)},e.prototype._fillBottomLineAtCells=function(e,t,r){void 0===r&&(r=1),this._ctx.fillRect(e*this._scaledCellWidth,(t+1)*this._scaledCellHeight-window.devicePixelRatio-1,r*this._scaledCellWidth,window.devicePixelRatio)},e.prototype._fillLeftLineAtCell=function(e,t,r){this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,window.devicePixelRatio*r,this._scaledCellHeight)},e.prototype._strokeRectAtCell=function(e,t,r,n){this._ctx.lineWidth=window.devicePixelRatio,this._ctx.strokeRect(e*this._scaledCellWidth+window.devicePixelRatio/2,t*this._scaledCellHeight+window.devicePixelRatio/2,r*this._scaledCellWidth-window.devicePixelRatio,n*this._scaledCellHeight-window.devicePixelRatio)},e.prototype._clearAll=function(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))},e.prototype._clearCells=function(e,t,r,n){this._alpha?this._ctx.clearRect(e*this._scaledCellWidth,t*this._scaledCellHeight,r*this._scaledCellWidth,n*this._scaledCellHeight):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,r*this._scaledCellWidth,n*this._scaledCellHeight))},e.prototype._fillCharTrueColor=function(e,t,r){this._ctx.font=this._getFont(!1,!1),this._ctx.textBaseline=o.TEXT_BASELINE,this._clipRow(r);var n=!1;!1!==this._optionsService.rawOptions.customGlyphs&&(n=(0,h.tryDrawCustomChar)(this._ctx,e.getChars(),t*this._scaledCellWidth,r*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),n||this._ctx.fillText(e.getChars(),t*this._scaledCellWidth+this._scaledCharLeft,r*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight)},e.prototype._drawChars=function(e,t,r){var s,a,l,c=this._getContrastColor(e,t,r);if(c||e.isFgRGB()||e.isBgRGB())this._drawUncachedChars(e,t,r,c);else{var d,h;e.isInverse()?(d=e.isBgDefault()?o.INVERTED_DEFAULT_COLOR:e.getBgColor(),h=e.isFgDefault()?o.INVERTED_DEFAULT_COLOR:e.getFgColor()):(h=e.isBgDefault()?i.DEFAULT_COLOR:e.getBgColor(),d=e.isFgDefault()?i.DEFAULT_COLOR:e.getFgColor()),d+=this._optionsService.rawOptions.drawBoldTextInBrightColors&&e.isBold()&&d<8?8:0,this._currentGlyphIdentifier.chars=e.getChars()||i.WHITESPACE_CELL_CHAR,this._currentGlyphIdentifier.code=e.getCode()||i.WHITESPACE_CELL_CODE,this._currentGlyphIdentifier.bg=h,this._currentGlyphIdentifier.fg=d,this._currentGlyphIdentifier.bold=!!e.isBold(),this._currentGlyphIdentifier.dim=!!e.isDim(),this._currentGlyphIdentifier.italic=!!e.isItalic();var u=!1;try{for(var f=n(this._decorationService.getDecorationsAtCell(t,r)),p=f.next();!p.done;p=f.next()){var _=p.value;if(_.backgroundColorRGB||_.foregroundColorRGB){u=!0;break}}}catch(e){s={error:e}}finally{try{p&&!p.done&&(a=f.return)&&a.call(f)}finally{if(s)throw s.error}}!u&&(null===(l=this._charAtlas)||void 0===l?void 0:l.draw(this._ctx,this._currentGlyphIdentifier,t*this._scaledCellWidth+this._scaledCharLeft,r*this._scaledCellHeight+this._scaledCharTop))||this._drawUncachedChars(e,t,r)}},e.prototype._drawUncachedChars=function(e,t,r,n){if(this._ctx.save(),this._ctx.font=this._getFont(!!e.isBold(),!!e.isItalic()),this._ctx.textBaseline=o.TEXT_BASELINE,e.isInverse())if(n)this._ctx.fillStyle=n.css;else if(e.isBgDefault())this._ctx.fillStyle=c.color.opaque(this._colors.background).css;else if(e.isBgRGB())this._ctx.fillStyle="rgb("+a.AttributeData.toColorRGB(e.getBgColor()).join(",")+")";else{var i=e.getBgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&e.isBold()&&i<8&&(i+=8),this._ctx.fillStyle=this._colors.ansi[i].css}else if(n)this._ctx.fillStyle=n.css;else if(e.isFgDefault())this._ctx.fillStyle=this._colors.foreground.css;else if(e.isFgRGB())this._ctx.fillStyle="rgb("+a.AttributeData.toColorRGB(e.getFgColor()).join(",")+")";else{var s=e.getFgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&e.isBold()&&s<8&&(s+=8),this._ctx.fillStyle=this._colors.ansi[s].css}this._clipRow(r),e.isDim()&&(this._ctx.globalAlpha=o.DIM_OPACITY);var l=!1;!1!==this._optionsService.rawOptions.customGlyphs&&(l=(0,h.tryDrawCustomChar)(this._ctx,e.getChars(),t*this._scaledCellWidth,r*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),l||this._ctx.fillText(e.getChars(),t*this._scaledCellWidth+this._scaledCharLeft,r*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight),this._ctx.restore()},e.prototype._clipRow=function(e){this._ctx.beginPath(),this._ctx.rect(0,e*this._scaledCellHeight,this._bufferService.cols*this._scaledCellWidth,this._scaledCellHeight),this._ctx.clip()},e.prototype._getFont=function(e,t){return(t?"italic":"")+" "+(e?this._optionsService.rawOptions.fontWeightBold:this._optionsService.rawOptions.fontWeight)+" "+this._optionsService.rawOptions.fontSize*window.devicePixelRatio+"px "+this._optionsService.rawOptions.fontFamily},e.prototype._getContrastColor=function(e,t,r){var i,o,s,a,d=!1;try{for(var h=n(this._decorationService.getDecorationsAtCell(t,r)),u=h.next();!u.done;u=h.next()){var f=u.value;"top"!==f.options.layer&&d||(f.backgroundColorRGB&&(s=f.backgroundColorRGB.rgba),f.foregroundColorRGB&&(a=f.foregroundColorRGB.rgba),d="top"===f.options.layer)}}catch(e){i={error:e}}finally{try{u&&!u.done&&(o=h.return)&&o.call(h)}finally{if(i)throw i.error}}if(d||this._colors.selectionForeground&&this._isCellInSelection(t,r)&&(a=this._colors.selectionForeground.rgba),s||a||1!==this._optionsService.rawOptions.minimumContrastRatio&&!(0,l.excludeFromContrastRatioDemands)(e.getCode())){if(!s&&!a){var p=this._colors.contrastCache.getColor(e.bg,e.fg);if(void 0!==p)return p||void 0}var _=e.getFgColor(),b=e.getFgColorMode(),g=e.getBgColor(),m=e.getBgColorMode(),v=!!e.isInverse(),A=!!e.isInverse();if(v){var y=_;_=g,g=y;var C=b;b=m,m=C}var w=this._resolveBackgroundRgba(void 0!==s?50331648:m,null!=s?s:g,v),x=this._resolveForegroundRgba(b,_,v,A),S=c.rgba.ensureContrastRatio(null!=s?s:w,null!=a?a:x,this._optionsService.rawOptions.minimumContrastRatio);if(!S){if(!a)return void this._colors.contrastCache.setColor(e.bg,e.fg,null);S=a}var $={css:c.channels.toCss(S>>24&255,S>>16&255,S>>8&255),rgba:S};return s||a||this._colors.contrastCache.setColor(e.bg,e.fg,$),$}},e.prototype._resolveBackgroundRgba=function(e,t,r){switch(e){case 16777216:case 33554432:return this._colors.ansi[t].rgba;case 50331648:return t<<8;default:return r?this._colors.foreground.rgba:this._colors.background.rgba}},e.prototype._resolveForegroundRgba=function(e,t,r,n){switch(e){case 16777216:case 33554432:return this._optionsService.rawOptions.drawBoldTextInBrightColors&&n&&t<8&&(t+=8),this._colors.ansi[t].rgba;case 50331648:return t<<8;default:return r?this._colors.background.rgba:this._colors.foreground.rgba}},e.prototype._isCellInSelection=function(e,t){var r=this._selectionStart,n=this._selectionEnd;return!(!r||!n)&&(this._columnSelectMode?e>=r[0]&&t>=r[1]&&e<n[0]&&t<n[1]:t>r[1]&&t<n[1]||r[1]===n[1]&&t===r[1]&&e>=r[0]&&e<n[0]||r[1]<n[1]&&t===n[1]&&e<n[0]||r[1]<n[1]&&t===r[1]&&e>=r[0])},e}();t.BaseRenderLayer=u},2512:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CursorRenderLayer=void 0;var a=r(1546),l=r(511),c=r(2585),d=r(4725),h=600,u=function(e){function t(t,r,n,i,o,s,a,c,d,h){var u=e.call(this,t,"cursor",r,!0,n,i,s,a,h)||this;return u._onRequestRedraw=o,u._coreService=c,u._coreBrowserService=d,u._cell=new l.CellData,u._state={x:0,y:0,isFocused:!1,style:"",width:0},u._cursorRenderers={bar:u._renderBarCursor.bind(u),block:u._renderBlockCursor.bind(u),underline:u._renderUnderlineCursor.bind(u)},u}return i(t,e),t.prototype.dispose=function(){this._cursorBlinkStateManager&&(this._cursorBlinkStateManager.dispose(),this._cursorBlinkStateManager=void 0),e.prototype.dispose.call(this)},t.prototype.resize=function(t){e.prototype.resize.call(this,t),this._state={x:0,y:0,isFocused:!1,style:"",width:0}},t.prototype.reset=function(){var e;this._clearCursor(),null===(e=this._cursorBlinkStateManager)||void 0===e||e.restartBlinkAnimation(),this.onOptionsChanged()},t.prototype.onBlur=function(){var e;null===(e=this._cursorBlinkStateManager)||void 0===e||e.pause(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},t.prototype.onFocus=function(){var e;null===(e=this._cursorBlinkStateManager)||void 0===e||e.resume(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},t.prototype.onOptionsChanged=function(){var e,t=this;this._optionsService.rawOptions.cursorBlink?this._cursorBlinkStateManager||(this._cursorBlinkStateManager=new f(this._coreBrowserService.isFocused,(function(){t._render(!0)}))):(null===(e=this._cursorBlinkStateManager)||void 0===e||e.dispose(),this._cursorBlinkStateManager=void 0),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},t.prototype.onCursorMove=function(){var e;null===(e=this._cursorBlinkStateManager)||void 0===e||e.restartBlinkAnimation()},t.prototype.onGridChanged=function(e,t){!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isPaused?this._render(!1):this._cursorBlinkStateManager.restartBlinkAnimation()},t.prototype._render=function(e){if(this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden){var t=this._bufferService.buffer.ybase+this._bufferService.buffer.y,r=t-this._bufferService.buffer.ydisp;if(r<0||r>=this._bufferService.rows)this._clearCursor();else{var n=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1);if(this._bufferService.buffer.lines.get(t).loadCell(n,this._cell),void 0!==this._cell.content){if(!this._coreBrowserService.isFocused){this._clearCursor(),this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css;var i=this._optionsService.rawOptions.cursorStyle;return i&&"block"!==i?this._cursorRenderers[i](n,r,this._cell):this._renderBlurCursor(n,r,this._cell),this._ctx.restore(),this._state.x=n,this._state.y=r,this._state.isFocused=!1,this._state.style=i,void(this._state.width=this._cell.getWidth())}if(!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isCursorVisible){if(this._state){if(this._state.x===n&&this._state.y===r&&this._state.isFocused===this._coreBrowserService.isFocused&&this._state.style===this._optionsService.rawOptions.cursorStyle&&this._state.width===this._cell.getWidth())return;this._clearCursor()}this._ctx.save(),this._cursorRenderers[this._optionsService.rawOptions.cursorStyle||"block"](n,r,this._cell),this._ctx.restore(),this._state.x=n,this._state.y=r,this._state.isFocused=!1,this._state.style=this._optionsService.rawOptions.cursorStyle,this._state.width=this._cell.getWidth()}else this._clearCursor()}}}else this._clearCursor()},t.prototype._clearCursor=function(){this._state&&(window.devicePixelRatio<1?this._clearAll():this._clearCells(this._state.x,this._state.y,this._state.width,1),this._state={x:0,y:0,isFocused:!1,style:"",width:0})},t.prototype._renderBarCursor=function(e,t,r){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillLeftLineAtCell(e,t,this._optionsService.rawOptions.cursorWidth),this._ctx.restore()},t.prototype._renderBlockCursor=function(e,t,r){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillCells(e,t,r.getWidth(),1),this._ctx.fillStyle=this._colors.cursorAccent.css,this._fillCharTrueColor(r,e,t),this._ctx.restore()},t.prototype._renderUnderlineCursor=function(e,t,r){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillBottomLineAtCells(e,t),this._ctx.restore()},t.prototype._renderBlurCursor=function(e,t,r){this._ctx.save(),this._ctx.strokeStyle=this._colors.cursor.css,this._strokeRectAtCell(e,t,r.getWidth(),1),this._ctx.restore()},o([s(5,c.IBufferService),s(6,c.IOptionsService),s(7,c.ICoreService),s(8,d.ICoreBrowserService),s(9,c.IDecorationService)],t)}(a.BaseRenderLayer);t.CursorRenderLayer=u;var f=function(){function e(e,t){this._renderCallback=t,this.isCursorVisible=!0,e&&this._restartInterval()}return Object.defineProperty(e.prototype,"isPaused",{get:function(){return!(this._blinkStartTimeout||this._blinkInterval)},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},e.prototype.restartBlinkAnimation=function(){var e=this;this.isPaused||(this._animationTimeRestarted=Date.now(),this.isCursorVisible=!0,this._animationFrame||(this._animationFrame=window.requestAnimationFrame((function(){e._renderCallback(),e._animationFrame=void 0}))))},e.prototype._restartInterval=function(e){var t=this;void 0===e&&(e=h),this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout=window.setTimeout((function(){if(t._animationTimeRestarted){var e=h-(Date.now()-t._animationTimeRestarted);if(t._animationTimeRestarted=void 0,e>0)return void t._restartInterval(e)}t.isCursorVisible=!1,t._animationFrame=window.requestAnimationFrame((function(){t._renderCallback(),t._animationFrame=void 0})),t._blinkInterval=window.setInterval((function(){if(t._animationTimeRestarted){var e=h-(Date.now()-t._animationTimeRestarted);return t._animationTimeRestarted=void 0,void t._restartInterval(e)}t.isCursorVisible=!t.isCursorVisible,t._animationFrame=window.requestAnimationFrame((function(){t._renderCallback(),t._animationFrame=void 0}))}),h)}),e)},e.prototype.pause=function(){this.isCursorVisible=!0,this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},e.prototype.resume=function(){this.pause(),this._animationTimeRestarted=void 0,this._restartInterval(),this.restartBlinkAnimation()},e}()},8978:function(e,t,r){var n,i,o,s,a,l,c,d,h,u,f,p,_,b,g,m,v,A,y,C,w,x,S,$,k,E,B,L,R,D,M,O,T,I,P,F,H,j,z,N,U,W,q,G,V,K,Z,Y,X,J,Q,ee,te,re,ne,ie,oe,se,ae,le,ce,de,he,ue,fe,pe,_e,be,ge,me,ve,Ae,ye,Ce,we,xe,Se,$e,ke,Ee,Be,Le,Re,De,Me,Oe,Te,Ie,Pe,Fe,He,je,ze,Ne,Ue,We,qe,Ge,Ve,Ke,Ze,Ye,Xe,Je,Qe,et,tt,rt,nt,it,ot,st,at,lt,ct,dt,ht,ut,ft,pt,_t,bt,gt,mt,vt,At,yt,Ct,wt=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s},xt=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.tryDrawCustomChar=t.powerlineDefinitions=t.boxDrawingDefinitions=t.blockElementDefinitions=void 0;var St=r(1752);t.blockElementDefinitions={"▀":[{x:0,y:0,w:8,h:4}],"▁":[{x:0,y:7,w:8,h:1}],"▂":[{x:0,y:6,w:8,h:2}],"▃":[{x:0,y:5,w:8,h:3}],"▄":[{x:0,y:4,w:8,h:4}],"▅":[{x:0,y:3,w:8,h:5}],"▆":[{x:0,y:2,w:8,h:6}],"▇":[{x:0,y:1,w:8,h:7}],"█":[{x:0,y:0,w:8,h:8}],"▉":[{x:0,y:0,w:7,h:8}],"▊":[{x:0,y:0,w:6,h:8}],"▋":[{x:0,y:0,w:5,h:8}],"▌":[{x:0,y:0,w:4,h:8}],"▍":[{x:0,y:0,w:3,h:8}],"▎":[{x:0,y:0,w:2,h:8}],"▏":[{x:0,y:0,w:1,h:8}],"▐":[{x:4,y:0,w:4,h:8}],"▔":[{x:0,y:0,w:9,h:1}],"▕":[{x:7,y:0,w:1,h:8}],"▖":[{x:0,y:4,w:4,h:4}],"▗":[{x:4,y:4,w:4,h:4}],"▘":[{x:0,y:0,w:4,h:4}],"▙":[{x:0,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"▚":[{x:0,y:0,w:4,h:4},{x:4,y:4,w:4,h:4}],"▛":[{x:0,y:0,w:4,h:8},{x:0,y:0,w:4,h:8}],"▜":[{x:0,y:0,w:8,h:4},{x:4,y:0,w:4,h:8}],"▝":[{x:4,y:0,w:4,h:4}],"▞":[{x:4,y:0,w:4,h:4},{x:0,y:4,w:4,h:4}],"▟":[{x:4,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"🭰":[{x:1,y:0,w:1,h:8}],"🭱":[{x:2,y:0,w:1,h:8}],"🭲":[{x:3,y:0,w:1,h:8}],"🭳":[{x:4,y:0,w:1,h:8}],"🭴":[{x:5,y:0,w:1,h:8}],"🭵":[{x:6,y:0,w:1,h:8}],"🭶":[{x:0,y:1,w:8,h:1}],"🭷":[{x:0,y:2,w:8,h:1}],"🭸":[{x:0,y:3,w:8,h:1}],"🭹":[{x:0,y:4,w:8,h:1}],"🭺":[{x:0,y:5,w:8,h:1}],"🭻":[{x:0,y:6,w:8,h:1}],"🭼":[{x:0,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"🭽":[{x:0,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"🭾":[{x:7,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"🭿":[{x:7,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"🮀":[{x:0,y:0,w:8,h:1},{x:0,y:7,w:8,h:1}],"🮁":[{x:0,y:0,w:8,h:1},{x:0,y:2,w:8,h:1},{x:0,y:4,w:8,h:1},{x:0,y:7,w:8,h:1}],"🮂":[{x:0,y:0,w:8,h:2}],"🮃":[{x:0,y:0,w:8,h:3}],"🮄":[{x:0,y:0,w:8,h:5}],"🮅":[{x:0,y:0,w:8,h:6}],"🮆":[{x:0,y:0,w:8,h:7}],"🮇":[{x:6,y:0,w:2,h:8}],"🮈":[{x:5,y:0,w:3,h:8}],"🮉":[{x:3,y:0,w:5,h:8}],"🮊":[{x:2,y:0,w:6,h:8}],"🮋":[{x:1,y:0,w:7,h:8}],"🮕":[{x:0,y:0,w:2,h:2},{x:4,y:0,w:2,h:2},{x:2,y:2,w:2,h:2},{x:6,y:2,w:2,h:2},{x:0,y:4,w:2,h:2},{x:4,y:4,w:2,h:2},{x:2,y:6,w:2,h:2},{x:6,y:6,w:2,h:2}],"🮖":[{x:2,y:0,w:2,h:2},{x:6,y:0,w:2,h:2},{x:0,y:2,w:2,h:2},{x:4,y:2,w:2,h:2},{x:2,y:4,w:2,h:2},{x:6,y:4,w:2,h:2},{x:0,y:6,w:2,h:2},{x:4,y:6,w:2,h:2}],"🮗":[{x:0,y:2,w:8,h:2},{x:0,y:6,w:8,h:2}]};var $t={"░":[[1,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],"▒":[[1,0],[0,0],[0,1],[0,0]],"▓":[[0,1],[1,1],[1,0],[1,1]]};t.boxDrawingDefinitions={"─":(n={},n[1]="M0,.5 L1,.5",n),"━":(i={},i[3]="M0,.5 L1,.5",i),"│":(o={},o[1]="M.5,0 L.5,1",o),"┃":(s={},s[3]="M.5,0 L.5,1",s),"┌":(a={},a[1]="M0.5,1 L.5,.5 L1,.5",a),"┏":(l={},l[3]="M0.5,1 L.5,.5 L1,.5",l),"┐":(c={},c[1]="M0,.5 L.5,.5 L.5,1",c),"┓":(d={},d[3]="M0,.5 L.5,.5 L.5,1",d),"└":(h={},h[1]="M.5,0 L.5,.5 L1,.5",h),"┗":(u={},u[3]="M.5,0 L.5,.5 L1,.5",u),"┘":(f={},f[1]="M.5,0 L.5,.5 L0,.5",f),"┛":(p={},p[3]="M.5,0 L.5,.5 L0,.5",p),"├":(_={},_[1]="M.5,0 L.5,1 M.5,.5 L1,.5",_),"┣":(b={},b[3]="M.5,0 L.5,1 M.5,.5 L1,.5",b),"┤":(g={},g[1]="M.5,0 L.5,1 M.5,.5 L0,.5",g),"┫":(m={},m[3]="M.5,0 L.5,1 M.5,.5 L0,.5",m),"┬":(v={},v[1]="M0,.5 L1,.5 M.5,.5 L.5,1",v),"┳":(A={},A[3]="M0,.5 L1,.5 M.5,.5 L.5,1",A),"┴":(y={},y[1]="M0,.5 L1,.5 M.5,.5 L.5,0",y),"┻":(C={},C[3]="M0,.5 L1,.5 M.5,.5 L.5,0",C),"┼":(w={},w[1]="M0,.5 L1,.5 M.5,0 L.5,1",w),"╋":(x={},x[3]="M0,.5 L1,.5 M.5,0 L.5,1",x),"╴":(S={},S[1]="M.5,.5 L0,.5",S),"╸":($={},$[3]="M.5,.5 L0,.5",$),"╵":(k={},k[1]="M.5,.5 L.5,0",k),"╹":(E={},E[3]="M.5,.5 L.5,0",E),"╶":(B={},B[1]="M.5,.5 L1,.5",B),"╺":(L={},L[3]="M.5,.5 L1,.5",L),"╷":(R={},R[1]="M.5,.5 L.5,1",R),"╻":(D={},D[3]="M.5,.5 L.5,1",D),"═":(M={},M[1]=function(e,t){return"M0,"+(.5-t)+" L1,"+(.5-t)+" M0,"+(.5+t)+" L1,"+(.5+t)},M),"║":(O={},O[1]=function(e,t){return"M"+(.5-e)+",0 L"+(.5-e)+",1 M"+(.5+e)+",0 L"+(.5+e)+",1"},O),"╒":(T={},T[1]=function(e,t){return"M.5,1 L.5,"+(.5-t)+" L1,"+(.5-t)+" M.5,"+(.5+t)+" L1,"+(.5+t)},T),"╓":(I={},I[1]=function(e,t){return"M"+(.5-e)+",1 L"+(.5-e)+",.5 L1,.5 M"+(.5+e)+",.5 L"+(.5+e)+",1"},I),"╔":(P={},P[1]=function(e,t){return"M1,"+(.5-t)+" L"+(.5-e)+","+(.5-t)+" L"+(.5-e)+",1 M1,"+(.5+t)+" L"+(.5+e)+","+(.5+t)+" L"+(.5+e)+",1"},P),"╕":(F={},F[1]=function(e,t){return"M0,"+(.5-t)+" L.5,"+(.5-t)+" L.5,1 M0,"+(.5+t)+" L.5,"+(.5+t)},F),"╖":(H={},H[1]=function(e,t){return"M"+(.5+e)+",1 L"+(.5+e)+",.5 L0,.5 M"+(.5-e)+",.5 L"+(.5-e)+",1"},H),"╗":(j={},j[1]=function(e,t){return"M0,"+(.5+t)+" L"+(.5-e)+","+(.5+t)+" L"+(.5-e)+",1 M0,"+(.5-t)+" L"+(.5+e)+","+(.5-t)+" L"+(.5+e)+",1"},j),"╘":(z={},z[1]=function(e,t){return"M.5,0 L.5,"+(.5+t)+" L1,"+(.5+t)+" M.5,"+(.5-t)+" L1,"+(.5-t)},z),"╙":(N={},N[1]=function(e,t){return"M1,.5 L"+(.5-e)+",.5 L"+(.5-e)+",0 M"+(.5+e)+",.5 L"+(.5+e)+",0"},N),"╚":(U={},U[1]=function(e,t){return"M1,"+(.5-t)+" L"+(.5+e)+","+(.5-t)+" L"+(.5+e)+",0 M1,"+(.5+t)+" L"+(.5-e)+","+(.5+t)+" L"+(.5-e)+",0"},U),"╛":(W={},W[1]=function(e,t){return"M0,"+(.5+t)+" L.5,"+(.5+t)+" L.5,0 M0,"+(.5-t)+" L.5,"+(.5-t)},W),"╜":(q={},q[1]=function(e,t){return"M0,.5 L"+(.5+e)+",.5 L"+(.5+e)+",0 M"+(.5-e)+",.5 L"+(.5-e)+",0"},q),"╝":(G={},G[1]=function(e,t){return"M0,"+(.5-t)+" L"+(.5-e)+","+(.5-t)+" L"+(.5-e)+",0 M0,"+(.5+t)+" L"+(.5+e)+","+(.5+t)+" L"+(.5+e)+",0"},G),"╞":(V={},V[1]=function(e,t){return"M.5,0 L.5,1 M.5,"+(.5-t)+" L1,"+(.5-t)+" M.5,"+(.5+t)+" L1,"+(.5+t)},V),"╟":(K={},K[1]=function(e,t){return"M"+(.5-e)+",0 L"+(.5-e)+",1 M"+(.5+e)+",0 L"+(.5+e)+",1 M"+(.5+e)+",.5 L1,.5"},K),"╠":(Z={},Z[1]=function(e,t){return"M"+(.5-e)+",0 L"+(.5-e)+",1 M1,"+(.5+t)+" L"+(.5+e)+","+(.5+t)+" L"+(.5+e)+",1 M1,"+(.5-t)+" L"+(.5+e)+","+(.5-t)+" L"+(.5+e)+",0"},Z),"╡":(Y={},Y[1]=function(e,t){return"M.5,0 L.5,1 M0,"+(.5-t)+" L.5,"+(.5-t)+" M0,"+(.5+t)+" L.5,"+(.5+t)},Y),"╢":(X={},X[1]=function(e,t){return"M0,.5 L"+(.5-e)+",.5 M"+(.5-e)+",0 L"+(.5-e)+",1 M"+(.5+e)+",0 L"+(.5+e)+",1"},X),"╣":(J={},J[1]=function(e,t){return"M"+(.5+e)+",0 L"+(.5+e)+",1 M0,"+(.5+t)+" L"+(.5-e)+","+(.5+t)+" L"+(.5-e)+",1 M0,"+(.5-t)+" L"+(.5-e)+","+(.5-t)+" L"+(.5-e)+",0"},J),"╤":(Q={},Q[1]=function(e,t){return"M0,"+(.5-t)+" L1,"+(.5-t)+" M0,"+(.5+t)+" L1,"+(.5+t)+" M.5,"+(.5+t)+" L.5,1"},Q),"╥":(ee={},ee[1]=function(e,t){return"M0,.5 L1,.5 M"+(.5-e)+",.5 L"+(.5-e)+",1 M"+(.5+e)+",.5 L"+(.5+e)+",1"},ee),"╦":(te={},te[1]=function(e,t){return"M0,"+(.5-t)+" L1,"+(.5-t)+" M0,"+(.5+t)+" L"+(.5-e)+","+(.5+t)+" L"+(.5-e)+",1 M1,"+(.5+t)+" L"+(.5+e)+","+(.5+t)+" L"+(.5+e)+",1"},te),"╧":(re={},re[1]=function(e,t){return"M.5,0 L.5,"+(.5-t)+" M0,"+(.5-t)+" L1,"+(.5-t)+" M0,"+(.5+t)+" L1,"+(.5+t)},re),"╨":(ne={},ne[1]=function(e,t){return"M0,.5 L1,.5 M"+(.5-e)+",.5 L"+(.5-e)+",0 M"+(.5+e)+",.5 L"+(.5+e)+",0"},ne),"╩":(ie={},ie[1]=function(e,t){return"M0,"+(.5+t)+" L1,"+(.5+t)+" M0,"+(.5-t)+" L"+(.5-e)+","+(.5-t)+" L"+(.5-e)+",0 M1,"+(.5-t)+" L"+(.5+e)+","+(.5-t)+" L"+(.5+e)+",0"},ie),"╪":(oe={},oe[1]=function(e,t){return"M.5,0 L.5,1 M0,"+(.5-t)+" L1,"+(.5-t)+" M0,"+(.5+t)+" L1,"+(.5+t)},oe),"╫":(se={},se[1]=function(e,t){return"M0,.5 L1,.5 M"+(.5-e)+",0 L"+(.5-e)+",1 M"+(.5+e)+",0 L"+(.5+e)+",1"},se),"╬":(ae={},ae[1]=function(e,t){return"M0,"+(.5+t)+" L"+(.5-e)+","+(.5+t)+" L"+(.5-e)+",1 M1,"+(.5+t)+" L"+(.5+e)+","+(.5+t)+" L"+(.5+e)+",1 M0,"+(.5-t)+" L"+(.5-e)+","+(.5-t)+" L"+(.5-e)+",0 M1,"+(.5-t)+" L"+(.5+e)+","+(.5-t)+" L"+(.5+e)+",0"},ae),"":(le={},le[1]="M1,0 L0,1",le),"╲":(ce={},ce[1]="M0,0 L1,1",ce),"":(de={},de[1]="M1,0 L0,1 M0,0 L1,1",de),"╼":(he={},he[1]="M.5,.5 L0,.5",he[3]="M.5,.5 L1,.5",he),"╽":(ue={},ue[1]="M.5,.5 L.5,0",ue[3]="M.5,.5 L.5,1",ue),"╾":(fe={},fe[1]="M.5,.5 L1,.5",fe[3]="M.5,.5 L0,.5",fe),"╿":(pe={},pe[1]="M.5,.5 L.5,1",pe[3]="M.5,.5 L.5,0",pe),"┍":(_e={},_e[1]="M.5,.5 L.5,1",_e[3]="M.5,.5 L1,.5",_e),"┎":(be={},be[1]="M.5,.5 L1,.5",be[3]="M.5,.5 L.5,1",be),"┑":(ge={},ge[1]="M.5,.5 L.5,1",ge[3]="M.5,.5 L0,.5",ge),"┒":(me={},me[1]="M.5,.5 L0,.5",me[3]="M.5,.5 L.5,1",me),"┕":(ve={},ve[1]="M.5,.5 L.5,0",ve[3]="M.5,.5 L1,.5",ve),"┖":(Ae={},Ae[1]="M.5,.5 L1,.5",Ae[3]="M.5,.5 L.5,0",Ae),"┙":(ye={},ye[1]="M.5,.5 L.5,0",ye[3]="M.5,.5 L0,.5",ye),"┚":(Ce={},Ce[1]="M.5,.5 L0,.5",Ce[3]="M.5,.5 L.5,0",Ce),"┝":(we={},we[1]="M.5,0 L.5,1",we[3]="M.5,.5 L1,.5",we),"┞":(xe={},xe[1]="M0.5,1 L.5,.5 L1,.5",xe[3]="M.5,.5 L.5,0",xe),"┟":(Se={},Se[1]="M.5,0 L.5,.5 L1,.5",Se[3]="M.5,.5 L.5,1",Se),"┠":($e={},$e[1]="M.5,.5 L1,.5",$e[3]="M.5,0 L.5,1",$e),"┡":(ke={},ke[1]="M.5,.5 L.5,1",ke[3]="M.5,0 L.5,.5 L1,.5",ke),"┢":(Ee={},Ee[1]="M.5,.5 L.5,0",Ee[3]="M0.5,1 L.5,.5 L1,.5",Ee),"┥":(Be={},Be[1]="M.5,0 L.5,1",Be[3]="M.5,.5 L0,.5",Be),"┦":(Le={},Le[1]="M0,.5 L.5,.5 L.5,1",Le[3]="M.5,.5 L.5,0",Le),"┧":(Re={},Re[1]="M.5,0 L.5,.5 L0,.5",Re[3]="M.5,.5 L.5,1",Re),"┨":(De={},De[1]="M.5,.5 L0,.5",De[3]="M.5,0 L.5,1",De),"┩":(Me={},Me[1]="M.5,.5 L.5,1",Me[3]="M.5,0 L.5,.5 L0,.5",Me),"┪":(Oe={},Oe[1]="M.5,.5 L.5,0",Oe[3]="M0,.5 L.5,.5 L.5,1",Oe),"┭":(Te={},Te[1]="M0.5,1 L.5,.5 L1,.5",Te[3]="M.5,.5 L0,.5",Te),"┮":(Ie={},Ie[1]="M0,.5 L.5,.5 L.5,1",Ie[3]="M.5,.5 L1,.5",Ie),"┯":(Pe={},Pe[1]="M.5,.5 L.5,1",Pe[3]="M0,.5 L1,.5",Pe),"┰":(Fe={},Fe[1]="M0,.5 L1,.5",Fe[3]="M.5,.5 L.5,1",Fe),"┱":(He={},He[1]="M.5,.5 L1,.5",He[3]="M0,.5 L.5,.5 L.5,1",He),"┲":(je={},je[1]="M.5,.5 L0,.5",je[3]="M0.5,1 L.5,.5 L1,.5",je),"┵":(ze={},ze[1]="M.5,0 L.5,.5 L1,.5",ze[3]="M.5,.5 L0,.5",ze),"┶":(Ne={},Ne[1]="M.5,0 L.5,.5 L0,.5",Ne[3]="M.5,.5 L1,.5",Ne),"┷":(Ue={},Ue[1]="M.5,.5 L.5,0",Ue[3]="M0,.5 L1,.5",Ue),"┸":(We={},We[1]="M0,.5 L1,.5",We[3]="M.5,.5 L.5,0",We),"┹":(qe={},qe[1]="M.5,.5 L1,.5",qe[3]="M.5,0 L.5,.5 L0,.5",qe),"┺":(Ge={},Ge[1]="M.5,.5 L0,.5",Ge[3]="M.5,0 L.5,.5 L1,.5",Ge),"┽":(Ve={},Ve[1]="M.5,0 L.5,1 M.5,.5 L1,.5",Ve[3]="M.5,.5 L0,.5",Ve),"┾":(Ke={},Ke[1]="M.5,0 L.5,1 M.5,.5 L0,.5",Ke[3]="M.5,.5 L1,.5",Ke),"┿":(Ze={},Ze[1]="M.5,0 L.5,1",Ze[3]="M0,.5 L1,.5",Ze),"╀":(Ye={},Ye[1]="M0,.5 L1,.5 M.5,.5 L.5,1",Ye[3]="M.5,.5 L.5,0",Ye),"╁":(Xe={},Xe[1]="M.5,.5 L.5,0 M0,.5 L1,.5",Xe[3]="M.5,.5 L.5,1",Xe),"╂":(Je={},Je[1]="M0,.5 L1,.5",Je[3]="M.5,0 L.5,1",Je),"╃":(Qe={},Qe[1]="M0.5,1 L.5,.5 L1,.5",Qe[3]="M.5,0 L.5,.5 L0,.5",Qe),"╄":(et={},et[1]="M0,.5 L.5,.5 L.5,1",et[3]="M.5,0 L.5,.5 L1,.5",et),"╅":(tt={},tt[1]="M.5,0 L.5,.5 L1,.5",tt[3]="M0,.5 L.5,.5 L.5,1",tt),"╆":(rt={},rt[1]="M.5,0 L.5,.5 L0,.5",rt[3]="M0.5,1 L.5,.5 L1,.5",rt),"╇":(nt={},nt[1]="M.5,.5 L.5,1",nt[3]="M.5,.5 L.5,0 M0,.5 L1,.5",nt),"╈":(it={},it[1]="M.5,.5 L.5,0",it[3]="M0,.5 L1,.5 M.5,.5 L.5,1",it),"╉":(ot={},ot[1]="M.5,.5 L1,.5",ot[3]="M.5,0 L.5,1 M.5,.5 L0,.5",ot),"╊":(st={},st[1]="M.5,.5 L0,.5",st[3]="M.5,0 L.5,1 M.5,.5 L1,.5",st),"╌":(at={},at[1]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",at),"╍":(lt={},lt[3]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",lt),"┄":(ct={},ct[1]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",ct),"┅":(dt={},dt[3]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",dt),"┈":(ht={},ht[1]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",ht),"┉":(ut={},ut[3]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",ut),"╎":(ft={},ft[1]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",ft),"╏":(pt={},pt[3]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",pt),"┆":(_t={},_t[1]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",_t),"┇":(bt={},bt[3]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",bt),"┊":(gt={},gt[1]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",gt),"┋":(mt={},mt[3]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",mt),"╭":(vt={},vt[1]="C.5,1,.5,.5,1,.5",vt),"╮":(At={},At[1]="C.5,1,.5,.5,0,.5",At),"╯":(yt={},yt[1]="C.5,0,.5,.5,0,.5",yt),"╰":(Ct={},Ct[1]="C.5,0,.5,.5,1,.5",Ct)},t.powerlineDefinitions={"":{d:"M0,0 L1,.5 L0,1",type:0},"":{d:"M0,0 L1,.5 L0,1",type:1,horizontalPadding:.5},"":{d:"M1,0 L0,.5 L1,1",type:0},"":{d:"M1,0 L0,.5 L1,1",type:1,horizontalPadding:.5}},t.tryDrawCustomChar=function(e,r,n,i,o,s){var a=t.blockElementDefinitions[r];if(a)return function(e,t,r,n,i,o){for(var s=0;s<t.length;s++){var a=t[s],l=i/8,c=o/8;e.fillRect(r+a.x*l,n+a.y*c,a.w*l,a.h*c)}}(e,a,n,i,o,s),!0;var l=$t[r];if(l)return function(e,t,r,n,i,o){var s,a=kt.get(t);a||(a=new Map,kt.set(t,a));var l=e.fillStyle;if("string"!=typeof l)throw new Error('Unexpected fillStyle type "'+l+'"');var c=a.get(l);if(!c){var d=t[0].length,h=t.length,u=document.createElement("canvas");u.width=d,u.height=h;var f=(0,St.throwIfFalsy)(u.getContext("2d")),p=new ImageData(d,h),_=void 0,b=void 0,g=void 0,m=void 0;if(l.startsWith("#"))_=parseInt(l.slice(1,3),16),b=parseInt(l.slice(3,5),16),g=parseInt(l.slice(5,7),16),m=l.length>7&&parseInt(l.slice(7,9),16)||1;else{if(!l.startsWith("rgba"))throw new Error('Unexpected fillStyle color format "'+l+'" when drawing pattern glyph');_=(s=wt(l.substring(5,l.length-1).split(",").map((function(e){return parseFloat(e)})),4))[0],b=s[1],g=s[2],m=s[3]}for(var v=0;v<h;v++)for(var A=0;A<d;A++)p.data[4*(v*d+A)]=_,p.data[4*(v*d+A)+1]=b,p.data[4*(v*d+A)+2]=g,p.data[4*(v*d+A)+3]=t[v][A]*(255*m);f.putImageData(p,0,0),c=(0,St.throwIfFalsy)(e.createPattern(u,null)),a.set(l,c)}e.fillStyle=c,e.fillRect(r,n,i,o)}(e,l,n,i,o,s),!0;var c=t.boxDrawingDefinitions[r];if(c)return function(e,t,r,n,i,o){var s,a,l,c;e.strokeStyle=e.fillStyle;try{for(var d=xt(Object.entries(t)),h=d.next();!h.done;h=d.next()){var u=wt(h.value,2),f=u[0],p=u[1];e.beginPath(),e.lineWidth=window.devicePixelRatio*Number.parseInt(f);var _=void 0;_="function"==typeof p?p(.15,.15/o*i):p;try{for(var b=(l=void 0,xt(_.split(" "))),g=b.next();!g.done;g=b.next()){var m=g.value,v=m[0],A=Bt[v];if(A){var y=m.substring(1).split(",");y[0]&&y[1]&&A(e,Lt(y,i,o,r,n))}else console.error('Could not find drawing instructions for "'+v+'"')}}catch(e){l={error:e}}finally{try{g&&!g.done&&(c=b.return)&&c.call(b)}finally{if(l)throw l.error}}e.stroke(),e.closePath()}}catch(e){s={error:e}}finally{try{h&&!h.done&&(a=d.return)&&a.call(d)}finally{if(s)throw s.error}}}(e,c,n,i,o,s),!0;var d=t.powerlineDefinitions[r];return!!d&&(function(e,t,r,n,i,o){var s,a;e.beginPath(),e.lineWidth=window.devicePixelRatio;try{for(var l=xt(t.d.split(" ")),c=l.next();!c.done;c=l.next()){var d=c.value,h=d[0],u=Bt[h];if(u){var f=d.substring(1).split(",");f[0]&&f[1]&&u(e,Lt(f,i,o,r,n,t.horizontalPadding))}else console.error('Could not find drawing instructions for "'+h+'"')}}catch(e){s={error:e}}finally{try{c&&!c.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}1===t.type?(e.strokeStyle=e.fillStyle,e.stroke()):e.fill(),e.closePath()}(e,d,n,i,o,s),!0)};var kt=new Map;function Et(e,t,r){return void 0===r&&(r=0),Math.max(Math.min(e,t),r)}var Bt={C:function(e,t){return e.bezierCurveTo(t[0],t[1],t[2],t[3],t[4],t[5])},L:function(e,t){return e.lineTo(t[0],t[1])},M:function(e,t){return e.moveTo(t[0],t[1])}};function Lt(e,t,r,n,i,o){void 0===o&&(o=0);var s=e.map((function(e){return parseFloat(e)||parseInt(e)}));if(s.length<2)throw new Error("Too few arguments for instruction");for(var a=0;a<s.length;a+=2)s[a]*=t-2*o*window.devicePixelRatio,0!==s[a]&&(s[a]=Et(Math.round(s[a]+.5)-.5,t,0)),s[a]+=n+o*window.devicePixelRatio;for(var l=1;l<s.length;l+=2)s[l]*=r,0!==s[l]&&(s[l]=Et(Math.round(s[l]+.5)-.5,r,0)),s[l]+=i;return s}},3700:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.GridCache=void 0;var r=function(){function e(){this.cache=[]}return e.prototype.resize=function(e,t){for(var r=0;r<e;r++){this.cache.length<=r&&this.cache.push([]);for(var n=this.cache[r].length;n<t;n++)this.cache[r].push(void 0);this.cache[r].length=t}this.cache.length=e},e.prototype.clear=function(){for(var e=0;e<this.cache.length;e++)for(var t=0;t<this.cache[e].length;t++)this.cache[e][t]=void 0},e}();t.GridCache=r},5098:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.LinkRenderLayer=void 0;var a=r(1546),l=r(8803),c=r(2040),d=r(2585),h=function(e){function t(t,r,n,i,o,s,a,l,c){var d=e.call(this,t,"link",r,!0,n,i,a,l,c)||this;return o.onShowLinkUnderline((function(e){return d._onShowLinkUnderline(e)})),o.onHideLinkUnderline((function(e){return d._onHideLinkUnderline(e)})),s.onShowLinkUnderline((function(e){return d._onShowLinkUnderline(e)})),s.onHideLinkUnderline((function(e){return d._onHideLinkUnderline(e)})),d}return i(t,e),t.prototype.resize=function(t){e.prototype.resize.call(this,t),this._state=void 0},t.prototype.reset=function(){this._clearCurrentLink()},t.prototype._clearCurrentLink=function(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);var e=this._state.y2-this._state.y1-1;e>0&&this._clearCells(0,this._state.y1+1,this._state.cols,e),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}},t.prototype._onShowLinkUnderline=function(e){if(e.fg===l.INVERTED_DEFAULT_COLOR?this._ctx.fillStyle=this._colors.background.css:e.fg&&(0,c.is256Color)(e.fg)?this._ctx.fillStyle=this._colors.ansi[e.fg].css:this._ctx.fillStyle=this._colors.foreground.css,e.y1===e.y2)this._fillBottomLineAtCells(e.x1,e.y1,e.x2-e.x1);else{this._fillBottomLineAtCells(e.x1,e.y1,e.cols-e.x1);for(var t=e.y1+1;t<e.y2;t++)this._fillBottomLineAtCells(0,t,e.cols);this._fillBottomLineAtCells(0,e.y2,e.x2)}this._state=e},t.prototype._onHideLinkUnderline=function(e){this._clearCurrentLink()},o([s(6,d.IBufferService),s(7,d.IOptionsService),s(8,d.IDecorationService)],t)}(a.BaseRenderLayer);t.LinkRenderLayer=h},3525:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.Renderer=void 0;var l=r(9596),c=r(4149),d=r(2512),h=r(5098),u=r(844),f=r(4725),p=r(2585),_=r(1420),b=r(8460),g=1,m=function(e){function t(t,r,n,i,o,s,a,u){var f=e.call(this)||this;f._colors=t,f._screenElement=r,f._bufferService=s,f._charSizeService=a,f._optionsService=u,f._id=g++,f._onRequestRedraw=new b.EventEmitter;var p=f._optionsService.rawOptions.allowTransparency;return f._renderLayers=[o.createInstance(l.TextRenderLayer,f._screenElement,0,f._colors,p,f._id),o.createInstance(c.SelectionRenderLayer,f._screenElement,1,f._colors,f._id),o.createInstance(h.LinkRenderLayer,f._screenElement,2,f._colors,f._id,n,i),o.createInstance(d.CursorRenderLayer,f._screenElement,3,f._colors,f._id,f._onRequestRedraw)],f.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},f._devicePixelRatio=window.devicePixelRatio,f._updateDimensions(),f.onOptionsChanged(),f}return i(t,e),Object.defineProperty(t.prototype,"onRequestRedraw",{get:function(){return this._onRequestRedraw.event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){var t,r;try{for(var n=a(this._renderLayers),i=n.next();!i.done;i=n.next())i.value.dispose()}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}e.prototype.dispose.call(this),(0,_.removeTerminalFromCache)(this._id)},t.prototype.onDevicePixelRatioChange=function(){this._devicePixelRatio!==window.devicePixelRatio&&(this._devicePixelRatio=window.devicePixelRatio,this.onResize(this._bufferService.cols,this._bufferService.rows))},t.prototype.setColors=function(e){var t,r;this._colors=e;try{for(var n=a(this._renderLayers),i=n.next();!i.done;i=n.next()){var o=i.value;o.setColors(this._colors),o.reset()}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},t.prototype.onResize=function(e,t){var r,n;this._updateDimensions();try{for(var i=a(this._renderLayers),o=i.next();!o.done;o=i.next())o.value.resize(this.dimensions)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}this._screenElement.style.width=this.dimensions.canvasWidth+"px",this._screenElement.style.height=this.dimensions.canvasHeight+"px"},t.prototype.onCharSizeChanged=function(){this.onResize(this._bufferService.cols,this._bufferService.rows)},t.prototype.onBlur=function(){this._runOperation((function(e){return e.onBlur()}))},t.prototype.onFocus=function(){this._runOperation((function(e){return e.onFocus()}))},t.prototype.onSelectionChanged=function(e,t,r){void 0===r&&(r=!1),this._runOperation((function(n){return n.onSelectionChanged(e,t,r)})),this._colors.selectionForeground&&this._onRequestRedraw.fire({start:0,end:this._bufferService.rows-1})},t.prototype.onCursorMove=function(){this._runOperation((function(e){return e.onCursorMove()}))},t.prototype.onOptionsChanged=function(){this._runOperation((function(e){return e.onOptionsChanged()}))},t.prototype.clear=function(){this._runOperation((function(e){return e.reset()}))},t.prototype._runOperation=function(e){var t,r;try{for(var n=a(this._renderLayers),i=n.next();!i.done;i=n.next())e(i.value)}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},t.prototype.renderRows=function(e,t){var r,n;try{for(var i=a(this._renderLayers),o=i.next();!o.done;o=i.next())o.value.onGridChanged(e,t)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}},t.prototype.clearTextureAtlas=function(){var e,t;try{for(var r=a(this._renderLayers),n=r.next();!n.done;n=r.next())n.value.clearTextureAtlas()}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}},t.prototype._updateDimensions=function(){this._charSizeService.hasValidSize&&(this.dimensions.scaledCharWidth=Math.floor(this._charSizeService.width*window.devicePixelRatio),this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.rawOptions.lineHeight),this.dimensions.scaledCharTop=1===this._optionsService.rawOptions.lineHeight?0:Math.round((this.dimensions.scaledCellHeight-this.dimensions.scaledCharHeight)/2),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.scaledCharLeft=Math.floor(this._optionsService.rawOptions.letterSpacing/2),this.dimensions.scaledCanvasHeight=this._bufferService.rows*this.dimensions.scaledCellHeight,this.dimensions.scaledCanvasWidth=this._bufferService.cols*this.dimensions.scaledCellWidth,this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio),this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio),this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows,this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols)},o([s(4,p.IInstantiationService),s(5,p.IBufferService),s(6,f.ICharSizeService),s(7,p.IOptionsService)],t)}(u.Disposable);t.Renderer=m},1752:(e,t)=>{function r(e){return 57508<=e&&e<=57558}Object.defineProperty(t,"__esModule",{value:!0}),t.excludeFromContrastRatioDemands=t.isPowerlineGlyph=t.throwIfFalsy=void 0,t.throwIfFalsy=function(e){if(!e)throw new Error("value must not be falsy");return e},t.isPowerlineGlyph=r,t.excludeFromContrastRatioDemands=function(e){return r(e)||function(e){return 9472<=e&&e<=9631}(e)}},4149:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionRenderLayer=void 0;var a=r(1546),l=r(2585),c=function(e){function t(t,r,n,i,o,s,a){var l=e.call(this,t,"selection",r,!0,n,i,o,s,a)||this;return l._clearState(),l}return i(t,e),t.prototype._clearState=function(){this._state={start:void 0,end:void 0,columnSelectMode:void 0,ydisp:void 0}},t.prototype.resize=function(t){e.prototype.resize.call(this,t),this._clearState()},t.prototype.reset=function(){this._state.start&&this._state.end&&(this._clearState(),this._clearAll())},t.prototype.onSelectionChanged=function(t,r,n){if(e.prototype.onSelectionChanged.call(this,t,r,n),this._didStateChange(t,r,n,this._bufferService.buffer.ydisp))if(this._clearAll(),t&&r){var i=t[1]-this._bufferService.buffer.ydisp,o=r[1]-this._bufferService.buffer.ydisp,s=Math.max(i,0),a=Math.min(o,this._bufferService.rows-1);if(s>=this._bufferService.rows||a<0)this._state.ydisp=this._bufferService.buffer.ydisp;else{if(this._ctx.fillStyle=this._colors.selectionTransparent.css,n){var l=t[0],c=r[0]-l,d=a-s+1;this._fillCells(l,s,c,d)}else{l=i===s?t[0]:0;var h=s===o?r[0]:this._bufferService.cols;this._fillCells(l,s,h-l,1);var u=Math.max(a-s-1,0);if(this._fillCells(0,s+1,this._bufferService.cols,u),s!==a){var f=o===a?r[0]:this._bufferService.cols;this._fillCells(0,a,f,1)}}this._state.start=[t[0],t[1]],this._state.end=[r[0],r[1]],this._state.columnSelectMode=n,this._state.ydisp=this._bufferService.buffer.ydisp}}else this._clearState()},t.prototype._didStateChange=function(e,t,r,n){return!this._areCoordinatesEqual(e,this._state.start)||!this._areCoordinatesEqual(t,this._state.end)||r!==this._state.columnSelectMode||n!==this._state.ydisp},t.prototype._areCoordinatesEqual=function(e,t){return!(!e||!t)&&e[0]===t[0]&&e[1]===t[1]},o([s(4,l.IBufferService),s(5,l.IOptionsService),s(6,l.IDecorationService)],t)}(a.BaseRenderLayer);t.SelectionRenderLayer=c},9596:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.TextRenderLayer=void 0;var l=r(3700),c=r(1546),d=r(3734),h=r(643),u=r(511),f=r(2585),p=r(4725),_=r(4269),b=function(e){function t(t,r,n,i,o,s,a,c,d){var h=e.call(this,t,"text",r,i,n,o,s,a,d)||this;return h._characterJoinerService=c,h._characterWidth=0,h._characterFont="",h._characterOverlapCache={},h._workCell=new u.CellData,h._state=new l.GridCache,h}return i(t,e),t.prototype.resize=function(t){e.prototype.resize.call(this,t);var r=this._getFont(!1,!1);this._characterWidth===t.scaledCharWidth&&this._characterFont===r||(this._characterWidth=t.scaledCharWidth,this._characterFont=r,this._characterOverlapCache={}),this._state.clear(),this._state.resize(this._bufferService.cols,this._bufferService.rows)},t.prototype.reset=function(){this._state.clear(),this._clearAll()},t.prototype._forEachCell=function(e,t,r){for(var n=e;n<=t;n++)for(var i=n+this._bufferService.buffer.ydisp,o=this._bufferService.buffer.lines.get(i),s=this._characterJoinerService.getJoinedCharacters(i),a=0;a<this._bufferService.cols;a++){o.loadCell(a,this._workCell);var l=this._workCell,c=!1,d=a;if(0!==l.getWidth()){if(s.length>0&&a===s[0][0]){c=!0;var u=s.shift();l=new _.JoinedCellData(this._workCell,o.translateToString(!0,u[0],u[1]),u[1]-u[0]),d=u[1]-1}!c&&this._isOverlapping(l)&&d<o.length-1&&o.getCodePoint(d+1)===h.NULL_CELL_CODE&&(l.content&=-12582913,l.content|=2<<22),r(l,a,n),a=d}}},t.prototype._drawBackground=function(e,t){var r=this,n=this._ctx,i=this._bufferService.cols,o=0,s=0,l=null;n.save(),this._forEachCell(e,t,(function(e,t,c){var h,u,f=null;e.isInverse()?f=e.isFgDefault()?r._colors.foreground.css:e.isFgRGB()?"rgb("+d.AttributeData.toColorRGB(e.getFgColor()).join(",")+")":r._colors.ansi[e.getFgColor()].css:e.isBgRGB()?f="rgb("+d.AttributeData.toColorRGB(e.getBgColor()).join(",")+")":e.isBgPalette()&&(f=r._colors.ansi[e.getBgColor()].css);var p=!1;try{for(var _=a(r._decorationService.getDecorationsAtCell(t,r._bufferService.buffer.ydisp+c)),b=_.next();!b.done;b=_.next()){var g=b.value;"top"!==g.options.layer&&p||(g.backgroundColorRGB&&(f=g.backgroundColorRGB.css),p="top"===g.options.layer)}}catch(e){h={error:e}}finally{try{b&&!b.done&&(u=_.return)&&u.call(_)}finally{if(h)throw h.error}}null===l&&(o=t,s=c),c!==s?(n.fillStyle=l||"",r._fillCells(o,s,i-o,1),o=t,s=c):l!==f&&(n.fillStyle=l||"",r._fillCells(o,s,t-o,1),o=t,s=c),l=f})),null!==l&&(n.fillStyle=l,this._fillCells(o,s,i-o,1)),n.restore()},t.prototype._drawForeground=function(e,t){var r=this;this._forEachCell(e,t,(function(e,t,n){if(!e.isInvisible()&&(r._drawChars(e,t,n),e.isUnderline()||e.isStrikethrough())){if(r._ctx.save(),e.isInverse())if(e.isBgDefault())r._ctx.fillStyle=r._colors.background.css;else if(e.isBgRGB())r._ctx.fillStyle="rgb("+d.AttributeData.toColorRGB(e.getBgColor()).join(",")+")";else{var i=e.getBgColor();r._optionsService.rawOptions.drawBoldTextInBrightColors&&e.isBold()&&i<8&&(i+=8),r._ctx.fillStyle=r._colors.ansi[i].css}else if(e.isFgDefault())r._ctx.fillStyle=r._colors.foreground.css;else if(e.isFgRGB())r._ctx.fillStyle="rgb("+d.AttributeData.toColorRGB(e.getFgColor()).join(",")+")";else{var o=e.getFgColor();r._optionsService.rawOptions.drawBoldTextInBrightColors&&e.isBold()&&o<8&&(o+=8),r._ctx.fillStyle=r._colors.ansi[o].css}e.isStrikethrough()&&r._fillMiddleLineAtCells(t,n,e.getWidth()),e.isUnderline()&&r._fillBottomLineAtCells(t,n,e.getWidth()),r._ctx.restore()}}))},t.prototype.onGridChanged=function(e,t){0!==this._state.cache.length&&(this._charAtlas&&this._charAtlas.beginFrame(),this._clearCells(0,e,this._bufferService.cols,t-e+1),this._drawBackground(e,t),this._drawForeground(e,t))},t.prototype.onOptionsChanged=function(){this._setTransparency(this._optionsService.rawOptions.allowTransparency)},t.prototype._isOverlapping=function(e){if(1!==e.getWidth())return!1;if(e.getCode()<256)return!1;var t=e.getChars();if(this._characterOverlapCache.hasOwnProperty(t))return this._characterOverlapCache[t];this._ctx.save(),this._ctx.font=this._characterFont;var r=Math.floor(this._ctx.measureText(t).width)>this._characterWidth;return this._ctx.restore(),this._characterOverlapCache[t]=r,r},o([s(5,f.IBufferService),s(6,f.IOptionsService),s(7,p.ICharacterJoinerService),s(8,f.IDecorationService)],t)}(c.BaseRenderLayer);t.TextRenderLayer=b},9616:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaseCharAtlas=void 0;var r=function(){function e(){this._didWarmUp=!1}return e.prototype.dispose=function(){},e.prototype.warmUp=function(){this._didWarmUp||(this._doWarmUp(),this._didWarmUp=!0)},e.prototype._doWarmUp=function(){},e.prototype.clear=function(){},e.prototype.beginFrame=function(){},e}();t.BaseCharAtlas=r},1420:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.removeTerminalFromCache=t.acquireCharAtlas=void 0;var n=r(2040),i=r(1906),o=[];t.acquireCharAtlas=function(e,t,r,s,a){for(var l=(0,n.generateConfig)(s,a,e,r),c=0;c<o.length;c++){var d=(h=o[c]).ownedBy.indexOf(t);if(d>=0){if((0,n.configEquals)(h.config,l))return h.atlas;1===h.ownedBy.length?(h.atlas.dispose(),o.splice(c,1)):h.ownedBy.splice(d,1);break}}for(c=0;c<o.length;c++){var h=o[c];if((0,n.configEquals)(h.config,l))return h.ownedBy.push(t),h.atlas}var u={atlas:new i.DynamicCharAtlas(document,l),config:l,ownedBy:[t]};return o.push(u),u.atlas},t.removeTerminalFromCache=function(e){for(var t=0;t<o.length;t++){var r=o[t].ownedBy.indexOf(e);if(-1!==r){1===o[t].ownedBy.length?(o[t].atlas.dispose(),o.splice(t,1)):o[t].ownedBy.splice(r,1);break}}}},2040:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.is256Color=t.configEquals=t.generateConfig=void 0;var n=r(643);t.generateConfig=function(e,t,r,n){var i={foreground:n.foreground,background:n.background,cursor:void 0,cursorAccent:void 0,selection:void 0,ansi:n.ansi.slice()};return{devicePixelRatio:window.devicePixelRatio,scaledCharWidth:e,scaledCharHeight:t,fontFamily:r.fontFamily,fontSize:r.fontSize,fontWeight:r.fontWeight,fontWeightBold:r.fontWeightBold,allowTransparency:r.allowTransparency,colors:i}},t.configEquals=function(e,t){for(var r=0;r<e.colors.ansi.length;r++)if(e.colors.ansi[r].rgba!==t.colors.ansi[r].rgba)return!1;return e.devicePixelRatio===t.devicePixelRatio&&e.fontFamily===t.fontFamily&&e.fontSize===t.fontSize&&e.fontWeight===t.fontWeight&&e.fontWeightBold===t.fontWeightBold&&e.allowTransparency===t.allowTransparency&&e.scaledCharWidth===t.scaledCharWidth&&e.scaledCharHeight===t.scaledCharHeight&&e.colors.foreground===t.colors.foreground&&e.colors.background===t.colors.background},t.is256Color=function(e){return e<n.DEFAULT_COLOR}},8803:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CHAR_ATLAS_CELL_SPACING=t.TEXT_BASELINE=t.DIM_OPACITY=t.INVERTED_DEFAULT_COLOR=void 0;var n=r(6114);t.INVERTED_DEFAULT_COLOR=257,t.DIM_OPACITY=.5,t.TEXT_BASELINE=n.isFirefox||n.isLegacyEdge?"bottom":"ideographic",t.CHAR_ATLAS_CELL_SPACING=1},1906:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.NoneCharAtlas=t.DynamicCharAtlas=t.getGlyphCacheKey=void 0;var o=r(8803),s=r(9616),a=r(5680),l=r(7001),c=r(6114),d=r(1752),h=r(8055),u=1024,f=1024,p={css:"rgba(0, 0, 0, 0)",rgba:0};function _(e){return e.code<<21|e.bg<<12|e.fg<<3|(e.bold?0:4)+(e.dim?0:2)+(e.italic?0:1)}t.getGlyphCacheKey=_;var b=function(e){function t(t,r){var n=e.call(this)||this;n._config=r,n._drawToCacheCount=0,n._glyphsWaitingOnBitmap=[],n._bitmapCommitTimeout=null,n._bitmap=null,n._cacheCanvas=t.createElement("canvas"),n._cacheCanvas.width=u,n._cacheCanvas.height=f,n._cacheCtx=(0,d.throwIfFalsy)(n._cacheCanvas.getContext("2d",{alpha:!0}));var i=t.createElement("canvas");i.width=n._config.scaledCharWidth,i.height=n._config.scaledCharHeight,n._tmpCtx=(0,d.throwIfFalsy)(i.getContext("2d",{alpha:n._config.allowTransparency})),n._width=Math.floor(u/n._config.scaledCharWidth),n._height=Math.floor(f/n._config.scaledCharHeight);var o=n._width*n._height;return n._cacheMap=new l.LRUMap(o),n._cacheMap.prealloc(o),n}return i(t,e),t.prototype.dispose=function(){null!==this._bitmapCommitTimeout&&(window.clearTimeout(this._bitmapCommitTimeout),this._bitmapCommitTimeout=null)},t.prototype.beginFrame=function(){this._drawToCacheCount=0},t.prototype.clear=function(){if(this._cacheMap.size>0){var e=this._width*this._height;this._cacheMap=new l.LRUMap(e),this._cacheMap.prealloc(e)}this._cacheCtx.clearRect(0,0,u,f),this._tmpCtx.clearRect(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight)},t.prototype.draw=function(e,t,r,n){if(32===t.code)return!0;if(!this._canCache(t))return!1;var i=_(t),o=this._cacheMap.get(i);if(null!=o)return this._drawFromCache(e,o,r,n),!0;if(this._drawToCacheCount<100){var s;s=this._cacheMap.size<this._cacheMap.capacity?this._cacheMap.size:this._cacheMap.peek().index;var a=this._drawToCache(t,s);return this._cacheMap.set(i,a),this._drawFromCache(e,a,r,n),!0}return!1},t.prototype._canCache=function(e){return e.code<256},t.prototype._toCoordinateX=function(e){return e%this._width*this._config.scaledCharWidth},t.prototype._toCoordinateY=function(e){return Math.floor(e/this._width)*this._config.scaledCharHeight},t.prototype._drawFromCache=function(e,t,r,n){if(!t.isEmpty){var i=this._toCoordinateX(t.index),o=this._toCoordinateY(t.index);e.drawImage(t.inBitmap?this._bitmap:this._cacheCanvas,i,o,this._config.scaledCharWidth,this._config.scaledCharHeight,r,n,this._config.scaledCharWidth,this._config.scaledCharHeight)}},t.prototype._getColorFromAnsiIndex=function(e){return e<this._config.colors.ansi.length?this._config.colors.ansi[e]:a.DEFAULT_ANSI_COLORS[e]},t.prototype._getBackgroundColor=function(e){return this._config.allowTransparency?p:e.bg===o.INVERTED_DEFAULT_COLOR?this._config.colors.foreground:e.bg<256?this._getColorFromAnsiIndex(e.bg):this._config.colors.background},t.prototype._getForegroundColor=function(e){return e.fg===o.INVERTED_DEFAULT_COLOR?h.color.opaque(this._config.colors.background):e.fg<256?this._getColorFromAnsiIndex(e.fg):this._config.colors.foreground},t.prototype._drawToCache=function(e,t){this._drawToCacheCount++,this._tmpCtx.save();var r=this._getBackgroundColor(e);this._tmpCtx.globalCompositeOperation="copy",this._tmpCtx.fillStyle=r.css,this._tmpCtx.fillRect(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight),this._tmpCtx.globalCompositeOperation="source-over";var n=e.bold?this._config.fontWeightBold:this._config.fontWeight,i=e.italic?"italic":"";this._tmpCtx.font=i+" "+n+" "+this._config.fontSize*this._config.devicePixelRatio+"px "+this._config.fontFamily,this._tmpCtx.textBaseline=o.TEXT_BASELINE,this._tmpCtx.fillStyle=this._getForegroundColor(e).css,e.dim&&(this._tmpCtx.globalAlpha=o.DIM_OPACITY),this._tmpCtx.fillText(e.chars,0,this._config.scaledCharHeight);var s=this._tmpCtx.getImageData(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight),a=!1;if(this._config.allowTransparency||(a=m(s,r)),a&&"_"===e.chars&&!this._config.allowTransparency)for(var l=1;l<=5&&(this._tmpCtx.fillText(e.chars,0,this._config.scaledCharHeight-l),a=m(s=this._tmpCtx.getImageData(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight),r));l++);this._tmpCtx.restore();var c=this._toCoordinateX(t),d=this._toCoordinateY(t);this._cacheCtx.putImageData(s,c,d);var h={index:t,isEmpty:a,inBitmap:!1};return this._addGlyphToBitmap(h),h},t.prototype._addGlyphToBitmap=function(e){var t=this;!("createImageBitmap"in window)||c.isFirefox||c.isSafari||(this._glyphsWaitingOnBitmap.push(e),null===this._bitmapCommitTimeout&&(this._bitmapCommitTimeout=window.setTimeout((function(){return t._generateBitmap()}),100)))},t.prototype._generateBitmap=function(){var e=this,t=this._glyphsWaitingOnBitmap;this._glyphsWaitingOnBitmap=[],window.createImageBitmap(this._cacheCanvas).then((function(r){e._bitmap=r;for(var n=0;n<t.length;n++)t[n].inBitmap=!0})),this._bitmapCommitTimeout=null},t}(s.BaseCharAtlas);t.DynamicCharAtlas=b;var g=function(e){function t(t,r){return e.call(this)||this}return i(t,e),t.prototype.draw=function(e,t,r,n){return!1},t}(s.BaseCharAtlas);function m(e,t){for(var r=!0,n=t.rgba>>>24,i=t.rgba>>>16&255,o=t.rgba>>>8&255,s=0;s<e.data.length;s+=4)e.data[s]===n&&e.data[s+1]===i&&e.data[s+2]===o?e.data[s+3]=0:r=!1;return r}t.NoneCharAtlas=g},7001:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LRUMap=void 0;var r=function(){function e(e){this.capacity=e,this._map={},this._head=null,this._tail=null,this._nodePool=[],this.size=0}return e.prototype._unlinkNode=function(e){var t=e.prev,r=e.next;e===this._head&&(this._head=r),e===this._tail&&(this._tail=t),null!==t&&(t.next=r),null!==r&&(r.prev=t)},e.prototype._appendNode=function(e){var t=this._tail;null!==t&&(t.next=e),e.prev=t,e.next=null,this._tail=e,null===this._head&&(this._head=e)},e.prototype.prealloc=function(e){for(var t=this._nodePool,r=0;r<e;r++)t.push({prev:null,next:null,key:null,value:null})},e.prototype.get=function(e){var t=this._map[e];return void 0!==t?(this._unlinkNode(t),this._appendNode(t),t.value):null},e.prototype.peekValue=function(e){var t=this._map[e];return void 0!==t?t.value:null},e.prototype.peek=function(){var e=this._head;return null===e?null:e.value},e.prototype.set=function(e,t){var r=this._map[e];if(void 0!==r)r=this._map[e],this._unlinkNode(r),r.value=t;else if(this.size>=this.capacity)r=this._head,this._unlinkNode(r),delete this._map[r.key],r.key=e,r.value=t,this._map[e]=r;else{var n=this._nodePool;n.length>0?((r=n.pop()).key=e,r.value=t):r={prev:null,next:null,key:e,value:t},this._map[e]=r,this.size++}this._appendNode(r)},e}();t.LRUMap=r},1296:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.DomRenderer=void 0;var l=r(3787),c=r(8803),d=r(844),h=r(4725),u=r(2585),f=r(8460),p=r(8055),_=r(9631),b="xterm-dom-renderer-owner-",g="xterm-fg-",m="xterm-bg-",v="xterm-focus",A=1,y=function(e){function t(t,r,n,i,o,s,a,c,d,h){var u=e.call(this)||this;return u._colors=t,u._element=r,u._screenElement=n,u._viewportElement=i,u._linkifier=o,u._linkifier2=s,u._charSizeService=c,u._optionsService=d,u._bufferService=h,u._terminalClass=A++,u._rowElements=[],u._rowContainer=document.createElement("div"),u._rowContainer.classList.add("xterm-rows"),u._rowContainer.style.lineHeight="normal",u._rowContainer.setAttribute("aria-hidden","true"),u._refreshRowElements(u._bufferService.cols,u._bufferService.rows),u._selectionContainer=document.createElement("div"),u._selectionContainer.classList.add("xterm-selection"),u._selectionContainer.setAttribute("aria-hidden","true"),u.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},u._updateDimensions(),u._injectCss(),u._rowFactory=a.createInstance(l.DomRendererRowFactory,document,u._colors),u._element.classList.add(b+u._terminalClass),u._screenElement.appendChild(u._rowContainer),u._screenElement.appendChild(u._selectionContainer),u.register(u._linkifier.onShowLinkUnderline((function(e){return u._onLinkHover(e)}))),u.register(u._linkifier.onHideLinkUnderline((function(e){return u._onLinkLeave(e)}))),u.register(u._linkifier2.onShowLinkUnderline((function(e){return u._onLinkHover(e)}))),u.register(u._linkifier2.onHideLinkUnderline((function(e){return u._onLinkLeave(e)}))),u}return i(t,e),Object.defineProperty(t.prototype,"onRequestRedraw",{get:function(){return(new f.EventEmitter).event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){this._element.classList.remove(b+this._terminalClass),(0,_.removeElementFromParent)(this._rowContainer,this._selectionContainer,this._themeStyleElement,this._dimensionsStyleElement),e.prototype.dispose.call(this)},t.prototype._updateDimensions=function(){var e,t;this.dimensions.scaledCharWidth=this._charSizeService.width*window.devicePixelRatio,this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.rawOptions.lineHeight),this.dimensions.scaledCharLeft=0,this.dimensions.scaledCharTop=0,this.dimensions.scaledCanvasWidth=this.dimensions.scaledCellWidth*this._bufferService.cols,this.dimensions.scaledCanvasHeight=this.dimensions.scaledCellHeight*this._bufferService.rows,this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio),this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio),this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols,this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows;try{for(var r=a(this._rowElements),n=r.next();!n.done;n=r.next()){var i=n.value;i.style.width=this.dimensions.canvasWidth+"px",i.style.height=this.dimensions.actualCellHeight+"px",i.style.lineHeight=this.dimensions.actualCellHeight+"px",i.style.overflow="hidden"}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this._dimensionsStyleElement||(this._dimensionsStyleElement=document.createElement("style"),this._screenElement.appendChild(this._dimensionsStyleElement));var o=this._terminalSelector+" .xterm-rows span { display: inline-block; height: 100%; vertical-align: top; width: "+this.dimensions.actualCellWidth+"px}";this._dimensionsStyleElement.textContent=o,this._selectionContainer.style.height=this._viewportElement.style.height,this._screenElement.style.width=this.dimensions.canvasWidth+"px",this._screenElement.style.height=this.dimensions.canvasHeight+"px"},t.prototype.setColors=function(e){this._colors=e,this._injectCss()},t.prototype._injectCss=function(){var e=this;this._themeStyleElement||(this._themeStyleElement=document.createElement("style"),this._screenElement.appendChild(this._themeStyleElement));var t=this._terminalSelector+" .xterm-rows { color: "+this._colors.foreground.css+"; font-family: "+this._optionsService.rawOptions.fontFamily+"; font-size: "+this._optionsService.rawOptions.fontSize+"px;}";t+=this._terminalSelector+" span:not(."+l.BOLD_CLASS+") { font-weight: "+this._optionsService.rawOptions.fontWeight+";}"+this._terminalSelector+" span."+l.BOLD_CLASS+" { font-weight: "+this._optionsService.rawOptions.fontWeightBold+";}"+this._terminalSelector+" span."+l.ITALIC_CLASS+" { font-style: italic;}",t+="@keyframes blink_box_shadow_"+this._terminalClass+" { 50% { box-shadow: none; }}",t+="@keyframes blink_block_"+this._terminalClass+" { 0% { background-color: "+this._colors.cursor.css+"; color: "+this._colors.cursorAccent.css+"; } 50% { background-color: "+this._colors.cursorAccent.css+"; color: "+this._colors.cursor.css+"; }}",t+=this._terminalSelector+" .xterm-rows:not(.xterm-focus) ."+l.CURSOR_CLASS+"."+l.CURSOR_STYLE_BLOCK_CLASS+" { outline: 1px solid "+this._colors.cursor.css+"; outline-offset: -1px;}"+this._terminalSelector+" .xterm-rows.xterm-focus ."+l.CURSOR_CLASS+"."+l.CURSOR_BLINK_CLASS+":not(."+l.CURSOR_STYLE_BLOCK_CLASS+") { animation: blink_box_shadow_"+this._terminalClass+" 1s step-end infinite;}"+this._terminalSelector+" .xterm-rows.xterm-focus ."+l.CURSOR_CLASS+"."+l.CURSOR_BLINK_CLASS+"."+l.CURSOR_STYLE_BLOCK_CLASS+" { animation: blink_block_"+this._terminalClass+" 1s step-end infinite;}"+this._terminalSelector+" .xterm-rows.xterm-focus ."+l.CURSOR_CLASS+"."+l.CURSOR_STYLE_BLOCK_CLASS+" { background-color: "+this._colors.cursor.css+"; color: "+this._colors.cursorAccent.css+";}"+this._terminalSelector+" .xterm-rows ."+l.CURSOR_CLASS+"."+l.CURSOR_STYLE_BAR_CLASS+" { box-shadow: "+this._optionsService.rawOptions.cursorWidth+"px 0 0 "+this._colors.cursor.css+" inset;}"+this._terminalSelector+" .xterm-rows ."+l.CURSOR_CLASS+"."+l.CURSOR_STYLE_UNDERLINE_CLASS+" { box-shadow: 0 -1px 0 "+this._colors.cursor.css+" inset;}",t+=this._terminalSelector+" .xterm-selection { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}"+this._terminalSelector+" .xterm-selection div { position: absolute; background-color: "+this._colors.selectionOpaque.css+";}",this._colors.ansi.forEach((function(r,n){t+=e._terminalSelector+" ."+g+n+" { color: "+r.css+"; }"+e._terminalSelector+" ."+m+n+" { background-color: "+r.css+"; }"})),t+=this._terminalSelector+" ."+g+c.INVERTED_DEFAULT_COLOR+" { color: "+p.color.opaque(this._colors.background).css+"; }"+this._terminalSelector+" ."+m+c.INVERTED_DEFAULT_COLOR+" { background-color: "+this._colors.foreground.css+"; }",this._themeStyleElement.textContent=t},t.prototype.onDevicePixelRatioChange=function(){this._updateDimensions()},t.prototype._refreshRowElements=function(e,t){for(var r=this._rowElements.length;r<=t;r++){var n=document.createElement("div");this._rowContainer.appendChild(n),this._rowElements.push(n)}for(;this._rowElements.length>t;)this._rowContainer.removeChild(this._rowElements.pop())},t.prototype.onResize=function(e,t){this._refreshRowElements(e,t),this._updateDimensions()},t.prototype.onCharSizeChanged=function(){this._updateDimensions()},t.prototype.onBlur=function(){this._rowContainer.classList.remove(v)},t.prototype.onFocus=function(){this._rowContainer.classList.add(v)},t.prototype.onSelectionChanged=function(e,t,r){for(;this._selectionContainer.children.length;)this._selectionContainer.removeChild(this._selectionContainer.children[0]);if(this._rowFactory.onSelectionChanged(e,t,r),this.renderRows(0,this._bufferService.rows-1),e&&t){var n=e[1]-this._bufferService.buffer.ydisp,i=t[1]-this._bufferService.buffer.ydisp,o=Math.max(n,0),s=Math.min(i,this._bufferService.rows-1);if(!(o>=this._bufferService.rows||s<0)){var a=document.createDocumentFragment();if(r){var l=e[0]>t[0];a.appendChild(this._createSelectionElement(o,l?t[0]:e[0],l?e[0]:t[0],s-o+1))}else{var c=n===o?e[0]:0,d=o===i?t[0]:this._bufferService.cols;a.appendChild(this._createSelectionElement(o,c,d));var h=s-o-1;if(a.appendChild(this._createSelectionElement(o+1,0,this._bufferService.cols,h)),o!==s){var u=i===s?t[0]:this._bufferService.cols;a.appendChild(this._createSelectionElement(s,0,u))}}this._selectionContainer.appendChild(a)}}},t.prototype._createSelectionElement=function(e,t,r,n){void 0===n&&(n=1);var i=document.createElement("div");return i.style.height=n*this.dimensions.actualCellHeight+"px",i.style.top=e*this.dimensions.actualCellHeight+"px",i.style.left=t*this.dimensions.actualCellWidth+"px",i.style.width=this.dimensions.actualCellWidth*(r-t)+"px",i},t.prototype.onCursorMove=function(){},t.prototype.onOptionsChanged=function(){this._updateDimensions(),this._injectCss()},t.prototype.clear=function(){var e,t;try{for(var r=a(this._rowElements),n=r.next();!n.done;n=r.next())n.value.innerText=""}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}},t.prototype.renderRows=function(e,t){for(var r=this._bufferService.buffer.ybase+this._bufferService.buffer.y,n=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),i=this._optionsService.rawOptions.cursorBlink,o=e;o<=t;o++){var s=this._rowElements[o];s.innerText="";var a=o+this._bufferService.buffer.ydisp,l=this._bufferService.buffer.lines.get(a),c=this._optionsService.rawOptions.cursorStyle;s.appendChild(this._rowFactory.createRow(l,a,a===r,c,n,i,this.dimensions.actualCellWidth,this._bufferService.cols))}},Object.defineProperty(t.prototype,"_terminalSelector",{get:function(){return"."+b+this._terminalClass},enumerable:!1,configurable:!0}),t.prototype._onLinkHover=function(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!0)},t.prototype._onLinkLeave=function(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!1)},t.prototype._setCellUnderline=function(e,t,r,n,i,o){for(;e!==t||r!==n;){var s=this._rowElements[r];if(!s)return;var a=s.children[e];a&&(a.style.textDecoration=o?"underline":"none"),++e>=i&&(e=0,r++)}},o([s(6,u.IInstantiationService),s(7,h.ICharSizeService),s(8,u.IOptionsService),s(9,u.IBufferService)],t)}(d.Disposable);t.DomRenderer=y},3787:function(e,t,r){var n=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},i=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.DomRendererRowFactory=t.CURSOR_STYLE_UNDERLINE_CLASS=t.CURSOR_STYLE_BAR_CLASS=t.CURSOR_STYLE_BLOCK_CLASS=t.CURSOR_BLINK_CLASS=t.CURSOR_CLASS=t.STRIKETHROUGH_CLASS=t.UNDERLINE_CLASS=t.ITALIC_CLASS=t.DIM_CLASS=t.BOLD_CLASS=void 0;var s=r(8803),a=r(643),l=r(511),c=r(2585),d=r(8055),h=r(4725),u=r(4269),f=r(1752);t.BOLD_CLASS="xterm-bold",t.DIM_CLASS="xterm-dim",t.ITALIC_CLASS="xterm-italic",t.UNDERLINE_CLASS="xterm-underline",t.STRIKETHROUGH_CLASS="xterm-strikethrough",t.CURSOR_CLASS="xterm-cursor",t.CURSOR_BLINK_CLASS="xterm-cursor-blink",t.CURSOR_STYLE_BLOCK_CLASS="xterm-cursor-block",t.CURSOR_STYLE_BAR_CLASS="xterm-cursor-bar",t.CURSOR_STYLE_UNDERLINE_CLASS="xterm-cursor-underline";var p=function(){function e(e,t,r,n,i,o){this._document=e,this._colors=t,this._characterJoinerService=r,this._optionsService=n,this._coreService=i,this._decorationService=o,this._workCell=new l.CellData,this._columnSelectMode=!1}return e.prototype.setColors=function(e){this._colors=e},e.prototype.onSelectionChanged=function(e,t,r){this._selectionStart=e,this._selectionEnd=t,this._columnSelectMode=r},e.prototype.createRow=function(e,r,n,i,l,c,h,f){for(var p,b,g=this._document.createDocumentFragment(),m=this._characterJoinerService.getJoinedCharacters(r),v=0,A=Math.min(e.length,f)-1;A>=0;A--)if(e.loadCell(A,this._workCell).getCode()!==a.NULL_CELL_CODE||n&&A===l){v=A+1;break}for(A=0;A<v;A++){e.loadCell(A,this._workCell);var y=this._workCell.getWidth();if(0!==y){var C=!1,w=A,x=this._workCell;if(m.length>0&&A===m[0][0]){C=!0;var S=m.shift();x=new u.JoinedCellData(this._workCell,e.translateToString(!0,S[0],S[1]),S[1]-S[0]),w=S[1]-1,y=x.getWidth()}var $=this._document.createElement("span");if(y>1&&($.style.width=h*y+"px"),C&&($.style.display="inline",l>=A&&l<=w&&(l=A)),!this._coreService.isCursorHidden&&n&&A===l)switch($.classList.add(t.CURSOR_CLASS),c&&$.classList.add(t.CURSOR_BLINK_CLASS),i){case"bar":$.classList.add(t.CURSOR_STYLE_BAR_CLASS);break;case"underline":$.classList.add(t.CURSOR_STYLE_UNDERLINE_CLASS);break;default:$.classList.add(t.CURSOR_STYLE_BLOCK_CLASS)}x.isBold()&&$.classList.add(t.BOLD_CLASS),x.isItalic()&&$.classList.add(t.ITALIC_CLASS),x.isDim()&&$.classList.add(t.DIM_CLASS),x.isUnderline()&&$.classList.add(t.UNDERLINE_CLASS),x.isInvisible()?$.textContent=a.WHITESPACE_CELL_CHAR:$.textContent=x.getChars()||a.WHITESPACE_CELL_CHAR,x.isStrikethrough()&&$.classList.add(t.STRIKETHROUGH_CLASS);var k=x.getFgColor(),E=x.getFgColorMode(),B=x.getBgColor(),L=x.getBgColorMode(),R=!!x.isInverse();if(R){var D=k;k=B,B=D;var M=E;E=L,L=M}var O=void 0,T=void 0,I=!1;try{for(var P=(p=void 0,o(this._decorationService.getDecorationsAtCell(A,r))),F=P.next();!F.done;F=P.next()){var H=F.value;"top"!==H.options.layer&&I||(H.backgroundColorRGB&&(L=50331648,B=H.backgroundColorRGB.rgba>>8&16777215,O=H.backgroundColorRGB),H.foregroundColorRGB&&(E=50331648,k=H.foregroundColorRGB.rgba>>8&16777215,T=H.foregroundColorRGB),I="top"===H.options.layer)}}catch(e){p={error:e}}finally{try{F&&!F.done&&(b=P.return)&&b.call(P)}finally{if(p)throw p.error}}var j=this._isCellInSelection(A,r);I||this._colors.selectionForeground&&j&&(E=50331648,k=this._colors.selectionForeground.rgba>>8&16777215,T=this._colors.selectionForeground),j&&(O=this._colors.selectionOpaque,I=!0),I&&$.classList.add("xterm-decoration-top");var z=void 0;switch(L){case 16777216:case 33554432:z=this._colors.ansi[B],$.classList.add("xterm-bg-"+B);break;case 50331648:z=d.rgba.toColor(B>>16,B>>8&255,255&B),this._addStyle($,"background-color:#"+_((B>>>0).toString(16),"0",6));break;default:R?(z=this._colors.foreground,$.classList.add("xterm-bg-"+s.INVERTED_DEFAULT_COLOR)):z=this._colors.background}switch(E){case 16777216:case 33554432:x.isBold()&&k<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(k+=8),this._applyMinimumContrast($,z,this._colors.ansi[k],x,O,void 0)||$.classList.add("xterm-fg-"+k);break;case 50331648:var N=d.rgba.toColor(k>>16&255,k>>8&255,255&k);this._applyMinimumContrast($,z,N,x,O,T)||this._addStyle($,"color:#"+_(k.toString(16),"0",6));break;default:this._applyMinimumContrast($,z,this._colors.foreground,x,O,void 0)||R&&$.classList.add("xterm-fg-"+s.INVERTED_DEFAULT_COLOR)}g.appendChild($),A=w}}return g},e.prototype._applyMinimumContrast=function(e,t,r,n,i,o){if(1===this._optionsService.rawOptions.minimumContrastRatio||(0,f.excludeFromContrastRatioDemands)(n.getCode()))return!1;var s=void 0;return i||o||(s=this._colors.contrastCache.getColor(t.rgba,r.rgba)),void 0===s&&(s=d.color.ensureContrastRatio(i||t,o||r,this._optionsService.rawOptions.minimumContrastRatio),this._colors.contrastCache.setColor((i||t).rgba,(o||r).rgba,null!=s?s:null)),!!s&&(this._addStyle(e,"color:"+s.css),!0)},e.prototype._addStyle=function(e,t){e.setAttribute("style",""+(e.getAttribute("style")||"")+t+";")},e.prototype._isCellInSelection=function(e,t){var r=this._selectionStart,n=this._selectionEnd;return!(!r||!n)&&(this._columnSelectMode?r[0]<=n[0]?e>=r[0]&&t>=r[1]&&e<n[0]&&t<=n[1]:e<r[0]&&t>=r[1]&&e>=n[0]&&t<=n[1]:t>r[1]&&t<n[1]||r[1]===n[1]&&t===r[1]&&e>=r[0]&&e<n[0]||r[1]<n[1]&&t===n[1]&&e<n[0]||r[1]<n[1]&&t===r[1]&&e>=r[0])},n([i(2,h.ICharacterJoinerService),i(3,c.IOptionsService),i(4,c.ICoreService),i(5,c.IDecorationService)],e)}();function _(e,t,r){for(;e.length<r;)e=t+e;return e}t.DomRendererRowFactory=p},456:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionModel=void 0;var r=function(){function e(e){this._bufferService=e,this.isSelectAllActive=!1,this.selectionStartLength=0}return e.prototype.clearSelection=function(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0},Object.defineProperty(e.prototype,"finalSelectionStart",{get:function(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"finalSelectionEnd",{get:function(){return this.isSelectAllActive?[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1]:this.selectionStart?!this.selectionEnd||this.areSelectionValuesReversed()?(e=this.selectionStart[0]+this.selectionStartLength)>this._bufferService.cols?e%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)-1]:[e%this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)]:[e,this.selectionStart[1]]:this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]?(e=this.selectionStart[0]+this.selectionStartLength)>this._bufferService.cols?[e%this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)]:[Math.max(e,this.selectionEnd[0]),this.selectionEnd[1]]:this.selectionEnd:void 0;var e},enumerable:!1,configurable:!0}),e.prototype.areSelectionValuesReversed=function(){var e=this.selectionStart,t=this.selectionEnd;return!(!e||!t)&&(e[1]>t[1]||e[1]===t[1]&&e[0]>t[0])},e.prototype.onTrim=function(e){return this.selectionStart&&(this.selectionStart[1]-=e),this.selectionEnd&&(this.selectionEnd[1]-=e),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)},e}();t.SelectionModel=r},428:function(e,t,r){var n=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},i=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CharSizeService=void 0;var o=r(2585),s=r(8460),a=function(){function e(e,t,r){this._optionsService=r,this.width=0,this.height=0,this._onCharSizeChange=new s.EventEmitter,this._measureStrategy=new l(e,t,this._optionsService)}return Object.defineProperty(e.prototype,"hasValidSize",{get:function(){return this.width>0&&this.height>0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onCharSizeChange",{get:function(){return this._onCharSizeChange.event},enumerable:!1,configurable:!0}),e.prototype.measure=function(){var e=this._measureStrategy.measure();e.width===this.width&&e.height===this.height||(this.width=e.width,this.height=e.height,this._onCharSizeChange.fire())},n([i(2,o.IOptionsService)],e)}();t.CharSizeService=a;var l=function(){function e(e,t,r){this._document=e,this._parentElement=t,this._optionsService=r,this._result={width:0,height:0},this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W",this._measureElement.setAttribute("aria-hidden","true"),this._parentElement.appendChild(this._measureElement)}return e.prototype.measure=function(){this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var e=this._measureElement.getBoundingClientRect();return 0!==e.width&&0!==e.height&&(this._result.width=e.width,this._result.height=Math.ceil(e.height)),this._result},e}()},4269:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CharacterJoinerService=t.JoinedCellData=void 0;var a=r(3734),l=r(643),c=r(511),d=r(2585),h=function(e){function t(t,r,n){var i=e.call(this)||this;return i.content=0,i.combinedData="",i.fg=t.fg,i.bg=t.bg,i.combinedData=r,i._width=n,i}return i(t,e),t.prototype.isCombined=function(){return 2097152},t.prototype.getWidth=function(){return this._width},t.prototype.getChars=function(){return this.combinedData},t.prototype.getCode=function(){return 2097151},t.prototype.setFromCharData=function(e){throw new Error("not implemented")},t.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},t}(a.AttributeData);t.JoinedCellData=h;var u=function(){function e(e){this._bufferService=e,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new c.CellData}return e.prototype.register=function(e){var t={id:this._nextCharacterJoinerId++,handler:e};return this._characterJoiners.push(t),t.id},e.prototype.deregister=function(e){for(var t=0;t<this._characterJoiners.length;t++)if(this._characterJoiners[t].id===e)return this._characterJoiners.splice(t,1),!0;return!1},e.prototype.getJoinedCharacters=function(e){if(0===this._characterJoiners.length)return[];var t=this._bufferService.buffer.lines.get(e);if(!t||0===t.length)return[];for(var r=[],n=t.translateToString(!0),i=0,o=0,s=0,a=t.getFg(0),c=t.getBg(0),d=0;d<t.getTrimmedLength();d++)if(t.loadCell(d,this._workCell),0!==this._workCell.getWidth()){if(this._workCell.fg!==a||this._workCell.bg!==c){if(d-i>1)for(var h=this._getJoinedRanges(n,s,o,t,i),u=0;u<h.length;u++)r.push(h[u]);i=d,s=o,a=this._workCell.fg,c=this._workCell.bg}o+=this._workCell.getChars().length||l.WHITESPACE_CELL_CHAR.length}if(this._bufferService.cols-i>1)for(h=this._getJoinedRanges(n,s,o,t,i),u=0;u<h.length;u++)r.push(h[u]);return r},e.prototype._getJoinedRanges=function(t,r,n,i,o){var s=t.substring(r,n),a=[];try{a=this._characterJoiners[0].handler(s)}catch(e){console.error(e)}for(var l=1;l<this._characterJoiners.length;l++)try{for(var c=this._characterJoiners[l].handler(s),d=0;d<c.length;d++)e._mergeRanges(a,c[d])}catch(e){console.error(e)}return this._stringRangesToCellRanges(a,i,o),a},e.prototype._stringRangesToCellRanges=function(e,t,r){var n=0,i=!1,o=0,s=e[n];if(s){for(var a=r;a<this._bufferService.cols;a++){var c=t.getWidth(a),d=t.getString(a).length||l.WHITESPACE_CELL_CHAR.length;if(0!==c){if(!i&&s[0]<=o&&(s[0]=a,i=!0),s[1]<=o){if(s[1]=a,!(s=e[++n]))break;s[0]<=o?(s[0]=a,i=!0):i=!1}o+=d}}s&&(s[1]=this._bufferService.cols)}},e._mergeRanges=function(e,t){for(var r=!1,n=0;n<e.length;n++){var i=e[n];if(r){if(t[1]<=i[0])return e[n-1][1]=t[1],e;if(t[1]<=i[1])return e[n-1][1]=Math.max(t[1],i[1]),e.splice(n,1),e;e.splice(n,1),n--}else{if(t[1]<=i[0])return e.splice(n,0,t),e;if(t[1]<=i[1])return i[0]=Math.min(t[0],i[0]),e;t[0]<i[1]&&(i[0]=Math.min(t[0],i[0]),r=!0)}}return r?e[e.length-1][1]=t[1]:e.push(t),e},e=o([s(0,d.IBufferService)],e)}();t.CharacterJoinerService=u},5114:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CoreBrowserService=void 0;var r=function(){function e(e){this._textarea=e}return Object.defineProperty(e.prototype,"isFocused",{get:function(){return(this._textarea.getRootNode?this._textarea.getRootNode():document).activeElement===this._textarea&&document.hasFocus()},enumerable:!1,configurable:!0}),e}();t.CoreBrowserService=r},8934:function(e,t,r){var n=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},i=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.MouseService=void 0;var o=r(4725),s=r(9806),a=function(){function e(e,t){this._renderService=e,this._charSizeService=t}return e.prototype.getCoords=function(e,t,r,n,i){return(0,s.getCoords)(window,e,t,r,n,this._charSizeService.hasValidSize,this._renderService.dimensions.actualCellWidth,this._renderService.dimensions.actualCellHeight,i)},e.prototype.getRawByteCoords=function(e,t,r,n){var i=this.getCoords(e,t,r,n);return(0,s.getRawByteCoords)(i)},n([i(0,o.IRenderService),i(1,o.ICharSizeService)],e)}();t.MouseService=a},3230:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.RenderService=void 0;var a=r(6193),l=r(8460),c=r(844),d=r(5596),h=r(3656),u=r(2585),f=r(4725),p=function(e){function t(t,r,n,i,o,s,c){var u=e.call(this)||this;if(u._renderer=t,u._rowCount=r,u._charSizeService=o,u._isPaused=!1,u._needsFullRefresh=!1,u._isNextRenderRedrawOnly=!0,u._needsSelectionRefresh=!1,u._canvasWidth=0,u._canvasHeight=0,u._selectionState={start:void 0,end:void 0,columnSelectMode:!1},u._onDimensionsChange=new l.EventEmitter,u._onRenderedViewportChange=new l.EventEmitter,u._onRender=new l.EventEmitter,u._onRefreshRequest=new l.EventEmitter,u.register({dispose:function(){return u._renderer.dispose()}}),u._renderDebouncer=new a.RenderDebouncer((function(e,t){return u._renderRows(e,t)})),u.register(u._renderDebouncer),u._screenDprMonitor=new d.ScreenDprMonitor,u._screenDprMonitor.setListener((function(){return u.onDevicePixelRatioChange()})),u.register(u._screenDprMonitor),u.register(c.onResize((function(){return u._fullRefresh()}))),u.register(c.buffers.onBufferActivate((function(){var e;return null===(e=u._renderer)||void 0===e?void 0:e.clear()}))),u.register(i.onOptionChange((function(){return u._handleOptionsChanged()}))),u.register(u._charSizeService.onCharSizeChange((function(){return u.onCharSizeChanged()}))),u.register(s.onDecorationRegistered((function(){return u._fullRefresh()}))),u.register(s.onDecorationRemoved((function(){return u._fullRefresh()}))),u._renderer.onRequestRedraw((function(e){return u.refreshRows(e.start,e.end,!0)})),u.register((0,h.addDisposableDomListener)(window,"resize",(function(){return u.onDevicePixelRatioChange()}))),"IntersectionObserver"in window){var f=new IntersectionObserver((function(e){return u._onIntersectionChange(e[e.length-1])}),{threshold:0});f.observe(n),u.register({dispose:function(){return f.disconnect()}})}return u}return i(t,e),Object.defineProperty(t.prototype,"onDimensionsChange",{get:function(){return this._onDimensionsChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRenderedViewportChange",{get:function(){return this._onRenderedViewportChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRefreshRequest",{get:function(){return this._onRefreshRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dimensions",{get:function(){return this._renderer.dimensions},enumerable:!1,configurable:!0}),t.prototype._onIntersectionChange=function(e){this._isPaused=void 0===e.isIntersecting?0===e.intersectionRatio:!e.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)},t.prototype.refreshRows=function(e,t,r){void 0===r&&(r=!1),this._isPaused?this._needsFullRefresh=!0:(r||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(e,t,this._rowCount))},t.prototype._renderRows=function(e,t){this._renderer.renderRows(e,t),this._needsSelectionRefresh&&(this._renderer.onSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRenderedViewportChange.fire({start:e,end:t}),this._onRender.fire({start:e,end:t}),this._isNextRenderRedrawOnly=!0},t.prototype.resize=function(e,t){this._rowCount=t,this._fireOnCanvasResize()},t.prototype._handleOptionsChanged=function(){this._renderer.onOptionsChanged(),this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize()},t.prototype._fireOnCanvasResize=function(){this._renderer.dimensions.canvasWidth===this._canvasWidth&&this._renderer.dimensions.canvasHeight===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.dimensions)},t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype.setRenderer=function(e){var t=this;this._renderer.dispose(),this._renderer=e,this._renderer.onRequestRedraw((function(e){return t.refreshRows(e.start,e.end,!0)})),this._needsSelectionRefresh=!0,this._fullRefresh()},t.prototype.addRefreshCallback=function(e){return this._renderDebouncer.addRefreshCallback(e)},t.prototype._fullRefresh=function(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)},t.prototype.clearTextureAtlas=function(){var e,t;null===(t=null===(e=this._renderer)||void 0===e?void 0:e.clearTextureAtlas)||void 0===t||t.call(e),this._fullRefresh()},t.prototype.setColors=function(e){this._renderer.setColors(e),this._fullRefresh()},t.prototype.onDevicePixelRatioChange=function(){this._charSizeService.measure(),this._renderer.onDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1)},t.prototype.onResize=function(e,t){this._renderer.onResize(e,t),this._fullRefresh()},t.prototype.onCharSizeChanged=function(){this._renderer.onCharSizeChanged()},t.prototype.onBlur=function(){this._renderer.onBlur()},t.prototype.onFocus=function(){this._renderer.onFocus()},t.prototype.onSelectionChanged=function(e,t,r){this._selectionState.start=e,this._selectionState.end=t,this._selectionState.columnSelectMode=r,this._renderer.onSelectionChanged(e,t,r)},t.prototype.onCursorMove=function(){this._renderer.onCursorMove()},t.prototype.clear=function(){this._renderer.clear()},o([s(3,u.IOptionsService),s(4,f.ICharSizeService),s(5,u.IDecorationService),s(6,u.IBufferService)],t)}(c.Disposable);t.RenderService=p},9312:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionService=void 0;var a=r(6114),l=r(456),c=r(511),d=r(8460),h=r(4725),u=r(2585),f=r(9806),p=r(9504),_=r(844),b=r(4841),g=String.fromCharCode(160),m=new RegExp(g,"g"),v=function(e){function t(t,r,n,i,o,s,a,h){var u=e.call(this)||this;return u._element=t,u._screenElement=r,u._linkifier=n,u._bufferService=i,u._coreService=o,u._mouseService=s,u._optionsService=a,u._renderService=h,u._dragScrollAmount=0,u._enabled=!0,u._workCell=new c.CellData,u._mouseDownTimeStamp=0,u._oldHasSelection=!1,u._oldSelectionStart=void 0,u._oldSelectionEnd=void 0,u._onLinuxMouseSelection=u.register(new d.EventEmitter),u._onRedrawRequest=u.register(new d.EventEmitter),u._onSelectionChange=u.register(new d.EventEmitter),u._onRequestScrollLines=u.register(new d.EventEmitter),u._mouseMoveListener=function(e){return u._onMouseMove(e)},u._mouseUpListener=function(e){return u._onMouseUp(e)},u._coreService.onUserInput((function(){u.hasSelection&&u.clearSelection()})),u._trimListener=u._bufferService.buffer.lines.onTrim((function(e){return u._onTrim(e)})),u.register(u._bufferService.buffers.onBufferActivate((function(e){return u._onBufferActivate(e)}))),u.enable(),u._model=new l.SelectionModel(u._bufferService),u._activeSelectionMode=0,u}return i(t,e),Object.defineProperty(t.prototype,"onLinuxMouseSelection",{get:function(){return this._onLinuxMouseSelection.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestRedraw",{get:function(){return this._onRedrawRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestScrollLines",{get:function(){return this._onRequestScrollLines.event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){this._removeMouseDownListeners()},t.prototype.reset=function(){this.clearSelection()},t.prototype.disable=function(){this.clearSelection(),this._enabled=!1},t.prototype.enable=function(){this._enabled=!0},Object.defineProperty(t.prototype,"selectionStart",{get:function(){return this._model.finalSelectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionEnd",{get:function(){return this._model.finalSelectionEnd},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasSelection",{get:function(){var e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;return!(!e||!t||e[0]===t[0]&&e[1]===t[1])},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionText",{get:function(){var e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;if(!e||!t)return"";var r=this._bufferService.buffer,n=[];if(3===this._activeSelectionMode){if(e[0]===t[0])return"";for(var i=e[0]<t[0]?e[0]:t[0],o=e[0]<t[0]?t[0]:e[0],s=e[1];s<=t[1];s++){var l=r.translateBufferLineToString(s,!0,i,o);n.push(l)}}else{var c=e[1]===t[1]?t[0]:void 0;for(n.push(r.translateBufferLineToString(e[1],!0,e[0],c)),s=e[1]+1;s<=t[1]-1;s++){var d=r.lines.get(s);l=r.translateBufferLineToString(s,!0),(null==d?void 0:d.isWrapped)?n[n.length-1]+=l:n.push(l)}e[1]!==t[1]&&(d=r.lines.get(t[1]),l=r.translateBufferLineToString(t[1],!0,0,t[0]),d&&d.isWrapped?n[n.length-1]+=l:n.push(l))}return n.map((function(e){return e.replace(m," ")})).join(a.isWindows?"\r\n":"\n")},enumerable:!1,configurable:!0}),t.prototype.clearSelection=function(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()},t.prototype.refresh=function(e){var t=this;this._refreshAnimationFrame||(this._refreshAnimationFrame=window.requestAnimationFrame((function(){return t._refresh()}))),a.isLinux&&e&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)},t.prototype._refresh=function(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:3===this._activeSelectionMode})},t.prototype._isClickInSelection=function(e){var t=this._getMouseBufferCoords(e),r=this._model.finalSelectionStart,n=this._model.finalSelectionEnd;return!!(r&&n&&t)&&this._areCoordsInSelection(t,r,n)},t.prototype.isCellInSelection=function(e,t){var r=this._model.finalSelectionStart,n=this._model.finalSelectionEnd;return!(!r||!n)&&this._areCoordsInSelection([e,t],r,n)},t.prototype._areCoordsInSelection=function(e,t,r){return e[1]>t[1]&&e[1]<r[1]||t[1]===r[1]&&e[1]===t[1]&&e[0]>=t[0]&&e[0]<r[0]||t[1]<r[1]&&e[1]===r[1]&&e[0]<r[0]||t[1]<r[1]&&e[1]===t[1]&&e[0]>=t[0]},t.prototype._selectWordAtCursor=function(e,t){var r,n,i=null===(n=null===(r=this._linkifier.currentLink)||void 0===r?void 0:r.link)||void 0===n?void 0:n.range;if(i)return this._model.selectionStart=[i.start.x-1,i.start.y-1],this._model.selectionStartLength=(0,b.getRangeLength)(i,this._bufferService.cols),this._model.selectionEnd=void 0,!0;var o=this._getMouseBufferCoords(e);return!!o&&(this._selectWordAt(o,t),this._model.selectionEnd=void 0,!0)},t.prototype.selectAll=function(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()},t.prototype.selectLines=function(e,t){this._model.clearSelection(),e=Math.max(e,0),t=Math.min(t,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,e],this._model.selectionEnd=[this._bufferService.cols,t],this.refresh(),this._onSelectionChange.fire()},t.prototype._onTrim=function(e){this._model.onTrim(e)&&this.refresh()},t.prototype._getMouseBufferCoords=function(e){var t=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(t)return t[0]--,t[1]--,t[1]+=this._bufferService.buffer.ydisp,t},t.prototype._getMouseEventScrollAmount=function(e){var t=(0,f.getCoordsRelativeToElement)(window,e,this._screenElement)[1],r=this._renderService.dimensions.canvasHeight;return t>=0&&t<=r?0:(t>r&&(t-=r),t=Math.min(Math.max(t,-50),50),(t/=50)/Math.abs(t)+Math.round(14*t))},t.prototype.shouldForceSelection=function(e){return a.isMac?e.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:e.shiftKey},t.prototype.onMouseDown=function(e){if(this._mouseDownTimeStamp=e.timeStamp,(2!==e.button||!this.hasSelection)&&0===e.button){if(!this._enabled){if(!this.shouldForceSelection(e))return;e.stopPropagation()}e.preventDefault(),this._dragScrollAmount=0,this._enabled&&e.shiftKey?this._onIncrementalClick(e):1===e.detail?this._onSingleClick(e):2===e.detail?this._onDoubleClick(e):3===e.detail&&this._onTripleClick(e),this._addMouseDownListeners(),this.refresh(!0)}},t.prototype._addMouseDownListeners=function(){var e=this;this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=window.setInterval((function(){return e._dragScroll()}),50)},t.prototype._removeMouseDownListeners=function(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0},t.prototype._onIncrementalClick=function(e){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(e))},t.prototype._onSingleClick=function(e){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(e)?3:0,this._model.selectionStart=this._getMouseBufferCoords(e),this._model.selectionStart){this._model.selectionEnd=void 0;var t=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);t&&t.length!==this._model.selectionStart[0]&&0===t.hasWidth(this._model.selectionStart[0])&&this._model.selectionStart[0]++}},t.prototype._onDoubleClick=function(e){this._selectWordAtCursor(e,!0)&&(this._activeSelectionMode=1)},t.prototype._onTripleClick=function(e){var t=this._getMouseBufferCoords(e);t&&(this._activeSelectionMode=2,this._selectLineAt(t[1]))},t.prototype.shouldColumnSelect=function(e){return e.altKey&&!(a.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)},t.prototype._onMouseMove=function(e){if(e.stopImmediatePropagation(),this._model.selectionStart){var t=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(e),this._model.selectionEnd){2===this._activeSelectionMode?this._model.selectionEnd[1]<this._model.selectionStart[1]?this._model.selectionEnd[0]=0:this._model.selectionEnd[0]=this._bufferService.cols:1===this._activeSelectionMode&&this._selectToWordAt(this._model.selectionEnd),this._dragScrollAmount=this._getMouseEventScrollAmount(e),3!==this._activeSelectionMode&&(this._dragScrollAmount>0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));var r=this._bufferService.buffer;if(this._model.selectionEnd[1]<r.lines.length){var n=r.lines.get(this._model.selectionEnd[1]);n&&0===n.hasWidth(this._model.selectionEnd[0])&&this._model.selectionEnd[0]++}t&&t[0]===this._model.selectionEnd[0]&&t[1]===this._model.selectionEnd[1]||this.refresh(!0)}else this.refresh(!0)}},t.prototype._dragScroll=function(){if(this._model.selectionEnd&&this._model.selectionStart&&this._dragScrollAmount){this._onRequestScrollLines.fire({amount:this._dragScrollAmount,suppressScrollEvent:!1});var e=this._bufferService.buffer;this._dragScrollAmount>0?(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(e.ydisp+this._bufferService.rows,e.lines.length-1)):(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=e.ydisp),this.refresh()}},t.prototype._onMouseUp=function(e){var t=e.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&t<500&&e.altKey&&this._optionsService.getOption("altClickMovesCursor")){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){var r=this._mouseService.getCoords(e,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(r&&void 0!==r[0]&&void 0!==r[1]){var n=(0,p.moveToCellSequence)(r[0]-1,r[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(n,!0)}}}else this._fireEventIfSelectionChanged()},t.prototype._fireEventIfSelectionChanged=function(){var e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd,r=!(!e||!t||e[0]===t[0]&&e[1]===t[1]);r?e&&t&&(this._oldSelectionStart&&this._oldSelectionEnd&&e[0]===this._oldSelectionStart[0]&&e[1]===this._oldSelectionStart[1]&&t[0]===this._oldSelectionEnd[0]&&t[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(e,t,r)):this._oldHasSelection&&this._fireOnSelectionChange(e,t,r)},t.prototype._fireOnSelectionChange=function(e,t,r){this._oldSelectionStart=e,this._oldSelectionEnd=t,this._oldHasSelection=r,this._onSelectionChange.fire()},t.prototype._onBufferActivate=function(e){var t=this;this.clearSelection(),this._trimListener.dispose(),this._trimListener=e.activeBuffer.lines.onTrim((function(e){return t._onTrim(e)}))},t.prototype._convertViewportColToCharacterIndex=function(e,t){for(var r=t[0],n=0;t[0]>=n;n++){var i=e.loadCell(n,this._workCell).getChars().length;0===this._workCell.getWidth()?r--:i>1&&t[0]!==n&&(r+=i-1)}return r},t.prototype.setSelection=function(e,t,r){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[e,t],this._model.selectionStartLength=r,this.refresh(),this._fireEventIfSelectionChanged()},t.prototype.rightClickSelect=function(e){this._isClickInSelection(e)||(this._selectWordAtCursor(e,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())},t.prototype._getWordAt=function(e,t,r,n){if(void 0===r&&(r=!0),void 0===n&&(n=!0),!(e[0]>=this._bufferService.cols)){var i=this._bufferService.buffer,o=i.lines.get(e[1]);if(o){var s=i.translateBufferLineToString(e[1],!1),a=this._convertViewportColToCharacterIndex(o,e),l=a,c=e[0]-a,d=0,h=0,u=0,f=0;if(" "===s.charAt(a)){for(;a>0&&" "===s.charAt(a-1);)a--;for(;l<s.length&&" "===s.charAt(l+1);)l++}else{var p=e[0],_=e[0];0===o.getWidth(p)&&(d++,p--),2===o.getWidth(_)&&(h++,_++);var b=o.getString(_).length;for(b>1&&(f+=b-1,l+=b-1);p>0&&a>0&&!this._isCharWordSeparator(o.loadCell(p-1,this._workCell));){o.loadCell(p-1,this._workCell);var g=this._workCell.getChars().length;0===this._workCell.getWidth()?(d++,p--):g>1&&(u+=g-1,a-=g-1),a--,p--}for(;_<o.length&&l+1<s.length&&!this._isCharWordSeparator(o.loadCell(_+1,this._workCell));){o.loadCell(_+1,this._workCell);var m=this._workCell.getChars().length;2===this._workCell.getWidth()?(h++,_++):m>1&&(f+=m-1,l+=m-1),l++,_++}}l++;var v=a+c-d+u,A=Math.min(this._bufferService.cols,l-a+d+h-u-f);if(t||""!==s.slice(a,l).trim()){if(r&&0===v&&32!==o.getCodePoint(0)){var y=i.lines.get(e[1]-1);if(y&&o.isWrapped&&32!==y.getCodePoint(this._bufferService.cols-1)){var C=this._getWordAt([this._bufferService.cols-1,e[1]-1],!1,!0,!1);if(C){var w=this._bufferService.cols-C.start;v-=w,A+=w}}}if(n&&v+A===this._bufferService.cols&&32!==o.getCodePoint(this._bufferService.cols-1)){var x=i.lines.get(e[1]+1);if((null==x?void 0:x.isWrapped)&&32!==x.getCodePoint(0)){var S=this._getWordAt([0,e[1]+1],!1,!1,!0);S&&(A+=S.length)}}return{start:v,length:A}}}}},t.prototype._selectWordAt=function(e,t){var r=this._getWordAt(e,t);if(r){for(;r.start<0;)r.start+=this._bufferService.cols,e[1]--;this._model.selectionStart=[r.start,e[1]],this._model.selectionStartLength=r.length}},t.prototype._selectToWordAt=function(e){var t=this._getWordAt(e,!0);if(t){for(var r=e[1];t.start<0;)t.start+=this._bufferService.cols,r--;if(!this._model.areSelectionValuesReversed())for(;t.start+t.length>this._bufferService.cols;)t.length-=this._bufferService.cols,r++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?t.start:t.start+t.length,r]}},t.prototype._isCharWordSeparator=function(e){return 0!==e.getWidth()&&this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars())>=0},t.prototype._selectLineAt=function(e){var t=this._bufferService.buffer.getWrappedRangeForLine(e),r={start:{x:0,y:t.first},end:{x:this._bufferService.cols-1,y:t.last}};this._model.selectionStart=[0,t.first],this._model.selectionEnd=void 0,this._model.selectionStartLength=(0,b.getRangeLength)(r,this._bufferService.cols)},o([s(3,u.IBufferService),s(4,u.ICoreService),s(5,h.IMouseService),s(6,u.IOptionsService),s(7,h.IRenderService)],t)}(_.Disposable);t.SelectionService=v},4725:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ICharacterJoinerService=t.ISoundService=t.ISelectionService=t.IRenderService=t.IMouseService=t.ICoreBrowserService=t.ICharSizeService=void 0;var n=r(8343);t.ICharSizeService=(0,n.createDecorator)("CharSizeService"),t.ICoreBrowserService=(0,n.createDecorator)("CoreBrowserService"),t.IMouseService=(0,n.createDecorator)("MouseService"),t.IRenderService=(0,n.createDecorator)("RenderService"),t.ISelectionService=(0,n.createDecorator)("SelectionService"),t.ISoundService=(0,n.createDecorator)("SoundService"),t.ICharacterJoinerService=(0,n.createDecorator)("CharacterJoinerService")},357:function(e,t,r){var n=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},i=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.SoundService=void 0;var o=r(2585),s=function(){function e(e){this._optionsService=e}return Object.defineProperty(e,"audioContext",{get:function(){if(!e._audioContext){var t=window.AudioContext||window.webkitAudioContext;if(!t)return console.warn("Web Audio API is not supported by this browser. Consider upgrading to the latest version"),null;e._audioContext=new t}return e._audioContext},enumerable:!1,configurable:!0}),e.prototype.playBellSound=function(){var t=e.audioContext;if(t){var r=t.createBufferSource();t.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._optionsService.rawOptions.bellSound)),(function(e){r.buffer=e,r.connect(t.destination),r.start(0)}))}},e.prototype._base64ToArrayBuffer=function(e){for(var t=window.atob(e),r=t.length,n=new Uint8Array(r),i=0;i<r;i++)n[i]=t.charCodeAt(i);return n.buffer},e.prototype._removeMimeType=function(e){return e.split(",")[1]},e=n([i(0,o.IOptionsService)],e)}();t.SoundService=s},6349:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CircularList=void 0;var n=r(8460),i=function(){function e(e){this._maxLength=e,this.onDeleteEmitter=new n.EventEmitter,this.onInsertEmitter=new n.EventEmitter,this.onTrimEmitter=new n.EventEmitter,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}return Object.defineProperty(e.prototype,"onDelete",{get:function(){return this.onDeleteEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onInsert",{get:function(){return this.onInsertEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onTrim",{get:function(){return this.onTrimEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxLength",{get:function(){return this._maxLength},set:function(e){if(this._maxLength!==e){for(var t=new Array(e),r=0;r<Math.min(e,this.length);r++)t[r]=this._array[this._getCyclicIndex(r)];this._array=t,this._maxLength=e,this._startIndex=0}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._length},set:function(e){if(e>this._length)for(var t=this._length;t<e;t++)this._array[t]=void 0;this._length=e},enumerable:!1,configurable:!0}),e.prototype.get=function(e){return this._array[this._getCyclicIndex(e)]},e.prototype.set=function(e,t){this._array[this._getCyclicIndex(e)]=t},e.prototype.push=function(e){this._array[this._getCyclicIndex(this._length)]=e,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++},e.prototype.recycle=function(){if(this._length!==this._maxLength)throw new Error("Can only recycle when the buffer is full");return this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]},Object.defineProperty(e.prototype,"isFull",{get:function(){return this._length===this._maxLength},enumerable:!1,configurable:!0}),e.prototype.pop=function(){return this._array[this._getCyclicIndex(this._length---1)]},e.prototype.splice=function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];if(t){for(var i=e;i<this._length-t;i++)this._array[this._getCyclicIndex(i)]=this._array[this._getCyclicIndex(i+t)];this._length-=t,this.onDeleteEmitter.fire({index:e,amount:t})}for(i=this._length-1;i>=e;i--)this._array[this._getCyclicIndex(i+r.length)]=this._array[this._getCyclicIndex(i)];for(i=0;i<r.length;i++)this._array[this._getCyclicIndex(e+i)]=r[i];if(r.length&&this.onInsertEmitter.fire({index:e,amount:r.length}),this._length+r.length>this._maxLength){var o=this._length+r.length-this._maxLength;this._startIndex+=o,this._length=this._maxLength,this.onTrimEmitter.fire(o)}else this._length+=r.length},e.prototype.trimStart=function(e){e>this._length&&(e=this._length),this._startIndex+=e,this._length-=e,this.onTrimEmitter.fire(e)},e.prototype.shiftElements=function(e,t,r){if(!(t<=0)){if(e<0||e>=this._length)throw new Error("start argument out of range");if(e+r<0)throw new Error("Cannot shift elements in list beyond index 0");if(r>0){for(var n=t-1;n>=0;n--)this.set(e+n+r,this.get(e+n));var i=e+t+r-this._length;if(i>0)for(this._length+=i;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(n=0;n<t;n++)this.set(e+n+r,this.get(e+n))}},e.prototype._getCyclicIndex=function(e){return(this._startIndex+e)%this._maxLength},e}();t.CircularList=i},1439:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.clone=void 0,t.clone=function e(t,r){if(void 0===r&&(r=5),"object"!=typeof t)return t;var n=Array.isArray(t)?[]:{};for(var i in t)n[i]=r<=1?t[i]:t[i]&&e(t[i],r-1);return n}},8055:function(e,t){var r,n,i,o,s=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s};function a(e){var t=e.toString(16);return t.length<2?"0"+t:t}function l(e,t){return e<t?(t+.05)/(e+.05):(e+.05)/(t+.05)}Object.defineProperty(t,"__esModule",{value:!0}),t.contrastRatio=t.toPaddedHex=t.rgba=t.rgb=t.css=t.color=t.channels=void 0,function(e){e.toCss=function(e,t,r,n){return void 0!==n?"#"+a(e)+a(t)+a(r)+a(n):"#"+a(e)+a(t)+a(r)},e.toRgba=function(e,t,r,n){return void 0===n&&(n=255),(e<<24|t<<16|r<<8|n)>>>0}}(r=t.channels||(t.channels={})),(n=t.color||(t.color={})).blend=function(e,t){var n=(255&t.rgba)/255;if(1===n)return{css:t.css,rgba:t.rgba};var i=t.rgba>>24&255,o=t.rgba>>16&255,s=t.rgba>>8&255,a=e.rgba>>24&255,l=e.rgba>>16&255,c=e.rgba>>8&255,d=a+Math.round((i-a)*n),h=l+Math.round((o-l)*n),u=c+Math.round((s-c)*n);return{css:r.toCss(d,h,u),rgba:r.toRgba(d,h,u)}},n.isOpaque=function(e){return 255==(255&e.rgba)},n.ensureContrastRatio=function(e,t,r){var n=o.ensureContrastRatio(e.rgba,t.rgba,r);if(n)return o.toColor(n>>24&255,n>>16&255,n>>8&255)},n.opaque=function(e){var t=(255|e.rgba)>>>0,n=s(o.toChannels(t),3),i=n[0],a=n[1],l=n[2];return{css:r.toCss(i,a,l),rgba:t}},n.opacity=function(e,t){var n=Math.round(255*t),i=s(o.toChannels(e.rgba),3),a=i[0],l=i[1],c=i[2];return{css:r.toCss(a,l,c,n),rgba:r.toRgba(a,l,c,n)}},n.toColorRGB=function(e){return[e.rgba>>24&255,e.rgba>>16&255,e.rgba>>8&255]},(t.css||(t.css={})).toColor=function(e){if(e.match(/#[0-9a-f]{3,8}/i))switch(e.length){case 4:var t=parseInt(e.slice(1,2).repeat(2),16),r=parseInt(e.slice(2,3).repeat(2),16),n=parseInt(e.slice(3,4).repeat(2),16);return o.toColor(t,r,n);case 5:t=parseInt(e.slice(1,2).repeat(2),16),r=parseInt(e.slice(2,3).repeat(2),16),n=parseInt(e.slice(3,4).repeat(2),16);var i=parseInt(e.slice(4,5).repeat(2),16);return o.toColor(t,r,n,i);case 7:return{css:e,rgba:(parseInt(e.slice(1),16)<<8|255)>>>0};case 9:return{css:e,rgba:parseInt(e.slice(1),16)>>>0}}var s=e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(s)return t=parseInt(s[1]),r=parseInt(s[2]),n=parseInt(s[3]),i=Math.round(255*(void 0===s[5]?1:parseFloat(s[5]))),o.toColor(t,r,n,i);throw new Error("css.toColor: Unsupported css format")},function(e){function t(e,t,r){var n=e/255,i=t/255,o=r/255;return.2126*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))+.7152*(i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4))+.0722*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))}e.relativeLuminance=function(e){return t(e>>16&255,e>>8&255,255&e)},e.relativeLuminance2=t}(i=t.rgb||(t.rgb={})),function(e){function t(e,t,r){for(var n=e>>24&255,o=e>>16&255,s=e>>8&255,a=t>>24&255,c=t>>16&255,d=t>>8&255,h=l(i.relativeLuminance2(a,c,d),i.relativeLuminance2(n,o,s));h<r&&(a>0||c>0||d>0);)a-=Math.max(0,Math.ceil(.1*a)),c-=Math.max(0,Math.ceil(.1*c)),d-=Math.max(0,Math.ceil(.1*d)),h=l(i.relativeLuminance2(a,c,d),i.relativeLuminance2(n,o,s));return(a<<24|c<<16|d<<8|255)>>>0}function n(e,t,r){for(var n=e>>24&255,o=e>>16&255,s=e>>8&255,a=t>>24&255,c=t>>16&255,d=t>>8&255,h=l(i.relativeLuminance2(a,c,d),i.relativeLuminance2(n,o,s));h<r&&(a<255||c<255||d<255);)a=Math.min(255,a+Math.ceil(.1*(255-a))),c=Math.min(255,c+Math.ceil(.1*(255-c))),d=Math.min(255,d+Math.ceil(.1*(255-d))),h=l(i.relativeLuminance2(a,c,d),i.relativeLuminance2(n,o,s));return(a<<24|c<<16|d<<8|255)>>>0}e.ensureContrastRatio=function(e,r,o){var s=i.relativeLuminance(e>>8),a=i.relativeLuminance(r>>8);if(l(s,a)<o){if(a<s){var c=t(e,r,o),d=l(s,i.relativeLuminance(c>>8));if(d<o){var h=n(e,e,o);return d>l(s,i.relativeLuminance(h>>8))?c:h}return c}var u=n(e,r,o),f=l(s,i.relativeLuminance(u>>8));return f<o?(h=t(e,e,o),f>l(s,i.relativeLuminance(h>>8))?u:h):u}},e.reduceLuminance=t,e.increaseLuminance=n,e.toChannels=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]},e.toColor=function(e,t,n,i){return{css:r.toCss(e,t,n,i),rgba:r.toRgba(e,t,n,i)}}}(o=t.rgba||(t.rgba={})),t.toPaddedHex=a,t.contrastRatio=l},8969:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreTerminal=void 0;var s=r(844),a=r(2585),l=r(4348),c=r(7866),d=r(744),h=r(7302),u=r(6975),f=r(8460),p=r(1753),_=r(3730),b=r(1480),g=r(7994),m=r(9282),v=r(5435),A=r(5981),y=!1,C=function(e){function t(t){var r=e.call(this)||this;return r._onBinary=new f.EventEmitter,r._onData=new f.EventEmitter,r._onLineFeed=new f.EventEmitter,r._onResize=new f.EventEmitter,r._onScroll=new f.EventEmitter,r._onWriteParsed=new f.EventEmitter,r._instantiationService=new l.InstantiationService,r.optionsService=new h.OptionsService(t),r._instantiationService.setService(a.IOptionsService,r.optionsService),r._bufferService=r.register(r._instantiationService.createInstance(d.BufferService)),r._instantiationService.setService(a.IBufferService,r._bufferService),r._logService=r._instantiationService.createInstance(c.LogService),r._instantiationService.setService(a.ILogService,r._logService),r.coreService=r.register(r._instantiationService.createInstance(u.CoreService,(function(){return r.scrollToBottom()}))),r._instantiationService.setService(a.ICoreService,r.coreService),r.coreMouseService=r._instantiationService.createInstance(p.CoreMouseService),r._instantiationService.setService(a.ICoreMouseService,r.coreMouseService),r._dirtyRowService=r._instantiationService.createInstance(_.DirtyRowService),r._instantiationService.setService(a.IDirtyRowService,r._dirtyRowService),r.unicodeService=r._instantiationService.createInstance(b.UnicodeService),r._instantiationService.setService(a.IUnicodeService,r.unicodeService),r._charsetService=r._instantiationService.createInstance(g.CharsetService),r._instantiationService.setService(a.ICharsetService,r._charsetService),r._inputHandler=new v.InputHandler(r._bufferService,r._charsetService,r.coreService,r._dirtyRowService,r._logService,r.optionsService,r.coreMouseService,r.unicodeService),r.register((0,f.forwardEvent)(r._inputHandler.onLineFeed,r._onLineFeed)),r.register(r._inputHandler),r.register((0,f.forwardEvent)(r._bufferService.onResize,r._onResize)),r.register((0,f.forwardEvent)(r.coreService.onData,r._onData)),r.register((0,f.forwardEvent)(r.coreService.onBinary,r._onBinary)),r.register(r.optionsService.onOptionChange((function(e){return r._updateOptions(e)}))),r.register(r._bufferService.onScroll((function(e){r._onScroll.fire({position:r._bufferService.buffer.ydisp,source:0}),r._dirtyRowService.markRangeDirty(r._bufferService.buffer.scrollTop,r._bufferService.buffer.scrollBottom)}))),r.register(r._inputHandler.onScroll((function(e){r._onScroll.fire({position:r._bufferService.buffer.ydisp,source:0}),r._dirtyRowService.markRangeDirty(r._bufferService.buffer.scrollTop,r._bufferService.buffer.scrollBottom)}))),r._writeBuffer=new A.WriteBuffer((function(e,t){return r._inputHandler.parse(e,t)})),r.register((0,f.forwardEvent)(r._writeBuffer.onWriteParsed,r._onWriteParsed)),r}return i(t,e),Object.defineProperty(t.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onWriteParsed",{get:function(){return this._onWriteParsed.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onScroll",{get:function(){var e=this;return this._onScrollApi||(this._onScrollApi=new f.EventEmitter,this.register(this._onScroll.event((function(t){var r;null===(r=e._onScrollApi)||void 0===r||r.fire(t.position)})))),this._onScrollApi.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"cols",{get:function(){return this._bufferService.cols},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rows",{get:function(){return this._bufferService.rows},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"buffers",{get:function(){return this._bufferService.buffers},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"options",{get:function(){return this.optionsService.options},set:function(e){for(var t in e)this.optionsService.options[t]=e[t]},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){var t;this._isDisposed||(e.prototype.dispose.call(this),null===(t=this._windowsMode)||void 0===t||t.dispose(),this._windowsMode=void 0)},t.prototype.write=function(e,t){this._writeBuffer.write(e,t)},t.prototype.writeSync=function(e,t){this._logService.logLevel<=a.LogLevelEnum.WARN&&!y&&(this._logService.warn("writeSync is unreliable and will be removed soon."),y=!0),this._writeBuffer.writeSync(e,t)},t.prototype.resize=function(e,t){isNaN(e)||isNaN(t)||(e=Math.max(e,d.MINIMUM_COLS),t=Math.max(t,d.MINIMUM_ROWS),this._bufferService.resize(e,t))},t.prototype.scroll=function(e,t){void 0===t&&(t=!1),this._bufferService.scroll(e,t)},t.prototype.scrollLines=function(e,t,r){this._bufferService.scrollLines(e,t,r)},t.prototype.scrollPages=function(e){this._bufferService.scrollPages(e)},t.prototype.scrollToTop=function(){this._bufferService.scrollToTop()},t.prototype.scrollToBottom=function(){this._bufferService.scrollToBottom()},t.prototype.scrollToLine=function(e){this._bufferService.scrollToLine(e)},t.prototype.registerEscHandler=function(e,t){return this._inputHandler.registerEscHandler(e,t)},t.prototype.registerDcsHandler=function(e,t){return this._inputHandler.registerDcsHandler(e,t)},t.prototype.registerCsiHandler=function(e,t){return this._inputHandler.registerCsiHandler(e,t)},t.prototype.registerOscHandler=function(e,t){return this._inputHandler.registerOscHandler(e,t)},t.prototype._setup=function(){this.optionsService.rawOptions.windowsMode&&this._enableWindowsMode()},t.prototype.reset=function(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()},t.prototype._updateOptions=function(e){var t;switch(e){case"scrollback":this.buffers.resize(this.cols,this.rows);break;case"windowsMode":this.optionsService.rawOptions.windowsMode?this._enableWindowsMode():(null===(t=this._windowsMode)||void 0===t||t.dispose(),this._windowsMode=void 0)}},t.prototype._enableWindowsMode=function(){var e=this;if(!this._windowsMode){var t=[];t.push(this.onLineFeed(m.updateWindowsModeWrappedState.bind(null,this._bufferService))),t.push(this.registerCsiHandler({final:"H"},(function(){return(0,m.updateWindowsModeWrappedState)(e._bufferService),!1}))),this._windowsMode={dispose:function(){var e,r;try{for(var n=o(t),i=n.next();!i.done;i=n.next())i.value.dispose()}catch(t){e={error:t}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(e)throw e.error}}}}}},t}(s.Disposable);t.CoreTerminal=C},8460:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.forwardEvent=t.EventEmitter=void 0;var r=function(){function e(){this._listeners=[],this._disposed=!1}return Object.defineProperty(e.prototype,"event",{get:function(){var e=this;return this._event||(this._event=function(t){return e._listeners.push(t),{dispose:function(){if(!e._disposed)for(var r=0;r<e._listeners.length;r++)if(e._listeners[r]===t)return void e._listeners.splice(r,1)}}}),this._event},enumerable:!1,configurable:!0}),e.prototype.fire=function(e,t){for(var r=[],n=0;n<this._listeners.length;n++)r.push(this._listeners[n]);for(n=0;n<r.length;n++)r[n].call(void 0,e,t)},e.prototype.dispose=function(){this._listeners&&(this._listeners.length=0),this._disposed=!0},e}();t.EventEmitter=r,t.forwardEvent=function(e,t){return e((function(e){return t.fire(e)}))}},5435:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.InputHandler=t.WindowsOptionsReportType=void 0;var o,s=r(2584),a=r(7116),l=r(2015),c=r(844),d=r(8273),h=r(482),u=r(8437),f=r(8460),p=r(643),_=r(511),b=r(3734),g=r(2585),m=r(6242),v=r(6351),A=r(5941),y={"(":0,")":1,"*":2,"+":3,"-":1,".":2},C=131072;function w(e,t){if(e>24)return t.setWinLines||!1;switch(e){case 1:return!!t.restoreWin;case 2:return!!t.minimizeWin;case 3:return!!t.setWinPosition;case 4:return!!t.setWinSizePixels;case 5:return!!t.raiseWin;case 6:return!!t.lowerWin;case 7:return!!t.refreshWin;case 8:return!!t.setWinSizeChars;case 9:return!!t.maximizeWin;case 10:return!!t.fullscreenWin;case 11:return!!t.getWinState;case 13:return!!t.getWinPosition;case 14:return!!t.getWinSizePixels;case 15:return!!t.getScreenSizePixels;case 16:return!!t.getCellSizePixels;case 18:return!!t.getWinSizeChars;case 19:return!!t.getScreenSizeChars;case 20:return!!t.getIconTitle;case 21:return!!t.getWinTitle;case 22:return!!t.pushTitle;case 23:return!!t.popTitle;case 24:return!!t.setWinLines}return!1}!function(e){e[e.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",e[e.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"}(o=t.WindowsOptionsReportType||(t.WindowsOptionsReportType={}));var x=function(){function e(e,t,r,n){this._bufferService=e,this._coreService=t,this._logService=r,this._optionsService=n,this._data=new Uint32Array(0)}return e.prototype.hook=function(e){this._data=new Uint32Array(0)},e.prototype.put=function(e,t,r){this._data=(0,d.concat)(this._data,e.subarray(t,r))},e.prototype.unhook=function(e){if(!e)return this._data=new Uint32Array(0),!0;var t=(0,h.utf32ToString)(this._data);switch(this._data=new Uint32Array(0),t){case'"q':this._coreService.triggerDataEvent(s.C0.ESC+'P1$r0"q'+s.C0.ESC+"\\");break;case'"p':this._coreService.triggerDataEvent(s.C0.ESC+'P1$r61;1"p'+s.C0.ESC+"\\");break;case"r":var r=this._bufferService.buffer.scrollTop+1+";"+(this._bufferService.buffer.scrollBottom+1)+"r";this._coreService.triggerDataEvent(s.C0.ESC+"P1$r"+r+s.C0.ESC+"\\");break;case"m":this._coreService.triggerDataEvent(s.C0.ESC+"P1$r0m"+s.C0.ESC+"\\");break;case" q":var n={block:2,underline:4,bar:6}[this._optionsService.rawOptions.cursorStyle];n-=this._optionsService.rawOptions.cursorBlink?1:0,this._coreService.triggerDataEvent(s.C0.ESC+"P1$r"+n+" q"+s.C0.ESC+"\\");break;default:this._logService.debug("Unknown DCS $q %s",t),this._coreService.triggerDataEvent(s.C0.ESC+"P0$r"+s.C0.ESC+"\\")}return!0},e}(),S=function(e){function t(t,r,n,i,o,c,d,p,b){void 0===b&&(b=new l.EscapeSequenceParser);var g=e.call(this)||this;g._bufferService=t,g._charsetService=r,g._coreService=n,g._dirtyRowService=i,g._logService=o,g._optionsService=c,g._coreMouseService=d,g._unicodeService=p,g._parser=b,g._parseBuffer=new Uint32Array(4096),g._stringDecoder=new h.StringToUtf32,g._utf8Decoder=new h.Utf8ToUtf32,g._workCell=new _.CellData,g._windowTitle="",g._iconName="",g._windowTitleStack=[],g._iconNameStack=[],g._curAttrData=u.DEFAULT_ATTR_DATA.clone(),g._eraseAttrDataInternal=u.DEFAULT_ATTR_DATA.clone(),g._onRequestBell=new f.EventEmitter,g._onRequestRefreshRows=new f.EventEmitter,g._onRequestReset=new f.EventEmitter,g._onRequestSendFocus=new f.EventEmitter,g._onRequestSyncScrollBar=new f.EventEmitter,g._onRequestWindowsOptionsReport=new f.EventEmitter,g._onA11yChar=new f.EventEmitter,g._onA11yTab=new f.EventEmitter,g._onCursorMove=new f.EventEmitter,g._onLineFeed=new f.EventEmitter,g._onScroll=new f.EventEmitter,g._onTitleChange=new f.EventEmitter,g._onColor=new f.EventEmitter,g._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},g._specialColors=[256,257,258],g.register(g._parser),g._activeBuffer=g._bufferService.buffer,g.register(g._bufferService.buffers.onBufferActivate((function(e){return g._activeBuffer=e.activeBuffer}))),g._parser.setCsiHandlerFallback((function(e,t){g._logService.debug("Unknown CSI code: ",{identifier:g._parser.identToString(e),params:t.toArray()})})),g._parser.setEscHandlerFallback((function(e){g._logService.debug("Unknown ESC code: ",{identifier:g._parser.identToString(e)})})),g._parser.setExecuteHandlerFallback((function(e){g._logService.debug("Unknown EXECUTE code: ",{code:e})})),g._parser.setOscHandlerFallback((function(e,t,r){g._logService.debug("Unknown OSC code: ",{identifier:e,action:t,data:r})})),g._parser.setDcsHandlerFallback((function(e,t,r){"HOOK"===t&&(r=r.toArray()),g._logService.debug("Unknown DCS code: ",{identifier:g._parser.identToString(e),action:t,payload:r})})),g._parser.setPrintHandler((function(e,t,r){return g.print(e,t,r)})),g._parser.registerCsiHandler({final:"@"},(function(e){return g.insertChars(e)})),g._parser.registerCsiHandler({intermediates:" ",final:"@"},(function(e){return g.scrollLeft(e)})),g._parser.registerCsiHandler({final:"A"},(function(e){return g.cursorUp(e)})),g._parser.registerCsiHandler({intermediates:" ",final:"A"},(function(e){return g.scrollRight(e)})),g._parser.registerCsiHandler({final:"B"},(function(e){return g.cursorDown(e)})),g._parser.registerCsiHandler({final:"C"},(function(e){return g.cursorForward(e)})),g._parser.registerCsiHandler({final:"D"},(function(e){return g.cursorBackward(e)})),g._parser.registerCsiHandler({final:"E"},(function(e){return g.cursorNextLine(e)})),g._parser.registerCsiHandler({final:"F"},(function(e){return g.cursorPrecedingLine(e)})),g._parser.registerCsiHandler({final:"G"},(function(e){return g.cursorCharAbsolute(e)})),g._parser.registerCsiHandler({final:"H"},(function(e){return g.cursorPosition(e)})),g._parser.registerCsiHandler({final:"I"},(function(e){return g.cursorForwardTab(e)})),g._parser.registerCsiHandler({final:"J"},(function(e){return g.eraseInDisplay(e)})),g._parser.registerCsiHandler({prefix:"?",final:"J"},(function(e){return g.eraseInDisplay(e)})),g._parser.registerCsiHandler({final:"K"},(function(e){return g.eraseInLine(e)})),g._parser.registerCsiHandler({prefix:"?",final:"K"},(function(e){return g.eraseInLine(e)})),g._parser.registerCsiHandler({final:"L"},(function(e){return g.insertLines(e)})),g._parser.registerCsiHandler({final:"M"},(function(e){return g.deleteLines(e)})),g._parser.registerCsiHandler({final:"P"},(function(e){return g.deleteChars(e)})),g._parser.registerCsiHandler({final:"S"},(function(e){return g.scrollUp(e)})),g._parser.registerCsiHandler({final:"T"},(function(e){return g.scrollDown(e)})),g._parser.registerCsiHandler({final:"X"},(function(e){return g.eraseChars(e)})),g._parser.registerCsiHandler({final:"Z"},(function(e){return g.cursorBackwardTab(e)})),g._parser.registerCsiHandler({final:"`"},(function(e){return g.charPosAbsolute(e)})),g._parser.registerCsiHandler({final:"a"},(function(e){return g.hPositionRelative(e)})),g._parser.registerCsiHandler({final:"b"},(function(e){return g.repeatPrecedingCharacter(e)})),g._parser.registerCsiHandler({final:"c"},(function(e){return g.sendDeviceAttributesPrimary(e)})),g._parser.registerCsiHandler({prefix:">",final:"c"},(function(e){return g.sendDeviceAttributesSecondary(e)})),g._parser.registerCsiHandler({final:"d"},(function(e){return g.linePosAbsolute(e)})),g._parser.registerCsiHandler({final:"e"},(function(e){return g.vPositionRelative(e)})),g._parser.registerCsiHandler({final:"f"},(function(e){return g.hVPosition(e)})),g._parser.registerCsiHandler({final:"g"},(function(e){return g.tabClear(e)})),g._parser.registerCsiHandler({final:"h"},(function(e){return g.setMode(e)})),g._parser.registerCsiHandler({prefix:"?",final:"h"},(function(e){return g.setModePrivate(e)})),g._parser.registerCsiHandler({final:"l"},(function(e){return g.resetMode(e)})),g._parser.registerCsiHandler({prefix:"?",final:"l"},(function(e){return g.resetModePrivate(e)})),g._parser.registerCsiHandler({final:"m"},(function(e){return g.charAttributes(e)})),g._parser.registerCsiHandler({final:"n"},(function(e){return g.deviceStatus(e)})),g._parser.registerCsiHandler({prefix:"?",final:"n"},(function(e){return g.deviceStatusPrivate(e)})),g._parser.registerCsiHandler({intermediates:"!",final:"p"},(function(e){return g.softReset(e)})),g._parser.registerCsiHandler({intermediates:" ",final:"q"},(function(e){return g.setCursorStyle(e)})),g._parser.registerCsiHandler({final:"r"},(function(e){return g.setScrollRegion(e)})),g._parser.registerCsiHandler({final:"s"},(function(e){return g.saveCursor(e)})),g._parser.registerCsiHandler({final:"t"},(function(e){return g.windowOptions(e)})),g._parser.registerCsiHandler({final:"u"},(function(e){return g.restoreCursor(e)})),g._parser.registerCsiHandler({intermediates:"'",final:"}"},(function(e){return g.insertColumns(e)})),g._parser.registerCsiHandler({intermediates:"'",final:"~"},(function(e){return g.deleteColumns(e)})),g._parser.setExecuteHandler(s.C0.BEL,(function(){return g.bell()})),g._parser.setExecuteHandler(s.C0.LF,(function(){return g.lineFeed()})),g._parser.setExecuteHandler(s.C0.VT,(function(){return g.lineFeed()})),g._parser.setExecuteHandler(s.C0.FF,(function(){return g.lineFeed()})),g._parser.setExecuteHandler(s.C0.CR,(function(){return g.carriageReturn()})),g._parser.setExecuteHandler(s.C0.BS,(function(){return g.backspace()})),g._parser.setExecuteHandler(s.C0.HT,(function(){return g.tab()})),g._parser.setExecuteHandler(s.C0.SO,(function(){return g.shiftOut()})),g._parser.setExecuteHandler(s.C0.SI,(function(){return g.shiftIn()})),g._parser.setExecuteHandler(s.C1.IND,(function(){return g.index()})),g._parser.setExecuteHandler(s.C1.NEL,(function(){return g.nextLine()})),g._parser.setExecuteHandler(s.C1.HTS,(function(){return g.tabSet()})),g._parser.registerOscHandler(0,new m.OscHandler((function(e){return g.setTitle(e),g.setIconName(e),!0}))),g._parser.registerOscHandler(1,new m.OscHandler((function(e){return g.setIconName(e)}))),g._parser.registerOscHandler(2,new m.OscHandler((function(e){return g.setTitle(e)}))),g._parser.registerOscHandler(4,new m.OscHandler((function(e){return g.setOrReportIndexedColor(e)}))),g._parser.registerOscHandler(10,new m.OscHandler((function(e){return g.setOrReportFgColor(e)}))),g._parser.registerOscHandler(11,new m.OscHandler((function(e){return g.setOrReportBgColor(e)}))),g._parser.registerOscHandler(12,new m.OscHandler((function(e){return g.setOrReportCursorColor(e)}))),g._parser.registerOscHandler(104,new m.OscHandler((function(e){return g.restoreIndexedColor(e)}))),g._parser.registerOscHandler(110,new m.OscHandler((function(e){return g.restoreFgColor(e)}))),g._parser.registerOscHandler(111,new m.OscHandler((function(e){return g.restoreBgColor(e)}))),g._parser.registerOscHandler(112,new m.OscHandler((function(e){return g.restoreCursorColor(e)}))),g._parser.registerEscHandler({final:"7"},(function(){return g.saveCursor()})),g._parser.registerEscHandler({final:"8"},(function(){return g.restoreCursor()})),g._parser.registerEscHandler({final:"D"},(function(){return g.index()})),g._parser.registerEscHandler({final:"E"},(function(){return g.nextLine()})),g._parser.registerEscHandler({final:"H"},(function(){return g.tabSet()})),g._parser.registerEscHandler({final:"M"},(function(){return g.reverseIndex()})),g._parser.registerEscHandler({final:"="},(function(){return g.keypadApplicationMode()})),g._parser.registerEscHandler({final:">"},(function(){return g.keypadNumericMode()})),g._parser.registerEscHandler({final:"c"},(function(){return g.fullReset()})),g._parser.registerEscHandler({final:"n"},(function(){return g.setgLevel(2)})),g._parser.registerEscHandler({final:"o"},(function(){return g.setgLevel(3)})),g._parser.registerEscHandler({final:"|"},(function(){return g.setgLevel(3)})),g._parser.registerEscHandler({final:"}"},(function(){return g.setgLevel(2)})),g._parser.registerEscHandler({final:"~"},(function(){return g.setgLevel(1)})),g._parser.registerEscHandler({intermediates:"%",final:"@"},(function(){return g.selectDefaultCharset()})),g._parser.registerEscHandler({intermediates:"%",final:"G"},(function(){return g.selectDefaultCharset()}));var v=function(e){A._parser.registerEscHandler({intermediates:"(",final:e},(function(){return g.selectCharset("("+e)})),A._parser.registerEscHandler({intermediates:")",final:e},(function(){return g.selectCharset(")"+e)})),A._parser.registerEscHandler({intermediates:"*",final:e},(function(){return g.selectCharset("*"+e)})),A._parser.registerEscHandler({intermediates:"+",final:e},(function(){return g.selectCharset("+"+e)})),A._parser.registerEscHandler({intermediates:"-",final:e},(function(){return g.selectCharset("-"+e)})),A._parser.registerEscHandler({intermediates:".",final:e},(function(){return g.selectCharset("."+e)})),A._parser.registerEscHandler({intermediates:"/",final:e},(function(){return g.selectCharset("/"+e)}))},A=this;for(var y in a.CHARSETS)v(y);return g._parser.registerEscHandler({intermediates:"#",final:"8"},(function(){return g.screenAlignmentPattern()})),g._parser.setErrorHandler((function(e){return g._logService.error("Parsing error: ",e),e})),g._parser.registerDcsHandler({intermediates:"$",final:"q"},new x(g._bufferService,g._coreService,g._logService,g._optionsService)),g}return i(t,e),Object.defineProperty(t.prototype,"onRequestBell",{get:function(){return this._onRequestBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestRefreshRows",{get:function(){return this._onRequestRefreshRows.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestReset",{get:function(){return this._onRequestReset.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestSendFocus",{get:function(){return this._onRequestSendFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestSyncScrollBar",{get:function(){return this._onRequestSyncScrollBar.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onRequestWindowsOptionsReport",{get:function(){return this._onRequestWindowsOptionsReport.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onA11yChar",{get:function(){return this._onA11yChar.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onA11yTab",{get:function(){return this._onA11yTab.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onColor",{get:function(){return this._onColor.event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype._preserveStack=function(e,t,r,n){this._parseStack.paused=!0,this._parseStack.cursorStartX=e,this._parseStack.cursorStartY=t,this._parseStack.decodedLength=r,this._parseStack.position=n},t.prototype._logSlowResolvingAsync=function(e){this._logService.logLevel<=g.LogLevelEnum.WARN&&Promise.race([e,new Promise((function(e,t){return setTimeout((function(){return t("#SLOW_TIMEOUT")}),5e3)}))]).catch((function(e){if("#SLOW_TIMEOUT"!==e)throw e;console.warn("async parser handler taking longer than 5000 ms")}))},t.prototype.parse=function(e,t){var r,n=this._activeBuffer.x,i=this._activeBuffer.y,o=0,s=this._parseStack.paused;if(s){if(r=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,t))return this._logSlowResolvingAsync(r),r;n=this._parseStack.cursorStartX,i=this._parseStack.cursorStartY,this._parseStack.paused=!1,e.length>C&&(o=this._parseStack.position+C)}if(this._logService.logLevel<=g.LogLevelEnum.DEBUG&&this._logService.debug("parsing data"+("string"==typeof e?' "'+e+'"':' "'+Array.prototype.map.call(e,(function(e){return String.fromCharCode(e)})).join("")+'"'),"string"==typeof e?e.split("").map((function(e){return e.charCodeAt(0)})):e),this._parseBuffer.length<e.length&&this._parseBuffer.length<C&&(this._parseBuffer=new Uint32Array(Math.min(e.length,C))),s||this._dirtyRowService.clearRange(),e.length>C)for(var a=o;a<e.length;a+=C){var l=a+C<e.length?a+C:e.length,c="string"==typeof e?this._stringDecoder.decode(e.substring(a,l),this._parseBuffer):this._utf8Decoder.decode(e.subarray(a,l),this._parseBuffer);if(r=this._parser.parse(this._parseBuffer,c))return this._preserveStack(n,i,c,a),this._logSlowResolvingAsync(r),r}else if(!s&&(c="string"==typeof e?this._stringDecoder.decode(e,this._parseBuffer):this._utf8Decoder.decode(e,this._parseBuffer),r=this._parser.parse(this._parseBuffer,c)))return this._preserveStack(n,i,c,0),this._logSlowResolvingAsync(r),r;this._activeBuffer.x===n&&this._activeBuffer.y===i||this._onCursorMove.fire(),this._onRequestRefreshRows.fire(this._dirtyRowService.start,this._dirtyRowService.end)},t.prototype.print=function(e,t,r){var n,i,o=this._charsetService.charset,s=this._optionsService.rawOptions.screenReaderMode,a=this._bufferService.cols,l=this._coreService.decPrivateModes.wraparound,c=this._coreService.modes.insertMode,d=this._curAttrData,u=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowService.markDirty(this._activeBuffer.y),this._activeBuffer.x&&r-t>0&&2===u.getWidth(this._activeBuffer.x-1)&&u.setCellFromCodePoint(this._activeBuffer.x-1,0,1,d.fg,d.bg,d.extended);for(var f=t;f<r;++f){if(n=e[f],i=this._unicodeService.wcwidth(n),n<127&&o){var _=o[String.fromCharCode(n)];_&&(n=_.charCodeAt(0))}if(s&&this._onA11yChar.fire((0,h.stringFromCodePoint)(n)),i||!this._activeBuffer.x){if(this._activeBuffer.x+i-1>=a)if(l){for(;this._activeBuffer.x<a;)u.setCellFromCodePoint(this._activeBuffer.x++,0,1,d.fg,d.bg,d.extended);this._activeBuffer.x=0,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),u=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)}else if(this._activeBuffer.x=a-1,2===i)continue;if(c&&(u.insertCells(this._activeBuffer.x,i,this._activeBuffer.getNullCell(d),d),2===u.getWidth(a-1)&&u.setCellFromCodePoint(a-1,p.NULL_CELL_CODE,p.NULL_CELL_WIDTH,d.fg,d.bg,d.extended)),u.setCellFromCodePoint(this._activeBuffer.x++,n,i,d.fg,d.bg,d.extended),i>0)for(;--i;)u.setCellFromCodePoint(this._activeBuffer.x++,0,0,d.fg,d.bg,d.extended)}else u.getWidth(this._activeBuffer.x-1)?u.addCodepointToCell(this._activeBuffer.x-1,n):u.addCodepointToCell(this._activeBuffer.x-2,n)}r-t>0&&(u.loadCell(this._activeBuffer.x-1,this._workCell),2===this._workCell.getWidth()||this._workCell.getCode()>65535?this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content),this._activeBuffer.x<a&&r-t>0&&0===u.getWidth(this._activeBuffer.x)&&!u.hasContent(this._activeBuffer.x)&&u.setCellFromCodePoint(this._activeBuffer.x,0,1,d.fg,d.bg,d.extended),this._dirtyRowService.markDirty(this._activeBuffer.y)},t.prototype.registerCsiHandler=function(e,t){var r=this;return"t"!==e.final||e.prefix||e.intermediates?this._parser.registerCsiHandler(e,t):this._parser.registerCsiHandler(e,(function(e){return!w(e.params[0],r._optionsService.rawOptions.windowOptions)||t(e)}))},t.prototype.registerDcsHandler=function(e,t){return this._parser.registerDcsHandler(e,new v.DcsHandler(t))},t.prototype.registerEscHandler=function(e,t){return this._parser.registerEscHandler(e,t)},t.prototype.registerOscHandler=function(e,t){return this._parser.registerOscHandler(e,new m.OscHandler(t))},t.prototype.bell=function(){return this._onRequestBell.fire(),!0},t.prototype.lineFeed=function(){return this._dirtyRowService.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowService.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0},t.prototype.carriageReturn=function(){return this._activeBuffer.x=0,!0},t.prototype.backspace=function(){var e;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(0===this._activeBuffer.x&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&(null===(e=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))||void 0===e?void 0:e.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;var t=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);t.hasWidth(this._activeBuffer.x)&&!t.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0},t.prototype.tab=function(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;var e=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-e),!0},t.prototype.shiftOut=function(){return this._charsetService.setgLevel(1),!0},t.prototype.shiftIn=function(){return this._charsetService.setgLevel(0),!0},t.prototype._restrictCursor=function(e){void 0===e&&(e=this._bufferService.cols-1),this._activeBuffer.x=Math.min(e,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowService.markDirty(this._activeBuffer.y)},t.prototype._setCursor=function(e,t){this._dirtyRowService.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=e,this._activeBuffer.y=this._activeBuffer.scrollTop+t):(this._activeBuffer.x=e,this._activeBuffer.y=t),this._restrictCursor(),this._dirtyRowService.markDirty(this._activeBuffer.y)},t.prototype._moveCursor=function(e,t){this._restrictCursor(),this._setCursor(this._activeBuffer.x+e,this._activeBuffer.y+t)},t.prototype.cursorUp=function(e){var t=this._activeBuffer.y-this._activeBuffer.scrollTop;return t>=0?this._moveCursor(0,-Math.min(t,e.params[0]||1)):this._moveCursor(0,-(e.params[0]||1)),!0},t.prototype.cursorDown=function(e){var t=this._activeBuffer.scrollBottom-this._activeBuffer.y;return t>=0?this._moveCursor(0,Math.min(t,e.params[0]||1)):this._moveCursor(0,e.params[0]||1),!0},t.prototype.cursorForward=function(e){return this._moveCursor(e.params[0]||1,0),!0},t.prototype.cursorBackward=function(e){return this._moveCursor(-(e.params[0]||1),0),!0},t.prototype.cursorNextLine=function(e){return this.cursorDown(e),this._activeBuffer.x=0,!0},t.prototype.cursorPrecedingLine=function(e){return this.cursorUp(e),this._activeBuffer.x=0,!0},t.prototype.cursorCharAbsolute=function(e){return this._setCursor((e.params[0]||1)-1,this._activeBuffer.y),!0},t.prototype.cursorPosition=function(e){return this._setCursor(e.length>=2?(e.params[1]||1)-1:0,(e.params[0]||1)-1),!0},t.prototype.charPosAbsolute=function(e){return this._setCursor((e.params[0]||1)-1,this._activeBuffer.y),!0},t.prototype.hPositionRelative=function(e){return this._moveCursor(e.params[0]||1,0),!0},t.prototype.linePosAbsolute=function(e){return this._setCursor(this._activeBuffer.x,(e.params[0]||1)-1),!0},t.prototype.vPositionRelative=function(e){return this._moveCursor(0,e.params[0]||1),!0},t.prototype.hVPosition=function(e){return this.cursorPosition(e),!0},t.prototype.tabClear=function(e){var t=e.params[0];return 0===t?delete this._activeBuffer.tabs[this._activeBuffer.x]:3===t&&(this._activeBuffer.tabs={}),!0},t.prototype.cursorForwardTab=function(e){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var t=e.params[0]||1;t--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0},t.prototype.cursorBackwardTab=function(e){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var t=e.params[0]||1;t--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0},t.prototype._eraseInBufferLine=function(e,t,r,n){void 0===n&&(n=!1);var i=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);i.replaceCells(t,r,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),n&&(i.isWrapped=!1)},t.prototype._resetBufferLine=function(e){var t=this._activeBuffer.lines.get(this._activeBuffer.ybase+e);t.fill(this._activeBuffer.getNullCell(this._eraseAttrData())),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+e),t.isWrapped=!1},t.prototype.eraseInDisplay=function(e){var t;switch(this._restrictCursor(this._bufferService.cols),e.params[0]){case 0:for(t=this._activeBuffer.y,this._dirtyRowService.markDirty(t),this._eraseInBufferLine(t++,this._activeBuffer.x,this._bufferService.cols,0===this._activeBuffer.x);t<this._bufferService.rows;t++)this._resetBufferLine(t);this._dirtyRowService.markDirty(t);break;case 1:for(t=this._activeBuffer.y,this._dirtyRowService.markDirty(t),this._eraseInBufferLine(t,0,this._activeBuffer.x+1,!0),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(t+1).isWrapped=!1);t--;)this._resetBufferLine(t);this._dirtyRowService.markDirty(0);break;case 2:for(t=this._bufferService.rows,this._dirtyRowService.markDirty(t-1);t--;)this._resetBufferLine(t);this._dirtyRowService.markDirty(0);break;case 3:var r=this._activeBuffer.lines.length-this._bufferService.rows;r>0&&(this._activeBuffer.lines.trimStart(r),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-r,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-r,0),this._onScroll.fire(0))}return!0},t.prototype.eraseInLine=function(e){switch(this._restrictCursor(this._bufferService.cols),e.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,0===this._activeBuffer.x);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0)}return this._dirtyRowService.markDirty(this._activeBuffer.y),!0},t.prototype.insertLines=function(e){this._restrictCursor();var t=e.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;for(var r=this._activeBuffer.ybase+this._activeBuffer.y,n=this._bufferService.rows-1-this._activeBuffer.scrollBottom,i=this._bufferService.rows-1+this._activeBuffer.ybase-n+1;t--;)this._activeBuffer.lines.splice(i-1,1),this._activeBuffer.lines.splice(r,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowService.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0},t.prototype.deleteLines=function(e){this._restrictCursor();var t=e.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;var r,n=this._activeBuffer.ybase+this._activeBuffer.y;for(r=this._bufferService.rows-1-this._activeBuffer.scrollBottom,r=this._bufferService.rows-1+this._activeBuffer.ybase-r;t--;)this._activeBuffer.lines.splice(n,1),this._activeBuffer.lines.splice(r,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowService.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0},t.prototype.insertChars=function(e){this._restrictCursor();var t=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return t&&(t.insertCells(this._activeBuffer.x,e.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),this._dirtyRowService.markDirty(this._activeBuffer.y)),!0},t.prototype.deleteChars=function(e){this._restrictCursor();var t=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return t&&(t.deleteCells(this._activeBuffer.x,e.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),this._dirtyRowService.markDirty(this._activeBuffer.y)),!0},t.prototype.scrollUp=function(e){for(var t=e.params[0]||1;t--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0},t.prototype.scrollDown=function(e){for(var t=e.params[0]||1;t--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(u.DEFAULT_ATTR_DATA));return this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0},t.prototype.scrollLeft=function(e){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;for(var t=e.params[0]||1,r=this._activeBuffer.scrollTop;r<=this._activeBuffer.scrollBottom;++r){var n=this._activeBuffer.lines.get(this._activeBuffer.ybase+r);n.deleteCells(0,t,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),n.isWrapped=!1}return this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0},t.prototype.scrollRight=function(e){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;for(var t=e.params[0]||1,r=this._activeBuffer.scrollTop;r<=this._activeBuffer.scrollBottom;++r){var n=this._activeBuffer.lines.get(this._activeBuffer.ybase+r);n.insertCells(0,t,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),n.isWrapped=!1}return this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0},t.prototype.insertColumns=function(e){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;for(var t=e.params[0]||1,r=this._activeBuffer.scrollTop;r<=this._activeBuffer.scrollBottom;++r){var n=this._activeBuffer.lines.get(this._activeBuffer.ybase+r);n.insertCells(this._activeBuffer.x,t,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),n.isWrapped=!1}return this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0},t.prototype.deleteColumns=function(e){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;for(var t=e.params[0]||1,r=this._activeBuffer.scrollTop;r<=this._activeBuffer.scrollBottom;++r){var n=this._activeBuffer.lines.get(this._activeBuffer.ybase+r);n.deleteCells(this._activeBuffer.x,t,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),n.isWrapped=!1}return this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0},t.prototype.eraseChars=function(e){this._restrictCursor();var t=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return t&&(t.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(e.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),this._dirtyRowService.markDirty(this._activeBuffer.y)),!0},t.prototype.repeatPrecedingCharacter=function(e){if(!this._parser.precedingCodepoint)return!0;for(var t=e.params[0]||1,r=new Uint32Array(t),n=0;n<t;++n)r[n]=this._parser.precedingCodepoint;return this.print(r,0,r.length),!0},t.prototype.sendDeviceAttributesPrimary=function(e){return e.params[0]>0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(s.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(s.C0.ESC+"[?6c")),!0},t.prototype.sendDeviceAttributesSecondary=function(e){return e.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(s.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(s.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(e.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(s.C0.ESC+"[>83;40003;0c")),!0},t.prototype._is=function(e){return 0===(this._optionsService.rawOptions.termName+"").indexOf(e)},t.prototype.setMode=function(e){for(var t=0;t<e.length;t++)4===e.params[t]&&(this._coreService.modes.insertMode=!0);return!0},t.prototype.setModePrivate=function(e){for(var t=0;t<e.length;t++)switch(e.params[t]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,a.DEFAULT_CHARSET),this._charsetService.setgCharset(1,a.DEFAULT_CHARSET),this._charsetService.setgCharset(2,a.DEFAULT_CHARSET),this._charsetService.setgCharset(3,a.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol="X10";break;case 1e3:this._coreMouseService.activeProtocol="VT200";break;case 1002:this._coreMouseService.activeProtocol="DRAG";break;case 1003:this._coreMouseService.activeProtocol="ANY";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug("DECSET 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="SGR";break;case 1015:this._logService.debug("DECSET 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(0,this._bufferService.rows-1),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0}return!0},t.prototype.resetMode=function(e){for(var t=0;t<e.length;t++)4===e.params[t]&&(this._coreService.modes.insertMode=!1);return!0},t.prototype.resetModePrivate=function(e){for(var t=0;t<e.length;t++)switch(e.params[t]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol="NONE";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug("DECRST 1005 not supported (see #2507)");break;case 1006:this._coreMouseService.activeEncoding="DEFAULT";break;case 1015:this._logService.debug("DECRST 1015 not supported (see #2507)");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),1049===e.params[t]&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(0,this._bufferService.rows-1),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1}return!0},t.prototype._updateAttrColor=function(e,t,r,n,i){return 2===t?(e|=50331648,e&=-16777216,e|=b.AttributeData.fromColorRGB([r,n,i])):5===t&&(e&=-50331904,e|=33554432|255&r),e},t.prototype._extractColor=function(e,t,r){var n=[0,0,-1,0,0,0],i=0,o=0;do{if(n[o+i]=e.params[t+o],e.hasSubParams(t+o)){var s=e.getSubParams(t+o),a=0;do{5===n[1]&&(i=1),n[o+a+1+i]=s[a]}while(++a<s.length&&a+o+1+i<n.length);break}if(5===n[1]&&o+i>=2||2===n[1]&&o+i>=5)break;n[1]&&(i=1)}while(++o+t<e.length&&o+i<n.length);for(a=2;a<n.length;++a)-1===n[a]&&(n[a]=0);switch(n[0]){case 38:r.fg=this._updateAttrColor(r.fg,n[1],n[3],n[4],n[5]);break;case 48:r.bg=this._updateAttrColor(r.bg,n[1],n[3],n[4],n[5]);break;case 58:r.extended=r.extended.clone(),r.extended.underlineColor=this._updateAttrColor(r.extended.underlineColor,n[1],n[3],n[4],n[5])}return o},t.prototype._processUnderline=function(e,t){t.extended=t.extended.clone(),(!~e||e>5)&&(e=1),t.extended.underlineStyle=e,t.fg|=268435456,0===e&&(t.fg&=-268435457),t.updateExtended()},t.prototype.charAttributes=function(e){if(1===e.length&&0===e.params[0])return this._curAttrData.fg=u.DEFAULT_ATTR_DATA.fg,this._curAttrData.bg=u.DEFAULT_ATTR_DATA.bg,!0;for(var t,r=e.length,n=this._curAttrData,i=0;i<r;i++)(t=e.params[i])>=30&&t<=37?(n.fg&=-50331904,n.fg|=16777216|t-30):t>=40&&t<=47?(n.bg&=-50331904,n.bg|=16777216|t-40):t>=90&&t<=97?(n.fg&=-50331904,n.fg|=16777224|t-90):t>=100&&t<=107?(n.bg&=-50331904,n.bg|=16777224|t-100):0===t?(n.fg=u.DEFAULT_ATTR_DATA.fg,n.bg=u.DEFAULT_ATTR_DATA.bg):1===t?n.fg|=134217728:3===t?n.bg|=67108864:4===t?(n.fg|=268435456,this._processUnderline(e.hasSubParams(i)?e.getSubParams(i)[0]:1,n)):5===t?n.fg|=536870912:7===t?n.fg|=67108864:8===t?n.fg|=1073741824:9===t?n.fg|=2147483648:2===t?n.bg|=134217728:21===t?this._processUnderline(2,n):22===t?(n.fg&=-134217729,n.bg&=-134217729):23===t?n.bg&=-67108865:24===t?n.fg&=-268435457:25===t?n.fg&=-536870913:27===t?n.fg&=-67108865:28===t?n.fg&=-1073741825:29===t?n.fg&=2147483647:39===t?(n.fg&=-67108864,n.fg|=16777215&u.DEFAULT_ATTR_DATA.fg):49===t?(n.bg&=-67108864,n.bg|=16777215&u.DEFAULT_ATTR_DATA.bg):38===t||48===t||58===t?i+=this._extractColor(e,i,n):59===t?(n.extended=n.extended.clone(),n.extended.underlineColor=-1,n.updateExtended()):100===t?(n.fg&=-67108864,n.fg|=16777215&u.DEFAULT_ATTR_DATA.fg,n.bg&=-67108864,n.bg|=16777215&u.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",t);return!0},t.prototype.deviceStatus=function(e){switch(e.params[0]){case 5:this._coreService.triggerDataEvent(s.C0.ESC+"[0n");break;case 6:var t=this._activeBuffer.y+1,r=this._activeBuffer.x+1;this._coreService.triggerDataEvent(s.C0.ESC+"["+t+";"+r+"R")}return!0},t.prototype.deviceStatusPrivate=function(e){if(6===e.params[0]){var t=this._activeBuffer.y+1,r=this._activeBuffer.x+1;this._coreService.triggerDataEvent(s.C0.ESC+"[?"+t+";"+r+"R")}return!0},t.prototype.softReset=function(e){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=u.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0},t.prototype.setCursorStyle=function(e){var t=e.params[0]||1;switch(t){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}var r=t%2==1;return this._optionsService.options.cursorBlink=r,!0},t.prototype.setScrollRegion=function(e){var t,r=e.params[0]||1;return(e.length<2||(t=e.params[1])>this._bufferService.rows||0===t)&&(t=this._bufferService.rows),t>r&&(this._activeBuffer.scrollTop=r-1,this._activeBuffer.scrollBottom=t-1,this._setCursor(0,0)),!0},t.prototype.windowOptions=function(e){if(!w(e.params[0],this._optionsService.rawOptions.windowOptions))return!0;var t=e.length>1?e.params[1]:0;switch(e.params[0]){case 14:2!==t&&this._onRequestWindowsOptionsReport.fire(o.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(o.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(s.C0.ESC+"[8;"+this._bufferService.rows+";"+this._bufferService.cols+"t");break;case 22:0!==t&&2!==t||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),0!==t&&1!==t||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:0!==t&&2!==t||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),0!==t&&1!==t||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0},t.prototype.saveCursor=function(e){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0},t.prototype.restoreCursor=function(e){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0},t.prototype.setTitle=function(e){return this._windowTitle=e,this._onTitleChange.fire(e),!0},t.prototype.setIconName=function(e){return this._iconName=e,!0},t.prototype.setOrReportIndexedColor=function(e){for(var t=[],r=e.split(";");r.length>1;){var n=r.shift(),i=r.shift();if(/^\d+$/.exec(n)){var o=parseInt(n);if(0<=o&&o<256)if("?"===i)t.push({type:0,index:o});else{var s=(0,A.parseColor)(i);s&&t.push({type:1,index:o,color:s})}}}return t.length&&this._onColor.fire(t),!0},t.prototype._setOrReportSpecialColor=function(e,t){for(var r=e.split(";"),n=0;n<r.length&&!(t>=this._specialColors.length);++n,++t)if("?"===r[n])this._onColor.fire([{type:0,index:this._specialColors[t]}]);else{var i=(0,A.parseColor)(r[n]);i&&this._onColor.fire([{type:1,index:this._specialColors[t],color:i}])}return!0},t.prototype.setOrReportFgColor=function(e){return this._setOrReportSpecialColor(e,0)},t.prototype.setOrReportBgColor=function(e){return this._setOrReportSpecialColor(e,1)},t.prototype.setOrReportCursorColor=function(e){return this._setOrReportSpecialColor(e,2)},t.prototype.restoreIndexedColor=function(e){if(!e)return this._onColor.fire([{type:2}]),!0;for(var t=[],r=e.split(";"),n=0;n<r.length;++n)if(/^\d+$/.exec(r[n])){var i=parseInt(r[n]);0<=i&&i<256&&t.push({type:2,index:i})}return t.length&&this._onColor.fire(t),!0},t.prototype.restoreFgColor=function(e){return this._onColor.fire([{type:2,index:256}]),!0},t.prototype.restoreBgColor=function(e){return this._onColor.fire([{type:2,index:257}]),!0},t.prototype.restoreCursorColor=function(e){return this._onColor.fire([{type:2,index:258}]),!0},t.prototype.nextLine=function(){return this._activeBuffer.x=0,this.index(),!0},t.prototype.keypadApplicationMode=function(){return this._logService.debug("Serial port requested application keypad."),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0},t.prototype.keypadNumericMode=function(){return this._logService.debug("Switching back to normal keypad."),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0},t.prototype.selectDefaultCharset=function(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,a.DEFAULT_CHARSET),!0},t.prototype.selectCharset=function(e){return 2!==e.length?(this.selectDefaultCharset(),!0):("/"===e[0]||this._charsetService.setgCharset(y[e[0]],a.CHARSETS[e[1]]||a.DEFAULT_CHARSET),!0)},t.prototype.index=function(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0},t.prototype.tabSet=function(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0},t.prototype.reverseIndex=function(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){var e=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,e,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0},t.prototype.fullReset=function(){return this._parser.reset(),this._onRequestReset.fire(),!0},t.prototype.reset=function(){this._curAttrData=u.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=u.DEFAULT_ATTR_DATA.clone()},t.prototype._eraseAttrData=function(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal},t.prototype.setgLevel=function(e){return this._charsetService.setgLevel(e),!0},t.prototype.screenAlignmentPattern=function(){var e=new _.CellData;e.content=1<<22|"E".charCodeAt(0),e.fg=this._curAttrData.fg,e.bg=this._curAttrData.bg,this._setCursor(0,0);for(var t=0;t<this._bufferService.rows;++t){var r=this._activeBuffer.ybase+this._activeBuffer.y+t,n=this._activeBuffer.lines.get(r);n&&(n.fill(e),n.isWrapped=!1)}return this._dirtyRowService.markAllDirty(),this._setCursor(0,0),!0},t}(c.Disposable);t.InputHandler=S},844:function(e,t){var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.getDisposeArrayDisposable=t.disposeArray=t.Disposable=void 0;var n=function(){function e(){this._disposables=[],this._isDisposed=!1}return e.prototype.dispose=function(){var e,t;this._isDisposed=!0;try{for(var n=r(this._disposables),i=n.next();!i.done;i=n.next())i.value.dispose()}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}this._disposables.length=0},e.prototype.register=function(e){return this._disposables.push(e),e},e.prototype.unregister=function(e){var t=this._disposables.indexOf(e);-1!==t&&this._disposables.splice(t,1)},e}();function i(e){var t,n;try{for(var i=r(e),o=i.next();!o.done;o=i.next())o.value.dispose()}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}e.length=0}t.Disposable=n,t.disposeArray=i,t.getDisposeArrayDisposable=function(e){return{dispose:function(){return i(e)}}}},6114:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isLinux=t.isWindows=t.isIphone=t.isIpad=t.isMac=t.isSafari=t.isLegacyEdge=t.isFirefox=void 0;var r="undefined"==typeof navigator,n=r?"node":navigator.userAgent,i=r?"node":navigator.platform;t.isFirefox=n.includes("Firefox"),t.isLegacyEdge=n.includes("Edge"),t.isSafari=/^((?!chrome|android).)*safari/i.test(n),t.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(i),t.isIpad="iPad"===i,t.isIphone="iPhone"===i,t.isWindows=["Windows","Win16","Win32","WinCE"].includes(i),t.isLinux=i.indexOf("Linux")>=0},6106:function(e,t){var r=this&&this.__generator||function(e,t){var r,n,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.SortedList=void 0;var n=function(){function e(e){this._getKey=e,this._array=[]}return e.prototype.clear=function(){this._array.length=0},e.prototype.insert=function(e){if(0!==this._array.length){var t=this._search(this._getKey(e),0,this._array.length-1);this._array.splice(t,0,e)}else this._array.push(e)},e.prototype.delete=function(e){if(0===this._array.length)return!1;var t=this._getKey(e),r=this._search(t,0,this._array.length-1);if(this._getKey(this._array[r])!==t)return!1;do{if(this._array[r]===e)return this._array.splice(r,1),!0}while(++r<this._array.length&&this._getKey(this._array[r])===t);return!1},e.prototype.getKeyIterator=function(e){var t;return r(this,(function(r){switch(r.label){case 0:if(0===this._array.length)return[2];if((t=this._search(e,0,this._array.length-1))<0||t>=this._array.length)return[2];if(this._getKey(this._array[t])!==e)return[2];r.label=1;case 1:return[4,this._array[t]];case 2:r.sent(),r.label=3;case 3:if(++t<this._array.length&&this._getKey(this._array[t])===e)return[3,1];r.label=4;case 4:return[2]}}))},e.prototype.values=function(){return this._array.values()},e.prototype._search=function(e,t,r){if(r<t)return t;var n=Math.floor((t+r)/2);if(this._getKey(this._array[n])>e)return this._search(e,t,n-1);if(this._getKey(this._array[n])<e)return this._search(e,n+1,r);for(;n>0&&this._getKey(this._array[n-1])===e;)n--;return n},e}();t.SortedList=n},8273:(e,t)=>{function r(e,t,r,n){if(void 0===r&&(r=0),void 0===n&&(n=e.length),r>=e.length)return e;r=(e.length+r)%e.length,n=n>=e.length?e.length:(e.length+n)%e.length;for(var i=r;i<n;++i)e[i]=t;return e}Object.defineProperty(t,"__esModule",{value:!0}),t.concat=t.fillFallback=t.fill=void 0,t.fill=function(e,t,n,i){return e.fill?e.fill(t,n,i):r(e,t,n,i)},t.fillFallback=r,t.concat=function(e,t){var r=new e.constructor(e.length+t.length);return r.set(e),r.set(t,e.length),r}},9282:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateWindowsModeWrappedState=void 0;var n=r(643);t.updateWindowsModeWrappedState=function(e){var t=e.buffer.lines.get(e.buffer.ybase+e.buffer.y-1),r=null==t?void 0:t.get(e.cols-1),i=e.buffer.lines.get(e.buffer.ybase+e.buffer.y);i&&r&&(i.isWrapped=r[n.CHAR_DATA_CODE_INDEX]!==n.NULL_CELL_CODE&&r[n.CHAR_DATA_CODE_INDEX]!==n.WHITESPACE_CELL_CODE)}},3734:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ExtendedAttrs=t.AttributeData=void 0;var r=function(){function e(){this.fg=0,this.bg=0,this.extended=new n}return e.toColorRGB=function(e){return[e>>>16&255,e>>>8&255,255&e]},e.fromColorRGB=function(e){return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},e.prototype.clone=function(){var t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t},e.prototype.isInverse=function(){return 67108864&this.fg},e.prototype.isBold=function(){return 134217728&this.fg},e.prototype.isUnderline=function(){return 268435456&this.fg},e.prototype.isBlink=function(){return 536870912&this.fg},e.prototype.isInvisible=function(){return 1073741824&this.fg},e.prototype.isItalic=function(){return 67108864&this.bg},e.prototype.isDim=function(){return 134217728&this.bg},e.prototype.isStrikethrough=function(){return 2147483648&this.fg},e.prototype.getFgColorMode=function(){return 50331648&this.fg},e.prototype.getBgColorMode=function(){return 50331648&this.bg},e.prototype.isFgRGB=function(){return 50331648==(50331648&this.fg)},e.prototype.isBgRGB=function(){return 50331648==(50331648&this.bg)},e.prototype.isFgPalette=function(){return 16777216==(50331648&this.fg)||33554432==(50331648&this.fg)},e.prototype.isBgPalette=function(){return 16777216==(50331648&this.bg)||33554432==(50331648&this.bg)},e.prototype.isFgDefault=function(){return 0==(50331648&this.fg)},e.prototype.isBgDefault=function(){return 0==(50331648&this.bg)},e.prototype.isAttributeDefault=function(){return 0===this.fg&&0===this.bg},e.prototype.getFgColor=function(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}},e.prototype.getBgColor=function(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}},e.prototype.hasExtendedAttrs=function(){return 268435456&this.bg},e.prototype.updateExtended=function(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456},e.prototype.getUnderlineColor=function(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()},e.prototype.getUnderlineColorMode=function(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()},e.prototype.isUnderlineColorRGB=function(){return 268435456&this.bg&&~this.extended.underlineColor?50331648==(50331648&this.extended.underlineColor):this.isFgRGB()},e.prototype.isUnderlineColorPalette=function(){return 268435456&this.bg&&~this.extended.underlineColor?16777216==(50331648&this.extended.underlineColor)||33554432==(50331648&this.extended.underlineColor):this.isFgPalette()},e.prototype.isUnderlineColorDefault=function(){return 268435456&this.bg&&~this.extended.underlineColor?0==(50331648&this.extended.underlineColor):this.isFgDefault()},e.prototype.getUnderlineStyle=function(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0},e}();t.AttributeData=r;var n=function(){function e(e,t){void 0===e&&(e=0),void 0===t&&(t=-1),this.underlineStyle=e,this.underlineColor=t}return e.prototype.clone=function(){return new e(this.underlineStyle,this.underlineColor)},e.prototype.isEmpty=function(){return 0===this.underlineStyle},e}();t.ExtendedAttrs=n},9092:function(e,t,r){var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,i=0,o=t.length;i<o;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))};Object.defineProperty(t,"__esModule",{value:!0}),t.BufferStringIterator=t.Buffer=t.MAX_BUFFER_SIZE=void 0;var o=r(6349),s=r(8437),a=r(511),l=r(643),c=r(4634),d=r(4863),h=r(7116),u=r(3734);t.MAX_BUFFER_SIZE=4294967295;var f=function(){function e(e,t,r){this._hasScrollback=e,this._optionsService=t,this._bufferService=r,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.savedY=0,this.savedX=0,this.savedCurAttrData=s.DEFAULT_ATTR_DATA.clone(),this.savedCharset=h.DEFAULT_CHARSET,this.markers=[],this._nullCell=a.CellData.fromCharData([0,l.NULL_CELL_CHAR,l.NULL_CELL_WIDTH,l.NULL_CELL_CODE]),this._whitespaceCell=a.CellData.fromCharData([0,l.WHITESPACE_CELL_CHAR,l.WHITESPACE_CELL_WIDTH,l.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new o.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}return e.prototype.getNullCell=function(e){return e?(this._nullCell.fg=e.fg,this._nullCell.bg=e.bg,this._nullCell.extended=e.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new u.ExtendedAttrs),this._nullCell},e.prototype.getWhitespaceCell=function(e){return e?(this._whitespaceCell.fg=e.fg,this._whitespaceCell.bg=e.bg,this._whitespaceCell.extended=e.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new u.ExtendedAttrs),this._whitespaceCell},e.prototype.getBlankLine=function(e,t){return new s.BufferLine(this._bufferService.cols,this.getNullCell(e),t)},Object.defineProperty(e.prototype,"hasScrollback",{get:function(){return this._hasScrollback&&this.lines.maxLength>this._rows},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isCursorInViewport",{get:function(){var e=this.ybase+this.y-this.ydisp;return e>=0&&e<this._rows},enumerable:!1,configurable:!0}),e.prototype._getCorrectBufferLength=function(e){if(!this._hasScrollback)return e;var r=e+this._optionsService.rawOptions.scrollback;return r>t.MAX_BUFFER_SIZE?t.MAX_BUFFER_SIZE:r},e.prototype.fillViewportRows=function(e){if(0===this.lines.length){void 0===e&&(e=s.DEFAULT_ATTR_DATA);for(var t=this._rows;t--;)this.lines.push(this.getBlankLine(e))}},e.prototype.clear=function(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new o.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()},e.prototype.resize=function(e,t){var r=this.getNullCell(s.DEFAULT_ATTR_DATA),n=this._getCorrectBufferLength(t);if(n>this.lines.maxLength&&(this.lines.maxLength=n),this.lines.length>0){if(this._cols<e)for(var i=0;i<this.lines.length;i++)this.lines.get(i).resize(e,r);var o=0;if(this._rows<t)for(var a=this._rows;a<t;a++)this.lines.length<t+this.ybase&&(this._optionsService.rawOptions.windowsMode?this.lines.push(new s.BufferLine(e,r)):this.ybase>0&&this.lines.length<=this.ybase+this.y+o+1?(this.ybase--,o++,this.ydisp>0&&this.ydisp--):this.lines.push(new s.BufferLine(e,r)));else for(a=this._rows;a>t;a--)this.lines.length>t+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(n<this.lines.maxLength){var l=this.lines.length-n;l>0&&(this.lines.trimStart(l),this.ybase=Math.max(this.ybase-l,0),this.ydisp=Math.max(this.ydisp-l,0),this.savedY=Math.max(this.savedY-l,0)),this.lines.maxLength=n}this.x=Math.min(this.x,e-1),this.y=Math.min(this.y,t-1),o&&(this.y+=o),this.savedX=Math.min(this.savedX,e-1),this.scrollTop=0}if(this.scrollBottom=t-1,this._isReflowEnabled&&(this._reflow(e,t),this._cols>e))for(i=0;i<this.lines.length;i++)this.lines.get(i).resize(e,r);this._cols=e,this._rows=t},Object.defineProperty(e.prototype,"_isReflowEnabled",{get:function(){return this._hasScrollback&&!this._optionsService.rawOptions.windowsMode},enumerable:!1,configurable:!0}),e.prototype._reflow=function(e,t){this._cols!==e&&(e>this._cols?this._reflowLarger(e,t):this._reflowSmaller(e,t))},e.prototype._reflowLarger=function(e,t){var r=(0,c.reflowLargerGetLinesToRemove)(this.lines,this._cols,e,this.ybase+this.y,this.getNullCell(s.DEFAULT_ATTR_DATA));if(r.length>0){var n=(0,c.reflowLargerCreateNewLayout)(this.lines,r);(0,c.reflowLargerApplyNewLayout)(this.lines,n.layout),this._reflowLargerAdjustViewport(e,t,n.countRemoved)}},e.prototype._reflowLargerAdjustViewport=function(e,t,r){for(var n=this.getNullCell(s.DEFAULT_ATTR_DATA),i=r;i-- >0;)0===this.ybase?(this.y>0&&this.y--,this.lines.length<t&&this.lines.push(new s.BufferLine(e,n))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-r,0)},e.prototype._reflowSmaller=function(e,t){for(var r=this.getNullCell(s.DEFAULT_ATTR_DATA),o=[],a=0,l=this.lines.length-1;l>=0;l--){var d=this.lines.get(l);if(!(!d||!d.isWrapped&&d.getTrimmedLength()<=e)){for(var h=[d];d.isWrapped&&l>0;)d=this.lines.get(--l),h.unshift(d);var u=this.ybase+this.y;if(!(u>=l&&u<l+h.length)){var f,p=h[h.length-1].getTrimmedLength(),_=(0,c.reflowSmallerGetNewLineLengths)(h,this._cols,e),b=_.length-h.length;f=0===this.ybase&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+b):Math.max(0,this.lines.length-this.lines.maxLength+b);for(var g=[],m=0;m<b;m++){var v=this.getBlankLine(s.DEFAULT_ATTR_DATA,!0);g.push(v)}g.length>0&&(o.push({start:l+h.length+a,newLines:g}),a+=g.length),h.push.apply(h,i([],n(g),!1));var A=_.length-1,y=_[A];0===y&&(y=_[--A]);for(var C=h.length-b-1,w=p;C>=0;){var x=Math.min(w,y);if(void 0===h[A])break;if(h[A].copyCellsFrom(h[C],w-x,y-x,x,!0),0==(y-=x)&&(y=_[--A]),0==(w-=x)){C--;var S=Math.max(C,0);w=(0,c.getWrappedLineTrimmedLength)(h,S,this._cols)}}for(m=0;m<h.length;m++)_[m]<e&&h[m].setCell(_[m],r);for(var $=b-f;$-- >0;)0===this.ybase?this.y<t-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+a)-t&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+b,this.ybase+t-1)}}}if(o.length>0){var k=[],E=[];for(m=0;m<this.lines.length;m++)E.push(this.lines.get(m));var B=this.lines.length,L=B-1,R=0,D=o[R];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+a);var M=0;for(m=Math.min(this.lines.maxLength-1,B+a-1);m>=0;m--)if(D&&D.start>L+M){for(var O=D.newLines.length-1;O>=0;O--)this.lines.set(m--,D.newLines[O]);m++,k.push({index:L+1,amount:D.newLines.length}),M+=D.newLines.length,D=o[++R]}else this.lines.set(m,E[L--]);var T=0;for(m=k.length-1;m>=0;m--)k[m].index+=T,this.lines.onInsertEmitter.fire(k[m]),T+=k[m].amount;var I=Math.max(0,B+a-this.lines.maxLength);I>0&&this.lines.onTrimEmitter.fire(I)}},e.prototype.stringIndexToBufferIndex=function(e,t,r){for(void 0===r&&(r=!1);t;){var n=this.lines.get(e);if(!n)return[-1,-1];for(var i=r?n.getTrimmedLength():n.length,o=0;o<i;++o)if(n.get(o)[l.CHAR_DATA_WIDTH_INDEX]&&(t-=n.get(o)[l.CHAR_DATA_CHAR_INDEX].length||1),t<0)return[e,o];e++}return[e,0]},e.prototype.translateBufferLineToString=function(e,t,r,n){void 0===r&&(r=0);var i=this.lines.get(e);return i?i.translateToString(t,r,n):""},e.prototype.getWrappedRangeForLine=function(e){for(var t=e,r=e;t>0&&this.lines.get(t).isWrapped;)t--;for(;r+1<this.lines.length&&this.lines.get(r+1).isWrapped;)r++;return{first:t,last:r}},e.prototype.setupTabStops=function(e){for(null!=e?this.tabs[e]||(e=this.prevStop(e)):(this.tabs={},e=0);e<this._cols;e+=this._optionsService.rawOptions.tabStopWidth)this.tabs[e]=!0},e.prototype.prevStop=function(e){for(null==e&&(e=this.x);!this.tabs[--e]&&e>0;);return e>=this._cols?this._cols-1:e<0?0:e},e.prototype.nextStop=function(e){for(null==e&&(e=this.x);!this.tabs[++e]&&e<this._cols;);return e>=this._cols?this._cols-1:e<0?0:e},e.prototype.clearMarkers=function(e){this._isClearing=!0;for(var t=0;t<this.markers.length;t++)this.markers[t].line===e&&(this.markers[t].dispose(),this.markers.splice(t--,1));this._isClearing=!1},e.prototype.clearAllMarkers=function(){this._isClearing=!0;for(var e=0;e<this.markers.length;e++)this.markers[e].dispose(),this.markers.splice(e--,1);this._isClearing=!1},e.prototype.addMarker=function(e){var t=this,r=new d.Marker(e);return this.markers.push(r),r.register(this.lines.onTrim((function(e){r.line-=e,r.line<0&&r.dispose()}))),r.register(this.lines.onInsert((function(e){r.line>=e.index&&(r.line+=e.amount)}))),r.register(this.lines.onDelete((function(e){r.line>=e.index&&r.line<e.index+e.amount&&r.dispose(),r.line>e.index&&(r.line-=e.amount)}))),r.register(r.onDispose((function(){return t._removeMarker(r)}))),r},e.prototype._removeMarker=function(e){this._isClearing||this.markers.splice(this.markers.indexOf(e),1)},e.prototype.iterator=function(e,t,r,n,i){return new p(this,e,t,r,n,i)},e}();t.Buffer=f;var p=function(){function e(e,t,r,n,i,o){void 0===r&&(r=0),void 0===n&&(n=e.lines.length),void 0===i&&(i=0),void 0===o&&(o=0),this._buffer=e,this._trimRight=t,this._startIndex=r,this._endIndex=n,this._startOverscan=i,this._endOverscan=o,this._startIndex<0&&(this._startIndex=0),this._endIndex>this._buffer.lines.length&&(this._endIndex=this._buffer.lines.length),this._current=this._startIndex}return e.prototype.hasNext=function(){return this._current<this._endIndex},e.prototype.next=function(){var e=this._buffer.getWrappedRangeForLine(this._current);e.first<this._startIndex-this._startOverscan&&(e.first=this._startIndex-this._startOverscan),e.last>this._endIndex+this._endOverscan&&(e.last=this._endIndex+this._endOverscan),e.first=Math.max(e.first,0),e.last=Math.min(e.last,this._buffer.lines.length);for(var t="",r=e.first;r<=e.last;++r)t+=this._buffer.translateBufferLineToString(r,this._trimRight);return this._current=e.last+1,{range:e,content:t}},e}();t.BufferStringIterator=p},8437:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferLine=t.DEFAULT_ATTR_DATA=void 0;var n=r(482),i=r(643),o=r(511),s=r(3734);t.DEFAULT_ATTR_DATA=Object.freeze(new s.AttributeData);var a=function(){function e(e,t,r){void 0===r&&(r=!1),this.isWrapped=r,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*e);for(var n=t||o.CellData.fromCharData([0,i.NULL_CELL_CHAR,i.NULL_CELL_WIDTH,i.NULL_CELL_CODE]),s=0;s<e;++s)this.setCell(s,n);this.length=e}return e.prototype.get=function(e){var t=this._data[3*e+0],r=2097151&t;return[this._data[3*e+1],2097152&t?this._combined[e]:r?(0,n.stringFromCodePoint)(r):"",t>>22,2097152&t?this._combined[e].charCodeAt(this._combined[e].length-1):r]},e.prototype.set=function(e,t){this._data[3*e+1]=t[i.CHAR_DATA_ATTR_INDEX],t[i.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[e]=t[1],this._data[3*e+0]=2097152|e|t[i.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*e+0]=t[i.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|t[i.CHAR_DATA_WIDTH_INDEX]<<22},e.prototype.getWidth=function(e){return this._data[3*e+0]>>22},e.prototype.hasWidth=function(e){return 12582912&this._data[3*e+0]},e.prototype.getFg=function(e){return this._data[3*e+1]},e.prototype.getBg=function(e){return this._data[3*e+2]},e.prototype.hasContent=function(e){return 4194303&this._data[3*e+0]},e.prototype.getCodePoint=function(e){var t=this._data[3*e+0];return 2097152&t?this._combined[e].charCodeAt(this._combined[e].length-1):2097151&t},e.prototype.isCombined=function(e){return 2097152&this._data[3*e+0]},e.prototype.getString=function(e){var t=this._data[3*e+0];return 2097152&t?this._combined[e]:2097151&t?(0,n.stringFromCodePoint)(2097151&t):""},e.prototype.loadCell=function(e,t){var r=3*e;return t.content=this._data[r+0],t.fg=this._data[r+1],t.bg=this._data[r+2],2097152&t.content&&(t.combinedData=this._combined[e]),268435456&t.bg&&(t.extended=this._extendedAttrs[e]),t},e.prototype.setCell=function(e,t){2097152&t.content&&(this._combined[e]=t.combinedData),268435456&t.bg&&(this._extendedAttrs[e]=t.extended),this._data[3*e+0]=t.content,this._data[3*e+1]=t.fg,this._data[3*e+2]=t.bg},e.prototype.setCellFromCodePoint=function(e,t,r,n,i,o){268435456&i&&(this._extendedAttrs[e]=o),this._data[3*e+0]=t|r<<22,this._data[3*e+1]=n,this._data[3*e+2]=i},e.prototype.addCodepointToCell=function(e,t){var r=this._data[3*e+0];2097152&r?this._combined[e]+=(0,n.stringFromCodePoint)(t):(2097151&r?(this._combined[e]=(0,n.stringFromCodePoint)(2097151&r)+(0,n.stringFromCodePoint)(t),r&=-2097152,r|=2097152):r=t|1<<22,this._data[3*e+0]=r)},e.prototype.insertCells=function(e,t,r,n){if((e%=this.length)&&2===this.getWidth(e-1)&&this.setCellFromCodePoint(e-1,0,1,(null==n?void 0:n.fg)||0,(null==n?void 0:n.bg)||0,(null==n?void 0:n.extended)||new s.ExtendedAttrs),t<this.length-e){for(var i=new o.CellData,a=this.length-e-t-1;a>=0;--a)this.setCell(e+t+a,this.loadCell(e+a,i));for(a=0;a<t;++a)this.setCell(e+a,r)}else for(a=e;a<this.length;++a)this.setCell(a,r);2===this.getWidth(this.length-1)&&this.setCellFromCodePoint(this.length-1,0,1,(null==n?void 0:n.fg)||0,(null==n?void 0:n.bg)||0,(null==n?void 0:n.extended)||new s.ExtendedAttrs)},e.prototype.deleteCells=function(e,t,r,n){if(e%=this.length,t<this.length-e){for(var i=new o.CellData,a=0;a<this.length-e-t;++a)this.setCell(e+a,this.loadCell(e+t+a,i));for(a=this.length-t;a<this.length;++a)this.setCell(a,r)}else for(a=e;a<this.length;++a)this.setCell(a,r);e&&2===this.getWidth(e-1)&&this.setCellFromCodePoint(e-1,0,1,(null==n?void 0:n.fg)||0,(null==n?void 0:n.bg)||0,(null==n?void 0:n.extended)||new s.ExtendedAttrs),0!==this.getWidth(e)||this.hasContent(e)||this.setCellFromCodePoint(e,0,1,(null==n?void 0:n.fg)||0,(null==n?void 0:n.bg)||0,(null==n?void 0:n.extended)||new s.ExtendedAttrs)},e.prototype.replaceCells=function(e,t,r,n){for(e&&2===this.getWidth(e-1)&&this.setCellFromCodePoint(e-1,0,1,(null==n?void 0:n.fg)||0,(null==n?void 0:n.bg)||0,(null==n?void 0:n.extended)||new s.ExtendedAttrs),t<this.length&&2===this.getWidth(t-1)&&this.setCellFromCodePoint(t,0,1,(null==n?void 0:n.fg)||0,(null==n?void 0:n.bg)||0,(null==n?void 0:n.extended)||new s.ExtendedAttrs);e<t&&e<this.length;)this.setCell(e++,r)},e.prototype.resize=function(e,t){if(e!==this.length){if(e>this.length){var r=new Uint32Array(3*e);this.length&&(3*e<this._data.length?r.set(this._data.subarray(0,3*e)):r.set(this._data)),this._data=r;for(var n=this.length;n<e;++n)this.setCell(n,t)}else if(e){(r=new Uint32Array(3*e)).set(this._data.subarray(0,3*e)),this._data=r;var i=Object.keys(this._combined);for(n=0;n<i.length;n++){var o=parseInt(i[n],10);o>=e&&delete this._combined[o]}}else this._data=new Uint32Array(0),this._combined={};this.length=e}},e.prototype.fill=function(e){this._combined={},this._extendedAttrs={};for(var t=0;t<this.length;++t)this.setCell(t,e)},e.prototype.copyFrom=function(e){for(var t in this.length!==e.length?this._data=new Uint32Array(e._data):this._data.set(e._data),this.length=e.length,this._combined={},e._combined)this._combined[t]=e._combined[t];for(var t in this._extendedAttrs={},e._extendedAttrs)this._extendedAttrs[t]=e._extendedAttrs[t];this.isWrapped=e.isWrapped},e.prototype.clone=function(){var t=new e(0);for(var r in t._data=new Uint32Array(this._data),t.length=this.length,this._combined)t._combined[r]=this._combined[r];for(var r in this._extendedAttrs)t._extendedAttrs[r]=this._extendedAttrs[r];return t.isWrapped=this.isWrapped,t},e.prototype.getTrimmedLength=function(){for(var e=this.length-1;e>=0;--e)if(4194303&this._data[3*e+0])return e+(this._data[3*e+0]>>22);return 0},e.prototype.copyCellsFrom=function(e,t,r,n,i){var o=e._data;if(i)for(var s=n-1;s>=0;s--)for(var a=0;a<3;a++)this._data[3*(r+s)+a]=o[3*(t+s)+a];else for(s=0;s<n;s++)for(a=0;a<3;a++)this._data[3*(r+s)+a]=o[3*(t+s)+a];var l=Object.keys(e._combined);for(a=0;a<l.length;a++){var c=parseInt(l[a],10);c>=t&&(this._combined[c-t+r]=e._combined[c])}},e.prototype.translateToString=function(e,t,r){void 0===e&&(e=!1),void 0===t&&(t=0),void 0===r&&(r=this.length),e&&(r=Math.min(r,this.getTrimmedLength()));for(var o="";t<r;){var s=this._data[3*t+0],a=2097151&s;o+=2097152&s?this._combined[t]:a?(0,n.stringFromCodePoint)(a):i.WHITESPACE_CELL_CHAR,t+=s>>22||1}return o},e}();t.BufferLine=a},4841:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getRangeLength=void 0,t.getRangeLength=function(e,t){if(e.start.y>e.end.y)throw new Error("Buffer range end ("+e.end.x+", "+e.end.y+") cannot be before start ("+e.start.x+", "+e.start.y+")");return t*(e.end.y-e.start.y)+(e.end.x-e.start.x+1)}},4634:(e,t)=>{function r(e,t,r){if(t===e.length-1)return e[t].getTrimmedLength();var n=!e[t].hasContent(r-1)&&1===e[t].getWidth(r-1),i=2===e[t+1].getWidth(0);return n&&i?r-1:r}Object.defineProperty(t,"__esModule",{value:!0}),t.getWrappedLineTrimmedLength=t.reflowSmallerGetNewLineLengths=t.reflowLargerApplyNewLayout=t.reflowLargerCreateNewLayout=t.reflowLargerGetLinesToRemove=void 0,t.reflowLargerGetLinesToRemove=function(e,t,n,i,o){for(var s=[],a=0;a<e.length-1;a++){var l=a,c=e.get(++l);if(c.isWrapped){for(var d=[e.get(a)];l<e.length&&c.isWrapped;)d.push(c),c=e.get(++l);if(i>=a&&i<l)a+=d.length-1;else{for(var h=0,u=r(d,h,t),f=1,p=0;f<d.length;){var _=r(d,f,t),b=_-p,g=n-u,m=Math.min(b,g);d[h].copyCellsFrom(d[f],p,u,m,!1),(u+=m)===n&&(h++,u=0),(p+=m)===_&&(f++,p=0),0===u&&0!==h&&2===d[h-1].getWidth(n-1)&&(d[h].copyCellsFrom(d[h-1],n-1,u++,1,!1),d[h-1].setCell(n-1,o))}d[h].replaceCells(u,n,o);for(var v=0,A=d.length-1;A>0&&(A>h||0===d[A].getTrimmedLength());A--)v++;v>0&&(s.push(a+d.length-v),s.push(v)),a+=d.length-1}}}return s},t.reflowLargerCreateNewLayout=function(e,t){for(var r=[],n=0,i=t[n],o=0,s=0;s<e.length;s++)if(i===s){var a=t[++n];e.onDeleteEmitter.fire({index:s-o,amount:a}),s+=a-1,o+=a,i=t[++n]}else r.push(s);return{layout:r,countRemoved:o}},t.reflowLargerApplyNewLayout=function(e,t){for(var r=[],n=0;n<t.length;n++)r.push(e.get(t[n]));for(n=0;n<r.length;n++)e.set(n,r[n]);e.length=t.length},t.reflowSmallerGetNewLineLengths=function(e,t,n){for(var i=[],o=e.map((function(n,i){return r(e,i,t)})).reduce((function(e,t){return e+t})),s=0,a=0,l=0;l<o;){if(o-l<n){i.push(o-l);break}s+=n;var c=r(e,a,t);s>c&&(s-=c,a++);var d=2===e[a].getWidth(s-1);d&&s--;var h=d?n-1:n;i.push(h),l+=h}return i},t.getWrappedLineTrimmedLength=r},5295:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.BufferSet=void 0;var o=r(9092),s=r(8460),a=function(e){function t(t,r){var n=e.call(this)||this;return n._optionsService=t,n._bufferService=r,n._onBufferActivate=n.register(new s.EventEmitter),n.reset(),n}return i(t,e),Object.defineProperty(t.prototype,"onBufferActivate",{get:function(){return this._onBufferActivate.event},enumerable:!1,configurable:!0}),t.prototype.reset=function(){this._normal=new o.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new o.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()},Object.defineProperty(t.prototype,"alt",{get:function(){return this._alt},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"active",{get:function(){return this._activeBuffer},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"normal",{get:function(){return this._normal},enumerable:!1,configurable:!0}),t.prototype.activateNormalBuffer=function(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))},t.prototype.activateAltBuffer=function(e){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(e),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))},t.prototype.resize=function(e,t){this._normal.resize(e,t),this._alt.resize(e,t)},t.prototype.setupTabStops=function(e){this._normal.setupTabStops(e),this._alt.setupTabStops(e)},t}(r(844).Disposable);t.BufferSet=a},511:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.CellData=void 0;var o=r(482),s=r(643),a=r(3734),l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.content=0,t.fg=0,t.bg=0,t.extended=new a.ExtendedAttrs,t.combinedData="",t}return i(t,e),t.fromCharData=function(e){var r=new t;return r.setFromCharData(e),r},t.prototype.isCombined=function(){return 2097152&this.content},t.prototype.getWidth=function(){return this.content>>22},t.prototype.getChars=function(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,o.stringFromCodePoint)(2097151&this.content):""},t.prototype.getCode=function(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content},t.prototype.setFromCharData=function(e){this.fg=e[s.CHAR_DATA_ATTR_INDEX],this.bg=0;var t=!1;if(e[s.CHAR_DATA_CHAR_INDEX].length>2)t=!0;else if(2===e[s.CHAR_DATA_CHAR_INDEX].length){var r=e[s.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=r&&r<=56319){var n=e[s.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=n&&n<=57343?this.content=1024*(r-55296)+n-56320+65536|e[s.CHAR_DATA_WIDTH_INDEX]<<22:t=!0}else t=!0}else this.content=e[s.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|e[s.CHAR_DATA_WIDTH_INDEX]<<22;t&&(this.combinedData=e[s.CHAR_DATA_CHAR_INDEX],this.content=2097152|e[s.CHAR_DATA_WIDTH_INDEX]<<22)},t.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},t}(a.AttributeData);t.CellData=l},643:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WHITESPACE_CELL_CODE=t.WHITESPACE_CELL_WIDTH=t.WHITESPACE_CELL_CHAR=t.NULL_CELL_CODE=t.NULL_CELL_WIDTH=t.NULL_CELL_CHAR=t.CHAR_DATA_CODE_INDEX=t.CHAR_DATA_WIDTH_INDEX=t.CHAR_DATA_CHAR_INDEX=t.CHAR_DATA_ATTR_INDEX=t.DEFAULT_ATTR=t.DEFAULT_COLOR=void 0,t.DEFAULT_COLOR=256,t.DEFAULT_ATTR=256|t.DEFAULT_COLOR<<9,t.CHAR_DATA_ATTR_INDEX=0,t.CHAR_DATA_CHAR_INDEX=1,t.CHAR_DATA_WIDTH_INDEX=2,t.CHAR_DATA_CODE_INDEX=3,t.NULL_CELL_CHAR="",t.NULL_CELL_WIDTH=1,t.NULL_CELL_CODE=0,t.WHITESPACE_CELL_CHAR=" ",t.WHITESPACE_CELL_WIDTH=1,t.WHITESPACE_CELL_CODE=32},4863:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.Marker=void 0;var o=r(8460),s=function(e){function t(r){var n=e.call(this)||this;return n.line=r,n._id=t._nextId++,n.isDisposed=!1,n._onDispose=new o.EventEmitter,n}return i(t,e),Object.defineProperty(t.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onDispose",{get:function(){return this._onDispose.event},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),e.prototype.dispose.call(this))},t._nextId=1,t}(r(844).Disposable);t.Marker=s},7116:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_CHARSET=t.CHARSETS=void 0,t.CHARSETS={},t.DEFAULT_CHARSET=t.CHARSETS.B,t.CHARSETS[0]={"`":"◆",a:"▒",b:"␉",c:"␌",d:"␍",e:"␊",f:"°",g:"±",h:"␤",i:"␋",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"},t.CHARSETS.A={"#":"£"},t.CHARSETS.B=void 0,t.CHARSETS[4]={"#":"£","@":"¾","[":"ij","\\":"½","]":"|","{":"¨","|":"f","}":"¼","~":"´"},t.CHARSETS.C=t.CHARSETS[5]={"[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS.R={"#":"£","@":"à","[":"°","\\":"ç","]":"§","{":"é","|":"ù","}":"è","~":"¨"},t.CHARSETS.Q={"@":"à","[":"â","\\":"ç","]":"ê","^":"î","`":"ô","{":"é","|":"ù","}":"è","~":"û"},t.CHARSETS.K={"@":"§","[":"Ä","\\":"Ö","]":"Ü","{":"ä","|":"ö","}":"ü","~":"ß"},t.CHARSETS.Y={"#":"£","@":"§","[":"°","\\":"ç","]":"é","`":"ù","{":"à","|":"ò","}":"è","~":"ì"},t.CHARSETS.E=t.CHARSETS[6]={"@":"Ä","[":"Æ","\\":"Ø","]":"Å","^":"Ü","`":"ä","{":"æ","|":"ø","}":"å","~":"ü"},t.CHARSETS.Z={"#":"£","@":"§","[":"¡","\\":"Ñ","]":"¿","{":"°","|":"ñ","}":"ç"},t.CHARSETS.H=t.CHARSETS[7]={"@":"É","[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS["="]={"#":"ù","@":"à","[":"é","\\":"ç","]":"ê","^":"î",_:"è","`":"ô","{":"ä","|":"ö","}":"ü","~":"û"}},2584:(e,t)=>{var r,n;Object.defineProperty(t,"__esModule",{value:!0}),t.C1_ESCAPED=t.C1=t.C0=void 0,function(e){e.NUL="\0",e.SOH="",e.STX="",e.ETX="",e.EOT="",e.ENQ="",e.ACK="",e.BEL="",e.BS="\b",e.HT="\t",e.LF="\n",e.VT="\v",e.FF="\f",e.CR="\r",e.SO="",e.SI="",e.DLE="",e.DC1="",e.DC2="",e.DC3="",e.DC4="",e.NAK="",e.SYN="",e.ETB="",e.CAN="",e.EM="",e.SUB="",e.ESC="",e.FS="",e.GS="",e.RS="",e.US="",e.SP=" ",e.DEL=""}(r=t.C0||(t.C0={})),(n=t.C1||(t.C1={})).PAD="€",n.HOP="",n.BPH="‚",n.NBH="ƒ",n.IND="„",n.NEL="…",n.SSA="†",n.ESA="‡",n.HTS="ˆ",n.HTJ="‰",n.VTS="Š",n.PLD="‹",n.PLU="Œ",n.RI="",n.SS2="Ž",n.SS3="",n.DCS="",n.PU1="‘",n.PU2="’",n.STS="“",n.CCH="”",n.MW="•",n.SPA="–",n.EPA="—",n.SOS="˜",n.SGCI="™",n.SCI="š",n.CSI="›",n.ST="œ",n.OSC="",n.PM="ž",n.APC="Ÿ",(t.C1_ESCAPED||(t.C1_ESCAPED={})).ST=r.ESC+"\\"},7399:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.evaluateKeyboardEvent=void 0;var n=r(2584),i={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};t.evaluateKeyboardEvent=function(e,t,r,o){var s={type:0,cancel:!1,key:void 0},a=(e.shiftKey?1:0)|(e.altKey?2:0)|(e.ctrlKey?4:0)|(e.metaKey?8:0);switch(e.keyCode){case 0:"UIKeyInputUpArrow"===e.key?s.key=t?n.C0.ESC+"OA":n.C0.ESC+"[A":"UIKeyInputLeftArrow"===e.key?s.key=t?n.C0.ESC+"OD":n.C0.ESC+"[D":"UIKeyInputRightArrow"===e.key?s.key=t?n.C0.ESC+"OC":n.C0.ESC+"[C":"UIKeyInputDownArrow"===e.key&&(s.key=t?n.C0.ESC+"OB":n.C0.ESC+"[B");break;case 8:if(e.shiftKey){s.key=n.C0.BS;break}if(e.altKey){s.key=n.C0.ESC+n.C0.DEL;break}s.key=n.C0.DEL;break;case 9:if(e.shiftKey){s.key=n.C0.ESC+"[Z";break}s.key=n.C0.HT,s.cancel=!0;break;case 13:s.key=e.altKey?n.C0.ESC+n.C0.CR:n.C0.CR,s.cancel=!0;break;case 27:s.key=n.C0.ESC,e.altKey&&(s.key=n.C0.ESC+n.C0.ESC),s.cancel=!0;break;case 37:if(e.metaKey)break;a?(s.key=n.C0.ESC+"[1;"+(a+1)+"D",s.key===n.C0.ESC+"[1;3D"&&(s.key=n.C0.ESC+(r?"b":"[1;5D"))):s.key=t?n.C0.ESC+"OD":n.C0.ESC+"[D";break;case 39:if(e.metaKey)break;a?(s.key=n.C0.ESC+"[1;"+(a+1)+"C",s.key===n.C0.ESC+"[1;3C"&&(s.key=n.C0.ESC+(r?"f":"[1;5C"))):s.key=t?n.C0.ESC+"OC":n.C0.ESC+"[C";break;case 38:if(e.metaKey)break;a?(s.key=n.C0.ESC+"[1;"+(a+1)+"A",r||s.key!==n.C0.ESC+"[1;3A"||(s.key=n.C0.ESC+"[1;5A")):s.key=t?n.C0.ESC+"OA":n.C0.ESC+"[A";break;case 40:if(e.metaKey)break;a?(s.key=n.C0.ESC+"[1;"+(a+1)+"B",r||s.key!==n.C0.ESC+"[1;3B"||(s.key=n.C0.ESC+"[1;5B")):s.key=t?n.C0.ESC+"OB":n.C0.ESC+"[B";break;case 45:e.shiftKey||e.ctrlKey||(s.key=n.C0.ESC+"[2~");break;case 46:s.key=a?n.C0.ESC+"[3;"+(a+1)+"~":n.C0.ESC+"[3~";break;case 36:s.key=a?n.C0.ESC+"[1;"+(a+1)+"H":t?n.C0.ESC+"OH":n.C0.ESC+"[H";break;case 35:s.key=a?n.C0.ESC+"[1;"+(a+1)+"F":t?n.C0.ESC+"OF":n.C0.ESC+"[F";break;case 33:e.shiftKey?s.type=2:e.ctrlKey?s.key=n.C0.ESC+"[5;"+(a+1)+"~":s.key=n.C0.ESC+"[5~";break;case 34:e.shiftKey?s.type=3:e.ctrlKey?s.key=n.C0.ESC+"[6;"+(a+1)+"~":s.key=n.C0.ESC+"[6~";break;case 112:s.key=a?n.C0.ESC+"[1;"+(a+1)+"P":n.C0.ESC+"OP";break;case 113:s.key=a?n.C0.ESC+"[1;"+(a+1)+"Q":n.C0.ESC+"OQ";break;case 114:s.key=a?n.C0.ESC+"[1;"+(a+1)+"R":n.C0.ESC+"OR";break;case 115:s.key=a?n.C0.ESC+"[1;"+(a+1)+"S":n.C0.ESC+"OS";break;case 116:s.key=a?n.C0.ESC+"[15;"+(a+1)+"~":n.C0.ESC+"[15~";break;case 117:s.key=a?n.C0.ESC+"[17;"+(a+1)+"~":n.C0.ESC+"[17~";break;case 118:s.key=a?n.C0.ESC+"[18;"+(a+1)+"~":n.C0.ESC+"[18~";break;case 119:s.key=a?n.C0.ESC+"[19;"+(a+1)+"~":n.C0.ESC+"[19~";break;case 120:s.key=a?n.C0.ESC+"[20;"+(a+1)+"~":n.C0.ESC+"[20~";break;case 121:s.key=a?n.C0.ESC+"[21;"+(a+1)+"~":n.C0.ESC+"[21~";break;case 122:s.key=a?n.C0.ESC+"[23;"+(a+1)+"~":n.C0.ESC+"[23~";break;case 123:s.key=a?n.C0.ESC+"[24;"+(a+1)+"~":n.C0.ESC+"[24~";break;default:if(!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey)if(r&&!o||!e.altKey||e.metaKey)!r||e.altKey||e.ctrlKey||e.shiftKey||!e.metaKey?e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.keyCode>=48&&1===e.key.length?s.key=e.key:e.key&&e.ctrlKey&&("_"===e.key&&(s.key=n.C0.US),"@"===e.key&&(s.key=n.C0.NUL)):65===e.keyCode&&(s.type=1);else{var l=i[e.keyCode],c=null==l?void 0:l[e.shiftKey?1:0];if(c)s.key=n.C0.ESC+c;else if(e.keyCode>=65&&e.keyCode<=90){var d=e.ctrlKey?e.keyCode-64:e.keyCode+32,h=String.fromCharCode(d);e.shiftKey&&(h=h.toUpperCase()),s.key=n.C0.ESC+h}else"Dead"===e.key&&e.code.startsWith("Key")&&(h=e.code.slice(3,4),e.shiftKey||(h=h.toLowerCase()),s.key=n.C0.ESC+h,s.cancel=!0)}else e.keyCode>=65&&e.keyCode<=90?s.key=String.fromCharCode(e.keyCode-64):32===e.keyCode?s.key=n.C0.NUL:e.keyCode>=51&&e.keyCode<=55?s.key=String.fromCharCode(e.keyCode-51+27):56===e.keyCode?s.key=n.C0.DEL:219===e.keyCode?s.key=n.C0.ESC:220===e.keyCode?s.key=n.C0.FS:221===e.keyCode&&(s.key=n.C0.GS)}return s}},482:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Utf8ToUtf32=t.StringToUtf32=t.utf32ToString=t.stringFromCodePoint=void 0,t.stringFromCodePoint=function(e){return e>65535?(e-=65536,String.fromCharCode(55296+(e>>10))+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)},t.utf32ToString=function(e,t,r){void 0===t&&(t=0),void 0===r&&(r=e.length);for(var n="",i=t;i<r;++i){var o=e[i];o>65535?(o-=65536,n+=String.fromCharCode(55296+(o>>10))+String.fromCharCode(o%1024+56320)):n+=String.fromCharCode(o)}return n};var r=function(){function e(){this._interim=0}return e.prototype.clear=function(){this._interim=0},e.prototype.decode=function(e,t){var r=e.length;if(!r)return 0;var n=0,i=0;this._interim&&(56320<=(a=e.charCodeAt(i++))&&a<=57343?t[n++]=1024*(this._interim-55296)+a-56320+65536:(t[n++]=this._interim,t[n++]=a),this._interim=0);for(var o=i;o<r;++o){var s=e.charCodeAt(o);if(55296<=s&&s<=56319){if(++o>=r)return this._interim=s,n;var a;56320<=(a=e.charCodeAt(o))&&a<=57343?t[n++]=1024*(s-55296)+a-56320+65536:(t[n++]=s,t[n++]=a)}else 65279!==s&&(t[n++]=s)}return n},e}();t.StringToUtf32=r;var n=function(){function e(){this.interim=new Uint8Array(3)}return e.prototype.clear=function(){this.interim.fill(0)},e.prototype.decode=function(e,t){var r=e.length;if(!r)return 0;var n,i,o,s,a=0,l=0,c=0;if(this.interim[0]){var d=!1,h=this.interim[0];h&=192==(224&h)?31:224==(240&h)?15:7;for(var u=0,f=void 0;(f=63&this.interim[++u])&&u<4;)h<<=6,h|=f;for(var p=192==(224&this.interim[0])?2:224==(240&this.interim[0])?3:4,_=p-u;c<_;){if(c>=r)return 0;if(128!=(192&(f=e[c++]))){c--,d=!0;break}this.interim[u++]=f,h<<=6,h|=63&f}d||(2===p?h<128?c--:t[a++]=h:3===p?h<2048||h>=55296&&h<=57343||65279===h||(t[a++]=h):h<65536||h>1114111||(t[a++]=h)),this.interim.fill(0)}for(var b=r-4,g=c;g<r;){for(;!(!(g<b)||128&(n=e[g])||128&(i=e[g+1])||128&(o=e[g+2])||128&(s=e[g+3]));)t[a++]=n,t[a++]=i,t[a++]=o,t[a++]=s,g+=4;if((n=e[g++])<128)t[a++]=n;else if(192==(224&n)){if(g>=r)return this.interim[0]=n,a;if(128!=(192&(i=e[g++]))){g--;continue}if((l=(31&n)<<6|63&i)<128){g--;continue}t[a++]=l}else if(224==(240&n)){if(g>=r)return this.interim[0]=n,a;if(128!=(192&(i=e[g++]))){g--;continue}if(g>=r)return this.interim[0]=n,this.interim[1]=i,a;if(128!=(192&(o=e[g++]))){g--;continue}if((l=(15&n)<<12|(63&i)<<6|63&o)<2048||l>=55296&&l<=57343||65279===l)continue;t[a++]=l}else if(240==(248&n)){if(g>=r)return this.interim[0]=n,a;if(128!=(192&(i=e[g++]))){g--;continue}if(g>=r)return this.interim[0]=n,this.interim[1]=i,a;if(128!=(192&(o=e[g++]))){g--;continue}if(g>=r)return this.interim[0]=n,this.interim[1]=i,this.interim[2]=o,a;if(128!=(192&(s=e[g++]))){g--;continue}if((l=(7&n)<<18|(63&i)<<12|(63&o)<<6|63&s)<65536||l>1114111)continue;t[a++]=l}}return a},e}();t.Utf8ToUtf32=n},225:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeV6=void 0;var n,i=r(8273),o=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],s=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],a=function(){function e(){if(this.version="6",!n){n=new Uint8Array(65536),(0,i.fill)(n,1),n[0]=0,(0,i.fill)(n,0,1,32),(0,i.fill)(n,0,127,160),(0,i.fill)(n,2,4352,4448),n[9001]=2,n[9002]=2,(0,i.fill)(n,2,11904,42192),n[12351]=1,(0,i.fill)(n,2,44032,55204),(0,i.fill)(n,2,63744,64256),(0,i.fill)(n,2,65040,65050),(0,i.fill)(n,2,65072,65136),(0,i.fill)(n,2,65280,65377),(0,i.fill)(n,2,65504,65511);for(var e=0;e<o.length;++e)(0,i.fill)(n,0,o[e][0],o[e][1]+1)}}return e.prototype.wcwidth=function(e){return e<32?0:e<127?1:e<65536?n[e]:function(e,t){var r,n=0,i=t.length-1;if(e<t[0][0]||e>t[i][1])return!1;for(;i>=n;)if(e>t[r=n+i>>1][1])n=r+1;else{if(!(e<t[r][0]))return!0;i=r-1}return!1}(e,s)?0:e>=131072&&e<=196605||e>=196608&&e<=262141?2:1},e}();t.UnicodeV6=a},5981:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WriteBuffer=void 0;var n=r(8460),i="undefined"==typeof queueMicrotask?function(e){Promise.resolve().then(e)}:queueMicrotask,o=function(){function e(e){this._action=e,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._onWriteParsed=new n.EventEmitter}return Object.defineProperty(e.prototype,"onWriteParsed",{get:function(){return this._onWriteParsed.event},enumerable:!1,configurable:!0}),e.prototype.writeSync=function(e,t){if(void 0!==t&&this._syncCalls>t)this._syncCalls=0;else if(this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(void 0),this._syncCalls++,!this._isSyncWriting){var r;for(this._isSyncWriting=!0;r=this._writeBuffer.shift();){this._action(r);var n=this._callbacks.shift();n&&n()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}},e.prototype.write=function(e,t){var r=this;if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");this._writeBuffer.length||(this._bufferOffset=0,setTimeout((function(){return r._innerWrite()}))),this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(t)},e.prototype._innerWrite=function(e,t){var r=this;void 0===e&&(e=0),void 0===t&&(t=!0);for(var n=e||Date.now();this._writeBuffer.length>this._bufferOffset;){var o=this._writeBuffer[this._bufferOffset],s=this._action(o,t);if(s)return void s.catch((function(e){return i((function(){throw e})),Promise.resolve(!1)})).then((function(e){return Date.now()-n>=12?setTimeout((function(){return r._innerWrite(0,e)})):r._innerWrite(n,e)}));var a=this._callbacks[this._bufferOffset];if(a&&a(),this._bufferOffset++,this._pendingData-=o.length,Date.now()-n>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout((function(){return r._innerWrite()}))):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()},e}();t.WriteBuffer=o},5941:function(e,t){var r=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s};Object.defineProperty(t,"__esModule",{value:!0}),t.toRgbString=t.parseColor=void 0;var n=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,i=/^[\da-f]+$/;function o(e,t){var r=e.toString(16),n=r.length<2?"0"+r:r;switch(t){case 4:return r[0];case 8:return n;case 12:return(n+n).slice(0,3);default:return n+n}}t.parseColor=function(e){if(e){var t=e.toLowerCase();if(0===t.indexOf("rgb:")){t=t.slice(4);var r=n.exec(t);if(r){var o=r[1]?15:r[4]?255:r[7]?4095:65535;return[Math.round(parseInt(r[1]||r[4]||r[7]||r[10],16)/o*255),Math.round(parseInt(r[2]||r[5]||r[8]||r[11],16)/o*255),Math.round(parseInt(r[3]||r[6]||r[9]||r[12],16)/o*255)]}}else if(0===t.indexOf("#")&&(t=t.slice(1),i.exec(t)&&[3,6,9,12].includes(t.length))){for(var s=t.length/3,a=[0,0,0],l=0;l<3;++l){var c=parseInt(t.slice(s*l,s*l+s),16);a[l]=1===s?c<<4:2===s?c:3===s?c>>4:c>>8}return a}}},t.toRgbString=function(e,t){void 0===t&&(t=16);var n=r(e,3),i=n[0],s=n[1],a=n[2];return"rgb:"+o(i,t)+"/"+o(s,t)+"/"+o(a,t)}},5770:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PAYLOAD_LIMIT=void 0,t.PAYLOAD_LIMIT=1e7},6351:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DcsHandler=t.DcsParser=void 0;var n=r(482),i=r(8742),o=r(5770),s=[],a=function(){function e(){this._handlers=Object.create(null),this._active=s,this._ident=0,this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return e.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=s},e.prototype.registerHandler=function(e,t){void 0===this._handlers[e]&&(this._handlers[e]=[]);var r=this._handlers[e];return r.push(t),{dispose:function(){var e=r.indexOf(t);-1!==e&&r.splice(e,1)}}},e.prototype.clearHandler=function(e){this._handlers[e]&&delete this._handlers[e]},e.prototype.setHandlerFallback=function(e){this._handlerFb=e},e.prototype.reset=function(){if(this._active.length)for(var e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].unhook(!1);this._stack.paused=!1,this._active=s,this._ident=0},e.prototype.hook=function(e,t){if(this.reset(),this._ident=e,this._active=this._handlers[e]||s,this._active.length)for(var r=this._active.length-1;r>=0;r--)this._active[r].hook(t);else this._handlerFb(this._ident,"HOOK",t)},e.prototype.put=function(e,t,r){if(this._active.length)for(var i=this._active.length-1;i>=0;i--)this._active[i].put(e,t,r);else this._handlerFb(this._ident,"PUT",(0,n.utf32ToString)(e,t,r))},e.prototype.unhook=function(e,t){if(void 0===t&&(t=!0),this._active.length){var r=!1,n=this._active.length-1,i=!1;if(this._stack.paused&&(n=this._stack.loopPosition-1,r=t,i=this._stack.fallThrough,this._stack.paused=!1),!i&&!1===r){for(;n>=0&&!0!==(r=this._active[n].unhook(e));n--)if(r instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=n,this._stack.fallThrough=!1,r;n--}for(;n>=0;n--)if((r=this._active[n].unhook(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=n,this._stack.fallThrough=!0,r}else this._handlerFb(this._ident,"UNHOOK",e);this._active=s,this._ident=0},e}();t.DcsParser=a;var l=new i.Params;l.addParam(0);var c=function(){function e(e){this._handler=e,this._data="",this._params=l,this._hitLimit=!1}return e.prototype.hook=function(e){this._params=e.length>1||e.params[0]?e.clone():l,this._data="",this._hitLimit=!1},e.prototype.put=function(e,t,r){this._hitLimit||(this._data+=(0,n.utf32ToString)(e,t,r),this._data.length>o.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},e.prototype.unhook=function(e){var t=this,r=!1;if(this._hitLimit)r=!1;else if(e&&(r=this._handler(this._data,this._params))instanceof Promise)return r.then((function(e){return t._params=l,t._data="",t._hitLimit=!1,e}));return this._params=l,this._data="",this._hitLimit=!1,r},e}();t.DcsHandler=c},2015:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.EscapeSequenceParser=t.VT500_TRANSITION_TABLE=t.TransitionTable=void 0;var o=r(844),s=r(8273),a=r(8742),l=r(6242),c=r(6351),d=function(){function e(e){this.table=new Uint8Array(e)}return e.prototype.setDefault=function(e,t){(0,s.fill)(this.table,e<<4|t)},e.prototype.add=function(e,t,r,n){this.table[t<<8|e]=r<<4|n},e.prototype.addMany=function(e,t,r,n){for(var i=0;i<e.length;i++)this.table[t<<8|e[i]]=r<<4|n},e}();t.TransitionTable=d;var h=160;t.VT500_TRANSITION_TABLE=function(){var e=new d(4095),t=Array.apply(null,Array(256)).map((function(e,t){return t})),r=function(e,r){return t.slice(e,r)},n=r(32,127),i=r(0,24);i.push(25),i.push.apply(i,r(28,32));var o,s=r(0,14);for(o in e.setDefault(1,0),e.addMany(n,0,2,0),s)e.addMany([24,26,153,154],o,3,0),e.addMany(r(128,144),o,3,0),e.addMany(r(144,152),o,3,0),e.add(156,o,0,0),e.add(27,o,11,1),e.add(157,o,4,8),e.addMany([152,158,159],o,0,7),e.add(155,o,11,3),e.add(144,o,11,9);return e.addMany(i,0,3,0),e.addMany(i,1,3,1),e.add(127,1,0,1),e.addMany(i,8,0,8),e.addMany(i,3,3,3),e.add(127,3,0,3),e.addMany(i,4,3,4),e.add(127,4,0,4),e.addMany(i,6,3,6),e.addMany(i,5,3,5),e.add(127,5,0,5),e.addMany(i,2,3,2),e.add(127,2,0,2),e.add(93,1,4,8),e.addMany(n,8,5,8),e.add(127,8,5,8),e.addMany([156,27,24,26,7],8,6,0),e.addMany(r(28,32),8,0,8),e.addMany([88,94,95],1,0,7),e.addMany(n,7,0,7),e.addMany(i,7,0,7),e.add(156,7,0,0),e.add(127,7,0,7),e.add(91,1,11,3),e.addMany(r(64,127),3,7,0),e.addMany(r(48,60),3,8,4),e.addMany([60,61,62,63],3,9,4),e.addMany(r(48,60),4,8,4),e.addMany(r(64,127),4,7,0),e.addMany([60,61,62,63],4,0,6),e.addMany(r(32,64),6,0,6),e.add(127,6,0,6),e.addMany(r(64,127),6,0,0),e.addMany(r(32,48),3,9,5),e.addMany(r(32,48),5,9,5),e.addMany(r(48,64),5,0,6),e.addMany(r(64,127),5,7,0),e.addMany(r(32,48),4,9,5),e.addMany(r(32,48),1,9,2),e.addMany(r(32,48),2,9,2),e.addMany(r(48,127),2,10,0),e.addMany(r(48,80),1,10,0),e.addMany(r(81,88),1,10,0),e.addMany([89,90,92],1,10,0),e.addMany(r(96,127),1,10,0),e.add(80,1,11,9),e.addMany(i,9,0,9),e.add(127,9,0,9),e.addMany(r(28,32),9,0,9),e.addMany(r(32,48),9,9,12),e.addMany(r(48,60),9,8,10),e.addMany([60,61,62,63],9,9,10),e.addMany(i,11,0,11),e.addMany(r(32,128),11,0,11),e.addMany(r(28,32),11,0,11),e.addMany(i,10,0,10),e.add(127,10,0,10),e.addMany(r(28,32),10,0,10),e.addMany(r(48,60),10,8,10),e.addMany([60,61,62,63],10,0,11),e.addMany(r(32,48),10,9,12),e.addMany(i,12,0,12),e.add(127,12,0,12),e.addMany(r(28,32),12,0,12),e.addMany(r(32,48),12,9,12),e.addMany(r(48,64),12,0,11),e.addMany(r(64,127),12,12,13),e.addMany(r(64,127),10,12,13),e.addMany(r(64,127),9,12,13),e.addMany(i,13,13,13),e.addMany(n,13,13,13),e.add(127,13,0,13),e.addMany([27,156,24,26],13,14,0),e.add(h,0,2,0),e.add(h,8,5,8),e.add(h,6,0,6),e.add(h,11,0,11),e.add(h,13,13,13),e}();var u=function(e){function r(r){void 0===r&&(r=t.VT500_TRANSITION_TABLE);var n=e.call(this)||this;return n._transitions=r,n._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},n.initialState=0,n.currentState=n.initialState,n._params=new a.Params,n._params.addParam(0),n._collect=0,n.precedingCodepoint=0,n._printHandlerFb=function(e,t,r){},n._executeHandlerFb=function(e){},n._csiHandlerFb=function(e,t){},n._escHandlerFb=function(e){},n._errorHandlerFb=function(e){return e},n._printHandler=n._printHandlerFb,n._executeHandlers=Object.create(null),n._csiHandlers=Object.create(null),n._escHandlers=Object.create(null),n._oscParser=new l.OscParser,n._dcsParser=new c.DcsParser,n._errorHandler=n._errorHandlerFb,n.registerEscHandler({final:"\\"},(function(){return!0})),n}return i(r,e),r.prototype._identifier=function(e,t){void 0===t&&(t=[64,126]);var r=0;if(e.prefix){if(e.prefix.length>1)throw new Error("only one byte as prefix supported");if((r=e.prefix.charCodeAt(0))&&60>r||r>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(e.intermediates){if(e.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(var n=0;n<e.intermediates.length;++n){var i=e.intermediates.charCodeAt(n);if(32>i||i>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");r<<=8,r|=i}}if(1!==e.final.length)throw new Error("final must be a single byte");var o=e.final.charCodeAt(0);if(t[0]>o||o>t[1])throw new Error("final must be in range "+t[0]+" .. "+t[1]);return(r<<=8)|o},r.prototype.identToString=function(e){for(var t=[];e;)t.push(String.fromCharCode(255&e)),e>>=8;return t.reverse().join("")},r.prototype.dispose=function(){this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null),this._oscParser.dispose(),this._dcsParser.dispose()},r.prototype.setPrintHandler=function(e){this._printHandler=e},r.prototype.clearPrintHandler=function(){this._printHandler=this._printHandlerFb},r.prototype.registerEscHandler=function(e,t){var r=this._identifier(e,[48,126]);void 0===this._escHandlers[r]&&(this._escHandlers[r]=[]);var n=this._escHandlers[r];return n.push(t),{dispose:function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}}},r.prototype.clearEscHandler=function(e){this._escHandlers[this._identifier(e,[48,126])]&&delete this._escHandlers[this._identifier(e,[48,126])]},r.prototype.setEscHandlerFallback=function(e){this._escHandlerFb=e},r.prototype.setExecuteHandler=function(e,t){this._executeHandlers[e.charCodeAt(0)]=t},r.prototype.clearExecuteHandler=function(e){this._executeHandlers[e.charCodeAt(0)]&&delete this._executeHandlers[e.charCodeAt(0)]},r.prototype.setExecuteHandlerFallback=function(e){this._executeHandlerFb=e},r.prototype.registerCsiHandler=function(e,t){var r=this._identifier(e);void 0===this._csiHandlers[r]&&(this._csiHandlers[r]=[]);var n=this._csiHandlers[r];return n.push(t),{dispose:function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}}},r.prototype.clearCsiHandler=function(e){this._csiHandlers[this._identifier(e)]&&delete this._csiHandlers[this._identifier(e)]},r.prototype.setCsiHandlerFallback=function(e){this._csiHandlerFb=e},r.prototype.registerDcsHandler=function(e,t){return this._dcsParser.registerHandler(this._identifier(e),t)},r.prototype.clearDcsHandler=function(e){this._dcsParser.clearHandler(this._identifier(e))},r.prototype.setDcsHandlerFallback=function(e){this._dcsParser.setHandlerFallback(e)},r.prototype.registerOscHandler=function(e,t){return this._oscParser.registerHandler(e,t)},r.prototype.clearOscHandler=function(e){this._oscParser.clearHandler(e)},r.prototype.setOscHandlerFallback=function(e){this._oscParser.setHandlerFallback(e)},r.prototype.setErrorHandler=function(e){this._errorHandler=e},r.prototype.clearErrorHandler=function(){this._errorHandler=this._errorHandlerFb},r.prototype.reset=function(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,0!==this._parseStack.state&&(this._parseStack.state=2,this._parseStack.handlers=[])},r.prototype._preserveStack=function(e,t,r,n,i){this._parseStack.state=e,this._parseStack.handlers=t,this._parseStack.handlerPos=r,this._parseStack.transition=n,this._parseStack.chunkPos=i},r.prototype.parse=function(e,t,r){var n,i=0,o=0,s=0;if(this._parseStack.state)if(2===this._parseStack.state)this._parseStack.state=0,s=this._parseStack.chunkPos+1;else{if(void 0===r||1===this._parseStack.state)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");var a=this._parseStack.handlers,l=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(!1===r&&l>-1)for(;l>=0&&!0!==(n=a[l](this._params));l--)if(n instanceof Promise)return this._parseStack.handlerPos=l,n;this._parseStack.handlers=[];break;case 4:if(!1===r&&l>-1)for(;l>=0&&!0!==(n=a[l]());l--)if(n instanceof Promise)return this._parseStack.handlerPos=l,n;this._parseStack.handlers=[];break;case 6:if(i=e[this._parseStack.chunkPos],n=this._dcsParser.unhook(24!==i&&26!==i,r))return n;27===i&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(i=e[this._parseStack.chunkPos],n=this._oscParser.end(24!==i&&26!==i,r))return n;27===i&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,s=this._parseStack.chunkPos+1,this.precedingCodepoint=0,this.currentState=15&this._parseStack.transition}for(var c=s;c<t;++c){switch(i=e[c],(o=this._transitions.table[this.currentState<<8|(i<160?i:h)])>>4){case 2:for(var d=c+1;;++d){if(d>=t||(i=e[d])<32||i>126&&i<h){this._printHandler(e,c,d),c=d-1;break}if(++d>=t||(i=e[d])<32||i>126&&i<h){this._printHandler(e,c,d),c=d-1;break}if(++d>=t||(i=e[d])<32||i>126&&i<h){this._printHandler(e,c,d),c=d-1;break}if(++d>=t||(i=e[d])<32||i>126&&i<h){this._printHandler(e,c,d),c=d-1;break}}break;case 3:this._executeHandlers[i]?this._executeHandlers[i]():this._executeHandlerFb(i),this.precedingCodepoint=0;break;case 0:break;case 1:if(this._errorHandler({position:c,code:i,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:for(var u=(a=this._csiHandlers[this._collect<<8|i])?a.length-1:-1;u>=0&&!0!==(n=a[u](this._params));u--)if(n instanceof Promise)return this._preserveStack(3,a,u,o,c),n;u<0&&this._csiHandlerFb(this._collect<<8|i,this._params),this.precedingCodepoint=0;break;case 8:do{switch(i){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(i-48)}}while(++c<t&&(i=e[c])>47&&i<60);c--;break;case 9:this._collect<<=8,this._collect|=i;break;case 10:for(var f=this._escHandlers[this._collect<<8|i],p=f?f.length-1:-1;p>=0&&!0!==(n=f[p]());p--)if(n instanceof Promise)return this._preserveStack(4,f,p,o,c),n;p<0&&this._escHandlerFb(this._collect<<8|i),this.precedingCodepoint=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|i,this._params);break;case 13:for(var _=c+1;;++_)if(_>=t||24===(i=e[_])||26===i||27===i||i>127&&i<h){this._dcsParser.put(e,c,_),c=_-1;break}break;case 14:if(n=this._dcsParser.unhook(24!==i&&26!==i))return this._preserveStack(6,[],0,o,c),n;27===i&&(o|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0;break;case 4:this._oscParser.start();break;case 5:for(var b=c+1;;b++)if(b>=t||(i=e[b])<32||i>127&&i<h){this._oscParser.put(e,c,b),c=b-1;break}break;case 6:if(n=this._oscParser.end(24!==i&&26!==i))return this._preserveStack(5,[],0,o,c),n;27===i&&(o|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0}this.currentState=15&o}},r}(o.Disposable);t.EscapeSequenceParser=u},6242:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.OscHandler=t.OscParser=void 0;var n=r(5770),i=r(482),o=[],s=function(){function e(){this._state=0,this._active=o,this._id=-1,this._handlers=Object.create(null),this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return e.prototype.registerHandler=function(e,t){void 0===this._handlers[e]&&(this._handlers[e]=[]);var r=this._handlers[e];return r.push(t),{dispose:function(){var e=r.indexOf(t);-1!==e&&r.splice(e,1)}}},e.prototype.clearHandler=function(e){this._handlers[e]&&delete this._handlers[e]},e.prototype.setHandlerFallback=function(e){this._handlerFb=e},e.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=o},e.prototype.reset=function(){if(2===this._state)for(var e=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;e>=0;--e)this._active[e].end(!1);this._stack.paused=!1,this._active=o,this._id=-1,this._state=0},e.prototype._start=function(){if(this._active=this._handlers[this._id]||o,this._active.length)for(var e=this._active.length-1;e>=0;e--)this._active[e].start();else this._handlerFb(this._id,"START")},e.prototype._put=function(e,t,r){if(this._active.length)for(var n=this._active.length-1;n>=0;n--)this._active[n].put(e,t,r);else this._handlerFb(this._id,"PUT",(0,i.utf32ToString)(e,t,r))},e.prototype.start=function(){this.reset(),this._state=1},e.prototype.put=function(e,t,r){if(3!==this._state){if(1===this._state)for(;t<r;){var n=e[t++];if(59===n){this._state=2,this._start();break}if(n<48||57<n)return void(this._state=3);-1===this._id&&(this._id=0),this._id=10*this._id+n-48}2===this._state&&r-t>0&&this._put(e,t,r)}},e.prototype.end=function(e,t){if(void 0===t&&(t=!0),0!==this._state){if(3!==this._state)if(1===this._state&&this._start(),this._active.length){var r=!1,n=this._active.length-1,i=!1;if(this._stack.paused&&(n=this._stack.loopPosition-1,r=t,i=this._stack.fallThrough,this._stack.paused=!1),!i&&!1===r){for(;n>=0&&!0!==(r=this._active[n].end(e));n--)if(r instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=n,this._stack.fallThrough=!1,r;n--}for(;n>=0;n--)if((r=this._active[n].end(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=n,this._stack.fallThrough=!0,r}else this._handlerFb(this._id,"END",e);this._active=o,this._id=-1,this._state=0}},e}();t.OscParser=s;var a=function(){function e(e){this._handler=e,this._data="",this._hitLimit=!1}return e.prototype.start=function(){this._data="",this._hitLimit=!1},e.prototype.put=function(e,t,r){this._hitLimit||(this._data+=(0,i.utf32ToString)(e,t,r),this._data.length>n.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},e.prototype.end=function(e){var t=this,r=!1;if(this._hitLimit)r=!1;else if(e&&(r=this._handler(this._data))instanceof Promise)return r.then((function(e){return t._data="",t._hitLimit=!1,e}));return this._data="",this._hitLimit=!1,r},e}();t.OscHandler=a},8742:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Params=void 0;var r=2147483647,n=function(){function e(e,t){if(void 0===e&&(e=32),void 0===t&&(t=32),this.maxLength=e,this.maxSubParamsLength=t,t>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(e),this.length=0,this._subParams=new Int32Array(t),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(e),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}return e.fromArray=function(t){var r=new e;if(!t.length)return r;for(var n=Array.isArray(t[0])?1:0;n<t.length;++n){var i=t[n];if(Array.isArray(i))for(var o=0;o<i.length;++o)r.addSubParam(i[o]);else r.addParam(i)}return r},e.prototype.clone=function(){var t=new e(this.maxLength,this.maxSubParamsLength);return t.params.set(this.params),t.length=this.length,t._subParams.set(this._subParams),t._subParamsLength=this._subParamsLength,t._subParamsIdx.set(this._subParamsIdx),t._rejectDigits=this._rejectDigits,t._rejectSubDigits=this._rejectSubDigits,t._digitIsSub=this._digitIsSub,t},e.prototype.toArray=function(){for(var e=[],t=0;t<this.length;++t){e.push(this.params[t]);var r=this._subParamsIdx[t]>>8,n=255&this._subParamsIdx[t];n-r>0&&e.push(Array.prototype.slice.call(this._subParams,r,n))}return e},e.prototype.reset=function(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1},e.prototype.addParam=function(e){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=e>r?r:e}},e.prototype.addSubParam=function(e){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=e>r?r:e,this._subParamsIdx[this.length-1]++}},e.prototype.hasSubParams=function(e){return(255&this._subParamsIdx[e])-(this._subParamsIdx[e]>>8)>0},e.prototype.getSubParams=function(e){var t=this._subParamsIdx[e]>>8,r=255&this._subParamsIdx[e];return r-t>0?this._subParams.subarray(t,r):null},e.prototype.getSubParamsAll=function(){for(var e={},t=0;t<this.length;++t){var r=this._subParamsIdx[t]>>8,n=255&this._subParamsIdx[t];n-r>0&&(e[t]=this._subParams.slice(r,n))}return e},e.prototype.addDigit=function(e){var t;if(!(this._rejectDigits||!(t=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)){var n=this._digitIsSub?this._subParams:this.params,i=n[t-1];n[t-1]=~i?Math.min(10*i+e,r):e}},e}();t.Params=n},5741:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AddonManager=void 0;var r=function(){function e(){this._addons=[]}return e.prototype.dispose=function(){for(var e=this._addons.length-1;e>=0;e--)this._addons[e].instance.dispose()},e.prototype.loadAddon=function(e,t){var r=this,n={instance:t,dispose:t.dispose,isDisposed:!1};this._addons.push(n),t.dispose=function(){return r._wrappedAddonDispose(n)},t.activate(e)},e.prototype._wrappedAddonDispose=function(e){if(!e.isDisposed){for(var t=-1,r=0;r<this._addons.length;r++)if(this._addons[r]===e){t=r;break}if(-1===t)throw new Error("Could not dispose an addon that has not been loaded");e.isDisposed=!0,e.dispose.apply(e.instance),this._addons.splice(t,1)}},e}();t.AddonManager=r},8771:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferApiView=void 0;var n=r(3785),i=r(511),o=function(){function e(e,t){this._buffer=e,this.type=t}return e.prototype.init=function(e){return this._buffer=e,this},Object.defineProperty(e.prototype,"cursorY",{get:function(){return this._buffer.y},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"cursorX",{get:function(){return this._buffer.x},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"viewportY",{get:function(){return this._buffer.ydisp},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"baseY",{get:function(){return this._buffer.ybase},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._buffer.lines.length},enumerable:!1,configurable:!0}),e.prototype.getLine=function(e){var t=this._buffer.lines.get(e);if(t)return new n.BufferLineApiView(t)},e.prototype.getNullCell=function(){return new i.CellData},e}();t.BufferApiView=o},3785:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferLineApiView=void 0;var n=r(511),i=function(){function e(e){this._line=e}return Object.defineProperty(e.prototype,"isWrapped",{get:function(){return this._line.isWrapped},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._line.length},enumerable:!1,configurable:!0}),e.prototype.getCell=function(e,t){if(!(e<0||e>=this._line.length))return t?(this._line.loadCell(e,t),t):this._line.loadCell(e,new n.CellData)},e.prototype.translateToString=function(e,t,r){return this._line.translateToString(e,t,r)},e}();t.BufferLineApiView=i},8285:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BufferNamespaceApi=void 0;var n=r(8771),i=r(8460),o=function(){function e(e){var t=this;this._core=e,this._onBufferChange=new i.EventEmitter,this._normal=new n.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new n.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate((function(){return t._onBufferChange.fire(t.active)}))}return Object.defineProperty(e.prototype,"onBufferChange",{get:function(){return this._onBufferChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"active",{get:function(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"normal",{get:function(){return this._normal.init(this._core.buffers.normal)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alternate",{get:function(){return this._alternate.init(this._core.buffers.alt)},enumerable:!1,configurable:!0}),e}();t.BufferNamespaceApi=o},7975:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ParserApi=void 0;var r=function(){function e(e){this._core=e}return e.prototype.registerCsiHandler=function(e,t){return this._core.registerCsiHandler(e,(function(e){return t(e.toArray())}))},e.prototype.addCsiHandler=function(e,t){return this.registerCsiHandler(e,t)},e.prototype.registerDcsHandler=function(e,t){return this._core.registerDcsHandler(e,(function(e,r){return t(e,r.toArray())}))},e.prototype.addDcsHandler=function(e,t){return this.registerDcsHandler(e,t)},e.prototype.registerEscHandler=function(e,t){return this._core.registerEscHandler(e,t)},e.prototype.addEscHandler=function(e,t){return this.registerEscHandler(e,t)},e.prototype.registerOscHandler=function(e,t){return this._core.registerOscHandler(e,t)},e.prototype.addOscHandler=function(e,t){return this.registerOscHandler(e,t)},e}();t.ParserApi=r},7090:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeApi=void 0;var r=function(){function e(e){this._core=e}return e.prototype.register=function(e){this._core.unicodeService.register(e)},Object.defineProperty(e.prototype,"versions",{get:function(){return this._core.unicodeService.versions},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"activeVersion",{get:function(){return this._core.unicodeService.activeVersion},set:function(e){this._core.unicodeService.activeVersion=e},enumerable:!1,configurable:!0}),e}();t.UnicodeApi=r},744:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.BufferService=t.MINIMUM_ROWS=t.MINIMUM_COLS=void 0;var a=r(2585),l=r(5295),c=r(8460),d=r(844);t.MINIMUM_COLS=2,t.MINIMUM_ROWS=1;var h=function(e){function r(r){var n=e.call(this)||this;return n._optionsService=r,n.isUserScrolling=!1,n._onResize=new c.EventEmitter,n._onScroll=new c.EventEmitter,n.cols=Math.max(r.rawOptions.cols||0,t.MINIMUM_COLS),n.rows=Math.max(r.rawOptions.rows||0,t.MINIMUM_ROWS),n.buffers=new l.BufferSet(r,n),n}return i(r,e),Object.defineProperty(r.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!1,configurable:!0}),r.prototype.dispose=function(){e.prototype.dispose.call(this),this.buffers.dispose()},r.prototype.resize=function(e,t){this.cols=e,this.rows=t,this.buffers.resize(e,t),this.buffers.setupTabStops(this.cols),this._onResize.fire({cols:e,rows:t})},r.prototype.reset=function(){this.buffers.reset(),this.isUserScrolling=!1},r.prototype.scroll=function(e,t){void 0===t&&(t=!1);var r,n=this.buffer;(r=this._cachedBlankLine)&&r.length===this.cols&&r.getFg(0)===e.fg&&r.getBg(0)===e.bg||(r=n.getBlankLine(e,t),this._cachedBlankLine=r),r.isWrapped=t;var i=n.ybase+n.scrollTop,o=n.ybase+n.scrollBottom;if(0===n.scrollTop){var s=n.lines.isFull;o===n.lines.length-1?s?n.lines.recycle().copyFrom(r):n.lines.push(r.clone()):n.lines.splice(o+1,0,r.clone()),s?this.isUserScrolling&&(n.ydisp=Math.max(n.ydisp-1,0)):(n.ybase++,this.isUserScrolling||n.ydisp++)}else{var a=o-i+1;n.lines.shiftElements(i+1,a-1,-1),n.lines.set(o,r.clone())}this.isUserScrolling||(n.ydisp=n.ybase),this._onScroll.fire(n.ydisp)},r.prototype.scrollLines=function(e,t,r){var n=this.buffer;if(e<0){if(0===n.ydisp)return;this.isUserScrolling=!0}else e+n.ydisp>=n.ybase&&(this.isUserScrolling=!1);var i=n.ydisp;n.ydisp=Math.max(Math.min(n.ydisp+e,n.ybase),0),i!==n.ydisp&&(t||this._onScroll.fire(n.ydisp))},r.prototype.scrollPages=function(e){this.scrollLines(e*(this.rows-1))},r.prototype.scrollToTop=function(){this.scrollLines(-this.buffer.ydisp)},r.prototype.scrollToBottom=function(){this.scrollLines(this.buffer.ybase-this.buffer.ydisp)},r.prototype.scrollToLine=function(e){var t=e-this.buffer.ydisp;0!==t&&this.scrollLines(t)},o([s(0,a.IOptionsService)],r)}(d.Disposable);t.BufferService=h},7994:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CharsetService=void 0;var r=function(){function e(){this.glevel=0,this._charsets=[]}return e.prototype.reset=function(){this.charset=void 0,this._charsets=[],this.glevel=0},e.prototype.setgLevel=function(e){this.glevel=e,this.charset=this._charsets[e]},e.prototype.setgCharset=function(e,t){this._charsets[e]=t,this.glevel===e&&(this.charset=t)},e}();t.CharsetService=r},1753:function(e,t,r){var n=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},i=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreMouseService=void 0;var s=r(2585),a=r(8460),l={NONE:{events:0,restrict:function(){return!1}},X10:{events:1,restrict:function(e){return 4!==e.button&&1===e.action&&(e.ctrl=!1,e.alt=!1,e.shift=!1,!0)}},VT200:{events:19,restrict:function(e){return 32!==e.action}},DRAG:{events:23,restrict:function(e){return 32!==e.action||3!==e.button}},ANY:{events:31,restrict:function(e){return!0}}};function c(e,t){var r=(e.ctrl?16:0)|(e.shift?4:0)|(e.alt?8:0);return 4===e.button?(r|=64,r|=e.action):(r|=3&e.button,4&e.button&&(r|=64),8&e.button&&(r|=128),32===e.action?r|=32:0!==e.action||t||(r|=3)),r}var d=String.fromCharCode,h={DEFAULT:function(e){var t=[c(e,!1)+32,e.col+32,e.row+32];return t[0]>255||t[1]>255||t[2]>255?"":""+d(t[0])+d(t[1])+d(t[2])},SGR:function(e){var t=0===e.action&&4!==e.button?"m":"M";return"[<"+c(e,!0)+";"+e.col+";"+e.row+t}},u=function(){function e(e,t){var r,n,i,s;this._bufferService=e,this._coreService=t,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._onProtocolChange=new a.EventEmitter,this._lastEvent=null;try{for(var c=o(Object.keys(l)),d=c.next();!d.done;d=c.next()){var u=d.value;this.addProtocol(u,l[u])}}catch(e){r={error:e}}finally{try{d&&!d.done&&(n=c.return)&&n.call(c)}finally{if(r)throw r.error}}try{for(var f=o(Object.keys(h)),p=f.next();!p.done;p=f.next()){var _=p.value;this.addEncoding(_,h[_])}}catch(e){i={error:e}}finally{try{p&&!p.done&&(s=f.return)&&s.call(f)}finally{if(i)throw i.error}}this.reset()}return e.prototype.addProtocol=function(e,t){this._protocols[e]=t},e.prototype.addEncoding=function(e,t){this._encodings[e]=t},Object.defineProperty(e.prototype,"activeProtocol",{get:function(){return this._activeProtocol},set:function(e){if(!this._protocols[e])throw new Error('unknown protocol "'+e+'"');this._activeProtocol=e,this._onProtocolChange.fire(this._protocols[e].events)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"areMouseEventsActive",{get:function(){return 0!==this._protocols[this._activeProtocol].events},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"activeEncoding",{get:function(){return this._activeEncoding},set:function(e){if(!this._encodings[e])throw new Error('unknown encoding "'+e+'"');this._activeEncoding=e},enumerable:!1,configurable:!0}),e.prototype.reset=function(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null},Object.defineProperty(e.prototype,"onProtocolChange",{get:function(){return this._onProtocolChange.event},enumerable:!1,configurable:!0}),e.prototype.triggerMouseEvent=function(e){if(e.col<0||e.col>=this._bufferService.cols||e.row<0||e.row>=this._bufferService.rows)return!1;if(4===e.button&&32===e.action)return!1;if(3===e.button&&32!==e.action)return!1;if(4!==e.button&&(2===e.action||3===e.action))return!1;if(e.col++,e.row++,32===e.action&&this._lastEvent&&this._compareEvents(this._lastEvent,e))return!1;if(!this._protocols[this._activeProtocol].restrict(e))return!1;var t=this._encodings[this._activeEncoding](e);return t&&("DEFAULT"===this._activeEncoding?this._coreService.triggerBinaryEvent(t):this._coreService.triggerDataEvent(t,!0)),this._lastEvent=e,!0},e.prototype.explainEvents=function(e){return{down:!!(1&e),up:!!(2&e),drag:!!(4&e),move:!!(8&e),wheel:!!(16&e)}},e.prototype._compareEvents=function(e,t){return e.col===t.col&&e.row===t.row&&e.button===t.button&&e.action===t.action&&e.ctrl===t.ctrl&&e.alt===t.alt&&e.shift===t.shift},n([i(0,s.IBufferService),i(1,s.ICoreService)],e)}();t.CoreMouseService=u},6975:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},s=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.CoreService=void 0;var a=r(2585),l=r(8460),c=r(1439),d=r(844),h=Object.freeze({insertMode:!1}),u=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0}),f=function(e){function t(t,r,n,i){var o=e.call(this)||this;return o._bufferService=r,o._logService=n,o._optionsService=i,o.isCursorInitialized=!1,o.isCursorHidden=!1,o._onData=o.register(new l.EventEmitter),o._onUserInput=o.register(new l.EventEmitter),o._onBinary=o.register(new l.EventEmitter),o._scrollToBottom=t,o.register({dispose:function(){return o._scrollToBottom=void 0}}),o.modes=(0,c.clone)(h),o.decPrivateModes=(0,c.clone)(u),o}return i(t,e),Object.defineProperty(t.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onUserInput",{get:function(){return this._onUserInput.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),t.prototype.reset=function(){this.modes=(0,c.clone)(h),this.decPrivateModes=(0,c.clone)(u)},t.prototype.triggerDataEvent=function(e,t){if(void 0===t&&(t=!1),!this._optionsService.rawOptions.disableStdin){var r=this._bufferService.buffer;r.ybase!==r.ydisp&&this._scrollToBottom(),t&&this._onUserInput.fire(),this._logService.debug('sending data "'+e+'"',(function(){return e.split("").map((function(e){return e.charCodeAt(0)}))})),this._onData.fire(e)}},t.prototype.triggerBinaryEvent=function(e){this._optionsService.rawOptions.disableStdin||(this._logService.debug('sending binary "'+e+'"',(function(){return e.split("").map((function(e){return e.charCodeAt(0)}))})),this._onBinary.fire(e))},o([s(1,a.IBufferService),s(2,a.ILogService),s(3,a.IOptionsService)],t)}(d.Disposable);t.CoreService=f},9074:function(e,t,r){var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__generator||function(e,t){var r,n,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}},s=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.DecorationService=void 0;var a=r(8055),l=r(8460),c=r(844),d=r(6106),h=function(e){function t(){var t=e.call(this)||this;return t._decorations=new d.SortedList((function(e){return e.marker.line})),t._onDecorationRegistered=t.register(new l.EventEmitter),t._onDecorationRemoved=t.register(new l.EventEmitter),t}return i(t,e),Object.defineProperty(t.prototype,"onDecorationRegistered",{get:function(){return this._onDecorationRegistered.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"onDecorationRemoved",{get:function(){return this._onDecorationRemoved.event},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"decorations",{get:function(){return this._decorations.values()},enumerable:!1,configurable:!0}),t.prototype.registerDecoration=function(e){var t=this;if(!e.marker.isDisposed){var r=new u(e);if(r){var n=r.marker.onDispose((function(){return r.dispose()}));r.onDispose((function(){r&&(t._decorations.delete(r)&&t._onDecorationRemoved.fire(r),n.dispose())})),this._decorations.insert(r),this._onDecorationRegistered.fire(r)}return r}},t.prototype.reset=function(){var e,t;try{for(var r=s(this._decorations.values()),n=r.next();!n.done;n=r.next())n.value.dispose()}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this._decorations.clear()},t.prototype.getDecorationsAtLine=function(e){return o(this,(function(t){return[2,this._decorations.getKeyIterator(e)]}))},t.prototype.getDecorationsAtCell=function(e,t,r){var n,i,a,l,c,d,h,u,f,p,_;return o(this,(function(o){switch(o.label){case 0:n=0,i=0,o.label=1;case 1:o.trys.push([1,6,7,8]),a=s(this._decorations.getKeyIterator(t)),l=a.next(),o.label=2;case 2:return l.done?[3,5]:(c=l.value,n=null!==(f=c.options.x)&&void 0!==f?f:0,i=n+(null!==(p=c.options.width)&&void 0!==p?p:1),!(e>=n&&e<i)||r&&(null!==(_=c.options.layer)&&void 0!==_?_:"bottom")!==r?[3,4]:[4,c]);case 3:o.sent(),o.label=4;case 4:return l=a.next(),[3,2];case 5:return[3,8];case 6:return d=o.sent(),h={error:d},[3,8];case 7:try{l&&!l.done&&(u=a.return)&&u.call(a)}finally{if(h)throw h.error}return[7];case 8:return[2]}}))},t.prototype.dispose=function(){var e,t;try{for(var r=s(this._decorations.values()),n=r.next();!n.done;n=r.next()){var i=n.value;this._onDecorationRemoved.fire(i)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this.reset()},t}(c.Disposable);t.DecorationService=h;var u=function(e){function t(t){var r=e.call(this)||this;return r.options=t,r.isDisposed=!1,r.onRenderEmitter=r.register(new l.EventEmitter),r.onRender=r.onRenderEmitter.event,r._onDispose=r.register(new l.EventEmitter),r.onDispose=r._onDispose.event,r._cachedBg=null,r._cachedFg=null,r.marker=t.marker,r.options.overviewRulerOptions&&!r.options.overviewRulerOptions.position&&(r.options.overviewRulerOptions.position="full"),r}return i(t,e),Object.defineProperty(t.prototype,"backgroundColorRGB",{get:function(){return null===this._cachedBg&&(this.options.backgroundColor?this._cachedBg=a.css.toColor(this.options.backgroundColor):this._cachedBg=void 0),this._cachedBg},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"foregroundColorRGB",{get:function(){return null===this._cachedFg&&(this.options.foregroundColor?this._cachedFg=a.css.toColor(this.options.foregroundColor):this._cachedFg=void 0),this._cachedFg},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){this._isDisposed||(this._isDisposed=!0,this._onDispose.fire(),e.prototype.dispose.call(this))},t}(c.Disposable)},3730:function(e,t,r){var n=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},i=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}};Object.defineProperty(t,"__esModule",{value:!0}),t.DirtyRowService=void 0;var o=r(2585),s=function(){function e(e){this._bufferService=e,this.clearRange()}return Object.defineProperty(e.prototype,"start",{get:function(){return this._start},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"end",{get:function(){return this._end},enumerable:!1,configurable:!0}),e.prototype.clearRange=function(){this._start=this._bufferService.buffer.y,this._end=this._bufferService.buffer.y},e.prototype.markDirty=function(e){e<this._start?this._start=e:e>this._end&&(this._end=e)},e.prototype.markRangeDirty=function(e,t){if(e>t){var r=e;e=t,t=r}e<this._start&&(this._start=e),t>this._end&&(this._end=t)},e.prototype.markAllDirty=function(){this.markRangeDirty(0,this._bufferService.rows-1)},n([i(0,o.IBufferService)],e)}();t.DirtyRowService=s},4348:function(e,t,r){var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s},o=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,i=0,o=t.length;i<o;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))};Object.defineProperty(t,"__esModule",{value:!0}),t.InstantiationService=t.ServiceCollection=void 0;var s=r(2585),a=r(8343),l=function(){function e(){for(var e,t,r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];this._entries=new Map;try{for(var s=n(r),a=s.next();!a.done;a=s.next()){var l=i(a.value,2),c=l[0],d=l[1];this.set(c,d)}}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}}return e.prototype.set=function(e,t){var r=this._entries.get(e);return this._entries.set(e,t),r},e.prototype.forEach=function(e){this._entries.forEach((function(t,r){return e(r,t)}))},e.prototype.has=function(e){return this._entries.has(e)},e.prototype.get=function(e){return this._entries.get(e)},e}();t.ServiceCollection=l;var c=function(){function e(){this._services=new l,this._services.set(s.IInstantiationService,this)}return e.prototype.setService=function(e,t){this._services.set(e,t)},e.prototype.getService=function(e){return this._services.get(e)},e.prototype.createInstance=function(e){for(var t,r,s=[],l=1;l<arguments.length;l++)s[l-1]=arguments[l];var c=(0,a.getServiceDependencies)(e).sort((function(e,t){return e.index-t.index})),d=[];try{for(var h=n(c),u=h.next();!u.done;u=h.next()){var f=u.value,p=this._services.get(f.id);if(!p)throw new Error("[createInstance] "+e.name+" depends on UNKNOWN service "+f.id+".");d.push(p)}}catch(e){t={error:e}}finally{try{u&&!u.done&&(r=h.return)&&r.call(h)}finally{if(t)throw t.error}}var _=c.length>0?c[0].index:s.length;if(s.length!==_)throw new Error("[createInstance] First service dependency of "+e.name+" at position "+(_+1)+" conflicts with "+s.length+" static arguments");return new(e.bind.apply(e,o([void 0],i(o(o([],i(s),!1),i(d),!1)),!1)))},e}();t.InstantiationService=c},7866:function(e,t,r){var n=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,r,s):i(t,r))||s);return o>3&&s&&Object.defineProperty(t,r,s),s},i=this&&this.__param||function(e,t){return function(r,n){t(r,n,e)}},o=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)s.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return s},s=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,i=0,o=t.length;i<o;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))};Object.defineProperty(t,"__esModule",{value:!0}),t.LogService=void 0;var a=r(2585),l={debug:a.LogLevelEnum.DEBUG,info:a.LogLevelEnum.INFO,warn:a.LogLevelEnum.WARN,error:a.LogLevelEnum.ERROR,off:a.LogLevelEnum.OFF},c=function(){function e(e){var t=this;this._optionsService=e,this.logLevel=a.LogLevelEnum.OFF,this._updateLogLevel(),this._optionsService.onOptionChange((function(e){"logLevel"===e&&t._updateLogLevel()}))}return e.prototype._updateLogLevel=function(){this.logLevel=l[this._optionsService.rawOptions.logLevel]},e.prototype._evalLazyOptionalParams=function(e){for(var t=0;t<e.length;t++)"function"==typeof e[t]&&(e[t]=e[t]())},e.prototype._log=function(e,t,r){this._evalLazyOptionalParams(r),e.call.apply(e,s([console,"xterm.js: "+t],o(r),!1))},e.prototype.debug=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];this.logLevel<=a.LogLevelEnum.DEBUG&&this._log(console.log,e,t)},e.prototype.info=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];this.logLevel<=a.LogLevelEnum.INFO&&this._log(console.info,e,t)},e.prototype.warn=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];this.logLevel<=a.LogLevelEnum.WARN&&this._log(console.warn,e,t)},e.prototype.error=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];this.logLevel<=a.LogLevelEnum.ERROR&&this._log(console.error,e,t)},n([i(0,a.IOptionsService)],e)}();t.LogService=c},7302:function(e,t,r){var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},n.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.OptionsService=t.DEFAULT_OPTIONS=t.DEFAULT_BELL_SOUND=void 0;var i=r(8460),o=r(6114);t.DEFAULT_BELL_SOUND="data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjMyLjEwNAAAAAAAAAAAAAAA//tQxAADB8AhSmxhIIEVCSiJrDCQBTcu3UrAIwUdkRgQbFAZC1CQEwTJ9mjRvBA4UOLD8nKVOWfh+UlK3z/177OXrfOdKl7pyn3Xf//WreyTRUoAWgBgkOAGbZHBgG1OF6zM82DWbZaUmMBptgQhGjsyYqc9ae9XFz280948NMBWInljyzsNRFLPWdnZGWrddDsjK1unuSrVN9jJsK8KuQtQCtMBjCEtImISdNKJOopIpBFpNSMbIHCSRpRR5iakjTiyzLhchUUBwCgyKiweBv/7UsQbg8isVNoMPMjAAAA0gAAABEVFGmgqK////9bP/6XCykxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq",t.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,customGlyphs:!0,bellSound:t.DEFAULT_BELL_SOUND,bellStyle:"none",drawBoldTextInBrightColors:!0,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"courier-new, courier, monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",lineHeight:1,linkTooltipHoverDuration:500,letterSpacing:0,logLevel:"info",scrollback:1e3,scrollSensitivity:1,screenReaderMode:!1,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!0,allowTransparency:!1,tabStopWidth:8,theme:{},rightClickSelectsWord:o.isMac,rendererType:"canvas",windowOptions:{},windowsMode:!1,wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRulerWidth:void 0};var s=["normal","bold","100","200","300","400","500","600","700","800","900"],a=function(){function e(e){this._onOptionChange=new i.EventEmitter;var r=n({},t.DEFAULT_OPTIONS);for(var o in e)if(o in r)try{var s=e[o];r[o]=this._sanitizeAndValidateOption(o,s)}catch(e){console.error(e)}this.rawOptions=r,this.options=n({},r),this._setupOptions()}return Object.defineProperty(e.prototype,"onOptionChange",{get:function(){return this._onOptionChange.event},enumerable:!1,configurable:!0}),e.prototype._setupOptions=function(){var e=this,r=function(r){if(!(r in t.DEFAULT_OPTIONS))throw new Error('No option with key "'+r+'"');return e.rawOptions[r]},n=function(r,n){if(!(r in t.DEFAULT_OPTIONS))throw new Error('No option with key "'+r+'"');n=e._sanitizeAndValidateOption(r,n),e.rawOptions[r]!==n&&(e.rawOptions[r]=n,e._onOptionChange.fire(r))};for(var i in this.rawOptions){var o={get:r.bind(this,i),set:n.bind(this,i)};Object.defineProperty(this.options,i,o)}},e.prototype.setOption=function(e,t){this.options[e]=t},e.prototype._sanitizeAndValidateOption=function(e,r){switch(e){case"bellStyle":case"cursorStyle":case"rendererType":case"wordSeparator":r||(r=t.DEFAULT_OPTIONS[e]);break;case"fontWeight":case"fontWeightBold":if("number"==typeof r&&1<=r&&r<=1e3)break;r=s.includes(r)?r:t.DEFAULT_OPTIONS[e];break;case"cursorWidth":r=Math.floor(r);case"lineHeight":case"tabStopWidth":if(r<1)throw new Error(e+" cannot be less than 1, value: "+r);break;case"minimumContrastRatio":r=Math.max(1,Math.min(21,Math.round(10*r)/10));break;case"scrollback":if((r=Math.min(r,4294967295))<0)throw new Error(e+" cannot be less than 0, value: "+r);break;case"fastScrollSensitivity":case"scrollSensitivity":if(r<=0)throw new Error(e+" cannot be less than or equal to 0, value: "+r);case"rows":case"cols":if(!r&&0!==r)throw new Error(e+" must be numeric, value: "+r)}return r},e.prototype.getOption=function(e){return this.options[e]},e}();t.OptionsService=a},8343:(e,t)=>{function r(e,t,r){t.di$target===t?t.di$dependencies.push({id:e,index:r}):(t.di$dependencies=[{id:e,index:r}],t.di$target=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.createDecorator=t.getServiceDependencies=t.serviceRegistry=void 0,t.serviceRegistry=new Map,t.getServiceDependencies=function(e){return e.di$dependencies||[]},t.createDecorator=function(e){if(t.serviceRegistry.has(e))return t.serviceRegistry.get(e);var n=function(e,t,i){if(3!==arguments.length)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");r(n,e,i)};return n.toString=function(){return e},t.serviceRegistry.set(e,n),n}},2585:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.IDecorationService=t.IUnicodeService=t.IOptionsService=t.ILogService=t.LogLevelEnum=t.IInstantiationService=t.IDirtyRowService=t.ICharsetService=t.ICoreService=t.ICoreMouseService=t.IBufferService=void 0;var n,i=r(8343);t.IBufferService=(0,i.createDecorator)("BufferService"),t.ICoreMouseService=(0,i.createDecorator)("CoreMouseService"),t.ICoreService=(0,i.createDecorator)("CoreService"),t.ICharsetService=(0,i.createDecorator)("CharsetService"),t.IDirtyRowService=(0,i.createDecorator)("DirtyRowService"),t.IInstantiationService=(0,i.createDecorator)("InstantiationService"),(n=t.LogLevelEnum||(t.LogLevelEnum={}))[n.DEBUG=0]="DEBUG",n[n.INFO=1]="INFO",n[n.WARN=2]="WARN",n[n.ERROR=3]="ERROR",n[n.OFF=4]="OFF",t.ILogService=(0,i.createDecorator)("LogService"),t.IOptionsService=(0,i.createDecorator)("OptionsService"),t.IUnicodeService=(0,i.createDecorator)("UnicodeService"),t.IDecorationService=(0,i.createDecorator)("DecorationService")},1480:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnicodeService=void 0;var n=r(8460),i=r(225),o=function(){function e(){this._providers=Object.create(null),this._active="",this._onChange=new n.EventEmitter;var e=new i.UnicodeV6;this.register(e),this._active=e.version,this._activeProvider=e}return Object.defineProperty(e.prototype,"onChange",{get:function(){return this._onChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"versions",{get:function(){return Object.keys(this._providers)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"activeVersion",{get:function(){return this._active},set:function(e){if(!this._providers[e])throw new Error('unknown Unicode version "'+e+'"');this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)},enumerable:!1,configurable:!0}),e.prototype.register=function(e){this._providers[e.version]=e},e.prototype.wcwidth=function(e){return this._activeProvider.wcwidth(e)},e.prototype.getStringCellWidth=function(e){for(var t=0,r=e.length,n=0;n<r;++n){var i=e.charCodeAt(n);if(55296<=i&&i<=56319){if(++n>=r)return t+this.wcwidth(i);var o=e.charCodeAt(n);56320<=o&&o<=57343?i=1024*(i-55296)+o-56320+65536:t+=this.wcwidth(o)}t+=this.wcwidth(i)}return t},e}();t.UnicodeService=o}},t={};return function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}(4389)})()},818:e=>{"use strict";var t=e.exports;const r=[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102],n={};for(var i=0;i<r.length;i++)n[r[i]]=i;t.ENCODELIB={pack_u16_be:function(e){if(e>65535)throw"Number cannot exceed 16 bits: "+e;return[e>>8,255&e]},pack_u32_le:function(e){var t=e/65536;return[255&e,(65535&e)>>8,255&t,t>>8]},unpack_u16_be:function(e){return(e[0]<<8)+e[1]},unpack_u32_le:function(e){return e[0]+(e[1]<<8)+(e[2]<<16)+16777216*e[3]},octets_to_hex:function(e){for(var t=[],n=0;n<e.length;n++)t.push(r[e[n]>>4],r[15&e[n]]);return t},parse_hex_octets:function(e){for(var t=new Array(e.length/2),r=0;r<t.length;r++)t[r]=(n[e[2*r]]<<4)+n[e[1+2*r]];return t}}},727:e=>{e.exports.Text={Encoder:"undefined"!=typeof TextEncoder?TextEncoder:class{encode(e){e=unescape(encodeURIComponent(e));for(var t=new Array(e.length),r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return new Uint8Array(t)}},Decoder:"undefined"!=typeof TextDecoder?TextDecoder:class{decode(e){return decodeURIComponent(escape(String.fromCharCode.apply(String,e)))}}}},655:(e,t,r)=>{"use strict";const n=r(606);var i,o=e.exports;Object.assign(o,r(216),r(818));function s(e,t){return i||function(){i=new Array(256);for(var e=0;e<256;e++){for(var t=e<<8&65535,r=0;r<8;r++)0!=(32768&t)?(t<<=1,t^=4129):t<<=1;i[e]=65535&t}}(),i[t>>8&255]^(255&t)<<8^e}function a(e,t){if(e.join()!==t.join())throw new o.Error("crc",t,e)}o.CRC={crc16:function(e){for(var t=e[0],r=1;r<e.length;r++)t=s(e[r],t);return t=s(0,s(0,t)),o.ENCODELIB.pack_u16_be(t)},crc32:function(e){return o.ENCODELIB.pack_u32_le(n.buf(e)>>>0)},verify16:function(e,t){return a(this.crc16(e),t)},verify32:function(e,t){try{a(this.crc32(e),t)}catch(t){throw t.input=e.slice(0),t}}}},258:(e,t,r)=>{"use strict";var n,i,o=e.exports;Object.assign(o,r(626));const s=o.ZMLIB.ZDLE;o.ZDLE=class e{constructor(e){this._config={},e&&this.set_escape_ctrl_chars(!!e.escape_ctrl_chars)}set_escape_ctrl_chars(e){if("boolean"!=typeof e)throw"need boolean!";e!==this._config.escape_ctrl_chars&&(this._config.escape_ctrl_chars=e,this._setup_zdle_table())}escapes_ctrl_chars(){return!!this._config.escape_ctrl_chars}encode(e){if(!this._zdle_table)throw"No ZDLE encode table configured!";var t=this._zdle_table,r=this._lastcode,o=new ArrayBuffer(2*e.length),a=new Uint8Array(o),l=this._config.escape_ctrl_chars,c=0;for(n=0;n<e.length;n++){if(!(i=t[e[n]]))throw console.trace(),console.error("bad encode() call:",JSON.stringify(e)),this._lastcode=r,"Invalid octet: "+e[n];r=e[n],1===i||(l||2===i||64==(127&r))&&(a[c]=s,c++,r^=64),a[c]=r,c++}return this._lastcode=r,e.splice(0),e.push.apply(e,new Uint8Array(o,0,c)),e}static decode(e){for(var t=e.length-1;t>=0;t--)e[t]===s&&e.splice(t,2,e[t+1]-64);return e}static splice(t,r,n){var i=0;r||(r=0);for(var o=r;o<t.length&&i<n;o++)i++,t[o]===s&&o++;if(i===n){if(t.length===o-1)return;return t.splice(0,r),e.decode(t.splice(0,o-r))}}_setup_zdle_table(){for(var e=new Array(256),t=0;t<e.length;t++)if(96&t)e[t]=1;else switch(t){case s:case o.ZMLIB.XOFF:case o.ZMLIB.XON:case 128|o.ZMLIB.XOFF:case 128|o.ZMLIB.XON:e[t]=2;break;case 16:case 144:e[t]=this._config.turbo_escape?1:2;break;case 13:case 141:e[t]=this._config.escape_ctrl_chars?2:this._config.turbo_escape?1:3;break;default:e[t]=this._config.escape_ctrl_chars?2:1}this._zdle_table=e}}},216:e=>{"use strict";var t=e.exports;const r={aborted:"Session aborted",peer_aborted:"Peer aborted session",already_aborted:"Session already aborted",crc:function(e,t){return this.got=e.slice(0),this.expected=t.slice(0),"CRC check failed! (got: "+e.join()+"; expected: "+t.join()+")"},validation:function(e){return e}};function n(e){const t=r[e];switch(typeof t){case"string":return t;case"function":var n=[].slice.call(arguments).slice(1);return t.apply(this,n)}return null}t.Error=class extends Error{constructor(e){super();var t=n.apply(this,arguments);t?(this.type=e,this.message=t):this.message=e}}},724:(e,t,r)=>{"use strict";var n=e.exports;Object.assign(n,r(818),r(258),r(626),r(655),r(216));const i="*".charCodeAt(0),o="A".charCodeAt(0),s="B".charCodeAt(0),a="C".charCodeAt(0),l=[13,10],c=l.slice(0).concat([n.ZMLIB.XON]),d=[i,i,n.ZMLIB.ZDLE,s],h=[i,n.ZMLIB.ZDLE,o],u=[i,n.ZMLIB.ZDLE,a];n.Header=class{static trim_leading_garbage(e){var t,r,o=[];e:for(;e.length&&!r;){var s=e.indexOf(i);if(-1===s){t=!0;break e}if(o.push.apply(o,e.splice(0,s)),e.length<2)break e;if(e[1]===i)if(e.length<d.length){if(e.join()===d.slice(0,e.length).join())break e}else e[2]===d[2]&&e[3]===d[3]&&(r=F);else if(e[1]===n.ZMLIB.ZDLE){if(e.length<h.length)break e;e[2]===h[2]?r=T:e[2]===u[2]&&(r=P)}r||o.push(e.shift())}return t&&o.push.apply(o,e.splice(0)),o}static parse(e){var t;if(e[1]===i)return(t=F(e))&&[t,16];if(e[2]===o)return(t=T(e))&&[t,16];if(e[2]===a)return(t=P(e))&&[t,32];if(!(e.length<3))throw"Unrecognized/unsupported octets: "+e.join()}static build(e){var t=1===arguments.length?[arguments[0]]:Array.apply(null,arguments),r=R[e];if(!r)throw"No frame class “"+e+"” is defined!";return t.shift(),new(r.bind.apply(r,[null].concat(t)))}to_hex(){var e=this._crc_bytes();return d.concat(n.ENCODELIB.octets_to_hex(e.concat(n.CRC.crc16(e))),this._hex_header_ending)}to_binary16(e){return this._to_binary(e,h,n.CRC.crc16)}to_binary32(e){return this._to_binary(e,u,n.CRC.crc32)}constructor(){this._bytes4||(this._bytes4=[0,0,0,0])}_to_binary(e,t,r){var n=this._crc_bytes();return t.concat(e.encode(n.concat(r(n))))}_crc_bytes(){return[this.TYPENUM].concat(this._bytes4)}},n.Header.prototype._hex_header_ending=c;class f extends n.Header{}const p={CANFDX:1,CANOVIO:2,CANBRK:4,CANCRY:8,CANLZW:16,CANFC32:32,ESCCTL:64,ESC8:128};class _ extends n.Header{constructor(e,t){super();var r=0;t||(t=0),e.forEach((function(e){r|=function(e){if(!p[e])throw new n.Error("Invalid ZRINIT flag: "+e);return p[e]}(e)})),this._bytes4=[255&t,t>>8,0,r]}get_buffer_size(){return n.ENCODELIB.unpack_u16_be(this._bytes4.slice(0,2))||void 0}can_full_duplex(){return!!(this._bytes4[3]&p.CANFDX)}can_overlap_io(){return!!(this._bytes4[3]&p.CANOVIO)}can_break(){return!!(this._bytes4[3]&p.CANBRK)}can_fcs_32(){return!!(this._bytes4[3]&p.CANFC32)}escape_ctrl_chars(){return!!(this._bytes4[3]&p.ESCCTL)}escape_8th_bit(){return!!(this._bytes4[3]&p.ESC8)}}const b={ESCCTL:64,ESC8:128};class g extends n.Header{constructor(e,t){super();var r=0;if(e.forEach((function(e){r|=function(e){if(!b[e])throw"Invalid ZSINIT flag: "+e;return b[e]}(e)})),this._bytes4=[0,0,0,r],t){if(t.length>31)throw"Attn sequence must be <= 31 bytes";if(t.some((function(e){return e>255})))throw"Attn sequence ("+t+") must be <256";this._data=t.concat([0])}}escape_ctrl_chars(){return!!(this._bytes4[3]&b.ESCCTL)}escape_8th_bit(){return!!(this._bytes4[3]&b.ESC8)}}class m extends n.Header{constructor(e){super(),e&&(this._bytes4=e.slice())}}m.prototype._hex_header_ending=l;const v={extended:{sparse:64},transport:[void 0,"compress","encrypt","rle"],management:[void 0,"newer_or_longer","crc","append","clobber","newer","mtime_or_length","protect","rename"],conversion:[void 0,"binary","text","resume"]},A=["extended","transport","management","conversion"];class y extends n.Header{get_options(){var e={sparse:!!(64&this._bytes4[0])},t=this._bytes4.slice(0);return A.forEach((function(r,n){if(v[r]instanceof Array)"management"===r&&(e.skip_if_absent=!!(128&t[n]),t[n]&=31),e[r]=v[r][t[n]];else for(var i in v[r])e[i]=!!(t[n]&v[r][i]),e[i]&&(t[n]^=v[r][i]);!e[r]&&t[n]&&(e[r]="unknown:"+t[n])})),e}}class C extends n.Header{}class w extends n.Header{}class x extends n.Header{}class S extends n.Header{}x.prototype._hex_header_ending=l;class $ extends n.Header{constructor(e){super(),this._bytes4=n.ENCODELIB.pack_u32_le(e)}get_offset(){return n.ENCODELIB.unpack_u32_le(this._bytes4)}}class k extends ${}class E extends ${}class B extends ${}const L=[[f,"ZRQINIT"],[_,"ZRINIT"],[g,"ZSINIT"],[m,"ZACK"],[y,"ZFILE"],[C,"ZSKIP"],void 0,[w,"ZABORT"],[x,"ZFIN"],[k,"ZRPOS"],[E,"ZDATA"],[B,"ZEOF"],[S,"ZFERR"],void 0,void 0,void 0,void 0,void 0,void 0,void 0];for(var R={},D=0;D<L.length;D++)L[D]&&(R[L[D][1]]=L[D][0],Object.assign(L[D][0].prototype,{TYPENUM:D,NAME:L[D][1]}));const M=[f,_,g,m,y,C,"ZNAK",w,x,k,E,B,S,"ZCRC","ZCHALLENGE","ZCOMPL","ZCAN","ZFREECNT","ZCOMMAND","ZSTDERR"];function O(e){var t=M[e];if("string"==typeof t)throw"Received unsupported header: "+t;return function(e){if(e.prototype instanceof $)return new e(0);return new e([])}(t)}function T(e){var t=n.ZDLE.splice(e,h.length,7);return t&&I(t)}function I(e){n.CRC.verify16(e.slice(0,5),e.slice(5));var t=O(e[0]);return t._bytes4=e.slice(1,5),t}function P(e){var t=n.ZDLE.splice(e,u.length,9);if(t){n.CRC.verify32(t.slice(0,5),t.slice(5));var r=O(t[0]);return r._bytes4=t.slice(1,5),r}}function F(e){var t,r,i=e.indexOf(138);if(-1===i&&(i=e.indexOf(10)),-1!==i){if(r=e.splice(0,i),e.shift(),19===r.length){var o=r.pop();13!==o&&141!==o&&(t="Invalid hex header: (CR/)LF doesnt have CR!")}else 18!==r.length&&(t="Invalid hex header: invalid number of bytes before LF!");if(t)throw t+=" ("+r.length+" bytes: "+r.join()+")";return r.splice(0,4),I(n.ENCODELIB.parse_hex_octets(r))}e.length>11&&(t="Invalid hex header - no LF detected within 12 bytes!")}n.Header.parse_hex=F},626:e=>{"use strict";var t=e.exports;t.ZMLIB={ZDLE:24,XON:17,XOFF:19,ABORT_SEQUENCE:[24,24,24,24,24],strip_ignored_bytes:function(e){for(var t=e.length-1;t>=0;t--)switch(e[t]){case 17:case 145:case 19:case 147:e.splice(t,1);continue}return e},find_subarray:function(e,t){var r,n=0;Date.now();e:for(;-1!==n&&-1!==(n=e.indexOf(t[0],n));){for(r=1;r<t.length;r++)if(e[n+r]!==t[r]){n++;continue e}return n}return-1}}},768:(e,t,r)=>{Object.assign(e.exports,r(450))},694:(e,t,r)=>{"use strict";var n=e.exports;function i(e){if(e.aborted())throw new n.Error("aborted")}window.Zmodem=n,Object.assign(n,r(768)),n.Browser={send_files:function(e,t,r){r||(r={});for(var n=[],o=0,s=t.length-1;s>=0;s--){var a=t[s];o+=a.size,n[s]={obj:a,name:a.name,size:a.size,mtime:new Date(a.lastModified),files_remaining:t.length-s,bytes_remaining:o}}var l=0;return function t(){var o=n[l];return o?(l++,e.send_offer(o).then((function(n){return r.on_offer_response&&r.on_offer_response(o.obj,n),void 0===n?t():new Promise((function(s){var a,l=new FileReader;l.onerror=function(e){throw console.error("file read error",e),"File read error: "+e},l.onprogress=function(t){t.target.result&&(a=new Uint8Array(t.target.result,n.get_offset()),i(e),n.send(a),r.on_progress&&r.on_progress(o.obj,n,a))},l.onload=function(l){a=new Uint8Array(l.target.result,n,a),i(e),n.end(a).then((function(){r.on_progress&&a.length&&r.on_progress(o.obj,n,a),r.on_file_complete&&r.on_file_complete(o.obj,n),s(t())}))},l.readAsArrayBuffer(o.obj)}))}))):Promise.resolve()}()},save_to_disk:function(e,t){var r=new Blob(e),n=URL.createObjectURL(r),i=document.createElement("a");i.style.display="none",i.href=n,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i)}}},450:(e,t,r)=>{"use strict";var n=e.exports;Object.assign(n,r(626),r(608));const i=[42,42,24,66,48],o=["to_terminal","on_detect","on_retract","sender"];class s{constructor(e,t,r,n){this._confirmer=t,this._denier=r,this._is_valid=n,this._session_type=e}confirm(){return this._confirmer.apply(this,arguments)}deny(){return this._denier.apply(this,arguments)}is_valid(){return this._is_valid.apply(this,arguments)}get_session_role(){return this._session_type}}n.Sentry=class{constructor(e){if(!e)throw"Need options!";var t=this;o.forEach((function(r){if(!e[r])throw"Need “"+r+"”!";t["_"+r]=e[r]})),this._cache=[]}_after_session_end(){this._zsession=null}consume(e){if(e instanceof Array||(e=Array.prototype.slice.call(new Uint8Array(e))),this._zsession){var t=this._zsession;if(t.consume(e),!t.has_ended())return;e="receive"===t.type?t.get_trailing_bytes():[]}var r=this._parse(e),n=e;if(r){!!this._parsed_session&&(this._parsed_session.type===r.type&&(n=[]),this._on_retract()),this._parsed_session=r;var i=this;function a(){return i._parsed_session===r}function l(){if(!this.is_valid())throw"Stale ZMODEM session!";return r.on("garbage",i._to_terminal),r.on("session_end",i._after_session_end.bind(i)),r.set_sender(i._sender),delete i._parsed_session,i._zsession=r}this._on_detect(new s(r.type,l,this._send_abort.bind(this),a))}else{var o=this._parsed_session;this._parsed_session=null,o&&(1===n.length&&67===n[0]&&this._send_abort(),this._on_retract())}this._to_terminal(n)}get_confirmed_session(){return this._zsession||null}_send_abort(){this._sender(n.ZMLIB.ABORT_SEQUENCE)}_parse(e){var t=this._cache;for(t.push.apply(t,e);;){let e=n.ZMLIB.find_subarray(t,i);if(-1===e)break;let r;t.splice(0,e);try{r=n.Session.parse(t)}catch(e){}if(!r)break;return 1===t.length&&t[0]===n.ZMLIB.XON&&t.shift(),t.length?null:r}return t.splice(21),null}}},608:(e,t,r)=>{"use strict";var n=e.exports;n.DEBUG=!1,Object.assign(n,r(818),r(727),r(258),r(626),r(724),r(62),r(663),r(216));const i=["CANFDX","CANOVIO","CANFC32"],o="spool_uint8array",s=[79,79],a=n.ZMLIB.ABORT_SEQUENCE;class l{constructor(){this._on_evt={},this._evt_once_index={}}_Add_event(e){this._on_evt[e]=[],this._evt_once_index[e]=[]}_get_evt_queue(e){if(!this._on_evt[e])throw"Bad event: "+e;return this._on_evt[e]}on(e,t){return this._get_evt_queue(e).push(t),this}off(e,t){var r=this._get_evt_queue(e);if(t){var n=r.indexOf(t);if(-1===n)throw"“"+t+"” is not in the “"+e+"” queue.";r.splice(n,1)}else r.pop();return this}_Happen(e){var t=this._get_evt_queue(e),r=Array.apply(null,arguments);r.shift();var n=this;return t.forEach((function(e){e.apply(n,r)})),t.length}}n.Session=class extends l{static parse(e){var t;try{t=n.Header.parse_hex(e)}catch(e){return}if(t)switch(t.NAME){case"ZRQINIT":return new n.Session.Receive;case"ZRINIT":return new n.Session.Send(t)}}allow_missing_OO(e){this._allow_missing_OO=!!e}set_sender(e){return this._sender=e,this}has_ended(){return this._has_ended()}consume(e){if(this._before_consume(e),this._aborted)throw new n.Error("already_aborted");e.length&&(this._strip_and_enqueue_input(e),this._check_for_abort_sequence(e)||this._consume_first())}aborted(){return!!this._aborted}constructor(){super(),this._config={},this._input_buffer=[],this._Add_event("receive"),this._Add_event("garbage"),this._Add_event("session_end")}get_role(){return this.type}_trim_leading_garbage_until_header(){var e=n.Header.trim_leading_garbage(this._input_buffer);e.length&&0===this._Happen("garbage",e)&&console.debug("Garbage: ",String.fromCharCode.apply(String,e),e)}_parse_and_consume_header(){this._trim_leading_garbage_until_header();var e=n.Header.parse(this._input_buffer);if(e)return n.DEBUG&&this._log_header("RECEIVED HEADER",e[0]),this._consume_header(e[0]),this._last_header_name=e[0].NAME,this._last_header_crc=e[1],e[0]}_log_header(e,t){console.debug(this.type,e,t.NAME,t._bytes4.join())}_consume_header(e){this._on_receive(e);var t=this._next_header_handler&&this._next_header_handler[e.NAME];if(!t)throw console.error("Unhandled header!",e,this._next_header_handler),new n.Error("Unhandled header: "+e.NAME);this._next_header_handler=null,t.call(this,e)}_check_for_abort_sequence(){var e=n.ZMLIB.find_subarray(this._input_buffer,a);if(-1!==e)throw this._input_buffer.splice(0,e+a.length),this._aborted=!0,this._on_session_end(),new n.Error("peer_aborted")}_send_header(e){if(!this._sender)throw"Need sender!";var t=Array.apply(null,arguments),r=this._create_header_bytes(t);n.DEBUG&&this._log_header("SENDING HEADER",r[1]),this._sender(r[0]),this._last_sent_header=r[1]}_create_header_bytes(e){var t=n.Header.build.apply(n.Header,e);return[t[this._get_header_formatter(e[0])](this._zencoder),t]}_strip_and_enqueue_input(e){n.ZMLIB.strip_ignored_bytes(e),this._input_buffer.push.apply(this._input_buffer,e)}abort(){this._sender(a.concat([8,8,8,8,8])),this._aborted=!0,this._sender=function(){throw new n.Error("already_aborted")},this._on_session_end()}_on_session_end(){this._Happen("session_end")}_on_receive(e){this._Happen("receive",e)}_before_consume(){}},n.Session.Receive=class extends n.Session{constructor(){super(),this._Add_event("offer"),this._Add_event("data_in"),this._Add_event("file_end")}_before_consume(e){if(this._bytes_after_OO)throw"PROTOCOL: Session is completed!";this._bytes_being_consumed=e}get_trailing_bytes(){if(this._aborted)return[];if(!this._bytes_after_OO)throw"PROTOCOL: Session is not completed!";return this._bytes_after_OO.slice(0)}_has_ended(){return this.aborted()||!!this._bytes_after_OO}_get_header_formatter(){return"to_hex"}_parse_and_consume_subpacket(){var e;e=16===this._last_header_crc?"parse16":"parse32";var t=n.Subpacket[e](this._input_buffer);return t&&(n.DEBUG&&console.debug(this.type,"RECEIVED SUBPACKET",t),this._consume_data(t),t.frame_end()&&(this._next_subpacket_handler=null)),t}_consume_first(){if(this._got_ZFIN){if(this._input_buffer.length<2)return;if(this._allow_missing_OO||0===n.ZMLIB.find_subarray(this._input_buffer,s))return this._bytes_after_OO=(e=this._bytes_being_consumed.slice(0),0===n.ZMLIB.find_subarray(e,s)?e.splice(0,s.length):e[0]===s[s.length-1]&&e.splice(0,1),e),void this._on_session_end();throw"PROTOCOL: Only thing after ZFIN should be “OO” (79,79), not: "+this._input_buffer.join()}var e,t;do{t=this._next_subpacket_handler?this._parse_and_consume_subpacket():this._parse_and_consume_header()}while(t&&this._input_buffer.length)}_consume_data(e){if(this._on_receive(e),!this._next_subpacket_handler)throw"PROTOCOL: Received unexpected data packet after "+this._last_header_name+" header: "+e.get_payload().join();this._next_subpacket_handler.call(this,e)}_octets_to_string(e){return this._textdecoder||(this._textdecoder=new n.Text.Decoder),this._textdecoder.decode(new Uint8Array(e))}_consume_ZFILE_data(e,t){if(this._file_info)throw"PROTOCOL: second ZFILE data subpacket received";var r=t.get_payload(),n=r.indexOf(0),i=this._octets_to_string(r.slice(0,n)),o=this._octets_to_string(r.slice(1+n)).split(" "),s=o[1]&&parseInt(o[1],8)||void 0;s&&(s=new Date(1e3*s)),this._file_info={name:i,size:o[0]?parseInt(o[0],10):null,mtime:s||null,mode:o[2]&&parseInt(o[2],8)||null,serial:o[3]&&parseInt(o[3],10)||null,files_remaining:o[4]?parseInt(o[4],10):null,bytes_remaining:o[5]?parseInt(o[5],10):null};var a=new h(e.get_options(),this._file_info,this._accept.bind(this),this._skip.bind(this));this._current_transfer=a}_consume_ZDATA_data(e){if(!this._accepted_offer)throw"PROTOCOL: Received data without accepting!";if(!this._offset_ok)return console.warn("offset not ok!"),void _send_ZRPOS();this._file_offset+=e.get_payload().length,this._on_data_in(e),e.ack_expected()&&!e.frame_end()&&this._send_header("ZACK",n.ENCODELIB.pack_u32_le(this._file_offset))}_make_promise_for_between_files(){var e=this;return new Promise((function(t){var r={ZFILE:function(e){this._next_subpacket_handler=function(r){this._next_subpacket_handler=null,this._consume_ZFILE_data(e,r),this._Happen("offer",this._current_transfer),t(this._current_transfer)}},ZSINIT:function(t){e._next_subpacket_handler=function(t){e._next_subpacket_handler=null,e._consume_ZSINIT_data(t),e._send_header("ZACK"),e._next_header_handler=r}},ZFIN:function(){this._consume_ZFIN(),t()}};e._next_header_handler=r}))}_consume_ZSINIT_data(e){this._attn=e.get_payload()}start(){if(this._started)throw"Already started!";this._started=!0;var e=this._make_promise_for_between_files();return this._send_ZRINIT(),e}_accept(e){this._accepted_offer=!0,this._file_offset=e||0;var t=this,r=new Promise((function(e){t._next_header_handler={ZDATA:function(t){this._consume_ZDATA(t),this._next_subpacket_handler=this._consume_ZDATA_data,this._next_header_handler={ZEOF:function(t){this._consume_ZEOF(t),this._next_subpacket_handler=null,this._make_promise_for_between_files(),e(),this._send_ZRINIT()}}}}}));return this._send_ZRPOS(),r}_skip(){var e=this._make_promise_for_between_files();if(this._accepted_offer){if(!this._current_transfer)return;var t=function(){this._accepted_offer=!1,this._next_subpacket_handler=null,this._make_promise_for_between_files()}.bind(this);Object.assign(this._next_header_handler,{ZEOF:t,ZDATA:function(){t(),this._next_header_handler.ZEOF=t}.bind(this)})}return this._file_info=null,this._send_header("ZSKIP"),e}_send_ZRINIT(){this._send_header("ZRINIT",i)}_consume_ZFIN(){this._got_ZFIN=!0,this._send_header("ZFIN")}_consume_ZEOF(e){if(this._file_offset!==e.get_offset())throw"ZEOF offset mismatch; unimplemented (local: "+this._file_offset+"; ZEOF: "+e.get_offset()+")";this._on_file_end(),this._file_info=null,this._current_transfer=null}_consume_ZDATA(e){if(this._file_offset!==e.get_offset())throw"Error correction is unimplemented.";this._offset_ok=!0}_send_ZRPOS(){this._send_header("ZRPOS",this._file_offset)}_on_file_end(){this._Happen("file_end"),this._current_transfer&&(this._current_transfer._Happen("complete"),this._current_transfer=null)}_on_data_in(e){this._Happen("data_in",e),this._current_transfer&&this._current_transfer._Happen("input",e.get_payload())}},Object.assign(n.Session.Receive.prototype,{type:"receive"});var c={get_details:function(){return Object.assign({},this._file_info)},get_options:function(){return Object.assign({},this._zfile_opts)},get_offset:function(){return this._file_offset}};class d{constructor(e,t,r,n){this._file_info=e,this._file_offset=t||0,this._send=r,this._end=n}send(e){this._send(e),this._file_offset+=e.length}end(e){var t=this._end(e||[]);return e&&(this._file_offset+=e.length),t}}Object.assign(d.prototype,c);class h extends l{constructor(e,t,r,n){super(),this._zfile_opts=e,this._file_info=t,this._accept_func=r,this._skip_func=n,this._Add_event("input"),this._Add_event("complete"),this.on("input",this._input_handler)}_verify_not_skipped(){if(this._skipped)throw new n.Error("Already skipped!")}skip(){return this._verify_not_skipped(),this._skipped=!0,this._skip_func.apply(this,arguments)}accept(e){if(this._verify_not_skipped(),this._accepted)throw new n.Error("Already accepted!");switch(this._accepted=!0,e||(e={}),this._file_offset=e.offset||0,e.on_input){case null:case void 0:case"spool_array":case o:this._spool=[];break;default:if("function"!=typeof e.on_input)throw"Invalid “on_input”: "+e.on_input}return this._input_handler_mode=e.on_input||o,this._accept_func(this._file_offset).then(this._get_spool.bind(this))}_input_handler(e){if(this._file_offset+=e.length,"function"==typeof this._input_handler_mode)this._input_handler_mode(e);else{if(this._input_handler_mode===o)e=new Uint8Array(e);else if("spool_array"!==this._input_handler_mode)throw new n.Error("WTF?? _input_handler_mode = "+this._input_handler_mode);this._spool.push(e)}}_get_spool(){return this._spool}}Object.assign(h.prototype,c);const u={ZFILE:!0,ZDATA:!0};n.Session.Send=class extends n.Session{constructor(e){if(super(),!e)throw"Need first header!";if("ZRINIT"!==e.NAME)throw"First header should be ZRINIT, not "+e.NAME;this._last_header_name="ZRINIT",this._subpacket_encode_func="encode16",this._zencoder=new n.ZDLE,this._consume_ZRINIT(e),this._file_offset=0;this._start_keepalive_on_set_sender=!0}set_sender(e){return super.set_sender(e),this._start_keepalive_on_set_sender&&(this._start_keepalive_on_set_sender=!1,this._start_keepalive()),this}_get_header_formatter(e){return u[e]?"to_binary16":"to_hex"}_start_keepalive(){if(!this._keepalive_promise){var e=this;this._keepalive_promise=new Promise((function(t){e._keepalive_timeout=setTimeout(t,5e3)})).then((function(){e._next_header_handler={ZACK:function(){e._got_ZSINIT_ZACK=!0}},e._send_ZSINIT(),e._keepalive_promise=null,e._start_keepalive()}))}}_stop_keepalive(){this._keepalive_promise&&(clearTimeout(this._keepalive_timeout),this._keep_alive_promise=null)}_send_ZSINIT(){var e=[];this._zencoder.escapes_ctrl_chars()&&e.push("ESCCTL"),this._send_header_and_data(["ZSINIT",e],[0],"end_ack")}_consume_ZRINIT(e){if(this._last_ZRINIT=e,e.get_buffer_size())throw"Buffer size ("+e.get_buffer_size()+") is unsupported!";if(!e.can_full_duplex())throw"Half-duplex I/O is unsupported!";if(!e.can_overlap_io())throw"Non-overlap I/O is unsupported!";if(e.escape_8th_bit())throw"8-bit escaping is unsupported!";this._zencoder.set_escape_ctrl_chars(!0),e.escape_ctrl_chars()||console.debug("Peer didnt request escape of all control characters. Will send ZSINIT to force recognition of escaped control characters.")}_ensure_receiver_escapes_ctrl_chars(){var e;if(!this._last_ZRINIT.escape_ctrl_chars()&&!this._got_ZSINIT_ZACK){var t=this;e=new Promise((function(e){t._next_header_handler={ZACK:t=>{e()}},t._send_ZSINIT()}))}else e=Promise.resolve();return e}_convert_params_to_offer_payload_array(e){var t=(e=n.Validation.offer_parameters(e)).name+"\0",r=[(e.size||0).toString(10),e.mtime?e.mtime.toString(8):"0",e.mode?(32768|e.mode).toString(8):"0","0"];return e.files_remaining&&(r.push(e.files_remaining),e.bytes_remaining&&r.push(e.bytes_remaining)),t+=r.join(" "),this._string_to_octets(t)}send_offer(e){if(n.DEBUG&&console.debug("SENDING OFFER",e),!e)throw"need file params!";if(this._sending_file)throw"Already sending file!";var t=this._convert_params_to_offer_payload_array(e);this._stop_keepalive();var r=this;function i(){r._next_header_handler={ZRPOS:function(e){n.DEBUG&&console.warn("Mid-transfer ZRPOS … implementation error?"),i()}}}var o=function(){var n=new Promise((function(t){r._next_header_handler={ZSKIP:function(){r._start_keepalive(),t()},ZRPOS:function(n){r._sending_file=!0,i(),t(new d(e,n.get_offset(),r._send_interim_file_piece.bind(r),r._end_file.bind(r)))}}}));return r._send_header_and_data(["ZFILE"],t,"end_ack"),delete r._sent_ZDATA,n};return this._ensure_receiver_escapes_ctrl_chars().then(o)}_send_header_and_data(e,t,r){var i=this._create_header_bytes(e),o=this._build_subpacket_bytes(t,r);i[0].push.apply(i[0],o),n.DEBUG&&(this._log_header("SENDING HEADER",i[1]),console.debug(this.type,"-- HEADER PAYLOAD:",r,o.length)),this._sender(i[0]),this._last_sent_header=i[1]}_build_subpacket_bytes(e,t){return n.Subpacket.build(e,t)[this._subpacket_encode_func](this._zencoder)}_build_and_send_subpacket(e,t){this._sender(this._build_subpacket_bytes(e,t))}_string_to_octets(e){this._textencoder||(this._textencoder=new n.Text.Encoder);var t=this._textencoder.encode(e);return Array.prototype.slice.call(t)}_send_interim_file_piece(e){return this._send_file_part(e,"no_end_no_ack"),Promise.resolve()}_ensure_we_are_sending(){if(!this._sending_file)throw"Not sending a file currently!"}_end_file(e){this._ensure_we_are_sending(),this._send_file_part(e,"end_no_ack");var t=this,r=new Promise((function(e){t._sending_file=!1,t._prepare_to_receive_ZRINIT(e)}));return this._send_header("ZEOF",this._file_offset),this._file_offset=0,r}_prepare_to_receive_ZRINIT(e){this._next_header_handler={ZRINIT:function(t){this._consume_ZRINIT(t),e&&e()}}}close(){var e="ZRINIT"===this._last_header_name;if(e||(e="ZSKIP"===this._last_header_name),e||(e="ZSINIT"===this._last_sent_header.name&&"ZACK"===this._last_header_name),!e)throw"Cant close; last received header was “"+this._last_header_name+"”";var t=this,r=new Promise((function(e,r){t._next_header_handler={ZFIN:function(){t._sender(s),t._sent_OO=!0,t._on_session_end(),e()}}}));return this._send_header("ZFIN"),r}_has_ended(){return this.aborted()||!!this._sent_OO}_send_file_part(e,t){this._sent_ZDATA||(this._send_header("ZDATA",this._file_offset),this._sent_ZDATA=!0);for(var r=0,n=e.length;;){var i=Math.min(r+8192,n)-r,o=i+r>=n,s=e.slice(r,r+i);if(s instanceof Array||(s=Array.prototype.slice.call(s)),this._build_and_send_subpacket(s,o?t:"no_end_no_ack"),this._file_offset+=i,(r+=i)>=n)break}}_consume_first(){if(!this._parse_and_consume_header()&&"67"===this._input_buffer.join())throw"Receiver has fallen back to YMODEM."}_on_session_end(){this._stop_keepalive(),super._on_session_end()}},Object.assign(n.Session.Send.prototype,{type:"send"})},62:(e,t,r)=>{"use strict";var n=e.exports;Object.assign(n,r(655),r(258),r(626),r(216));var i;n.Subpacket=class e{static build(e,t){var r=i[t];if(!r)throw"No subpacket type “"+t+"” is defined! Try one of: "+Object.keys(i).join(", ");return new r(e)}encode16(e){return this._encode(e,n.CRC.crc16)}encode32(e){return this._encode(e,n.CRC.crc32)}get_payload(){return this._payload}static parse16(t){return e._parse(t,2)}static parse32(t){return e._parse(t,4)}constructor(e){this._payload=e}_encode(e,t){return e.encode(this._payload.slice(0)).concat([n.ZMLIB.ZDLE,this._frameend_num],e.encode(t(this._payload.concat(this._frameend_num))))}static _parse(e,t){for(var r,i,o={104:a,105:c,106:d,107:l},s=0;s<e.length;){if(-1===(s=e.indexOf(n.ZMLIB.ZDLE,s)))return;if(i=o[e[s+1]]){r=s+1;break}s++}if(i){var h=e[r];if(e[r-1]!==n.ZMLIB.ZDLE)throw"Byte before frame end should be ZDLE, not "+e[r-1];var u=e.splice(0,r-1),f=n.ZDLE.splice(e,2,t);if(f){var p=n.ZDLE.decode(u);return n.CRC[2===t?"verify16":"verify32"](p.concat([h]),f),new i(p,f)}e.unshift.apply(e,u)}}};class o extends n.Subpacket{frame_end(){return!0}}class s extends n.Subpacket{frame_end(){return!1}}class a extends o{ack_expected(){return!1}}a.prototype._frameend_num=104;class l extends o{ack_expected(){return!0}}l.prototype._frameend_num=107;class c extends s{ack_expected(){return!1}}c.prototype._frameend_num=105;class d extends s{ack_expected(){return!0}}d.prototype._frameend_num=106,i={end_no_ack:a,end_ack:l,no_end_no_ack:c,no_end_ack:d}},663:(e,t,r)=>{"use strict";var n=e.exports;Object.assign(n,r(216));const i=/\*\x18[AC]|\*\*\x18B/;function o(e,t){if(t<0)throw new n.Error("validation","“"+e+"” ("+t+") must be nonnegative.");if(t!==Math.floor(t))throw new n.Error("validation","“"+e+"” ("+t+") must be an integer.")}n.Validation={offer_parameters:function(e){if(!e.name)throw new n.Error("validation","Need “name”!");if("string"!=typeof e.name)throw new n.Error("validation","“name” ("+e.name+") must be a string!");if(e=Object.assign({},e),i.test(e.name)&&console.warn("The filename "+JSON.stringify(name)+" contains characters that look like a ZMODEM header. This could corrupt the ZMODEM session; consider renaming it so that the filename doesnt contain control characters."),null!==e.serial&&void 0!==e.serial)throw new n.Error("validation","“serial” is meaningless.");if(e.serial=null,["size","mode","files_remaining","bytes_remaining"].forEach((function(t){var r;switch(typeof e[t]){case"object":r=null===e[t];break;case"undefined":e[t]=null,r=!0;break;case"number":o(t,e[t]),r=!0}if(!r)throw new n.Error("validation","“"+t+"” ("+e[t]+") must be null, undefined, or a number.")})),"number"==typeof e.mode&&(e.mode|=32768),0===e.files_remaining)throw new n.Error("validation","“files_remaining”, if given, must be positive.");var t;switch(typeof e.mtime){case"object":if(t=!0,e.mtime instanceof Date){var r=e.mtime;if(e.mtime=Math.floor(r.getTime()/1e3),e.mtime<0)throw new n.Error("validation","“mtime” ("+r+") must not be earlier than 1970.")}else null!==e.mtime&&(t=!1);break;case"undefined":e.mtime=null,t=!0;break;case"number":o("mtime",e.mtime),t=!0}if(!t)throw new n.Error("validation","“mtime” ("+e.mtime+") must be null, undefined, a Date, or a number.");return e}}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={id:n,exports:{}};return e[n](o,o.exports,r),o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nc=void 0;(()=>{"use strict";const e=r(339),t=r(139),n=r(69),i=document.getElementById("terminal");if(null!==i){var o;o=new e.OurXterm(i);const r=("https:"==window.location.protocol?"wss://":"ws://")+window.location.host+window.location.pathname+"ws",s=window.location.search,a=new n.ConnectionFactory(r,t.protocols),l=new t.WebTTY(o,a,s,gotty_auth_token).open();window.addEventListener("unload",(()=>{l(),o.close()}))}})()})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksSUFBSSxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksSUFBSSxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksSUFBSSxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksSUFBSSxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksSUFBSSxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksSUFBSSxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxHQUFHLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksSUFBSSxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxHQUFHLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxHQUFHLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsR0FBRyxDQUFDOW1DLEVBQUUsRUFBRUUsRUFBRSxFQUFFb29DLEVBQUUsRUFBRXhCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLEdBQUcsQ0FBQzltQyxFQUFFLEVBQUVFLEVBQUUsRUFBRW9vQyxFQUFFLEVBQUV4QixFQUFFLElBQUksS0FBSyxDQUFDLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxHQUFHLENBQUM5bUMsRUFBRSxFQUFFRSxFQUFFLEVBQUVvb0MsRUFBRSxFQUFFeEIsRUFBRSxLQUFLLElBQUl5MkMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSzkyQyxFQUFFMjJDLHNCQUFzQixDQUFDLEtBQUtod0UsRUFBRSxDQUFDLEVBQUVBLEVBQUUs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QUFRLEdBQUdBLEVBQUUsRUFBRXV4QyxHQUFHLEtBQUtDLEVBQUUsQ0FBQyxFQUFFQSxFQUFFLEdBQUcsU0FBU3J4QyxFQUFFSCxHQUFHLE1BQU0sS0FBSyxHQUFHRyxHQUFHLFFBQVEsR0FBR0EsR0FBRyxRQUFRLEdBQUdBLEdBQUcsUUFBUSxHQUFHQSxHQUFHLFFBQVEsR0FBR0EsR0FBRyxXQUFXLEVBQUVxeEMsR0FBRyxLQUFLQyxFQUFFLENBQUMsRUFBRUEsRUFBRSxHQUFHLFNBQVN0eEMsRUFBRUgsR0FBRyxNQUFNLEtBQUssR0FBR0csR0FBRyxRQUFRLEdBQUdBLEdBQUcsVUFBVSxHQUFHSCxHQUFHLE1BQU0sR0FBR0csR0FBRyxLQUFLLEdBQUdILEdBQUcsTUFBTSxHQUFHRyxHQUFHLFVBQVUsR0FBR0gsR0FBRyxNQUFNLEdBQUdHLEdBQUcsS0FBSyxHQUFHSCxHQUFHLE1BQU0sR0FBR0csR0FBRyxJQUFJLEVBQUVzeEMsR0FBRyxLQUFLQyxFQUFFLENBQUMsRUFBRUEsRUFBRSxHQUFHLFNBQVN2eEMsRUFBRUgsR0FBRyxNQUFNLG1CQUFtQixHQUFHQSxHQUFHLFNBQVMsR0FBR0EsR0FBRyxRQUFRLEdBQUdBLEdBQUcsU0FBUyxHQUFHQSxFQUFFLEVBQUUweEMsR0FBRyxLQUFLQyxFQUFFLENBQUMsRUFBRUEsRUFBRSxHQUFHLFNBQVN4eEMsRUFBRUgsR0FBRyxNQUFNLFdBQVcsR0FBR0csR0FBRyxTQUFTLEdBQUdBLEdBQUcsUUFBUSxHQUFHQSxHQUFHLFFBQVEsR0FBR0EsR0FBRyxRQUFRLEdBQUdBLEdBQUcsSUFBSSxFQUFFd3hDLEdBQUcsS0FBS2xnRSxFQUFFLENBQUMsRUFBRUEsRUFBRSxHQUFHLFNBQVMwdUIsRUFBRUgsR0FBRyxNQUFNLEtBQUssR0FBR0csR0FBRyxRQUFRLEdBQUdBLEdBQUcsVUFBVSxHQUFHSCxHQUFHLE1BQU0sR0FBR0csR0FBRyxLQUFLLEdBQUdILEdBQUcsTUFBTSxHQUFHRyxHQUFHLFVBQVUsR0FBR0gsR0FBRyxNQUFNLEdBQUdHLEdBQUcsS0FBSyxHQUFH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LEVBQUVBLEdBQUcsR0FBRyxzQkFBc0JBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxlQUFlQSxHQUFHLEdBQUcsZUFBZUEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRyxlQUFlQSxJQUFJLEtBQUtsMEMsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxlQUFlQSxHQUFHLEdBQUcsZUFBZUEsSUFBSSxLQUFLbTBDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsZUFBZUEsR0FBRyxHQUFHLGVBQWVBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxlQUFlQSxHQUFHLEdBQUcsZUFBZUEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRyxlQUFlQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsZUFBZUEsR0FBRyxHQUFHLGVBQWVBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxlQUFlQSxHQUFHLEdBQUcsZUFBZUEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRyxlQUFlQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsZUFBZUEsR0FBRyxHQUFHLGVBQWVBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxlQUFlQSxHQUFHLEdBQUcsZUFBZUEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRyxlQUFlQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsY0FBY0EsR0FBRyxHQUFHLGVBQWVBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxzQkFBc0JBLEdBQUcsR0FBRyxlQUFlQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcscUJBQXFCQSxHQUFHLEdBQUcsZUFBZUEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRyxjQUFjQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsZUFBZUEsR0FBRyxHQUFHLHFCQUFxQkEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRyxzQkFBc0JBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxjQUFjQSxHQUFHLEdBQUcsZUFBZUEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLHFCQUFxQkEsR0FBRyxHQUFHLGVBQWVBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxxQkFBcUJBLEdBQUcsR0FBRyxlQUFlQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsZUFBZUEsR0FBRyxHQUFHLGNBQWNBLElBQUksS0FBS2gzQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRyxxQkFBcUJBLElBQUksS0FBS2kzQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRyxxQkFBcUJBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxzQkFBc0JBLEdBQUcsR0FBRyxlQUFlQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcscUJBQXFCQSxHQUFHLEdBQUcsZUFBZUEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRyxjQUFjQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsY0FBY0EsR0FBRyxHQUFHLGVBQWVBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxlQUFlQSxHQUFHLEdBQUcscUJBQXFCQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsZUFBZUEsR0FBRyxHQUFHLHNCQUFzQkEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLHFCQUFxQkEsR0FBRyxHQUFHLGVBQWVBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxxQkFBcUJBLEdBQUcsR0FBRyxlQUFlQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsZUFBZUEsR0FBRyxHQUFHLGNBQWNBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxjQUFjQSxHQUFHLEdBQUcsZUFBZUEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRyxxQkFBcUJBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxlQUFlQSxHQUFHLEdBQUcscUJBQXFCQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsMkJBQTJCQSxHQUFHLEdBQUcsZUFBZUEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLDJCQUEyQkEsR0FBRyxHQUFHLGVBQWVBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxjQUFjQSxHQUFHLEdBQUcsY0FBY0EsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLDJCQUEyQkEsR0FBRyxHQUFHLGVBQWVBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRywyQkFBMkJBLEdBQUcsR0FBRyxlQUFlQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsY0FBY0EsR0FBRyxHQUFHLGNBQWNBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxzQkFBc0JBLEdBQUcsR0FBRyxxQkFBcUJBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxxQkFBcUJBLEdBQUcsR0FBRyxxQkFBcUJBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxxQkFBcUJBLEdBQUcsR0FBRyxxQkFBcUJBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxxQkFBcUJBLEdBQUcsR0FBRyxzQkFBc0JBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxlQUFlQSxHQUFHLEdBQUcsMkJBQTJCQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsZUFBZUEsR0FBRyxHQUFHLDJCQUEyQkEsSUFBSSxLQUFLQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxHQUFHLGVBQWVBLEdBQUcsR0FBRywyQkFBMkJBLElBQUksS0FBS0MsR0FBRyxDQUFDLEVBQUVBLEdBQUcsR0FBRyxlQUFlQSxHQUFHLEdBQUcsMkJBQTJCQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsOEJBQThCQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsOEJBQThCQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsd0RBQXdEQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsd0RBQXdEQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsOERBQThEQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsOERBQThEQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsOEJBQThCQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsOEJBQThCQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsd0RBQXdEQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsd0RBQXdEQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsdURBQXVEQSxJQUFJLEtBQUtDLEdBQUcsQ0FBQyxFQUFFQSxHQUFHLEdBQUcsdURBQXVEQSxJQUFJLEtBQUtDLEdB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RUFBRSxNQUFNbkIsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsS0FB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QUksR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBR243RCxFQUFFbTdELFFBQVFyN0QsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdFLEVBQUVtN0QsUUFBUSxDQUFDLEdBQUcsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHbjdELEVBQUVtN0QsUUFBUTMwRixFQUFFLEVBQUUsRUFBRSxHQUFHdzVCLEVBQUVtN0QsUUFBUS8vRCxFQUFFLEVBQUUsRUFBRSxHQUFHNEUsRUFBRW4wQixJQUFJLElBQUksRUFBRSxFQUFFLEdBQUdtMEIsRUFBRW4wQixJQUFJLElBQUksRUFBRSxFQUFFLEdBQUdtMEIsRUFBRW4wQixJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUdtMEIsRUFBRW03RCxRQUFRcjdELEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHRSxFQUFFbTdELFFBQVFyN0QsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdFLEVBQUVtN0QsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUduN0QsRUFBRW03RCxRQUFRcjdELEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHRSxFQUFFbTdELFFBQVFyN0QsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUdFLEVBQUVtN0QsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUduN0QsRUFBRW03RCxRQUFRcjdELEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHRSxFQUFFbjBCLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBR20wQixFQUFFbTdELFFBQVFyN0QsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUdFLEVBQUVtN0QsUUFBUXI3RCxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0UsRUFBRW03RCxRQUFRcjdELEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHRSxFQUFFbTdELFFBQVFyN0QsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdFLEVBQUVtN0QsUUFBUXI3RCxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsR0FBR0UsRUFBRW03RCxRQUFRcjdELEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHRSxFQUFFbTdELFFBQVFyN0QsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUdFLEVBQUVtN0QsUUFBUXI3RCxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0UsRUFBRW03RCxRQUFRcjdELEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxHQUFHRSxFQUFFbTdELFFBQVFyN0QsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUdFLEVBQUVtN0QsUUFBUXI3RCxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBR0UsRUFBRW03RCxRQUFRLENBQUMsR0FBRyxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUduN0QsRUFBRW03RCxRQUFRcjdELEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxHQUFHRSxFQUFFbjBCLElBQUksR0FBRyxFQUFFLEdBQUcsR0FBR20wQixFQUFFbTdELFFBQVEvL0QsRUFBRSxFQUFFLEVBQUUsR0FBRzRFLEVBQUVuMEIsSUFBSSxJQUFJLEVBQUUsRUFBRSxHQUFHbTBCLEVBQUVtN0QsUUFBUXI3RCxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsR0FBR0UsRUFBRW03RCxRQUFRcjdELEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxJQUFJRSxFQUFFbTdELFFBQVFyN0QsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLElBQUlFLEVBQUVtN0QsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksRUFBRSxFQUFFLElBQUluN0QsRUFBRW03RCxRQUFRLy9ELEVBQUUsR0FBRyxFQUFFLElBQUk0RSxFQUFFbTdELFFBQVFyN0QsRUFBRSxHQUFHLEtBQUssR0FBRyxFQUFFLElBQUlFLEVBQUVtN0QsUUFBUXI3RCxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsSUFBSUUsRUFBRW03RCxRQUFRLy9ELEVBQUUsR0FBRyxFQUFFLElBQUk0RSxF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LEVBQUssRUFBQUMsV0FFckNnNEUsRUFESyxJQUFJLEVBQUFDLE9BQU92MkUsRUFBTXpPLEVBQVMzdUIsRUFBTTR6RyxrQkFDekI5bEYsT0FLbEJybEMsT0FBT29MLGlCQUFpQixVQUFVLEtBQzlCNi9HLElBQ0F0MkUsRUFBSy90QixPQUFPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2VudW1zLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3cuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21hdGguanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VzZXJBZ2VudC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzTGF5b3V0Vmlld3BvcnQuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvY29udGFpbnMuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNUYWJsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRQYXJlbnROb2RlLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3dpdGhpbi5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRWYXJpYXRpb24uanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbEJhclguanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1Njcm9sbFBhcmVudC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFNjcm9sbFBhcmVudC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlT2Zmc2V0cy5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2hpZGUuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRBbHRBeGlzLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcG9zaXRlUmVjdC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvb3JkZXJNb2RpZmllcnMuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXIuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1saXRlLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9kaXN0L2pzL2Jvb3RzdHJhcC5lc20uanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvY3JjLTMyL2NyYzMyLmpzIiwid2VicGFjazovL2dvdHR5Ly4vc3JjL2Jvb3RzdHJhcC5zY3NzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL3ByZWFjdC9kaXN0L3ByZWFjdC5tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvcHJlYWN0L2pzeC1ydW50aW1lL2Rpc3QvanN4UnVudGltZS5tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9zcmMvYm9vdHN0cmFwLnNjc3M/NDAyNSIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL3NyYy9NeU1vZGFsLnRzeCIsIndlYnBhY2s6Ly9nb3R0eS8uL3NyYy93ZWJzb2NrZXQudHMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9zcmMvd2VidHR5LnRzeCIsIndlYnBhY2s6Ly9nb3R0eS8uL3NyYy94dGVybS50c3giLCJ3ZWJwYWNrOi8vZ290dHkvLi9zcmMvem1vZGVtLnRzeCIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy94dGVybS1hZGRvbi1maXQvbGliL3h0ZXJtLWFkZG9uLWZpdC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy94dGVybS1hZGRvbi13ZWItbGlua3MvbGliL3h0ZXJtLWFkZG9uLXdlYi1saW5rcy5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy94dGVybS1hZGRvbi13ZWJnbC9saWIveHRlcm0tYWRkb24td2ViZ2wuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMveHRlcm0vbGliL3h0ZXJtLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL3ptb2RlbS5qcy9zcmMvZW5jb2RlLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL3ptb2RlbS5qcy9zcmMvdGV4dC5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy96bW9kZW0uanMvc3JjL3pjcmMuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvem1vZGVtLmpzL3NyYy96ZGxlLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL3ptb2RlbS5qcy9zcmMvemVycm9yLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL3ptb2RlbS5qcy9zcmMvemhlYWRlci5qcyIsIndlYnBhY2s6Ly9nb3R0eS8uL25vZGVfbW9kdWxlcy96bW9kZW0uanMvc3JjL3ptbGliLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL3ptb2RlbS5qcy9zcmMvem1vZGVtLmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL3ptb2RlbS5qcy9zcmMvem1vZGVtX2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvem1vZGVtLmpzL3NyYy96c2VudHJ5LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL3ptb2RlbS5qcy9zcmMvenNlc3Npb24uanMiLCJ3ZWJwYWNrOi8vZ290dHkvLi9ub2RlX21vZHVsZXMvem1vZGVtLmpzL3NyYy96c3VicGFja2V0LmpzIiwid2VicGFjazovL2dvdHR5Ly4vbm9kZV9tb2R1bGVzL3ptb2RlbS5qcy9zcmMvenZhbGlkYXRpb24uanMiLCJ3ZWJwYWNrOi8vZ290dHkvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vZ290dHkvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vZ290dHkvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2dvdHR5L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZ290dHkvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9nb3R0eS93ZWJwYWNrL3J1bnRpbWUvbm9uY2UiLCJ3ZWJwYWNrOi8vZ290dHkvLi9zcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIHRvcCA9ICd0b3AnO1xuZXhwb3J0IHZhciBib3R0b20gPSAnYm90dG9tJztcbmV4cG9ydCB2YXIgcmlnaHQgPSAncmlnaHQnO1xuZXhwb3J0IHZhciBsZWZ0ID0gJ2xlZnQnO1xuZXhwb3J0IHZhciBhdXRvID0gJ2F1dG8nO1xuZXhwb3J0IHZhciBiYXNlUGxhY2VtZW50cyA9IFt0b3AsIGJvdHRvbSwgcmlnaHQsIGxlZnRdO1xuZXhwb3J0IHZhciBzdGFydCA9ICdzdGFydCc7XG5leHBvcnQgdmFyIGVuZCA9ICdlbmQnO1xuZXhwb3J0IHZhciBjbGlwcGluZ1BhcmVudHMgPSAnY2xpcHBpbmdQYXJlbnRzJztcbmV4cG9ydCB2YXIgdmlld3BvcnQgPSAndmlld3BvcnQnO1xuZXhwb3J0IHZhciBwb3BwZXIgPSAncG9wcGVyJztcbmV4cG9ydCB2YXIgcmVmZXJlbmNlID0gJ3JlZmVyZW5jZSc7XG5leHBvcnQgdmFyIHZhcmlhdGlvblBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovYmFzZVBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTtcbmV4cG9ydCB2YXIgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9bXS5jb25jYXQoYmFzZVBsYWNlbWVudHMsIFthdXRvXSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50LCBwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pOyAvLyBtb2RpZmllcnMgdGhhdCBuZWVkIHRvIHJlYWQgdGhlIERPTVxuXG5leHBvcnQgdmFyIGJlZm9yZVJlYWQgPSAnYmVmb3JlUmVhZCc7XG5leHBvcnQgdmFyIHJlYWQgPSAncmVhZCc7XG5leHBvcnQgdmFyIGFmdGVyUmVhZCA9ICdhZnRlclJlYWQnOyAvLyBwdXJlLWxvZ2ljIG1vZGlmaWVyc1xuXG5leHBvcnQgdmFyIGJlZm9yZU1haW4gPSAnYmVmb3JlTWFpbic7XG5leHBvcnQgdmFyIG1haW4gPSAnbWFpbic7XG5leHBvcnQgdmFyIGFmdGVyTWFpbiA9ICdhZnRlck1haW4nOyAvLyBtb2RpZmllciB3aXRoIHRoZSBwdXJwb3NlIHRvIHdyaXRlIHRvIHRoZSBET00gKG9yIHdyaXRlIGludG8gYSBmcmFtZXdvcmsgc3RhdGUpXG5cbmV4cG9ydCB2YXIgYmVmb3JlV3JpdGUgPSAnYmVmb3JlV3JpdGUnO1xuZXhwb3J0IHZhciB3cml0ZSA9ICd3cml0ZSc7XG5leHBvcnQgdmFyIGFmdGVyV3JpdGUgPSAnYWZ0ZXJXcml0ZSc7XG5leHBvcnQgdmFyIG1vZGlmaWVyUGhhc2VzID0gW2JlZm9yZVJlYWQsIHJlYWQsIGFmdGVyUmVhZCwgYmVmb3JlTWFpbiwgbWFpbiwgYWZ0ZXJNYWluLCBiZWZvcmVXcml0ZSwgd3JpdGUsIGFmdGVyV3JpdGVdOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBUaGlzIG1vZGlmaWVyIHRha2VzIHRoZSBzdHlsZXMgcHJlcGFyZWQgYnkgdGhlIGBjb21wdXRlU3R5bGVzYCBtb2RpZmllclxuLy8gYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgSFRNTEVsZW1lbnRzIHN1Y2ggYXMgcG9wcGVyIGFuZCBhcnJvd1xuXG5mdW5jdGlvbiBhcHBseVN0eWxlcyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGU7XG4gIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHN0eWxlID0gc3RhdGUuc3R5bGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEZsb3cgZG9lc24ndCBzdXBwb3J0IHRvIGV4dGVuZCB0aGlzIHByb3BlcnR5LCBidXQgaXQncyB0aGUgbW9zdFxuICAgIC8vIGVmZmVjdGl2ZSB3YXkgdG8gYXBwbHkgc3R5bGVzIHRvIGFuIEhUTUxFbGVtZW50XG4gICAgLy8gJEZsb3dGaXhNZVtjYW5ub3Qtd3JpdGVdXG5cblxuICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXNbbmFtZV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSA9PT0gdHJ1ZSA/ICcnIDogdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlO1xuICB2YXIgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICBwb3BwZXI6IHtcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCcsXG4gICAgICBtYXJnaW46ICcwJ1xuICAgIH0sXG4gICAgYXJyb3c6IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgfSxcbiAgICByZWZlcmVuY2U6IHt9XG4gIH07XG4gIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMucG9wcGVyLnN0eWxlLCBpbml0aWFsU3R5bGVzLnBvcHBlcik7XG4gIHN0YXRlLnN0eWxlcyA9IGluaXRpYWxTdHlsZXM7XG5cbiAgaWYgKHN0YXRlLmVsZW1lbnRzLmFycm93KSB7XG4gICAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5hcnJvdy5zdHlsZSwgaW5pdGlhbFN0eWxlcy5hcnJvdyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdO1xuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgICAgdmFyIHN0eWxlUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHN0YXRlLnN0eWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHN0YXRlLnN0eWxlc1tuYW1lXSA6IGluaXRpYWxTdHlsZXNbbmFtZV0pOyAvLyBTZXQgYWxsIHZhbHVlcyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gdW5zZXQgdGhlbVxuXG4gICAgICB2YXIgc3R5bGUgPSBzdHlsZVByb3BlcnRpZXMucmVkdWNlKGZ1bmN0aW9uIChzdHlsZSwgcHJvcGVydHkpIHtcbiAgICAgICAgc3R5bGVbcHJvcGVydHldID0gJyc7XG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH0sIHt9KTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogYXBwbHlTdHlsZXMsXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ11cbn07IiwiaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VUFTdHJpbmcoKSB7XG4gIHZhciB1YURhdGEgPSBuYXZpZ2F0b3IudXNlckFnZW50RGF0YTtcblxuICBpZiAodWFEYXRhICE9IG51bGwgJiYgdWFEYXRhLmJyYW5kcykge1xuICAgIHJldHVybiB1YURhdGEuYnJhbmRzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uYnJhbmQgKyBcIi9cIiArIGl0ZW0udmVyc2lvbjtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cblxuICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbn0iLCJpbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNMYXlvdXRWaWV3cG9ydCgpIHtcbiAgcmV0dXJuICEvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3kpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IDE7XG4gIHZhciBzY2FsZVkgPSAxO1xuXG4gIGlmIChpbmNsdWRlU2NhbGUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHNjYWxlWCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggPiAwID8gcm91bmQoY2xpZW50UmVjdC53aWR0aCkgLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDEgOiAxO1xuICAgIHNjYWxlWSA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ID4gMCA/IHJvdW5kKGNsaWVudFJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDEgOiAxO1xuICB9XG5cbiAgdmFyIF9yZWYgPSBpc0VsZW1lbnQoZWxlbWVudCkgPyBnZXRXaW5kb3coZWxlbWVudCkgOiB3aW5kb3csXG4gICAgICB2aXN1YWxWaWV3cG9ydCA9IF9yZWYudmlzdWFsVmlld3BvcnQ7XG5cbiAgdmFyIGFkZFZpc3VhbE9mZnNldHMgPSAhaXNMYXlvdXRWaWV3cG9ydCgpICYmIGlzRml4ZWRTdHJhdGVneTtcbiAgdmFyIHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0IDogMCkpIC8gc2NhbGVYO1xuICB2YXIgeSA9IChjbGllbnRSZWN0LnRvcCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wIDogMCkpIC8gc2NhbGVZO1xuICB2YXIgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGVYO1xuICB2YXIgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZVk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICBsZWZ0OiB4LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpID49IDA7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICByZXR1cm4gKChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgZWxlbWVudC5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IHsgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSB7XG4gIGlmIChnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gKC8vIHRoaXMgaXMgYSBxdWlja2VyIChidXQgbGVzcyB0eXBlIHNhZmUpIHdheSB0byBzYXZlIHF1aXRlIHNvbWUgYnl0ZXMgZnJvbSB0aGUgYnVuZGxlXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXVxuICAgIC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgIGVsZW1lbnQuYXNzaWduZWRTbG90IHx8IC8vIHN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlXG4gICAgZWxlbWVudC5wYXJlbnROb2RlIHx8ICggLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWRcbiAgICBpc1NoYWRvd1Jvb3QoZWxlbWVudCkgPyBlbGVtZW50Lmhvc3QgOiBudWxsKSB8fCAvLyBTaGFkb3dSb290IGRldGVjdGVkXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IEhUTUxFbGVtZW50IGlzIGEgTm9kZVxuICAgIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSAvLyBmYWxsYmFja1xuXG4gICk7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGlzVGFibGVFbGVtZW50IGZyb20gXCIuL2lzVGFibGVFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvODM3XG4gIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbn0gLy8gYC5vZmZzZXRQYXJlbnRgIHJlcG9ydHMgYG51bGxgIGZvciBmaXhlZCBlbGVtZW50cywgd2hpbGUgYWJzb2x1dGUgZWxlbWVudHNcbi8vIHJldHVybiB0aGUgY29udGFpbmluZyBibG9ja1xuXG5cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIHZhciBpc0ZpcmVmb3ggPSAvZmlyZWZveC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG4gIHZhciBpc0lFID0gL1RyaWRlbnQvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuXG4gIGlmIChpc0lFICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAvLyBJbiBJRSA5LCAxMCBhbmQgMTEgZml4ZWQgZWxlbWVudHMgY29udGFpbmluZyBibG9jayBpcyBhbHdheXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0XG4gICAgdmFyIGVsZW1lbnRDc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnRDc3MucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG5cbiAgaWYgKGlzU2hhZG93Um9vdChjdXJyZW50Tm9kZSkpIHtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmhvc3Q7XG4gIH1cblxuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgWydodG1sJywgJ2JvZHknXS5pbmRleE9mKGdldE5vZGVOYW1lKGN1cnJlbnROb2RlKSkgPCAwKSB7XG4gICAgdmFyIGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpOyAvLyBUaGlzIGlzIG5vbi1leGhhdXN0aXZlIGJ1dCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIENTUyBwcm9wZXJ0aWVzIHRoYXRcbiAgICAvLyBjcmVhdGUgYSBjb250YWluaW5nIGJsb2NrLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG5cbiAgICBpZiAoY3NzLnRyYW5zZm9ybSAhPT0gJ25vbmUnIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gJ25vbmUnIHx8IGNzcy5jb250YWluID09PSAncGFpbnQnIHx8IFsndHJhbnNmb3JtJywgJ3BlcnNwZWN0aXZlJ10uaW5kZXhPZihjc3Mud2lsbENoYW5nZSkgIT09IC0xIHx8IGlzRmlyZWZveCAmJiBjc3Mud2lsbENoYW5nZSA9PT0gJ2ZpbHRlcicgfHwgaXNGaXJlZm94ICYmIGNzcy5maWx0ZXIgJiYgY3NzLmZpbHRlciAhPT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn0gLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KTtcblxuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdodG1sJyB8fCBnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnYm9keScgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luZG93O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSA+PSAwID8gJ3gnIDogJ3knO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJpbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VQYWRkaW5nT2JqZWN0KHBhZGRpbmdPYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGdldEZyZXNoU2lkZU9iamVjdCgpLCBwYWRkaW5nT2JqZWN0KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXhwYW5kVG9IYXNoTWFwKHZhbHVlLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoaGFzaE1hcCwga2V5KSB7XG4gICAgaGFzaE1hcFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGhhc2hNYXA7XG4gIH0sIHt9KTtcbn0iLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4uL2RvbS11dGlscy9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4gfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuLi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4uL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qc1wiO1xuaW1wb3J0IHsgbGVmdCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB0b3AsIGJvdHRvbSB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB0b1BhZGRpbmdPYmplY3QgPSBmdW5jdGlvbiB0b1BhZGRpbmdPYmplY3QocGFkZGluZywgc3RhdGUpIHtcbiAgcGFkZGluZyA9IHR5cGVvZiBwYWRkaW5nID09PSAnZnVuY3Rpb24nID8gcGFkZGluZyhPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHBhZGRpbmc7XG4gIHJldHVybiBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xufTtcblxuZnVuY3Rpb24gYXJyb3coX3JlZikge1xuICB2YXIgX3N0YXRlJG1vZGlmaWVyc0RhdGEkO1xuXG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgaXNWZXJ0aWNhbCA9IFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwO1xuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICBpZiAoIWFycm93RWxlbWVudCB8fCAhcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gdG9QYWRkaW5nT2JqZWN0KG9wdGlvbnMucGFkZGluZywgc3RhdGUpO1xuICB2YXIgYXJyb3dSZWN0ID0gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpO1xuICB2YXIgbWluUHJvcCA9IGF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gIHZhciBtYXhQcm9wID0gYXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gIHZhciBlbmREaWZmID0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2xlbl0gKyBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucG9wcGVyW2xlbl07XG4gIHZhciBzdGFydERpZmYgPSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQoYXJyb3dFbGVtZW50KTtcbiAgdmFyIGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudEhlaWdodCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggfHwgMCA6IDA7XG4gIHZhciBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjsgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBwb3BwZXIgaWYgdGhlIGNlbnRlciBwb2ludCBpc1xuICAvLyBvdXRzaWRlIG9mIHRoZSBwb3BwZXIgYm91bmRzXG5cbiAgdmFyIG1pbiA9IHBhZGRpbmdPYmplY3RbbWluUHJvcF07XG4gIHZhciBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dSZWN0W2xlbl0gLSBwYWRkaW5nT2JqZWN0W21heFByb3BdO1xuICB2YXIgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd1JlY3RbbGVuXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgdmFyIG9mZnNldCA9IHdpdGhpbihtaW4sIGNlbnRlciwgbWF4KTsgLy8gUHJldmVudHMgYnJlYWtpbmcgc3ludGF4IGhpZ2hsaWdodGluZy4uLlxuXG4gIHZhciBheGlzUHJvcCA9IGF4aXM7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSAoX3N0YXRlJG1vZGlmaWVyc0RhdGEkID0ge30sIF9zdGF0ZSRtb2RpZmllcnNEYXRhJFtheGlzUHJvcF0gPSBvZmZzZXQsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJC5jZW50ZXJPZmZzZXQgPSBvZmZzZXQgLSBjZW50ZXIsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJCk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGFycm93RWxlbWVudCA9IF9vcHRpb25zJGVsZW1lbnQgPT09IHZvaWQgMCA/ICdbZGF0YS1wb3BwZXItYXJyb3ddJyA6IF9vcHRpb25zJGVsZW1lbnQ7XG5cbiAgaWYgKGFycm93RWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIENTUyBzZWxlY3RvclxuXG5cbiAgaWYgKHR5cGVvZiBhcnJvd0VsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoYXJyb3dFbGVtZW50KTtcblxuICAgIGlmICghYXJyb3dFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmICghaXNIVE1MRWxlbWVudChhcnJvd0VsZW1lbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgZWxlbWVudCBtdXN0IGJlIGFuIEhUTUxFbGVtZW50IChub3QgYW4gU1ZHRWxlbWVudCkuJywgJ1RvIHVzZSBhbiBTVkcgYXJyb3csIHdyYXAgaXQgaW4gYW4gSFRNTEVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMnLCAndGhlIGFycm93LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb250YWlucyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIsIGFycm93RWxlbWVudCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgbW9kaWZpZXJcXCdzIGBlbGVtZW50YCBtdXN0IGJlIGEgY2hpbGQgb2YgdGhlIHBvcHBlcicsICdlbGVtZW50LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUuZWxlbWVudHMuYXJyb3cgPSBhcnJvd0VsZW1lbnQ7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcnJvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBhcnJvdyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn0iLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHVuc2V0U2lkZXMgPSB7XG4gIHRvcDogJ2F1dG8nLFxuICByaWdodDogJ2F1dG8nLFxuICBib3R0b206ICdhdXRvJyxcbiAgbGVmdDogJ2F1dG8nXG59OyAvLyBSb3VuZCB0aGUgb2Zmc2V0cyB0byB0aGUgbmVhcmVzdCBzdWl0YWJsZSBzdWJwaXhlbCBiYXNlZCBvbiB0aGUgRFBSLlxuLy8gWm9vbWluZyBjYW4gY2hhbmdlIHRoZSBEUFIsIGJ1dCBpdCBzZWVtcyB0byByZXBvcnQgYSB2YWx1ZSB0aGF0IHdpbGxcbi8vIGNsZWFubHkgZGl2aWRlIHRoZSB2YWx1ZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgc3VicGl4ZWxzLlxuXG5mdW5jdGlvbiByb3VuZE9mZnNldHNCeURQUihfcmVmKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIHdpbiA9IHdpbmRvdztcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmNC54O1xuICB5ID0gX3JlZjQueTtcblxuICBpZiAoZ3B1QWNjZWxlcmF0aW9uKSB7XG4gICAgdmFyIF9PYmplY3QkYXNzaWduO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduID0ge30sIF9PYmplY3QkYXNzaWduW3NpZGVZXSA9IGhhc1kgPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ25bc2lkZVhdID0gaGFzWCA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbi50cmFuc2Zvcm0gPSAod2luLmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNSkge1xuICB2YXIgc3RhdGUgPSBfcmVmNS5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNS5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgdmFyIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IGdldENvbXB1dGVkU3R5bGUoc3RhdGUuZWxlbWVudHMucG9wcGVyKS50cmFuc2l0aW9uUHJvcGVydHkgfHwgJyc7XG5cbiAgICBpZiAoYWRhcHRpdmUgJiYgWyd0cmFuc2Zvcm0nLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uc29tZShmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uUHJvcGVydHkuaW5kZXhPZihwcm9wZXJ0eSkgPj0gMDtcbiAgICB9KSkge1xuICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBEZXRlY3RlZCBDU1MgdHJhbnNpdGlvbnMgb24gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcnLCAnQ1NTIHByb3BlcnRpZXM6IFwidHJhbnNmb3JtXCIsIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJsZWZ0XCIuJywgJ1xcblxcbicsICdEaXNhYmxlIHRoZSBcImNvbXB1dGVTdHlsZXNcIiBtb2RpZmllclxcJ3MgYGFkYXB0aXZlYCBvcHRpb24gdG8gYWxsb3cnLCAnZm9yIHNtb290aCB0cmFuc2l0aW9ucywgb3IgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgZnJvbSB0aGUgQ1NTJywgJ3RyYW5zaXRpb24gZGVjbGFyYXRpb24gb24gdGhlIHBvcHBlciBlbGVtZW50IGlmIG9ubHkgdHJhbnNpdGlvbmluZycsICdvcGFjaXR5IG9yIGJhY2tncm91bmQtY29sb3IgZm9yIGV4YW1wbGUuJywgJ1xcblxcbicsICdXZSByZWNvbW1lbmQgdXNpbmcgdGhlIHBvcHBlciBlbGVtZW50IGFzIGEgd3JhcHBlciBhcm91bmQgYW4gaW5uZXInLCAnZWxlbWVudCB0aGF0IGNhbiBoYXZlIGFueSBDU1MgcHJvcGVydHkgdHJhbnNpdGlvbmVkIGZvciBhbmltYXRpb25zLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICB2YXJpYXRpb246IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHBvcHBlcjogc3RhdGUuZWxlbWVudHMucG9wcGVyLFxuICAgIHBvcHBlclJlY3Q6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBncHVBY2NlbGVyYXRpb246IGdwdUFjY2VsZXJhdGlvbixcbiAgICBpc0ZpeGVkOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnXG4gIH07XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5wb3BwZXIsIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLFxuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBhZGFwdGl2ZTogYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLmFycm93LCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3csXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGFkYXB0aXZlOiBmYWxzZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcGxhY2VtZW50Jzogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICBmbjogY29tcHV0ZVN0eWxlcyxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciBwYXNzaXZlID0ge1xuICBwYXNzaXZlOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJHNjcm9sbCA9IG9wdGlvbnMuc2Nyb2xsLFxuICAgICAgc2Nyb2xsID0gX29wdGlvbnMkc2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkc2Nyb2xsLFxuICAgICAgX29wdGlvbnMkcmVzaXplID0gb3B0aW9ucy5yZXNpemUsXG4gICAgICByZXNpemUgPSBfb3B0aW9ucyRyZXNpemUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyZXNpemU7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coc3RhdGUuZWxlbWVudHMucG9wcGVyKTtcbiAgdmFyIHNjcm9sbFBhcmVudHMgPSBbXS5jb25jYXQoc3RhdGUuc2Nyb2xsUGFyZW50cy5yZWZlcmVuY2UsIHN0YXRlLnNjcm9sbFBhcmVudHMucG9wcGVyKTtcblxuICBpZiAoc2Nyb2xsKSB7XG4gICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHJlc2l6ZSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXNpemUpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH1cbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2V2ZW50TGlzdGVuZXJzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBmdW5jdGlvbiBmbigpIHt9LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgZGF0YToge31cbn07IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGwobm9kZSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KG5vZGUpO1xuICB2YXIgc2Nyb2xsTGVmdCA9IHdpbi5wYWdlWE9mZnNldDtcbiAgdmFyIHNjcm9sbFRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBzY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogc2Nyb2xsVG9wXG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIC8vIFBvcHBlciAxIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UgYW5kIG5ldmVyIGhhZCBhIGJ1ZyByZXBvcnQgc28gbGV0J3MgYXNzdW1lXG4gIC8vIGl0J3Mgbm90IGFuIGlzc3VlLiBJIGRvbid0IHRoaW5rIGFueW9uZSBldmVyIHNwZWNpZmllcyB3aWR0aCBvbiA8aHRtbD5cbiAgLy8gYW55d2F5LlxuICAvLyBCcm93c2VycyB3aGVyZSB0aGUgbGVmdCBzY3JvbGxiYXIgZG9lc24ndCBjYXVzZSBhbiBpc3N1ZSByZXBvcnQgYDBgIGZvclxuICAvLyB0aGlzIChlLmcuIEVkZ2UgMjAxOSwgSUUxMSwgU2FmYXJpKVxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldFdpbmRvd1Njcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufSIsImltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2Nyb2xsUGFyZW50KGVsZW1lbnQpIHtcbiAgLy8gRmlyZWZveCB3YW50cyB1cyB0byBjaGVjayBgLXhgIGFuZCBgLXlgIHZhcmlhdGlvbnMgYXMgd2VsbFxuICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLFxuICAgICAgb3ZlcmZsb3cgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvdyxcbiAgICAgIG92ZXJmbG93WCA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WCxcbiAgICAgIG92ZXJmbG93WSA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WTtcblxuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVuLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKTtcbn0iLCJpbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlKSB7XG4gIGlmIChbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmRleE9mKGdldE5vZGVOYW1lKG5vZGUpKSA+PSAwKSB7XG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIGlmIChpc0hUTUxFbGVtZW50KG5vZGUpICYmIGlzU2Nyb2xsUGFyZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KGdldFBhcmVudE5vZGUobm9kZSkpO1xufSIsImltcG9ydCBnZXRTY3JvbGxQYXJlbnQgZnJvbSBcIi4vZ2V0U2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG4vKlxuZ2l2ZW4gYSBET00gZWxlbWVudCwgcmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBzY3JvbGwgcGFyZW50cywgdXAgdGhlIGxpc3Qgb2YgYW5jZXNvcnNcbnVudGlsIHdlIGdldCB0byB0aGUgdG9wIHdpbmRvdyBvYmplY3QuIFRoaXMgbGlzdCBpcyB3aGF0IHdlIGF0dGFjaCBzY3JvbGwgbGlzdGVuZXJzXG50bywgYmVjYXVzZSBpZiBhbnkgb2YgdGhlc2UgcGFyZW50IGVsZW1lbnRzIHNjcm9sbCwgd2UnbGwgbmVlZCB0byByZS1jYWxjdWxhdGUgdGhlXG5yZWZlcmVuY2UgZWxlbWVudCdzIHBvc2l0aW9uLlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGlzdFNjcm9sbFBhcmVudHMoZWxlbWVudCwgbGlzdCkge1xuICB2YXIgX2VsZW1lbnQkb3duZXJEb2N1bWVuO1xuXG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cblxuICB2YXIgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KGVsZW1lbnQpO1xuICB2YXIgaXNCb2R5ID0gc2Nyb2xsUGFyZW50ID09PSAoKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5KTtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhzY3JvbGxQYXJlbnQpO1xuICB2YXIgdGFyZ2V0ID0gaXNCb2R5ID8gW3dpbl0uY29uY2F0KHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNTY3JvbGxQYXJlbnQoc2Nyb2xsUGFyZW50KSA/IHNjcm9sbFBhcmVudCA6IFtdKSA6IHNjcm9sbFBhcmVudDtcbiAgdmFyIHVwZGF0ZWRMaXN0ID0gbGlzdC5jb25jYXQodGFyZ2V0KTtcbiAgcmV0dXJuIGlzQm9keSA/IHVwZGF0ZWRMaXN0IDogLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IGlzQm9keSB0ZWxscyB1cyB0YXJnZXQgd2lsbCBiZSBhbiBIVE1MRWxlbWVudCBoZXJlXG4gIHVwZGF0ZWRMaXN0LmNvbmNhdChsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKHRhcmdldCkpKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlY3QsIHtcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgdG9wOiByZWN0LnksXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9KTtcbn0iLCJpbXBvcnQgeyB2aWV3cG9ydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZpZXdwb3J0UmVjdCBmcm9tIFwiLi9nZXRWaWV3cG9ydFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudFJlY3QgZnJvbSBcIi4vZ2V0RG9jdW1lbnRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vbGlzdFNjcm9sbFBhcmVudHMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4vZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgcmVjdFRvQ2xpZW50UmVjdCBmcm9tIFwiLi4vdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgbWF4LCBtaW4gfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBmYWxzZSwgc3RyYXRlZ3kgPT09ICdmaXhlZCcpO1xuICByZWN0LnRvcCA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIHJlY3QubGVmdCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgcmVjdC5ib3R0b20gPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnJpZ2h0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC53aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3QuaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QueCA9IHJlY3QubGVmdDtcbiAgcmVjdC55ID0gcmVjdC50b3A7XG4gIHJldHVybiByZWN0O1xufVxuXG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpIHtcbiAgcmV0dXJuIGNsaXBwaW5nUGFyZW50ID09PSB2aWV3cG9ydCA/IHJlY3RUb0NsaWVudFJlY3QoZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSkgOiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpID8gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSA6IHJlY3RUb0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkpO1xufSAvLyBBIFwiY2xpcHBpbmcgcGFyZW50XCIgaXMgYW4gb3ZlcmZsb3dhYmxlIGNvbnRhaW5lciB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgb3ZlcmZsb3dpbmcgZWxlbWVudHMgd2l0aCBhIHBvc2l0aW9uIGRpZmZlcmVudCBmcm9tXG4vLyBgaW5pdGlhbGBcblxuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkge1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gbGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZShlbGVtZW50KSk7XG4gIHZhciBjYW5Fc2NhcGVDbGlwcGluZyA9IFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmRleE9mKGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24pID49IDA7XG4gIHZhciBjbGlwcGVyRWxlbWVudCA9IGNhbkVzY2FwZUNsaXBwaW5nICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgPyBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIGlmICghaXNFbGVtZW50KGNsaXBwZXJFbGVtZW50KSkge1xuICAgIHJldHVybiBbXTtcbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMTQxNFxuXG5cbiAgcmV0dXJuIGNsaXBwaW5nUGFyZW50cy5maWx0ZXIoZnVuY3Rpb24gKGNsaXBwaW5nUGFyZW50KSB7XG4gICAgcmV0dXJuIGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgJiYgY29udGFpbnMoY2xpcHBpbmdQYXJlbnQsIGNsaXBwZXJFbGVtZW50KSAmJiBnZXROb2RlTmFtZShjbGlwcGluZ1BhcmVudCkgIT09ICdib2R5JztcbiAgfSk7XG59IC8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIHBhcmVudHNcblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDbGlwcGluZ1JlY3QoZWxlbWVudCwgYm91bmRhcnksIHJvb3RCb3VuZGFyeSwgc3RyYXRlZ3kpIHtcbiAgdmFyIG1haW5DbGlwcGluZ1BhcmVudHMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nUGFyZW50cycgPyBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gW10uY29uY2F0KG1haW5DbGlwcGluZ1BhcmVudHMsIFtyb290Qm91bmRhcnldKTtcbiAgdmFyIGZpcnN0Q2xpcHBpbmdQYXJlbnQgPSBjbGlwcGluZ1BhcmVudHNbMF07XG4gIHZhciBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ1BhcmVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2NSZWN0LCBjbGlwcGluZ1BhcmVudCkge1xuICAgIHZhciByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBmaXJzdENsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkpO1xuICBjbGlwcGluZ1JlY3Qud2lkdGggPSBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LmhlaWdodCA9IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wO1xuICBjbGlwcGluZ1JlY3QueCA9IGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QueSA9IGNsaXBwaW5nUmVjdC50b3A7XG4gIHJldHVybiBjbGlwcGluZ1JlY3Q7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgdmFyIHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDtcblxuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDtcbiAgICB2YXIgbGF5b3V0Vmlld3BvcnQgPSBpc0xheW91dFZpZXdwb3J0KCk7XG5cbiAgICBpZiAobGF5b3V0Vmlld3BvcnQgfHwgIWxheW91dFZpZXdwb3J0ICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeDogeCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCksXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IHsgbWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgX2VsZW1lbnQkb3duZXJEb2N1bWVuO1xuXG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgd2luU2Nyb2xsID0gZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpO1xuICB2YXIgYm9keSA9IChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keTtcbiAgdmFyIHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LnNjcm9sbFdpZHRoIDogMCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKTtcbiAgdmFyIGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkgPyBib2R5LnNjcm9sbEhlaWdodCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudEhlaWdodCA6IDApO1xuICB2YXIgeCA9IC13aW5TY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIHZhciB5ID0gLXdpblNjcm9sbC5zY3JvbGxUb3A7XG5cbiAgaWYgKGdldENvbXB1dGVkU3R5bGUoYm9keSB8fCBodG1sKS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKSAtIHdpZHRoO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4vZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHN0YXJ0LCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHJlZmVyZW5jZSA9IF9yZWYucmVmZXJlbmNlLFxuICAgICAgZWxlbWVudCA9IF9yZWYuZWxlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IHBsYWNlbWVudCA/IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciB2YXJpYXRpb24gPSBwbGFjZW1lbnQgPyBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZWxlbWVudC53aWR0aCAvIDI7XG4gIHZhciBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGVsZW1lbnQuaGVpZ2h0IC8gMjtcbiAgdmFyIG9mZnNldHM7XG5cbiAgc3dpdGNoIChiYXNlUGxhY2VtZW50KSB7XG4gICAgY2FzZSB0b3A6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGVsZW1lbnQuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGJvdHRvbTpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSByaWdodDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGxlZnQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGVsZW1lbnQud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cblxuICB2YXIgbWFpbkF4aXMgPSBiYXNlUGxhY2VtZW50ID8gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpIDogbnVsbDtcblxuICBpZiAobWFpbkF4aXMgIT0gbnVsbCkge1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgc3dpdGNoICh2YXJpYXRpb24pIHtcbiAgICAgIGNhc2Ugc3RhcnQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gLSAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIGVuZDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSArIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9mZnNldHM7XG59IiwiaW1wb3J0IGdldENsaXBwaW5nUmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGNvbXB1dGVPZmZzZXRzIGZyb20gXCIuL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5pbXBvcnQgcmVjdFRvQ2xpZW50UmVjdCBmcm9tIFwiLi9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBjbGlwcGluZ1BhcmVudHMsIHJlZmVyZW5jZSwgcG9wcGVyLCBib3R0b20sIHRvcCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB2aWV3cG9ydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi9leHBhbmRUb0hhc2hNYXAuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIF9vcHRpb25zJHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zJHBsYWNlbWVudCA9PT0gdm9pZCAwID8gc3RhdGUucGxhY2VtZW50IDogX29wdGlvbnMkcGxhY2VtZW50LFxuICAgICAgX29wdGlvbnMkc3RyYXRlZ3kgPSBfb3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIHN0cmF0ZWd5ID0gX29wdGlvbnMkc3RyYXRlZ3kgPT09IHZvaWQgMCA/IHN0YXRlLnN0cmF0ZWd5IDogX29wdGlvbnMkc3RyYXRlZ3ksXG4gICAgICBfb3B0aW9ucyRib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucyRib3VuZGFyeSA9PT0gdm9pZCAwID8gY2xpcHBpbmdQYXJlbnRzIDogX29wdGlvbnMkYm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRyb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucyRyb290Qm91bmRhcnkgPT09IHZvaWQgMCA/IHZpZXdwb3J0IDogX29wdGlvbnMkcm9vdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkZWxlbWVudENvbnRlID0gX29wdGlvbnMuZWxlbWVudENvbnRleHQsXG4gICAgICBlbGVtZW50Q29udGV4dCA9IF9vcHRpb25zJGVsZW1lbnRDb250ZSA9PT0gdm9pZCAwID8gcG9wcGVyIDogX29wdGlvbnMkZWxlbWVudENvbnRlLFxuICAgICAgX29wdGlvbnMkYWx0Qm91bmRhcnkgPSBfb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMkYWx0Qm91bmRhcnkgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucyRwYWRkaW5nID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkcGFkZGluZztcbiAgdmFyIHBhZGRpbmdPYmplY3QgPSBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xuICB2YXIgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyByZWZlcmVuY2UgOiBwb3BwZXI7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgdmFyIGNsaXBwaW5nQ2xpZW50UmVjdCA9IGdldENsaXBwaW5nUmVjdChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCBnZXREb2N1bWVudEVsZW1lbnQoc3RhdGUuZWxlbWVudHMucG9wcGVyKSwgYm91bmRhcnksIHJvb3RCb3VuZGFyeSwgc3RyYXRlZ3kpO1xuICB2YXIgcmVmZXJlbmNlQ2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChzdGF0ZS5lbGVtZW50cy5yZWZlcmVuY2UpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZUNsaWVudFJlY3QsXG4gICAgZWxlbWVudDogcG9wcGVyUmVjdCxcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KTtcbiAgdmFyIHBvcHBlckNsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KE9iamVjdC5hc3NpZ24oe30sIHBvcHBlclJlY3QsIHBvcHBlck9mZnNldHMpKTtcbiAgdmFyIGVsZW1lbnRDbGllbnRSZWN0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHBvcHBlckNsaWVudFJlY3QgOiByZWZlcmVuY2VDbGllbnRSZWN0OyAvLyBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyByZWN0XG4gIC8vIDAgb3IgbmVnYXRpdmUgPSB3aXRoaW4gdGhlIGNsaXBwaW5nIHJlY3RcblxuICB2YXIgb3ZlcmZsb3dPZmZzZXRzID0ge1xuICAgIHRvcDogY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wLFxuICAgIGJvdHRvbTogZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tLFxuICAgIGxlZnQ6IGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCxcbiAgICByaWdodDogZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0XG4gIH07XG4gIHZhciBvZmZzZXREYXRhID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQ7IC8vIE9mZnNldHMgY2FuIGJlIGFwcGxpZWQgb25seSB0byB0aGUgcG9wcGVyIGVsZW1lbnRcblxuICBpZiAoZWxlbWVudENvbnRleHQgPT09IHBvcHBlciAmJiBvZmZzZXREYXRhKSB7XG4gICAgdmFyIG9mZnNldCA9IG9mZnNldERhdGFbcGxhY2VtZW50XTtcbiAgICBPYmplY3Qua2V5cyhvdmVyZmxvd09mZnNldHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIG11bHRpcGx5ID0gW3JpZ2h0LCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gMSA6IC0xO1xuICAgICAgdmFyIGF4aXMgPSBbdG9wLCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gJ3knIDogJ3gnO1xuICAgICAgb3ZlcmZsb3dPZmZzZXRzW2tleV0gKz0gb2Zmc2V0W2F4aXNdICogbXVsdGlwbHk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gb3ZlcmZsb3dPZmZzZXRzO1xufSIsImltcG9ydCBnZXRPcHBvc2l0ZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgY29tcHV0ZUF1dG9QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyBib3R0b20sIHRvcCwgc3RhcnQsIHJpZ2h0LCBsZWZ0LCBhdXRvIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5mdW5jdGlvbiBnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgaWYgKGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gYXV0bykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5cbmZ1bmN0aW9uIGZsaXAoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0uX3NraXApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFsdEF4aXMsXG4gICAgICBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgPSBvcHRpb25zLmZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcsXG4gICAgICBib3VuZGFyeSA9IG9wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBvcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGZsaXBWYXJpYXRpbyA9IG9wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zJGZsaXBWYXJpYXRpbyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGZsaXBWYXJpYXRpbyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IG9wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzO1xuICB2YXIgcHJlZmVycmVkUGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gYmFzZVBsYWNlbWVudCA9PT0gcHJlZmVycmVkUGxhY2VtZW50O1xuICB2YXIgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBWYXJpYXRpb25zID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KHByZWZlcnJlZFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocHJlZmVycmVkUGxhY2VtZW50KSk7XG4gIHZhciBwbGFjZW1lbnRzID0gW3ByZWZlcnJlZFBsYWNlbWVudF0uY29uY2F0KGZhbGxiYWNrUGxhY2VtZW50cykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gYXV0byA/IGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zOiBmbGlwVmFyaWF0aW9ucyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50czogYWxsb3dlZEF1dG9QbGFjZW1lbnRzXG4gICAgfSkgOiBwbGFjZW1lbnQpO1xuICB9LCBbXSk7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGNoZWNrc01hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIG1ha2VGYWxsYmFja0NoZWNrcyA9IHRydWU7XG4gIHZhciBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnRzWzBdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGxhY2VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwbGFjZW1lbnQgPSBwbGFjZW1lbnRzW2ldO1xuXG4gICAgdmFyIF9iYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuXG4gICAgdmFyIGlzU3RhcnRWYXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gc3RhcnQ7XG4gICAgdmFyIGlzVmVydGljYWwgPSBbdG9wLCBib3R0b21dLmluZGV4T2YoX2Jhc2VQbGFjZW1lbnQpID49IDA7XG4gICAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSk7XG4gICAgdmFyIG1haW5WYXJpYXRpb25TaWRlID0gaXNWZXJ0aWNhbCA/IGlzU3RhcnRWYXJpYXRpb24gPyByaWdodCA6IGxlZnQgOiBpc1N0YXJ0VmFyaWF0aW9uID8gYm90dG9tIDogdG9wO1xuXG4gICAgaWYgKHJlZmVyZW5jZVJlY3RbbGVuXSA+IHBvcHBlclJlY3RbbGVuXSkge1xuICAgICAgbWFpblZhcmlhdGlvblNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluVmFyaWF0aW9uU2lkZSk7XG4gICAgfVxuXG4gICAgdmFyIGFsdFZhcmlhdGlvblNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluVmFyaWF0aW9uU2lkZSk7XG4gICAgdmFyIGNoZWNrcyA9IFtdO1xuXG4gICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKG92ZXJmbG93W19iYXNlUGxhY2VtZW50XSA8PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1ttYWluVmFyaWF0aW9uU2lkZV0gPD0gMCwgb3ZlcmZsb3dbYWx0VmFyaWF0aW9uU2lkZV0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrcy5ldmVyeShmdW5jdGlvbiAoY2hlY2spIHtcbiAgICAgIHJldHVybiBjaGVjaztcbiAgICB9KSkge1xuICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgICAgbWFrZUZhbGxiYWNrQ2hlY2tzID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjaGVja3NNYXAuc2V0KHBsYWNlbWVudCwgY2hlY2tzKTtcbiAgfVxuXG4gIGlmIChtYWtlRmFsbGJhY2tDaGVja3MpIHtcbiAgICAvLyBgMmAgbWF5IGJlIGRlc2lyZWQgaW4gc29tZSBjYXNlcyDigJMgcmVzZWFyY2ggbGF0ZXJcbiAgICB2YXIgbnVtYmVyT2ZDaGVja3MgPSBmbGlwVmFyaWF0aW9ucyA/IDMgOiAxO1xuXG4gICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoX2kpIHtcbiAgICAgIHZhciBmaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50cy5maW5kKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICAgICAgdmFyIGNoZWNrcyA9IGNoZWNrc01hcC5nZXQocGxhY2VtZW50KTtcblxuICAgICAgICBpZiAoY2hlY2tzKSB7XG4gICAgICAgICAgcmV0dXJuIGNoZWNrcy5zbGljZSgwLCBfaSkuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hlY2s7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZml0dGluZ1BsYWNlbWVudCkge1xuICAgICAgICBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBmaXR0aW5nUGxhY2VtZW50O1xuICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBfaSA9IG51bWJlck9mQ2hlY2tzOyBfaSA+IDA7IF9pLS0pIHtcbiAgICAgIHZhciBfcmV0ID0gX2xvb3AoX2kpO1xuXG4gICAgICBpZiAoX3JldCA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGUucGxhY2VtZW50ICE9PSBmaXJzdEZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwID0gdHJ1ZTtcbiAgICBzdGF0ZS5wbGFjZW1lbnQgPSBmaXJzdEZpdHRpbmdQbGFjZW1lbnQ7XG4gICAgc3RhdGUucmVzZXQgPSB0cnVlO1xuICB9XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdmbGlwJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGZsaXAsXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J10sXG4gIGRhdGE6IHtcbiAgICBfc2tpcDogZmFsc2VcbiAgfVxufTsiLCJpbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgdmFyaWF0aW9uUGxhY2VtZW50cywgYmFzZVBsYWNlbWVudHMsIHBsYWNlbWVudHMgYXMgYWxsUGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPSBfb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPT09IHZvaWQgMCA/IGFsbFBsYWNlbWVudHMgOiBfb3B0aW9ucyRhbGxvd2VkQXV0b1A7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KTtcbiAgdmFyIHBsYWNlbWVudHMgPSB2YXJpYXRpb24gPyBmbGlwVmFyaWF0aW9ucyA/IHZhcmlhdGlvblBsYWNlbWVudHMgOiB2YXJpYXRpb25QbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSB2YXJpYXRpb247XG4gIH0pIDogYmFzZVBsYWNlbWVudHM7XG4gIHZhciBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWxsb3dlZEF1dG9QbGFjZW1lbnRzLmluZGV4T2YocGxhY2VtZW50KSA+PSAwO1xuICB9KTtcblxuICBpZiAoYWxsb3dlZFBsYWNlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogVGhlIGBhbGxvd2VkQXV0b1BsYWNlbWVudHNgIG9wdGlvbiBkaWQgbm90IGFsbG93IGFueScsICdwbGFjZW1lbnRzLiBFbnN1cmUgdGhlIGBwbGFjZW1lbnRgIG9wdGlvbiBtYXRjaGVzIHRoZSB2YXJpYXRpb24nLCAnb2YgdGhlIGFsbG93ZWQgcGxhY2VtZW50cy4nLCAnRm9yIGV4YW1wbGUsIFwiYXV0b1wiIGNhbm5vdCBiZSB1c2VkIHRvIGFsbG93IFwiYm90dG9tLXN0YXJ0XCIuJywgJ1VzZSBcImF1dG8tc3RhcnRcIiBpbnN0ZWFkLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdOiBGbG93IHNlZW1zIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCB0d28gYXJyYXkgdW5pb25zLi4uXG5cblxuICB2YXIgb3ZlcmZsb3dzID0gYWxsb3dlZFBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSlbZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvdmVyZmxvd3MpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dzW2FdIC0gb3ZlcmZsb3dzW2JdO1xuICB9KTtcbn0iLCJpbXBvcnQgeyB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QsIHByZXZlbnRlZE9mZnNldHMpIHtcbiAgaWYgKHByZXZlbnRlZE9mZnNldHMgPT09IHZvaWQgMCkge1xuICAgIHByZXZlbnRlZE9mZnNldHMgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQgLSBwcmV2ZW50ZWRPZmZzZXRzLnksXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCArIHByZXZlbnRlZE9mZnNldHMueCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0ICsgcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoIC0gcHJldmVudGVkT2Zmc2V0cy54XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gW3RvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdF0uc29tZShmdW5jdGlvbiAoc2lkZSkge1xuICAgIHJldHVybiBvdmVyZmxvd1tzaWRlXSA+PSAwO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGlkZShfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBwcmV2ZW50ZWRPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wcmV2ZW50T3ZlcmZsb3c7XG4gIHZhciByZWZlcmVuY2VPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gIH0pO1xuICB2YXIgcG9wcGVyQWx0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gIH0pO1xuICB2YXIgcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMocmVmZXJlbmNlT3ZlcmZsb3csIHJlZmVyZW5jZVJlY3QpO1xuICB2YXIgcG9wcGVyRXNjYXBlT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHBvcHBlckFsdE92ZXJmbG93LCBwb3BwZXJSZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKTtcbiAgdmFyIGlzUmVmZXJlbmNlSGlkZGVuID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyk7XG4gIHZhciBoYXNQb3BwZXJFc2NhcGVkID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHBvcHBlckVzY2FwZU9mZnNldHMpO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0ge1xuICAgIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0czogcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzLFxuICAgIHBvcHBlckVzY2FwZU9mZnNldHM6IHBvcHBlckVzY2FwZU9mZnNldHMsXG4gICAgaXNSZWZlcmVuY2VIaWRkZW46IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgIGhhc1BvcHBlckVzY2FwZWQ6IGhhc1BvcHBlckVzY2FwZWRcbiAgfTtcbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1yZWZlcmVuY2UtaGlkZGVuJzogaXNSZWZlcmVuY2VIaWRkZW4sXG4gICAgJ2RhdGEtcG9wcGVyLWVzY2FwZWQnOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnaGlkZScsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J10sXG4gIGZuOiBoaWRlXG59OyIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBwbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgcmVjdHMsIG9mZnNldCkge1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgdmFyIGludmVydERpc3RhbmNlID0gW2xlZnQsIHRvcF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwID8gLTEgOiAxO1xuXG4gIHZhciBfcmVmID0gdHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJyA/IG9mZnNldChPYmplY3QuYXNzaWduKHt9LCByZWN0cywge1xuICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gIH0pKSA6IG9mZnNldCxcbiAgICAgIHNraWRkaW5nID0gX3JlZlswXSxcbiAgICAgIGRpc3RhbmNlID0gX3JlZlsxXTtcblxuICBza2lkZGluZyA9IHNraWRkaW5nIHx8IDA7XG4gIGRpc3RhbmNlID0gKGRpc3RhbmNlIHx8IDApICogaW52ZXJ0RGlzdGFuY2U7XG4gIHJldHVybiBbbGVmdCwgcmlnaHRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IHtcbiAgICB4OiBkaXN0YW5jZSxcbiAgICB5OiBza2lkZGluZ1xuICB9IDoge1xuICAgIHg6IHNraWRkaW5nLFxuICAgIHk6IGRpc3RhbmNlXG4gIH07XG59XG5cbmZ1bmN0aW9uIG9mZnNldChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYyLm5hbWU7XG4gIHZhciBfb3B0aW9ucyRvZmZzZXQgPSBvcHRpb25zLm9mZnNldCxcbiAgICAgIG9mZnNldCA9IF9vcHRpb25zJG9mZnNldCA9PT0gdm9pZCAwID8gWzAsIDBdIDogX29wdGlvbnMkb2Zmc2V0O1xuICB2YXIgZGF0YSA9IHBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkocGxhY2VtZW50LCBzdGF0ZS5yZWN0cywgb2Zmc2V0KTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHZhciBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQgPSBkYXRhW3N0YXRlLnBsYWNlbWVudF0sXG4gICAgICB4ID0gX2RhdGEkc3RhdGUkcGxhY2VtZW50LngsXG4gICAgICB5ID0gX2RhdGEkc3RhdGUkcGxhY2VtZW50Lnk7XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnggKz0geDtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueSArPSB5O1xuICB9XG5cbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGRhdGE7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdvZmZzZXQnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIGZuOiBvZmZzZXRcbn07IiwiaW1wb3J0IGNvbXB1dGVPZmZzZXRzIGZyb20gXCIuLi91dGlscy9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuXG5mdW5jdGlvbiBwb3BwZXJPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIC8vIE9mZnNldHMgYXJlIHRoZSBhY3R1YWwgcG9zaXRpb24gdGhlIHBvcHBlciBuZWVkcyB0byBoYXZlIHRvIGJlXG4gIC8vIHByb3Blcmx5IHBvc2l0aW9uZWQgbmVhciBpdHMgcmVmZXJlbmNlIGVsZW1lbnRcbiAgLy8gVGhpcyBpcyB0aGUgbW9zdCBiYXNpYyBwbGFjZW1lbnQsIGFuZCB3aWxsIGJlIGFkanVzdGVkIGJ5XG4gIC8vIHRoZSBtb2RpZmllcnMgaW4gdGhlIG5leHQgc3RlcFxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gY29tcHV0ZU9mZnNldHMoe1xuICAgIHJlZmVyZW5jZTogc3RhdGUucmVjdHMucmVmZXJlbmNlLFxuICAgIGVsZW1lbnQ6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3BvcHBlck9mZnNldHMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3JlYWQnLFxuICBmbjogcG9wcGVyT2Zmc2V0cyxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBzdGFydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldEFsdEF4aXMgZnJvbSBcIi4uL3V0aWxzL2dldEFsdEF4aXMuanNcIjtcbmltcG9ydCB7IHdpdGhpbiwgd2l0aGluTWF4Q2xhbXAgfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi4vdXRpbHMvZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5pbXBvcnQgeyBtaW4gYXMgbWF0aE1pbiwgbWF4IGFzIG1hdGhNYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBwcmV2ZW50T3ZlcmZsb3coX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIHZhciBfb3B0aW9ucyRtYWluQXhpcyA9IG9wdGlvbnMubWFpbkF4aXMsXG4gICAgICBjaGVja01haW5BeGlzID0gX29wdGlvbnMkbWFpbkF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRtYWluQXhpcyxcbiAgICAgIF9vcHRpb25zJGFsdEF4aXMgPSBvcHRpb25zLmFsdEF4aXMsXG4gICAgICBjaGVja0FsdEF4aXMgPSBfb3B0aW9ucyRhbHRBeGlzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEF4aXMsXG4gICAgICBib3VuZGFyeSA9IG9wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBvcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXIgPSBvcHRpb25zLnRldGhlcixcbiAgICAgIHRldGhlciA9IF9vcHRpb25zJHRldGhlciA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHRldGhlcixcbiAgICAgIF9vcHRpb25zJHRldGhlck9mZnNldCA9IG9wdGlvbnMudGV0aGVyT2Zmc2V0LFxuICAgICAgdGV0aGVyT2Zmc2V0ID0gX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkdGV0aGVyT2Zmc2V0O1xuICB2YXIgb3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgIGFsdEJvdW5kYXJ5OiBhbHRCb3VuZGFyeVxuICB9KTtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9ICF2YXJpYXRpb247XG4gIHZhciBtYWluQXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGFsdEF4aXMgPSBnZXRBbHRBeGlzKG1haW5BeGlzKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIHRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldCA9PT0gJ2Z1bmN0aW9uJyA/IHRldGhlck9mZnNldChPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHRldGhlck9mZnNldDtcbiAgdmFyIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXRWYWx1ZSA9PT0gJ251bWJlcicgPyB7XG4gICAgbWFpbkF4aXM6IHRldGhlck9mZnNldFZhbHVlLFxuICAgIGFsdEF4aXM6IHRldGhlck9mZnNldFZhbHVlXG4gIH0gOiBPYmplY3QuYXNzaWduKHtcbiAgICBtYWluQXhpczogMCxcbiAgICBhbHRBeGlzOiAwXG4gIH0sIHRldGhlck9mZnNldFZhbHVlKTtcbiAgdmFyIG9mZnNldE1vZGlmaWVyU3RhdGUgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldCA/IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0W3N0YXRlLnBsYWNlbWVudF0gOiBudWxsO1xuICB2YXIgZGF0YSA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcblxuICBpZiAoIXBvcHBlck9mZnNldHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQ7XG5cbiAgICB2YXIgbWFpblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgICB2YXIgYWx0U2lkZSA9IG1haW5BeGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICB2YXIgb2Zmc2V0ID0gcG9wcGVyT2Zmc2V0c1ttYWluQXhpc107XG4gICAgdmFyIG1pbiA9IG9mZnNldCArIG92ZXJmbG93W21haW5TaWRlXTtcbiAgICB2YXIgbWF4ID0gb2Zmc2V0IC0gb3ZlcmZsb3dbYWx0U2lkZV07XG4gICAgdmFyIGFkZGl0aXZlID0gdGV0aGVyID8gLXBvcHBlclJlY3RbbGVuXSAvIDIgOiAwO1xuICAgIHZhciBtaW5MZW4gPSB2YXJpYXRpb24gPT09IHN0YXJ0ID8gcmVmZXJlbmNlUmVjdFtsZW5dIDogcG9wcGVyUmVjdFtsZW5dO1xuICAgIHZhciBtYXhMZW4gPSB2YXJpYXRpb24gPT09IHN0YXJ0ID8gLXBvcHBlclJlY3RbbGVuXSA6IC1yZWZlcmVuY2VSZWN0W2xlbl07IC8vIFdlIG5lZWQgdG8gaW5jbHVkZSB0aGUgYXJyb3cgaW4gdGhlIGNhbGN1bGF0aW9uIHNvIHRoZSBhcnJvdyBkb2Vzbid0IGdvXG4gICAgLy8gb3V0c2lkZSB0aGUgcmVmZXJlbmNlIGJvdW5kc1xuXG4gICAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICAgIHZhciBhcnJvd1JlY3QgPSB0ZXRoZXIgJiYgYXJyb3dFbGVtZW50ID8gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpIDoge1xuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuICAgIHZhciBhcnJvd1BhZGRpbmdPYmplY3QgPSBzdGF0ZS5tb2RpZmllcnNEYXRhWydhcnJvdyNwZXJzaXN0ZW50J10gPyBzdGF0ZS5tb2RpZmllcnNEYXRhWydhcnJvdyNwZXJzaXN0ZW50J10ucGFkZGluZyA6IGdldEZyZXNoU2lkZU9iamVjdCgpO1xuICAgIHZhciBhcnJvd1BhZGRpbmdNaW4gPSBhcnJvd1BhZGRpbmdPYmplY3RbbWFpblNpZGVdO1xuICAgIHZhciBhcnJvd1BhZGRpbmdNYXggPSBhcnJvd1BhZGRpbmdPYmplY3RbYWx0U2lkZV07IC8vIElmIHRoZSByZWZlcmVuY2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiB0aGUgYXJyb3cgbGVuZ3RoLCB3ZSBkb24ndCB3YW50XG4gICAgLy8gdG8gaW5jbHVkZSBpdHMgZnVsbCBzaXplIGluIHRoZSBjYWxjdWxhdGlvbi4gSWYgdGhlIHJlZmVyZW5jZSBpcyBzbWFsbFxuICAgIC8vIGFuZCBuZWFyIHRoZSBlZGdlIG9mIGEgYm91bmRhcnksIHRoZSBwb3BwZXIgY2FuIG92ZXJmbG93IGV2ZW4gaWYgdGhlXG4gICAgLy8gcmVmZXJlbmNlIGlzIG5vdCBvdmVyZmxvd2luZyBhcyB3ZWxsIChlLmcuIHZpcnR1YWwgZWxlbWVudHMgd2l0aCBub1xuICAgIC8vIHdpZHRoIG9yIGhlaWdodClcblxuICAgIHZhciBhcnJvd0xlbiA9IHdpdGhpbigwLCByZWZlcmVuY2VSZWN0W2xlbl0sIGFycm93UmVjdFtsZW5dKTtcbiAgICB2YXIgbWluT2Zmc2V0ID0gaXNCYXNlUGxhY2VtZW50ID8gcmVmZXJlbmNlUmVjdFtsZW5dIC8gMiAtIGFkZGl0aXZlIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXMgOiBtaW5MZW4gLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcztcbiAgICB2YXIgbWF4T2Zmc2V0ID0gaXNCYXNlUGxhY2VtZW50ID8gLXJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgKyBhZGRpdGl2ZSArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWF4TGVuICsgYXJyb3dMZW4gKyBhcnJvd1BhZGRpbmdNYXggKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIGFycm93T2Zmc2V0UGFyZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3cgJiYgZ2V0T2Zmc2V0UGFyZW50KHN0YXRlLmVsZW1lbnRzLmFycm93KTtcbiAgICB2YXIgY2xpZW50T2Zmc2V0ID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBtYWluQXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50VG9wIHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRMZWZ0IHx8IDAgOiAwO1xuICAgIHZhciBvZmZzZXRNb2RpZmllclZhbHVlID0gKF9vZmZzZXRNb2RpZmllclN0YXRlJCA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbbWFpbkF4aXNdKSAhPSBudWxsID8gX29mZnNldE1vZGlmaWVyU3RhdGUkIDogMDtcbiAgICB2YXIgdGV0aGVyTWluID0gb2Zmc2V0ICsgbWluT2Zmc2V0IC0gb2Zmc2V0TW9kaWZpZXJWYWx1ZSAtIGNsaWVudE9mZnNldDtcbiAgICB2YXIgdGV0aGVyTWF4ID0gb2Zmc2V0ICsgbWF4T2Zmc2V0IC0gb2Zmc2V0TW9kaWZpZXJWYWx1ZTtcbiAgICB2YXIgcHJldmVudGVkT2Zmc2V0ID0gd2l0aGluKHRldGhlciA/IG1hdGhNaW4obWluLCB0ZXRoZXJNaW4pIDogbWluLCBvZmZzZXQsIHRldGhlciA/IG1hdGhNYXgobWF4LCB0ZXRoZXJNYXgpIDogbWF4KTtcbiAgICBwb3BwZXJPZmZzZXRzW21haW5BeGlzXSA9IHByZXZlbnRlZE9mZnNldDtcbiAgICBkYXRhW21haW5BeGlzXSA9IHByZXZlbnRlZE9mZnNldCAtIG9mZnNldDtcbiAgfVxuXG4gIGlmIChjaGVja0FsdEF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkMjtcblxuICAgIHZhciBfbWFpblNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gdG9wIDogbGVmdDtcblxuICAgIHZhciBfYWx0U2lkZSA9IG1haW5BeGlzID09PSAneCcgPyBib3R0b20gOiByaWdodDtcblxuICAgIHZhciBfb2Zmc2V0ID0gcG9wcGVyT2Zmc2V0c1thbHRBeGlzXTtcblxuICAgIHZhciBfbGVuID0gYWx0QXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgdmFyIF9taW4gPSBfb2Zmc2V0ICsgb3ZlcmZsb3dbX21haW5TaWRlXTtcblxuICAgIHZhciBfbWF4ID0gX29mZnNldCAtIG92ZXJmbG93W19hbHRTaWRlXTtcblxuICAgIHZhciBpc09yaWdpblNpZGUgPSBbdG9wLCBsZWZ0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpICE9PSAtMTtcblxuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyID0gb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb2Zmc2V0TW9kaWZpZXJTdGF0ZVthbHRBeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJDIgOiAwO1xuXG4gICAgdmFyIF90ZXRoZXJNaW4gPSBpc09yaWdpblNpZGUgPyBfbWluIDogX29mZnNldCAtIHJlZmVyZW5jZVJlY3RbX2xlbl0gLSBwb3BwZXJSZWN0W19sZW5dIC0gX29mZnNldE1vZGlmaWVyVmFsdWUgKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUuYWx0QXhpcztcblxuICAgIHZhciBfdGV0aGVyTWF4ID0gaXNPcmlnaW5TaWRlID8gX29mZnNldCArIHJlZmVyZW5jZVJlY3RbX2xlbl0gKyBwb3BwZXJSZWN0W19sZW5dIC0gX29mZnNldE1vZGlmaWVyVmFsdWUgLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUuYWx0QXhpcyA6IF9tYXg7XG5cbiAgICB2YXIgX3ByZXZlbnRlZE9mZnNldCA9IHRldGhlciAmJiBpc09yaWdpblNpZGUgPyB3aXRoaW5NYXhDbGFtcChfdGV0aGVyTWluLCBfb2Zmc2V0LCBfdGV0aGVyTWF4KSA6IHdpdGhpbih0ZXRoZXIgPyBfdGV0aGVyTWluIDogX21pbiwgX29mZnNldCwgdGV0aGVyID8gX3RldGhlck1heCA6IF9tYXgpO1xuXG4gICAgcG9wcGVyT2Zmc2V0c1thbHRBeGlzXSA9IF9wcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVthbHRBeGlzXSA9IF9wcmV2ZW50ZWRPZmZzZXQgLSBfb2Zmc2V0O1xuICB9XG5cbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGRhdGE7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogcHJldmVudE92ZXJmbG93LFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddXG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZVNjcm9sbCBmcm9tIFwiLi9nZXROb2RlU2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudFNjYWxlZChlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IHJvdW5kKHJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxO1xuICB2YXIgc2NhbGVZID0gcm91bmQocmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMTtcbiAgcmV0dXJuIHNjYWxlWCAhPT0gMSB8fCBzY2FsZVkgIT09IDE7XG59IC8vIFJldHVybnMgdGhlIGNvbXBvc2l0ZSByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC5cbi8vIENvbXBvc2l0ZSBtZWFucyBpdCB0YWtlcyBpbnRvIGFjY291bnQgdHJhbnNmb3JtcyBhcyB3ZWxsIGFzIGxheW91dC5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wb3NpdGVSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnQsIGlzRml4ZWQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudElzU2NhbGVkID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzRWxlbWVudFNjYWxlZChvZmZzZXRQYXJlbnQpO1xuICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnRJc1NjYWxlZCwgaXNGaXhlZCk7XG4gIHZhciBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgdmFyIG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMDc4XG4gICAgaXNTY3JvbGxQYXJlbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cblxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIG9mZnNldHMgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlKTtcbiAgICAgIG9mZnNldHMueCArPSBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSArPSBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufSIsImltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRIVE1MRWxlbWVudFNjcm9sbCBmcm9tIFwiLi9nZXRIVE1MRWxlbWVudFNjcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxFbGVtZW50U2Nyb2xsKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCB7IG1vZGlmaWVyUGhhc2VzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIHNvdXJjZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDk4NzUyNTVcblxuZnVuY3Rpb24gb3JkZXIobW9kaWZpZXJzKSB7XG4gIHZhciBtYXAgPSBuZXcgTWFwKCk7XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIG1hcC5zZXQobW9kaWZpZXIubmFtZSwgbW9kaWZpZXIpO1xuICB9KTsgLy8gT24gdmlzaXRpbmcgb2JqZWN0LCBjaGVjayBmb3IgaXRzIGRlcGVuZGVuY2llcyBhbmQgdmlzaXQgdGhlbSByZWN1cnNpdmVseVxuXG4gIGZ1bmN0aW9uIHNvcnQobW9kaWZpZXIpIHtcbiAgICB2aXNpdGVkLmFkZChtb2RpZmllci5uYW1lKTtcbiAgICB2YXIgcmVxdWlyZXMgPSBbXS5jb25jYXQobW9kaWZpZXIucmVxdWlyZXMgfHwgW10sIG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMgfHwgW10pO1xuICAgIHJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKGRlcCkge1xuICAgICAgaWYgKCF2aXNpdGVkLmhhcyhkZXApKSB7XG4gICAgICAgIHZhciBkZXBNb2RpZmllciA9IG1hcC5nZXQoZGVwKTtcblxuICAgICAgICBpZiAoZGVwTW9kaWZpZXIpIHtcbiAgICAgICAgICBzb3J0KGRlcE1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJlc3VsdC5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIGlmICghdmlzaXRlZC5oYXMobW9kaWZpZXIubmFtZSkpIHtcbiAgICAgIC8vIGNoZWNrIGZvciB2aXNpdGVkIG9iamVjdFxuICAgICAgc29ydChtb2RpZmllcik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3JkZXJNb2RpZmllcnMobW9kaWZpZXJzKSB7XG4gIC8vIG9yZGVyIGJhc2VkIG9uIGRlcGVuZGVuY2llc1xuICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyKG1vZGlmaWVycyk7IC8vIG9yZGVyIGJhc2VkIG9uIHBoYXNlXG5cbiAgcmV0dXJuIG1vZGlmaWVyUGhhc2VzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwaGFzZSkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgcmV0dXJuIG1vZGlmaWVyLnBoYXNlID09PSBwaGFzZTtcbiAgICB9KSk7XG4gIH0sIFtdKTtcbn0iLCJpbXBvcnQgZ2V0Q29tcG9zaXRlUmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcG9zaXRlUmVjdC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBvcmRlck1vZGlmaWVycyBmcm9tIFwiLi91dGlscy9vcmRlck1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gXCIuL3V0aWxzL2RlYm91bmNlLmpzXCI7XG5pbXBvcnQgdmFsaWRhdGVNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvdmFsaWRhdGVNb2RpZmllcnMuanNcIjtcbmltcG9ydCB1bmlxdWVCeSBmcm9tIFwiLi91dGlscy91bmlxdWVCeS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IG1lcmdlQnlOYW1lIGZyb20gXCIuL3V0aWxzL21lcmdlQnlOYW1lLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgeyBhdXRvIH0gZnJvbSBcIi4vZW51bXMuanNcIjtcbnZhciBJTlZBTElEX0VMRU1FTlRfRVJST1IgPSAnUG9wcGVyOiBJbnZhbGlkIHJlZmVyZW5jZSBvciBwb3BwZXIgYXJndW1lbnQgcHJvdmlkZWQuIFRoZXkgbXVzdCBiZSBlaXRoZXIgYSBET00gZWxlbWVudCBvciB2aXJ0dWFsIGVsZW1lbnQuJztcbnZhciBJTkZJTklURV9MT09QX0VSUk9SID0gJ1BvcHBlcjogQW4gaW5maW5pdGUgbG9vcCBpbiB0aGUgbW9kaWZpZXJzIGN5Y2xlIGhhcyBiZWVuIGRldGVjdGVkISBUaGUgY3ljbGUgaGFzIGJlZW4gaW50ZXJydXB0ZWQgdG8gcHJldmVudCBhIGJyb3dzZXIgY3Jhc2guJztcbnZhciBERUZBVUxUX09QVElPTlMgPSB7XG4gIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1vZGlmaWVyczogW10sXG4gIHN0cmF0ZWd5OiAnYWJzb2x1dGUnXG59O1xuXG5mdW5jdGlvbiBhcmVWYWxpZEVsZW1lbnRzKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuICFhcmdzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gIShlbGVtZW50ICYmIHR5cGVvZiBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9PT0gJ2Z1bmN0aW9uJyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9wcGVyR2VuZXJhdG9yKGdlbmVyYXRvck9wdGlvbnMpIHtcbiAgaWYgKGdlbmVyYXRvck9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIGdlbmVyYXRvck9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfZ2VuZXJhdG9yT3B0aW9ucyA9IGdlbmVyYXRvck9wdGlvbnMsXG4gICAgICBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0TW9kaWZpZXJzLFxuICAgICAgZGVmYXVsdE1vZGlmaWVycyA9IF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9PT0gdm9pZCAwID8gW10gOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYsXG4gICAgICBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE9wdGlvbnMsXG4gICAgICBkZWZhdWx0T3B0aW9ucyA9IF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPT09IHZvaWQgMCA/IERFRkFVTFRfT1BUSU9OUyA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZjI7XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVQb3BwZXIocmVmZXJlbmNlLCBwb3BwZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgICBvcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgfVxuXG4gICAgdmFyIHN0YXRlID0ge1xuICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgIG9yZGVyZWRNb2RpZmllcnM6IFtdLFxuICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCBkZWZhdWx0T3B0aW9ucyksXG4gICAgICBtb2RpZmllcnNEYXRhOiB7fSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlLFxuICAgICAgICBwb3BwZXI6IHBvcHBlclxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgc3R5bGVzOiB7fVxuICAgIH07XG4gICAgdmFyIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB2YXIgaXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB2YXIgaW5zdGFuY2UgPSB7XG4gICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICBzZXRPcHRpb25zOiBmdW5jdGlvbiBzZXRPcHRpb25zKHNldE9wdGlvbnNBY3Rpb24pIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2V0T3B0aW9uc0FjdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHNldE9wdGlvbnNBY3Rpb24oc3RhdGUub3B0aW9ucykgOiBzZXRPcHRpb25zQWN0aW9uO1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHN0YXRlLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0T3B0aW9ucywgc3RhdGUub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgIHN0YXRlLnNjcm9sbFBhcmVudHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBpc0VsZW1lbnQocmVmZXJlbmNlKSA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZSkgOiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIDogW10sXG4gICAgICAgICAgcG9wcGVyOiBsaXN0U2Nyb2xsUGFyZW50cyhwb3BwZXIpXG4gICAgICAgIH07IC8vIE9yZGVycyB0aGUgbW9kaWZpZXJzIGJhc2VkIG9uIHRoZWlyIGRlcGVuZGVuY2llcyBhbmQgYHBoYXNlYFxuICAgICAgICAvLyBwcm9wZXJ0aWVzXG5cbiAgICAgICAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlck1vZGlmaWVycyhtZXJnZUJ5TmFtZShbXS5jb25jYXQoZGVmYXVsdE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpKSk7IC8vIFN0cmlwIG91dCBkaXNhYmxlZCBtb2RpZmllcnNcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICByZXR1cm4gbS5lbmFibGVkO1xuICAgICAgICB9KTsgLy8gVmFsaWRhdGUgdGhlIHByb3ZpZGVkIG1vZGlmaWVycyBzbyB0aGF0IHRoZSBjb25zdW1lciB3aWxsIGdldCB3YXJuZWRcbiAgICAgICAgLy8gaWYgb25lIG9mIHRoZSBtb2RpZmllcnMgaXMgaW52YWxpZCBmb3IgYW55IHJlYXNvblxuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICB2YXIgbW9kaWZpZXJzID0gdW5pcXVlQnkoW10uY29uY2F0KG9yZGVyZWRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdmFsaWRhdGVNb2RpZmllcnMobW9kaWZpZXJzKTtcblxuICAgICAgICAgIGlmIChnZXRCYXNlUGxhY2VtZW50KHN0YXRlLm9wdGlvbnMucGxhY2VtZW50KSA9PT0gYXV0bykge1xuICAgICAgICAgICAgdmFyIGZsaXBNb2RpZmllciA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZmluZChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmMi5uYW1lO1xuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gJ2ZsaXAnO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghZmxpcE1vZGlmaWVyKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXV0b1wiIHBsYWNlbWVudHMgcmVxdWlyZSB0aGUgXCJmbGlwXCIgbW9kaWZpZXIgYmUnLCAncHJlc2VudCBhbmQgZW5hYmxlZCB0byB3b3JrLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShwb3BwZXIpLFxuICAgICAgICAgICAgICBtYXJnaW5Ub3AgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Ub3AsXG4gICAgICAgICAgICAgIG1hcmdpblJpZ2h0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luUmlnaHQsXG4gICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgbWFyZ2luTGVmdCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpbkxlZnQ7IC8vIFdlIG5vIGxvbmdlciB0YWtlIGludG8gYWNjb3VudCBgbWFyZ2luc2Agb24gdGhlIHBvcHBlciwgYW5kIGl0IGNhblxuICAgICAgICAgIC8vIGNhdXNlIGJ1Z3Mgd2l0aCBwb3NpdGlvbmluZywgc28gd2UnbGwgd2FybiB0aGUgY29uc3VtZXJcblxuXG4gICAgICAgICAgaWYgKFttYXJnaW5Ub3AsIG1hcmdpblJpZ2h0LCBtYXJnaW5Cb3R0b20sIG1hcmdpbkxlZnRdLnNvbWUoZnVuY3Rpb24gKG1hcmdpbikge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobWFyZ2luKTtcbiAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBDU1MgXCJtYXJnaW5cIiBzdHlsZXMgY2Fubm90IGJlIHVzZWQgdG8gYXBwbHkgcGFkZGluZycsICdiZXR3ZWVuIHRoZSBwb3BwZXIgYW5kIGl0cyByZWZlcmVuY2UgZWxlbWVudCBvciBib3VuZGFyeS4nLCAnVG8gcmVwbGljYXRlIG1hcmdpbiwgdXNlIHRoZSBgb2Zmc2V0YCBtb2RpZmllciwgYXMgd2VsbCBhcycsICd0aGUgYHBhZGRpbmdgIG9wdGlvbiBpbiB0aGUgYHByZXZlbnRPdmVyZmxvd2AgYW5kIGBmbGlwYCcsICdtb2RpZmllcnMuJ10uam9pbignICcpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBydW5Nb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnVwZGF0ZSgpO1xuICAgICAgfSxcbiAgICAgIC8vIFN5bmMgdXBkYXRlIOKAkyBpdCB3aWxsIGFsd2F5cyBiZSBleGVjdXRlZCwgZXZlbiBpZiBub3QgbmVjZXNzYXJ5LiBUaGlzXG4gICAgICAvLyBpcyB1c2VmdWwgZm9yIGxvdyBmcmVxdWVuY3kgdXBkYXRlcyB3aGVyZSBzeW5jIGJlaGF2aW9yIHNpbXBsaWZpZXMgdGhlXG4gICAgICAvLyBsb2dpYy5cbiAgICAgIC8vIEZvciBoaWdoIGZyZXF1ZW5jeSB1cGRhdGVzIChlLmcuIGByZXNpemVgIGFuZCBgc2Nyb2xsYCBldmVudHMpLCBhbHdheXNcbiAgICAgIC8vIHByZWZlciB0aGUgYXN5bmMgUG9wcGVyI3VwZGF0ZSBtZXRob2RcbiAgICAgIGZvcmNlVXBkYXRlOiBmdW5jdGlvbiBmb3JjZVVwZGF0ZSgpIHtcbiAgICAgICAgaWYgKGlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9zdGF0ZSRlbGVtZW50cyA9IHN0YXRlLmVsZW1lbnRzLFxuICAgICAgICAgICAgcmVmZXJlbmNlID0gX3N0YXRlJGVsZW1lbnRzLnJlZmVyZW5jZSxcbiAgICAgICAgICAgIHBvcHBlciA9IF9zdGF0ZSRlbGVtZW50cy5wb3BwZXI7IC8vIERvbid0IHByb2NlZWQgaWYgYHJlZmVyZW5jZWAgb3IgYHBvcHBlcmAgYXJlIG5vdCB2YWxpZCBlbGVtZW50c1xuICAgICAgICAvLyBhbnltb3JlXG5cbiAgICAgICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSU5WQUxJRF9FTEVNRU5UX0VSUk9SKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gU3RvcmUgdGhlIHJlZmVyZW5jZSBhbmQgcG9wcGVyIHJlY3RzIHRvIGJlIHJlYWQgYnkgbW9kaWZpZXJzXG5cblxuICAgICAgICBzdGF0ZS5yZWN0cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGdldENvbXBvc2l0ZVJlY3QocmVmZXJlbmNlLCBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKSwgc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJyksXG4gICAgICAgICAgcG9wcGVyOiBnZXRMYXlvdXRSZWN0KHBvcHBlcilcbiAgICAgICAgfTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gcmVzZXQgdGhlIGN1cnJlbnQgdXBkYXRlIGN5Y2xlLiBUaGVcbiAgICAgICAgLy8gbW9zdCBjb21tb24gdXNlIGNhc2UgZm9yIHRoaXMgaXMgdGhlIGBmbGlwYCBtb2RpZmllciBjaGFuZ2luZyB0aGVcbiAgICAgICAgLy8gcGxhY2VtZW50LCB3aGljaCB0aGVuIG5lZWRzIHRvIHJlLXJ1biBhbGwgdGhlIG1vZGlmaWVycywgYmVjYXVzZSB0aGVcbiAgICAgICAgLy8gbG9naWMgd2FzIHByZXZpb3VzbHkgcmFuIGZvciB0aGUgcHJldmlvdXMgcGxhY2VtZW50IGFuZCBpcyB0aGVyZWZvcmVcbiAgICAgICAgLy8gc3RhbGUvaW5jb3JyZWN0XG5cbiAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgc3RhdGUucGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7IC8vIE9uIGVhY2ggdXBkYXRlIGN5Y2xlLCB0aGUgYG1vZGlmaWVyc0RhdGFgIHByb3BlcnR5IGZvciBlYWNoIG1vZGlmaWVyXG4gICAgICAgIC8vIGlzIGZpbGxlZCB3aXRoIHRoZSBpbml0aWFsIGRhdGEgc3BlY2lmaWVkIGJ5IHRoZSBtb2RpZmllci4gVGhpcyBtZWFuc1xuICAgICAgICAvLyBpdCBkb2Vzbid0IHBlcnNpc3QgYW5kIGlzIGZyZXNoIG9uIGVhY2ggdXBkYXRlLlxuICAgICAgICAvLyBUbyBlbnN1cmUgcGVyc2lzdGVudCBkYXRhLCB1c2UgYCR7bmFtZX0jcGVyc2lzdGVudGBcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlLm1vZGlmaWVyc0RhdGFbbW9kaWZpZXIubmFtZV0gPSBPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllci5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX2RlYnVnX2xvb3BzX18gPSAwO1xuXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIF9fZGVidWdfbG9vcHNfXyArPSAxO1xuXG4gICAgICAgICAgICBpZiAoX19kZWJ1Z19sb29wc19fID4gMTAwKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSU5GSU5JVEVfTE9PUF9FUlJPUik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgICAgIGluZGV4ID0gLTE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX3N0YXRlJG9yZGVyZWRNb2RpZmllID0gc3RhdGUub3JkZXJlZE1vZGlmaWVyc1tpbmRleF0sXG4gICAgICAgICAgICAgIGZuID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLmZuLFxuICAgICAgICAgICAgICBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm9wdGlvbnMsXG4gICAgICAgICAgICAgIF9vcHRpb25zID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9PT0gdm9pZCAwID8ge30gOiBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyLFxuICAgICAgICAgICAgICBuYW1lID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm5hbWU7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGZuKHtcbiAgICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgICBvcHRpb25zOiBfb3B0aW9ucyxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlXG4gICAgICAgICAgICB9KSB8fCBzdGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBBc3luYyBhbmQgb3B0aW1pc3RpY2FsbHkgb3B0aW1pemVkIHVwZGF0ZSDigJMgaXQgd2lsbCBub3QgYmUgZXhlY3V0ZWQgaWZcbiAgICAgIC8vIG5vdCBuZWNlc3NhcnkgKGRlYm91bmNlZCB0byBydW4gYXQgbW9zdCBvbmNlLXBlci10aWNrKVxuICAgICAgdXBkYXRlOiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgIGluc3RhbmNlLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgcmVzb2x2ZShzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIGlzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9XG5cbiAgICBpbnN0YW5jZS5zZXRPcHRpb25zKG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICBpZiAoIWlzRGVzdHJveWVkICYmIG9wdGlvbnMub25GaXJzdFVwZGF0ZSkge1xuICAgICAgICBvcHRpb25zLm9uRmlyc3RVcGRhdGUoc3RhdGUpO1xuICAgICAgfVxuICAgIH0pOyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byBleGVjdXRlIGFyYml0cmFyeSBjb2RlIGJlZm9yZSB0aGUgZmlyc3RcbiAgICAvLyB1cGRhdGUgY3ljbGUgcnVucy4gVGhleSB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSB1cGRhdGVcbiAgICAvLyBjeWNsZS4gVGhpcyBpcyB1c2VmdWwgd2hlbiBhIG1vZGlmaWVyIGFkZHMgc29tZSBwZXJzaXN0ZW50IGRhdGEgdGhhdFxuICAgIC8vIG90aGVyIG1vZGlmaWVycyBuZWVkIHRvIHVzZSwgYnV0IHRoZSBtb2RpZmllciBpcyBydW4gYWZ0ZXIgdGhlIGRlcGVuZGVudFxuICAgIC8vIG9uZS5cblxuICAgIGZ1bmN0aW9uIHJ1bk1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmMy5uYW1lLFxuICAgICAgICAgICAgX3JlZjMkb3B0aW9ucyA9IF9yZWYzLm9wdGlvbnMsXG4gICAgICAgICAgICBvcHRpb25zID0gX3JlZjMkb3B0aW9ucyA9PT0gdm9pZCAwID8ge30gOiBfcmVmMyRvcHRpb25zLFxuICAgICAgICAgICAgZWZmZWN0ID0gX3JlZjMuZWZmZWN0O1xuXG4gICAgICAgIGlmICh0eXBlb2YgZWZmZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdmFyIGNsZWFudXBGbiA9IGVmZmVjdCh7XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdmFyIG5vb3BGbiA9IGZ1bmN0aW9uIG5vb3BGbigpIHt9O1xuXG4gICAgICAgICAgZWZmZWN0Q2xlYW51cEZucy5wdXNoKGNsZWFudXBGbiB8fCBub29wRm4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgZWZmZWN0Q2xlYW51cEZucy5mb3JFYWNoKGZ1bmN0aW9uIChmbikge1xuICAgICAgICByZXR1cm4gZm4oKTtcbiAgICAgIH0pO1xuICAgICAgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcbn1cbmV4cG9ydCB2YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcigpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGRldGVjdE92ZXJmbG93IH07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IiwiaW1wb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdyB9IGZyb20gXCIuL2NyZWF0ZVBvcHBlci5qc1wiO1xuaW1wb3J0IGV2ZW50TGlzdGVuZXJzIGZyb20gXCIuL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qc1wiO1xuaW1wb3J0IHBvcHBlck9mZnNldHMgZnJvbSBcIi4vbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanNcIjtcbmltcG9ydCBjb21wdXRlU3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzXCI7XG5pbXBvcnQgYXBwbHlTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzXCI7XG52YXIgZGVmYXVsdE1vZGlmaWVycyA9IFtldmVudExpc3RlbmVycywgcG9wcGVyT2Zmc2V0cywgY29tcHV0ZVN0eWxlcywgYXBwbHlTdHlsZXNdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsiLCIvKiFcbiAgKiBCb290c3RyYXAgdjUuMi4wIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxuICAqIENvcHlyaWdodCAyMDExLTIwMjIgVGhlIEJvb3RzdHJhcCBBdXRob3JzIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvZ3JhcGhzL2NvbnRyaWJ1dG9ycylcbiAgKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAgKi9cbmltcG9ydCAqIGFzIFBvcHBlciBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4wKTogdXRpbC9pbmRleC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5jb25zdCBNQVhfVUlEID0gMTAwMDAwMDtcbmNvbnN0IE1JTExJU0VDT05EU19NVUxUSVBMSUVSID0gMTAwMDtcbmNvbnN0IFRSQU5TSVRJT05fRU5EID0gJ3RyYW5zaXRpb25lbmQnOyAvLyBTaG91dC1vdXQgQW5ndXMgQ3JvbGwgKGh0dHBzOi8vZ29vLmdsL3B4d1FHcClcblxuY29uc3QgdG9UeXBlID0gb2JqZWN0ID0+IHtcbiAgaWYgKG9iamVjdCA9PT0gbnVsbCB8fCBvYmplY3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtvYmplY3R9YDtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KS5tYXRjaCgvXFxzKFthLXpdKykvaSlbMV0udG9Mb3dlckNhc2UoKTtcbn07XG4vKipcbiAqIFB1YmxpYyBVdGlsIEFQSVxuICovXG5cblxuY29uc3QgZ2V0VUlEID0gcHJlZml4ID0+IHtcbiAgZG8ge1xuICAgIHByZWZpeCArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBNQVhfVUlEKTtcbiAgfSB3aGlsZSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJlZml4KSk7XG5cbiAgcmV0dXJuIHByZWZpeDtcbn07XG5cbmNvbnN0IGdldFNlbGVjdG9yID0gZWxlbWVudCA9PiB7XG4gIGxldCBzZWxlY3RvciA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLXRhcmdldCcpO1xuXG4gIGlmICghc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09ICcjJykge1xuICAgIGxldCBocmVmQXR0cmlidXRlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTsgLy8gVGhlIG9ubHkgdmFsaWQgY29udGVudCB0aGF0IGNvdWxkIGRvdWJsZSBhcyBhIHNlbGVjdG9yIGFyZSBJRHMgb3IgY2xhc3NlcyxcbiAgICAvLyBzbyBldmVyeXRoaW5nIHN0YXJ0aW5nIHdpdGggYCNgIG9yIGAuYC4gSWYgYSBcInJlYWxcIiBVUkwgaXMgdXNlZCBhcyB0aGUgc2VsZWN0b3IsXG4gICAgLy8gYGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JgIHdpbGwgcmlnaHRmdWxseSBjb21wbGFpbiBpdCBpcyBpbnZhbGlkLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzMyMjczXG5cbiAgICBpZiAoIWhyZWZBdHRyaWJ1dGUgfHwgIWhyZWZBdHRyaWJ1dGUuaW5jbHVkZXMoJyMnKSAmJiAhaHJlZkF0dHJpYnV0ZS5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gLy8gSnVzdCBpbiBjYXNlIHNvbWUgQ01TIHB1dHMgb3V0IGEgZnVsbCBVUkwgd2l0aCB0aGUgYW5jaG9yIGFwcGVuZGVkXG5cblxuICAgIGlmIChocmVmQXR0cmlidXRlLmluY2x1ZGVzKCcjJykgJiYgIWhyZWZBdHRyaWJ1dGUuc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICBocmVmQXR0cmlidXRlID0gYCMke2hyZWZBdHRyaWJ1dGUuc3BsaXQoJyMnKVsxXX1gO1xuICAgIH1cblxuICAgIHNlbGVjdG9yID0gaHJlZkF0dHJpYnV0ZSAmJiBocmVmQXR0cmlidXRlICE9PSAnIycgPyBocmVmQXR0cmlidXRlLnRyaW0oKSA6IG51bGw7XG4gIH1cblxuICByZXR1cm4gc2VsZWN0b3I7XG59O1xuXG5jb25zdCBnZXRTZWxlY3RvckZyb21FbGVtZW50ID0gZWxlbWVudCA9PiB7XG4gIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3IoZWxlbWVudCk7XG5cbiAgaWYgKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpID8gc2VsZWN0b3IgOiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBnZXRFbGVtZW50RnJvbVNlbGVjdG9yID0gZWxlbWVudCA9PiB7XG4gIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3IoZWxlbWVudCk7XG4gIHJldHVybiBzZWxlY3RvciA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpIDogbnVsbDtcbn07XG5cbmNvbnN0IGdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50ID0gZWxlbWVudCA9PiB7XG4gIGlmICghZWxlbWVudCkge1xuICAgIHJldHVybiAwO1xuICB9IC8vIEdldCB0cmFuc2l0aW9uLWR1cmF0aW9uIG9mIHRoZSBlbGVtZW50XG5cblxuICBsZXQge1xuICAgIHRyYW5zaXRpb25EdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uRGVsYXlcbiAgfSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICBjb25zdCBmbG9hdFRyYW5zaXRpb25EdXJhdGlvbiA9IE51bWJlci5wYXJzZUZsb2F0KHRyYW5zaXRpb25EdXJhdGlvbik7XG4gIGNvbnN0IGZsb2F0VHJhbnNpdGlvbkRlbGF5ID0gTnVtYmVyLnBhcnNlRmxvYXQodHJhbnNpdGlvbkRlbGF5KTsgLy8gUmV0dXJuIDAgaWYgZWxlbWVudCBvciB0cmFuc2l0aW9uIGR1cmF0aW9uIGlzIG5vdCBmb3VuZFxuXG4gIGlmICghZmxvYXRUcmFuc2l0aW9uRHVyYXRpb24gJiYgIWZsb2F0VHJhbnNpdGlvbkRlbGF5KSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gLy8gSWYgbXVsdGlwbGUgZHVyYXRpb25zIGFyZSBkZWZpbmVkLCB0YWtlIHRoZSBmaXJzdFxuXG5cbiAgdHJhbnNpdGlvbkR1cmF0aW9uID0gdHJhbnNpdGlvbkR1cmF0aW9uLnNwbGl0KCcsJylbMF07XG4gIHRyYW5zaXRpb25EZWxheSA9IHRyYW5zaXRpb25EZWxheS5zcGxpdCgnLCcpWzBdO1xuICByZXR1cm4gKE51bWJlci5wYXJzZUZsb2F0KHRyYW5zaXRpb25EdXJhdGlvbikgKyBOdW1iZXIucGFyc2VGbG9hdCh0cmFuc2l0aW9uRGVsYXkpKSAqIE1JTExJU0VDT05EU19NVUxUSVBMSUVSO1xufTtcblxuY29uc3QgdHJpZ2dlclRyYW5zaXRpb25FbmQgPSBlbGVtZW50ID0+IHtcbiAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChUUkFOU0lUSU9OX0VORCkpO1xufTtcblxuY29uc3QgaXNFbGVtZW50ID0gb2JqZWN0ID0+IHtcbiAgaWYgKCFvYmplY3QgfHwgdHlwZW9mIG9iamVjdCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iamVjdC5qcXVlcnkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgb2JqZWN0ID0gb2JqZWN0WzBdO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVvZiBvYmplY3Qubm9kZVR5cGUgIT09ICd1bmRlZmluZWQnO1xufTtcblxuY29uc3QgZ2V0RWxlbWVudCA9IG9iamVjdCA9PiB7XG4gIC8vIGl0J3MgYSBqUXVlcnkgb2JqZWN0IG9yIGEgbm9kZSBlbGVtZW50XG4gIGlmIChpc0VsZW1lbnQob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3QuanF1ZXJ5ID8gb2JqZWN0WzBdIDogb2JqZWN0O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdzdHJpbmcnICYmIG9iamVjdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iob2JqZWN0KTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuY29uc3QgaXNWaXNpYmxlID0gZWxlbWVudCA9PiB7XG4gIGlmICghaXNFbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBlbGVtZW50SXNWaXNpYmxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCd2aXNpYmlsaXR5JykgPT09ICd2aXNpYmxlJzsgLy8gSGFuZGxlIGBkZXRhaWxzYCBlbGVtZW50IGFzIGl0cyBjb250ZW50IG1heSBmYWxzaWUgYXBwZWFyIHZpc2libGUgd2hlbiBpdCBpcyBjbG9zZWRcblxuICBjb25zdCBjbG9zZWREZXRhaWxzID0gZWxlbWVudC5jbG9zZXN0KCdkZXRhaWxzOm5vdChbb3Blbl0pJyk7XG5cbiAgaWYgKCFjbG9zZWREZXRhaWxzKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRJc1Zpc2libGU7XG4gIH1cblxuICBpZiAoY2xvc2VkRGV0YWlscyAhPT0gZWxlbWVudCkge1xuICAgIGNvbnN0IHN1bW1hcnkgPSBlbGVtZW50LmNsb3Nlc3QoJ3N1bW1hcnknKTtcblxuICAgIGlmIChzdW1tYXJ5ICYmIHN1bW1hcnkucGFyZW50Tm9kZSAhPT0gY2xvc2VkRGV0YWlscykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzdW1tYXJ5ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnRJc1Zpc2libGU7XG59O1xuXG5jb25zdCBpc0Rpc2FibGVkID0gZWxlbWVudCA9PiB7XG4gIGlmICghZWxlbWVudCB8fCBlbGVtZW50Lm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkaXNhYmxlZCcpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGVsZW1lbnQuZGlzYWJsZWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZGlzYWJsZWQ7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgIT09ICdmYWxzZSc7XG59O1xuXG5jb25zdCBmaW5kU2hhZG93Um9vdCA9IGVsZW1lbnQgPT4ge1xuICBpZiAoIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hdHRhY2hTaGFkb3cpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyBDYW4gZmluZCB0aGUgc2hhZG93IHJvb3Qgb3RoZXJ3aXNlIGl0J2xsIHJldHVybiB0aGUgZG9jdW1lbnRcblxuXG4gIGlmICh0eXBlb2YgZWxlbWVudC5nZXRSb290Tm9kZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHJvb3QgPSBlbGVtZW50LmdldFJvb3ROb2RlKCk7XG4gICAgcmV0dXJuIHJvb3QgaW5zdGFuY2VvZiBTaGFkb3dSb290ID8gcm9vdCA6IG51bGw7XG4gIH1cblxuICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfSAvLyB3aGVuIHdlIGRvbid0IGZpbmQgYSBzaGFkb3cgcm9vdFxuXG5cbiAgaWYgKCFlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBmaW5kU2hhZG93Um9vdChlbGVtZW50LnBhcmVudE5vZGUpO1xufTtcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuLyoqXG4gKiBUcmljayB0byByZXN0YXJ0IGFuIGVsZW1lbnQncyBhbmltYXRpb25cbiAqXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJuIHZvaWRcbiAqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LmNoYXJpc3RoZW8uaW8vYmxvZy8yMDIxLzAyL3Jlc3RhcnQtYS1jc3MtYW5pbWF0aW9uLXdpdGgtamF2YXNjcmlwdC8jcmVzdGFydGluZy1hLWNzcy1hbmltYXRpb25cbiAqL1xuXG5cbmNvbnN0IHJlZmxvdyA9IGVsZW1lbnQgPT4ge1xuICBlbGVtZW50Lm9mZnNldEhlaWdodDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcbn07XG5cbmNvbnN0IGdldGpRdWVyeSA9ICgpID0+IHtcbiAgaWYgKHdpbmRvdy5qUXVlcnkgJiYgIWRvY3VtZW50LmJvZHkuaGFzQXR0cmlidXRlKCdkYXRhLWJzLW5vLWpxdWVyeScpKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5qUXVlcnk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmNvbnN0IERPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MgPSBbXTtcblxuY29uc3Qgb25ET01Db250ZW50TG9hZGVkID0gY2FsbGJhY2sgPT4ge1xuICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgLy8gYWRkIGxpc3RlbmVyIG9uIHRoZSBmaXJzdCBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGluIGxvYWRpbmcgc3RhdGVcbiAgICBpZiAoIURPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MubGVuZ3RoKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIERPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MpIHtcbiAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBET01Db250ZW50TG9hZGVkQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn07XG5cbmNvbnN0IGlzUlRMID0gKCkgPT4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRpciA9PT0gJ3J0bCc7XG5cbmNvbnN0IGRlZmluZUpRdWVyeVBsdWdpbiA9IHBsdWdpbiA9PiB7XG4gIG9uRE9NQ29udGVudExvYWRlZCgoKSA9PiB7XG4gICAgY29uc3QgJCA9IGdldGpRdWVyeSgpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXG4gICAgaWYgKCQpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBwbHVnaW4uTkFNRTtcbiAgICAgIGNvbnN0IEpRVUVSWV9OT19DT05GTElDVCA9ICQuZm5bbmFtZV07XG4gICAgICAkLmZuW25hbWVdID0gcGx1Z2luLmpRdWVyeUludGVyZmFjZTtcbiAgICAgICQuZm5bbmFtZV0uQ29uc3RydWN0b3IgPSBwbHVnaW47XG5cbiAgICAgICQuZm5bbmFtZV0ubm9Db25mbGljdCA9ICgpID0+IHtcbiAgICAgICAgJC5mbltuYW1lXSA9IEpRVUVSWV9OT19DT05GTElDVDtcbiAgICAgICAgcmV0dXJuIHBsdWdpbi5qUXVlcnlJbnRlcmZhY2U7XG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCBleGVjdXRlID0gY2FsbGJhY2sgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxufTtcblxuY29uc3QgZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbiA9IChjYWxsYmFjaywgdHJhbnNpdGlvbkVsZW1lbnQsIHdhaXRGb3JUcmFuc2l0aW9uID0gdHJ1ZSkgPT4ge1xuICBpZiAoIXdhaXRGb3JUcmFuc2l0aW9uKSB7XG4gICAgZXhlY3V0ZShjYWxsYmFjayk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZHVyYXRpb25QYWRkaW5nID0gNTtcbiAgY29uc3QgZW11bGF0ZWREdXJhdGlvbiA9IGdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRyYW5zaXRpb25FbGVtZW50KSArIGR1cmF0aW9uUGFkZGluZztcbiAgbGV0IGNhbGxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGhhbmRsZXIgPSAoe1xuICAgIHRhcmdldFxuICB9KSA9PiB7XG4gICAgaWYgKHRhcmdldCAhPT0gdHJhbnNpdGlvbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIHRyYW5zaXRpb25FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoVFJBTlNJVElPTl9FTkQsIGhhbmRsZXIpO1xuICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICB9O1xuXG4gIHRyYW5zaXRpb25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoVFJBTlNJVElPTl9FTkQsIGhhbmRsZXIpO1xuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgdHJpZ2dlclRyYW5zaXRpb25FbmQodHJhbnNpdGlvbkVsZW1lbnQpO1xuICAgIH1cbiAgfSwgZW11bGF0ZWREdXJhdGlvbik7XG59O1xuLyoqXG4gKiBSZXR1cm4gdGhlIHByZXZpb3VzL25leHQgZWxlbWVudCBvZiBhIGxpc3QuXG4gKlxuICogQHBhcmFtIHthcnJheX0gbGlzdCAgICBUaGUgbGlzdCBvZiBlbGVtZW50c1xuICogQHBhcmFtIGFjdGl2ZUVsZW1lbnQgICBUaGUgYWN0aXZlIGVsZW1lbnRcbiAqIEBwYXJhbSBzaG91bGRHZXROZXh0ICAgQ2hvb3NlIHRvIGdldCBuZXh0IG9yIHByZXZpb3VzIGVsZW1lbnRcbiAqIEBwYXJhbSBpc0N5Y2xlQWxsb3dlZFxuICogQHJldHVybiB7RWxlbWVudHxlbGVtfSBUaGUgcHJvcGVyIGVsZW1lbnRcbiAqL1xuXG5cbmNvbnN0IGdldE5leHRBY3RpdmVFbGVtZW50ID0gKGxpc3QsIGFjdGl2ZUVsZW1lbnQsIHNob3VsZEdldE5leHQsIGlzQ3ljbGVBbGxvd2VkKSA9PiB7XG4gIGNvbnN0IGxpc3RMZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgbGV0IGluZGV4ID0gbGlzdC5pbmRleE9mKGFjdGl2ZUVsZW1lbnQpOyAvLyBpZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbGlzdCByZXR1cm4gYW4gZWxlbWVudFxuICAvLyBkZXBlbmRpbmcgb24gdGhlIGRpcmVjdGlvbiBhbmQgaWYgY3ljbGUgaXMgYWxsb3dlZFxuXG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gIXNob3VsZEdldE5leHQgJiYgaXNDeWNsZUFsbG93ZWQgPyBsaXN0W2xpc3RMZW5ndGggLSAxXSA6IGxpc3RbMF07XG4gIH1cblxuICBpbmRleCArPSBzaG91bGRHZXROZXh0ID8gMSA6IC0xO1xuXG4gIGlmIChpc0N5Y2xlQWxsb3dlZCkge1xuICAgIGluZGV4ID0gKGluZGV4ICsgbGlzdExlbmd0aCkgJSBsaXN0TGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIGxpc3RbTWF0aC5tYXgoMCwgTWF0aC5taW4oaW5kZXgsIGxpc3RMZW5ndGggLSAxKSldO1xufTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjApOiBkb20vZXZlbnQtaGFuZGxlci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IG5hbWVzcGFjZVJlZ2V4ID0gL1teLl0qKD89XFwuLiopXFwufC4qLztcbmNvbnN0IHN0cmlwTmFtZVJlZ2V4ID0gL1xcLi4qLztcbmNvbnN0IHN0cmlwVWlkUmVnZXggPSAvOjpcXGQrJC87XG5jb25zdCBldmVudFJlZ2lzdHJ5ID0ge307IC8vIEV2ZW50cyBzdG9yYWdlXG5cbmxldCB1aWRFdmVudCA9IDE7XG5jb25zdCBjdXN0b21FdmVudHMgPSB7XG4gIG1vdXNlZW50ZXI6ICdtb3VzZW92ZXInLFxuICBtb3VzZWxlYXZlOiAnbW91c2VvdXQnXG59O1xuY29uc3QgbmF0aXZlRXZlbnRzID0gbmV3IFNldChbJ2NsaWNrJywgJ2RibGNsaWNrJywgJ21vdXNldXAnLCAnbW91c2Vkb3duJywgJ2NvbnRleHRtZW51JywgJ21vdXNld2hlZWwnLCAnRE9NTW91c2VTY3JvbGwnLCAnbW91c2VvdmVyJywgJ21vdXNlb3V0JywgJ21vdXNlbW92ZScsICdzZWxlY3RzdGFydCcsICdzZWxlY3RlbmQnLCAna2V5ZG93bicsICdrZXlwcmVzcycsICdrZXl1cCcsICdvcmllbnRhdGlvbmNoYW5nZScsICd0b3VjaHN0YXJ0JywgJ3RvdWNobW92ZScsICd0b3VjaGVuZCcsICd0b3VjaGNhbmNlbCcsICdwb2ludGVyZG93bicsICdwb2ludGVybW92ZScsICdwb2ludGVydXAnLCAncG9pbnRlcmxlYXZlJywgJ3BvaW50ZXJjYW5jZWwnLCAnZ2VzdHVyZXN0YXJ0JywgJ2dlc3R1cmVjaGFuZ2UnLCAnZ2VzdHVyZWVuZCcsICdmb2N1cycsICdibHVyJywgJ2NoYW5nZScsICdyZXNldCcsICdzZWxlY3QnLCAnc3VibWl0JywgJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnLCAnbG9hZCcsICd1bmxvYWQnLCAnYmVmb3JldW5sb2FkJywgJ3Jlc2l6ZScsICdtb3ZlJywgJ0RPTUNvbnRlbnRMb2FkZWQnLCAncmVhZHlzdGF0ZWNoYW5nZScsICdlcnJvcicsICdhYm9ydCcsICdzY3JvbGwnXSk7XG4vKipcbiAqIFByaXZhdGUgbWV0aG9kc1xuICovXG5cbmZ1bmN0aW9uIG1ha2VFdmVudFVpZChlbGVtZW50LCB1aWQpIHtcbiAgcmV0dXJuIHVpZCAmJiBgJHt1aWR9Ojoke3VpZEV2ZW50Kyt9YCB8fCBlbGVtZW50LnVpZEV2ZW50IHx8IHVpZEV2ZW50Kys7XG59XG5cbmZ1bmN0aW9uIGdldEVsZW1lbnRFdmVudHMoZWxlbWVudCkge1xuICBjb25zdCB1aWQgPSBtYWtlRXZlbnRVaWQoZWxlbWVudCk7XG4gIGVsZW1lbnQudWlkRXZlbnQgPSB1aWQ7XG4gIGV2ZW50UmVnaXN0cnlbdWlkXSA9IGV2ZW50UmVnaXN0cnlbdWlkXSB8fCB7fTtcbiAgcmV0dXJuIGV2ZW50UmVnaXN0cnlbdWlkXTtcbn1cblxuZnVuY3Rpb24gYm9vdHN0cmFwSGFuZGxlcihlbGVtZW50LCBmbikge1xuICByZXR1cm4gZnVuY3Rpb24gaGFuZGxlcihldmVudCkge1xuICAgIGh5ZHJhdGVPYmooZXZlbnQsIHtcbiAgICAgIGRlbGVnYXRlVGFyZ2V0OiBlbGVtZW50XG4gICAgfSk7XG5cbiAgICBpZiAoaGFuZGxlci5vbmVPZmYpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vZmYoZWxlbWVudCwgZXZlbnQudHlwZSwgZm4pO1xuICAgIH1cblxuICAgIHJldHVybiBmbi5hcHBseShlbGVtZW50LCBbZXZlbnRdKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYm9vdHN0cmFwRGVsZWdhdGlvbkhhbmRsZXIoZWxlbWVudCwgc2VsZWN0b3IsIGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7XG4gICAgY29uc3QgZG9tRWxlbWVudHMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuXG4gICAgZm9yIChsZXQge1xuICAgICAgdGFyZ2V0XG4gICAgfSA9IGV2ZW50OyB0YXJnZXQgJiYgdGFyZ2V0ICE9PSB0aGlzOyB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZSkge1xuICAgICAgZm9yIChjb25zdCBkb21FbGVtZW50IG9mIGRvbUVsZW1lbnRzKSB7XG4gICAgICAgIGlmIChkb21FbGVtZW50ICE9PSB0YXJnZXQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGh5ZHJhdGVPYmooZXZlbnQsIHtcbiAgICAgICAgICBkZWxlZ2F0ZVRhcmdldDogdGFyZ2V0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChoYW5kbGVyLm9uZU9mZikge1xuICAgICAgICAgIEV2ZW50SGFuZGxlci5vZmYoZWxlbWVudCwgZXZlbnQudHlwZSwgc2VsZWN0b3IsIGZuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0YXJnZXQsIFtldmVudF0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZmluZEhhbmRsZXIoZXZlbnRzLCBjYWxsYWJsZSwgZGVsZWdhdGlvblNlbGVjdG9yID0gbnVsbCkge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhldmVudHMpLmZpbmQoZXZlbnQgPT4gZXZlbnQuY2FsbGFibGUgPT09IGNhbGxhYmxlICYmIGV2ZW50LmRlbGVnYXRpb25TZWxlY3RvciA9PT0gZGVsZWdhdGlvblNlbGVjdG9yKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplUGFyYW1ldGVycyhvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gdHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnOyAvLyB0b2RvOiB0b29sdGlwIHBhc3NlcyBgZmFsc2VgIGluc3RlYWQgb2Ygc2VsZWN0b3IsIHNvIHdlIG5lZWQgdG8gY2hlY2tcblxuICBjb25zdCBjYWxsYWJsZSA9IGlzRGVsZWdhdGVkID8gZGVsZWdhdGlvbkZ1bmN0aW9uIDogaGFuZGxlciB8fCBkZWxlZ2F0aW9uRnVuY3Rpb247XG4gIGxldCB0eXBlRXZlbnQgPSBnZXRUeXBlRXZlbnQob3JpZ2luYWxUeXBlRXZlbnQpO1xuXG4gIGlmICghbmF0aXZlRXZlbnRzLmhhcyh0eXBlRXZlbnQpKSB7XG4gICAgdHlwZUV2ZW50ID0gb3JpZ2luYWxUeXBlRXZlbnQ7XG4gIH1cblxuICByZXR1cm4gW2lzRGVsZWdhdGVkLCBjYWxsYWJsZSwgdHlwZUV2ZW50XTtcbn1cblxuZnVuY3Rpb24gYWRkSGFuZGxlcihlbGVtZW50LCBvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uLCBvbmVPZmYpIHtcbiAgaWYgKHR5cGVvZiBvcmlnaW5hbFR5cGVFdmVudCAhPT0gJ3N0cmluZycgfHwgIWVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgW2lzRGVsZWdhdGVkLCBjYWxsYWJsZSwgdHlwZUV2ZW50XSA9IG5vcm1hbGl6ZVBhcmFtZXRlcnMob3JpZ2luYWxUeXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbik7IC8vIGluIGNhc2Ugb2YgbW91c2VlbnRlciBvciBtb3VzZWxlYXZlIHdyYXAgdGhlIGhhbmRsZXIgd2l0aGluIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgZm9yIGl0cyBET00gcG9zaXRpb25cbiAgLy8gdGhpcyBwcmV2ZW50cyB0aGUgaGFuZGxlciBmcm9tIGJlaW5nIGRpc3BhdGNoZWQgdGhlIHNhbWUgd2F5IGFzIG1vdXNlb3ZlciBvciBtb3VzZW91dCBkb2VzXG5cbiAgaWYgKG9yaWdpbmFsVHlwZUV2ZW50IGluIGN1c3RvbUV2ZW50cykge1xuICAgIGNvbnN0IHdyYXBGdW5jdGlvbiA9IGZuID0+IHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKCFldmVudC5yZWxhdGVkVGFyZ2V0IHx8IGV2ZW50LnJlbGF0ZWRUYXJnZXQgIT09IGV2ZW50LmRlbGVnYXRlVGFyZ2V0ICYmICFldmVudC5kZWxlZ2F0ZVRhcmdldC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgY2FsbGFibGUgPSB3cmFwRnVuY3Rpb24oY2FsbGFibGUpO1xuICB9XG5cbiAgY29uc3QgZXZlbnRzID0gZ2V0RWxlbWVudEV2ZW50cyhlbGVtZW50KTtcbiAgY29uc3QgaGFuZGxlcnMgPSBldmVudHNbdHlwZUV2ZW50XSB8fCAoZXZlbnRzW3R5cGVFdmVudF0gPSB7fSk7XG4gIGNvbnN0IHByZXZpb3VzRnVuY3Rpb24gPSBmaW5kSGFuZGxlcihoYW5kbGVycywgY2FsbGFibGUsIGlzRGVsZWdhdGVkID8gaGFuZGxlciA6IG51bGwpO1xuXG4gIGlmIChwcmV2aW91c0Z1bmN0aW9uKSB7XG4gICAgcHJldmlvdXNGdW5jdGlvbi5vbmVPZmYgPSBwcmV2aW91c0Z1bmN0aW9uLm9uZU9mZiAmJiBvbmVPZmY7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdWlkID0gbWFrZUV2ZW50VWlkKGNhbGxhYmxlLCBvcmlnaW5hbFR5cGVFdmVudC5yZXBsYWNlKG5hbWVzcGFjZVJlZ2V4LCAnJykpO1xuICBjb25zdCBmbiA9IGlzRGVsZWdhdGVkID8gYm9vdHN0cmFwRGVsZWdhdGlvbkhhbmRsZXIoZWxlbWVudCwgaGFuZGxlciwgY2FsbGFibGUpIDogYm9vdHN0cmFwSGFuZGxlcihlbGVtZW50LCBjYWxsYWJsZSk7XG4gIGZuLmRlbGVnYXRpb25TZWxlY3RvciA9IGlzRGVsZWdhdGVkID8gaGFuZGxlciA6IG51bGw7XG4gIGZuLmNhbGxhYmxlID0gY2FsbGFibGU7XG4gIGZuLm9uZU9mZiA9IG9uZU9mZjtcbiAgZm4udWlkRXZlbnQgPSB1aWQ7XG4gIGhhbmRsZXJzW3VpZF0gPSBmbjtcbiAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHR5cGVFdmVudCwgZm4sIGlzRGVsZWdhdGVkKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvblNlbGVjdG9yKSB7XG4gIGNvbnN0IGZuID0gZmluZEhhbmRsZXIoZXZlbnRzW3R5cGVFdmVudF0sIGhhbmRsZXIsIGRlbGVnYXRpb25TZWxlY3Rvcik7XG5cbiAgaWYgKCFmbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlRXZlbnQsIGZuLCBCb29sZWFuKGRlbGVnYXRpb25TZWxlY3RvcikpO1xuICBkZWxldGUgZXZlbnRzW3R5cGVFdmVudF1bZm4udWlkRXZlbnRdO1xufVxuXG5mdW5jdGlvbiByZW1vdmVOYW1lc3BhY2VkSGFuZGxlcnMoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIG5hbWVzcGFjZSkge1xuICBjb25zdCBzdG9yZUVsZW1lbnRFdmVudCA9IGV2ZW50c1t0eXBlRXZlbnRdIHx8IHt9O1xuXG4gIGZvciAoY29uc3QgaGFuZGxlcktleSBvZiBPYmplY3Qua2V5cyhzdG9yZUVsZW1lbnRFdmVudCkpIHtcbiAgICBpZiAoaGFuZGxlcktleS5pbmNsdWRlcyhuYW1lc3BhY2UpKSB7XG4gICAgICBjb25zdCBldmVudCA9IHN0b3JlRWxlbWVudEV2ZW50W2hhbmRsZXJLZXldO1xuICAgICAgcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgZXZlbnQuY2FsbGFibGUsIGV2ZW50LmRlbGVnYXRpb25TZWxlY3Rvcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFR5cGVFdmVudChldmVudCkge1xuICAvLyBhbGxvdyB0byBnZXQgdGhlIG5hdGl2ZSBldmVudHMgZnJvbSBuYW1lc3BhY2VkIGV2ZW50cyAoJ2NsaWNrLmJzLmJ1dHRvbicgLS0+ICdjbGljaycpXG4gIGV2ZW50ID0gZXZlbnQucmVwbGFjZShzdHJpcE5hbWVSZWdleCwgJycpO1xuICByZXR1cm4gY3VzdG9tRXZlbnRzW2V2ZW50XSB8fCBldmVudDtcbn1cblxuY29uc3QgRXZlbnRIYW5kbGVyID0ge1xuICBvbihlbGVtZW50LCBldmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gICAgYWRkSGFuZGxlcihlbGVtZW50LCBldmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uLCBmYWxzZSk7XG4gIH0sXG5cbiAgb25lKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pIHtcbiAgICBhZGRIYW5kbGVyKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24sIHRydWUpO1xuICB9LFxuXG4gIG9mZihlbGVtZW50LCBvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gICAgaWYgKHR5cGVvZiBvcmlnaW5hbFR5cGVFdmVudCAhPT0gJ3N0cmluZycgfHwgIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbaXNEZWxlZ2F0ZWQsIGNhbGxhYmxlLCB0eXBlRXZlbnRdID0gbm9ybWFsaXplUGFyYW1ldGVycyhvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKTtcbiAgICBjb25zdCBpbk5hbWVzcGFjZSA9IHR5cGVFdmVudCAhPT0gb3JpZ2luYWxUeXBlRXZlbnQ7XG4gICAgY29uc3QgZXZlbnRzID0gZ2V0RWxlbWVudEV2ZW50cyhlbGVtZW50KTtcbiAgICBjb25zdCBzdG9yZUVsZW1lbnRFdmVudCA9IGV2ZW50c1t0eXBlRXZlbnRdIHx8IHt9O1xuICAgIGNvbnN0IGlzTmFtZXNwYWNlID0gb3JpZ2luYWxUeXBlRXZlbnQuc3RhcnRzV2l0aCgnLicpO1xuXG4gICAgaWYgKHR5cGVvZiBjYWxsYWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIFNpbXBsZXN0IGNhc2U6IGhhbmRsZXIgaXMgcGFzc2VkLCByZW1vdmUgdGhhdCBsaXN0ZW5lciBPTkxZLlxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhzdG9yZUVsZW1lbnRFdmVudCkubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgY2FsbGFibGUsIGlzRGVsZWdhdGVkID8gaGFuZGxlciA6IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc05hbWVzcGFjZSkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50RXZlbnQgb2YgT2JqZWN0LmtleXMoZXZlbnRzKSkge1xuICAgICAgICByZW1vdmVOYW1lc3BhY2VkSGFuZGxlcnMoZWxlbWVudCwgZXZlbnRzLCBlbGVtZW50RXZlbnQsIG9yaWdpbmFsVHlwZUV2ZW50LnNsaWNlKDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleUhhbmRsZXJzIG9mIE9iamVjdC5rZXlzKHN0b3JlRWxlbWVudEV2ZW50KSkge1xuICAgICAgY29uc3QgaGFuZGxlcktleSA9IGtleUhhbmRsZXJzLnJlcGxhY2Uoc3RyaXBVaWRSZWdleCwgJycpO1xuXG4gICAgICBpZiAoIWluTmFtZXNwYWNlIHx8IG9yaWdpbmFsVHlwZUV2ZW50LmluY2x1ZGVzKGhhbmRsZXJLZXkpKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gc3RvcmVFbGVtZW50RXZlbnRba2V5SGFuZGxlcnNdO1xuICAgICAgICByZW1vdmVIYW5kbGVyKGVsZW1lbnQsIGV2ZW50cywgdHlwZUV2ZW50LCBldmVudC5jYWxsYWJsZSwgZXZlbnQuZGVsZWdhdGlvblNlbGVjdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgdHJpZ2dlcihlbGVtZW50LCBldmVudCwgYXJncykge1xuICAgIGlmICh0eXBlb2YgZXZlbnQgIT09ICdzdHJpbmcnIHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCAkID0gZ2V0alF1ZXJ5KCk7XG4gICAgY29uc3QgdHlwZUV2ZW50ID0gZ2V0VHlwZUV2ZW50KGV2ZW50KTtcbiAgICBjb25zdCBpbk5hbWVzcGFjZSA9IGV2ZW50ICE9PSB0eXBlRXZlbnQ7XG4gICAgbGV0IGpRdWVyeUV2ZW50ID0gbnVsbDtcbiAgICBsZXQgYnViYmxlcyA9IHRydWU7XG4gICAgbGV0IG5hdGl2ZURpc3BhdGNoID0gdHJ1ZTtcbiAgICBsZXQgZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlO1xuXG4gICAgaWYgKGluTmFtZXNwYWNlICYmICQpIHtcbiAgICAgIGpRdWVyeUV2ZW50ID0gJC5FdmVudChldmVudCwgYXJncyk7XG4gICAgICAkKGVsZW1lbnQpLnRyaWdnZXIoalF1ZXJ5RXZlbnQpO1xuICAgICAgYnViYmxlcyA9ICFqUXVlcnlFdmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO1xuICAgICAgbmF0aXZlRGlzcGF0Y2ggPSAhalF1ZXJ5RXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTtcbiAgICAgIGRlZmF1bHRQcmV2ZW50ZWQgPSBqUXVlcnlFdmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcbiAgICB9XG5cbiAgICBsZXQgZXZ0ID0gbmV3IEV2ZW50KGV2ZW50LCB7XG4gICAgICBidWJibGVzLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV2dCA9IGh5ZHJhdGVPYmooZXZ0LCBhcmdzKTtcblxuICAgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBpZiAobmF0aXZlRGlzcGF0Y2gpIHtcbiAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgIH1cblxuICAgIGlmIChldnQuZGVmYXVsdFByZXZlbnRlZCAmJiBqUXVlcnlFdmVudCkge1xuICAgICAgalF1ZXJ5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZ0O1xuICB9XG5cbn07XG5cbmZ1bmN0aW9uIGh5ZHJhdGVPYmoob2JqLCBtZXRhKSB7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1ldGEgfHwge30pKSB7XG4gICAgdHJ5IHtcbiAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgfSBjYXRjaCAoX3VudXNlZCkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblxuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4wKTogZG9tL2RhdGEuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5jb25zdCBlbGVtZW50TWFwID0gbmV3IE1hcCgpO1xuY29uc3QgRGF0YSA9IHtcbiAgc2V0KGVsZW1lbnQsIGtleSwgaW5zdGFuY2UpIHtcbiAgICBpZiAoIWVsZW1lbnRNYXAuaGFzKGVsZW1lbnQpKSB7XG4gICAgICBlbGVtZW50TWFwLnNldChlbGVtZW50LCBuZXcgTWFwKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlTWFwID0gZWxlbWVudE1hcC5nZXQoZWxlbWVudCk7IC8vIG1ha2UgaXQgY2xlYXIgd2Ugb25seSB3YW50IG9uZSBpbnN0YW5jZSBwZXIgZWxlbWVudFxuICAgIC8vIGNhbiBiZSByZW1vdmVkIGxhdGVyIHdoZW4gbXVsdGlwbGUga2V5L2luc3RhbmNlcyBhcmUgZmluZSB0byBiZSB1c2VkXG5cbiAgICBpZiAoIWluc3RhbmNlTWFwLmhhcyhrZXkpICYmIGluc3RhbmNlTWFwLnNpemUgIT09IDApIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKGBCb290c3RyYXAgZG9lc24ndCBhbGxvdyBtb3JlIHRoYW4gb25lIGluc3RhbmNlIHBlciBlbGVtZW50LiBCb3VuZCBpbnN0YW5jZTogJHtBcnJheS5mcm9tKGluc3RhbmNlTWFwLmtleXMoKSlbMF19LmApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGluc3RhbmNlTWFwLnNldChrZXksIGluc3RhbmNlKTtcbiAgfSxcblxuICBnZXQoZWxlbWVudCwga2V5KSB7XG4gICAgaWYgKGVsZW1lbnRNYXAuaGFzKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gZWxlbWVudE1hcC5nZXQoZWxlbWVudCkuZ2V0KGtleSkgfHwgbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICByZW1vdmUoZWxlbWVudCwga2V5KSB7XG4gICAgaWYgKCFlbGVtZW50TWFwLmhhcyhlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlTWFwID0gZWxlbWVudE1hcC5nZXQoZWxlbWVudCk7XG4gICAgaW5zdGFuY2VNYXAuZGVsZXRlKGtleSk7IC8vIGZyZWUgdXAgZWxlbWVudCByZWZlcmVuY2VzIGlmIHRoZXJlIGFyZSBubyBpbnN0YW5jZXMgbGVmdCBmb3IgYW4gZWxlbWVudFxuXG4gICAgaWYgKGluc3RhbmNlTWFwLnNpemUgPT09IDApIHtcbiAgICAgIGVsZW1lbnRNYXAuZGVsZXRlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG59O1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMCk6IGRvbS9tYW5pcHVsYXRvci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEYXRhKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodmFsdWUgPT09IE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKSkge1xuICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gJ251bGwnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gIH0gY2F0Y2ggKF91bnVzZWQpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplRGF0YUtleShrZXkpIHtcbiAgcmV0dXJuIGtleS5yZXBsYWNlKC9bQS1aXS9nLCBjaHIgPT4gYC0ke2Noci50b0xvd2VyQ2FzZSgpfWApO1xufVxuXG5jb25zdCBNYW5pcHVsYXRvciA9IHtcbiAgc2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCBrZXksIHZhbHVlKSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYGRhdGEtYnMtJHtub3JtYWxpemVEYXRhS2V5KGtleSl9YCwgdmFsdWUpO1xuICB9LFxuXG4gIHJlbW92ZURhdGFBdHRyaWJ1dGUoZWxlbWVudCwga2V5KSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYGRhdGEtYnMtJHtub3JtYWxpemVEYXRhS2V5KGtleSl9YCk7XG4gIH0sXG5cbiAgZ2V0RGF0YUF0dHJpYnV0ZXMoZWxlbWVudCkge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgICBjb25zdCBic0tleXMgPSBPYmplY3Qua2V5cyhlbGVtZW50LmRhdGFzZXQpLmZpbHRlcihrZXkgPT4ga2V5LnN0YXJ0c1dpdGgoJ2JzJykgJiYgIWtleS5zdGFydHNXaXRoKCdic0NvbmZpZycpKTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGJzS2V5cykge1xuICAgICAgbGV0IHB1cmVLZXkgPSBrZXkucmVwbGFjZSgvXmJzLywgJycpO1xuICAgICAgcHVyZUtleSA9IHB1cmVLZXkuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBwdXJlS2V5LnNsaWNlKDEsIHB1cmVLZXkubGVuZ3RoKTtcbiAgICAgIGF0dHJpYnV0ZXNbcHVyZUtleV0gPSBub3JtYWxpemVEYXRhKGVsZW1lbnQuZGF0YXNldFtrZXldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgfSxcblxuICBnZXREYXRhQXR0cmlidXRlKGVsZW1lbnQsIGtleSkge1xuICAgIHJldHVybiBub3JtYWxpemVEYXRhKGVsZW1lbnQuZ2V0QXR0cmlidXRlKGBkYXRhLWJzLSR7bm9ybWFsaXplRGF0YUtleShrZXkpfWApKTtcbiAgfVxuXG59O1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMCk6IHV0aWwvY29uZmlnLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIENvbmZpZyB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignWW91IGhhdmUgdG8gaW1wbGVtZW50IHRoZSBzdGF0aWMgbWV0aG9kIFwiTkFNRVwiLCBmb3IgZWFjaCBjb21wb25lbnQhJyk7XG4gIH1cblxuICBfZ2V0Q29uZmlnKGNvbmZpZykge1xuICAgIGNvbmZpZyA9IHRoaXMuX21lcmdlQ29uZmlnT2JqKGNvbmZpZyk7XG4gICAgY29uZmlnID0gdGhpcy5fY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpO1xuXG4gICAgdGhpcy5fdHlwZUNoZWNrQ29uZmlnKGNvbmZpZyk7XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIF9tZXJnZUNvbmZpZ09iaihjb25maWcsIGVsZW1lbnQpIHtcbiAgICBjb25zdCBqc29uQ29uZmlnID0gaXNFbGVtZW50KGVsZW1lbnQpID8gTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCAnY29uZmlnJykgOiB7fTsgLy8gdHJ5IHRvIHBhcnNlXG5cbiAgICByZXR1cm4geyAuLi50aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHQsXG4gICAgICAuLi4odHlwZW9mIGpzb25Db25maWcgPT09ICdvYmplY3QnID8ganNvbkNvbmZpZyA6IHt9KSxcbiAgICAgIC4uLihpc0VsZW1lbnQoZWxlbWVudCkgPyBNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlcyhlbGVtZW50KSA6IHt9KSxcbiAgICAgIC4uLih0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyA/IGNvbmZpZyA6IHt9KVxuICAgIH07XG4gIH1cblxuICBfdHlwZUNoZWNrQ29uZmlnKGNvbmZpZywgY29uZmlnVHlwZXMgPSB0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBPYmplY3Qua2V5cyhjb25maWdUeXBlcykpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVHlwZXMgPSBjb25maWdUeXBlc1twcm9wZXJ0eV07XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1twcm9wZXJ0eV07XG4gICAgICBjb25zdCB2YWx1ZVR5cGUgPSBpc0VsZW1lbnQodmFsdWUpID8gJ2VsZW1lbnQnIDogdG9UeXBlKHZhbHVlKTtcblxuICAgICAgaWYgKCFuZXcgUmVnRXhwKGV4cGVjdGVkVHlwZXMpLnRlc3QodmFsdWVUeXBlKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IuTkFNRS50b1VwcGVyQ2FzZSgpfTogT3B0aW9uIFwiJHtwcm9wZXJ0eX1cIiBwcm92aWRlZCB0eXBlIFwiJHt2YWx1ZVR5cGV9XCIgYnV0IGV4cGVjdGVkIHR5cGUgXCIke2V4cGVjdGVkVHlwZXN9XCIuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjApOiBiYXNlLWNvbXBvbmVudC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IFZFUlNJT04gPSAnNS4yLjAnO1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQmFzZUNvbXBvbmVudCBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgZWxlbWVudCA9IGdldEVsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgICBEYXRhLnNldCh0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZLCB0aGlzKTtcbiAgfSAvLyBQdWJsaWNcblxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgRGF0YS5yZW1vdmUodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSk7XG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkVWRU5UX0tFWSk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkge1xuICAgICAgdGhpc1twcm9wZXJ0eU5hbWVdID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBfcXVldWVDYWxsYmFjayhjYWxsYmFjaywgZWxlbWVudCwgaXNBbmltYXRlZCA9IHRydWUpIHtcbiAgICBleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uKGNhbGxiYWNrLCBlbGVtZW50LCBpc0FuaW1hdGVkKTtcbiAgfVxuXG4gIF9nZXRDb25maWcoY29uZmlnKSB7XG4gICAgY29uZmlnID0gdGhpcy5fbWVyZ2VDb25maWdPYmooY29uZmlnLCB0aGlzLl9lbGVtZW50KTtcbiAgICBjb25maWcgPSB0aGlzLl9jb25maWdBZnRlck1lcmdlKGNvbmZpZyk7XG5cbiAgICB0aGlzLl90eXBlQ2hlY2tDb25maWcoY29uZmlnKTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgZ2V0SW5zdGFuY2UoZWxlbWVudCkge1xuICAgIHJldHVybiBEYXRhLmdldChnZXRFbGVtZW50KGVsZW1lbnQpLCB0aGlzLkRBVEFfS0VZKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQsIGNvbmZpZyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SW5zdGFuY2UoZWxlbWVudCkgfHwgbmV3IHRoaXMoZWxlbWVudCwgdHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgPyBjb25maWcgOiBudWxsKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgVkVSU0lPTigpIHtcbiAgICByZXR1cm4gVkVSU0lPTjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgREFUQV9LRVkoKSB7XG4gICAgcmV0dXJuIGBicy4ke3RoaXMuTkFNRX1gO1xuICB9XG5cbiAgc3RhdGljIGdldCBFVkVOVF9LRVkoKSB7XG4gICAgcmV0dXJuIGAuJHt0aGlzLkRBVEFfS0VZfWA7XG4gIH1cblxuICBzdGF0aWMgZXZlbnROYW1lKG5hbWUpIHtcbiAgICByZXR1cm4gYCR7bmFtZX0ke3RoaXMuRVZFTlRfS0VZfWA7XG4gIH1cblxufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMCk6IHV0aWwvY29tcG9uZW50LWZ1bmN0aW9ucy5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmNvbnN0IGVuYWJsZURpc21pc3NUcmlnZ2VyID0gKGNvbXBvbmVudCwgbWV0aG9kID0gJ2hpZGUnKSA9PiB7XG4gIGNvbnN0IGNsaWNrRXZlbnQgPSBgY2xpY2suZGlzbWlzcyR7Y29tcG9uZW50LkVWRU5UX0tFWX1gO1xuICBjb25zdCBuYW1lID0gY29tcG9uZW50Lk5BTUU7XG4gIEV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgY2xpY2tFdmVudCwgYFtkYXRhLWJzLWRpc21pc3M9XCIke25hbWV9XCJdYCwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKFsnQScsICdBUkVBJ10uaW5jbHVkZXModGhpcy50YWdOYW1lKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBpZiAoaXNEaXNhYmxlZCh0aGlzKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcykgfHwgdGhpcy5jbG9zZXN0KGAuJHtuYW1lfWApO1xuICAgIGNvbnN0IGluc3RhbmNlID0gY29tcG9uZW50LmdldE9yQ3JlYXRlSW5zdGFuY2UodGFyZ2V0KTsgLy8gTWV0aG9kIGFyZ3VtZW50IGlzIGxlZnQsIGZvciBBbGVydCBhbmQgb25seSwgYXMgaXQgZG9lc24ndCBpbXBsZW1lbnQgdGhlICdoaWRlJyBtZXRob2RcblxuICAgIGluc3RhbmNlW21ldGhvZF0oKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMCk6IGFsZXJ0LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSRmID0gJ2FsZXJ0JztcbmNvbnN0IERBVEFfS0VZJGEgPSAnYnMuYWxlcnQnO1xuY29uc3QgRVZFTlRfS0VZJGIgPSBgLiR7REFUQV9LRVkkYX1gO1xuY29uc3QgRVZFTlRfQ0xPU0UgPSBgY2xvc2Uke0VWRU5UX0tFWSRifWA7XG5jb25zdCBFVkVOVF9DTE9TRUQgPSBgY2xvc2VkJHtFVkVOVF9LRVkkYn1gO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFJDUgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckOCA9ICdzaG93Jztcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEFsZXJ0IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJGY7XG4gIH0gLy8gUHVibGljXG5cblxuICBjbG9zZSgpIHtcbiAgICBjb25zdCBjbG9zZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfQ0xPU0UpO1xuXG4gICAgaWYgKGNsb3NlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckOCk7XG5cbiAgICBjb25zdCBpc0FuaW1hdGVkID0gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9GQURFJDUpO1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB0aGlzLl9kZXN0cm95RWxlbWVudCgpLCB0aGlzLl9lbGVtZW50LCBpc0FuaW1hdGVkKTtcbiAgfSAvLyBQcml2YXRlXG5cblxuICBfZGVzdHJveUVsZW1lbnQoKSB7XG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKTtcblxuICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0NMT1NFRCk7XG4gICAgdGhpcy5kaXNwb3NlKCk7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IEFsZXJ0LmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyk7XG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuXG4gICAgICBkYXRhW2NvbmZpZ10odGhpcyk7XG4gICAgfSk7XG4gIH1cblxufVxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cblxuZW5hYmxlRGlzbWlzc1RyaWdnZXIoQWxlcnQsICdjbG9zZScpO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oQWxlcnQpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMCk6IGJ1dHRvbi5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkZSA9ICdidXR0b24nO1xuY29uc3QgREFUQV9LRVkkOSA9ICdicy5idXR0b24nO1xuY29uc3QgRVZFTlRfS0VZJGEgPSBgLiR7REFUQV9LRVkkOX1gO1xuY29uc3QgREFUQV9BUElfS0VZJDYgPSAnLmRhdGEtYXBpJztcbmNvbnN0IENMQVNTX05BTUVfQUNUSVZFJDMgPSAnYWN0aXZlJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFJDUgPSAnW2RhdGEtYnMtdG9nZ2xlPVwiYnV0dG9uXCJdJztcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDYgPSBgY2xpY2ske0VWRU5UX0tFWSRhfSR7REFUQV9BUElfS0VZJDZ9YDtcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEJ1dHRvbiBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSRlO1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgdG9nZ2xlKCkge1xuICAgIC8vIFRvZ2dsZSBjbGFzcyBhbmQgc3luYyB0aGUgYGFyaWEtcHJlc3NlZGAgYXR0cmlidXRlIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYC50b2dnbGUoKWAgbWV0aG9kXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShDTEFTU19OQU1FX0FDVElWRSQzKSk7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IEJ1dHRvbi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpO1xuXG4gICAgICBpZiAoY29uZmlnID09PSAndG9nZ2xlJykge1xuICAgICAgICBkYXRhW2NvbmZpZ10oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG59XG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0NMSUNLX0RBVEFfQVBJJDYsIFNFTEVDVE9SX0RBVEFfVE9HR0xFJDUsIGV2ZW50ID0+IHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgY29uc3QgYnV0dG9uID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoU0VMRUNUT1JfREFUQV9UT0dHTEUkNSk7XG4gIGNvbnN0IGRhdGEgPSBCdXR0b24uZ2V0T3JDcmVhdGVJbnN0YW5jZShidXR0b24pO1xuICBkYXRhLnRvZ2dsZSgpO1xufSk7XG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihCdXR0b24pO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMCk6IGRvbS9zZWxlY3Rvci1lbmdpbmUuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBTZWxlY3RvckVuZ2luZSA9IHtcbiAgZmluZChzZWxlY3RvciwgZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbC5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKSk7XG4gIH0sXG5cbiAgZmluZE9uZShzZWxlY3RvciwgZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgIHJldHVybiBFbGVtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yLmNhbGwoZWxlbWVudCwgc2VsZWN0b3IpO1xuICB9LFxuXG4gIGNoaWxkcmVuKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCguLi5lbGVtZW50LmNoaWxkcmVuKS5maWx0ZXIoY2hpbGQgPT4gY2hpbGQubWF0Y2hlcyhzZWxlY3RvcikpO1xuICB9LFxuXG4gIHBhcmVudHMoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICBjb25zdCBwYXJlbnRzID0gW107XG4gICAgbGV0IGFuY2VzdG9yID0gZWxlbWVudC5wYXJlbnROb2RlLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuXG4gICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICBwYXJlbnRzLnB1c2goYW5jZXN0b3IpO1xuICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnROb2RlLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnRzO1xuICB9LFxuXG4gIHByZXYoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICBsZXQgcHJldmlvdXMgPSBlbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG5cbiAgICB3aGlsZSAocHJldmlvdXMpIHtcbiAgICAgIGlmIChwcmV2aW91cy5tYXRjaGVzKHNlbGVjdG9yKSkge1xuICAgICAgICByZXR1cm4gW3ByZXZpb3VzXTtcbiAgICAgIH1cblxuICAgICAgcHJldmlvdXMgPSBwcmV2aW91cy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfSxcblxuICAvLyBUT0RPOiB0aGlzIGlzIG5vdyB1bnVzZWQ7IHJlbW92ZSBsYXRlciBhbG9uZyB3aXRoIHByZXYoKVxuICBuZXh0KGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgbGV0IG5leHQgPSBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcblxuICAgIHdoaWxlIChuZXh0KSB7XG4gICAgICBpZiAobmV4dC5tYXRjaGVzKHNlbGVjdG9yKSkge1xuICAgICAgICByZXR1cm4gW25leHRdO1xuICAgICAgfVxuXG4gICAgICBuZXh0ID0gbmV4dC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9LFxuXG4gIGZvY3VzYWJsZUNoaWxkcmVuKGVsZW1lbnQpIHtcbiAgICBjb25zdCBmb2N1c2FibGVzID0gWydhJywgJ2J1dHRvbicsICdpbnB1dCcsICd0ZXh0YXJlYScsICdzZWxlY3QnLCAnZGV0YWlscycsICdbdGFiaW5kZXhdJywgJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJ10ubWFwKHNlbGVjdG9yID0+IGAke3NlbGVjdG9yfTpub3QoW3RhYmluZGV4Xj1cIi1cIl0pYCkuam9pbignLCcpO1xuICAgIHJldHVybiB0aGlzLmZpbmQoZm9jdXNhYmxlcywgZWxlbWVudCkuZmlsdGVyKGVsID0+ICFpc0Rpc2FibGVkKGVsKSAmJiBpc1Zpc2libGUoZWwpKTtcbiAgfVxuXG59O1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMCk6IHV0aWwvc3dpcGUuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJGQgPSAnc3dpcGUnO1xuY29uc3QgRVZFTlRfS0VZJDkgPSAnLmJzLnN3aXBlJztcbmNvbnN0IEVWRU5UX1RPVUNIU1RBUlQgPSBgdG91Y2hzdGFydCR7RVZFTlRfS0VZJDl9YDtcbmNvbnN0IEVWRU5UX1RPVUNITU9WRSA9IGB0b3VjaG1vdmUke0VWRU5UX0tFWSQ5fWA7XG5jb25zdCBFVkVOVF9UT1VDSEVORCA9IGB0b3VjaGVuZCR7RVZFTlRfS0VZJDl9YDtcbmNvbnN0IEVWRU5UX1BPSU5URVJET1dOID0gYHBvaW50ZXJkb3duJHtFVkVOVF9LRVkkOX1gO1xuY29uc3QgRVZFTlRfUE9JTlRFUlVQID0gYHBvaW50ZXJ1cCR7RVZFTlRfS0VZJDl9YDtcbmNvbnN0IFBPSU5URVJfVFlQRV9UT1VDSCA9ICd0b3VjaCc7XG5jb25zdCBQT0lOVEVSX1RZUEVfUEVOID0gJ3Blbic7XG5jb25zdCBDTEFTU19OQU1FX1BPSU5URVJfRVZFTlQgPSAncG9pbnRlci1ldmVudCc7XG5jb25zdCBTV0lQRV9USFJFU0hPTEQgPSA0MDtcbmNvbnN0IERlZmF1bHQkYyA9IHtcbiAgZW5kQ2FsbGJhY2s6IG51bGwsXG4gIGxlZnRDYWxsYmFjazogbnVsbCxcbiAgcmlnaHRDYWxsYmFjazogbnVsbFxufTtcbmNvbnN0IERlZmF1bHRUeXBlJGMgPSB7XG4gIGVuZENhbGxiYWNrOiAnKGZ1bmN0aW9ufG51bGwpJyxcbiAgbGVmdENhbGxiYWNrOiAnKGZ1bmN0aW9ufG51bGwpJyxcbiAgcmlnaHRDYWxsYmFjazogJyhmdW5jdGlvbnxudWxsKSdcbn07XG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBTd2lwZSBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7XG5cbiAgICBpZiAoIWVsZW1lbnQgfHwgIVN3aXBlLmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLl9kZWx0YVggPSAwO1xuICAgIHRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzID0gQm9vbGVhbih3aW5kb3cuUG9pbnRlckV2ZW50KTtcblxuICAgIHRoaXMuX2luaXRFdmVudHMoKTtcbiAgfSAvLyBHZXR0ZXJzXG5cblxuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkYztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJGM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkZDtcbiAgfSAvLyBQdWJsaWNcblxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVkkOSk7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX3N0YXJ0KGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLl9zdXBwb3J0UG9pbnRlckV2ZW50cykge1xuICAgICAgdGhpcy5fZGVsdGFYID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ldmVudElzUG9pbnRlclBlblRvdWNoKGV2ZW50KSkge1xuICAgICAgdGhpcy5fZGVsdGFYID0gZXZlbnQuY2xpZW50WDtcbiAgICB9XG4gIH1cblxuICBfZW5kKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX2V2ZW50SXNQb2ludGVyUGVuVG91Y2goZXZlbnQpKSB7XG4gICAgICB0aGlzLl9kZWx0YVggPSBldmVudC5jbGllbnRYIC0gdGhpcy5fZGVsdGFYO1xuICAgIH1cblxuICAgIHRoaXMuX2hhbmRsZVN3aXBlKCk7XG5cbiAgICBleGVjdXRlKHRoaXMuX2NvbmZpZy5lbmRDYWxsYmFjayk7XG4gIH1cblxuICBfbW92ZShldmVudCkge1xuICAgIHRoaXMuX2RlbHRhWCA9IGV2ZW50LnRvdWNoZXMgJiYgZXZlbnQudG91Y2hlcy5sZW5ndGggPiAxID8gMCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCAtIHRoaXMuX2RlbHRhWDtcbiAgfVxuXG4gIF9oYW5kbGVTd2lwZSgpIHtcbiAgICBjb25zdCBhYnNEZWx0YVggPSBNYXRoLmFicyh0aGlzLl9kZWx0YVgpO1xuXG4gICAgaWYgKGFic0RlbHRhWCA8PSBTV0lQRV9USFJFU0hPTEQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSBhYnNEZWx0YVggLyB0aGlzLl9kZWx0YVg7XG4gICAgdGhpcy5fZGVsdGFYID0gMDtcblxuICAgIGlmICghZGlyZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXhlY3V0ZShkaXJlY3Rpb24gPiAwID8gdGhpcy5fY29uZmlnLnJpZ2h0Q2FsbGJhY2sgOiB0aGlzLl9jb25maWcubGVmdENhbGxiYWNrKTtcbiAgfVxuXG4gIF9pbml0RXZlbnRzKCkge1xuICAgIGlmICh0aGlzLl9zdXBwb3J0UG9pbnRlckV2ZW50cykge1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1BPSU5URVJET1dOLCBldmVudCA9PiB0aGlzLl9zdGFydChldmVudCkpO1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1BPSU5URVJVUCwgZXZlbnQgPT4gdGhpcy5fZW5kKGV2ZW50KSk7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1BPSU5URVJfRVZFTlQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfVE9VQ0hTVEFSVCwgZXZlbnQgPT4gdGhpcy5fc3RhcnQoZXZlbnQpKTtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9UT1VDSE1PVkUsIGV2ZW50ID0+IHRoaXMuX21vdmUoZXZlbnQpKTtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9UT1VDSEVORCwgZXZlbnQgPT4gdGhpcy5fZW5kKGV2ZW50KSk7XG4gICAgfVxuICB9XG5cbiAgX2V2ZW50SXNQb2ludGVyUGVuVG91Y2goZXZlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHMgJiYgKGV2ZW50LnBvaW50ZXJUeXBlID09PSBQT0lOVEVSX1RZUEVfUEVOIHx8IGV2ZW50LnBvaW50ZXJUeXBlID09PSBQT0lOVEVSX1RZUEVfVE9VQ0gpO1xuICB9IC8vIFN0YXRpY1xuXG5cbiAgc3RhdGljIGlzU3VwcG9ydGVkKCkge1xuICAgIHJldHVybiAnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMDtcbiAgfVxuXG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4wKTogY2Fyb3VzZWwuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJGMgPSAnY2Fyb3VzZWwnO1xuY29uc3QgREFUQV9LRVkkOCA9ICdicy5jYXJvdXNlbCc7XG5jb25zdCBFVkVOVF9LRVkkOCA9IGAuJHtEQVRBX0tFWSQ4fWA7XG5jb25zdCBEQVRBX0FQSV9LRVkkNSA9ICcuZGF0YS1hcGknO1xuY29uc3QgQVJST1dfTEVGVF9LRVkkMSA9ICdBcnJvd0xlZnQnO1xuY29uc3QgQVJST1dfUklHSFRfS0VZJDEgPSAnQXJyb3dSaWdodCc7XG5jb25zdCBUT1VDSEVWRU5UX0NPTVBBVF9XQUlUID0gNTAwOyAvLyBUaW1lIGZvciBtb3VzZSBjb21wYXQgZXZlbnRzIHRvIGZpcmUgYWZ0ZXIgdG91Y2hcblxuY29uc3QgT1JERVJfTkVYVCA9ICduZXh0JztcbmNvbnN0IE9SREVSX1BSRVYgPSAncHJldic7XG5jb25zdCBESVJFQ1RJT05fTEVGVCA9ICdsZWZ0JztcbmNvbnN0IERJUkVDVElPTl9SSUdIVCA9ICdyaWdodCc7XG5jb25zdCBFVkVOVF9TTElERSA9IGBzbGlkZSR7RVZFTlRfS0VZJDh9YDtcbmNvbnN0IEVWRU5UX1NMSUQgPSBgc2xpZCR7RVZFTlRfS0VZJDh9YDtcbmNvbnN0IEVWRU5UX0tFWURPV04kMSA9IGBrZXlkb3duJHtFVkVOVF9LRVkkOH1gO1xuY29uc3QgRVZFTlRfTU9VU0VFTlRFUiQxID0gYG1vdXNlZW50ZXIke0VWRU5UX0tFWSQ4fWA7XG5jb25zdCBFVkVOVF9NT1VTRUxFQVZFJDEgPSBgbW91c2VsZWF2ZSR7RVZFTlRfS0VZJDh9YDtcbmNvbnN0IEVWRU5UX0RSQUdfU1RBUlQgPSBgZHJhZ3N0YXJ0JHtFVkVOVF9LRVkkOH1gO1xuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSQzID0gYGxvYWQke0VWRU5UX0tFWSQ4fSR7REFUQV9BUElfS0VZJDV9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDUgPSBgY2xpY2ske0VWRU5UX0tFWSQ4fSR7REFUQV9BUElfS0VZJDV9YDtcbmNvbnN0IENMQVNTX05BTUVfQ0FST1VTRUwgPSAnY2Fyb3VzZWwnO1xuY29uc3QgQ0xBU1NfTkFNRV9BQ1RJVkUkMiA9ICdhY3RpdmUnO1xuY29uc3QgQ0xBU1NfTkFNRV9TTElERSA9ICdzbGlkZSc7XG5jb25zdCBDTEFTU19OQU1FX0VORCA9ICdjYXJvdXNlbC1pdGVtLWVuZCc7XG5jb25zdCBDTEFTU19OQU1FX1NUQVJUID0gJ2Nhcm91c2VsLWl0ZW0tc3RhcnQnO1xuY29uc3QgQ0xBU1NfTkFNRV9ORVhUID0gJ2Nhcm91c2VsLWl0ZW0tbmV4dCc7XG5jb25zdCBDTEFTU19OQU1FX1BSRVYgPSAnY2Fyb3VzZWwtaXRlbS1wcmV2JztcbmNvbnN0IFNFTEVDVE9SX0FDVElWRSA9ICcuYWN0aXZlJztcbmNvbnN0IFNFTEVDVE9SX0lURU0gPSAnLmNhcm91c2VsLWl0ZW0nO1xuY29uc3QgU0VMRUNUT1JfQUNUSVZFX0lURU0gPSBTRUxFQ1RPUl9BQ1RJVkUgKyBTRUxFQ1RPUl9JVEVNO1xuY29uc3QgU0VMRUNUT1JfSVRFTV9JTUcgPSAnLmNhcm91c2VsLWl0ZW0gaW1nJztcbmNvbnN0IFNFTEVDVE9SX0lORElDQVRPUlMgPSAnLmNhcm91c2VsLWluZGljYXRvcnMnO1xuY29uc3QgU0VMRUNUT1JfREFUQV9TTElERSA9ICdbZGF0YS1icy1zbGlkZV0sIFtkYXRhLWJzLXNsaWRlLXRvXSc7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1JJREUgPSAnW2RhdGEtYnMtcmlkZT1cImNhcm91c2VsXCJdJztcbmNvbnN0IEtFWV9UT19ESVJFQ1RJT04gPSB7XG4gIFtBUlJPV19MRUZUX0tFWSQxXTogRElSRUNUSU9OX1JJR0hULFxuICBbQVJST1dfUklHSFRfS0VZJDFdOiBESVJFQ1RJT05fTEVGVFxufTtcbmNvbnN0IERlZmF1bHQkYiA9IHtcbiAgaW50ZXJ2YWw6IDUwMDAsXG4gIGtleWJvYXJkOiB0cnVlLFxuICBwYXVzZTogJ2hvdmVyJyxcbiAgcmlkZTogZmFsc2UsXG4gIHRvdWNoOiB0cnVlLFxuICB3cmFwOiB0cnVlXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkYiA9IHtcbiAgaW50ZXJ2YWw6ICcobnVtYmVyfGJvb2xlYW4pJyxcbiAgLy8gVE9ETzp2NiByZW1vdmUgYm9vbGVhbiBzdXBwb3J0XG4gIGtleWJvYXJkOiAnYm9vbGVhbicsXG4gIHBhdXNlOiAnKHN0cmluZ3xib29sZWFuKScsXG4gIHJpZGU6ICcoYm9vbGVhbnxzdHJpbmcpJyxcbiAgdG91Y2g6ICdib29sZWFuJyxcbiAgd3JhcDogJ2Jvb2xlYW4nXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQ2Fyb3VzZWwgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcbiAgICB0aGlzLl9pbnRlcnZhbCA9IG51bGw7XG4gICAgdGhpcy5fYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5faXNTbGlkaW5nID0gZmFsc2U7XG4gICAgdGhpcy50b3VjaFRpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMuX3N3aXBlSGVscGVyID0gbnVsbDtcbiAgICB0aGlzLl9pbmRpY2F0b3JzRWxlbWVudCA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfSU5ESUNBVE9SUywgdGhpcy5fZWxlbWVudCk7XG5cbiAgICB0aGlzLl9hZGRFdmVudExpc3RlbmVycygpO1xuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5yaWRlID09PSBDTEFTU19OQU1FX0NBUk9VU0VMKSB7XG4gICAgICB0aGlzLmN5Y2xlKCk7XG4gICAgfVxuICB9IC8vIEdldHRlcnNcblxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCRiO1xuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkYjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSRjO1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLl9zbGlkZShPUkRFUl9ORVhUKTtcbiAgfVxuXG4gIG5leHRXaGVuVmlzaWJsZSgpIHtcbiAgICAvLyBGSVhNRSBUT0RPIHVzZSBgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlYFxuICAgIC8vIERvbid0IGNhbGwgbmV4dCB3aGVuIHRoZSBwYWdlIGlzbid0IHZpc2libGVcbiAgICAvLyBvciB0aGUgY2Fyb3VzZWwgb3IgaXRzIHBhcmVudCBpc24ndCB2aXNpYmxlXG4gICAgaWYgKCFkb2N1bWVudC5oaWRkZW4gJiYgaXNWaXNpYmxlKHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICB0aGlzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcmV2KCkge1xuICAgIHRoaXMuX3NsaWRlKE9SREVSX1BSRVYpO1xuICB9XG5cbiAgcGF1c2UoKSB7XG4gICAgaWYgKHRoaXMuX2lzU2xpZGluZykge1xuICAgICAgdHJpZ2dlclRyYW5zaXRpb25FbmQodGhpcy5fZWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xuICB9XG5cbiAgY3ljbGUoKSB7XG4gICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xuXG4gICAgdGhpcy5fdXBkYXRlSW50ZXJ2YWwoKTtcblxuICAgIHRoaXMuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5uZXh0V2hlblZpc2libGUoKSwgdGhpcy5fY29uZmlnLmludGVydmFsKTtcbiAgfVxuXG4gIF9tYXliZUVuYWJsZUN5Y2xlKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnJpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNTbGlkaW5nKSB7XG4gICAgICBFdmVudEhhbmRsZXIub25lKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NMSUQsICgpID0+IHRoaXMuY3ljbGUoKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jeWNsZSgpO1xuICB9XG5cbiAgdG8oaW5kZXgpIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuX2dldEl0ZW1zKCk7XG5cbiAgICBpZiAoaW5kZXggPiBpdGVtcy5sZW5ndGggLSAxIHx8IGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc1NsaWRpbmcpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbmUodGhpcy5fZWxlbWVudCwgRVZFTlRfU0xJRCwgKCkgPT4gdGhpcy50byhpbmRleCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5fZ2V0SXRlbUluZGV4KHRoaXMuX2dldEFjdGl2ZSgpKTtcblxuICAgIGlmIChhY3RpdmVJbmRleCA9PT0gaW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmRlciA9IGluZGV4ID4gYWN0aXZlSW5kZXggPyBPUkRFUl9ORVhUIDogT1JERVJfUFJFVjtcblxuICAgIHRoaXMuX3NsaWRlKG9yZGVyLCBpdGVtc1tpbmRleF0pO1xuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBpZiAodGhpcy5fc3dpcGVIZWxwZXIpIHtcbiAgICAgIHRoaXMuX3N3aXBlSGVscGVyLmRpc3Bvc2UoKTtcbiAgICB9XG5cbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgY29uZmlnLmRlZmF1bHRJbnRlcnZhbCA9IGNvbmZpZy5pbnRlcnZhbDtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgX2FkZEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIGlmICh0aGlzLl9jb25maWcua2V5Ym9hcmQpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVlET1dOJDEsIGV2ZW50ID0+IHRoaXMuX2tleWRvd24oZXZlbnQpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnBhdXNlID09PSAnaG92ZXInKSB7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VFTlRFUiQxLCAoKSA9PiB0aGlzLnBhdXNlKCkpO1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFTEVBVkUkMSwgKCkgPT4gdGhpcy5fbWF5YmVFbmFibGVDeWNsZSgpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnRvdWNoICYmIFN3aXBlLmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgIHRoaXMuX2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBfYWRkVG91Y2hFdmVudExpc3RlbmVycygpIHtcbiAgICBmb3IgKGNvbnN0IGltZyBvZiBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0lURU1fSU1HLCB0aGlzLl9lbGVtZW50KSkge1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKGltZywgRVZFTlRfRFJBR19TVEFSVCwgZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZW5kQ2FsbEJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY29uZmlnLnBhdXNlICE9PSAnaG92ZXInKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gSWYgaXQncyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlLCBtb3VzZWVudGVyL2xlYXZlIGFyZSBmaXJlZCBhc1xuICAgICAgLy8gcGFydCBvZiB0aGUgbW91c2UgY29tcGF0aWJpbGl0eSBldmVudHMgb24gZmlyc3QgdGFwIC0gdGhlIGNhcm91c2VsXG4gICAgICAvLyB3b3VsZCBzdG9wIGN5Y2xpbmcgdW50aWwgdXNlciB0YXBwZWQgb3V0IG9mIGl0O1xuICAgICAgLy8gaGVyZSwgd2UgbGlzdGVuIGZvciB0b3VjaGVuZCwgZXhwbGljaXRseSBwYXVzZSB0aGUgY2Fyb3VzZWxcbiAgICAgIC8vIChhcyBpZiBpdCdzIHRoZSBzZWNvbmQgdGltZSB3ZSB0YXAgb24gaXQsIG1vdXNlZW50ZXIgY29tcGF0IGV2ZW50XG4gICAgICAvLyBpcyBOT1QgZmlyZWQpIGFuZCBhZnRlciBhIHRpbWVvdXQgKHRvIGFsbG93IGZvciBtb3VzZSBjb21wYXRpYmlsaXR5XG4gICAgICAvLyBldmVudHMgdG8gZmlyZSkgd2UgZXhwbGljaXRseSByZXN0YXJ0IGN5Y2xpbmdcblxuXG4gICAgICB0aGlzLnBhdXNlKCk7XG5cbiAgICAgIGlmICh0aGlzLnRvdWNoVGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRvdWNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fbWF5YmVFbmFibGVDeWNsZSgpLCBUT1VDSEVWRU5UX0NPTVBBVF9XQUlUICsgdGhpcy5fY29uZmlnLmludGVydmFsKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc3dpcGVDb25maWcgPSB7XG4gICAgICBsZWZ0Q2FsbGJhY2s6ICgpID0+IHRoaXMuX3NsaWRlKHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoRElSRUNUSU9OX0xFRlQpKSxcbiAgICAgIHJpZ2h0Q2FsbGJhY2s6ICgpID0+IHRoaXMuX3NsaWRlKHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoRElSRUNUSU9OX1JJR0hUKSksXG4gICAgICBlbmRDYWxsYmFjazogZW5kQ2FsbEJhY2tcbiAgICB9O1xuICAgIHRoaXMuX3N3aXBlSGVscGVyID0gbmV3IFN3aXBlKHRoaXMuX2VsZW1lbnQsIHN3aXBlQ29uZmlnKTtcbiAgfVxuXG4gIF9rZXlkb3duKGV2ZW50KSB7XG4gICAgaWYgKC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZXZlbnQudGFyZ2V0LnRhZ05hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gS0VZX1RPX0RJUkVDVElPTltldmVudC5rZXldO1xuXG4gICAgaWYgKGRpcmVjdGlvbikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgdGhpcy5fc2xpZGUodGhpcy5fZGlyZWN0aW9uVG9PcmRlcihkaXJlY3Rpb24pKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0SXRlbUluZGV4KGVsZW1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0SXRlbXMoKS5pbmRleE9mKGVsZW1lbnQpO1xuICB9XG5cbiAgX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQoaW5kZXgpIHtcbiAgICBpZiAoIXRoaXMuX2luZGljYXRvcnNFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlSW5kaWNhdG9yID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9BQ1RJVkUsIHRoaXMuX2luZGljYXRvcnNFbGVtZW50KTtcbiAgICBhY3RpdmVJbmRpY2F0b3IuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSQyKTtcbiAgICBhY3RpdmVJbmRpY2F0b3IucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnKTtcbiAgICBjb25zdCBuZXdBY3RpdmVJbmRpY2F0b3IgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKGBbZGF0YS1icy1zbGlkZS10bz1cIiR7aW5kZXh9XCJdYCwgdGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpO1xuXG4gICAgaWYgKG5ld0FjdGl2ZUluZGljYXRvcikge1xuICAgICAgbmV3QWN0aXZlSW5kaWNhdG9yLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUkMik7XG4gICAgICBuZXdBY3RpdmVJbmRpY2F0b3Iuc2V0QXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnLCAndHJ1ZScpO1xuICAgIH1cbiAgfVxuXG4gIF91cGRhdGVJbnRlcnZhbCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fYWN0aXZlRWxlbWVudCB8fCB0aGlzLl9nZXRBY3RpdmUoKTtcblxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRJbnRlcnZhbCA9IE51bWJlci5wYXJzZUludChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1icy1pbnRlcnZhbCcpLCAxMCk7XG4gICAgdGhpcy5fY29uZmlnLmludGVydmFsID0gZWxlbWVudEludGVydmFsIHx8IHRoaXMuX2NvbmZpZy5kZWZhdWx0SW50ZXJ2YWw7XG4gIH1cblxuICBfc2xpZGUob3JkZXIsIGVsZW1lbnQgPSBudWxsKSB7XG4gICAgaWYgKHRoaXMuX2lzU2xpZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLl9nZXRBY3RpdmUoKTtcblxuICAgIGNvbnN0IGlzTmV4dCA9IG9yZGVyID09PSBPUkRFUl9ORVhUO1xuICAgIGNvbnN0IG5leHRFbGVtZW50ID0gZWxlbWVudCB8fCBnZXROZXh0QWN0aXZlRWxlbWVudCh0aGlzLl9nZXRJdGVtcygpLCBhY3RpdmVFbGVtZW50LCBpc05leHQsIHRoaXMuX2NvbmZpZy53cmFwKTtcblxuICAgIGlmIChuZXh0RWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRFbGVtZW50SW5kZXggPSB0aGlzLl9nZXRJdGVtSW5kZXgobmV4dEVsZW1lbnQpO1xuXG4gICAgY29uc3QgdHJpZ2dlckV2ZW50ID0gZXZlbnROYW1lID0+IHtcbiAgICAgIHJldHVybiBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBldmVudE5hbWUsIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldDogbmV4dEVsZW1lbnQsXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5fb3JkZXJUb0RpcmVjdGlvbihvcmRlciksXG4gICAgICAgIGZyb206IHRoaXMuX2dldEl0ZW1JbmRleChhY3RpdmVFbGVtZW50KSxcbiAgICAgICAgdG86IG5leHRFbGVtZW50SW5kZXhcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBzbGlkZUV2ZW50ID0gdHJpZ2dlckV2ZW50KEVWRU5UX1NMSURFKTtcblxuICAgIGlmIChzbGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWFjdGl2ZUVsZW1lbnQgfHwgIW5leHRFbGVtZW50KSB7XG4gICAgICAvLyBTb21lIHdlaXJkbmVzcyBpcyBoYXBwZW5pbmcsIHNvIHdlIGJhaWxcbiAgICAgIC8vIHRvZG86IGNoYW5nZSB0ZXN0cyB0aGF0IHVzZSBlbXB0eSBkaXZzIHRvIGF2b2lkIHRoaXMgY2hlY2tcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0N5Y2xpbmcgPSBCb29sZWFuKHRoaXMuX2ludGVydmFsKTtcbiAgICB0aGlzLnBhdXNlKCk7XG4gICAgdGhpcy5faXNTbGlkaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQobmV4dEVsZW1lbnRJbmRleCk7XG5cbiAgICB0aGlzLl9hY3RpdmVFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgY29uc3QgZGlyZWN0aW9uYWxDbGFzc05hbWUgPSBpc05leHQgPyBDTEFTU19OQU1FX1NUQVJUIDogQ0xBU1NfTkFNRV9FTkQ7XG4gICAgY29uc3Qgb3JkZXJDbGFzc05hbWUgPSBpc05leHQgPyBDTEFTU19OQU1FX05FWFQgOiBDTEFTU19OQU1FX1BSRVY7XG4gICAgbmV4dEVsZW1lbnQuY2xhc3NMaXN0LmFkZChvcmRlckNsYXNzTmFtZSk7XG4gICAgcmVmbG93KG5leHRFbGVtZW50KTtcbiAgICBhY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoZGlyZWN0aW9uYWxDbGFzc05hbWUpO1xuICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5hZGQoZGlyZWN0aW9uYWxDbGFzc05hbWUpO1xuXG4gICAgY29uc3QgY29tcGxldGVDYWxsQmFjayA9ICgpID0+IHtcbiAgICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZGlyZWN0aW9uYWxDbGFzc05hbWUsIG9yZGVyQ2xhc3NOYW1lKTtcbiAgICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUkMik7XG4gICAgICBhY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9BQ1RJVkUkMiwgb3JkZXJDbGFzc05hbWUsIGRpcmVjdGlvbmFsQ2xhc3NOYW1lKTtcbiAgICAgIHRoaXMuX2lzU2xpZGluZyA9IGZhbHNlO1xuICAgICAgdHJpZ2dlckV2ZW50KEVWRU5UX1NMSUQpO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlQ2FsbEJhY2ssIGFjdGl2ZUVsZW1lbnQsIHRoaXMuX2lzQW5pbWF0ZWQoKSk7XG5cbiAgICBpZiAoaXNDeWNsaW5nKSB7XG4gICAgICB0aGlzLmN5Y2xlKCk7XG4gICAgfVxuICB9XG5cbiAgX2lzQW5pbWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0xJREUpO1xuICB9XG5cbiAgX2dldEFjdGl2ZSgpIHtcbiAgICByZXR1cm4gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9BQ1RJVkVfSVRFTSwgdGhpcy5fZWxlbWVudCk7XG4gIH1cblxuICBfZ2V0SXRlbXMoKSB7XG4gICAgcmV0dXJuIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfSVRFTSwgdGhpcy5fZWxlbWVudCk7XG4gIH1cblxuICBfY2xlYXJJbnRlcnZhbCgpIHtcbiAgICBpZiAodGhpcy5faW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWwpO1xuICAgICAgdGhpcy5faW50ZXJ2YWwgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIF9kaXJlY3Rpb25Ub09yZGVyKGRpcmVjdGlvbikge1xuICAgIGlmIChpc1JUTCgpKSB7XG4gICAgICByZXR1cm4gZGlyZWN0aW9uID09PSBESVJFQ1RJT05fTEVGVCA/IE9SREVSX1BSRVYgOiBPUkRFUl9ORVhUO1xuICAgIH1cblxuICAgIHJldHVybiBkaXJlY3Rpb24gPT09IERJUkVDVElPTl9MRUZUID8gT1JERVJfTkVYVCA6IE9SREVSX1BSRVY7XG4gIH1cblxuICBfb3JkZXJUb0RpcmVjdGlvbihvcmRlcikge1xuICAgIGlmIChpc1JUTCgpKSB7XG4gICAgICByZXR1cm4gb3JkZXIgPT09IE9SREVSX1BSRVYgPyBESVJFQ1RJT05fTEVGVCA6IERJUkVDVElPTl9SSUdIVDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXIgPT09IE9SREVSX1BSRVYgPyBESVJFQ1RJT05fUklHSFQgOiBESVJFQ1RJT05fTEVGVDtcbiAgfSAvLyBTdGF0aWNcblxuXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gQ2Fyb3VzZWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgZGF0YS50byhjb25maWcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoZGF0YVtjb25maWddID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnN0YXJ0c1dpdGgoJ18nKSB8fCBjb25maWcgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSQ1LCBTRUxFQ1RPUl9EQVRBX1NMSURFLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgY29uc3QgdGFyZ2V0ID0gZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKTtcblxuICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0NBUk9VU0VMKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIGNvbnN0IGNhcm91c2VsID0gQ2Fyb3VzZWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpO1xuICBjb25zdCBzbGlkZUluZGV4ID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtc2xpZGUtdG8nKTtcblxuICBpZiAoc2xpZGVJbmRleCkge1xuICAgIGNhcm91c2VsLnRvKHNsaWRlSW5kZXgpO1xuXG4gICAgY2Fyb3VzZWwuX21heWJlRW5hYmxlQ3ljbGUoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlKHRoaXMsICdzbGlkZScpID09PSAnbmV4dCcpIHtcbiAgICBjYXJvdXNlbC5uZXh0KCk7XG5cbiAgICBjYXJvdXNlbC5fbWF5YmVFbmFibGVDeWNsZSgpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY2Fyb3VzZWwucHJldigpO1xuXG4gIGNhcm91c2VsLl9tYXliZUVuYWJsZUN5Y2xlKCk7XG59KTtcbkV2ZW50SGFuZGxlci5vbih3aW5kb3csIEVWRU5UX0xPQURfREFUQV9BUEkkMywgKCkgPT4ge1xuICBjb25zdCBjYXJvdXNlbHMgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfUklERSk7XG5cbiAgZm9yIChjb25zdCBjYXJvdXNlbCBvZiBjYXJvdXNlbHMpIHtcbiAgICBDYXJvdXNlbC5nZXRPckNyZWF0ZUluc3RhbmNlKGNhcm91c2VsKTtcbiAgfVxufSk7XG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihDYXJvdXNlbCk7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4wKTogY29sbGFwc2UuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJGIgPSAnY29sbGFwc2UnO1xuY29uc3QgREFUQV9LRVkkNyA9ICdicy5jb2xsYXBzZSc7XG5jb25zdCBFVkVOVF9LRVkkNyA9IGAuJHtEQVRBX0tFWSQ3fWA7XG5jb25zdCBEQVRBX0FQSV9LRVkkNCA9ICcuZGF0YS1hcGknO1xuY29uc3QgRVZFTlRfU0hPVyQ2ID0gYHNob3cke0VWRU5UX0tFWSQ3fWA7XG5jb25zdCBFVkVOVF9TSE9XTiQ2ID0gYHNob3duJHtFVkVOVF9LRVkkN31gO1xuY29uc3QgRVZFTlRfSElERSQ2ID0gYGhpZGUke0VWRU5UX0tFWSQ3fWA7XG5jb25zdCBFVkVOVF9ISURERU4kNiA9IGBoaWRkZW4ke0VWRU5UX0tFWSQ3fWA7XG5jb25zdCBFVkVOVF9DTElDS19EQVRBX0FQSSQ0ID0gYGNsaWNrJHtFVkVOVF9LRVkkN30ke0RBVEFfQVBJX0tFWSQ0fWA7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckNyA9ICdzaG93JztcbmNvbnN0IENMQVNTX05BTUVfQ09MTEFQU0UgPSAnY29sbGFwc2UnO1xuY29uc3QgQ0xBU1NfTkFNRV9DT0xMQVBTSU5HID0gJ2NvbGxhcHNpbmcnO1xuY29uc3QgQ0xBU1NfTkFNRV9DT0xMQVBTRUQgPSAnY29sbGFwc2VkJztcbmNvbnN0IENMQVNTX05BTUVfREVFUEVSX0NISUxEUkVOID0gYDpzY29wZSAuJHtDTEFTU19OQU1FX0NPTExBUFNFfSAuJHtDTEFTU19OQU1FX0NPTExBUFNFfWA7XG5jb25zdCBDTEFTU19OQU1FX0hPUklaT05UQUwgPSAnY29sbGFwc2UtaG9yaXpvbnRhbCc7XG5jb25zdCBXSURUSCA9ICd3aWR0aCc7XG5jb25zdCBIRUlHSFQgPSAnaGVpZ2h0JztcbmNvbnN0IFNFTEVDVE9SX0FDVElWRVMgPSAnLmNvbGxhcHNlLnNob3csIC5jb2xsYXBzZS5jb2xsYXBzaW5nJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFJDQgPSAnW2RhdGEtYnMtdG9nZ2xlPVwiY29sbGFwc2VcIl0nO1xuY29uc3QgRGVmYXVsdCRhID0ge1xuICBwYXJlbnQ6IG51bGwsXG4gIHRvZ2dsZTogdHJ1ZVxufTtcbmNvbnN0IERlZmF1bHRUeXBlJGEgPSB7XG4gIHBhcmVudDogJyhudWxsfGVsZW1lbnQpJyxcbiAgdG9nZ2xlOiAnYm9vbGVhbidcbn07XG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBDb2xsYXBzZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3RyaWdnZXJBcnJheSA9IFtdO1xuICAgIGNvbnN0IHRvZ2dsZUxpc3QgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfVE9HR0xFJDQpO1xuXG4gICAgZm9yIChjb25zdCBlbGVtIG9mIHRvZ2dsZUxpc3QpIHtcbiAgICAgIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3JGcm9tRWxlbWVudChlbGVtKTtcbiAgICAgIGNvbnN0IGZpbHRlckVsZW1lbnQgPSBTZWxlY3RvckVuZ2luZS5maW5kKHNlbGVjdG9yKS5maWx0ZXIoZm91bmRFbGVtZW50ID0+IGZvdW5kRWxlbWVudCA9PT0gdGhpcy5fZWxlbWVudCk7XG5cbiAgICAgIGlmIChzZWxlY3RvciAhPT0gbnVsbCAmJiBmaWx0ZXJFbGVtZW50Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLl90cmlnZ2VyQXJyYXkucHVzaChlbGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9pbml0aWFsaXplQ2hpbGRyZW4oKTtcblxuICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmVudCkge1xuICAgICAgdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuX3RyaWdnZXJBcnJheSwgdGhpcy5faXNTaG93bigpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnRvZ2dsZSkge1xuICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICB9XG4gIH0gLy8gR2V0dGVyc1xuXG5cbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JGE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSRhO1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJGI7XG4gIH0gLy8gUHVibGljXG5cblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIHNob3coKSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCB0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgYWN0aXZlQ2hpbGRyZW4gPSBbXTsgLy8gZmluZCBhY3RpdmUgY2hpbGRyZW5cblxuICAgIGlmICh0aGlzLl9jb25maWcucGFyZW50KSB7XG4gICAgICBhY3RpdmVDaGlsZHJlbiA9IHRoaXMuX2dldEZpcnN0TGV2ZWxDaGlsZHJlbihTRUxFQ1RPUl9BQ1RJVkVTKS5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50ICE9PSB0aGlzLl9lbGVtZW50KS5tYXAoZWxlbWVudCA9PiBDb2xsYXBzZS5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQsIHtcbiAgICAgICAgdG9nZ2xlOiBmYWxzZVxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChhY3RpdmVDaGlsZHJlbi5sZW5ndGggJiYgYWN0aXZlQ2hpbGRyZW5bMF0uX2lzVHJhbnNpdGlvbmluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XJDYpO1xuXG4gICAgaWYgKHN0YXJ0RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgYWN0aXZlSW5zdGFuY2Ugb2YgYWN0aXZlQ2hpbGRyZW4pIHtcbiAgICAgIGFjdGl2ZUluc3RhbmNlLmhpZGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLl9nZXREaW1lbnNpb24oKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNFKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gMDtcblxuICAgIHRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0aGlzLl90cmlnZ2VyQXJyYXksIHRydWUpO1xuXG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9DT0xMQVBTRSwgQ0xBU1NfTkFNRV9TSE9XJDcpO1xuXG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSAnJztcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1dOJDYpO1xuICAgIH07XG5cbiAgICBjb25zdCBjYXBpdGFsaXplZERpbWVuc2lvbiA9IGRpbWVuc2lvblswXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKDEpO1xuICAgIGNvbnN0IHNjcm9sbFNpemUgPSBgc2Nyb2xsJHtjYXBpdGFsaXplZERpbWVuc2lvbn1gO1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdHJ1ZSk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSBgJHt0aGlzLl9lbGVtZW50W3Njcm9sbFNpemVdfXB4YDtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCAhdGhpcy5faXNTaG93bigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREUkNik7XG5cbiAgICBpZiAoc3RhcnRFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGltZW5zaW9uID0gdGhpcy5fZ2V0RGltZW5zaW9uKCk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSBgJHt0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2RpbWVuc2lvbl19cHhgO1xuICAgIHJlZmxvdyh0aGlzLl9lbGVtZW50KTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQ09MTEFQU0UsIENMQVNTX05BTUVfU0hPVyQ3KTtcblxuICAgIGZvciAoY29uc3QgdHJpZ2dlciBvZiB0aGlzLl90cmlnZ2VyQXJyYXkpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRyaWdnZXIpO1xuXG4gICAgICBpZiAoZWxlbWVudCAmJiAhdGhpcy5faXNTaG93bihlbGVtZW50KSkge1xuICAgICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW3RyaWdnZXJdLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9DT0xMQVBTRSk7XG5cbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTiQ2KTtcbiAgICB9O1xuXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gJyc7XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLl9lbGVtZW50LCB0cnVlKTtcbiAgfVxuXG4gIF9pc1Nob3duKGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0hPVyQ3KTtcbiAgfSAvLyBQcml2YXRlXG5cblxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICBjb25maWcudG9nZ2xlID0gQm9vbGVhbihjb25maWcudG9nZ2xlKTsgLy8gQ29lcmNlIHN0cmluZyB2YWx1ZXNcblxuICAgIGNvbmZpZy5wYXJlbnQgPSBnZXRFbGVtZW50KGNvbmZpZy5wYXJlbnQpO1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBfZ2V0RGltZW5zaW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0hPUklaT05UQUwpID8gV0lEVEggOiBIRUlHSFQ7XG4gIH1cblxuICBfaW5pdGlhbGl6ZUNoaWxkcmVuKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5fZ2V0Rmlyc3RMZXZlbENoaWxkcmVuKFNFTEVDVE9SX0RBVEFfVE9HR0xFJDQpO1xuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IoZWxlbWVudCk7XG5cbiAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW2VsZW1lbnRdLCB0aGlzLl9pc1Nob3duKHNlbGVjdGVkKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2dldEZpcnN0TGV2ZWxDaGlsZHJlbihzZWxlY3Rvcikge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gU2VsZWN0b3JFbmdpbmUuZmluZChDTEFTU19OQU1FX0RFRVBFUl9DSElMRFJFTiwgdGhpcy5fY29uZmlnLnBhcmVudCk7IC8vIHJlbW92ZSBjaGlsZHJlbiBpZiBncmVhdGVyIGRlcHRoXG5cbiAgICByZXR1cm4gU2VsZWN0b3JFbmdpbmUuZmluZChzZWxlY3RvciwgdGhpcy5fY29uZmlnLnBhcmVudCkuZmlsdGVyKGVsZW1lbnQgPT4gIWNoaWxkcmVuLmluY2x1ZGVzKGVsZW1lbnQpKTtcbiAgfVxuXG4gIF9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModHJpZ2dlckFycmF5LCBpc09wZW4pIHtcbiAgICBpZiAoIXRyaWdnZXJBcnJheS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdHJpZ2dlckFycmF5KSB7XG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoQ0xBU1NfTkFNRV9DT0xMQVBTRUQsICFpc09wZW4pO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBpc09wZW4pO1xuICAgIH1cbiAgfSAvLyBTdGF0aWNcblxuXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgY29uc3QgX2NvbmZpZyA9IHt9O1xuXG4gICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnICYmIC9zaG93fGhpZGUvLnRlc3QoY29uZmlnKSkge1xuICAgICAgX2NvbmZpZy50b2dnbGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBDb2xsYXBzZS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIF9jb25maWcpO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkNCwgU0VMRUNUT1JfREFUQV9UT0dHTEUkNCwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIC8vIHByZXZlbnREZWZhdWx0IG9ubHkgZm9yIDxhPiBlbGVtZW50cyAod2hpY2ggY2hhbmdlIHRoZSBVUkwpIG5vdCBpbnNpZGUgdGhlIGNvbGxhcHNpYmxlIGVsZW1lbnRcbiAgaWYgKGV2ZW50LnRhcmdldC50YWdOYW1lID09PSAnQScgfHwgZXZlbnQuZGVsZWdhdGVUYXJnZXQgJiYgZXZlbnQuZGVsZWdhdGVUYXJnZXQudGFnTmFtZSA9PT0gJ0EnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0aGlzKTtcbiAgY29uc3Qgc2VsZWN0b3JFbGVtZW50cyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoc2VsZWN0b3IpO1xuXG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBzZWxlY3RvckVsZW1lbnRzKSB7XG4gICAgQ29sbGFwc2UuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50LCB7XG4gICAgICB0b2dnbGU6IGZhbHNlXG4gICAgfSkudG9nZ2xlKCk7XG4gIH1cbn0pO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oQ29sbGFwc2UpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMCk6IGRyb3Bkb3duLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSRhID0gJ2Ryb3Bkb3duJztcbmNvbnN0IERBVEFfS0VZJDYgPSAnYnMuZHJvcGRvd24nO1xuY29uc3QgRVZFTlRfS0VZJDYgPSBgLiR7REFUQV9LRVkkNn1gO1xuY29uc3QgREFUQV9BUElfS0VZJDMgPSAnLmRhdGEtYXBpJztcbmNvbnN0IEVTQ0FQRV9LRVkkMiA9ICdFc2NhcGUnO1xuY29uc3QgVEFCX0tFWSQxID0gJ1RhYic7XG5jb25zdCBBUlJPV19VUF9LRVkkMSA9ICdBcnJvd1VwJztcbmNvbnN0IEFSUk9XX0RPV05fS0VZJDEgPSAnQXJyb3dEb3duJztcbmNvbnN0IFJJR0hUX01PVVNFX0JVVFRPTiA9IDI7IC8vIE1vdXNlRXZlbnQuYnV0dG9uIHZhbHVlIGZvciB0aGUgc2Vjb25kYXJ5IGJ1dHRvbiwgdXN1YWxseSB0aGUgcmlnaHQgYnV0dG9uXG5cbmNvbnN0IEVWRU5UX0hJREUkNSA9IGBoaWRlJHtFVkVOVF9LRVkkNn1gO1xuY29uc3QgRVZFTlRfSElEREVOJDUgPSBgaGlkZGVuJHtFVkVOVF9LRVkkNn1gO1xuY29uc3QgRVZFTlRfU0hPVyQ1ID0gYHNob3cke0VWRU5UX0tFWSQ2fWA7XG5jb25zdCBFVkVOVF9TSE9XTiQ1ID0gYHNob3duJHtFVkVOVF9LRVkkNn1gO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMyA9IGBjbGljayR7RVZFTlRfS0VZJDZ9JHtEQVRBX0FQSV9LRVkkM31gO1xuY29uc3QgRVZFTlRfS0VZRE9XTl9EQVRBX0FQSSA9IGBrZXlkb3duJHtFVkVOVF9LRVkkNn0ke0RBVEFfQVBJX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9LRVlVUF9EQVRBX0FQSSA9IGBrZXl1cCR7RVZFTlRfS0VZJDZ9JHtEQVRBX0FQSV9LRVkkM31gO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XJDYgPSAnc2hvdyc7XG5jb25zdCBDTEFTU19OQU1FX0RST1BVUCA9ICdkcm9wdXAnO1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QRU5EID0gJ2Ryb3BlbmQnO1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QU1RBUlQgPSAnZHJvcHN0YXJ0JztcbmNvbnN0IENMQVNTX05BTUVfRFJPUFVQX0NFTlRFUiA9ICdkcm9wdXAtY2VudGVyJztcbmNvbnN0IENMQVNTX05BTUVfRFJPUERPV05fQ0VOVEVSID0gJ2Ryb3Bkb3duLWNlbnRlcic7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzID0gJ1tkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJdOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFX1NIT1dOID0gYCR7U0VMRUNUT1JfREFUQV9UT0dHTEUkM30uJHtDTEFTU19OQU1FX1NIT1ckNn1gO1xuY29uc3QgU0VMRUNUT1JfTUVOVSA9ICcuZHJvcGRvd24tbWVudSc7XG5jb25zdCBTRUxFQ1RPUl9OQVZCQVIgPSAnLm5hdmJhcic7XG5jb25zdCBTRUxFQ1RPUl9OQVZCQVJfTkFWID0gJy5uYXZiYXItbmF2JztcbmNvbnN0IFNFTEVDVE9SX1ZJU0lCTEVfSVRFTVMgPSAnLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCknO1xuY29uc3QgUExBQ0VNRU5UX1RPUCA9IGlzUlRMKCkgPyAndG9wLWVuZCcgOiAndG9wLXN0YXJ0JztcbmNvbnN0IFBMQUNFTUVOVF9UT1BFTkQgPSBpc1JUTCgpID8gJ3RvcC1zdGFydCcgOiAndG9wLWVuZCc7XG5jb25zdCBQTEFDRU1FTlRfQk9UVE9NID0gaXNSVEwoKSA/ICdib3R0b20tZW5kJyA6ICdib3R0b20tc3RhcnQnO1xuY29uc3QgUExBQ0VNRU5UX0JPVFRPTUVORCA9IGlzUlRMKCkgPyAnYm90dG9tLXN0YXJ0JyA6ICdib3R0b20tZW5kJztcbmNvbnN0IFBMQUNFTUVOVF9SSUdIVCA9IGlzUlRMKCkgPyAnbGVmdC1zdGFydCcgOiAncmlnaHQtc3RhcnQnO1xuY29uc3QgUExBQ0VNRU5UX0xFRlQgPSBpc1JUTCgpID8gJ3JpZ2h0LXN0YXJ0JyA6ICdsZWZ0LXN0YXJ0JztcbmNvbnN0IFBMQUNFTUVOVF9UT1BDRU5URVIgPSAndG9wJztcbmNvbnN0IFBMQUNFTUVOVF9CT1RUT01DRU5URVIgPSAnYm90dG9tJztcbmNvbnN0IERlZmF1bHQkOSA9IHtcbiAgYXV0b0Nsb3NlOiB0cnVlLFxuICBib3VuZGFyeTogJ2NsaXBwaW5nUGFyZW50cycsXG4gIGRpc3BsYXk6ICdkeW5hbWljJyxcbiAgb2Zmc2V0OiBbMCwgMl0sXG4gIHBvcHBlckNvbmZpZzogbnVsbCxcbiAgcmVmZXJlbmNlOiAndG9nZ2xlJ1xufTtcbmNvbnN0IERlZmF1bHRUeXBlJDkgPSB7XG4gIGF1dG9DbG9zZTogJyhib29sZWFufHN0cmluZyknLFxuICBib3VuZGFyeTogJyhzdHJpbmd8ZWxlbWVudCknLFxuICBkaXNwbGF5OiAnc3RyaW5nJyxcbiAgb2Zmc2V0OiAnKGFycmF5fHN0cmluZ3xmdW5jdGlvbiknLFxuICBwb3BwZXJDb25maWc6ICcobnVsbHxvYmplY3R8ZnVuY3Rpb24pJyxcbiAgcmVmZXJlbmNlOiAnKHN0cmluZ3xlbGVtZW50fG9iamVjdCknXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgRHJvcGRvd24gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcbiAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICAgIHRoaXMuX3BhcmVudCA9IHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZTsgLy8gZHJvcGRvd24gd3JhcHBlclxuXG4gICAgdGhpcy5fbWVudSA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfTUVOVSwgdGhpcy5fcGFyZW50KTtcbiAgICB0aGlzLl9pbk5hdmJhciA9IHRoaXMuX2RldGVjdE5hdmJhcigpO1xuICB9IC8vIEdldHRlcnNcblxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCQ5O1xuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkOTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSRhO1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgdG9nZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1Nob3duKCkgPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdygpO1xuICB9XG5cbiAgc2hvdygpIHtcbiAgICBpZiAoaXNEaXNhYmxlZCh0aGlzLl9lbGVtZW50KSB8fCB0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0ge1xuICAgICAgcmVsYXRlZFRhcmdldDogdGhpcy5fZWxlbWVudFxuICAgIH07XG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPVyQ1LCByZWxhdGVkVGFyZ2V0KTtcblxuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2NyZWF0ZVBvcHBlcigpOyAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgYWRkIGV4dHJhXG4gICAgLy8gZW1wdHkgbW91c2VvdmVyIGxpc3RlbmVycyB0byB0aGUgYm9keSdzIGltbWVkaWF0ZSBjaGlsZHJlbjtcbiAgICAvLyBvbmx5IG5lZWRlZCBiZWNhdXNlIG9mIGJyb2tlbiBldmVudCBkZWxlZ2F0aW9uIG9uIGlPU1xuICAgIC8vIGh0dHBzOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxNC8wMi9tb3VzZV9ldmVudF9idWIuaHRtbFxuXG5cbiAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmICF0aGlzLl9wYXJlbnQuY2xvc2VzdChTRUxFQ1RPUl9OQVZCQVJfTkFWKSkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSkge1xuICAgICAgICBFdmVudEhhbmRsZXIub24oZWxlbWVudCwgJ21vdXNlb3ZlcicsIG5vb3ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuZm9jdXMoKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgdHJ1ZSk7XG5cbiAgICB0aGlzLl9tZW51LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDYpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVyQ2KTtcblxuICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1dOJDUsIHJlbGF0ZWRUYXJnZXQpO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAoaXNEaXNhYmxlZCh0aGlzLl9lbGVtZW50KSB8fCAhdGhpcy5faXNTaG93bigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IHtcbiAgICAgIHJlbGF0ZWRUYXJnZXQ6IHRoaXMuX2VsZW1lbnRcbiAgICB9O1xuXG4gICAgdGhpcy5fY29tcGxldGVIaWRlKHJlbGF0ZWRUYXJnZXQpO1xuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBpZiAodGhpcy5fcG9wcGVyKSB7XG4gICAgICB0aGlzLl9wb3BwZXIuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHN1cGVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHVwZGF0ZSgpIHtcbiAgICB0aGlzLl9pbk5hdmJhciA9IHRoaXMuX2RldGVjdE5hdmJhcigpO1xuXG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLnVwZGF0ZSgpO1xuICAgIH1cbiAgfSAvLyBQcml2YXRlXG5cblxuICBfY29tcGxldGVIaWRlKHJlbGF0ZWRUYXJnZXQpIHtcbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFJDUsIHJlbGF0ZWRUYXJnZXQpO1xuXG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgcmVtb3ZlIHRoZSBleHRyYVxuICAgIC8vIGVtcHR5IG1vdXNlb3ZlciBsaXN0ZW5lcnMgd2UgYWRkZWQgZm9yIGlPUyBzdXBwb3J0XG5cblxuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikpIHtcbiAgICAgICAgRXZlbnRIYW5kbGVyLm9mZihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tZW51LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XJDYpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQ2KTtcblxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG5cbiAgICBNYW5pcHVsYXRvci5yZW1vdmVEYXRhQXR0cmlidXRlKHRoaXMuX21lbnUsICdwb3BwZXInKTtcbiAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4kNSwgcmVsYXRlZFRhcmdldCk7XG4gIH1cblxuICBfZ2V0Q29uZmlnKGNvbmZpZykge1xuICAgIGNvbmZpZyA9IHN1cGVyLl9nZXRDb25maWcoY29uZmlnKTtcblxuICAgIGlmICh0eXBlb2YgY29uZmlnLnJlZmVyZW5jZSA9PT0gJ29iamVjdCcgJiYgIWlzRWxlbWVudChjb25maWcucmVmZXJlbmNlKSAmJiB0eXBlb2YgY29uZmlnLnJlZmVyZW5jZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIFBvcHBlciB2aXJ0dWFsIGVsZW1lbnRzIHJlcXVpcmUgYSBnZXRCb3VuZGluZ0NsaWVudFJlY3QgbWV0aG9kXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke05BTUUkYS50b1VwcGVyQ2FzZSgpfTogT3B0aW9uIFwicmVmZXJlbmNlXCIgcHJvdmlkZWQgdHlwZSBcIm9iamVjdFwiIHdpdGhvdXQgYSByZXF1aXJlZCBcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiIG1ldGhvZC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgX2NyZWF0ZVBvcHBlcigpIHtcbiAgICBpZiAodHlwZW9mIFBvcHBlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Jvb3RzdHJhcFxcJ3MgZHJvcGRvd25zIHJlcXVpcmUgUG9wcGVyIChodHRwczovL3BvcHBlci5qcy5vcmcpJyk7XG4gICAgfVxuXG4gICAgbGV0IHJlZmVyZW5jZUVsZW1lbnQgPSB0aGlzLl9lbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UgPT09ICdwYXJlbnQnKSB7XG4gICAgICByZWZlcmVuY2VFbGVtZW50ID0gdGhpcy5fcGFyZW50O1xuICAgIH0gZWxzZSBpZiAoaXNFbGVtZW50KHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UpKSB7XG4gICAgICByZWZlcmVuY2VFbGVtZW50ID0gZ2V0RWxlbWVudCh0aGlzLl9jb25maWcucmVmZXJlbmNlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9jb25maWcucmVmZXJlbmNlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX2NvbmZpZy5yZWZlcmVuY2U7XG4gICAgfVxuXG4gICAgY29uc3QgcG9wcGVyQ29uZmlnID0gdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKCk7XG5cbiAgICB0aGlzLl9wb3BwZXIgPSBQb3BwZXIuY3JlYXRlUG9wcGVyKHJlZmVyZW5jZUVsZW1lbnQsIHRoaXMuX21lbnUsIHBvcHBlckNvbmZpZyk7XG4gIH1cblxuICBfaXNTaG93bigpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudS5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9TSE9XJDYpO1xuICB9XG5cbiAgX2dldFBsYWNlbWVudCgpIHtcbiAgICBjb25zdCBwYXJlbnREcm9wZG93biA9IHRoaXMuX3BhcmVudDtcblxuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QRU5EKSkge1xuICAgICAgcmV0dXJuIFBMQUNFTUVOVF9SSUdIVDtcbiAgICB9XG5cbiAgICBpZiAocGFyZW50RHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUFNUQVJUKSkge1xuICAgICAgcmV0dXJuIFBMQUNFTUVOVF9MRUZUO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QVVBfQ0VOVEVSKSkge1xuICAgICAgcmV0dXJuIFBMQUNFTUVOVF9UT1BDRU5URVI7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudERyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BET1dOX0NFTlRFUikpIHtcbiAgICAgIHJldHVybiBQTEFDRU1FTlRfQk9UVE9NQ0VOVEVSO1xuICAgIH0gLy8gV2UgbmVlZCB0byB0cmltIHRoZSB2YWx1ZSBiZWNhdXNlIGN1c3RvbSBwcm9wZXJ0aWVzIGNhbiBhbHNvIGluY2x1ZGUgc3BhY2VzXG5cblxuICAgIGNvbnN0IGlzRW5kID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9tZW51KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJzLXBvc2l0aW9uJykudHJpbSgpID09PSAnZW5kJztcblxuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QVVApKSB7XG4gICAgICByZXR1cm4gaXNFbmQgPyBQTEFDRU1FTlRfVE9QRU5EIDogUExBQ0VNRU5UX1RPUDtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNFbmQgPyBQTEFDRU1FTlRfQk9UVE9NRU5EIDogUExBQ0VNRU5UX0JPVFRPTTtcbiAgfVxuXG4gIF9kZXRlY3ROYXZiYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xvc2VzdChTRUxFQ1RPUl9OQVZCQVIpICE9PSBudWxsO1xuICB9XG5cbiAgX2dldE9mZnNldCgpIHtcbiAgICBjb25zdCB7XG4gICAgICBvZmZzZXRcbiAgICB9ID0gdGhpcy5fY29uZmlnO1xuXG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2Zmc2V0LnNwbGl0KCcsJykubWFwKHZhbHVlID0+IE51bWJlci5wYXJzZUludCh2YWx1ZSwgMTApKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHBvcHBlckRhdGEgPT4gb2Zmc2V0KHBvcHBlckRhdGEsIHRoaXMuX2VsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBvZmZzZXQ7XG4gIH1cblxuICBfZ2V0UG9wcGVyQ29uZmlnKCkge1xuICAgIGNvbnN0IGRlZmF1bHRCc1BvcHBlckNvbmZpZyA9IHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5fZ2V0UGxhY2VtZW50KCksXG4gICAgICBtb2RpZmllcnM6IFt7XG4gICAgICAgIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgYm91bmRhcnk6IHRoaXMuX2NvbmZpZy5ib3VuZGFyeVxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgb2Zmc2V0OiB0aGlzLl9nZXRPZmZzZXQoKVxuICAgICAgICB9XG4gICAgICB9XVxuICAgIH07IC8vIERpc2FibGUgUG9wcGVyIGlmIHdlIGhhdmUgYSBzdGF0aWMgZGlzcGxheSBvciBEcm9wZG93biBpcyBpbiBOYXZiYXJcblxuICAgIGlmICh0aGlzLl9pbk5hdmJhciB8fCB0aGlzLl9jb25maWcuZGlzcGxheSA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIE1hbmlwdWxhdG9yLnNldERhdGFBdHRyaWJ1dGUodGhpcy5fbWVudSwgJ3BvcHBlcicsICdzdGF0aWMnKTsgLy8gdG9kbzp2NiByZW1vdmVcblxuICAgICAgZGVmYXVsdEJzUG9wcGVyQ29uZmlnLm1vZGlmaWVycyA9IFt7XG4gICAgICAgIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gICAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgICB9XTtcbiAgICB9XG5cbiAgICByZXR1cm4geyAuLi5kZWZhdWx0QnNQb3BwZXJDb25maWcsXG4gICAgICAuLi4odHlwZW9mIHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcgPT09ICdmdW5jdGlvbicgPyB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnKGRlZmF1bHRCc1BvcHBlckNvbmZpZykgOiB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnKVxuICAgIH07XG4gIH1cblxuICBfc2VsZWN0TWVudUl0ZW0oe1xuICAgIGtleSxcbiAgICB0YXJnZXRcbiAgfSkge1xuICAgIGNvbnN0IGl0ZW1zID0gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9WSVNJQkxFX0lURU1TLCB0aGlzLl9tZW51KS5maWx0ZXIoZWxlbWVudCA9PiBpc1Zpc2libGUoZWxlbWVudCkpO1xuXG4gICAgaWYgKCFpdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGlmIHRhcmdldCBpc24ndCBpbmNsdWRlZCBpbiBpdGVtcyAoZS5nLiB3aGVuIGV4cGFuZGluZyB0aGUgZHJvcGRvd24pXG4gICAgLy8gYWxsb3cgY3ljbGluZyB0byBnZXQgdGhlIGxhc3QgaXRlbSBpbiBjYXNlIGtleSBlcXVhbHMgQVJST1dfVVBfS0VZXG5cblxuICAgIGdldE5leHRBY3RpdmVFbGVtZW50KGl0ZW1zLCB0YXJnZXQsIGtleSA9PT0gQVJST1dfRE9XTl9LRVkkMSwgIWl0ZW1zLmluY2x1ZGVzKHRhcmdldCkpLmZvY3VzKCk7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IERyb3Bkb3duLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKTtcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGNsZWFyTWVudXMoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuYnV0dG9uID09PSBSSUdIVF9NT1VTRV9CVVRUT04gfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJyAmJiBldmVudC5rZXkgIT09IFRBQl9LRVkkMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wZW5Ub2dnbGVzID0gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9EQVRBX1RPR0dMRV9TSE9XTik7XG5cbiAgICBmb3IgKGNvbnN0IHRvZ2dsZSBvZiBvcGVuVG9nZ2xlcykge1xuICAgICAgY29uc3QgY29udGV4dCA9IERyb3Bkb3duLmdldEluc3RhbmNlKHRvZ2dsZSk7XG5cbiAgICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0Ll9jb25maWcuYXV0b0Nsb3NlID09PSBmYWxzZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29tcG9zZWRQYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoKCk7XG4gICAgICBjb25zdCBpc01lbnVUYXJnZXQgPSBjb21wb3NlZFBhdGguaW5jbHVkZXMoY29udGV4dC5fbWVudSk7XG5cbiAgICAgIGlmIChjb21wb3NlZFBhdGguaW5jbHVkZXMoY29udGV4dC5fZWxlbWVudCkgfHwgY29udGV4dC5fY29uZmlnLmF1dG9DbG9zZSA9PT0gJ2luc2lkZScgJiYgIWlzTWVudVRhcmdldCB8fCBjb250ZXh0Ll9jb25maWcuYXV0b0Nsb3NlID09PSAnb3V0c2lkZScgJiYgaXNNZW51VGFyZ2V0KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBUYWIgbmF2aWdhdGlvbiB0aHJvdWdoIHRoZSBkcm9wZG93biBtZW51IG9yIGV2ZW50cyBmcm9tIGNvbnRhaW5lZCBpbnB1dHMgc2hvdWxkbid0IGNsb3NlIHRoZSBtZW51XG5cblxuICAgICAgaWYgKGNvbnRleHQuX21lbnUuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiAoZXZlbnQudHlwZSA9PT0gJ2tleXVwJyAmJiBldmVudC5rZXkgPT09IFRBQl9LRVkkMSB8fCAvaW5wdXR8c2VsZWN0fG9wdGlvbnx0ZXh0YXJlYXxmb3JtL2kudGVzdChldmVudC50YXJnZXQudGFnTmFtZSkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0ge1xuICAgICAgICByZWxhdGVkVGFyZ2V0OiBjb250ZXh0Ll9lbGVtZW50XG4gICAgICB9O1xuXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICByZWxhdGVkVGFyZ2V0LmNsaWNrRXZlbnQgPSBldmVudDtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5fY29tcGxldGVIaWRlKHJlbGF0ZWRUYXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkYXRhQXBpS2V5ZG93bkhhbmRsZXIoZXZlbnQpIHtcbiAgICAvLyBJZiBub3QgYW4gVVAgfCBET1dOIHwgRVNDQVBFIGtleSA9PiBub3QgYSBkcm9wZG93biBjb21tYW5kXG4gICAgLy8gSWYgaW5wdXQvdGV4dGFyZWEgJiYgaWYga2V5IGlzIG90aGVyIHRoYW4gRVNDQVBFID0+IG5vdCBhIGRyb3Bkb3duIGNvbW1hbmRcbiAgICBjb25zdCBpc0lucHV0ID0gL2lucHV0fHRleHRhcmVhL2kudGVzdChldmVudC50YXJnZXQudGFnTmFtZSk7XG4gICAgY29uc3QgaXNFc2NhcGVFdmVudCA9IGV2ZW50LmtleSA9PT0gRVNDQVBFX0tFWSQyO1xuICAgIGNvbnN0IGlzVXBPckRvd25FdmVudCA9IFtBUlJPV19VUF9LRVkkMSwgQVJST1dfRE9XTl9LRVkkMV0uaW5jbHVkZXMoZXZlbnQua2V5KTtcblxuICAgIGlmICghaXNVcE9yRG93bkV2ZW50ICYmICFpc0VzY2FwZUV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzSW5wdXQgJiYgIWlzRXNjYXBlRXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGdldFRvZ2dsZUJ1dHRvbiA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfREFUQV9UT0dHTEUkMywgZXZlbnQuZGVsZWdhdGVUYXJnZXQucGFyZW50Tm9kZSk7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBEcm9wZG93bi5nZXRPckNyZWF0ZUluc3RhbmNlKGdldFRvZ2dsZUJ1dHRvbik7XG5cbiAgICBpZiAoaXNVcE9yRG93bkV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGluc3RhbmNlLnNob3coKTtcblxuICAgICAgaW5zdGFuY2UuX3NlbGVjdE1lbnVJdGVtKGV2ZW50KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5faXNTaG93bigpKSB7XG4gICAgICAvLyBlbHNlIGlzIGVzY2FwZSBhbmQgd2UgY2hlY2sgaWYgaXQgaXMgc2hvd25cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgICAgZ2V0VG9nZ2xlQnV0dG9uLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbn1cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZRE9XTl9EQVRBX0FQSSwgU0VMRUNUT1JfREFUQV9UT0dHTEUkMywgRHJvcGRvd24uZGF0YUFwaUtleWRvd25IYW5kbGVyKTtcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZRE9XTl9EQVRBX0FQSSwgU0VMRUNUT1JfTUVOVSwgRHJvcGRvd24uZGF0YUFwaUtleWRvd25IYW5kbGVyKTtcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMywgRHJvcGRvd24uY2xlYXJNZW51cyk7XG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0tFWVVQX0RBVEFfQVBJLCBEcm9wZG93bi5jbGVhck1lbnVzKTtcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMywgU0VMRUNUT1JfREFUQV9UT0dHTEUkMywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIERyb3Bkb3duLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcykudG9nZ2xlKCk7XG59KTtcbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKERyb3Bkb3duKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjApOiB1dGlsL3Njcm9sbEJhci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IFNFTEVDVE9SX0ZJWEVEX0NPTlRFTlQgPSAnLmZpeGVkLXRvcCwgLmZpeGVkLWJvdHRvbSwgLmlzLWZpeGVkLCAuc3RpY2t5LXRvcCc7XG5jb25zdCBTRUxFQ1RPUl9TVElDS1lfQ09OVEVOVCA9ICcuc3RpY2t5LXRvcCc7XG5jb25zdCBQUk9QRVJUWV9QQURESU5HID0gJ3BhZGRpbmctcmlnaHQnO1xuY29uc3QgUFJPUEVSVFlfTUFSR0lOID0gJ21hcmdpbi1yaWdodCc7XG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBTY3JvbGxCYXJIZWxwZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAgfSAvLyBQdWJsaWNcblxuXG4gIGdldFdpZHRoKCkge1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvaW5uZXJXaWR0aCN1c2FnZV9ub3Rlc1xuICAgIGNvbnN0IGRvY3VtZW50V2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgcmV0dXJuIE1hdGguYWJzKHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnRXaWR0aCk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpO1xuXG4gICAgdGhpcy5fZGlzYWJsZU92ZXJGbG93KCk7IC8vIGdpdmUgcGFkZGluZyB0byBlbGVtZW50IHRvIGJhbGFuY2UgdGhlIGhpZGRlbiBzY3JvbGxiYXIgd2lkdGhcblxuXG4gICAgdGhpcy5fc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCwgUFJPUEVSVFlfUEFERElORywgY2FsY3VsYXRlZFZhbHVlID0+IGNhbGN1bGF0ZWRWYWx1ZSArIHdpZHRoKTsgLy8gdHJpY2s6IFdlIGFkanVzdCBwb3NpdGl2ZSBwYWRkaW5nUmlnaHQgYW5kIG5lZ2F0aXZlIG1hcmdpblJpZ2h0IHRvIHN0aWNreS10b3AgZWxlbWVudHMgdG8ga2VlcCBzaG93aW5nIGZ1bGx3aWR0aFxuXG5cbiAgICB0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcyhTRUxFQ1RPUl9GSVhFRF9DT05URU5ULCBQUk9QRVJUWV9QQURESU5HLCBjYWxjdWxhdGVkVmFsdWUgPT4gY2FsY3VsYXRlZFZhbHVlICsgd2lkdGgpO1xuXG4gICAgdGhpcy5fc2V0RWxlbWVudEF0dHJpYnV0ZXMoU0VMRUNUT1JfU1RJQ0tZX0NPTlRFTlQsIFBST1BFUlRZX01BUkdJTiwgY2FsY3VsYXRlZFZhbHVlID0+IGNhbGN1bGF0ZWRWYWx1ZSAtIHdpZHRoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCwgJ292ZXJmbG93Jyk7XG5cbiAgICB0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsIFBST1BFUlRZX1BBRERJTkcpO1xuXG4gICAgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyhTRUxFQ1RPUl9GSVhFRF9DT05URU5ULCBQUk9QRVJUWV9QQURESU5HKTtcblxuICAgIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXMoU0VMRUNUT1JfU1RJQ0tZX0NPTlRFTlQsIFBST1BFUlRZX01BUkdJTik7XG4gIH1cblxuICBpc092ZXJmbG93aW5nKCkge1xuICAgIHJldHVybiB0aGlzLmdldFdpZHRoKCkgPiAwO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF9kaXNhYmxlT3ZlckZsb3coKSB7XG4gICAgdGhpcy5fc2F2ZUluaXRpYWxBdHRyaWJ1dGUodGhpcy5fZWxlbWVudCwgJ292ZXJmbG93Jyk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gIH1cblxuICBfc2V0RWxlbWVudEF0dHJpYnV0ZXMoc2VsZWN0b3IsIHN0eWxlUHJvcGVydHksIGNhbGxiYWNrKSB7XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB0aGlzLmdldFdpZHRoKCk7XG5cbiAgICBjb25zdCBtYW5pcHVsYXRpb25DYWxsQmFjayA9IGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQgIT09IHRoaXMuX2VsZW1lbnQgJiYgd2luZG93LmlubmVyV2lkdGggPiBlbGVtZW50LmNsaWVudFdpZHRoICsgc2Nyb2xsYmFyV2lkdGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9zYXZlSW5pdGlhbEF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZVByb3BlcnR5KTtcblxuICAgICAgY29uc3QgY2FsY3VsYXRlZFZhbHVlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZVByb3BlcnR5KTtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoc3R5bGVQcm9wZXJ0eSwgYCR7Y2FsbGJhY2soTnVtYmVyLnBhcnNlRmxvYXQoY2FsY3VsYXRlZFZhbHVlKSl9cHhgKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayhzZWxlY3RvciwgbWFuaXB1bGF0aW9uQ2FsbEJhY2spO1xuICB9XG5cbiAgX3NhdmVJbml0aWFsQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHkpIHtcbiAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZVByb3BlcnR5KTtcblxuICAgIGlmIChhY3R1YWxWYWx1ZSkge1xuICAgICAgTWFuaXB1bGF0b3Iuc2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZVByb3BlcnR5LCBhY3R1YWxWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXMoc2VsZWN0b3IsIHN0eWxlUHJvcGVydHkpIHtcbiAgICBjb25zdCBtYW5pcHVsYXRpb25DYWxsQmFjayA9IGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHkpOyAvLyBXZSBvbmx5IHdhbnQgdG8gcmVtb3ZlIHRoZSBwcm9wZXJ0eSBpZiB0aGUgdmFsdWUgaXMgYG51bGxgOyB0aGUgdmFsdWUgY2FuIGFsc28gYmUgemVyb1xuXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShzdHlsZVByb3BlcnR5KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBNYW5pcHVsYXRvci5yZW1vdmVEYXRhQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHkpO1xuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShzdHlsZVByb3BlcnR5LCB2YWx1ZSk7XG4gICAgfTtcblxuICAgIHRoaXMuX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2soc2VsZWN0b3IsIG1hbmlwdWxhdGlvbkNhbGxCYWNrKTtcbiAgfVxuXG4gIF9hcHBseU1hbmlwdWxhdGlvbkNhbGxiYWNrKHNlbGVjdG9yLCBjYWxsQmFjaykge1xuICAgIGlmIChpc0VsZW1lbnQoc2VsZWN0b3IpKSB7XG4gICAgICBjYWxsQmFjayhzZWxlY3Rvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzZWwgb2YgU2VsZWN0b3JFbmdpbmUuZmluZChzZWxlY3RvciwgdGhpcy5fZWxlbWVudCkpIHtcbiAgICAgIGNhbGxCYWNrKHNlbCk7XG4gICAgfVxuICB9XG5cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjApOiB1dGlsL2JhY2tkcm9wLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQ5ID0gJ2JhY2tkcm9wJztcbmNvbnN0IENMQVNTX05BTUVfRkFERSQ0ID0gJ2ZhZGUnO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XJDUgPSAnc2hvdyc7XG5jb25zdCBFVkVOVF9NT1VTRURPV04gPSBgbW91c2Vkb3duLmJzLiR7TkFNRSQ5fWA7XG5jb25zdCBEZWZhdWx0JDggPSB7XG4gIGNsYXNzTmFtZTogJ21vZGFsLWJhY2tkcm9wJyxcbiAgY2xpY2tDYWxsYmFjazogbnVsbCxcbiAgaXNBbmltYXRlZDogZmFsc2UsXG4gIGlzVmlzaWJsZTogdHJ1ZSxcbiAgLy8gaWYgZmFsc2UsIHdlIHVzZSB0aGUgYmFja2Ryb3AgaGVscGVyIHdpdGhvdXQgYWRkaW5nIGFueSBlbGVtZW50IHRvIHRoZSBkb21cbiAgcm9vdEVsZW1lbnQ6ICdib2R5JyAvLyBnaXZlIHRoZSBjaG9pY2UgdG8gcGxhY2UgYmFja2Ryb3AgdW5kZXIgZGlmZmVyZW50IGVsZW1lbnRzXG5cbn07XG5jb25zdCBEZWZhdWx0VHlwZSQ4ID0ge1xuICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICBjbGlja0NhbGxiYWNrOiAnKGZ1bmN0aW9ufG51bGwpJyxcbiAgaXNBbmltYXRlZDogJ2Jvb2xlYW4nLFxuICBpc1Zpc2libGU6ICdib29sZWFuJyxcbiAgcm9vdEVsZW1lbnQ6ICcoZWxlbWVudHxzdHJpbmcpJ1xufTtcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEJhY2tkcm9wIGV4dGVuZHMgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLl9pc0FwcGVuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5fZWxlbWVudCA9IG51bGw7XG4gIH0gLy8gR2V0dGVyc1xuXG5cbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDg7XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQ4O1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJDk7XG4gIH0gLy8gUHVibGljXG5cblxuICBzaG93KGNhbGxiYWNrKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuaXNWaXNpYmxlKSB7XG4gICAgICBleGVjdXRlKGNhbGxiYWNrKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9hcHBlbmQoKTtcblxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9nZXRFbGVtZW50KCk7XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmlzQW5pbWF0ZWQpIHtcbiAgICAgIHJlZmxvdyhlbGVtZW50KTtcbiAgICB9XG5cbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDUpO1xuXG4gICAgdGhpcy5fZW11bGF0ZUFuaW1hdGlvbigoKSA9PiB7XG4gICAgICBleGVjdXRlKGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGhpZGUoY2FsbGJhY2spIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5pc1Zpc2libGUpIHtcbiAgICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2dldEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQ1KTtcblxuICAgIHRoaXMuX2VtdWxhdGVBbmltYXRpb24oKCkgPT4ge1xuICAgICAgdGhpcy5kaXNwb3NlKCk7XG4gICAgICBleGVjdXRlKGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgaWYgKCF0aGlzLl9pc0FwcGVuZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LCBFVkVOVF9NT1VTRURPV04pO1xuXG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKTtcblxuICAgIHRoaXMuX2lzQXBwZW5kZWQgPSBmYWxzZTtcbiAgfSAvLyBQcml2YXRlXG5cblxuICBfZ2V0RWxlbWVudCgpIHtcbiAgICBpZiAoIXRoaXMuX2VsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGJhY2tkcm9wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBiYWNrZHJvcC5jbGFzc05hbWUgPSB0aGlzLl9jb25maWcuY2xhc3NOYW1lO1xuXG4gICAgICBpZiAodGhpcy5fY29uZmlnLmlzQW5pbWF0ZWQpIHtcbiAgICAgICAgYmFja2Ryb3AuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0ZBREUkNCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQgPSBiYWNrZHJvcDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudDtcbiAgfVxuXG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIC8vIHVzZSBnZXRFbGVtZW50KCkgd2l0aCB0aGUgZGVmYXVsdCBcImJvZHlcIiB0byBnZXQgYSBmcmVzaCBFbGVtZW50IG9uIGVhY2ggaW5zdGFudGlhdGlvblxuICAgIGNvbmZpZy5yb290RWxlbWVudCA9IGdldEVsZW1lbnQoY29uZmlnLnJvb3RFbGVtZW50KTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgX2FwcGVuZCgpIHtcbiAgICBpZiAodGhpcy5faXNBcHBlbmRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9nZXRFbGVtZW50KCk7XG5cbiAgICB0aGlzLl9jb25maWcucm9vdEVsZW1lbnQuYXBwZW5kKGVsZW1lbnQpO1xuXG4gICAgRXZlbnRIYW5kbGVyLm9uKGVsZW1lbnQsIEVWRU5UX01PVVNFRE9XTiwgKCkgPT4ge1xuICAgICAgZXhlY3V0ZSh0aGlzLl9jb25maWcuY2xpY2tDYWxsYmFjayk7XG4gICAgfSk7XG4gICAgdGhpcy5faXNBcHBlbmRlZCA9IHRydWU7XG4gIH1cblxuICBfZW11bGF0ZUFuaW1hdGlvbihjYWxsYmFjaykge1xuICAgIGV4ZWN1dGVBZnRlclRyYW5zaXRpb24oY2FsbGJhY2ssIHRoaXMuX2dldEVsZW1lbnQoKSwgdGhpcy5fY29uZmlnLmlzQW5pbWF0ZWQpO1xuICB9XG5cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjApOiB1dGlsL2ZvY3VzdHJhcC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkOCA9ICdmb2N1c3RyYXAnO1xuY29uc3QgREFUQV9LRVkkNSA9ICdicy5mb2N1c3RyYXAnO1xuY29uc3QgRVZFTlRfS0VZJDUgPSBgLiR7REFUQV9LRVkkNX1gO1xuY29uc3QgRVZFTlRfRk9DVVNJTiQyID0gYGZvY3VzaW4ke0VWRU5UX0tFWSQ1fWA7XG5jb25zdCBFVkVOVF9LRVlET1dOX1RBQiA9IGBrZXlkb3duLnRhYiR7RVZFTlRfS0VZJDV9YDtcbmNvbnN0IFRBQl9LRVkgPSAnVGFiJztcbmNvbnN0IFRBQl9OQVZfRk9SV0FSRCA9ICdmb3J3YXJkJztcbmNvbnN0IFRBQl9OQVZfQkFDS1dBUkQgPSAnYmFja3dhcmQnO1xuY29uc3QgRGVmYXVsdCQ3ID0ge1xuICBhdXRvZm9jdXM6IHRydWUsXG4gIHRyYXBFbGVtZW50OiBudWxsIC8vIFRoZSBlbGVtZW50IHRvIHRyYXAgZm9jdXMgaW5zaWRlIG9mXG5cbn07XG5jb25zdCBEZWZhdWx0VHlwZSQ3ID0ge1xuICBhdXRvZm9jdXM6ICdib29sZWFuJyxcbiAgdHJhcEVsZW1lbnQ6ICdlbGVtZW50J1xufTtcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEZvY3VzVHJhcCBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgdGhpcy5faXNBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLl9sYXN0VGFiTmF2RGlyZWN0aW9uID0gbnVsbDtcbiAgfSAvLyBHZXR0ZXJzXG5cblxuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkNztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkODtcbiAgfSAvLyBQdWJsaWNcblxuXG4gIGFjdGl2YXRlKCkge1xuICAgIGlmICh0aGlzLl9pc0FjdGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb25maWcuYXV0b2ZvY3VzKSB7XG4gICAgICB0aGlzLl9jb25maWcudHJhcEVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBFdmVudEhhbmRsZXIub2ZmKGRvY3VtZW50LCBFVkVOVF9LRVkkNSk7IC8vIGd1YXJkIGFnYWluc3QgaW5maW5pdGUgZm9jdXMgbG9vcFxuXG4gICAgRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9GT0NVU0lOJDIsIGV2ZW50ID0+IHRoaXMuX2hhbmRsZUZvY3VzaW4oZXZlbnQpKTtcbiAgICBFdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0tFWURPV05fVEFCLCBldmVudCA9PiB0aGlzLl9oYW5kbGVLZXlkb3duKGV2ZW50KSk7XG4gICAgdGhpcy5faXNBY3RpdmUgPSB0cnVlO1xuICB9XG5cbiAgZGVhY3RpdmF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzQWN0aXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNBY3RpdmUgPSBmYWxzZTtcbiAgICBFdmVudEhhbmRsZXIub2ZmKGRvY3VtZW50LCBFVkVOVF9LRVkkNSk7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX2hhbmRsZUZvY3VzaW4oZXZlbnQpIHtcbiAgICBjb25zdCB7XG4gICAgICB0cmFwRWxlbWVudFxuICAgIH0gPSB0aGlzLl9jb25maWc7XG5cbiAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBkb2N1bWVudCB8fCBldmVudC50YXJnZXQgPT09IHRyYXBFbGVtZW50IHx8IHRyYXBFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50cyA9IFNlbGVjdG9yRW5naW5lLmZvY3VzYWJsZUNoaWxkcmVuKHRyYXBFbGVtZW50KTtcblxuICAgIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRyYXBFbGVtZW50LmZvY3VzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9sYXN0VGFiTmF2RGlyZWN0aW9uID09PSBUQUJfTkFWX0JBQ0tXQVJEKSB7XG4gICAgICBlbGVtZW50c1tlbGVtZW50cy5sZW5ndGggLSAxXS5mb2N1cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50c1swXS5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gVEFCX0tFWSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xhc3RUYWJOYXZEaXJlY3Rpb24gPSBldmVudC5zaGlmdEtleSA/IFRBQl9OQVZfQkFDS1dBUkQgOiBUQUJfTkFWX0ZPUldBUkQ7XG4gIH1cblxufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMCk6IG1vZGFsLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQ3ID0gJ21vZGFsJztcbmNvbnN0IERBVEFfS0VZJDQgPSAnYnMubW9kYWwnO1xuY29uc3QgRVZFTlRfS0VZJDQgPSBgLiR7REFUQV9LRVkkNH1gO1xuY29uc3QgREFUQV9BUElfS0VZJDIgPSAnLmRhdGEtYXBpJztcbmNvbnN0IEVTQ0FQRV9LRVkkMSA9ICdFc2NhcGUnO1xuY29uc3QgRVZFTlRfSElERSQ0ID0gYGhpZGUke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9ISURFX1BSRVZFTlRFRCQxID0gYGhpZGVQcmV2ZW50ZWQke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9ISURERU4kNCA9IGBoaWRkZW4ke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9TSE9XJDQgPSBgc2hvdyR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX1NIT1dOJDQgPSBgc2hvd24ke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9SRVNJWkUkMSA9IGByZXNpemUke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9NT1VTRURPV05fRElTTUlTUyA9IGBtb3VzZWRvd24uZGlzbWlzcyR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX0tFWURPV05fRElTTUlTUyQxID0gYGtleWRvd24uZGlzbWlzcyR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDIgPSBgY2xpY2ske0VWRU5UX0tFWSQ0fSR7REFUQV9BUElfS0VZJDJ9YDtcbmNvbnN0IENMQVNTX05BTUVfT1BFTiA9ICdtb2RhbC1vcGVuJztcbmNvbnN0IENMQVNTX05BTUVfRkFERSQzID0gJ2ZhZGUnO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XJDQgPSAnc2hvdyc7XG5jb25zdCBDTEFTU19OQU1FX1NUQVRJQyA9ICdtb2RhbC1zdGF0aWMnO1xuY29uc3QgT1BFTl9TRUxFQ1RPUiQxID0gJy5tb2RhbC5zaG93JztcbmNvbnN0IFNFTEVDVE9SX0RJQUxPRyA9ICcubW9kYWwtZGlhbG9nJztcbmNvbnN0IFNFTEVDVE9SX01PREFMX0JPRFkgPSAnLm1vZGFsLWJvZHknO1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUkMiA9ICdbZGF0YS1icy10b2dnbGU9XCJtb2RhbFwiXSc7XG5jb25zdCBEZWZhdWx0JDYgPSB7XG4gIGJhY2tkcm9wOiB0cnVlLFxuICBmb2N1czogdHJ1ZSxcbiAga2V5Ym9hcmQ6IHRydWVcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQ2ID0ge1xuICBiYWNrZHJvcDogJyhib29sZWFufHN0cmluZyknLFxuICBmb2N1czogJ2Jvb2xlYW4nLFxuICBrZXlib2FyZDogJ2Jvb2xlYW4nXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgTW9kYWwgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcbiAgICB0aGlzLl9kaWFsb2cgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0RJQUxPRywgdGhpcy5fZWxlbWVudCk7XG4gICAgdGhpcy5fYmFja2Ryb3AgPSB0aGlzLl9pbml0aWFsaXplQmFja0Ryb3AoKTtcbiAgICB0aGlzLl9mb2N1c3RyYXAgPSB0aGlzLl9pbml0aWFsaXplRm9jdXNUcmFwKCk7XG4gICAgdGhpcy5faXNTaG93biA9IGZhbHNlO1xuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3Njcm9sbEJhciA9IG5ldyBTY3JvbGxCYXJIZWxwZXIoKTtcblxuICAgIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKCk7XG4gIH0gLy8gR2V0dGVyc1xuXG5cbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQ2O1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJDc7XG4gIH0gLy8gUHVibGljXG5cblxuICB0b2dnbGUocmVsYXRlZFRhcmdldCkge1xuICAgIHJldHVybiB0aGlzLl9pc1Nob3duID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3cocmVsYXRlZFRhcmdldCk7XG4gIH1cblxuICBzaG93KHJlbGF0ZWRUYXJnZXQpIHtcbiAgICBpZiAodGhpcy5faXNTaG93biB8fCB0aGlzLl9pc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XJDQsIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXRcbiAgICB9KTtcblxuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2hvd24gPSB0cnVlO1xuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IHRydWU7XG5cbiAgICB0aGlzLl9zY3JvbGxCYXIuaGlkZSgpO1xuXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfT1BFTik7XG5cbiAgICB0aGlzLl9hZGp1c3REaWFsb2coKTtcblxuICAgIHRoaXMuX2JhY2tkcm9wLnNob3coKCkgPT4gdGhpcy5fc2hvd0VsZW1lbnQocmVsYXRlZFRhcmdldCkpO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzU2hvd24gfHwgdGhpcy5faXNUcmFuc2l0aW9uaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERSQ0KTtcblxuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2hvd24gPSBmYWxzZTtcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSB0cnVlO1xuXG4gICAgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckNCk7XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHRoaXMuX2hpZGVNb2RhbCgpLCB0aGlzLl9lbGVtZW50LCB0aGlzLl9pc0FuaW1hdGVkKCkpO1xuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBmb3IgKGNvbnN0IGh0bWxFbGVtZW50IG9mIFt3aW5kb3csIHRoaXMuX2RpYWxvZ10pIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vZmYoaHRtbEVsZW1lbnQsIEVWRU5UX0tFWSQ0KTtcbiAgICB9XG5cbiAgICB0aGlzLl9iYWNrZHJvcC5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLl9mb2N1c3RyYXAuZGVhY3RpdmF0ZSgpO1xuXG4gICAgc3VwZXIuZGlzcG9zZSgpO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlKCkge1xuICAgIHRoaXMuX2FkanVzdERpYWxvZygpO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF9pbml0aWFsaXplQmFja0Ryb3AoKSB7XG4gICAgcmV0dXJuIG5ldyBCYWNrZHJvcCh7XG4gICAgICBpc1Zpc2libGU6IEJvb2xlYW4odGhpcy5fY29uZmlnLmJhY2tkcm9wKSxcbiAgICAgIC8vICdzdGF0aWMnIG9wdGlvbiB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gdHJ1ZSwgYW5kIGJvb2xlYW5zIHdpbGwga2VlcCB0aGVpciB2YWx1ZSxcbiAgICAgIGlzQW5pbWF0ZWQ6IHRoaXMuX2lzQW5pbWF0ZWQoKVxuICAgIH0pO1xuICB9XG5cbiAgX2luaXRpYWxpemVGb2N1c1RyYXAoKSB7XG4gICAgcmV0dXJuIG5ldyBGb2N1c1RyYXAoe1xuICAgICAgdHJhcEVsZW1lbnQ6IHRoaXMuX2VsZW1lbnRcbiAgICB9KTtcbiAgfVxuXG4gIF9zaG93RWxlbWVudChyZWxhdGVkVGFyZ2V0KSB7XG4gICAgLy8gdHJ5IHRvIGFwcGVuZCBkeW5hbWljIG1vZGFsXG4gICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZCh0aGlzLl9lbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuXG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1tb2RhbCcsIHRydWUpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnZGlhbG9nJyk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgY29uc3QgbW9kYWxCb2R5ID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9NT0RBTF9CT0RZLCB0aGlzLl9kaWFsb2cpO1xuXG4gICAgaWYgKG1vZGFsQm9keSkge1xuICAgICAgbW9kYWxCb2R5LnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuXG4gICAgcmVmbG93KHRoaXMuX2VsZW1lbnQpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVyQ0KTtcblxuICAgIGNvbnN0IHRyYW5zaXRpb25Db21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jb25maWcuZm9jdXMpIHtcbiAgICAgICAgdGhpcy5fZm9jdXN0cmFwLmFjdGl2YXRlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPV04kNCwge1xuICAgICAgICByZWxhdGVkVGFyZ2V0XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayh0cmFuc2l0aW9uQ29tcGxldGUsIHRoaXMuX2RpYWxvZywgdGhpcy5faXNBbmltYXRlZCgpKTtcbiAgfVxuXG4gIF9hZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTl9ESVNNSVNTJDEsIGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgIT09IEVTQ0FQRV9LRVkkMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9jb25maWcua2V5Ym9hcmQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpO1xuICAgIH0pO1xuICAgIEV2ZW50SGFuZGxlci5vbih3aW5kb3csIEVWRU5UX1JFU0laRSQxLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5faXNTaG93biAmJiAhdGhpcy5faXNUcmFuc2l0aW9uaW5nKSB7XG4gICAgICAgIHRoaXMuX2FkanVzdERpYWxvZygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9NT1VTRURPV05fRElTTUlTUywgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICAvLyBjbGljayBpcyBpbnNpZGUgbW9kYWwtZGlhbG9nXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIF9oaWRlTW9kYWwoKSB7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgdHJ1ZSk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1tb2RhbCcpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3JvbGUnKTtcblxuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5fYmFja2Ryb3AuaGlkZSgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9PUEVOKTtcblxuICAgICAgdGhpcy5fcmVzZXRBZGp1c3RtZW50cygpO1xuXG4gICAgICB0aGlzLl9zY3JvbGxCYXIucmVzZXQoKTtcblxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElEREVOJDQpO1xuICAgIH0pO1xuICB9XG5cbiAgX2lzQW5pbWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRkFERSQzKTtcbiAgfVxuXG4gIF90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCkge1xuICAgIGNvbnN0IGhpZGVFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREVfUFJFVkVOVEVEJDEpO1xuXG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNNb2RhbE92ZXJmbG93aW5nID0gdGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IGluaXRpYWxPdmVyZmxvd1kgPSB0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93WTsgLy8gcmV0dXJuIGlmIHRoZSBmb2xsb3dpbmcgYmFja2dyb3VuZCB0cmFuc2l0aW9uIGhhc24ndCB5ZXQgY29tcGxldGVkXG5cbiAgICBpZiAoaW5pdGlhbE92ZXJmbG93WSA9PT0gJ2hpZGRlbicgfHwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9TVEFUSUMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc01vZGFsT3ZlcmZsb3dpbmcpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gJ2hpZGRlbic7XG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU1RBVElDKTtcblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU1RBVElDKTtcblxuICAgICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gaW5pdGlhbE92ZXJmbG93WTtcbiAgICAgIH0sIHRoaXMuX2RpYWxvZyk7XG4gICAgfSwgdGhpcy5fZGlhbG9nKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuZm9jdXMoKTtcbiAgfVxuICAvKipcbiAgICogVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIGhhbmRsZSBvdmVyZmxvd2luZyBtb2RhbHNcbiAgICovXG5cblxuICBfYWRqdXN0RGlhbG9nKCkge1xuICAgIGNvbnN0IGlzTW9kYWxPdmVyZmxvd2luZyA9IHRoaXMuX2VsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcblxuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gdGhpcy5fc2Nyb2xsQmFyLmdldFdpZHRoKCk7XG5cbiAgICBjb25zdCBpc0JvZHlPdmVyZmxvd2luZyA9IHNjcm9sbGJhcldpZHRoID4gMDtcblxuICAgIGlmIChpc0JvZHlPdmVyZmxvd2luZyAmJiAhaXNNb2RhbE92ZXJmbG93aW5nKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGlzUlRMKCkgPyAncGFkZGluZ0xlZnQnIDogJ3BhZGRpbmdSaWdodCc7XG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IGAke3Njcm9sbGJhcldpZHRofXB4YDtcbiAgICB9XG5cbiAgICBpZiAoIWlzQm9keU92ZXJmbG93aW5nICYmIGlzTW9kYWxPdmVyZmxvd2luZykge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBpc1JUTCgpID8gJ3BhZGRpbmdSaWdodCcgOiAncGFkZGluZ0xlZnQnO1xuICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBgJHtzY3JvbGxiYXJXaWR0aH1weGA7XG4gICAgfVxuICB9XG5cbiAgX3Jlc2V0QWRqdXN0bWVudHMoKSB7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nTGVmdCA9ICcnO1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJyc7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZywgcmVsYXRlZFRhcmdldCkge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IE1vZGFsLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKTtcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXShyZWxhdGVkVGFyZ2V0KTtcbiAgICB9KTtcbiAgfVxuXG59XG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0NMSUNLX0RBVEFfQVBJJDIsIFNFTEVDVE9SX0RBVEFfVE9HR0xFJDIsIGZ1bmN0aW9uIChldmVudCkge1xuICBjb25zdCB0YXJnZXQgPSBnZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRoaXMpO1xuXG4gIGlmIChbJ0EnLCAnQVJFQSddLmluY2x1ZGVzKHRoaXMudGFnTmFtZSkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgRXZlbnRIYW5kbGVyLm9uZSh0YXJnZXQsIEVWRU5UX1NIT1ckNCwgc2hvd0V2ZW50ID0+IHtcbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIC8vIG9ubHkgcmVnaXN0ZXIgZm9jdXMgcmVzdG9yZXIgaWYgbW9kYWwgd2lsbCBhY3R1YWxseSBnZXQgc2hvd25cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBFdmVudEhhbmRsZXIub25lKHRhcmdldCwgRVZFTlRfSElEREVOJDQsICgpID0+IHtcbiAgICAgIGlmIChpc1Zpc2libGUodGhpcykpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTsgLy8gYXZvaWQgY29uZmxpY3Qgd2hlbiBjbGlja2luZyBtb2RhbCB0b2dnbGVyIHdoaWxlIGFub3RoZXIgb25lIGlzIG9wZW5cblxuICBjb25zdCBhbHJlYWR5T3BlbiA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoT1BFTl9TRUxFQ1RPUiQxKTtcblxuICBpZiAoYWxyZWFkeU9wZW4pIHtcbiAgICBNb2RhbC5nZXRJbnN0YW5jZShhbHJlYWR5T3BlbikuaGlkZSgpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IE1vZGFsLmdldE9yQ3JlYXRlSW5zdGFuY2UodGFyZ2V0KTtcbiAgZGF0YS50b2dnbGUodGhpcyk7XG59KTtcbmVuYWJsZURpc21pc3NUcmlnZ2VyKE1vZGFsKTtcbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKE1vZGFsKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjApOiBvZmZjYW52YXMuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDYgPSAnb2ZmY2FudmFzJztcbmNvbnN0IERBVEFfS0VZJDMgPSAnYnMub2ZmY2FudmFzJztcbmNvbnN0IEVWRU5UX0tFWSQzID0gYC4ke0RBVEFfS0VZJDN9YDtcbmNvbnN0IERBVEFfQVBJX0tFWSQxID0gJy5kYXRhLWFwaSc7XG5jb25zdCBFVkVOVF9MT0FEX0RBVEFfQVBJJDIgPSBgbG9hZCR7RVZFTlRfS0VZJDN9JHtEQVRBX0FQSV9LRVkkMX1gO1xuY29uc3QgRVNDQVBFX0tFWSA9ICdFc2NhcGUnO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XJDMgPSAnc2hvdyc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1dJTkckMSA9ICdzaG93aW5nJztcbmNvbnN0IENMQVNTX05BTUVfSElESU5HID0gJ2hpZGluZyc7XG5jb25zdCBDTEFTU19OQU1FX0JBQ0tEUk9QID0gJ29mZmNhbnZhcy1iYWNrZHJvcCc7XG5jb25zdCBPUEVOX1NFTEVDVE9SID0gJy5vZmZjYW52YXMuc2hvdyc7XG5jb25zdCBFVkVOVF9TSE9XJDMgPSBgc2hvdyR7RVZFTlRfS0VZJDN9YDtcbmNvbnN0IEVWRU5UX1NIT1dOJDMgPSBgc2hvd24ke0VWRU5UX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9ISURFJDMgPSBgaGlkZSR7RVZFTlRfS0VZJDN9YDtcbmNvbnN0IEVWRU5UX0hJREVfUFJFVkVOVEVEID0gYGhpZGVQcmV2ZW50ZWQke0VWRU5UX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9ISURERU4kMyA9IGBoaWRkZW4ke0VWRU5UX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9SRVNJWkUgPSBgcmVzaXplJHtFVkVOVF9LRVkkM31gO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMSA9IGBjbGljayR7RVZFTlRfS0VZJDN9JHtEQVRBX0FQSV9LRVkkMX1gO1xuY29uc3QgRVZFTlRfS0VZRE9XTl9ESVNNSVNTID0gYGtleWRvd24uZGlzbWlzcyR7RVZFTlRfS0VZJDN9YDtcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFJDEgPSAnW2RhdGEtYnMtdG9nZ2xlPVwib2ZmY2FudmFzXCJdJztcbmNvbnN0IERlZmF1bHQkNSA9IHtcbiAgYmFja2Ryb3A6IHRydWUsXG4gIGtleWJvYXJkOiB0cnVlLFxuICBzY3JvbGw6IGZhbHNlXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkNSA9IHtcbiAgYmFja2Ryb3A6ICcoYm9vbGVhbnxzdHJpbmcpJyxcbiAga2V5Ym9hcmQ6ICdib29sZWFuJyxcbiAgc2Nyb2xsOiAnYm9vbGVhbidcbn07XG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBPZmZjYW52YXMgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcbiAgICB0aGlzLl9pc1Nob3duID0gZmFsc2U7XG4gICAgdGhpcy5fYmFja2Ryb3AgPSB0aGlzLl9pbml0aWFsaXplQmFja0Ryb3AoKTtcbiAgICB0aGlzLl9mb2N1c3RyYXAgPSB0aGlzLl9pbml0aWFsaXplRm9jdXNUcmFwKCk7XG5cbiAgICB0aGlzLl9hZGRFdmVudExpc3RlbmVycygpO1xuICB9IC8vIEdldHRlcnNcblxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCQ1O1xuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkNTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQ2O1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgdG9nZ2xlKHJlbGF0ZWRUYXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTaG93biA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KHJlbGF0ZWRUYXJnZXQpO1xuICB9XG5cbiAgc2hvdyhyZWxhdGVkVGFyZ2V0KSB7XG4gICAgaWYgKHRoaXMuX2lzU2hvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XJDMsIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXRcbiAgICB9KTtcblxuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2hvd24gPSB0cnVlO1xuXG4gICAgdGhpcy5fYmFja2Ryb3Auc2hvdygpO1xuXG4gICAgaWYgKCF0aGlzLl9jb25maWcuc2Nyb2xsKSB7XG4gICAgICBuZXcgU2Nyb2xsQmFySGVscGVyKCkuaGlkZSgpO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgdHJ1ZSk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgncm9sZScsICdkaWFsb2cnKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1dJTkckMSk7XG5cbiAgICBjb25zdCBjb21wbGV0ZUNhbGxCYWNrID0gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9jb25maWcuc2Nyb2xsIHx8IHRoaXMuX2NvbmZpZy5iYWNrZHJvcCkge1xuICAgICAgICB0aGlzLl9mb2N1c3RyYXAuYWN0aXZhdGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVyQzKTtcblxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPV0lORyQxKTtcblxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPV04kMywge1xuICAgICAgICByZWxhdGVkVGFyZ2V0XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZUNhbGxCYWNrLCB0aGlzLl9lbGVtZW50LCB0cnVlKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1Nob3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERSQzKTtcblxuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKCk7XG5cbiAgICB0aGlzLl9lbGVtZW50LmJsdXIoKTtcblxuICAgIHRoaXMuX2lzU2hvd24gPSBmYWxzZTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0hJRElORyk7XG5cbiAgICB0aGlzLl9iYWNrZHJvcC5oaWRlKCk7XG5cbiAgICBjb25zdCBjb21wbGV0ZUNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQzLCBDTEFTU19OQU1FX0hJRElORyk7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLW1vZGFsJyk7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdyb2xlJyk7XG5cbiAgICAgIGlmICghdGhpcy5fY29uZmlnLnNjcm9sbCkge1xuICAgICAgICBuZXcgU2Nyb2xsQmFySGVscGVyKCkucmVzZXQoKTtcbiAgICAgIH1cblxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElEREVOJDMpO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlQ2FsbGJhY2ssIHRoaXMuX2VsZW1lbnQsIHRydWUpO1xuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICB0aGlzLl9iYWNrZHJvcC5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLl9mb2N1c3RyYXAuZGVhY3RpdmF0ZSgpO1xuXG4gICAgc3VwZXIuZGlzcG9zZSgpO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF9pbml0aWFsaXplQmFja0Ryb3AoKSB7XG4gICAgY29uc3QgY2xpY2tDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jb25maWcuYmFja2Ryb3AgPT09ICdzdGF0aWMnKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREVfUFJFVkVOVEVEKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9OyAvLyAnc3RhdGljJyBvcHRpb24gd2lsbCBiZSB0cmFuc2xhdGVkIHRvIHRydWUsIGFuZCBib29sZWFucyB3aWxsIGtlZXAgdGhlaXIgdmFsdWVcblxuXG4gICAgY29uc3QgaXNWaXNpYmxlID0gQm9vbGVhbih0aGlzLl9jb25maWcuYmFja2Ryb3ApO1xuICAgIHJldHVybiBuZXcgQmFja2Ryb3Aoe1xuICAgICAgY2xhc3NOYW1lOiBDTEFTU19OQU1FX0JBQ0tEUk9QLFxuICAgICAgaXNWaXNpYmxlLFxuICAgICAgaXNBbmltYXRlZDogdHJ1ZSxcbiAgICAgIHJvb3RFbGVtZW50OiB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUsXG4gICAgICBjbGlja0NhbGxiYWNrOiBpc1Zpc2libGUgPyBjbGlja0NhbGxiYWNrIDogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgX2luaXRpYWxpemVGb2N1c1RyYXAoKSB7XG4gICAgcmV0dXJuIG5ldyBGb2N1c1RyYXAoe1xuICAgICAgdHJhcEVsZW1lbnQ6IHRoaXMuX2VsZW1lbnRcbiAgICB9KTtcbiAgfVxuXG4gIF9hZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTl9ESVNNSVNTLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSBFU0NBUEVfS0VZKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl9jb25maWcua2V5Ym9hcmQpIHtcbiAgICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERV9QUkVWRU5URUQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH0pO1xuICB9IC8vIFN0YXRpY1xuXG5cbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBPZmZjYW52YXMuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVtjb25maWddID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnN0YXJ0c1dpdGgoJ18nKSB8fCBjb25maWcgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKHRoaXMpO1xuICAgIH0pO1xuICB9XG5cbn1cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMSwgU0VMRUNUT1JfREFUQV9UT0dHTEUkMSwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGNvbnN0IHRhcmdldCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcyk7XG5cbiAgaWYgKFsnQScsICdBUkVBJ10uaW5jbHVkZXModGhpcy50YWdOYW1lKSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBpZiAoaXNEaXNhYmxlZCh0aGlzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIEV2ZW50SGFuZGxlci5vbmUodGFyZ2V0LCBFVkVOVF9ISURERU4kMywgKCkgPT4ge1xuICAgIC8vIGZvY3VzIG9uIHRyaWdnZXIgd2hlbiBpdCBpcyBjbG9zZWRcbiAgICBpZiAoaXNWaXNpYmxlKHRoaXMpKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICB9KTsgLy8gYXZvaWQgY29uZmxpY3Qgd2hlbiBjbGlja2luZyBhIHRvZ2dsZXIgb2YgYW4gb2ZmY2FudmFzLCB3aGlsZSBhbm90aGVyIGlzIG9wZW5cblxuICBjb25zdCBhbHJlYWR5T3BlbiA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoT1BFTl9TRUxFQ1RPUik7XG5cbiAgaWYgKGFscmVhZHlPcGVuICYmIGFscmVhZHlPcGVuICE9PSB0YXJnZXQpIHtcbiAgICBPZmZjYW52YXMuZ2V0SW5zdGFuY2UoYWxyZWFkeU9wZW4pLmhpZGUoKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBPZmZjYW52YXMuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpO1xuICBkYXRhLnRvZ2dsZSh0aGlzKTtcbn0pO1xuRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfTE9BRF9EQVRBX0FQSSQyLCAoKSA9PiB7XG4gIGZvciAoY29uc3Qgc2VsZWN0b3Igb2YgU2VsZWN0b3JFbmdpbmUuZmluZChPUEVOX1NFTEVDVE9SKSkge1xuICAgIE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKHNlbGVjdG9yKS5zaG93KCk7XG4gIH1cbn0pO1xuRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfUkVTSVpFLCAoKSA9PiB7XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBTZWxlY3RvckVuZ2luZS5maW5kKCdbYXJpYS1tb2RhbF1bY2xhc3MqPXNob3ddW2NsYXNzKj1vZmZjYW52YXMtXScpKSB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gIT09ICdmaXhlZCcpIHtcbiAgICAgIE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQpLmhpZGUoKTtcbiAgICB9XG4gIH1cbn0pO1xuZW5hYmxlRGlzbWlzc1RyaWdnZXIoT2ZmY2FudmFzKTtcbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKE9mZmNhbnZhcyk7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4wKTogdXRpbC9zYW5pdGl6ZXIuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuY29uc3QgdXJpQXR0cmlidXRlcyA9IG5ldyBTZXQoWydiYWNrZ3JvdW5kJywgJ2NpdGUnLCAnaHJlZicsICdpdGVtdHlwZScsICdsb25nZGVzYycsICdwb3N0ZXInLCAnc3JjJywgJ3hsaW5rOmhyZWYnXSk7XG5jb25zdCBBUklBX0FUVFJJQlVURV9QQVRURVJOID0gL15hcmlhLVtcXHctXSokL2k7XG4vKipcbiAqIEEgcGF0dGVybiB0aGF0IHJlY29nbml6ZXMgYSBjb21tb25seSB1c2VmdWwgc3Vic2V0IG9mIFVSTHMgdGhhdCBhcmUgc2FmZS5cbiAqXG4gKiBTaG91dC1vdXQgdG8gQW5ndWxhciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvMTIuMi54L3BhY2thZ2VzL2NvcmUvc3JjL3Nhbml0aXphdGlvbi91cmxfc2FuaXRpemVyLnRzXG4gKi9cblxuY29uc3QgU0FGRV9VUkxfUEFUVEVSTiA9IC9eKD86KD86aHR0cHM/fG1haWx0b3xmdHB8dGVsfGZpbGV8c21zKTp8W14jJi86P10qKD86WyMvP118JCkpL2k7XG4vKipcbiAqIEEgcGF0dGVybiB0aGF0IG1hdGNoZXMgc2FmZSBkYXRhIFVSTHMuIE9ubHkgbWF0Y2hlcyBpbWFnZSwgdmlkZW8gYW5kIGF1ZGlvIHR5cGVzLlxuICpcbiAqIFNob3V0LW91dCB0byBBbmd1bGFyIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi8xMi4yLngvcGFja2FnZXMvY29yZS9zcmMvc2FuaXRpemF0aW9uL3VybF9zYW5pdGl6ZXIudHNcbiAqL1xuXG5jb25zdCBEQVRBX1VSTF9QQVRURVJOID0gL15kYXRhOig/OmltYWdlXFwvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1xcLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtKXxhdWRpb1xcLyg/Om1wM3xvZ2F8b2dnfG9wdXMpKTtiYXNlNjQsW1xcZCsvYS16XSs9KiQvaTtcblxuY29uc3QgYWxsb3dlZEF0dHJpYnV0ZSA9IChhdHRyaWJ1dGUsIGFsbG93ZWRBdHRyaWJ1dGVMaXN0KSA9PiB7XG4gIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICBpZiAoYWxsb3dlZEF0dHJpYnV0ZUxpc3QuaW5jbHVkZXMoYXR0cmlidXRlTmFtZSkpIHtcbiAgICBpZiAodXJpQXR0cmlidXRlcy5oYXMoYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgIHJldHVybiBCb29sZWFuKFNBRkVfVVJMX1BBVFRFUk4udGVzdChhdHRyaWJ1dGUubm9kZVZhbHVlKSB8fCBEQVRBX1VSTF9QQVRURVJOLnRlc3QoYXR0cmlidXRlLm5vZGVWYWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIENoZWNrIGlmIGEgcmVndWxhciBleHByZXNzaW9uIHZhbGlkYXRlcyB0aGUgYXR0cmlidXRlLlxuXG5cbiAgcmV0dXJuIGFsbG93ZWRBdHRyaWJ1dGVMaXN0LmZpbHRlcihhdHRyaWJ1dGVSZWdleCA9PiBhdHRyaWJ1dGVSZWdleCBpbnN0YW5jZW9mIFJlZ0V4cCkuc29tZShyZWdleCA9PiByZWdleC50ZXN0KGF0dHJpYnV0ZU5hbWUpKTtcbn07XG5cbmNvbnN0IERlZmF1bHRBbGxvd2xpc3QgPSB7XG4gIC8vIEdsb2JhbCBhdHRyaWJ1dGVzIGFsbG93ZWQgb24gYW55IHN1cHBsaWVkIGVsZW1lbnQgYmVsb3cuXG4gICcqJzogWydjbGFzcycsICdkaXInLCAnaWQnLCAnbGFuZycsICdyb2xlJywgQVJJQV9BVFRSSUJVVEVfUEFUVEVSTl0sXG4gIGE6IFsndGFyZ2V0JywgJ2hyZWYnLCAndGl0bGUnLCAncmVsJ10sXG4gIGFyZWE6IFtdLFxuICBiOiBbXSxcbiAgYnI6IFtdLFxuICBjb2w6IFtdLFxuICBjb2RlOiBbXSxcbiAgZGl2OiBbXSxcbiAgZW06IFtdLFxuICBocjogW10sXG4gIGgxOiBbXSxcbiAgaDI6IFtdLFxuICBoMzogW10sXG4gIGg0OiBbXSxcbiAgaDU6IFtdLFxuICBoNjogW10sXG4gIGk6IFtdLFxuICBpbWc6IFsnc3JjJywgJ3NyY3NldCcsICdhbHQnLCAndGl0bGUnLCAnd2lkdGgnLCAnaGVpZ2h0J10sXG4gIGxpOiBbXSxcbiAgb2w6IFtdLFxuICBwOiBbXSxcbiAgcHJlOiBbXSxcbiAgczogW10sXG4gIHNtYWxsOiBbXSxcbiAgc3BhbjogW10sXG4gIHN1YjogW10sXG4gIHN1cDogW10sXG4gIHN0cm9uZzogW10sXG4gIHU6IFtdLFxuICB1bDogW11cbn07XG5mdW5jdGlvbiBzYW5pdGl6ZUh0bWwodW5zYWZlSHRtbCwgYWxsb3dMaXN0LCBzYW5pdGl6ZUZ1bmN0aW9uKSB7XG4gIGlmICghdW5zYWZlSHRtbC5sZW5ndGgpIHtcbiAgICByZXR1cm4gdW5zYWZlSHRtbDtcbiAgfVxuXG4gIGlmIChzYW5pdGl6ZUZ1bmN0aW9uICYmIHR5cGVvZiBzYW5pdGl6ZUZ1bmN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHNhbml0aXplRnVuY3Rpb24odW5zYWZlSHRtbCk7XG4gIH1cblxuICBjb25zdCBkb21QYXJzZXIgPSBuZXcgd2luZG93LkRPTVBhcnNlcigpO1xuICBjb25zdCBjcmVhdGVkRG9jdW1lbnQgPSBkb21QYXJzZXIucGFyc2VGcm9tU3RyaW5nKHVuc2FmZUh0bWwsICd0ZXh0L2h0bWwnKTtcbiAgY29uc3QgZWxlbWVudHMgPSBbXS5jb25jYXQoLi4uY3JlYXRlZERvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnKicpKTtcblxuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICBjb25zdCBlbGVtZW50TmFtZSA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghT2JqZWN0LmtleXMoYWxsb3dMaXN0KS5pbmNsdWRlcyhlbGVtZW50TmFtZSkpIHtcbiAgICAgIGVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVMaXN0ID0gW10uY29uY2F0KC4uLmVsZW1lbnQuYXR0cmlidXRlcyk7XG4gICAgY29uc3QgYWxsb3dlZEF0dHJpYnV0ZXMgPSBbXS5jb25jYXQoYWxsb3dMaXN0WycqJ10gfHwgW10sIGFsbG93TGlzdFtlbGVtZW50TmFtZV0gfHwgW10pO1xuXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlTGlzdCkge1xuICAgICAgaWYgKCFhbGxvd2VkQXR0cmlidXRlKGF0dHJpYnV0ZSwgYWxsb3dlZEF0dHJpYnV0ZXMpKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZS5ub2RlTmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZWREb2N1bWVudC5ib2R5LmlubmVySFRNTDtcbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjApOiB1dGlsL3RlbXBsYXRlLWZhY3RvcnkuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDUgPSAnVGVtcGxhdGVGYWN0b3J5JztcbmNvbnN0IERlZmF1bHQkNCA9IHtcbiAgYWxsb3dMaXN0OiBEZWZhdWx0QWxsb3dsaXN0LFxuICBjb250ZW50OiB7fSxcbiAgLy8geyBzZWxlY3RvciA6IHRleHQgLCAgc2VsZWN0b3IyIDogdGV4dDIgLCB9XG4gIGV4dHJhQ2xhc3M6ICcnLFxuICBodG1sOiBmYWxzZSxcbiAgc2FuaXRpemU6IHRydWUsXG4gIHNhbml0aXplRm46IG51bGwsXG4gIHRlbXBsYXRlOiAnPGRpdj48L2Rpdj4nXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkNCA9IHtcbiAgYWxsb3dMaXN0OiAnb2JqZWN0JyxcbiAgY29udGVudDogJ29iamVjdCcsXG4gIGV4dHJhQ2xhc3M6ICcoc3RyaW5nfGZ1bmN0aW9uKScsXG4gIGh0bWw6ICdib29sZWFuJyxcbiAgc2FuaXRpemU6ICdib29sZWFuJyxcbiAgc2FuaXRpemVGbjogJyhudWxsfGZ1bmN0aW9uKScsXG4gIHRlbXBsYXRlOiAnc3RyaW5nJ1xufTtcbmNvbnN0IERlZmF1bHRDb250ZW50VHlwZSA9IHtcbiAgZW50cnk6ICcoc3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb258bnVsbCknLFxuICBzZWxlY3RvcjogJyhzdHJpbmd8ZWxlbWVudCknXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgVGVtcGxhdGVGYWN0b3J5IGV4dGVuZHMgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgfSAvLyBHZXR0ZXJzXG5cblxuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkNDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkNTtcbiAgfSAvLyBQdWJsaWNcblxuXG4gIGdldENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fY29uZmlnLmNvbnRlbnQpLm1hcChjb25maWcgPT4gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24oY29uZmlnKSkuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgaGFzQ29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDb250ZW50KCkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGNoYW5nZUNvbnRlbnQoY29udGVudCkge1xuICAgIHRoaXMuX2NoZWNrQ29udGVudChjb250ZW50KTtcblxuICAgIHRoaXMuX2NvbmZpZy5jb250ZW50ID0geyAuLi50aGlzLl9jb25maWcuY29udGVudCxcbiAgICAgIC4uLmNvbnRlbnRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9IdG1sKCkge1xuICAgIGNvbnN0IHRlbXBsYXRlV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRlbXBsYXRlV3JhcHBlci5pbm5lckhUTUwgPSB0aGlzLl9tYXliZVNhbml0aXplKHRoaXMuX2NvbmZpZy50ZW1wbGF0ZSk7XG5cbiAgICBmb3IgKGNvbnN0IFtzZWxlY3RvciwgdGV4dF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fY29uZmlnLmNvbnRlbnQpKSB7XG4gICAgICB0aGlzLl9zZXRDb250ZW50KHRlbXBsYXRlV3JhcHBlciwgdGV4dCwgc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIGNvbnN0IHRlbXBsYXRlID0gdGVtcGxhdGVXcmFwcGVyLmNoaWxkcmVuWzBdO1xuXG4gICAgY29uc3QgZXh0cmFDbGFzcyA9IHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy5leHRyYUNsYXNzKTtcblxuICAgIGlmIChleHRyYUNsYXNzKSB7XG4gICAgICB0ZW1wbGF0ZS5jbGFzc0xpc3QuYWRkKC4uLmV4dHJhQ2xhc3Muc3BsaXQoJyAnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbXBsYXRlO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF90eXBlQ2hlY2tDb25maWcoY29uZmlnKSB7XG4gICAgc3VwZXIuX3R5cGVDaGVja0NvbmZpZyhjb25maWcpO1xuXG4gICAgdGhpcy5fY2hlY2tDb250ZW50KGNvbmZpZy5jb250ZW50KTtcbiAgfVxuXG4gIF9jaGVja0NvbnRlbnQoYXJnKSB7XG4gICAgZm9yIChjb25zdCBbc2VsZWN0b3IsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKGFyZykpIHtcbiAgICAgIHN1cGVyLl90eXBlQ2hlY2tDb25maWcoe1xuICAgICAgICBzZWxlY3RvcixcbiAgICAgICAgZW50cnk6IGNvbnRlbnRcbiAgICAgIH0sIERlZmF1bHRDb250ZW50VHlwZSk7XG4gICAgfVxuICB9XG5cbiAgX3NldENvbnRlbnQodGVtcGxhdGUsIGNvbnRlbnQsIHNlbGVjdG9yKSB7XG4gICAgY29uc3QgdGVtcGxhdGVFbGVtZW50ID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShzZWxlY3RvciwgdGVtcGxhdGUpO1xuXG4gICAgaWYgKCF0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb250ZW50ID0gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24oY29udGVudCk7XG5cbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHRlbXBsYXRlRWxlbWVudC5yZW1vdmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNFbGVtZW50KGNvbnRlbnQpKSB7XG4gICAgICB0aGlzLl9wdXRFbGVtZW50SW5UZW1wbGF0ZShnZXRFbGVtZW50KGNvbnRlbnQpLCB0ZW1wbGF0ZUVsZW1lbnQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5odG1sKSB7XG4gICAgICB0ZW1wbGF0ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5fbWF5YmVTYW5pdGl6ZShjb250ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0ZW1wbGF0ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBjb250ZW50O1xuICB9XG5cbiAgX21heWJlU2FuaXRpemUoYXJnKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5zYW5pdGl6ZSA/IHNhbml0aXplSHRtbChhcmcsIHRoaXMuX2NvbmZpZy5hbGxvd0xpc3QsIHRoaXMuX2NvbmZpZy5zYW5pdGl6ZUZuKSA6IGFyZztcbiAgfVxuXG4gIF9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJyA/IGFyZyh0aGlzKSA6IGFyZztcbiAgfVxuXG4gIF9wdXRFbGVtZW50SW5UZW1wbGF0ZShlbGVtZW50LCB0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fY29uZmlnLmh0bWwpIHtcbiAgICAgIHRlbXBsYXRlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAgIHRlbXBsYXRlRWxlbWVudC5hcHBlbmQoZWxlbWVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGVtcGxhdGVFbGVtZW50LnRleHRDb250ZW50ID0gZWxlbWVudC50ZXh0Q29udGVudDtcbiAgfVxuXG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4wKTogdG9vbHRpcC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkNCA9ICd0b29sdGlwJztcbmNvbnN0IERJU0FMTE9XRURfQVRUUklCVVRFUyA9IG5ldyBTZXQoWydzYW5pdGl6ZScsICdhbGxvd0xpc3QnLCAnc2FuaXRpemVGbiddKTtcbmNvbnN0IENMQVNTX05BTUVfRkFERSQyID0gJ2ZhZGUnO1xuY29uc3QgQ0xBU1NfTkFNRV9NT0RBTCA9ICdtb2RhbCc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckMiA9ICdzaG93JztcbmNvbnN0IFNFTEVDVE9SX1RPT0xUSVBfSU5ORVIgPSAnLnRvb2x0aXAtaW5uZXInO1xuY29uc3QgU0VMRUNUT1JfTU9EQUwgPSBgLiR7Q0xBU1NfTkFNRV9NT0RBTH1gO1xuY29uc3QgRVZFTlRfTU9EQUxfSElERSA9ICdoaWRlLmJzLm1vZGFsJztcbmNvbnN0IFRSSUdHRVJfSE9WRVIgPSAnaG92ZXInO1xuY29uc3QgVFJJR0dFUl9GT0NVUyA9ICdmb2N1cyc7XG5jb25zdCBUUklHR0VSX0NMSUNLID0gJ2NsaWNrJztcbmNvbnN0IFRSSUdHRVJfTUFOVUFMID0gJ21hbnVhbCc7XG5jb25zdCBFVkVOVF9ISURFJDIgPSAnaGlkZSc7XG5jb25zdCBFVkVOVF9ISURERU4kMiA9ICdoaWRkZW4nO1xuY29uc3QgRVZFTlRfU0hPVyQyID0gJ3Nob3cnO1xuY29uc3QgRVZFTlRfU0hPV04kMiA9ICdzaG93bic7XG5jb25zdCBFVkVOVF9JTlNFUlRFRCA9ICdpbnNlcnRlZCc7XG5jb25zdCBFVkVOVF9DTElDSyQxID0gJ2NsaWNrJztcbmNvbnN0IEVWRU5UX0ZPQ1VTSU4kMSA9ICdmb2N1c2luJztcbmNvbnN0IEVWRU5UX0ZPQ1VTT1VUJDEgPSAnZm9jdXNvdXQnO1xuY29uc3QgRVZFTlRfTU9VU0VFTlRFUiA9ICdtb3VzZWVudGVyJztcbmNvbnN0IEVWRU5UX01PVVNFTEVBVkUgPSAnbW91c2VsZWF2ZSc7XG5jb25zdCBBdHRhY2htZW50TWFwID0ge1xuICBBVVRPOiAnYXV0bycsXG4gIFRPUDogJ3RvcCcsXG4gIFJJR0hUOiBpc1JUTCgpID8gJ2xlZnQnIDogJ3JpZ2h0JyxcbiAgQk9UVE9NOiAnYm90dG9tJyxcbiAgTEVGVDogaXNSVEwoKSA/ICdyaWdodCcgOiAnbGVmdCdcbn07XG5jb25zdCBEZWZhdWx0JDMgPSB7XG4gIGFsbG93TGlzdDogRGVmYXVsdEFsbG93bGlzdCxcbiAgYW5pbWF0aW9uOiB0cnVlLFxuICBib3VuZGFyeTogJ2NsaXBwaW5nUGFyZW50cycsXG4gIGNvbnRhaW5lcjogZmFsc2UsXG4gIGN1c3RvbUNsYXNzOiAnJyxcbiAgZGVsYXk6IDAsXG4gIGZhbGxiYWNrUGxhY2VtZW50czogWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgaHRtbDogZmFsc2UsXG4gIG9mZnNldDogWzAsIDBdLFxuICBwbGFjZW1lbnQ6ICd0b3AnLFxuICBwb3BwZXJDb25maWc6IG51bGwsXG4gIHNhbml0aXplOiB0cnVlLFxuICBzYW5pdGl6ZUZuOiBudWxsLFxuICBzZWxlY3RvcjogZmFsc2UsXG4gIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz1cInRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPicgKyAnPGRpdiBjbGFzcz1cInRvb2x0aXAtYXJyb3dcIj48L2Rpdj4nICsgJzxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PC9kaXY+JyArICc8L2Rpdj4nLFxuICB0aXRsZTogJycsXG4gIHRyaWdnZXI6ICdob3ZlciBmb2N1cydcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQzID0ge1xuICBhbGxvd0xpc3Q6ICdvYmplY3QnLFxuICBhbmltYXRpb246ICdib29sZWFuJyxcbiAgYm91bmRhcnk6ICcoc3RyaW5nfGVsZW1lbnQpJyxcbiAgY29udGFpbmVyOiAnKHN0cmluZ3xlbGVtZW50fGJvb2xlYW4pJyxcbiAgY3VzdG9tQ2xhc3M6ICcoc3RyaW5nfGZ1bmN0aW9uKScsXG4gIGRlbGF5OiAnKG51bWJlcnxvYmplY3QpJyxcbiAgZmFsbGJhY2tQbGFjZW1lbnRzOiAnYXJyYXknLFxuICBodG1sOiAnYm9vbGVhbicsXG4gIG9mZnNldDogJyhhcnJheXxzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgcGxhY2VtZW50OiAnKHN0cmluZ3xmdW5jdGlvbiknLFxuICBwb3BwZXJDb25maWc6ICcobnVsbHxvYmplY3R8ZnVuY3Rpb24pJyxcbiAgc2FuaXRpemU6ICdib29sZWFuJyxcbiAgc2FuaXRpemVGbjogJyhudWxsfGZ1bmN0aW9uKScsXG4gIHNlbGVjdG9yOiAnKHN0cmluZ3xib29sZWFuKScsXG4gIHRlbXBsYXRlOiAnc3RyaW5nJyxcbiAgdGl0bGU6ICcoc3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb24pJyxcbiAgdHJpZ2dlcjogJ3N0cmluZydcbn07XG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBUb29sdGlwIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIGlmICh0eXBlb2YgUG9wcGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9vdHN0cmFwXFwncyB0b29sdGlwcyByZXF1aXJlIFBvcHBlciAoaHR0cHM6Ly9wb3BwZXIuanMub3JnKScpO1xuICAgIH1cblxuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZyk7IC8vIFByaXZhdGVcblxuICAgIHRoaXMuX2lzRW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5fdGltZW91dCA9IDA7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgdGhpcy5fYWN0aXZlVHJpZ2dlciA9IHt9O1xuICAgIHRoaXMuX3BvcHBlciA9IG51bGw7XG4gICAgdGhpcy5fdGVtcGxhdGVGYWN0b3J5ID0gbnVsbDtcbiAgICB0aGlzLl9uZXdDb250ZW50ID0gbnVsbDsgLy8gUHJvdGVjdGVkXG5cbiAgICB0aGlzLnRpcCA9IG51bGw7XG5cbiAgICB0aGlzLl9zZXRMaXN0ZW5lcnMoKTtcbiAgfSAvLyBHZXR0ZXJzXG5cblxuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkMztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkNDtcbiAgfSAvLyBQdWJsaWNcblxuXG4gIGVuYWJsZSgpIHtcbiAgICB0aGlzLl9pc0VuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgZGlzYWJsZSgpIHtcbiAgICB0aGlzLl9pc0VuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHRvZ2dsZUVuYWJsZWQoKSB7XG4gICAgdGhpcy5faXNFbmFibGVkID0gIXRoaXMuX2lzRW5hYmxlZDtcbiAgfVxuXG4gIHRvZ2dsZShldmVudCkge1xuICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5faW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KGV2ZW50KTtcblxuICAgICAgY29udGV4dC5fYWN0aXZlVHJpZ2dlci5jbGljayA9ICFjb250ZXh0Ll9hY3RpdmVUcmlnZ2VyLmNsaWNrO1xuXG4gICAgICBpZiAoY29udGV4dC5faXNXaXRoQWN0aXZlVHJpZ2dlcigpKSB7XG4gICAgICAgIGNvbnRleHQuX2VudGVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZXh0Ll9sZWF2ZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgdGhpcy5fbGVhdmUoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2VudGVyKCk7XG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KTtcbiAgICBFdmVudEhhbmRsZXIub2ZmKHRoaXMuX2VsZW1lbnQuY2xvc2VzdChTRUxFQ1RPUl9NT0RBTCksIEVWRU5UX01PREFMX0hJREUsIHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIpO1xuXG4gICAgaWYgKHRoaXMudGlwKSB7XG4gICAgICB0aGlzLnRpcC5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlUG9wcGVyKCk7XG5cbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cblxuICBzaG93KCkge1xuICAgIGlmICh0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPT09ICdub25lJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgdXNlIHNob3cgb24gdmlzaWJsZSBlbGVtZW50cycpO1xuICAgIH1cblxuICAgIGlmICghKHRoaXMuX2lzV2l0aENvbnRlbnQoKSAmJiB0aGlzLl9pc0VuYWJsZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfU0hPVyQyKSk7XG4gICAgY29uc3Qgc2hhZG93Um9vdCA9IGZpbmRTaGFkb3dSb290KHRoaXMuX2VsZW1lbnQpO1xuXG4gICAgY29uc3QgaXNJblRoZURvbSA9IChzaGFkb3dSb290IHx8IHRoaXMuX2VsZW1lbnQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmNvbnRhaW5zKHRoaXMuX2VsZW1lbnQpO1xuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkIHx8ICFpc0luVGhlRG9tKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyB0b2RvIHY2IHJlbW92ZSB0aGlzIE9SIG1ha2UgaXQgb3B0aW9uYWxcblxuXG4gICAgaWYgKHRoaXMudGlwKSB7XG4gICAgICB0aGlzLnRpcC5yZW1vdmUoKTtcbiAgICAgIHRoaXMudGlwID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB0aXAgPSB0aGlzLl9nZXRUaXBFbGVtZW50KCk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScsIHRpcC5nZXRBdHRyaWJ1dGUoJ2lkJykpO1xuXG4gICAgY29uc3Qge1xuICAgICAgY29udGFpbmVyXG4gICAgfSA9IHRoaXMuX2NvbmZpZztcblxuICAgIGlmICghdGhpcy5fZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyh0aGlzLnRpcCkpIHtcbiAgICAgIGNvbnRhaW5lci5hcHBlbmQodGlwKTtcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX0lOU0VSVEVEKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLnVwZGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9wb3BwZXIgPSB0aGlzLl9jcmVhdGVQb3BwZXIodGlwKTtcbiAgICB9XG5cbiAgICB0aXAuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1ckMik7IC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSBhZGQgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHRvIHRoZSBib2R5J3MgaW1tZWRpYXRlIGNoaWxkcmVuO1xuICAgIC8vIG9ubHkgbmVlZGVkIGJlY2F1c2Ugb2YgYnJva2VuIGV2ZW50IGRlbGVnYXRpb24gb24gaU9TXG4gICAgLy8gaHR0cHM6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDE0LzAyL21vdXNlX2V2ZW50X2J1Yi5odG1sXG5cbiAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBwcmV2aW91c0hvdmVyU3RhdGUgPSB0aGlzLl9pc0hvdmVyZWQ7XG4gICAgICB0aGlzLl9pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX1NIT1dOJDIpKTtcblxuICAgICAgaWYgKHByZXZpb3VzSG92ZXJTdGF0ZSkge1xuICAgICAgICB0aGlzLl9sZWF2ZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLnRpcCwgdGhpcy5faXNBbmltYXRlZCgpKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9ISURFJDIpKTtcblxuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRpcCA9IHRoaXMuX2dldFRpcEVsZW1lbnQoKTtcblxuICAgIHRpcC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQyKTsgLy8gSWYgdGhpcyBpcyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlIHdlIHJlbW92ZSB0aGUgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHdlIGFkZGVkIGZvciBpT1Mgc3VwcG9ydFxuXG4gICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSkge1xuICAgICAgICBFdmVudEhhbmRsZXIub2ZmKGVsZW1lbnQsICdtb3VzZW92ZXInLCBub29wKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfQ0xJQ0tdID0gZmFsc2U7XG4gICAgdGhpcy5fYWN0aXZlVHJpZ2dlcltUUklHR0VSX0ZPQ1VTXSA9IGZhbHNlO1xuICAgIHRoaXMuX2FjdGl2ZVRyaWdnZXJbVFJJR0dFUl9IT1ZFUl0gPSBmYWxzZTtcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICAgIHRpcC5yZW1vdmUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcblxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfSElEREVOJDIpKTtcblxuICAgICAgdGhpcy5fZGlzcG9zZVBvcHBlcigpO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLnRpcCwgdGhpcy5faXNBbmltYXRlZCgpKTtcbiAgfVxuXG4gIHVwZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5fcG9wcGVyKSB7XG4gICAgICB0aGlzLl9wb3BwZXIudXBkYXRlKCk7XG4gICAgfVxuICB9IC8vIFByb3RlY3RlZFxuXG5cbiAgX2lzV2l0aENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5fZ2V0VGl0bGUoKSk7XG4gIH1cblxuICBfZ2V0VGlwRWxlbWVudCgpIHtcbiAgICBpZiAoIXRoaXMudGlwKSB7XG4gICAgICB0aGlzLnRpcCA9IHRoaXMuX2NyZWF0ZVRpcEVsZW1lbnQodGhpcy5fbmV3Q29udGVudCB8fCB0aGlzLl9nZXRDb250ZW50Rm9yVGVtcGxhdGUoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGlwO1xuICB9XG5cbiAgX2NyZWF0ZVRpcEVsZW1lbnQoY29udGVudCkge1xuICAgIGNvbnN0IHRpcCA9IHRoaXMuX2dldFRlbXBsYXRlRmFjdG9yeShjb250ZW50KS50b0h0bWwoKTsgLy8gdG9kbzogcmVtb3ZlIHRoaXMgY2hlY2sgb24gdjZcblxuXG4gICAgaWYgKCF0aXApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRpcC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfRkFERSQyLCBDTEFTU19OQU1FX1NIT1ckMik7IC8vIHRvZG86IG9uIHY2IHRoZSBmb2xsb3dpbmcgY2FuIGJlIGFjaGlldmVkIHdpdGggQ1NTIG9ubHlcblxuICAgIHRpcC5jbGFzc0xpc3QuYWRkKGBicy0ke3RoaXMuY29uc3RydWN0b3IuTkFNRX0tYXV0b2ApO1xuICAgIGNvbnN0IHRpcElkID0gZ2V0VUlEKHRoaXMuY29uc3RydWN0b3IuTkFNRSkudG9TdHJpbmcoKTtcbiAgICB0aXAuc2V0QXR0cmlidXRlKCdpZCcsIHRpcElkKTtcblxuICAgIGlmICh0aGlzLl9pc0FuaW1hdGVkKCkpIHtcbiAgICAgIHRpcC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfRkFERSQyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlwO1xuICB9XG5cbiAgc2V0Q29udGVudChjb250ZW50KSB7XG4gICAgdGhpcy5fbmV3Q29udGVudCA9IGNvbnRlbnQ7XG5cbiAgICBpZiAodGhpcy5faXNTaG93bigpKSB7XG4gICAgICB0aGlzLl9kaXNwb3NlUG9wcGVyKCk7XG5cbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIF9nZXRUZW1wbGF0ZUZhY3RvcnkoY29udGVudCkge1xuICAgIGlmICh0aGlzLl90ZW1wbGF0ZUZhY3RvcnkpIHtcbiAgICAgIHRoaXMuX3RlbXBsYXRlRmFjdG9yeS5jaGFuZ2VDb250ZW50KGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90ZW1wbGF0ZUZhY3RvcnkgPSBuZXcgVGVtcGxhdGVGYWN0b3J5KHsgLi4udGhpcy5fY29uZmlnLFxuICAgICAgICAvLyB0aGUgYGNvbnRlbnRgIHZhciBoYXMgdG8gYmUgYWZ0ZXIgYHRoaXMuX2NvbmZpZ2BcbiAgICAgICAgLy8gdG8gb3ZlcnJpZGUgY29uZmlnLmNvbnRlbnQgaW4gY2FzZSBvZiBwb3BvdmVyXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIGV4dHJhQ2xhc3M6IHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy5jdXN0b21DbGFzcylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZUZhY3Rvcnk7XG4gIH1cblxuICBfZ2V0Q29udGVudEZvclRlbXBsYXRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbU0VMRUNUT1JfVE9PTFRJUF9JTk5FUl06IHRoaXMuX2dldFRpdGxlKClcbiAgICB9O1xuICB9XG5cbiAgX2dldFRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0aGlzLl9jb25maWcudGl0bGUpIHx8IHRoaXMuX2NvbmZpZy5vcmlnaW5hbFRpdGxlO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5nZXRPckNyZWF0ZUluc3RhbmNlKGV2ZW50LmRlbGVnYXRlVGFyZ2V0LCB0aGlzLl9nZXREZWxlZ2F0ZUNvbmZpZygpKTtcbiAgfVxuXG4gIF9pc0FuaW1hdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuYW5pbWF0aW9uIHx8IHRoaXMudGlwICYmIHRoaXMudGlwLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUkMik7XG4gIH1cblxuICBfaXNTaG93bigpIHtcbiAgICByZXR1cm4gdGhpcy50aXAgJiYgdGhpcy50aXAuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0hPVyQyKTtcbiAgfVxuXG4gIF9jcmVhdGVQb3BwZXIodGlwKSB7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gdHlwZW9mIHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQgPT09ICdmdW5jdGlvbicgPyB0aGlzLl9jb25maWcucGxhY2VtZW50LmNhbGwodGhpcywgdGlwLCB0aGlzLl9lbGVtZW50KSA6IHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQ7XG4gICAgY29uc3QgYXR0YWNobWVudCA9IEF0dGFjaG1lbnRNYXBbcGxhY2VtZW50LnRvVXBwZXJDYXNlKCldO1xuICAgIHJldHVybiBQb3BwZXIuY3JlYXRlUG9wcGVyKHRoaXMuX2VsZW1lbnQsIHRpcCwgdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKGF0dGFjaG1lbnQpKTtcbiAgfVxuXG4gIF9nZXRPZmZzZXQoKSB7XG4gICAgY29uc3Qge1xuICAgICAgb2Zmc2V0XG4gICAgfSA9IHRoaXMuX2NvbmZpZztcblxuICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9mZnNldC5zcGxpdCgnLCcpLm1hcCh2YWx1ZSA9PiBOdW1iZXIucGFyc2VJbnQodmFsdWUsIDEwKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBwb3BwZXJEYXRhID0+IG9mZnNldChwb3BwZXJEYXRhLCB0aGlzLl9lbGVtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nID8gYXJnLmNhbGwodGhpcy5fZWxlbWVudCkgOiBhcmc7XG4gIH1cblxuICBfZ2V0UG9wcGVyQ29uZmlnKGF0dGFjaG1lbnQpIHtcbiAgICBjb25zdCBkZWZhdWx0QnNQb3BwZXJDb25maWcgPSB7XG4gICAgICBwbGFjZW1lbnQ6IGF0dGFjaG1lbnQsXG4gICAgICBtb2RpZmllcnM6IFt7XG4gICAgICAgIG5hbWU6ICdmbGlwJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogdGhpcy5fY29uZmlnLmZhbGxiYWNrUGxhY2VtZW50c1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgb2Zmc2V0OiB0aGlzLl9nZXRPZmZzZXQoKVxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgYm91bmRhcnk6IHRoaXMuX2NvbmZpZy5ib3VuZGFyeVxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdhcnJvdycsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBlbGVtZW50OiBgLiR7dGhpcy5jb25zdHJ1Y3Rvci5OQU1FfS1hcnJvd2BcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBuYW1lOiAncHJlU2V0UGxhY2VtZW50JyxcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgcGhhc2U6ICdiZWZvcmVNYWluJyxcbiAgICAgICAgZm46IGRhdGEgPT4ge1xuICAgICAgICAgIC8vIFByZS1zZXQgUG9wcGVyJ3MgcGxhY2VtZW50IGF0dHJpYnV0ZSBpbiBvcmRlciB0byByZWFkIHRoZSBhcnJvdyBzaXplcyBwcm9wZXJseS5cbiAgICAgICAgICAvLyBPdGhlcndpc2UsIFBvcHBlciBtaXhlcyB1cCB0aGUgd2lkdGggYW5kIGhlaWdodCBkaW1lbnNpb25zIHNpbmNlIHRoZSBpbml0aWFsIGFycm93IHN0eWxlIGlzIGZvciB0b3AgcGxhY2VtZW50XG4gICAgICAgICAgdGhpcy5fZ2V0VGlwRWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnZGF0YS1wb3BwZXItcGxhY2VtZW50JywgZGF0YS5zdGF0ZS5wbGFjZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XVxuICAgIH07XG4gICAgcmV0dXJuIHsgLi4uZGVmYXVsdEJzUG9wcGVyQ29uZmlnLFxuICAgICAgLi4uKHR5cGVvZiB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnID09PSAnZnVuY3Rpb24nID8gdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyhkZWZhdWx0QnNQb3BwZXJDb25maWcpIDogdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZylcbiAgICB9O1xuICB9XG5cbiAgX3NldExpc3RlbmVycygpIHtcbiAgICBjb25zdCB0cmlnZ2VycyA9IHRoaXMuX2NvbmZpZy50cmlnZ2VyLnNwbGl0KCcgJyk7XG5cbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpIHtcbiAgICAgIGlmICh0cmlnZ2VyID09PSAnY2xpY2snKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9DTElDSyQxKSwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB0aGlzLnRvZ2dsZShldmVudCkpO1xuICAgICAgfSBlbHNlIGlmICh0cmlnZ2VyICE9PSBUUklHR0VSX01BTlVBTCkge1xuICAgICAgICBjb25zdCBldmVudEluID0gdHJpZ2dlciA9PT0gVFJJR0dFUl9IT1ZFUiA/IHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX01PVVNFRU5URVIpIDogdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfRk9DVVNJTiQxKTtcbiAgICAgICAgY29uc3QgZXZlbnRPdXQgPSB0cmlnZ2VyID09PSBUUklHR0VSX0hPVkVSID8gdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfTU9VU0VMRUFWRSkgOiB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9GT0NVU09VVCQxKTtcbiAgICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIGV2ZW50SW4sIHRoaXMuX2NvbmZpZy5zZWxlY3RvciwgZXZlbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpO1xuXG4gICAgICAgICAgY29udGV4dC5fYWN0aXZlVHJpZ2dlcltldmVudC50eXBlID09PSAnZm9jdXNpbicgPyBUUklHR0VSX0ZPQ1VTIDogVFJJR0dFUl9IT1ZFUl0gPSB0cnVlO1xuXG4gICAgICAgICAgY29udGV4dC5fZW50ZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBldmVudE91dCwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldChldmVudCk7XG5cbiAgICAgICAgICBjb250ZXh0Ll9hY3RpdmVUcmlnZ2VyW2V2ZW50LnR5cGUgPT09ICdmb2N1c291dCcgPyBUUklHR0VSX0ZPQ1VTIDogVFJJR0dFUl9IT1ZFUl0gPSBjb250ZXh0Ll9lbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpO1xuXG4gICAgICAgICAgY29udGV4dC5fbGVhdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5faGlkZU1vZGFsSGFuZGxlciA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9lbGVtZW50KSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX01PREFMKSwgRVZFTlRfTU9EQUxfSElERSwgdGhpcy5faGlkZU1vZGFsSGFuZGxlcik7XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnNlbGVjdG9yKSB7XG4gICAgICB0aGlzLl9jb25maWcgPSB7IC4uLnRoaXMuX2NvbmZpZyxcbiAgICAgICAgdHJpZ2dlcjogJ21hbnVhbCcsXG4gICAgICAgIHNlbGVjdG9yOiAnJ1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZml4VGl0bGUoKTtcbiAgICB9XG4gIH1cblxuICBfZml4VGl0bGUoKSB7XG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLl9jb25maWcub3JpZ2luYWxUaXRsZTtcblxuICAgIGlmICghdGl0bGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiYgIXRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpKSB7XG4gICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRpdGxlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKTtcbiAgfVxuXG4gIF9lbnRlcigpIHtcbiAgICBpZiAodGhpcy5faXNTaG93bigpIHx8IHRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgdGhpcy5faXNIb3ZlcmVkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc0hvdmVyZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5fc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuX2NvbmZpZy5kZWxheS5zaG93KTtcbiAgfVxuXG4gIF9sZWF2ZSgpIHtcbiAgICBpZiAodGhpcy5faXNXaXRoQWN0aXZlVHJpZ2dlcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG5cbiAgICB0aGlzLl9zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuX2NvbmZpZy5kZWxheS5oaWRlKTtcbiAgfVxuXG4gIF9zZXRUaW1lb3V0KGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7XG4gICAgdGhpcy5fdGltZW91dCA9IHNldFRpbWVvdXQoaGFuZGxlciwgdGltZW91dCk7XG4gIH1cblxuICBfaXNXaXRoQWN0aXZlVHJpZ2dlcigpIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9hY3RpdmVUcmlnZ2VyKS5pbmNsdWRlcyh0cnVlKTtcbiAgfVxuXG4gIF9nZXRDb25maWcoY29uZmlnKSB7XG4gICAgY29uc3QgZGF0YUF0dHJpYnV0ZXMgPSBNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlcyh0aGlzLl9lbGVtZW50KTtcblxuICAgIGZvciAoY29uc3QgZGF0YUF0dHJpYnV0ZSBvZiBPYmplY3Qua2V5cyhkYXRhQXR0cmlidXRlcykpIHtcbiAgICAgIGlmIChESVNBTExPV0VEX0FUVFJJQlVURVMuaGFzKGRhdGFBdHRyaWJ1dGUpKSB7XG4gICAgICAgIGRlbGV0ZSBkYXRhQXR0cmlidXRlc1tkYXRhQXR0cmlidXRlXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25maWcgPSB7IC4uLmRhdGFBdHRyaWJ1dGVzLFxuICAgICAgLi4uKHR5cGVvZiBjb25maWcgPT09ICdvYmplY3QnICYmIGNvbmZpZyA/IGNvbmZpZyA6IHt9KVxuICAgIH07XG4gICAgY29uZmlnID0gdGhpcy5fbWVyZ2VDb25maWdPYmooY29uZmlnKTtcbiAgICBjb25maWcgPSB0aGlzLl9jb25maWdBZnRlck1lcmdlKGNvbmZpZyk7XG5cbiAgICB0aGlzLl90eXBlQ2hlY2tDb25maWcoY29uZmlnKTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICBjb25maWcuY29udGFpbmVyID0gY29uZmlnLmNvbnRhaW5lciA9PT0gZmFsc2UgPyBkb2N1bWVudC5ib2R5IDogZ2V0RWxlbWVudChjb25maWcuY29udGFpbmVyKTtcblxuICAgIGlmICh0eXBlb2YgY29uZmlnLmRlbGF5ID09PSAnbnVtYmVyJykge1xuICAgICAgY29uZmlnLmRlbGF5ID0ge1xuICAgICAgICBzaG93OiBjb25maWcuZGVsYXksXG4gICAgICAgIGhpZGU6IGNvbmZpZy5kZWxheVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25maWcub3JpZ2luYWxUaXRsZSA9IHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCd0aXRsZScpIHx8ICcnO1xuXG4gICAgaWYgKHR5cGVvZiBjb25maWcudGl0bGUgPT09ICdudW1iZXInKSB7XG4gICAgICBjb25maWcudGl0bGUgPSBjb25maWcudGl0bGUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZy5jb250ZW50ID09PSAnbnVtYmVyJykge1xuICAgICAgY29uZmlnLmNvbnRlbnQgPSBjb25maWcuY29udGVudC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBfZ2V0RGVsZWdhdGVDb25maWcoKSB7XG4gICAgY29uc3QgY29uZmlnID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLl9jb25maWcpIHtcbiAgICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRba2V5XSAhPT0gdGhpcy5fY29uZmlnW2tleV0pIHtcbiAgICAgICAgY29uZmlnW2tleV0gPSB0aGlzLl9jb25maWdba2V5XTtcbiAgICAgIH1cbiAgICB9IC8vIEluIHRoZSBmdXR1cmUgY2FuIGJlIHJlcGxhY2VkIHdpdGg6XG4gICAgLy8gY29uc3Qga2V5c1dpdGhEaWZmZXJlbnRWYWx1ZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLl9jb25maWcpLmZpbHRlcihlbnRyeSA9PiB0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRbZW50cnlbMF1dICE9PSB0aGlzLl9jb25maWdbZW50cnlbMF1dKVxuICAgIC8vIGBPYmplY3QuZnJvbUVudHJpZXMoa2V5c1dpdGhEaWZmZXJlbnRWYWx1ZXMpYFxuXG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgX2Rpc3Bvc2VQb3BwZXIoKSB7XG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLmRlc3Ryb3koKTtcblxuICAgICAgdGhpcy5fcG9wcGVyID0gbnVsbDtcbiAgICB9XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFRvb2x0aXAuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgfSk7XG4gIH1cblxufVxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5cbmRlZmluZUpRdWVyeVBsdWdpbihUb29sdGlwKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjApOiBwb3BvdmVyLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQzID0gJ3BvcG92ZXInO1xuY29uc3QgU0VMRUNUT1JfVElUTEUgPSAnLnBvcG92ZXItaGVhZGVyJztcbmNvbnN0IFNFTEVDVE9SX0NPTlRFTlQgPSAnLnBvcG92ZXItYm9keSc7XG5jb25zdCBEZWZhdWx0JDIgPSB7IC4uLlRvb2x0aXAuRGVmYXVsdCxcbiAgY29udGVudDogJycsXG4gIG9mZnNldDogWzAsIDhdLFxuICBwbGFjZW1lbnQ6ICdyaWdodCcsXG4gIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz1cInBvcG92ZXJcIiByb2xlPVwidG9vbHRpcFwiPicgKyAnPGRpdiBjbGFzcz1cInBvcG92ZXItYXJyb3dcIj48L2Rpdj4nICsgJzxoMyBjbGFzcz1cInBvcG92ZXItaGVhZGVyXCI+PC9oMz4nICsgJzxkaXYgY2xhc3M9XCJwb3BvdmVyLWJvZHlcIj48L2Rpdj4nICsgJzwvZGl2PicsXG4gIHRyaWdnZXI6ICdjbGljaydcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQyID0geyAuLi5Ub29sdGlwLkRlZmF1bHRUeXBlLFxuICBjb250ZW50OiAnKG51bGx8c3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb24pJ1xufTtcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFBvcG92ZXIgZXh0ZW5kcyBUb29sdGlwIHtcbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkMjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkMztcbiAgfSAvLyBPdmVycmlkZXNcblxuXG4gIF9pc1dpdGhDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRUaXRsZSgpIHx8IHRoaXMuX2dldENvbnRlbnQoKTtcbiAgfSAvLyBQcml2YXRlXG5cblxuICBfZ2V0Q29udGVudEZvclRlbXBsYXRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbU0VMRUNUT1JfVElUTEVdOiB0aGlzLl9nZXRUaXRsZSgpLFxuICAgICAgW1NFTEVDVE9SX0NPTlRFTlRdOiB0aGlzLl9nZXRDb250ZW50KClcbiAgICB9O1xuICB9XG5cbiAgX2dldENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy5jb250ZW50KTtcbiAgfSAvLyBTdGF0aWNcblxuXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gUG9wb3Zlci5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZyk7XG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuXG4gICAgICBkYXRhW2NvbmZpZ10oKTtcbiAgICB9KTtcbiAgfVxuXG59XG4vKipcbiAqIGpRdWVyeVxuICovXG5cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFBvcG92ZXIpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMCk6IHNjcm9sbHNweS5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkMiA9ICdzY3JvbGxzcHknO1xuY29uc3QgREFUQV9LRVkkMiA9ICdicy5zY3JvbGxzcHknO1xuY29uc3QgRVZFTlRfS0VZJDIgPSBgLiR7REFUQV9LRVkkMn1gO1xuY29uc3QgREFUQV9BUElfS0VZID0gJy5kYXRhLWFwaSc7XG5jb25zdCBFVkVOVF9BQ1RJVkFURSA9IGBhY3RpdmF0ZSR7RVZFTlRfS0VZJDJ9YDtcbmNvbnN0IEVWRU5UX0NMSUNLID0gYGNsaWNrJHtFVkVOVF9LRVkkMn1gO1xuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSQxID0gYGxvYWQke0VWRU5UX0tFWSQyfSR7REFUQV9BUElfS0VZfWA7XG5jb25zdCBDTEFTU19OQU1FX0RST1BET1dOX0lURU0gPSAnZHJvcGRvd24taXRlbSc7XG5jb25zdCBDTEFTU19OQU1FX0FDVElWRSQxID0gJ2FjdGl2ZSc7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1NQWSA9ICdbZGF0YS1icy1zcHk9XCJzY3JvbGxcIl0nO1xuY29uc3QgU0VMRUNUT1JfVEFSR0VUX0xJTktTID0gJ1tocmVmXSc7XG5jb25zdCBTRUxFQ1RPUl9OQVZfTElTVF9HUk9VUCA9ICcubmF2LCAubGlzdC1ncm91cCc7XG5jb25zdCBTRUxFQ1RPUl9OQVZfTElOS1MgPSAnLm5hdi1saW5rJztcbmNvbnN0IFNFTEVDVE9SX05BVl9JVEVNUyA9ICcubmF2LWl0ZW0nO1xuY29uc3QgU0VMRUNUT1JfTElTVF9JVEVNUyA9ICcubGlzdC1ncm91cC1pdGVtJztcbmNvbnN0IFNFTEVDVE9SX0xJTktfSVRFTVMgPSBgJHtTRUxFQ1RPUl9OQVZfTElOS1N9LCAke1NFTEVDVE9SX05BVl9JVEVNU30gPiAke1NFTEVDVE9SX05BVl9MSU5LU30sICR7U0VMRUNUT1JfTElTVF9JVEVNU31gO1xuY29uc3QgU0VMRUNUT1JfRFJPUERPV04gPSAnLmRyb3Bkb3duJztcbmNvbnN0IFNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSQxID0gJy5kcm9wZG93bi10b2dnbGUnO1xuY29uc3QgRGVmYXVsdCQxID0ge1xuICBvZmZzZXQ6IG51bGwsXG4gIC8vIFRPRE86IHY2IEBkZXByZWNhdGVkLCBrZWVwIGl0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zXG4gIHJvb3RNYXJnaW46ICcwcHggMHB4IC0yNSUnLFxuICBzbW9vdGhTY3JvbGw6IGZhbHNlLFxuICB0YXJnZXQ6IG51bGxcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQxID0ge1xuICBvZmZzZXQ6ICcobnVtYmVyfG51bGwpJyxcbiAgLy8gVE9ETyB2NiBAZGVwcmVjYXRlZCwga2VlcCBpdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29uc1xuICByb290TWFyZ2luOiAnc3RyaW5nJyxcbiAgc21vb3RoU2Nyb2xsOiAnYm9vbGVhbicsXG4gIHRhcmdldDogJ2VsZW1lbnQnXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgU2Nyb2xsU3B5IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZyk7IC8vIHRoaXMuX2VsZW1lbnQgaXMgdGhlIG9ic2VydmFibGVzQ29udGFpbmVyIGFuZCBjb25maWcudGFyZ2V0IHRoZSBtZW51IGxpbmtzIHdyYXBwZXJcblxuICAgIHRoaXMuX3RhcmdldExpbmtzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9yb290RWxlbWVudCA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5fZWxlbWVudCkub3ZlcmZsb3dZID09PSAndmlzaWJsZScgPyBudWxsIDogdGhpcy5fZWxlbWVudDtcbiAgICB0aGlzLl9hY3RpdmVUYXJnZXQgPSBudWxsO1xuICAgIHRoaXMuX29ic2VydmVyID0gbnVsbDtcbiAgICB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEgPSB7XG4gICAgICB2aXNpYmxlRW50cnlUb3A6IDAsXG4gICAgICBwYXJlbnRTY3JvbGxUb3A6IDBcbiAgICB9O1xuICAgIHRoaXMucmVmcmVzaCgpOyAvLyBpbml0aWFsaXplXG4gIH0gLy8gR2V0dGVyc1xuXG5cbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQxO1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJDI7XG4gIH0gLy8gUHVibGljXG5cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuX2luaXRpYWxpemVUYXJnZXRzQW5kT2JzZXJ2YWJsZXMoKTtcblxuICAgIHRoaXMuX21heWJlRW5hYmxlU21vb3RoU2Nyb2xsKCk7XG5cbiAgICBpZiAodGhpcy5fb2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSB0aGlzLl9nZXROZXdPYnNlcnZlcigpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUoc2VjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG5cbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgLy8gVE9ETzogb24gdjYgdGFyZ2V0IHNob3VsZCBiZSBnaXZlbiBleHBsaWNpdGx5ICYgcmVtb3ZlIHRoZSB7dGFyZ2V0OiAnc3MtdGFyZ2V0J30gY2FzZVxuICAgIGNvbmZpZy50YXJnZXQgPSBnZXRFbGVtZW50KGNvbmZpZy50YXJnZXQpIHx8IGRvY3VtZW50LmJvZHk7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIF9tYXliZUVuYWJsZVNtb290aFNjcm9sbCgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5zbW9vdGhTY3JvbGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIHVucmVnaXN0ZXIgYW55IHByZXZpb3VzIGxpc3RlbmVyc1xuXG5cbiAgICBFdmVudEhhbmRsZXIub2ZmKHRoaXMuX2NvbmZpZy50YXJnZXQsIEVWRU5UX0NMSUNLKTtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fY29uZmlnLnRhcmdldCwgRVZFTlRfQ0xJQ0ssIFNFTEVDVE9SX1RBUkdFVF9MSU5LUywgZXZlbnQgPT4ge1xuICAgICAgY29uc3Qgb2JzZXJ2YWJsZVNlY3Rpb24gPSB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMuZ2V0KGV2ZW50LnRhcmdldC5oYXNoKTtcblxuICAgICAgaWYgKG9ic2VydmFibGVTZWN0aW9uKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9yb290RWxlbWVudCB8fCB3aW5kb3c7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IG9ic2VydmFibGVTZWN0aW9uLm9mZnNldFRvcCAtIHRoaXMuX2VsZW1lbnQub2Zmc2V0VG9wO1xuXG4gICAgICAgIGlmIChyb290LnNjcm9sbFRvKSB7XG4gICAgICAgICAgcm9vdC5zY3JvbGxUbyh7XG4gICAgICAgICAgICB0b3A6IGhlaWdodCxcbiAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBDaHJvbWUgNjAgZG9lc24ndCBzdXBwb3J0IGBzY3JvbGxUb2BcblxuXG4gICAgICAgIHJvb3Quc2Nyb2xsVG9wID0gaGVpZ2h0O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgX2dldE5ld09ic2VydmVyKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290OiB0aGlzLl9yb290RWxlbWVudCxcbiAgICAgIHRocmVzaG9sZDogWzAuMSwgMC41LCAxXSxcbiAgICAgIHJvb3RNYXJnaW46IHRoaXMuX2dldFJvb3RNYXJnaW4oKVxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlbnRyaWVzID0+IHRoaXMuX29ic2VydmVyQ2FsbGJhY2soZW50cmllcyksIG9wdGlvbnMpO1xuICB9IC8vIFRoZSBsb2dpYyBvZiBzZWxlY3Rpb25cblxuXG4gIF9vYnNlcnZlckNhbGxiYWNrKGVudHJpZXMpIHtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZW50cnkgPT4gdGhpcy5fdGFyZ2V0TGlua3MuZ2V0KGAjJHtlbnRyeS50YXJnZXQuaWR9YCk7XG5cbiAgICBjb25zdCBhY3RpdmF0ZSA9IGVudHJ5ID0+IHtcbiAgICAgIHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS52aXNpYmxlRW50cnlUb3AgPSBlbnRyeS50YXJnZXQub2Zmc2V0VG9wO1xuXG4gICAgICB0aGlzLl9wcm9jZXNzKHRhcmdldEVsZW1lbnQoZW50cnkpKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcGFyZW50U2Nyb2xsVG9wID0gKHRoaXMuX3Jvb3RFbGVtZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IHVzZXJTY3JvbGxzRG93biA9IHBhcmVudFNjcm9sbFRvcCA+PSB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEucGFyZW50U2Nyb2xsVG9wO1xuICAgIHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS5wYXJlbnRTY3JvbGxUb3AgPSBwYXJlbnRTY3JvbGxUb3A7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmICghZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlVGFyZ2V0ID0gbnVsbDtcblxuICAgICAgICB0aGlzLl9jbGVhckFjdGl2ZUNsYXNzKHRhcmdldEVsZW1lbnQoZW50cnkpKTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50cnlJc0xvd2VyVGhhblByZXZpb3VzID0gZW50cnkudGFyZ2V0Lm9mZnNldFRvcCA+PSB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEudmlzaWJsZUVudHJ5VG9wOyAvLyBpZiB3ZSBhcmUgc2Nyb2xsaW5nIGRvd24sIHBpY2sgdGhlIGJpZ2dlciBvZmZzZXRUb3BcblxuICAgICAgaWYgKHVzZXJTY3JvbGxzRG93biAmJiBlbnRyeUlzTG93ZXJUaGFuUHJldmlvdXMpIHtcbiAgICAgICAgYWN0aXZhdGUoZW50cnkpOyAvLyBpZiBwYXJlbnQgaXNuJ3Qgc2Nyb2xsZWQsIGxldCdzIGtlZXAgdGhlIGZpcnN0IHZpc2libGUgaXRlbSwgYnJlYWtpbmcgdGhlIGl0ZXJhdGlvblxuXG4gICAgICAgIGlmICghcGFyZW50U2Nyb2xsVG9wKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGlmIHdlIGFyZSBzY3JvbGxpbmcgdXAsIHBpY2sgdGhlIHNtYWxsZXN0IG9mZnNldFRvcFxuXG5cbiAgICAgIGlmICghdXNlclNjcm9sbHNEb3duICYmICFlbnRyeUlzTG93ZXJUaGFuUHJldmlvdXMpIHtcbiAgICAgICAgYWN0aXZhdGUoZW50cnkpO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBUT0RPOiB2NiBPbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLiBVc2Ugcm9vdE1hcmdpbiBvbmx5XG5cblxuICBfZ2V0Um9vdE1hcmdpbigpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLm9mZnNldCA/IGAke3RoaXMuX2NvbmZpZy5vZmZzZXR9cHggMHB4IC0zMCVgIDogdGhpcy5fY29uZmlnLnJvb3RNYXJnaW47XG4gIH1cblxuICBfaW5pdGlhbGl6ZVRhcmdldHNBbmRPYnNlcnZhYmxlcygpIHtcbiAgICB0aGlzLl90YXJnZXRMaW5rcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgdGFyZ2V0TGlua3MgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX1RBUkdFVF9MSU5LUywgdGhpcy5fY29uZmlnLnRhcmdldCk7XG5cbiAgICBmb3IgKGNvbnN0IGFuY2hvciBvZiB0YXJnZXRMaW5rcykge1xuICAgICAgLy8gZW5zdXJlIHRoYXQgdGhlIGFuY2hvciBoYXMgYW4gaWQgYW5kIGlzIG5vdCBkaXNhYmxlZFxuICAgICAgaWYgKCFhbmNob3IuaGFzaCB8fCBpc0Rpc2FibGVkKGFuY2hvcikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9ic2VydmFibGVTZWN0aW9uID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShhbmNob3IuaGFzaCwgdGhpcy5fZWxlbWVudCk7IC8vIGVuc3VyZSB0aGF0IHRoZSBvYnNlcnZhYmxlU2VjdGlvbiBleGlzdHMgJiBpcyB2aXNpYmxlXG5cbiAgICAgIGlmIChpc1Zpc2libGUob2JzZXJ2YWJsZVNlY3Rpb24pKSB7XG4gICAgICAgIHRoaXMuX3RhcmdldExpbmtzLnNldChhbmNob3IuaGFzaCwgYW5jaG9yKTtcblxuICAgICAgICB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMuc2V0KGFuY2hvci5oYXNoLCBvYnNlcnZhYmxlU2VjdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX3Byb2Nlc3ModGFyZ2V0KSB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZVRhcmdldCA9PT0gdGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2xlYXJBY3RpdmVDbGFzcyh0aGlzLl9jb25maWcudGFyZ2V0KTtcblxuICAgIHRoaXMuX2FjdGl2ZVRhcmdldCA9IHRhcmdldDtcbiAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSQxKTtcblxuICAgIHRoaXMuX2FjdGl2YXRlUGFyZW50cyh0YXJnZXQpO1xuXG4gICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfQUNUSVZBVEUsIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXQ6IHRhcmdldFxuICAgIH0pO1xuICB9XG5cbiAgX2FjdGl2YXRlUGFyZW50cyh0YXJnZXQpIHtcbiAgICAvLyBBY3RpdmF0ZSBkcm9wZG93biBwYXJlbnRzXG4gICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QRE9XTl9JVEVNKSkge1xuICAgICAgU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEUkMSwgdGFyZ2V0LmNsb3Nlc3QoU0VMRUNUT1JfRFJPUERPV04pKS5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFJDEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbGlzdEdyb3VwIG9mIFNlbGVjdG9yRW5naW5lLnBhcmVudHModGFyZ2V0LCBTRUxFQ1RPUl9OQVZfTElTVF9HUk9VUCkpIHtcbiAgICAgIC8vIFNldCB0cmlnZ2VyZWQgbGlua3MgcGFyZW50cyBhcyBhY3RpdmVcbiAgICAgIC8vIFdpdGggYm90aCA8dWw+IGFuZCA8bmF2PiBtYXJrdXAgYSBwYXJlbnQgaXMgdGhlIHByZXZpb3VzIHNpYmxpbmcgb2YgYW55IG5hdiBhbmNlc3RvclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIFNlbGVjdG9yRW5naW5lLnByZXYobGlzdEdyb3VwLCBTRUxFQ1RPUl9MSU5LX0lURU1TKSkge1xuICAgICAgICBpdGVtLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUkMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2NsZWFyQWN0aXZlQ2xhc3MocGFyZW50KSB7XG4gICAgcGFyZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9BQ1RJVkUkMSk7XG4gICAgY29uc3QgYWN0aXZlTm9kZXMgPSBTZWxlY3RvckVuZ2luZS5maW5kKGAke1NFTEVDVE9SX1RBUkdFVF9MSU5LU30uJHtDTEFTU19OQU1FX0FDVElWRSQxfWAsIHBhcmVudCk7XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYWN0aXZlTm9kZXMpIHtcbiAgICAgIG5vZGUuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSQxKTtcbiAgICB9XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFNjcm9sbFNweS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZyk7XG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuXG4gICAgICBkYXRhW2NvbmZpZ10oKTtcbiAgICB9KTtcbiAgfVxuXG59XG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuXG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9MT0FEX0RBVEFfQVBJJDEsICgpID0+IHtcbiAgZm9yIChjb25zdCBzcHkgb2YgU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9EQVRBX1NQWSkpIHtcbiAgICBTY3JvbGxTcHkuZ2V0T3JDcmVhdGVJbnN0YW5jZShzcHkpO1xuICB9XG59KTtcbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFNjcm9sbFNweSk7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4wKTogdGFiLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQxID0gJ3RhYic7XG5jb25zdCBEQVRBX0tFWSQxID0gJ2JzLnRhYic7XG5jb25zdCBFVkVOVF9LRVkkMSA9IGAuJHtEQVRBX0tFWSQxfWA7XG5jb25zdCBFVkVOVF9ISURFJDEgPSBgaGlkZSR7RVZFTlRfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX0hJRERFTiQxID0gYGhpZGRlbiR7RVZFTlRfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX1NIT1ckMSA9IGBzaG93JHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgRVZFTlRfU0hPV04kMSA9IGBzaG93biR7RVZFTlRfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJID0gYGNsaWNrJHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgRVZFTlRfS0VZRE9XTiA9IGBrZXlkb3duJHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSA9IGBsb2FkJHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgQVJST1dfTEVGVF9LRVkgPSAnQXJyb3dMZWZ0JztcbmNvbnN0IEFSUk9XX1JJR0hUX0tFWSA9ICdBcnJvd1JpZ2h0JztcbmNvbnN0IEFSUk9XX1VQX0tFWSA9ICdBcnJvd1VwJztcbmNvbnN0IEFSUk9XX0RPV05fS0VZID0gJ0Fycm93RG93bic7XG5jb25zdCBDTEFTU19OQU1FX0FDVElWRSA9ICdhY3RpdmUnO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFJDEgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckMSA9ICdzaG93JztcbmNvbnN0IENMQVNTX0RST1BET1dOID0gJ2Ryb3Bkb3duJztcbmNvbnN0IFNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSA9ICcuZHJvcGRvd24tdG9nZ2xlJztcbmNvbnN0IFNFTEVDVE9SX0RST1BET1dOX01FTlUgPSAnLmRyb3Bkb3duLW1lbnUnO1xuY29uc3QgU0VMRUNUT1JfRFJPUERPV05fSVRFTSA9ICcuZHJvcGRvd24taXRlbSc7XG5jb25zdCBOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFID0gJzpub3QoLmRyb3Bkb3duLXRvZ2dsZSknO1xuY29uc3QgU0VMRUNUT1JfVEFCX1BBTkVMID0gJy5saXN0LWdyb3VwLCAubmF2LCBbcm9sZT1cInRhYmxpc3RcIl0nO1xuY29uc3QgU0VMRUNUT1JfT1VURVIgPSAnLm5hdi1pdGVtLCAubGlzdC1ncm91cC1pdGVtJztcbmNvbnN0IFNFTEVDVE9SX0lOTkVSID0gYC5uYXYtbGluayR7Tk9UX1NFTEVDVE9SX0RST1BET1dOX1RPR0dMRX0sIC5saXN0LWdyb3VwLWl0ZW0ke05PVF9TRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEV9LCBbcm9sZT1cInRhYlwiXSR7Tk9UX1NFTEVDVE9SX0RST1BET1dOX1RPR0dMRX1gO1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUgPSAnW2RhdGEtYnMtdG9nZ2xlPVwidGFiXCJdLCBbZGF0YS1icy10b2dnbGU9XCJwaWxsXCJdLCBbZGF0YS1icy10b2dnbGU9XCJsaXN0XCJdJzsgLy8gdG9kbzp2NjogY291bGQgYmUgb25seSBgdGFiYFxuXG5jb25zdCBTRUxFQ1RPUl9JTk5FUl9FTEVNID0gYCR7U0VMRUNUT1JfSU5ORVJ9LCAke1NFTEVDVE9SX0RBVEFfVE9HR0xFfWA7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRV9BQ1RJVkUgPSBgLiR7Q0xBU1NfTkFNRV9BQ1RJVkV9W2RhdGEtYnMtdG9nZ2xlPVwidGFiXCJdLCAuJHtDTEFTU19OQU1FX0FDVElWRX1bZGF0YS1icy10b2dnbGU9XCJwaWxsXCJdLCAuJHtDTEFTU19OQU1FX0FDVElWRX1bZGF0YS1icy10b2dnbGU9XCJsaXN0XCJdYDtcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFRhYiBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG4gICAgdGhpcy5fcGFyZW50ID0gdGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX1RBQl9QQU5FTCk7XG5cbiAgICBpZiAoIXRoaXMuX3BhcmVudCkge1xuICAgICAgcmV0dXJuOyAvLyB0b2RvOiBzaG91bGQgVGhyb3cgZXhjZXB0aW9uIG9uIHY2XG4gICAgICAvLyB0aHJvdyBuZXcgVHlwZUVycm9yKGAke2VsZW1lbnQub3V0ZXJIVE1MfSBoYXMgbm90IGEgdmFsaWQgcGFyZW50ICR7U0VMRUNUT1JfSU5ORVJfRUxFTX1gKVxuICAgIH0gLy8gU2V0IHVwIGluaXRpYWwgYXJpYSBhdHRyaWJ1dGVzXG5cblxuICAgIHRoaXMuX3NldEluaXRpYWxBdHRyaWJ1dGVzKHRoaXMuX3BhcmVudCwgdGhpcy5fZ2V0Q2hpbGRyZW4oKSk7XG5cbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTiwgZXZlbnQgPT4gdGhpcy5fa2V5ZG93bihldmVudCkpO1xuICB9IC8vIEdldHRlcnNcblxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQxO1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgc2hvdygpIHtcbiAgICAvLyBTaG93cyB0aGlzIGVsZW0gYW5kIGRlYWN0aXZhdGUgdGhlIGFjdGl2ZSBzaWJsaW5nIGlmIGV4aXN0c1xuICAgIGNvbnN0IGlubmVyRWxlbSA9IHRoaXMuX2VsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy5fZWxlbUlzQWN0aXZlKGlubmVyRWxlbSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIFNlYXJjaCBmb3IgYWN0aXZlIHRhYiBvbiBzYW1lIHBhcmVudCB0byBkZWFjdGl2YXRlIGl0XG5cblxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuX2dldEFjdGl2ZUVsZW0oKTtcblxuICAgIGNvbnN0IGhpZGVFdmVudCA9IGFjdGl2ZSA/IEV2ZW50SGFuZGxlci50cmlnZ2VyKGFjdGl2ZSwgRVZFTlRfSElERSQxLCB7XG4gICAgICByZWxhdGVkVGFyZ2V0OiBpbm5lckVsZW1cbiAgICB9KSA6IG51bGw7XG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIoaW5uZXJFbGVtLCBFVkVOVF9TSE9XJDEsIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXQ6IGFjdGl2ZVxuICAgIH0pO1xuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkIHx8IGhpZGVFdmVudCAmJiBoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2RlYWN0aXZhdGUoYWN0aXZlLCBpbm5lckVsZW0pO1xuXG4gICAgdGhpcy5fYWN0aXZhdGUoaW5uZXJFbGVtLCBhY3RpdmUpO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF9hY3RpdmF0ZShlbGVtZW50LCByZWxhdGVkRWxlbSkge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSk7XG5cbiAgICB0aGlzLl9hY3RpdmF0ZShnZXRFbGVtZW50RnJvbVNlbGVjdG9yKGVsZW1lbnQpKTsgLy8gU2VhcmNoIGFuZCBhY3RpdmF0ZS9zaG93IHRoZSBwcm9wZXIgc2VjdGlvblxuXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZSgncm9sZScpICE9PSAndGFiJykge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDEpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCB0cnVlKTtcblxuICAgICAgdGhpcy5fdG9nZ2xlRHJvcERvd24oZWxlbWVudCwgdHJ1ZSk7XG5cbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKGVsZW1lbnQsIEVWRU5UX1NIT1dOJDEsIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldDogcmVsYXRlZEVsZW1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCBlbGVtZW50LCBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUkMSkpO1xuICB9XG5cbiAgX2RlYWN0aXZhdGUoZWxlbWVudCwgcmVsYXRlZEVsZW0pIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9BQ1RJVkUpO1xuICAgIGVsZW1lbnQuYmx1cigpO1xuXG4gICAgdGhpcy5fZGVhY3RpdmF0ZShnZXRFbGVtZW50RnJvbVNlbGVjdG9yKGVsZW1lbnQpKTsgLy8gU2VhcmNoIGFuZCBkZWFjdGl2YXRlIHRoZSBzaG93biBzZWN0aW9uIHRvb1xuXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZSgncm9sZScpICE9PSAndGFiJykge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XJDEpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgZmFsc2UpO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG5cbiAgICAgIHRoaXMuX3RvZ2dsZURyb3BEb3duKGVsZW1lbnQsIGZhbHNlKTtcblxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIoZWxlbWVudCwgRVZFTlRfSElEREVOJDEsIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldDogcmVsYXRlZEVsZW1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCBlbGVtZW50LCBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUkMSkpO1xuICB9XG5cbiAgX2tleWRvd24oZXZlbnQpIHtcbiAgICBpZiAoIVtBUlJPV19MRUZUX0tFWSwgQVJST1dfUklHSFRfS0VZLCBBUlJPV19VUF9LRVksIEFSUk9XX0RPV05fS0VZXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIHN0b3BQcm9wYWdhdGlvbi9wcmV2ZW50RGVmYXVsdCBib3RoIGFkZGVkIHRvIHN1cHBvcnQgdXAvZG93biBrZXlzIHdpdGhvdXQgc2Nyb2xsaW5nIHRoZSBwYWdlXG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGlzTmV4dCA9IFtBUlJPV19SSUdIVF9LRVksIEFSUk9XX0RPV05fS0VZXS5pbmNsdWRlcyhldmVudC5rZXkpO1xuICAgIGNvbnN0IG5leHRBY3RpdmVFbGVtZW50ID0gZ2V0TmV4dEFjdGl2ZUVsZW1lbnQodGhpcy5fZ2V0Q2hpbGRyZW4oKS5maWx0ZXIoZWxlbWVudCA9PiAhaXNEaXNhYmxlZChlbGVtZW50KSksIGV2ZW50LnRhcmdldCwgaXNOZXh0LCB0cnVlKTtcblxuICAgIGlmIChuZXh0QWN0aXZlRWxlbWVudCkge1xuICAgICAgVGFiLmdldE9yQ3JlYXRlSW5zdGFuY2UobmV4dEFjdGl2ZUVsZW1lbnQpLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0Q2hpbGRyZW4oKSB7XG4gICAgLy8gY29sbGVjdGlvbiBvZiBpbm5lciBlbGVtZW50c1xuICAgIHJldHVybiBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0lOTkVSX0VMRU0sIHRoaXMuX3BhcmVudCk7XG4gIH1cblxuICBfZ2V0QWN0aXZlRWxlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0Q2hpbGRyZW4oKS5maW5kKGNoaWxkID0+IHRoaXMuX2VsZW1Jc0FjdGl2ZShjaGlsZCkpIHx8IG51bGw7XG4gIH1cblxuICBfc2V0SW5pdGlhbEF0dHJpYnV0ZXMocGFyZW50LCBjaGlsZHJlbikge1xuICAgIHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKHBhcmVudCwgJ3JvbGUnLCAndGFibGlzdCcpO1xuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgdGhpcy5fc2V0SW5pdGlhbEF0dHJpYnV0ZXNPbkNoaWxkKGNoaWxkKTtcbiAgICB9XG4gIH1cblxuICBfc2V0SW5pdGlhbEF0dHJpYnV0ZXNPbkNoaWxkKGNoaWxkKSB7XG4gICAgY2hpbGQgPSB0aGlzLl9nZXRJbm5lckVsZW1lbnQoY2hpbGQpO1xuXG4gICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLl9lbGVtSXNBY3RpdmUoY2hpbGQpO1xuXG4gICAgY29uc3Qgb3V0ZXJFbGVtID0gdGhpcy5fZ2V0T3V0ZXJFbGVtZW50KGNoaWxkKTtcblxuICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIGlzQWN0aXZlKTtcblxuICAgIGlmIChvdXRlckVsZW0gIT09IGNoaWxkKSB7XG4gICAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhvdXRlckVsZW0sICdyb2xlJywgJ3ByZXNlbnRhdGlvbicpO1xuICAgIH1cblxuICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhjaGlsZCwgJ3JvbGUnLCAndGFiJyk7IC8vIHNldCBhdHRyaWJ1dGVzIHRvIHRoZSByZWxhdGVkIHBhbmVsIHRvb1xuXG5cbiAgICB0aGlzLl9zZXRJbml0aWFsQXR0cmlidXRlc09uVGFyZ2V0UGFuZWwoY2hpbGQpO1xuICB9XG5cbiAgX3NldEluaXRpYWxBdHRyaWJ1dGVzT25UYXJnZXRQYW5lbChjaGlsZCkge1xuICAgIGNvbnN0IHRhcmdldCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IoY2hpbGQpO1xuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyh0YXJnZXQsICdyb2xlJywgJ3RhYnBhbmVsJyk7XG5cbiAgICBpZiAoY2hpbGQuaWQpIHtcbiAgICAgIHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKHRhcmdldCwgJ2FyaWEtbGFiZWxsZWRieScsIGAjJHtjaGlsZC5pZH1gKTtcbiAgICB9XG4gIH1cblxuICBfdG9nZ2xlRHJvcERvd24oZWxlbWVudCwgb3Blbikge1xuICAgIGNvbnN0IG91dGVyRWxlbSA9IHRoaXMuX2dldE91dGVyRWxlbWVudChlbGVtZW50KTtcblxuICAgIGlmICghb3V0ZXJFbGVtLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19EUk9QRE9XTikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b2dnbGUgPSAoc2VsZWN0b3IsIGNsYXNzTmFtZSkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudCA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoc2VsZWN0b3IsIG91dGVyRWxlbSk7XG5cbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShjbGFzc05hbWUsIG9wZW4pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0b2dnbGUoU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFLCBDTEFTU19OQU1FX0FDVElWRSk7XG4gICAgdG9nZ2xlKFNFTEVDVE9SX0RST1BET1dOX01FTlUsIENMQVNTX05BTUVfU0hPVyQxKTtcbiAgICB0b2dnbGUoU0VMRUNUT1JfRFJPUERPV05fSVRFTSwgQ0xBU1NfTkFNRV9BQ1RJVkUpO1xuICAgIG91dGVyRWxlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBvcGVuKTtcbiAgfVxuXG4gIF9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhlbGVtZW50LCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGUpKSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBfZWxlbUlzQWN0aXZlKGVsZW0pIHtcbiAgICByZXR1cm4gZWxlbS5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9BQ1RJVkUpO1xuICB9IC8vIFRyeSB0byBnZXQgdGhlIGlubmVyIGVsZW1lbnQgKHVzdWFsbHkgdGhlIC5uYXYtbGluaylcblxuXG4gIF9nZXRJbm5lckVsZW1lbnQoZWxlbSkge1xuICAgIHJldHVybiBlbGVtLm1hdGNoZXMoU0VMRUNUT1JfSU5ORVJfRUxFTSkgPyBlbGVtIDogU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9JTk5FUl9FTEVNLCBlbGVtKTtcbiAgfSAvLyBUcnkgdG8gZ2V0IHRoZSBvdXRlciBlbGVtZW50ICh1c3VhbGx5IHRoZSAubmF2LWl0ZW0pXG5cblxuICBfZ2V0T3V0ZXJFbGVtZW50KGVsZW0pIHtcbiAgICByZXR1cm4gZWxlbS5jbG9zZXN0KFNFTEVDVE9SX09VVEVSKSB8fCBlbGVtO1xuICB9IC8vIFN0YXRpY1xuXG5cbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBUYWIuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTtcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGFbY29uZmlnXSA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5zdGFydHNXaXRoKCdfJykgfHwgY29uZmlnID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgIH0pO1xuICB9XG5cbn1cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEksIFNFTEVDVE9SX0RBVEFfVE9HR0xFLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgaWYgKFsnQScsICdBUkVBJ10uaW5jbHVkZXModGhpcy50YWdOYW1lKSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBpZiAoaXNEaXNhYmxlZCh0aGlzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpLnNob3coKTtcbn0pO1xuLyoqXG4gKiBJbml0aWFsaXplIG9uIGZvY3VzXG4gKi9cblxuRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfTE9BRF9EQVRBX0FQSSwgKCkgPT4ge1xuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9EQVRBX1RPR0dMRV9BQ1RJVkUpKSB7XG4gICAgVGFiLmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCk7XG4gIH1cbn0pO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oVGFiKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjApOiB0b2FzdC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUgPSAndG9hc3QnO1xuY29uc3QgREFUQV9LRVkgPSAnYnMudG9hc3QnO1xuY29uc3QgRVZFTlRfS0VZID0gYC4ke0RBVEFfS0VZfWA7XG5jb25zdCBFVkVOVF9NT1VTRU9WRVIgPSBgbW91c2VvdmVyJHtFVkVOVF9LRVl9YDtcbmNvbnN0IEVWRU5UX01PVVNFT1VUID0gYG1vdXNlb3V0JHtFVkVOVF9LRVl9YDtcbmNvbnN0IEVWRU5UX0ZPQ1VTSU4gPSBgZm9jdXNpbiR7RVZFTlRfS0VZfWA7XG5jb25zdCBFVkVOVF9GT0NVU09VVCA9IGBmb2N1c291dCR7RVZFTlRfS0VZfWA7XG5jb25zdCBFVkVOVF9ISURFID0gYGhpZGUke0VWRU5UX0tFWX1gO1xuY29uc3QgRVZFTlRfSElEREVOID0gYGhpZGRlbiR7RVZFTlRfS0VZfWA7XG5jb25zdCBFVkVOVF9TSE9XID0gYHNob3cke0VWRU5UX0tFWX1gO1xuY29uc3QgRVZFTlRfU0hPV04gPSBgc2hvd24ke0VWRU5UX0tFWX1gO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFID0gJ2ZhZGUnO1xuY29uc3QgQ0xBU1NfTkFNRV9ISURFID0gJ2hpZGUnOyAvLyBAZGVwcmVjYXRlZCAtIGtlcHQgaGVyZSBvbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG5jb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdyc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1dJTkcgPSAnc2hvd2luZyc7XG5jb25zdCBEZWZhdWx0VHlwZSA9IHtcbiAgYW5pbWF0aW9uOiAnYm9vbGVhbicsXG4gIGF1dG9oaWRlOiAnYm9vbGVhbicsXG4gIGRlbGF5OiAnbnVtYmVyJ1xufTtcbmNvbnN0IERlZmF1bHQgPSB7XG4gIGFuaW1hdGlvbjogdHJ1ZSxcbiAgYXV0b2hpZGU6IHRydWUsXG4gIGRlbGF5OiA1MDAwXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgVG9hc3QgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcbiAgICB0aGlzLl90aW1lb3V0ID0gbnVsbDtcbiAgICB0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5fc2V0TGlzdGVuZXJzKCk7XG4gIH0gLy8gR2V0dGVyc1xuXG5cbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0O1xuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUU7XG4gIH0gLy8gUHVibGljXG5cblxuICBzaG93KCkge1xuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1cpO1xuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2xlYXJUaW1lb3V0KCk7XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmFuaW1hdGlvbikge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfRkFERSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XSU5HKTtcblxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPV04pO1xuXG4gICAgICB0aGlzLl9tYXliZVNjaGVkdWxlSGlkZSgpO1xuICAgIH07XG5cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9ISURFKTsgLy8gQGRlcHJlY2F0ZWRcblxuXG4gICAgcmVmbG93KHRoaXMuX2VsZW1lbnQpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVywgQ0xBU1NfTkFNRV9TSE9XSU5HKTtcblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIHRoaXMuX2VsZW1lbnQsIHRoaXMuX2NvbmZpZy5hbmltYXRpb24pO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNTaG93bigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERSk7XG5cbiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0hJREUpOyAvLyBAZGVwcmVjYXRlZFxuXG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1dJTkcsIENMQVNTX05BTUVfU0hPVyk7XG5cbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTik7XG4gICAgfTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1dJTkcpO1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdGhpcy5fY29uZmlnLmFuaW1hdGlvbik7XG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuX2NsZWFyVGltZW91dCgpO1xuXG4gICAgaWYgKHRoaXMuaXNTaG93bigpKSB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XKTtcbiAgICB9XG5cbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cblxuICBpc1Nob3duKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1cpO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF9tYXliZVNjaGVkdWxlSGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5hdXRvaGlkZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9uIHx8IHRoaXMuX2hhc0tleWJvYXJkSW50ZXJhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9LCB0aGlzLl9jb25maWcuZGVsYXkpO1xuICB9XG5cbiAgX29uSW50ZXJhY3Rpb24oZXZlbnQsIGlzSW50ZXJhY3RpbmcpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ21vdXNlb3Zlcic6XG4gICAgICBjYXNlICdtb3VzZW91dCc6XG4gICAgICAgIHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gPSBpc0ludGVyYWN0aW5nO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZm9jdXNpbic6XG4gICAgICBjYXNlICdmb2N1c291dCc6XG4gICAgICAgIHRoaXMuX2hhc0tleWJvYXJkSW50ZXJhY3Rpb24gPSBpc0ludGVyYWN0aW5nO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaXNJbnRlcmFjdGluZykge1xuICAgICAgdGhpcy5fY2xlYXJUaW1lb3V0KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0RWxlbWVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG5cbiAgICBpZiAodGhpcy5fZWxlbWVudCA9PT0gbmV4dEVsZW1lbnQgfHwgdGhpcy5fZWxlbWVudC5jb250YWlucyhuZXh0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tYXliZVNjaGVkdWxlSGlkZSgpO1xuICB9XG5cbiAgX3NldExpc3RlbmVycygpIHtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VPVkVSLCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCB0cnVlKSk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFT1VULCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCBmYWxzZSkpO1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9GT0NVU0lOLCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCB0cnVlKSk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0ZPQ1VTT1VULCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCBmYWxzZSkpO1xuICB9XG5cbiAgX2NsZWFyVGltZW91dCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7XG4gICAgdGhpcy5fdGltZW91dCA9IG51bGw7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKTtcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhW2NvbmZpZ10odGhpcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cblxuZW5hYmxlRGlzbWlzc1RyaWdnZXIoVG9hc3QpO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oVG9hc3QpO1xuXG5leHBvcnQgeyBBbGVydCwgQnV0dG9uLCBDYXJvdXNlbCwgQ29sbGFwc2UsIERyb3Bkb3duLCBNb2RhbCwgT2ZmY2FudmFzLCBQb3BvdmVyLCBTY3JvbGxTcHksIFRhYiwgVG9hc3QsIFRvb2x0aXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJvb3RzdHJhcC5lc20uanMubWFwXG4iLCIvKiEgY3JjMzIuanMgKEMpIDIwMTQtcHJlc2VudCBTaGVldEpTIC0tIGh0dHA6Ly9zaGVldGpzLmNvbSAqL1xuLyogdmltOiBzZXQgdHM9MjogKi9cbi8qZXhwb3J0ZWQgQ1JDMzIgKi9cbnZhciBDUkMzMjtcbihmdW5jdGlvbiAoZmFjdG9yeSkge1xuXHQvKmpzaGludCBpZ25vcmU6c3RhcnQgKi9cblx0Lyplc2xpbnQtZGlzYWJsZSAqL1xuXHRpZih0eXBlb2YgRE9fTk9UX0VYUE9SVF9DUkMgPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0aWYoJ29iamVjdCcgPT09IHR5cGVvZiBleHBvcnRzKSB7XG5cdFx0XHRmYWN0b3J5KGV4cG9ydHMpO1xuXHRcdH0gZWxzZSBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0XHRkZWZpbmUoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHR2YXIgbW9kdWxlID0ge307XG5cdFx0XHRcdGZhY3RvcnkobW9kdWxlKTtcblx0XHRcdFx0cmV0dXJuIG1vZHVsZTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmYWN0b3J5KENSQzMyID0ge30pO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRmYWN0b3J5KENSQzMyID0ge30pO1xuXHR9XG5cdC8qZXNsaW50LWVuYWJsZSAqL1xuXHQvKmpzaGludCBpZ25vcmU6ZW5kICovXG59KGZ1bmN0aW9uKENSQzMyKSB7XG5DUkMzMi52ZXJzaW9uID0gJzEuMi4yJztcbi8qZ2xvYmFsIEludDMyQXJyYXkgKi9cbmZ1bmN0aW9uIHNpZ25lZF9jcmNfdGFibGUoKSB7XG5cdHZhciBjID0gMCwgdGFibGUgPSBuZXcgQXJyYXkoMjU2KTtcblxuXHRmb3IodmFyIG4gPTA7IG4gIT0gMjU2OyArK24pe1xuXHRcdGMgPSBuO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdGMgPSAoKGMmMSkgPyAoLTMwNjY3NDkxMiBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuXHRcdHRhYmxlW25dID0gYztcblx0fVxuXG5cdHJldHVybiB0eXBlb2YgSW50MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBuZXcgSW50MzJBcnJheSh0YWJsZSkgOiB0YWJsZTtcbn1cblxudmFyIFQwID0gc2lnbmVkX2NyY190YWJsZSgpO1xuZnVuY3Rpb24gc2xpY2VfYnlfMTZfdGFibGVzKFQpIHtcblx0dmFyIGMgPSAwLCB2ID0gMCwgbiA9IDAsIHRhYmxlID0gdHlwZW9mIEludDMyQXJyYXkgIT09ICd1bmRlZmluZWQnID8gbmV3IEludDMyQXJyYXkoNDA5NikgOiBuZXcgQXJyYXkoNDA5NikgO1xuXG5cdGZvcihuID0gMDsgbiAhPSAyNTY7ICsrbikgdGFibGVbbl0gPSBUW25dO1xuXHRmb3IobiA9IDA7IG4gIT0gMjU2OyArK24pIHtcblx0XHR2ID0gVFtuXTtcblx0XHRmb3IoYyA9IDI1NiArIG47IGMgPCA0MDk2OyBjICs9IDI1NikgdiA9IHRhYmxlW2NdID0gKHYgPj4+IDgpIF4gVFt2ICYgMHhGRl07XG5cdH1cblx0dmFyIG91dCA9IFtdO1xuXHRmb3IobiA9IDE7IG4gIT0gMTY7ICsrbikgb3V0W24gLSAxXSA9IHR5cGVvZiBJbnQzMkFycmF5ICE9PSAndW5kZWZpbmVkJyA/IHRhYmxlLnN1YmFycmF5KG4gKiAyNTYsIG4gKiAyNTYgKyAyNTYpIDogdGFibGUuc2xpY2UobiAqIDI1NiwgbiAqIDI1NiArIDI1Nik7XG5cdHJldHVybiBvdXQ7XG59XG52YXIgVFQgPSBzbGljZV9ieV8xNl90YWJsZXMoVDApO1xudmFyIFQxID0gVFRbMF0sICBUMiA9IFRUWzFdLCAgVDMgPSBUVFsyXSwgIFQ0ID0gVFRbM10sICBUNSA9IFRUWzRdO1xudmFyIFQ2ID0gVFRbNV0sICBUNyA9IFRUWzZdLCAgVDggPSBUVFs3XSwgIFQ5ID0gVFRbOF0sICBUYSA9IFRUWzldO1xudmFyIFRiID0gVFRbMTBdLCBUYyA9IFRUWzExXSwgVGQgPSBUVFsxMl0sIFRlID0gVFRbMTNdLCBUZiA9IFRUWzE0XTtcbmZ1bmN0aW9uIGNyYzMyX2JzdHIoYnN0ciwgc2VlZCkge1xuXHR2YXIgQyA9IHNlZWQgXiAtMTtcblx0Zm9yKHZhciBpID0gMCwgTCA9IGJzdHIubGVuZ3RoOyBpIDwgTDspIEMgPSAoQz4+PjgpIF4gVDBbKENeYnN0ci5jaGFyQ29kZUF0KGkrKykpJjB4RkZdO1xuXHRyZXR1cm4gfkM7XG59XG5cbmZ1bmN0aW9uIGNyYzMyX2J1ZihCLCBzZWVkKSB7XG5cdHZhciBDID0gc2VlZCBeIC0xLCBMID0gQi5sZW5ndGggLSAxNSwgaSA9IDA7XG5cdGZvcig7IGkgPCBMOykgQyA9XG5cdFx0VGZbQltpKytdIF4gKEMgJiAyNTUpXSBeXG5cdFx0VGVbQltpKytdIF4gKChDID4+IDgpICYgMjU1KV0gXlxuXHRcdFRkW0JbaSsrXSBeICgoQyA+PiAxNikgJiAyNTUpXSBeXG5cdFx0VGNbQltpKytdIF4gKEMgPj4+IDI0KV0gXlxuXHRcdFRiW0JbaSsrXV0gXiBUYVtCW2krK11dIF4gVDlbQltpKytdXSBeIFQ4W0JbaSsrXV0gXlxuXHRcdFQ3W0JbaSsrXV0gXiBUNltCW2krK11dIF4gVDVbQltpKytdXSBeIFQ0W0JbaSsrXV0gXlxuXHRcdFQzW0JbaSsrXV0gXiBUMltCW2krK11dIF4gVDFbQltpKytdXSBeIFQwW0JbaSsrXV07XG5cdEwgKz0gMTU7XG5cdHdoaWxlKGkgPCBMKSBDID0gKEM+Pj44KSBeIFQwWyhDXkJbaSsrXSkmMHhGRl07XG5cdHJldHVybiB+Qztcbn1cblxuZnVuY3Rpb24gY3JjMzJfc3RyKHN0ciwgc2VlZCkge1xuXHR2YXIgQyA9IHNlZWQgXiAtMTtcblx0Zm9yKHZhciBpID0gMCwgTCA9IHN0ci5sZW5ndGgsIGMgPSAwLCBkID0gMDsgaSA8IEw7KSB7XG5cdFx0YyA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0aWYoYyA8IDB4ODApIHtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKENeYykmMHhGRl07XG5cdFx0fSBlbHNlIGlmKGMgPCAweDgwMCkge1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxOTJ8KChjPj42KSYzMSkpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fChjJjYzKSkpJjB4RkZdO1xuXHRcdH0gZWxzZSBpZihjID49IDB4RDgwMCAmJiBjIDwgMHhFMDAwKSB7XG5cdFx0XHRjID0gKGMmMTAyMykrNjQ7IGQgPSBzdHIuY2hhckNvZGVBdChpKyspJjEwMjM7XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDI0MHwoKGM+PjgpJjcpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoKGM+PjIpJjYzKSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KChkPj42KSYxNSl8KChjJjMpPDw0KSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KGQmNjMpKSkmMHhGRl07XG5cdFx0fSBlbHNlIHtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMjI0fCgoYz4+MTIpJjE1KSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KChjPj42KSY2MykpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fChjJjYzKSkpJjB4RkZdO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gfkM7XG59XG5DUkMzMi50YWJsZSA9IFQwO1xuLy8gJEZsb3dJZ25vcmVcbkNSQzMyLmJzdHIgPSBjcmMzMl9ic3RyO1xuLy8gJEZsb3dJZ25vcmVcbkNSQzMyLmJ1ZiA9IGNyYzMyX2J1Zjtcbi8vICRGbG93SWdub3JlXG5DUkMzMi5zdHIgPSBjcmMzMl9zdHI7XG59KSk7XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi8qIVxcbiAqIEJvb3RzdHJhcCAgdjUuMi4wIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxcbiAqIENvcHlyaWdodCAyMDExLTIwMjIgVGhlIEJvb3RzdHJhcCBBdXRob3JzXFxuICogQ29weXJpZ2h0IDIwMTEtMjAyMiBUd2l0dGVyLCBJbmMuXFxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXFxuICovOnJvb3R7LS1icy1ibHVlOiAjMGQ2ZWZkOy0tYnMtaW5kaWdvOiAjNjYxMGYyOy0tYnMtcHVycGxlOiAjNmY0MmMxOy0tYnMtcGluazogI2Q2MzM4NDstLWJzLXJlZDogI2RjMzU0NTstLWJzLW9yYW5nZTogI2ZkN2UxNDstLWJzLXllbGxvdzogI2ZmYzEwNzstLWJzLWdyZWVuOiAjMTk4NzU0Oy0tYnMtdGVhbDogIzIwYzk5NzstLWJzLWN5YW46ICMwZGNhZjA7LS1icy1ibGFjazogIzAwMDstLWJzLXdoaXRlOiAjZmZmOy0tYnMtZ3JheTogIzZjNzU3ZDstLWJzLWdyYXktZGFyazogIzM0M2E0MDstLWJzLWdyYXktMTAwOiAjZjhmOWZhOy0tYnMtZ3JheS0yMDA6ICNlOWVjZWY7LS1icy1ncmF5LTMwMDogI2RlZTJlNjstLWJzLWdyYXktNDAwOiAjY2VkNGRhOy0tYnMtZ3JheS01MDA6ICNhZGI1YmQ7LS1icy1ncmF5LTYwMDogIzZjNzU3ZDstLWJzLWdyYXktNzAwOiAjNDk1MDU3Oy0tYnMtZ3JheS04MDA6ICMzNDNhNDA7LS1icy1ncmF5LTkwMDogIzIxMjUyOTstLWJzLXByaW1hcnk6ICMwZDZlZmQ7LS1icy1zZWNvbmRhcnk6ICM2Yzc1N2Q7LS1icy1zdWNjZXNzOiAjMTk4NzU0Oy0tYnMtaW5mbzogIzBkY2FmMDstLWJzLXdhcm5pbmc6ICNmZmMxMDc7LS1icy1kYW5nZXI6ICNkYzM1NDU7LS1icy1saWdodDogI2Y4ZjlmYTstLWJzLWRhcms6ICMyMTI1Mjk7LS1icy1wcmltYXJ5LXJnYjogMTMsIDExMCwgMjUzOy0tYnMtc2Vjb25kYXJ5LXJnYjogMTA4LCAxMTcsIDEyNTstLWJzLXN1Y2Nlc3MtcmdiOiAyNSwgMTM1LCA4NDstLWJzLWluZm8tcmdiOiAxMywgMjAyLCAyNDA7LS1icy13YXJuaW5nLXJnYjogMjU1LCAxOTMsIDc7LS1icy1kYW5nZXItcmdiOiAyMjAsIDUzLCA2OTstLWJzLWxpZ2h0LXJnYjogMjQ4LCAyNDksIDI1MDstLWJzLWRhcmstcmdiOiAzMywgMzcsIDQxOy0tYnMtd2hpdGUtcmdiOiAyNTUsIDI1NSwgMjU1Oy0tYnMtYmxhY2stcmdiOiAwLCAwLCAwOy0tYnMtYm9keS1jb2xvci1yZ2I6IDMzLCAzNywgNDE7LS1icy1ib2R5LWJnLXJnYjogMjU1LCAyNTUsIDI1NTstLWJzLWZvbnQtc2Fucy1zZXJpZjogc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBcXFwiU2Vnb2UgVUlcXFwiLCBSb2JvdG8sIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIFxcXCJOb3RvIFNhbnNcXFwiLCBcXFwiTGliZXJhdGlvbiBTYW5zXFxcIiwgQXJpYWwsIHNhbnMtc2VyaWYsIFxcXCJBcHBsZSBDb2xvciBFbW9qaVxcXCIsIFxcXCJTZWdvZSBVSSBFbW9qaVxcXCIsIFxcXCJTZWdvZSBVSSBTeW1ib2xcXFwiLCBcXFwiTm90byBDb2xvciBFbW9qaVxcXCI7LS1icy1mb250LW1vbm9zcGFjZTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcXFwiTGliZXJhdGlvbiBNb25vXFxcIiwgXFxcIkNvdXJpZXIgTmV3XFxcIiwgbW9ub3NwYWNlOy0tYnMtZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkpOy0tYnMtYm9keS1mb250LWZhbWlseTogdmFyKC0tYnMtZm9udC1zYW5zLXNlcmlmKTstLWJzLWJvZHktZm9udC1zaXplOjFyZW07LS1icy1ib2R5LWZvbnQtd2VpZ2h0OiA0MDA7LS1icy1ib2R5LWxpbmUtaGVpZ2h0OiAxLjU7LS1icy1ib2R5LWNvbG9yOiAjMjEyNTI5Oy0tYnMtYm9keS1iZzogI2ZmZjstLWJzLWJvcmRlci13aWR0aDogMXB4Oy0tYnMtYm9yZGVyLXN0eWxlOiBzb2xpZDstLWJzLWJvcmRlci1jb2xvcjogI2RlZTJlNjstLWJzLWJvcmRlci1jb2xvci10cmFuc2x1Y2VudDogcmdiYSgwLCAwLCAwLCAwLjE3NSk7LS1icy1ib3JkZXItcmFkaXVzOiAwLjM3NXJlbTstLWJzLWJvcmRlci1yYWRpdXMtc206IDAuMjVyZW07LS1icy1ib3JkZXItcmFkaXVzLWxnOiAwLjVyZW07LS1icy1ib3JkZXItcmFkaXVzLXhsOiAxcmVtOy0tYnMtYm9yZGVyLXJhZGl1cy0yeGw6IDJyZW07LS1icy1ib3JkZXItcmFkaXVzLXBpbGw6IDUwcmVtOy0tYnMtbGluay1jb2xvcjogIzBkNmVmZDstLWJzLWxpbmstaG92ZXItY29sb3I6ICMwYTU4Y2E7LS1icy1jb2RlLWNvbG9yOiAjZDYzMzg0Oy0tYnMtaGlnaGxpZ2h0LWJnOiAjZmZmM2NkfSosKjo6YmVmb3JlLCo6OmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogbm8tcHJlZmVyZW5jZSl7OnJvb3R7c2Nyb2xsLWJlaGF2aW9yOnNtb290aH19Ym9keXttYXJnaW46MDtmb250LWZhbWlseTp2YXIoLS1icy1ib2R5LWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0tYnMtYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWJzLWJvZHktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWJzLWJvZHktbGluZS1oZWlnaHQpO2NvbG9yOnZhcigtLWJzLWJvZHktY29sb3IpO3RleHQtYWxpZ246dmFyKC0tYnMtYm9keS10ZXh0LWFsaWduKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWJvZHktYmcpOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApfWhye21hcmdpbjoxcmVtIDA7Y29sb3I6aW5oZXJpdDtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZDtvcGFjaXR5Oi4yNX1oNiwuaDYsaDUsLmg1LGg0LC5oNCxoMywuaDMsaDIsLmgyLGgxLC5oMXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTouNXJlbTtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MS4yfWgxLC5oMXtmb250LXNpemU6Y2FsYygxLjM3NXJlbSArIDEuNXZ3KX1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpe2gxLC5oMXtmb250LXNpemU6Mi41cmVtfX1oMiwuaDJ7Zm9udC1zaXplOmNhbGMoMS4zMjVyZW0gKyAwLjl2dyl9QG1lZGlhKG1pbi13aWR0aDogMTIwMHB4KXtoMiwuaDJ7Zm9udC1zaXplOjJyZW19fWgzLC5oM3tmb250LXNpemU6Y2FsYygxLjNyZW0gKyAwLjZ2dyl9QG1lZGlhKG1pbi13aWR0aDogMTIwMHB4KXtoMywuaDN7Zm9udC1zaXplOjEuNzVyZW19fWg0LC5oNHtmb250LXNpemU6Y2FsYygxLjI3NXJlbSArIDAuM3Z3KX1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpe2g0LC5oNHtmb250LXNpemU6MS41cmVtfX1oNSwuaDV7Zm9udC1zaXplOjEuMjVyZW19aDYsLmg2e2ZvbnQtc2l6ZToxcmVtfXB7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MXJlbX1hYmJyW3RpdGxlXXt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZDtjdXJzb3I6aGVscDt0ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6bm9uZX1hZGRyZXNze21hcmdpbi1ib3R0b206MXJlbTtmb250LXN0eWxlOm5vcm1hbDtsaW5lLWhlaWdodDppbmhlcml0fW9sLHVse3BhZGRpbmctbGVmdDoycmVtfW9sLHVsLGRse21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjFyZW19b2wgb2wsdWwgdWwsb2wgdWwsdWwgb2x7bWFyZ2luLWJvdHRvbTowfWR0e2ZvbnQtd2VpZ2h0OjcwMH1kZHttYXJnaW4tYm90dG9tOi41cmVtO21hcmdpbi1sZWZ0OjB9YmxvY2txdW90ZXttYXJnaW46MCAwIDFyZW19YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfXNtYWxsLC5zbWFsbHtmb250LXNpemU6MC44NzVlbX1tYXJrLC5tYXJre3BhZGRpbmc6LjE4NzVlbTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWhpZ2hsaWdodC1iZyl9c3ViLHN1cHtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MC43NWVtO2xpbmUtaGVpZ2h0OjA7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vie2JvdHRvbTotMC4yNWVtfXN1cHt0b3A6LTAuNWVtfWF7Y29sb3I6dmFyKC0tYnMtbGluay1jb2xvcik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hOmhvdmVye2NvbG9yOnZhcigtLWJzLWxpbmstaG92ZXItY29sb3IpfWE6bm90KFtocmVmXSk6bm90KFtjbGFzc10pLGE6bm90KFtocmVmXSk6bm90KFtjbGFzc10pOmhvdmVye2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9cHJlLGNvZGUsa2JkLHNhbXB7Zm9udC1mYW1pbHk6dmFyKC0tYnMtZm9udC1tb25vc3BhY2UpO2ZvbnQtc2l6ZToxZW19cHJle2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MXJlbTtvdmVyZmxvdzphdXRvO2ZvbnQtc2l6ZTowLjg3NWVtfXByZSBjb2Rle2ZvbnQtc2l6ZTppbmhlcml0O2NvbG9yOmluaGVyaXQ7d29yZC1icmVhazpub3JtYWx9Y29kZXtmb250LXNpemU6MC44NzVlbTtjb2xvcjp2YXIoLS1icy1jb2RlLWNvbG9yKTt3b3JkLXdyYXA6YnJlYWstd29yZH1hPmNvZGV7Y29sb3I6aW5oZXJpdH1rYmR7cGFkZGluZzouMTg3NXJlbSAuMzc1cmVtO2ZvbnQtc2l6ZTowLjg3NWVtO2NvbG9yOnZhcigtLWJzLWJvZHktYmcpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYm9keS1jb2xvcik7Ym9yZGVyLXJhZGl1czouMjVyZW19a2JkIGtiZHtwYWRkaW5nOjA7Zm9udC1zaXplOjFlbX1maWd1cmV7bWFyZ2luOjAgMCAxcmVtfWltZyxzdmd7dmVydGljYWwtYWxpZ246bWlkZGxlfXRhYmxle2NhcHRpb24tc2lkZTpib3R0b207Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWNhcHRpb257cGFkZGluZy10b3A6LjVyZW07cGFkZGluZy1ib3R0b206LjVyZW07Y29sb3I6IzZjNzU3ZDt0ZXh0LWFsaWduOmxlZnR9dGh7dGV4dC1hbGlnbjppbmhlcml0O3RleHQtYWxpZ246LXdlYmtpdC1tYXRjaC1wYXJlbnR9dGhlYWQsdGJvZHksdGZvb3QsdHIsdGQsdGh7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowfWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfWJ1dHRvbntib3JkZXItcmFkaXVzOjB9YnV0dG9uOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSl7b3V0bGluZTowfWlucHV0LGJ1dHRvbixzZWxlY3Qsb3B0Z3JvdXAsdGV4dGFyZWF7bWFyZ2luOjA7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1bcm9sZT1idXR0b25de2N1cnNvcjpwb2ludGVyfXNlbGVjdHt3b3JkLXdyYXA6bm9ybWFsfXNlbGVjdDpkaXNhYmxlZHtvcGFjaXR5OjF9W2xpc3RdOm5vdChbdHlwZT1kYXRlXSk6bm90KFt0eXBlPWRhdGV0aW1lLWxvY2FsXSk6bm90KFt0eXBlPW1vbnRoXSk6bm90KFt0eXBlPXdlZWtdKTpub3QoW3R5cGU9dGltZV0pOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7ZGlzcGxheTpub25lICFpbXBvcnRhbnR9YnV0dG9uLFt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbn1idXR0b246bm90KDpkaXNhYmxlZCksW3R5cGU9YnV0dG9uXTpub3QoOmRpc2FibGVkKSxbdHlwZT1yZXNldF06bm90KDpkaXNhYmxlZCksW3R5cGU9c3VibWl0XTpub3QoOmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn06Oi1tb3otZm9jdXMtaW5uZXJ7cGFkZGluZzowO2JvcmRlci1zdHlsZTpub25lfXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1maWVsZHNldHttaW4td2lkdGg6MDtwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjB9bGVnZW5ke2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJTtwYWRkaW5nOjA7bWFyZ2luLWJvdHRvbTouNXJlbTtmb250LXNpemU6Y2FsYygxLjI3NXJlbSArIDAuM3Z3KTtsaW5lLWhlaWdodDppbmhlcml0fUBtZWRpYShtaW4td2lkdGg6IDEyMDBweCl7bGVnZW5ke2ZvbnQtc2l6ZToxLjVyZW19fWxlZ2VuZCsqe2NsZWFyOmxlZnR9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtZmllbGRzLXdyYXBwZXIsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtdGV4dCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51dGUsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbW9udGgtZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQteWVhci1maWVsZHtwYWRkaW5nOjB9Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfVt0eXBlPXNlYXJjaF17b3V0bGluZS1vZmZzZXQ6LTJweDstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkfTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06Oi13ZWJraXQtY29sb3Itc3dhdGNoLXdyYXBwZXJ7cGFkZGluZzowfTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Zm9udDppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpidXR0b259b3V0cHV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfWlmcmFtZXtib3JkZXI6MH1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtO2N1cnNvcjpwb2ludGVyfXByb2dyZXNze3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfVtoaWRkZW5de2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fS5sZWFke2ZvbnQtc2l6ZToxLjI1cmVtO2ZvbnQtd2VpZ2h0OjMwMH0uZGlzcGxheS0xe2ZvbnQtc2l6ZTpjYWxjKDEuNjI1cmVtICsgNC41dncpO2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoxLjJ9QG1lZGlhKG1pbi13aWR0aDogMTIwMHB4KXsuZGlzcGxheS0xe2ZvbnQtc2l6ZTo1cmVtfX0uZGlzcGxheS0ye2ZvbnQtc2l6ZTpjYWxjKDEuNTc1cmVtICsgMy45dncpO2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoxLjJ9QG1lZGlhKG1pbi13aWR0aDogMTIwMHB4KXsuZGlzcGxheS0ye2ZvbnQtc2l6ZTo0LjVyZW19fS5kaXNwbGF5LTN7Zm9udC1zaXplOmNhbGMoMS41MjVyZW0gKyAzLjN2dyk7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMn1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpey5kaXNwbGF5LTN7Zm9udC1zaXplOjRyZW19fS5kaXNwbGF5LTR7Zm9udC1zaXplOmNhbGMoMS40NzVyZW0gKyAyLjd2dyk7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMn1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpey5kaXNwbGF5LTR7Zm9udC1zaXplOjMuNXJlbX19LmRpc3BsYXktNXtmb250LXNpemU6Y2FsYygxLjQyNXJlbSArIDIuMXZ3KTtmb250LXdlaWdodDozMDA7bGluZS1oZWlnaHQ6MS4yfUBtZWRpYShtaW4td2lkdGg6IDEyMDBweCl7LmRpc3BsYXktNXtmb250LXNpemU6M3JlbX19LmRpc3BsYXktNntmb250LXNpemU6Y2FsYygxLjM3NXJlbSArIDEuNXZ3KTtmb250LXdlaWdodDozMDA7bGluZS1oZWlnaHQ6MS4yfUBtZWRpYShtaW4td2lkdGg6IDEyMDBweCl7LmRpc3BsYXktNntmb250LXNpemU6Mi41cmVtfX0ubGlzdC11bnN0eWxlZHtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9Lmxpc3QtaW5saW5le3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZX0ubGlzdC1pbmxpbmUtaXRlbXtkaXNwbGF5OmlubGluZS1ibG9ja30ubGlzdC1pbmxpbmUtaXRlbTpub3QoOmxhc3QtY2hpbGQpe21hcmdpbi1yaWdodDouNXJlbX0uaW5pdGlhbGlzbXtmb250LXNpemU6MC44NzVlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmJsb2NrcXVvdGV7bWFyZ2luLWJvdHRvbToxcmVtO2ZvbnQtc2l6ZToxLjI1cmVtfS5ibG9ja3F1b3RlPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0uYmxvY2txdW90ZS1mb290ZXJ7bWFyZ2luLXRvcDotMXJlbTttYXJnaW4tYm90dG9tOjFyZW07Zm9udC1zaXplOjAuODc1ZW07Y29sb3I6IzZjNzU3ZH0uYmxvY2txdW90ZS1mb290ZXI6OmJlZm9yZXtjb250ZW50OlxcXCLigJTCoFxcXCJ9LmltZy1mbHVpZHttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30uaW1nLXRodW1ibmFpbHtwYWRkaW5nOi4yNXJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1icy1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6LjM3NXJlbTttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30uZmlndXJle2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5maWd1cmUtaW1ne21hcmdpbi1ib3R0b206LjVyZW07bGluZS1oZWlnaHQ6MX0uZmlndXJlLWNhcHRpb257Zm9udC1zaXplOjAuODc1ZW07Y29sb3I6IzZjNzU3ZH0uY29udGFpbmVyLC5jb250YWluZXItZmx1aWQsLmNvbnRhaW5lci14eGwsLmNvbnRhaW5lci14bCwuY29udGFpbmVyLWxnLC5jb250YWluZXItbWQsLmNvbnRhaW5lci1zbXstLWJzLWd1dHRlci14OiAxLjVyZW07LS1icy1ndXR0ZXIteTogMDt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1icy1ndXR0ZXIteCkqLjUpO3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLWJzLWd1dHRlci14KSouNSk7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0b31AbWVkaWEobWluLXdpZHRoOiA1NzZweCl7LmNvbnRhaW5lci1zbSwuY29udGFpbmVye21heC13aWR0aDo1NDBweH19QG1lZGlhKG1pbi13aWR0aDogNzY4cHgpey5jb250YWluZXItbWQsLmNvbnRhaW5lci1zbSwuY29udGFpbmVye21heC13aWR0aDo3MjBweH19QG1lZGlhKG1pbi13aWR0aDogOTkycHgpey5jb250YWluZXItbGcsLmNvbnRhaW5lci1tZCwuY29udGFpbmVyLXNtLC5jb250YWluZXJ7bWF4LXdpZHRoOjk2MHB4fX1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpey5jb250YWluZXIteGwsLmNvbnRhaW5lci1sZywuY29udGFpbmVyLW1kLC5jb250YWluZXItc20sLmNvbnRhaW5lcnttYXgtd2lkdGg6MTE0MHB4fX1AbWVkaWEobWluLXdpZHRoOiAxNDAwcHgpey5jb250YWluZXIteHhsLC5jb250YWluZXIteGwsLmNvbnRhaW5lci1sZywuY29udGFpbmVyLW1kLC5jb250YWluZXItc20sLmNvbnRhaW5lcnttYXgtd2lkdGg6MTMyMHB4fX0ucm93ey0tYnMtZ3V0dGVyLXg6IDEuNXJlbTstLWJzLWd1dHRlci15OiAwO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOmNhbGMoLTEqdmFyKC0tYnMtZ3V0dGVyLXkpKTttYXJnaW4tcmlnaHQ6Y2FsYygtMC41KnZhcigtLWJzLWd1dHRlci14KSk7bWFyZ2luLWxlZnQ6Y2FsYygtMC41KnZhcigtLWJzLWd1dHRlci14KSl9LnJvdz4qe2ZsZXgtc2hyaW5rOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tYnMtZ3V0dGVyLXgpKi41KTtwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1icy1ndXR0ZXIteCkqLjUpO21hcmdpbi10b3A6dmFyKC0tYnMtZ3V0dGVyLXkpfS5jb2x7ZmxleDoxIDAgMCV9LnJvdy1jb2xzLWF1dG8+KntmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LnJvdy1jb2xzLTE+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9LnJvdy1jb2xzLTI+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0ucm93LWNvbHMtMz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMzMyV9LnJvdy1jb2xzLTQ+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0ucm93LWNvbHMtNT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjAlfS5yb3ctY29scy02Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoxNi42NjY2NjY2NjY3JX0uY29sLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvfS5jb2wtMXtmbGV4OjAgMCBhdXRvO3dpZHRoOjguMzMzMzMzMzMlfS5jb2wtMntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLTN7ZmxleDowIDAgYXV0bzt3aWR0aDoyNSV9LmNvbC00e2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMlfS5jb2wtNXtmbGV4OjAgMCBhdXRvO3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLTZ7ZmxleDowIDAgYXV0bzt3aWR0aDo1MCV9LmNvbC03e2ZsZXg6MCAwIGF1dG87d2lkdGg6NTguMzMzMzMzMzMlfS5jb2wtOHtmbGV4OjAgMCBhdXRvO3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLTl7ZmxleDowIDAgYXV0bzt3aWR0aDo3NSV9LmNvbC0xMHtmbGV4OjAgMCBhdXRvO3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLTExe2ZsZXg6MCAwIGF1dG87d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wtMTJ7ZmxleDowIDAgYXV0bzt3aWR0aDoxMDAlfS5vZmZzZXQtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzJX0ub2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjclfS5vZmZzZXQtM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0ub2Zmc2V0LTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjclfS5vZmZzZXQtNnttYXJnaW4tbGVmdDo1MCV9Lm9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0ub2Zmc2V0LTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjclfS5vZmZzZXQtOXttYXJnaW4tbGVmdDo3NSV9Lm9mZnNldC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMyV9Lm9mZnNldC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NyV9LmctMCwuZ3gtMHstLWJzLWd1dHRlci14OiAwfS5nLTAsLmd5LTB7LS1icy1ndXR0ZXIteTogMH0uZy0xLC5neC0xey0tYnMtZ3V0dGVyLXg6IDAuMjVyZW19LmctMSwuZ3ktMXstLWJzLWd1dHRlci15OiAwLjI1cmVtfS5nLTIsLmd4LTJ7LS1icy1ndXR0ZXIteDogMC41cmVtfS5nLTIsLmd5LTJ7LS1icy1ndXR0ZXIteTogMC41cmVtfS5nLTMsLmd4LTN7LS1icy1ndXR0ZXIteDogMXJlbX0uZy0zLC5neS0zey0tYnMtZ3V0dGVyLXk6IDFyZW19LmctNCwuZ3gtNHstLWJzLWd1dHRlci14OiAxLjVyZW19LmctNCwuZ3ktNHstLWJzLWd1dHRlci15OiAxLjVyZW19LmctNSwuZ3gtNXstLWJzLWd1dHRlci14OiAzcmVtfS5nLTUsLmd5LTV7LS1icy1ndXR0ZXIteTogM3JlbX1AbWVkaWEobWluLXdpZHRoOiA1NzZweCl7LmNvbC1zbXtmbGV4OjEgMCAwJX0ucm93LWNvbHMtc20tYXV0bz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30ucm93LWNvbHMtc20tMT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ucm93LWNvbHMtc20tMj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5yb3ctY29scy1zbS0zPip7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMzMzJX0ucm93LWNvbHMtc20tND4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5yb3ctY29scy1zbS01Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyMCV9LnJvdy1jb2xzLXNtLTY+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY2NjclfS5jb2wtc20tYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LmNvbC1zbS0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC1zbS0ye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtc20tM3tmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0uY29sLXNtLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC1zbS01e2ZsZXg6MCAwIGF1dG87d2lkdGg6NDEuNjY2NjY2NjclfS5jb2wtc20tNntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0uY29sLXNtLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC1zbS04e2ZsZXg6MCAwIGF1dG87d2lkdGg6NjYuNjY2NjY2NjclfS5jb2wtc20tOXtmbGV4OjAgMCBhdXRvO3dpZHRoOjc1JX0uY29sLXNtLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wtc20tMTF7ZmxleDowIDAgYXV0bzt3aWR0aDo5MS42NjY2NjY2NyV9LmNvbC1zbS0xMntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9Lm9mZnNldC1zbS0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC1zbS0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5vZmZzZXQtc20tMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NyV9Lm9mZnNldC1zbS0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LXNtLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5vZmZzZXQtc20tNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NyV9Lm9mZnNldC1zbS02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LXNtLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5vZmZzZXQtc20tOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NyV9Lm9mZnNldC1zbS05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LXNtLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0ub2Zmc2V0LXNtLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY3JX0uZy1zbS0wLC5neC1zbS0wey0tYnMtZ3V0dGVyLXg6IDB9Lmctc20tMCwuZ3ktc20tMHstLWJzLWd1dHRlci15OiAwfS5nLXNtLTEsLmd4LXNtLTF7LS1icy1ndXR0ZXIteDogMC4yNXJlbX0uZy1zbS0xLC5neS1zbS0xey0tYnMtZ3V0dGVyLXk6IDAuMjVyZW19Lmctc20tMiwuZ3gtc20tMnstLWJzLWd1dHRlci14OiAwLjVyZW19Lmctc20tMiwuZ3ktc20tMnstLWJzLWd1dHRlci15OiAwLjVyZW19Lmctc20tMywuZ3gtc20tM3stLWJzLWd1dHRlci14OiAxcmVtfS5nLXNtLTMsLmd5LXNtLTN7LS1icy1ndXR0ZXIteTogMXJlbX0uZy1zbS00LC5neC1zbS00ey0tYnMtZ3V0dGVyLXg6IDEuNXJlbX0uZy1zbS00LC5neS1zbS00ey0tYnMtZ3V0dGVyLXk6IDEuNXJlbX0uZy1zbS01LC5neC1zbS01ey0tYnMtZ3V0dGVyLXg6IDNyZW19Lmctc20tNSwuZ3ktc20tNXstLWJzLWd1dHRlci15OiAzcmVtfX1AbWVkaWEobWluLXdpZHRoOiA3NjhweCl7LmNvbC1tZHtmbGV4OjEgMCAwJX0ucm93LWNvbHMtbWQtYXV0bz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30ucm93LWNvbHMtbWQtMT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ucm93LWNvbHMtbWQtMj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5yb3ctY29scy1tZC0zPip7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMzMzJX0ucm93LWNvbHMtbWQtND4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5yb3ctY29scy1tZC01Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyMCV9LnJvdy1jb2xzLW1kLTY+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY2NjclfS5jb2wtbWQtYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LmNvbC1tZC0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC1tZC0ye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtbWQtM3tmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0uY29sLW1kLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC1tZC01e2ZsZXg6MCAwIGF1dG87d2lkdGg6NDEuNjY2NjY2NjclfS5jb2wtbWQtNntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0uY29sLW1kLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC1tZC04e2ZsZXg6MCAwIGF1dG87d2lkdGg6NjYuNjY2NjY2NjclfS5jb2wtbWQtOXtmbGV4OjAgMCBhdXRvO3dpZHRoOjc1JX0uY29sLW1kLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wtbWQtMTF7ZmxleDowIDAgYXV0bzt3aWR0aDo5MS42NjY2NjY2NyV9LmNvbC1tZC0xMntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9Lm9mZnNldC1tZC0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC1tZC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5vZmZzZXQtbWQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NyV9Lm9mZnNldC1tZC0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LW1kLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5vZmZzZXQtbWQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NyV9Lm9mZnNldC1tZC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LW1kLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5vZmZzZXQtbWQtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NyV9Lm9mZnNldC1tZC05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LW1kLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0ub2Zmc2V0LW1kLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY3JX0uZy1tZC0wLC5neC1tZC0wey0tYnMtZ3V0dGVyLXg6IDB9LmctbWQtMCwuZ3ktbWQtMHstLWJzLWd1dHRlci15OiAwfS5nLW1kLTEsLmd4LW1kLTF7LS1icy1ndXR0ZXIteDogMC4yNXJlbX0uZy1tZC0xLC5neS1tZC0xey0tYnMtZ3V0dGVyLXk6IDAuMjVyZW19LmctbWQtMiwuZ3gtbWQtMnstLWJzLWd1dHRlci14OiAwLjVyZW19LmctbWQtMiwuZ3ktbWQtMnstLWJzLWd1dHRlci15OiAwLjVyZW19LmctbWQtMywuZ3gtbWQtM3stLWJzLWd1dHRlci14OiAxcmVtfS5nLW1kLTMsLmd5LW1kLTN7LS1icy1ndXR0ZXIteTogMXJlbX0uZy1tZC00LC5neC1tZC00ey0tYnMtZ3V0dGVyLXg6IDEuNXJlbX0uZy1tZC00LC5neS1tZC00ey0tYnMtZ3V0dGVyLXk6IDEuNXJlbX0uZy1tZC01LC5neC1tZC01ey0tYnMtZ3V0dGVyLXg6IDNyZW19LmctbWQtNSwuZ3ktbWQtNXstLWJzLWd1dHRlci15OiAzcmVtfX1AbWVkaWEobWluLXdpZHRoOiA5OTJweCl7LmNvbC1sZ3tmbGV4OjEgMCAwJX0ucm93LWNvbHMtbGctYXV0bz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30ucm93LWNvbHMtbGctMT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ucm93LWNvbHMtbGctMj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5yb3ctY29scy1sZy0zPip7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMzMzJX0ucm93LWNvbHMtbGctND4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5yb3ctY29scy1sZy01Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyMCV9LnJvdy1jb2xzLWxnLTY+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY2NjclfS5jb2wtbGctYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LmNvbC1sZy0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC1sZy0ye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtbGctM3tmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0uY29sLWxnLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC1sZy01e2ZsZXg6MCAwIGF1dG87d2lkdGg6NDEuNjY2NjY2NjclfS5jb2wtbGctNntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0uY29sLWxnLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC1sZy04e2ZsZXg6MCAwIGF1dG87d2lkdGg6NjYuNjY2NjY2NjclfS5jb2wtbGctOXtmbGV4OjAgMCBhdXRvO3dpZHRoOjc1JX0uY29sLWxnLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wtbGctMTF7ZmxleDowIDAgYXV0bzt3aWR0aDo5MS42NjY2NjY2NyV9LmNvbC1sZy0xMntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9Lm9mZnNldC1sZy0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC1sZy0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5vZmZzZXQtbGctMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NyV9Lm9mZnNldC1sZy0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LWxnLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5vZmZzZXQtbGctNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NyV9Lm9mZnNldC1sZy02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LWxnLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5vZmZzZXQtbGctOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NyV9Lm9mZnNldC1sZy05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LWxnLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0ub2Zmc2V0LWxnLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY3JX0uZy1sZy0wLC5neC1sZy0wey0tYnMtZ3V0dGVyLXg6IDB9LmctbGctMCwuZ3ktbGctMHstLWJzLWd1dHRlci15OiAwfS5nLWxnLTEsLmd4LWxnLTF7LS1icy1ndXR0ZXIteDogMC4yNXJlbX0uZy1sZy0xLC5neS1sZy0xey0tYnMtZ3V0dGVyLXk6IDAuMjVyZW19LmctbGctMiwuZ3gtbGctMnstLWJzLWd1dHRlci14OiAwLjVyZW19LmctbGctMiwuZ3ktbGctMnstLWJzLWd1dHRlci15OiAwLjVyZW19LmctbGctMywuZ3gtbGctM3stLWJzLWd1dHRlci14OiAxcmVtfS5nLWxnLTMsLmd5LWxnLTN7LS1icy1ndXR0ZXIteTogMXJlbX0uZy1sZy00LC5neC1sZy00ey0tYnMtZ3V0dGVyLXg6IDEuNXJlbX0uZy1sZy00LC5neS1sZy00ey0tYnMtZ3V0dGVyLXk6IDEuNXJlbX0uZy1sZy01LC5neC1sZy01ey0tYnMtZ3V0dGVyLXg6IDNyZW19LmctbGctNSwuZ3ktbGctNXstLWJzLWd1dHRlci15OiAzcmVtfX1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpey5jb2wteGx7ZmxleDoxIDAgMCV9LnJvdy1jb2xzLXhsLWF1dG8+KntmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LnJvdy1jb2xzLXhsLTE+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9LnJvdy1jb2xzLXhsLTI+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0ucm93LWNvbHMteGwtMz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMzMyV9LnJvdy1jb2xzLXhsLTQ+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0ucm93LWNvbHMteGwtNT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjAlfS5yb3ctY29scy14bC02Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoxNi42NjY2NjY2NjY3JX0uY29sLXhsLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvfS5jb2wteGwtMXtmbGV4OjAgMCBhdXRvO3dpZHRoOjguMzMzMzMzMzMlfS5jb2wteGwtMntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLXhsLTN7ZmxleDowIDAgYXV0bzt3aWR0aDoyNSV9LmNvbC14bC00e2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMlfS5jb2wteGwtNXtmbGV4OjAgMCBhdXRvO3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLXhsLTZ7ZmxleDowIDAgYXV0bzt3aWR0aDo1MCV9LmNvbC14bC03e2ZsZXg6MCAwIGF1dG87d2lkdGg6NTguMzMzMzMzMzMlfS5jb2wteGwtOHtmbGV4OjAgMCBhdXRvO3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLXhsLTl7ZmxleDowIDAgYXV0bzt3aWR0aDo3NSV9LmNvbC14bC0xMHtmbGV4OjAgMCBhdXRvO3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLXhsLTExe2ZsZXg6MCAwIGF1dG87d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wteGwtMTJ7ZmxleDowIDAgYXV0bzt3aWR0aDoxMDAlfS5vZmZzZXQteGwtMHttYXJnaW4tbGVmdDowfS5vZmZzZXQteGwtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzJX0ub2Zmc2V0LXhsLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjclfS5vZmZzZXQteGwtM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC14bC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0ub2Zmc2V0LXhsLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjclfS5vZmZzZXQteGwtNnttYXJnaW4tbGVmdDo1MCV9Lm9mZnNldC14bC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0ub2Zmc2V0LXhsLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjclfS5vZmZzZXQteGwtOXttYXJnaW4tbGVmdDo3NSV9Lm9mZnNldC14bC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMyV9Lm9mZnNldC14bC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NyV9LmcteGwtMCwuZ3gteGwtMHstLWJzLWd1dHRlci14OiAwfS5nLXhsLTAsLmd5LXhsLTB7LS1icy1ndXR0ZXIteTogMH0uZy14bC0xLC5neC14bC0xey0tYnMtZ3V0dGVyLXg6IDAuMjVyZW19LmcteGwtMSwuZ3kteGwtMXstLWJzLWd1dHRlci15OiAwLjI1cmVtfS5nLXhsLTIsLmd4LXhsLTJ7LS1icy1ndXR0ZXIteDogMC41cmVtfS5nLXhsLTIsLmd5LXhsLTJ7LS1icy1ndXR0ZXIteTogMC41cmVtfS5nLXhsLTMsLmd4LXhsLTN7LS1icy1ndXR0ZXIteDogMXJlbX0uZy14bC0zLC5neS14bC0zey0tYnMtZ3V0dGVyLXk6IDFyZW19LmcteGwtNCwuZ3gteGwtNHstLWJzLWd1dHRlci14OiAxLjVyZW19LmcteGwtNCwuZ3kteGwtNHstLWJzLWd1dHRlci15OiAxLjVyZW19LmcteGwtNSwuZ3gteGwtNXstLWJzLWd1dHRlci14OiAzcmVtfS5nLXhsLTUsLmd5LXhsLTV7LS1icy1ndXR0ZXIteTogM3JlbX19QG1lZGlhKG1pbi13aWR0aDogMTQwMHB4KXsuY29sLXh4bHtmbGV4OjEgMCAwJX0ucm93LWNvbHMteHhsLWF1dG8+KntmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LnJvdy1jb2xzLXh4bC0xPip7ZmxleDowIDAgYXV0bzt3aWR0aDoxMDAlfS5yb3ctY29scy14eGwtMj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5yb3ctY29scy14eGwtMz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMzMyV9LnJvdy1jb2xzLXh4bC00Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyNSV9LnJvdy1jb2xzLXh4bC01Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyMCV9LnJvdy1jb2xzLXh4bC02Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoxNi42NjY2NjY2NjY3JX0uY29sLXh4bC1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30uY29sLXh4bC0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC14eGwtMntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLXh4bC0ze2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5jb2wteHhsLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC14eGwtNXtmbGV4OjAgMCBhdXRvO3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLXh4bC02e2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5jb2wteHhsLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC14eGwtOHtmbGV4OjAgMCBhdXRvO3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLXh4bC05e2ZsZXg6MCAwIGF1dG87d2lkdGg6NzUlfS5jb2wteHhsLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wteHhsLTExe2ZsZXg6MCAwIGF1dG87d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wteHhsLTEye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ub2Zmc2V0LXh4bC0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC14eGwtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzJX0ub2Zmc2V0LXh4bC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0ub2Zmc2V0LXh4bC0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LXh4bC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0ub2Zmc2V0LXh4bC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0ub2Zmc2V0LXh4bC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LXh4bC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0ub2Zmc2V0LXh4bC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0ub2Zmc2V0LXh4bC05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LXh4bC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMyV9Lm9mZnNldC14eGwtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5nLXh4bC0wLC5neC14eGwtMHstLWJzLWd1dHRlci14OiAwfS5nLXh4bC0wLC5neS14eGwtMHstLWJzLWd1dHRlci15OiAwfS5nLXh4bC0xLC5neC14eGwtMXstLWJzLWd1dHRlci14OiAwLjI1cmVtfS5nLXh4bC0xLC5neS14eGwtMXstLWJzLWd1dHRlci15OiAwLjI1cmVtfS5nLXh4bC0yLC5neC14eGwtMnstLWJzLWd1dHRlci14OiAwLjVyZW19LmcteHhsLTIsLmd5LXh4bC0yey0tYnMtZ3V0dGVyLXk6IDAuNXJlbX0uZy14eGwtMywuZ3gteHhsLTN7LS1icy1ndXR0ZXIteDogMXJlbX0uZy14eGwtMywuZ3kteHhsLTN7LS1icy1ndXR0ZXIteTogMXJlbX0uZy14eGwtNCwuZ3gteHhsLTR7LS1icy1ndXR0ZXIteDogMS41cmVtfS5nLXh4bC00LC5neS14eGwtNHstLWJzLWd1dHRlci15OiAxLjVyZW19LmcteHhsLTUsLmd4LXh4bC01ey0tYnMtZ3V0dGVyLXg6IDNyZW19LmcteHhsLTUsLmd5LXh4bC01ey0tYnMtZ3V0dGVyLXk6IDNyZW19fS5idG57LS1icy1idG4tcGFkZGluZy14OiAwLjc1cmVtOy0tYnMtYnRuLXBhZGRpbmcteTogMC4zNzVyZW07LS1icy1idG4tZm9udC1mYW1pbHk6IDstLWJzLWJ0bi1mb250LXNpemU6MXJlbTstLWJzLWJ0bi1mb250LXdlaWdodDogNDAwOy0tYnMtYnRuLWxpbmUtaGVpZ2h0OiAxLjU7LS1icy1idG4tY29sb3I6ICMyMTI1Mjk7LS1icy1idG4tYmc6IHRyYW5zcGFyZW50Oy0tYnMtYnRuLWJvcmRlci13aWR0aDogMXB4Oy0tYnMtYnRuLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7LS1icy1idG4tYm9yZGVyLXJhZGl1czogMC4zNzVyZW07LS1icy1idG4tYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpLCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7LS1icy1idG4tZGlzYWJsZWQtb3BhY2l0eTogMC42NTstLWJzLWJ0bi1mb2N1cy1ib3gtc2hhZG93OiAwIDAgMCAwLjI1cmVtIHJnYmEodmFyKC0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2IpLCAuNSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzp2YXIoLS1icy1idG4tcGFkZGluZy15KSB2YXIoLS1icy1idG4tcGFkZGluZy14KTtmb250LWZhbWlseTp2YXIoLS1icy1idG4tZm9udC1mYW1pbHkpO2ZvbnQtc2l6ZTp2YXIoLS1icy1idG4tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1icy1idG4tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWJzLWJ0bi1saW5lLWhlaWdodCk7Y29sb3I6dmFyKC0tYnMtYnRuLWNvbG9yKTt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXI7dXNlci1zZWxlY3Q6bm9uZTtib3JkZXI6dmFyKC0tYnMtYnRuLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYnMtYnRuLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1idG4tYm9yZGVyLXJhZGl1cyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1idG4tYmcpO3RyYW5zaXRpb246Y29sb3IgLjE1cyBlYXNlLWluLW91dCxiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0fUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upey5idG57dHJhbnNpdGlvbjpub25lfX0uYnRuOmhvdmVye2NvbG9yOnZhcigtLWJzLWJ0bi1ob3Zlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1idG4taG92ZXItYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yKX0uYnRuLWNoZWNrOmZvY3VzKy5idG4sLmJ0bjpmb2N1c3tjb2xvcjp2YXIoLS1icy1idG4taG92ZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYnRuLWhvdmVyLWJnKTtib3JkZXItY29sb3I6dmFyKC0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcik7b3V0bGluZTowO2JveC1zaGFkb3c6dmFyKC0tYnMtYnRuLWZvY3VzLWJveC1zaGFkb3cpfS5idG4tY2hlY2s6Y2hlY2tlZCsuYnRuLC5idG4tY2hlY2s6YWN0aXZlKy5idG4sLmJ0bjphY3RpdmUsLmJ0bi5hY3RpdmUsLmJ0bi5zaG93e2NvbG9yOnZhcigtLWJzLWJ0bi1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYnRuLWFjdGl2ZS1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yKX0uYnRuLWNoZWNrOmNoZWNrZWQrLmJ0bjpmb2N1cywuYnRuLWNoZWNrOmFjdGl2ZSsuYnRuOmZvY3VzLC5idG46YWN0aXZlOmZvY3VzLC5idG4uYWN0aXZlOmZvY3VzLC5idG4uc2hvdzpmb2N1c3tib3gtc2hhZG93OnZhcigtLWJzLWJ0bi1mb2N1cy1ib3gtc2hhZG93KX0uYnRuOmRpc2FibGVkLC5idG4uZGlzYWJsZWQsZmllbGRzZXQ6ZGlzYWJsZWQgLmJ0bntjb2xvcjp2YXIoLS1icy1idG4tZGlzYWJsZWQtY29sb3IpO3BvaW50ZXItZXZlbnRzOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1idG4tZGlzYWJsZWQtYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtvcGFjaXR5OnZhcigtLWJzLWJ0bi1kaXNhYmxlZC1vcGFjaXR5KX0uYnRuLXByaW1hcnl7LS1icy1idG4tY29sb3I6ICNmZmY7LS1icy1idG4tYmc6ICMwZDZlZmQ7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjMGQ2ZWZkOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiAjMGI1ZWQ3Oy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzBhNThjYTstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiA0OSwgMTMyLCAyNTM7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzogIzBhNThjYTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjMGE1M2JlOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogI2ZmZjstLWJzLWJ0bi1kaXNhYmxlZC1iZzogIzBkNmVmZDstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICMwZDZlZmR9LmJ0bi1zZWNvbmRhcnl7LS1icy1idG4tY29sb3I6ICNmZmY7LS1icy1idG4tYmc6ICM2Yzc1N2Q7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjNmM3NTdkOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiAjNWM2MzZhOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzU2NWU2NDstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAxMzAsIDEzOCwgMTQ1Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjogI2ZmZjstLWJzLWJ0bi1hY3RpdmUtYmc6ICM1NjVlNjQ7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogIzUxNTg1ZTstLWJzLWJ0bi1hY3RpdmUtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6ICNmZmY7LS1icy1idG4tZGlzYWJsZWQtYmc6ICM2Yzc1N2Q7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjNmM3NTdkfS5idG4tc3VjY2Vzc3stLWJzLWJ0bi1jb2xvcjogI2ZmZjstLWJzLWJ0bi1iZzogIzE5ODc1NDstLWJzLWJ0bi1ib3JkZXItY29sb3I6ICMxOTg3NTQ7LS1icy1idG4taG92ZXItY29sb3I6ICNmZmY7LS1icy1idG4taG92ZXItYmc6ICMxNTczNDc7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiAjMTQ2YzQzOy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6IDYwLCAxNTMsIDExMDstLWJzLWJ0bi1hY3RpdmUtY29sb3I6ICNmZmY7LS1icy1idG4tYWN0aXZlLWJnOiAjMTQ2YzQzOy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICMxMzY1M2Y7LS1icy1idG4tYWN0aXZlLXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWRpc2FibGVkLWJnOiAjMTk4NzU0Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogIzE5ODc1NH0uYnRuLWluZm97LS1icy1idG4tY29sb3I6ICMwMDA7LS1icy1idG4tYmc6ICMwZGNhZjA7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjMGRjYWYwOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWhvdmVyLWJnOiAjMzFkMmYyOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzI1Y2ZmMjstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAxMSwgMTcyLCAyMDQ7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWFjdGl2ZS1iZzogIzNkZDVmMzstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjMjVjZmYyOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogIzAwMDstLWJzLWJ0bi1kaXNhYmxlZC1iZzogIzBkY2FmMDstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICMwZGNhZjB9LmJ0bi13YXJuaW5ney0tYnMtYnRuLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWJnOiAjZmZjMTA3Oy0tYnMtYnRuLWJvcmRlci1jb2xvcjogI2ZmYzEwNzstLWJzLWJ0bi1ob3Zlci1jb2xvcjogIzAwMDstLWJzLWJ0bi1ob3Zlci1iZzogI2ZmY2EyYzstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICNmZmM3MjA7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMjE3LCAxNjQsIDY7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWFjdGl2ZS1iZzogI2ZmY2QzOTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjZmZjNzIwOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogIzAwMDstLWJzLWJ0bi1kaXNhYmxlZC1iZzogI2ZmYzEwNzstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICNmZmMxMDd9LmJ0bi1kYW5nZXJ7LS1icy1idG4tY29sb3I6ICNmZmY7LS1icy1idG4tYmc6ICNkYzM1NDU7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Oy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiAjYmIyZDNiOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogI2IwMmEzNzstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAyMjUsIDgzLCA5NzstLWJzLWJ0bi1hY3RpdmUtY29sb3I6ICNmZmY7LS1icy1idG4tYWN0aXZlLWJnOiAjYjAyYTM3Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICNhNTI4MzQ7LS1icy1idG4tYWN0aXZlLXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWRpc2FibGVkLWJnOiAjZGMzNTQ1Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogI2RjMzU0NX0uYnRuLWxpZ2h0ey0tYnMtYnRuLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWJnOiAjZjhmOWZhOy0tYnMtYnRuLWJvcmRlci1jb2xvcjogI2Y4ZjlmYTstLWJzLWJ0bi1ob3Zlci1jb2xvcjogIzAwMDstLWJzLWJ0bi1ob3Zlci1iZzogI2QzZDRkNTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICNjNmM3Yzg7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMjExLCAyMTIsIDIxMzstLWJzLWJ0bi1hY3RpdmUtY29sb3I6ICMwMDA7LS1icy1idG4tYWN0aXZlLWJnOiAjYzZjN2M4Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICNiYWJiYmM7LS1icy1idG4tYWN0aXZlLXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWRpc2FibGVkLWJnOiAjZjhmOWZhOy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogI2Y4ZjlmYX0uYnRuLWRhcmt7LS1icy1idG4tY29sb3I6ICNmZmY7LS1icy1idG4tYmc6ICMyMTI1Mjk7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjMjEyNTI5Oy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiAjNDI0NjQ5Oy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzM3M2IzZTstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiA2NiwgNzAsIDczOy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjogI2ZmZjstLWJzLWJ0bi1hY3RpdmUtYmc6ICM0ZDUxNTQ7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogIzM3M2IzZTstLWJzLWJ0bi1hY3RpdmUtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6ICNmZmY7LS1icy1idG4tZGlzYWJsZWQtYmc6ICMyMTI1Mjk7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjMjEyNTI5fS5idG4tb3V0bGluZS1wcmltYXJ5ey0tYnMtYnRuLWNvbG9yOiAjMGQ2ZWZkOy0tYnMtYnRuLWJvcmRlci1jb2xvcjogIzBkNmVmZDstLWJzLWJ0bi1ob3Zlci1jb2xvcjogI2ZmZjstLWJzLWJ0bi1ob3Zlci1iZzogIzBkNmVmZDstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICMwZDZlZmQ7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMTMsIDExMCwgMjUzOy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjogI2ZmZjstLWJzLWJ0bi1hY3RpdmUtYmc6ICMwZDZlZmQ7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogIzBkNmVmZDstLWJzLWJ0bi1hY3RpdmUtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6ICMwZDZlZmQ7LS1icy1idG4tZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogIzBkNmVmZDstLWJzLWdyYWRpZW50OiBub25lfS5idG4tb3V0bGluZS1zZWNvbmRhcnl7LS1icy1idG4tY29sb3I6ICM2Yzc1N2Q7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjNmM3NTdkOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiAjNmM3NTdkOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzZjNzU3ZDstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAxMDgsIDExNywgMTI1Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjogI2ZmZjstLWJzLWJ0bi1hY3RpdmUtYmc6ICM2Yzc1N2Q7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogIzZjNzU3ZDstLWJzLWJ0bi1hY3RpdmUtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6ICM2Yzc1N2Q7LS1icy1idG4tZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogIzZjNzU3ZDstLWJzLWdyYWRpZW50OiBub25lfS5idG4tb3V0bGluZS1zdWNjZXNzey0tYnMtYnRuLWNvbG9yOiAjMTk4NzU0Oy0tYnMtYnRuLWJvcmRlci1jb2xvcjogIzE5ODc1NDstLWJzLWJ0bi1ob3Zlci1jb2xvcjogI2ZmZjstLWJzLWJ0bi1ob3Zlci1iZzogIzE5ODc1NDstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICMxOTg3NTQ7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMjUsIDEzNSwgODQ7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzogIzE5ODc1NDstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjMTk4NzU0Oy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogIzE5ODc1NDstLWJzLWJ0bi1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjMTk4NzU0Oy0tYnMtZ3JhZGllbnQ6IG5vbmV9LmJ0bi1vdXRsaW5lLWluZm97LS1icy1idG4tY29sb3I6ICMwZGNhZjA7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjMGRjYWYwOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWhvdmVyLWJnOiAjMGRjYWYwOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzBkY2FmMDstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAxMywgMjAyLCAyNDA7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWFjdGl2ZS1iZzogIzBkY2FmMDstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjMGRjYWYwOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogIzBkY2FmMDstLWJzLWJ0bi1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjMGRjYWYwOy0tYnMtZ3JhZGllbnQ6IG5vbmV9LmJ0bi1vdXRsaW5lLXdhcm5pbmd7LS1icy1idG4tY29sb3I6ICNmZmMxMDc7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjZmZjMTA3Oy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWhvdmVyLWJnOiAjZmZjMTA3Oy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogI2ZmYzEwNzstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAyNTUsIDE5MywgNzstLWJzLWJ0bi1hY3RpdmUtY29sb3I6ICMwMDA7LS1icy1idG4tYWN0aXZlLWJnOiAjZmZjMTA3Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICNmZmMxMDc7LS1icy1idG4tYWN0aXZlLXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiAjZmZjMTA3Oy0tYnMtYnRuLWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudDstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICNmZmMxMDc7LS1icy1ncmFkaWVudDogbm9uZX0uYnRuLW91dGxpbmUtZGFuZ2Vyey0tYnMtYnRuLWNvbG9yOiAjZGMzNTQ1Oy0tYnMtYnRuLWJvcmRlci1jb2xvcjogI2RjMzU0NTstLWJzLWJ0bi1ob3Zlci1jb2xvcjogI2ZmZjstLWJzLWJ0bi1ob3Zlci1iZzogI2RjMzU0NTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICNkYzM1NDU7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMjIwLCA1MywgNjk7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzogI2RjMzU0NTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Oy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogI2RjMzU0NTstLWJzLWJ0bi1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Oy0tYnMtZ3JhZGllbnQ6IG5vbmV9LmJ0bi1vdXRsaW5lLWxpZ2h0ey0tYnMtYnRuLWNvbG9yOiAjZjhmOWZhOy0tYnMtYnRuLWJvcmRlci1jb2xvcjogI2Y4ZjlmYTstLWJzLWJ0bi1ob3Zlci1jb2xvcjogIzAwMDstLWJzLWJ0bi1ob3Zlci1iZzogI2Y4ZjlmYTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICNmOGY5ZmE7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMjQ4LCAyNDksIDI1MDstLWJzLWJ0bi1hY3RpdmUtY29sb3I6ICMwMDA7LS1icy1idG4tYWN0aXZlLWJnOiAjZjhmOWZhOy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICNmOGY5ZmE7LS1icy1idG4tYWN0aXZlLXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiAjZjhmOWZhOy0tYnMtYnRuLWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudDstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICNmOGY5ZmE7LS1icy1ncmFkaWVudDogbm9uZX0uYnRuLW91dGxpbmUtZGFya3stLWJzLWJ0bi1jb2xvcjogIzIxMjUyOTstLWJzLWJ0bi1ib3JkZXItY29sb3I6ICMyMTI1Mjk7LS1icy1idG4taG92ZXItY29sb3I6ICNmZmY7LS1icy1idG4taG92ZXItYmc6ICMyMTI1Mjk7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiAjMjEyNTI5Oy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6IDMzLCAzNywgNDE7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzogIzIxMjUyOTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjMjEyNTI5Oy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogIzIxMjUyOTstLWJzLWJ0bi1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjMjEyNTI5Oy0tYnMtZ3JhZGllbnQ6IG5vbmV9LmJ0bi1saW5rey0tYnMtYnRuLWZvbnQtd2VpZ2h0OiA0MDA7LS1icy1idG4tY29sb3I6IHZhcigtLWJzLWxpbmstY29sb3IpOy0tYnMtYnRuLWJnOiB0cmFuc3BhcmVudDstLWJzLWJ0bi1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Oy0tYnMtYnRuLWhvdmVyLWNvbG9yOiB2YXIoLS1icy1saW5rLWhvdmVyLWNvbG9yKTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjogdmFyKC0tYnMtbGluay1ob3Zlci1jb2xvcik7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6ICM2Yzc1N2Q7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDstLWJzLWJ0bi1ib3gtc2hhZG93OiBub25lOy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6IDQ5LCAxMzIsIDI1Mzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5idG4tbGluazpmb2N1c3tjb2xvcjp2YXIoLS1icy1idG4tY29sb3IpfS5idG4tbGluazpob3Zlcntjb2xvcjp2YXIoLS1icy1idG4taG92ZXItY29sb3IpfS5idG4tbGd7LS1icy1idG4tcGFkZGluZy15OiAwLjVyZW07LS1icy1idG4tcGFkZGluZy14OiAxcmVtOy0tYnMtYnRuLWZvbnQtc2l6ZToxLjI1cmVtOy0tYnMtYnRuLWJvcmRlci1yYWRpdXM6IDAuNXJlbX0uYnRuLXNtey0tYnMtYnRuLXBhZGRpbmcteTogMC4yNXJlbTstLWJzLWJ0bi1wYWRkaW5nLXg6IDAuNXJlbTstLWJzLWJ0bi1mb250LXNpemU6MC44NzVyZW07LS1icy1idG4tYm9yZGVyLXJhZGl1czogMC4yNXJlbX0uZmFkZXt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBsaW5lYXJ9QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7LmZhZGV7dHJhbnNpdGlvbjpub25lfX0uZmFkZTpub3QoLnNob3cpe29wYWNpdHk6MH0uY29sbGFwc2U6bm90KC5zaG93KXtkaXNwbGF5Om5vbmV9LmNvbGxhcHNpbmd7aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246aGVpZ2h0IC4zNXMgZWFzZX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsuY29sbGFwc2luZ3t0cmFuc2l0aW9uOm5vbmV9fS5jb2xsYXBzaW5nLmNvbGxhcHNlLWhvcml6b250YWx7d2lkdGg6MDtoZWlnaHQ6YXV0bzt0cmFuc2l0aW9uOndpZHRoIC4zNXMgZWFzZX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsuY29sbGFwc2luZy5jb2xsYXBzZS1ob3Jpem9udGFse3RyYW5zaXRpb246bm9uZX19QGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3swJXtiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6MXJlbX19LnByb2dyZXNzey0tYnMtcHJvZ3Jlc3MtaGVpZ2h0OiAxcmVtOy0tYnMtcHJvZ3Jlc3MtZm9udC1zaXplOjAuNzVyZW07LS1icy1wcm9ncmVzcy1iZzogI2U5ZWNlZjstLWJzLXByb2dyZXNzLWJvcmRlci1yYWRpdXM6IDAuMzc1cmVtOy0tYnMtcHJvZ3Jlc3MtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOy0tYnMtcHJvZ3Jlc3MtYmFyLWNvbG9yOiAjZmZmOy0tYnMtcHJvZ3Jlc3MtYmFyLWJnOiAjMGQ2ZWZkOy0tYnMtcHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb246IHdpZHRoIDAuNnMgZWFzZTtkaXNwbGF5OmZsZXg7aGVpZ2h0OnZhcigtLWJzLXByb2dyZXNzLWhlaWdodCk7b3ZlcmZsb3c6aGlkZGVuO2ZvbnQtc2l6ZTp2YXIoLS1icy1wcm9ncmVzcy1mb250LXNpemUpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtcHJvZ3Jlc3MtYmcpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtcHJvZ3Jlc3MtYm9yZGVyLXJhZGl1cyl9LnByb2dyZXNzLWJhcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnZhcigtLWJzLXByb2dyZXNzLWJhci1jb2xvcik7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtcHJvZ3Jlc3MtYmFyLWJnKTt0cmFuc2l0aW9uOnZhcigtLWJzLXByb2dyZXNzLWJhci10cmFuc2l0aW9uKX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsucHJvZ3Jlc3MtYmFye3RyYW5zaXRpb246bm9uZX19LnByb2dyZXNzLWJhci1zdHJpcGVke2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1zaXplOnZhcigtLWJzLXByb2dyZXNzLWhlaWdodCkgdmFyKC0tYnMtcHJvZ3Jlc3MtaGVpZ2h0KX0ucHJvZ3Jlc3MtYmFyLWFuaW1hdGVke2FuaW1hdGlvbjoxcyBsaW5lYXIgaW5maW5pdGUgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN9QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7LnByb2dyZXNzLWJhci1hbmltYXRlZHthbmltYXRpb246bm9uZX19LmJ0bi1jbG9zZXtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3dpZHRoOjFlbTtoZWlnaHQ6MWVtO3BhZGRpbmc6LjI1ZW0gLjI1ZW07Y29sb3I6IzAwMDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCkgdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSclMjMwMDAnJTNlJTNjcGF0aCBkPSdNLjI5My4yOTNhMSAxIDAgMCAxIDEuNDE0IDBMOCA2LjU4NiAxNC4yOTMuMjkzYTEgMSAwIDEgMSAxLjQxNCAxLjQxNEw5LjQxNCA4bDYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNCAxLjQxNEw4IDkuNDE0bC02LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTRMNi41ODYgOCAuMjkzIDEuNzA3YTEgMSAwIDAgMSAwLTEuNDE0eicvJTNlJTNjL3N2ZyUzZVxcXCIpIGNlbnRlci8xZW0gYXV0byBuby1yZXBlYXQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czouMzc1cmVtO29wYWNpdHk6LjV9LmJ0bi1jbG9zZTpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO29wYWNpdHk6Ljc1fS5idG4tY2xvc2U6Zm9jdXN7b3V0bGluZTowO2JveC1zaGFkb3c6MCAwIDAgLjI1cmVtIHJnYmEoMTMsMTEwLDI1MywuMjUpO29wYWNpdHk6MX0uYnRuLWNsb3NlOmRpc2FibGVkLC5idG4tY2xvc2UuZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZTt1c2VyLXNlbGVjdDpub25lO29wYWNpdHk6LjI1fS5idG4tY2xvc2Utd2hpdGV7ZmlsdGVyOmludmVydCgxKSBncmF5c2NhbGUoMTAwJSkgYnJpZ2h0bmVzcygyMDAlKX0ubW9kYWx7LS1icy1tb2RhbC16aW5kZXg6IDEwNTU7LS1icy1tb2RhbC13aWR0aDogNTAwcHg7LS1icy1tb2RhbC1wYWRkaW5nOiAxcmVtOy0tYnMtbW9kYWwtbWFyZ2luOiAwLjVyZW07LS1icy1tb2RhbC1jb2xvcjogOy0tYnMtbW9kYWwtYmc6ICNmZmY7LS1icy1tb2RhbC1ib3JkZXItY29sb3I6IHZhcigtLWJzLWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCk7LS1icy1tb2RhbC1ib3JkZXItd2lkdGg6IDFweDstLWJzLW1vZGFsLWJvcmRlci1yYWRpdXM6IDAuNXJlbTstLWJzLW1vZGFsLWJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDAsIDAsIDAsIDAuMDc1KTstLWJzLW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXM6IGNhbGMoMC41cmVtIC0gMXB4KTstLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nLXg6IDFyZW07LS1icy1tb2RhbC1oZWFkZXItcGFkZGluZy15OiAxcmVtOy0tYnMtbW9kYWwtaGVhZGVyLXBhZGRpbmc6IDFyZW0gMXJlbTstLWJzLW1vZGFsLWhlYWRlci1ib3JkZXItY29sb3I6IHZhcigtLWJzLWJvcmRlci1jb2xvcik7LS1icy1tb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoOiAxcHg7LS1icy1tb2RhbC10aXRsZS1saW5lLWhlaWdodDogMS41Oy0tYnMtbW9kYWwtZm9vdGVyLWdhcDogMC41cmVtOy0tYnMtbW9kYWwtZm9vdGVyLWJnOiA7LS1icy1tb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yOiB2YXIoLS1icy1ib3JkZXItY29sb3IpOy0tYnMtbW9kYWwtZm9vdGVyLWJvcmRlci13aWR0aDogMXB4O3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt6LWluZGV4OnZhcigtLWJzLW1vZGFsLXppbmRleCk7ZGlzcGxheTpub25lO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvO291dGxpbmU6MH0ubW9kYWwtZGlhbG9ne3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOmF1dG87bWFyZ2luOnZhcigtLWJzLW1vZGFsLW1hcmdpbik7cG9pbnRlci1ldmVudHM6bm9uZX0ubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9ne3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlLW91dDt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsIC01MHB4KX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9ne3RyYW5zaXRpb246bm9uZX19Lm1vZGFsLnNob3cgLm1vZGFsLWRpYWxvZ3t0cmFuc2Zvcm06bm9uZX0ubW9kYWwubW9kYWwtc3RhdGljIC5tb2RhbC1kaWFsb2d7dHJhbnNmb3JtOnNjYWxlKDEuMDIpfS5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZXtoZWlnaHQ6Y2FsYygxMDAlIC0gdmFyKC0tYnMtbW9kYWwtbWFyZ2luKSoyKX0ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWNvbnRlbnR7bWF4LWhlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWJvZHl7b3ZlcmZsb3cteTphdXRvfS5tb2RhbC1kaWFsb2ctY2VudGVyZWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWJzLW1vZGFsLW1hcmdpbikqMil9Lm1vZGFsLWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoxMDAlO2NvbG9yOnZhcigtLWJzLW1vZGFsLWNvbG9yKTtwb2ludGVyLWV2ZW50czphdXRvO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtbW9kYWwtYmcpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtib3JkZXI6dmFyKC0tYnMtbW9kYWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1tb2RhbC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtbW9kYWwtYm9yZGVyLXJhZGl1cyk7b3V0bGluZTowfS5tb2RhbC1iYWNrZHJvcHstLWJzLWJhY2tkcm9wLXppbmRleDogMTA1MDstLWJzLWJhY2tkcm9wLWJnOiAjMDAwOy0tYnMtYmFja2Ryb3Atb3BhY2l0eTogMC41O3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt6LWluZGV4OnZhcigtLWJzLWJhY2tkcm9wLXppbmRleCk7d2lkdGg6MTAwdnc7aGVpZ2h0OjEwMHZoO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYmFja2Ryb3AtYmcpfS5tb2RhbC1iYWNrZHJvcC5mYWRle29wYWNpdHk6MH0ubW9kYWwtYmFja2Ryb3Auc2hvd3tvcGFjaXR5OnZhcigtLWJzLWJhY2tkcm9wLW9wYWNpdHkpfS5tb2RhbC1oZWFkZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtc2hyaW5rOjA7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6dmFyKC0tYnMtbW9kYWwtaGVhZGVyLXBhZGRpbmcpO2JvcmRlci1ib3R0b206dmFyKC0tYnMtbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYnMtbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcik7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKX0ubW9kYWwtaGVhZGVyIC5idG4tY2xvc2V7cGFkZGluZzpjYWxjKHZhcigtLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nLXkpKi41KSBjYWxjKHZhcigtLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nLXgpKi41KTttYXJnaW46Y2FsYyh2YXIoLS1icy1tb2RhbC1oZWFkZXItcGFkZGluZy15KSotMC41KSBjYWxjKHZhcigtLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nLXgpKi0wLjUpIGNhbGModmFyKC0tYnMtbW9kYWwtaGVhZGVyLXBhZGRpbmcteSkqLTAuNSkgYXV0b30ubW9kYWwtdGl0bGV7bWFyZ2luLWJvdHRvbTowO2xpbmUtaGVpZ2h0OnZhcigtLWJzLW1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0KX0ubW9kYWwtYm9keXtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6dmFyKC0tYnMtbW9kYWwtcGFkZGluZyl9Lm1vZGFsLWZvb3RlcntkaXNwbGF5OmZsZXg7ZmxleC1zaHJpbms6MDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmc6Y2FsYyh2YXIoLS1icy1tb2RhbC1wYWRkaW5nKSAtIHZhcigtLWJzLW1vZGFsLWZvb3Rlci1nYXApKi41KTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLW1vZGFsLWZvb3Rlci1iZyk7Ym9yZGVyLXRvcDp2YXIoLS1icy1tb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1tb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXMpfS5tb2RhbC1mb290ZXI+KnttYXJnaW46Y2FsYyh2YXIoLS1icy1tb2RhbC1mb290ZXItZ2FwKSouNSl9QG1lZGlhKG1pbi13aWR0aDogNTc2cHgpey5tb2RhbHstLWJzLW1vZGFsLW1hcmdpbjogMS43NXJlbTstLWJzLW1vZGFsLWJveC1zaGFkb3c6IDAgMC41cmVtIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjE1KX0ubW9kYWwtZGlhbG9ne21heC13aWR0aDp2YXIoLS1icy1tb2RhbC13aWR0aCk7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0b30ubW9kYWwtc217LS1icy1tb2RhbC13aWR0aDogMzAwcHh9fUBtZWRpYShtaW4td2lkdGg6IDk5MnB4KXsubW9kYWwtbGcsLm1vZGFsLXhsey0tYnMtbW9kYWwtd2lkdGg6IDgwMHB4fX1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpey5tb2RhbC14bHstLWJzLW1vZGFsLXdpZHRoOiAxMTQwcHh9fS5tb2RhbC1mdWxsc2NyZWVue3dpZHRoOjEwMHZ3O21heC13aWR0aDpub25lO2hlaWdodDoxMDAlO21hcmdpbjowfS5tb2RhbC1mdWxsc2NyZWVuIC5tb2RhbC1jb250ZW50e2hlaWdodDoxMDAlO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MH0ubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtaGVhZGVyLC5tb2RhbC1mdWxsc2NyZWVuIC5tb2RhbC1mb290ZXJ7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuIC5tb2RhbC1ib2R5e292ZXJmbG93LXk6YXV0b31AbWVkaWEobWF4LXdpZHRoOiA1NzUuOThweCl7Lm1vZGFsLWZ1bGxzY3JlZW4tc20tZG93bnt3aWR0aDoxMDB2dzttYXgtd2lkdGg6bm9uZTtoZWlnaHQ6MTAwJTttYXJnaW46MH0ubW9kYWwtZnVsbHNjcmVlbi1zbS1kb3duIC5tb2RhbC1jb250ZW50e2hlaWdodDoxMDAlO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MH0ubW9kYWwtZnVsbHNjcmVlbi1zbS1kb3duIC5tb2RhbC1oZWFkZXIsLm1vZGFsLWZ1bGxzY3JlZW4tc20tZG93biAubW9kYWwtZm9vdGVye2JvcmRlci1yYWRpdXM6MH0ubW9kYWwtZnVsbHNjcmVlbi1zbS1kb3duIC5tb2RhbC1ib2R5e292ZXJmbG93LXk6YXV0b319QG1lZGlhKG1heC13aWR0aDogNzY3Ljk4cHgpey5tb2RhbC1mdWxsc2NyZWVuLW1kLWRvd257d2lkdGg6MTAwdnc7bWF4LXdpZHRoOm5vbmU7aGVpZ2h0OjEwMCU7bWFyZ2luOjB9Lm1vZGFsLWZ1bGxzY3JlZW4tbWQtZG93biAubW9kYWwtY29udGVudHtoZWlnaHQ6MTAwJTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4tbWQtZG93biAubW9kYWwtaGVhZGVyLC5tb2RhbC1mdWxsc2NyZWVuLW1kLWRvd24gLm1vZGFsLWZvb3Rlcntib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4tbWQtZG93biAubW9kYWwtYm9keXtvdmVyZmxvdy15OmF1dG99fUBtZWRpYShtYXgtd2lkdGg6IDk5MS45OHB4KXsubW9kYWwtZnVsbHNjcmVlbi1sZy1kb3due3dpZHRoOjEwMHZ3O21heC13aWR0aDpub25lO2hlaWdodDoxMDAlO21hcmdpbjowfS5tb2RhbC1mdWxsc2NyZWVuLWxnLWRvd24gLm1vZGFsLWNvbnRlbnR7aGVpZ2h0OjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLWxnLWRvd24gLm1vZGFsLWhlYWRlciwubW9kYWwtZnVsbHNjcmVlbi1sZy1kb3duIC5tb2RhbC1mb290ZXJ7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLWxnLWRvd24gLm1vZGFsLWJvZHl7b3ZlcmZsb3cteTphdXRvfX1AbWVkaWEobWF4LXdpZHRoOiAxMTk5Ljk4cHgpey5tb2RhbC1mdWxsc2NyZWVuLXhsLWRvd257d2lkdGg6MTAwdnc7bWF4LXdpZHRoOm5vbmU7aGVpZ2h0OjEwMCU7bWFyZ2luOjB9Lm1vZGFsLWZ1bGxzY3JlZW4teGwtZG93biAubW9kYWwtY29udGVudHtoZWlnaHQ6MTAwJTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4teGwtZG93biAubW9kYWwtaGVhZGVyLC5tb2RhbC1mdWxsc2NyZWVuLXhsLWRvd24gLm1vZGFsLWZvb3Rlcntib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4teGwtZG93biAubW9kYWwtYm9keXtvdmVyZmxvdy15OmF1dG99fUBtZWRpYShtYXgtd2lkdGg6IDEzOTkuOThweCl7Lm1vZGFsLWZ1bGxzY3JlZW4teHhsLWRvd257d2lkdGg6MTAwdnc7bWF4LXdpZHRoOm5vbmU7aGVpZ2h0OjEwMCU7bWFyZ2luOjB9Lm1vZGFsLWZ1bGxzY3JlZW4teHhsLWRvd24gLm1vZGFsLWNvbnRlbnR7aGVpZ2h0OjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLXh4bC1kb3duIC5tb2RhbC1oZWFkZXIsLm1vZGFsLWZ1bGxzY3JlZW4teHhsLWRvd24gLm1vZGFsLWZvb3Rlcntib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4teHhsLWRvd24gLm1vZGFsLWJvZHl7b3ZlcmZsb3cteTphdXRvfX0uc3Bpbm5lci1ncm93LC5zcGlubmVyLWJvcmRlcntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDp2YXIoLS1icy1zcGlubmVyLXdpZHRoKTtoZWlnaHQ6dmFyKC0tYnMtc3Bpbm5lci1oZWlnaHQpO3ZlcnRpY2FsLWFsaWduOnZhcigtLWJzLXNwaW5uZXItdmVydGljYWwtYWxpZ24pO2JvcmRlci1yYWRpdXM6NTAlO2FuaW1hdGlvbjp2YXIoLS1icy1zcGlubmVyLWFuaW1hdGlvbi1zcGVlZCkgbGluZWFyIGluZmluaXRlIHZhcigtLWJzLXNwaW5uZXItYW5pbWF0aW9uLW5hbWUpfUBrZXlmcmFtZXMgc3Bpbm5lci1ib3JkZXJ7dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIC8qIHJ0bDppZ25vcmUgKi99fS5zcGlubmVyLWJvcmRlcnstLWJzLXNwaW5uZXItd2lkdGg6IDJyZW07LS1icy1zcGlubmVyLWhlaWdodDogMnJlbTstLWJzLXNwaW5uZXItdmVydGljYWwtYWxpZ246IC0wLjEyNWVtOy0tYnMtc3Bpbm5lci1ib3JkZXItd2lkdGg6IDAuMjVlbTstLWJzLXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkOiAwLjc1czstLWJzLXNwaW5uZXItYW5pbWF0aW9uLW5hbWU6IHNwaW5uZXItYm9yZGVyO2JvcmRlcjp2YXIoLS1icy1zcGlubmVyLWJvcmRlci13aWR0aCkgc29saWQgY3VycmVudGNvbG9yO2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApfS5zcGlubmVyLWJvcmRlci1zbXstLWJzLXNwaW5uZXItd2lkdGg6IDFyZW07LS1icy1zcGlubmVyLWhlaWdodDogMXJlbTstLWJzLXNwaW5uZXItYm9yZGVyLXdpZHRoOiAwLjJlbX1Aa2V5ZnJhbWVzIHNwaW5uZXItZ3Jvd3swJXt0cmFuc2Zvcm06c2NhbGUoMCl9NTAle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX19LnNwaW5uZXItZ3Jvd3stLWJzLXNwaW5uZXItd2lkdGg6IDJyZW07LS1icy1zcGlubmVyLWhlaWdodDogMnJlbTstLWJzLXNwaW5uZXItdmVydGljYWwtYWxpZ246IC0wLjEyNWVtOy0tYnMtc3Bpbm5lci1hbmltYXRpb24tc3BlZWQ6IDAuNzVzOy0tYnMtc3Bpbm5lci1hbmltYXRpb24tbmFtZTogc3Bpbm5lci1ncm93O2JhY2tncm91bmQtY29sb3I6Y3VycmVudGNvbG9yO29wYWNpdHk6MH0uc3Bpbm5lci1ncm93LXNtey0tYnMtc3Bpbm5lci13aWR0aDogMXJlbTstLWJzLXNwaW5uZXItaGVpZ2h0OiAxcmVtfUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upey5zcGlubmVyLWJvcmRlciwuc3Bpbm5lci1ncm93ey0tYnMtc3Bpbm5lci1hbmltYXRpb24tc3BlZWQ6IDEuNXN9fVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3NyYy9ib290c3RyYXAuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYmFubmVyLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcm9vdC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdmVuZG9yL19yZnMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19yZWJvb3Quc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL192YXJpYWJsZXMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYm9yZGVyLXJhZGl1cy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3R5cGUuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fbGlzdHMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19pbWFnZXMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9faW1hZ2Uuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19jb250YWluZXJzLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2NvbnRhaW5lci5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2dyaWQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JpZC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2J1dHRvbnMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JhZGllbnRzLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3RyYW5zaXRpb24uc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnV0dG9ucy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3RyYW5zaXRpb25zLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcHJvZ3Jlc3Muc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19jbG9zZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX21vZGFsLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JhY2tkcm9wLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fc3Bpbm5lcnMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTs7Ozs7RUNDRSxDQ0RGLE1BUUksa0JBQUEsQ0FBQSxvQkFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSxpQkFBQSxDQUFBLG9CQUFBLENBQUEsb0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGtCQUFBLENBQUEsa0JBQUEsQ0FBQSxnQkFBQSxDQUFBLGdCQUFBLENBQUEsa0JBQUEsQ0FBQSx1QkFBQSxDQUlBLHNCQUFBLENBQUEsc0JBQUEsQ0FBQSxzQkFBQSxDQUFBLHNCQUFBLENBQUEsc0JBQUEsQ0FBQSxzQkFBQSxDQUFBLHNCQUFBLENBQUEsc0JBQUEsQ0FBQSxzQkFBQSxDQUlBLHFCQUFBLENBQUEsdUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGtCQUFBLENBQUEscUJBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsa0JBQUEsQ0FJQSw4QkFBQSxDQUFBLGlDQUFBLENBQUEsNkJBQUEsQ0FBQSwyQkFBQSxDQUFBLDZCQUFBLENBQUEsNEJBQUEsQ0FBQSw2QkFBQSxDQUFBLHlCQUFBLENBR0YsNkJBQUEsQ0FDQSx1QkFBQSxDQUNBLCtCQUFBLENBQ0EsK0JBQUEsQ0FNQSxxTkFBQSxDQUNBLHlHQUFBLENBQ0EseUZBQUEsQ0FPQSxnREFBQSxDQzRQSSx3QkFMSSxDRHJQUiwwQkFBQSxDQUNBLDBCQUFBLENBQ0Esd0JBQUEsQ0FJQSxrQkFBQSxDQUlBLHNCQUFBLENBQ0Esd0JBQUEsQ0FDQSwwQkFBQSxDQUNBLG1EQUFBLENB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Q0FDQSxvQ0FBQSxDQUNBLHNDQUFBLENBQ0EsMkJBQUEsQ0FDQSwyQkFBQSxDQUNBLHFDQUFBLENBQ0EsNERBQUEsQ0FDQSw2QkFBQSxDQUNBLDZCQUFBLENBQ0EsdUNBQUEsQ0h1RUEsV0dwRkEsb0JBQUEsQ0FDQSxvQkFBQSxDQUNBLDhCQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0Esd0NBQUEsQ0FDQSwyQkFBQSxDQUNBLDJCQUFBLENBQ0EscUNBQUEsQ0FDQSw0REFBQSxDQUNBLDZCQUFBLENBQ0EsNkJBQUEsQ0FDQSx1Q0FBQSxDSHVFQSxVR3BGQSxvQkFBQSxDQUNBLG9CQUFBLENBQ0EsOEJBQUEsQ0FDQSwwQkFBQSxDQUNBLDBCQUFBLENBQ0Esb0NBQUEsQ0FDQSxxQ0FBQSxDQUNBLDJCQUFBLENBQ0EsMkJBQUEsQ0FDQSxxQ0FBQSxDQUNBLDREQUFBLENBQ0EsNkJBQUEsQ0FDQSw2QkFBQSxDQUNBLHVDQUFBLENIaUdBLHFCR3JGQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0EsdUNBQUEsQ0FDQSwyQkFBQSxDQUNBLDJCQUFBLENBQ0EscUNBQUEsQ0FDQSw0REFBQSxDQUNBLGdDQUFBLENBQ0EsaUNBQUEsQ0FDQSx1Q0FBQSxDQUNBLG1CQUFBLENId0VBLHVCR3JGQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0Esd0NBQUEsQ0FDQSwyQkFBQSxDQUNBLDJCQUFBLENBQ0EscUNBQUEsQ0FDQSw0REFBQSxDQUNBLGdDQUFBLENBQ0EsaUNBQUEsQ0FDQSx1Q0FBQSxDQUNBLG1CQUFBLENId0VBLHFCR3JGQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0Esc0NBQUEsQ0FDQSwyQkFBQSxDQUNBLDJCQUFBLENBQ0EscUNBQUEsQ0FDQSw0REFBQSxDQUNBLGdDQUFBLENBQ0EsaUNBQUEsQ0FDQSx1Q0FBQSxDQUNBLG1CQUFBLENId0VBLGtCR3JGQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0EsdUNBQUEsQ0FDQSwyQkFBQSxDQUNBLDJCQUFBLENBQ0EscUNBQUEsQ0FDQSw0REFBQSxDQUNBLGdDQUFBLENBQ0EsaUNBQUEsQ0FDQSx1Q0FBQSxDQUNBLG1CQUFBLENId0VBLHFCR3JGQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0Esc0NBQUEsQ0FDQSwyQkFBQSxDQUNBLDJCQUFBLENBQ0EscUNBQUEsQ0FDQSw0REFBQSxDQUNBLGdDQUFBLENBQ0EsaUNBQUEsQ0FDQSx1Q0FBQSxDQUNBLG1CQUFBLENId0VBLG9CR3JGQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0Esc0NBQUEsQ0FDQSwyQkFBQSxDQUNBLDJCQUFBLENBQ0EscUNBQUEsQ0FDQSw0REFBQSxDQUNBLGdDQUFBLENBQ0EsaUNBQUEsQ0FDQSx1Q0FBQSxDQUNBLG1CQUFBLENId0VBLG1CR3JGQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0Esd0NBQUEsQ0FDQSwyQkFBQSxDQUNBLDJCQUFBLENBQ0EscUNBQUEsQ0FDQSw0REFBQSxDQUNBLGdDQUFBLENBQ0EsaUNBQUEsQ0FDQSx1Q0FBQSxDQUNBLG1CQUFBLENId0VBLGtCR3JGQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0EsMEJBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0EscUNBQUEsQ0FDQSwyQkFBQSxDQUNBLDJCQUFBLENBQ0EscUNBQUEsQ0FDQSw0REFBQSxDQUNBLGdDQUFBLENBQ0EsaUNBQUEsQ0FDQSx1Q0FBQSxDQUNBLG1CQUFBLENIb0ZGLFVBQ0UseUJBQUEsQ0FDQSxvQ0FBQSxDQUNBLHdCQUFBLENBQ0Esa0NBQUEsQ0FDQSxnREFBQSxDQUNBLHdDQUFBLENBQ0EsaURBQUEs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QUNBLHFDQUFBLENBQ0EsbUNBQUEsQ0FDQSx5Q0FBQSxDQUdBLDZCQUFBLENBQ0EsU0FBQSxDQUdGLGlCQUNFLHdCQUFBLENBQ0EseUJBQUEsQ0FJQSx1Q0FDRSw4QkFFRSxrQ0FBQSxDQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi8qIVxcbiAqIEJvb3RzdHJhcCAgdjUuMi4wIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxcbiAqIENvcHlyaWdodCAyMDExLTIwMjIgVGhlIEJvb3RzdHJhcCBBdXRob3JzXFxuICogQ29weXJpZ2h0IDIwMTEtMjAyMiBUd2l0dGVyLCBJbmMuXFxuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXFxuICovOnJvb3R7LS1icy1ibHVlOiAjMGQ2ZWZkOy0tYnMtaW5kaWdvOiAjNjYxMGYyOy0tYnMtcHVycGxlOiAjNmY0MmMxOy0tYnMtcGluazogI2Q2MzM4NDstLWJzLXJlZDogI2RjMzU0NTstLWJzLW9yYW5nZTogI2ZkN2UxNDstLWJzLXllbGxvdzogI2ZmYzEwNzstLWJzLWdyZWVuOiAjMTk4NzU0Oy0tYnMtdGVhbDogIzIwYzk5NzstLWJzLWN5YW46ICMwZGNhZjA7LS1icy1ibGFjazogIzAwMDstLWJzLXdoaXRlOiAjZmZmOy0tYnMtZ3JheTogIzZjNzU3ZDstLWJzLWdyYXktZGFyazogIzM0M2E0MDstLWJzLWdyYXktMTAwOiAjZjhmOWZhOy0tYnMtZ3JheS0yMDA6ICNlOWVjZWY7LS1icy1ncmF5LTMwMDogI2RlZTJlNjstLWJzLWdyYXktNDAwOiAjY2VkNGRhOy0tYnMtZ3JheS01MDA6ICNhZGI1YmQ7LS1icy1ncmF5LTYwMDogIzZjNzU3ZDstLWJzLWdyYXktNzAwOiAjNDk1MDU3Oy0tYnMtZ3JheS04MDA6ICMzNDNhNDA7LS1icy1ncmF5LTkwMDogIzIxMjUyOTstLWJzLXByaW1hcnk6ICMwZDZlZmQ7LS1icy1zZWNvbmRhcnk6ICM2Yzc1N2Q7LS1icy1zdWNjZXNzOiAjMTk4NzU0Oy0tYnMtaW5mbzogIzBkY2FmMDstLWJzLXdhcm5pbmc6ICNmZmMxMDc7LS1icy1kYW5nZXI6ICNkYzM1NDU7LS1icy1saWdodDogI2Y4ZjlmYTstLWJzLWRhcms6ICMyMTI1Mjk7LS1icy1wcmltYXJ5LXJnYjogMTMsIDExMCwgMjUzOy0tYnMtc2Vjb25kYXJ5LXJnYjogMTA4LCAxMTcsIDEyNTstLWJzLXN1Y2Nlc3MtcmdiOiAyNSwgMTM1LCA4NDstLWJzLWluZm8tcmdiOiAxMywgMjAyLCAyNDA7LS1icy13YXJuaW5nLXJnYjogMjU1LCAxOTMsIDc7LS1icy1kYW5nZXItcmdiOiAyMjAsIDUzLCA2OTstLWJzLWxpZ2h0LXJnYjogMjQ4LCAyNDksIDI1MDstLWJzLWRhcmstcmdiOiAzMywgMzcsIDQxOy0tYnMtd2hpdGUtcmdiOiAyNTUsIDI1NSwgMjU1Oy0tYnMtYmxhY2stcmdiOiAwLCAwLCAwOy0tYnMtYm9keS1jb2xvci1yZ2I6IDMzLCAzNywgNDE7LS1icy1ib2R5LWJnLXJnYjogMjU1LCAyNTUsIDI1NTstLWJzLWZvbnQtc2Fucy1zZXJpZjogc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBcXFwiU2Vnb2UgVUlcXFwiLCBSb2JvdG8sIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIFxcXCJOb3RvIFNhbnNcXFwiLCBcXFwiTGliZXJhdGlvbiBTYW5zXFxcIiwgQXJpYWwsIHNhbnMtc2VyaWYsIFxcXCJBcHBsZSBDb2xvciBFbW9qaVxcXCIsIFxcXCJTZWdvZSBVSSBFbW9qaVxcXCIsIFxcXCJTZWdvZSBVSSBTeW1ib2xcXFwiLCBcXFwiTm90byBDb2xvciBFbW9qaVxcXCI7LS1icy1mb250LW1vbm9zcGFjZTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcXFwiTGliZXJhdGlvbiBNb25vXFxcIiwgXFxcIkNvdXJpZXIgTmV3XFxcIiwgbW9ub3NwYWNlOy0tYnMtZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkpOy0tYnMtYm9keS1mb250LWZhbWlseTogdmFyKC0tYnMtZm9udC1zYW5zLXNlcmlmKTstLWJzLWJvZHktZm9udC1zaXplOjFyZW07LS1icy1ib2R5LWZvbnQtd2VpZ2h0OiA0MDA7LS1icy1ib2R5LWxpbmUtaGVpZ2h0OiAxLjU7LS1icy1ib2R5LWNvbG9yOiAjMjEyNTI5Oy0tYnMtYm9keS1iZzogI2ZmZjstLWJzLWJvcmRlci13aWR0aDogMXB4Oy0tYnMtYm9yZGVyLXN0eWxlOiBzb2xpZDstLWJzLWJvcmRlci1jb2xvcjogI2RlZTJlNjstLWJzLWJvcmRlci1jb2xvci10cmFuc2x1Y2VudDogcmdiYSgwLCAwLCAwLCAwLjE3NSk7LS1icy1ib3JkZXItcmFkaXVzOiAwLjM3NXJlbTstLWJzLWJvcmRlci1yYWRpdXMtc206IDAuMjVyZW07LS1icy1ib3JkZXItcmFkaXVzLWxnOiAwLjVyZW07LS1icy1ib3JkZXItcmFkaXVzLXhsOiAxcmVtOy0tYnMtYm9yZGVyLXJhZGl1cy0yeGw6IDJyZW07LS1icy1ib3JkZXItcmFkaXVzLXBpbGw6IDUwcmVtOy0tYnMtbGluay1jb2xvcjogIzBkNmVmZDstLWJzLWxpbmstaG92ZXItY29sb3I6ICMwYTU4Y2E7LS1icy1jb2RlLWNvbG9yOiAjZDYzMzg0Oy0tYnMtaGlnaGxpZ2h0LWJnOiAjZmZmM2NkfSosKjo6YmVmb3JlLCo6OmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveH1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogbm8tcHJlZmVyZW5jZSl7OnJvb3R7c2Nyb2xsLWJlaGF2aW9yOnNtb290aH19Ym9keXttYXJnaW46MDtmb250LWZhbWlseTp2YXIoLS1icy1ib2R5LWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0tYnMtYm9keS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLWJzLWJvZHktZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWJzLWJvZHktbGluZS1oZWlnaHQpO2NvbG9yOnZhcigtLWJzLWJvZHktY29sb3IpO3RleHQtYWxpZ246dmFyKC0tYnMtYm9keS10ZXh0LWFsaWduKTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWJvZHktYmcpOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApfWhye21hcmdpbjoxcmVtIDA7Y29sb3I6aW5oZXJpdDtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZDtvcGFjaXR5Oi4yNX1oNiwuaDYsaDUsLmg1LGg0LC5oNCxoMywuaDMsaDIsLmgyLGgxLC5oMXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTouNXJlbTtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MS4yfWgxLC5oMXtmb250LXNpemU6Y2FsYygxLjM3NXJlbSArIDEuNXZ3KX1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpe2gxLC5oMXtmb250LXNpemU6Mi41cmVtfX1oMiwuaDJ7Zm9udC1zaXplOmNhbGMoMS4zMjVyZW0gKyAwLjl2dyl9QG1lZGlhKG1pbi13aWR0aDogMTIwMHB4KXtoMiwuaDJ7Zm9udC1zaXplOjJyZW19fWgzLC5oM3tmb250LXNpemU6Y2FsYygxLjNyZW0gKyAwLjZ2dyl9QG1lZGlhKG1pbi13aWR0aDogMTIwMHB4KXtoMywuaDN7Zm9udC1zaXplOjEuNzVyZW19fWg0LC5oNHtmb250LXNpemU6Y2FsYygxLjI3NXJlbSArIDAuM3Z3KX1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpe2g0LC5oNHtmb250LXNpemU6MS41cmVtfX1oNSwuaDV7Zm9udC1zaXplOjEuMjVyZW19aDYsLmg2e2ZvbnQtc2l6ZToxcmVtfXB7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MXJlbX1hYmJyW3RpdGxlXXt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZDtjdXJzb3I6aGVscDt0ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6bm9uZX1hZGRyZXNze21hcmdpbi1ib3R0b206MXJlbTtmb250LXN0eWxlOm5vcm1hbDtsaW5lLWhlaWdodDppbmhlcml0fW9sLHVse3BhZGRpbmctbGVmdDoycmVtfW9sLHVsLGRse21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjFyZW19b2wgb2wsdWwgdWwsb2wgdWwsdWwgb2x7bWFyZ2luLWJvdHRvbTowfWR0e2ZvbnQtd2VpZ2h0OjcwMH1kZHttYXJnaW4tYm90dG9tOi41cmVtO21hcmdpbi1sZWZ0OjB9YmxvY2txdW90ZXttYXJnaW46MCAwIDFyZW19YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfXNtYWxsLC5zbWFsbHtmb250LXNpemU6MC44NzVlbX1tYXJrLC5tYXJre3BhZGRpbmc6LjE4NzVlbTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLWhpZ2hsaWdodC1iZyl9c3ViLHN1cHtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MC43NWVtO2xpbmUtaGVpZ2h0OjA7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vie2JvdHRvbTotMC4yNWVtfXN1cHt0b3A6LTAuNWVtfWF7Y29sb3I6dmFyKC0tYnMtbGluay1jb2xvcik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hOmhvdmVye2NvbG9yOnZhcigtLWJzLWxpbmstaG92ZXItY29sb3IpfWE6bm90KFtocmVmXSk6bm90KFtjbGFzc10pLGE6bm90KFtocmVmXSk6bm90KFtjbGFzc10pOmhvdmVye2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9cHJlLGNvZGUsa2JkLHNhbXB7Zm9udC1mYW1pbHk6dmFyKC0tYnMtZm9udC1tb25vc3BhY2UpO2ZvbnQtc2l6ZToxZW19cHJle2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MXJlbTtvdmVyZmxvdzphdXRvO2ZvbnQtc2l6ZTowLjg3NWVtfXByZSBjb2Rle2ZvbnQtc2l6ZTppbmhlcml0O2NvbG9yOmluaGVyaXQ7d29yZC1icmVhazpub3JtYWx9Y29kZXtmb250LXNpemU6MC44NzVlbTtjb2xvcjp2YXIoLS1icy1jb2RlLWNvbG9yKTt3b3JkLXdyYXA6YnJlYWstd29yZH1hPmNvZGV7Y29sb3I6aW5oZXJpdH1rYmR7cGFkZGluZzouMTg3NXJlbSAuMzc1cmVtO2ZvbnQtc2l6ZTowLjg3NWVtO2NvbG9yOnZhcigtLWJzLWJvZHktYmcpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYm9keS1jb2xvcik7Ym9yZGVyLXJhZGl1czouMjVyZW19a2JkIGtiZHtwYWRkaW5nOjA7Zm9udC1zaXplOjFlbX1maWd1cmV7bWFyZ2luOjAgMCAxcmVtfWltZyxzdmd7dmVydGljYWwtYWxpZ246bWlkZGxlfXRhYmxle2NhcHRpb24tc2lkZTpib3R0b207Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWNhcHRpb257cGFkZGluZy10b3A6LjVyZW07cGFkZGluZy1ib3R0b206LjVyZW07Y29sb3I6IzZjNzU3ZDt0ZXh0LWFsaWduOmxlZnR9dGh7dGV4dC1hbGlnbjppbmhlcml0O3RleHQtYWxpZ246LXdlYmtpdC1tYXRjaC1wYXJlbnR9dGhlYWQsdGJvZHksdGZvb3QsdHIsdGQsdGh7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowfWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfWJ1dHRvbntib3JkZXItcmFkaXVzOjB9YnV0dG9uOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSl7b3V0bGluZTowfWlucHV0LGJ1dHRvbixzZWxlY3Qsb3B0Z3JvdXAsdGV4dGFyZWF7bWFyZ2luOjA7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1bcm9sZT1idXR0b25de2N1cnNvcjpwb2ludGVyfXNlbGVjdHt3b3JkLXdyYXA6bm9ybWFsfXNlbGVjdDpkaXNhYmxlZHtvcGFjaXR5OjF9W2xpc3RdOm5vdChbdHlwZT1kYXRlXSk6bm90KFt0eXBlPWRhdGV0aW1lLWxvY2FsXSk6bm90KFt0eXBlPW1vbnRoXSk6bm90KFt0eXBlPXdlZWtdKTpub3QoW3R5cGU9dGltZV0pOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7ZGlzcGxheTpub25lICFpbXBvcnRhbnR9YnV0dG9uLFt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbn1idXR0b246bm90KDpkaXNhYmxlZCksW3R5cGU9YnV0dG9uXTpub3QoOmRpc2FibGVkKSxbdHlwZT1yZXNldF06bm90KDpkaXNhYmxlZCksW3R5cGU9c3VibWl0XTpub3QoOmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn06Oi1tb3otZm9jdXMtaW5uZXJ7cGFkZGluZzowO2JvcmRlci1zdHlsZTpub25lfXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1maWVsZHNldHttaW4td2lkdGg6MDtwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjB9bGVnZW5ke2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJTtwYWRkaW5nOjA7bWFyZ2luLWJvdHRvbTouNXJlbTtmb250LXNpemU6Y2FsYygxLjI3NXJlbSArIDAuM3Z3KTtsaW5lLWhlaWdodDppbmhlcml0fUBtZWRpYShtaW4td2lkdGg6IDEyMDBweCl7bGVnZW5ke2ZvbnQtc2l6ZToxLjVyZW19fWxlZ2VuZCsqe2NsZWFyOmxlZnR9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtZmllbGRzLXdyYXBwZXIsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtdGV4dCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51dGUsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbW9udGgtZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQteWVhci1maWVsZHtwYWRkaW5nOjB9Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfVt0eXBlPXNlYXJjaF17b3V0bGluZS1vZmZzZXQ6LTJweDstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkfTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06Oi13ZWJraXQtY29sb3Itc3dhdGNoLXdyYXBwZXJ7cGFkZGluZzowfTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Zm9udDppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpidXR0b259b3V0cHV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrfWlmcmFtZXtib3JkZXI6MH1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtO2N1cnNvcjpwb2ludGVyfXByb2dyZXNze3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfVtoaWRkZW5de2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fS5sZWFke2ZvbnQtc2l6ZToxLjI1cmVtO2ZvbnQtd2VpZ2h0OjMwMH0uZGlzcGxheS0xe2ZvbnQtc2l6ZTpjYWxjKDEuNjI1cmVtICsgNC41dncpO2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoxLjJ9QG1lZGlhKG1pbi13aWR0aDogMTIwMHB4KXsuZGlzcGxheS0xe2ZvbnQtc2l6ZTo1cmVtfX0uZGlzcGxheS0ye2ZvbnQtc2l6ZTpjYWxjKDEuNTc1cmVtICsgMy45dncpO2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoxLjJ9QG1lZGlhKG1pbi13aWR0aDogMTIwMHB4KXsuZGlzcGxheS0ye2ZvbnQtc2l6ZTo0LjVyZW19fS5kaXNwbGF5LTN7Zm9udC1zaXplOmNhbGMoMS41MjVyZW0gKyAzLjN2dyk7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMn1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpey5kaXNwbGF5LTN7Zm9udC1zaXplOjRyZW19fS5kaXNwbGF5LTR7Zm9udC1zaXplOmNhbGMoMS40NzVyZW0gKyAyLjd2dyk7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMn1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpey5kaXNwbGF5LTR7Zm9udC1zaXplOjMuNXJlbX19LmRpc3BsYXktNXtmb250LXNpemU6Y2FsYygxLjQyNXJlbSArIDIuMXZ3KTtmb250LXdlaWdodDozMDA7bGluZS1oZWlnaHQ6MS4yfUBtZWRpYShtaW4td2lkdGg6IDEyMDBweCl7LmRpc3BsYXktNXtmb250LXNpemU6M3JlbX19LmRpc3BsYXktNntmb250LXNpemU6Y2FsYygxLjM3NXJlbSArIDEuNXZ3KTtmb250LXdlaWdodDozMDA7bGluZS1oZWlnaHQ6MS4yfUBtZWRpYShtaW4td2lkdGg6IDEyMDBweCl7LmRpc3BsYXktNntmb250LXNpemU6Mi41cmVtfX0ubGlzdC11bnN0eWxlZHtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9Lmxpc3QtaW5saW5le3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZX0ubGlzdC1pbmxpbmUtaXRlbXtkaXNwbGF5OmlubGluZS1ibG9ja30ubGlzdC1pbmxpbmUtaXRlbTpub3QoOmxhc3QtY2hpbGQpe21hcmdpbi1yaWdodDouNXJlbX0uaW5pdGlhbGlzbXtmb250LXNpemU6MC44NzVlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmJsb2NrcXVvdGV7bWFyZ2luLWJvdHRvbToxcmVtO2ZvbnQtc2l6ZToxLjI1cmVtfS5ibG9ja3F1b3RlPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0uYmxvY2txdW90ZS1mb290ZXJ7bWFyZ2luLXRvcDotMXJlbTttYXJnaW4tYm90dG9tOjFyZW07Zm9udC1zaXplOjAuODc1ZW07Y29sb3I6IzZjNzU3ZH0uYmxvY2txdW90ZS1mb290ZXI6OmJlZm9yZXtjb250ZW50OlxcXCLigJTCoFxcXCJ9LmltZy1mbHVpZHttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30uaW1nLXRodW1ibmFpbHtwYWRkaW5nOi4yNXJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1icy1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6LjM3NXJlbTttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30uZmlndXJle2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5maWd1cmUtaW1ne21hcmdpbi1ib3R0b206LjVyZW07bGluZS1oZWlnaHQ6MX0uZmlndXJlLWNhcHRpb257Zm9udC1zaXplOjAuODc1ZW07Y29sb3I6IzZjNzU3ZH0uY29udGFpbmVyLC5jb250YWluZXItZmx1aWQsLmNvbnRhaW5lci14eGwsLmNvbnRhaW5lci14bCwuY29udGFpbmVyLWxnLC5jb250YWluZXItbWQsLmNvbnRhaW5lci1zbXstLWJzLWd1dHRlci14OiAxLjVyZW07LS1icy1ndXR0ZXIteTogMDt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1icy1ndXR0ZXIteCkqLjUpO3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLWJzLWd1dHRlci14KSouNSk7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0b31AbWVkaWEobWluLXdpZHRoOiA1NzZweCl7LmNvbnRhaW5lci1zbSwuY29udGFpbmVye21heC13aWR0aDo1NDBweH19QG1lZGlhKG1pbi13aWR0aDogNzY4cHgpey5jb250YWluZXItbWQsLmNvbnRhaW5lci1zbSwuY29udGFpbmVye21heC13aWR0aDo3MjBweH19QG1lZGlhKG1pbi13aWR0aDogOTkycHgpey5jb250YWluZXItbGcsLmNvbnRhaW5lci1tZCwuY29udGFpbmVyLXNtLC5jb250YWluZXJ7bWF4LXdpZHRoOjk2MHB4fX1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpey5jb250YWluZXIteGwsLmNvbnRhaW5lci1sZywuY29udGFpbmVyLW1kLC5jb250YWluZXItc20sLmNvbnRhaW5lcnttYXgtd2lkdGg6MTE0MHB4fX1AbWVkaWEobWluLXdpZHRoOiAxNDAwcHgpey5jb250YWluZXIteHhsLC5jb250YWluZXIteGwsLmNvbnRhaW5lci1sZywuY29udGFpbmVyLW1kLC5jb250YWluZXItc20sLmNvbnRhaW5lcnttYXgtd2lkdGg6MTMyMHB4fX0ucm93ey0tYnMtZ3V0dGVyLXg6IDEuNXJlbTstLWJzLWd1dHRlci15OiAwO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOmNhbGMoLTEqdmFyKC0tYnMtZ3V0dGVyLXkpKTttYXJnaW4tcmlnaHQ6Y2FsYygtMC41KnZhcigtLWJzLWd1dHRlci14KSk7bWFyZ2luLWxlZnQ6Y2FsYygtMC41KnZhcigtLWJzLWd1dHRlci14KSl9LnJvdz4qe2ZsZXgtc2hyaW5rOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tYnMtZ3V0dGVyLXgpKi41KTtwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1icy1ndXR0ZXIteCkqLjUpO21hcmdpbi10b3A6dmFyKC0tYnMtZ3V0dGVyLXkpfS5jb2x7ZmxleDoxIDAgMCV9LnJvdy1jb2xzLWF1dG8+KntmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LnJvdy1jb2xzLTE+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9LnJvdy1jb2xzLTI+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0ucm93LWNvbHMtMz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMzMyV9LnJvdy1jb2xzLTQ+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0ucm93LWNvbHMtNT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjAlfS5yb3ctY29scy02Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoxNi42NjY2NjY2NjY3JX0uY29sLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvfS5jb2wtMXtmbGV4OjAgMCBhdXRvO3dpZHRoOjguMzMzMzMzMzMlfS5jb2wtMntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLTN7ZmxleDowIDAgYXV0bzt3aWR0aDoyNSV9LmNvbC00e2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMlfS5jb2wtNXtmbGV4OjAgMCBhdXRvO3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLTZ7ZmxleDowIDAgYXV0bzt3aWR0aDo1MCV9LmNvbC03e2ZsZXg6MCAwIGF1dG87d2lkdGg6NTguMzMzMzMzMzMlfS5jb2wtOHtmbGV4OjAgMCBhdXRvO3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLTl7ZmxleDowIDAgYXV0bzt3aWR0aDo3NSV9LmNvbC0xMHtmbGV4OjAgMCBhdXRvO3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLTExe2ZsZXg6MCAwIGF1dG87d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wtMTJ7ZmxleDowIDAgYXV0bzt3aWR0aDoxMDAlfS5vZmZzZXQtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzJX0ub2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjclfS5vZmZzZXQtM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0ub2Zmc2V0LTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjclfS5vZmZzZXQtNnttYXJnaW4tbGVmdDo1MCV9Lm9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0ub2Zmc2V0LTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjclfS5vZmZzZXQtOXttYXJnaW4tbGVmdDo3NSV9Lm9mZnNldC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMyV9Lm9mZnNldC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NyV9LmctMCwuZ3gtMHstLWJzLWd1dHRlci14OiAwfS5nLTAsLmd5LTB7LS1icy1ndXR0ZXIteTogMH0uZy0xLC5neC0xey0tYnMtZ3V0dGVyLXg6IDAuMjVyZW19LmctMSwuZ3ktMXstLWJzLWd1dHRlci15OiAwLjI1cmVtfS5nLTIsLmd4LTJ7LS1icy1ndXR0ZXIteDogMC41cmVtfS5nLTIsLmd5LTJ7LS1icy1ndXR0ZXIteTogMC41cmVtfS5nLTMsLmd4LTN7LS1icy1ndXR0ZXIteDogMXJlbX0uZy0zLC5neS0zey0tYnMtZ3V0dGVyLXk6IDFyZW19LmctNCwuZ3gtNHstLWJzLWd1dHRlci14OiAxLjVyZW19LmctNCwuZ3ktNHstLWJzLWd1dHRlci15OiAxLjVyZW19LmctNSwuZ3gtNXstLWJzLWd1dHRlci14OiAzcmVtfS5nLTUsLmd5LTV7LS1icy1ndXR0ZXIteTogM3JlbX1AbWVkaWEobWluLXdpZHRoOiA1NzZweCl7LmNvbC1zbXtmbGV4OjEgMCAwJX0ucm93LWNvbHMtc20tYXV0bz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30ucm93LWNvbHMtc20tMT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ucm93LWNvbHMtc20tMj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5yb3ctY29scy1zbS0zPip7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMzMzJX0ucm93LWNvbHMtc20tND4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5yb3ctY29scy1zbS01Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyMCV9LnJvdy1jb2xzLXNtLTY+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY2NjclfS5jb2wtc20tYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LmNvbC1zbS0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC1zbS0ye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtc20tM3tmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0uY29sLXNtLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC1zbS01e2ZsZXg6MCAwIGF1dG87d2lkdGg6NDEuNjY2NjY2NjclfS5jb2wtc20tNntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0uY29sLXNtLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC1zbS04e2ZsZXg6MCAwIGF1dG87d2lkdGg6NjYuNjY2NjY2NjclfS5jb2wtc20tOXtmbGV4OjAgMCBhdXRvO3dpZHRoOjc1JX0uY29sLXNtLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wtc20tMTF7ZmxleDowIDAgYXV0bzt3aWR0aDo5MS42NjY2NjY2NyV9LmNvbC1zbS0xMntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9Lm9mZnNldC1zbS0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC1zbS0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5vZmZzZXQtc20tMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NyV9Lm9mZnNldC1zbS0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LXNtLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5vZmZzZXQtc20tNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NyV9Lm9mZnNldC1zbS02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LXNtLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5vZmZzZXQtc20tOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NyV9Lm9mZnNldC1zbS05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LXNtLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0ub2Zmc2V0LXNtLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY3JX0uZy1zbS0wLC5neC1zbS0wey0tYnMtZ3V0dGVyLXg6IDB9Lmctc20tMCwuZ3ktc20tMHstLWJzLWd1dHRlci15OiAwfS5nLXNtLTEsLmd4LXNtLTF7LS1icy1ndXR0ZXIteDogMC4yNXJlbX0uZy1zbS0xLC5neS1zbS0xey0tYnMtZ3V0dGVyLXk6IDAuMjVyZW19Lmctc20tMiwuZ3gtc20tMnstLWJzLWd1dHRlci14OiAwLjVyZW19Lmctc20tMiwuZ3ktc20tMnstLWJzLWd1dHRlci15OiAwLjVyZW19Lmctc20tMywuZ3gtc20tM3stLWJzLWd1dHRlci14OiAxcmVtfS5nLXNtLTMsLmd5LXNtLTN7LS1icy1ndXR0ZXIteTogMXJlbX0uZy1zbS00LC5neC1zbS00ey0tYnMtZ3V0dGVyLXg6IDEuNXJlbX0uZy1zbS00LC5neS1zbS00ey0tYnMtZ3V0dGVyLXk6IDEuNXJlbX0uZy1zbS01LC5neC1zbS01ey0tYnMtZ3V0dGVyLXg6IDNyZW19Lmctc20tNSwuZ3ktc20tNXstLWJzLWd1dHRlci15OiAzcmVtfX1AbWVkaWEobWluLXdpZHRoOiA3NjhweCl7LmNvbC1tZHtmbGV4OjEgMCAwJX0ucm93LWNvbHMtbWQtYXV0bz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30ucm93LWNvbHMtbWQtMT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ucm93LWNvbHMtbWQtMj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5yb3ctY29scy1tZC0zPip7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMzMzJX0ucm93LWNvbHMtbWQtND4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5yb3ctY29scy1tZC01Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyMCV9LnJvdy1jb2xzLW1kLTY+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY2NjclfS5jb2wtbWQtYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LmNvbC1tZC0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC1tZC0ye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtbWQtM3tmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0uY29sLW1kLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC1tZC01e2ZsZXg6MCAwIGF1dG87d2lkdGg6NDEuNjY2NjY2NjclfS5jb2wtbWQtNntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0uY29sLW1kLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC1tZC04e2ZsZXg6MCAwIGF1dG87d2lkdGg6NjYuNjY2NjY2NjclfS5jb2wtbWQtOXtmbGV4OjAgMCBhdXRvO3dpZHRoOjc1JX0uY29sLW1kLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wtbWQtMTF7ZmxleDowIDAgYXV0bzt3aWR0aDo5MS42NjY2NjY2NyV9LmNvbC1tZC0xMntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9Lm9mZnNldC1tZC0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC1tZC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5vZmZzZXQtbWQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NyV9Lm9mZnNldC1tZC0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LW1kLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5vZmZzZXQtbWQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NyV9Lm9mZnNldC1tZC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LW1kLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5vZmZzZXQtbWQtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NyV9Lm9mZnNldC1tZC05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LW1kLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0ub2Zmc2V0LW1kLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY3JX0uZy1tZC0wLC5neC1tZC0wey0tYnMtZ3V0dGVyLXg6IDB9LmctbWQtMCwuZ3ktbWQtMHstLWJzLWd1dHRlci15OiAwfS5nLW1kLTEsLmd4LW1kLTF7LS1icy1ndXR0ZXIteDogMC4yNXJlbX0uZy1tZC0xLC5neS1tZC0xey0tYnMtZ3V0dGVyLXk6IDAuMjVyZW19LmctbWQtMiwuZ3gtbWQtMnstLWJzLWd1dHRlci14OiAwLjVyZW19LmctbWQtMiwuZ3ktbWQtMnstLWJzLWd1dHRlci15OiAwLjVyZW19LmctbWQtMywuZ3gtbWQtM3stLWJzLWd1dHRlci14OiAxcmVtfS5nLW1kLTMsLmd5LW1kLTN7LS1icy1ndXR0ZXIteTogMXJlbX0uZy1tZC00LC5neC1tZC00ey0tYnMtZ3V0dGVyLXg6IDEuNXJlbX0uZy1tZC00LC5neS1tZC00ey0tYnMtZ3V0dGVyLXk6IDEuNXJlbX0uZy1tZC01LC5neC1tZC01ey0tYnMtZ3V0dGVyLXg6IDNyZW19LmctbWQtNSwuZ3ktbWQtNXstLWJzLWd1dHRlci15OiAzcmVtfX1AbWVkaWEobWluLXdpZHRoOiA5OTJweCl7LmNvbC1sZ3tmbGV4OjEgMCAwJX0ucm93LWNvbHMtbGctYXV0bz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30ucm93LWNvbHMtbGctMT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ucm93LWNvbHMtbGctMj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5yb3ctY29scy1sZy0zPip7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMzMzJX0ucm93LWNvbHMtbGctND4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5yb3ctY29scy1sZy01Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyMCV9LnJvdy1jb2xzLWxnLTY+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY2NjclfS5jb2wtbGctYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LmNvbC1sZy0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC1sZy0ye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTYuNjY2NjY2NjclfS5jb2wtbGctM3tmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0uY29sLWxnLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC1sZy01e2ZsZXg6MCAwIGF1dG87d2lkdGg6NDEuNjY2NjY2NjclfS5jb2wtbGctNntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0uY29sLWxnLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC1sZy04e2ZsZXg6MCAwIGF1dG87d2lkdGg6NjYuNjY2NjY2NjclfS5jb2wtbGctOXtmbGV4OjAgMCBhdXRvO3dpZHRoOjc1JX0uY29sLWxnLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wtbGctMTF7ZmxleDowIDAgYXV0bzt3aWR0aDo5MS42NjY2NjY2NyV9LmNvbC1sZy0xMntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9Lm9mZnNldC1sZy0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC1sZy0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMlfS5vZmZzZXQtbGctMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NyV9Lm9mZnNldC1sZy0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LWxnLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMlfS5vZmZzZXQtbGctNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NyV9Lm9mZnNldC1sZy02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LWxnLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMzMzMlfS5vZmZzZXQtbGctOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NyV9Lm9mZnNldC1sZy05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LWxnLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzJX0ub2Zmc2V0LWxnLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY3JX0uZy1sZy0wLC5neC1sZy0wey0tYnMtZ3V0dGVyLXg6IDB9LmctbGctMCwuZ3ktbGctMHstLWJzLWd1dHRlci15OiAwfS5nLWxnLTEsLmd4LWxnLTF7LS1icy1ndXR0ZXIteDogMC4yNXJlbX0uZy1sZy0xLC5neS1sZy0xey0tYnMtZ3V0dGVyLXk6IDAuMjVyZW19LmctbGctMiwuZ3gtbGctMnstLWJzLWd1dHRlci14OiAwLjVyZW19LmctbGctMiwuZ3ktbGctMnstLWJzLWd1dHRlci15OiAwLjVyZW19LmctbGctMywuZ3gtbGctM3stLWJzLWd1dHRlci14OiAxcmVtfS5nLWxnLTMsLmd5LWxnLTN7LS1icy1ndXR0ZXIteTogMXJlbX0uZy1sZy00LC5neC1sZy00ey0tYnMtZ3V0dGVyLXg6IDEuNXJlbX0uZy1sZy00LC5neS1sZy00ey0tYnMtZ3V0dGVyLXk6IDEuNXJlbX0uZy1sZy01LC5neC1sZy01ey0tYnMtZ3V0dGVyLXg6IDNyZW19LmctbGctNSwuZ3ktbGctNXstLWJzLWd1dHRlci15OiAzcmVtfX1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpey5jb2wteGx7ZmxleDoxIDAgMCV9LnJvdy1jb2xzLXhsLWF1dG8+KntmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LnJvdy1jb2xzLXhsLTE+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjEwMCV9LnJvdy1jb2xzLXhsLTI+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjUwJX0ucm93LWNvbHMteGwtMz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMzMyV9LnJvdy1jb2xzLXhsLTQ+KntmbGV4OjAgMCBhdXRvO3dpZHRoOjI1JX0ucm93LWNvbHMteGwtNT4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjAlfS5yb3ctY29scy14bC02Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoxNi42NjY2NjY2NjY3JX0uY29sLXhsLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvfS5jb2wteGwtMXtmbGV4OjAgMCBhdXRvO3dpZHRoOjguMzMzMzMzMzMlfS5jb2wteGwtMntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLXhsLTN7ZmxleDowIDAgYXV0bzt3aWR0aDoyNSV9LmNvbC14bC00e2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMlfS5jb2wteGwtNXtmbGV4OjAgMCBhdXRvO3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLXhsLTZ7ZmxleDowIDAgYXV0bzt3aWR0aDo1MCV9LmNvbC14bC03e2ZsZXg6MCAwIGF1dG87d2lkdGg6NTguMzMzMzMzMzMlfS5jb2wteGwtOHtmbGV4OjAgMCBhdXRvO3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLXhsLTl7ZmxleDowIDAgYXV0bzt3aWR0aDo3NSV9LmNvbC14bC0xMHtmbGV4OjAgMCBhdXRvO3dpZHRoOjgzLjMzMzMzMzMzJX0uY29sLXhsLTExe2ZsZXg6MCAwIGF1dG87d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wteGwtMTJ7ZmxleDowIDAgYXV0bzt3aWR0aDoxMDAlfS5vZmZzZXQteGwtMHttYXJnaW4tbGVmdDowfS5vZmZzZXQteGwtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzJX0ub2Zmc2V0LXhsLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjclfS5vZmZzZXQteGwtM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC14bC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0ub2Zmc2V0LXhsLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjclfS5vZmZzZXQteGwtNnttYXJnaW4tbGVmdDo1MCV9Lm9mZnNldC14bC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0ub2Zmc2V0LXhsLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjY2NjclfS5vZmZzZXQteGwtOXttYXJnaW4tbGVmdDo3NSV9Lm9mZnNldC14bC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMyV9Lm9mZnNldC14bC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NjY2NyV9LmcteGwtMCwuZ3gteGwtMHstLWJzLWd1dHRlci14OiAwfS5nLXhsLTAsLmd5LXhsLTB7LS1icy1ndXR0ZXIteTogMH0uZy14bC0xLC5neC14bC0xey0tYnMtZ3V0dGVyLXg6IDAuMjVyZW19LmcteGwtMSwuZ3kteGwtMXstLWJzLWd1dHRlci15OiAwLjI1cmVtfS5nLXhsLTIsLmd4LXhsLTJ7LS1icy1ndXR0ZXIteDogMC41cmVtfS5nLXhsLTIsLmd5LXhsLTJ7LS1icy1ndXR0ZXIteTogMC41cmVtfS5nLXhsLTMsLmd4LXhsLTN7LS1icy1ndXR0ZXIteDogMXJlbX0uZy14bC0zLC5neS14bC0zey0tYnMtZ3V0dGVyLXk6IDFyZW19LmcteGwtNCwuZ3gteGwtNHstLWJzLWd1dHRlci14OiAxLjVyZW19LmcteGwtNCwuZ3kteGwtNHstLWJzLWd1dHRlci15OiAxLjVyZW19LmcteGwtNSwuZ3gteGwtNXstLWJzLWd1dHRlci14OiAzcmVtfS5nLXhsLTUsLmd5LXhsLTV7LS1icy1ndXR0ZXIteTogM3JlbX19QG1lZGlhKG1pbi13aWR0aDogMTQwMHB4KXsuY29sLXh4bHtmbGV4OjEgMCAwJX0ucm93LWNvbHMteHhsLWF1dG8+KntmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG99LnJvdy1jb2xzLXh4bC0xPip7ZmxleDowIDAgYXV0bzt3aWR0aDoxMDAlfS5yb3ctY29scy14eGwtMj4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5yb3ctY29scy14eGwtMz4qe2ZsZXg6MCAwIGF1dG87d2lkdGg6MzMuMzMzMzMzMzMzMyV9LnJvdy1jb2xzLXh4bC00Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyNSV9LnJvdy1jb2xzLXh4bC01Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoyMCV9LnJvdy1jb2xzLXh4bC02Pip7ZmxleDowIDAgYXV0bzt3aWR0aDoxNi42NjY2NjY2NjY3JX0uY29sLXh4bC1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0b30uY29sLXh4bC0xe2ZsZXg6MCAwIGF1dG87d2lkdGg6OC4zMzMzMzMzMyV9LmNvbC14eGwtMntmbGV4OjAgMCBhdXRvO3dpZHRoOjE2LjY2NjY2NjY3JX0uY29sLXh4bC0ze2ZsZXg6MCAwIGF1dG87d2lkdGg6MjUlfS5jb2wteHhsLTR7ZmxleDowIDAgYXV0bzt3aWR0aDozMy4zMzMzMzMzMyV9LmNvbC14eGwtNXtmbGV4OjAgMCBhdXRvO3dpZHRoOjQxLjY2NjY2NjY3JX0uY29sLXh4bC02e2ZsZXg6MCAwIGF1dG87d2lkdGg6NTAlfS5jb2wteHhsLTd7ZmxleDowIDAgYXV0bzt3aWR0aDo1OC4zMzMzMzMzMyV9LmNvbC14eGwtOHtmbGV4OjAgMCBhdXRvO3dpZHRoOjY2LjY2NjY2NjY3JX0uY29sLXh4bC05e2ZsZXg6MCAwIGF1dG87d2lkdGg6NzUlfS5jb2wteHhsLTEwe2ZsZXg6MCAwIGF1dG87d2lkdGg6ODMuMzMzMzMzMzMlfS5jb2wteHhsLTExe2ZsZXg6MCAwIGF1dG87d2lkdGg6OTEuNjY2NjY2NjclfS5jb2wteHhsLTEye2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0ub2Zmc2V0LXh4bC0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC14eGwtMXttYXJnaW4tbGVmdDo4LjMzMzMzMzMzJX0ub2Zmc2V0LXh4bC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2NjY3JX0ub2Zmc2V0LXh4bC0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LXh4bC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzMzMzJX0ub2Zmc2V0LXh4bC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NjY3JX0ub2Zmc2V0LXh4bC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LXh4bC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzJX0ub2Zmc2V0LXh4bC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY3JX0ub2Zmc2V0LXh4bC05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LXh4bC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMyV9Lm9mZnNldC14eGwtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjclfS5nLXh4bC0wLC5neC14eGwtMHstLWJzLWd1dHRlci14OiAwfS5nLXh4bC0wLC5neS14eGwtMHstLWJzLWd1dHRlci15OiAwfS5nLXh4bC0xLC5neC14eGwtMXstLWJzLWd1dHRlci14OiAwLjI1cmVtfS5nLXh4bC0xLC5neS14eGwtMXstLWJzLWd1dHRlci15OiAwLjI1cmVtfS5nLXh4bC0yLC5neC14eGwtMnstLWJzLWd1dHRlci14OiAwLjVyZW19LmcteHhsLTIsLmd5LXh4bC0yey0tYnMtZ3V0dGVyLXk6IDAuNXJlbX0uZy14eGwtMywuZ3gteHhsLTN7LS1icy1ndXR0ZXIteDogMXJlbX0uZy14eGwtMywuZ3kteHhsLTN7LS1icy1ndXR0ZXIteTogMXJlbX0uZy14eGwtNCwuZ3gteHhsLTR7LS1icy1ndXR0ZXIteDogMS41cmVtfS5nLXh4bC00LC5neS14eGwtNHstLWJzLWd1dHRlci15OiAxLjVyZW19LmcteHhsLTUsLmd4LXh4bC01ey0tYnMtZ3V0dGVyLXg6IDNyZW19LmcteHhsLTUsLmd5LXh4bC01ey0tYnMtZ3V0dGVyLXk6IDNyZW19fS5idG57LS1icy1idG4tcGFkZGluZy14OiAwLjc1cmVtOy0tYnMtYnRuLXBhZGRpbmcteTogMC4zNzVyZW07LS1icy1idG4tZm9udC1mYW1pbHk6IDstLWJzLWJ0bi1mb250LXNpemU6MXJlbTstLWJzLWJ0bi1mb250LXdlaWdodDogNDAwOy0tYnMtYnRuLWxpbmUtaGVpZ2h0OiAxLjU7LS1icy1idG4tY29sb3I6ICMyMTI1Mjk7LS1icy1idG4tYmc6IHRyYW5zcGFyZW50Oy0tYnMtYnRuLWJvcmRlci13aWR0aDogMXB4Oy0tYnMtYnRuLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7LS1icy1idG4tYm9yZGVyLXJhZGl1czogMC4zNzVyZW07LS1icy1idG4tYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpLCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7LS1icy1idG4tZGlzYWJsZWQtb3BhY2l0eTogMC42NTstLWJzLWJ0bi1mb2N1cy1ib3gtc2hhZG93OiAwIDAgMCAwLjI1cmVtIHJnYmEodmFyKC0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2IpLCAuNSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzp2YXIoLS1icy1idG4tcGFkZGluZy15KSB2YXIoLS1icy1idG4tcGFkZGluZy14KTtmb250LWZhbWlseTp2YXIoLS1icy1idG4tZm9udC1mYW1pbHkpO2ZvbnQtc2l6ZTp2YXIoLS1icy1idG4tZm9udC1zaXplKTtmb250LXdlaWdodDp2YXIoLS1icy1idG4tZm9udC13ZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLWJzLWJ0bi1saW5lLWhlaWdodCk7Y29sb3I6dmFyKC0tYnMtYnRuLWNvbG9yKTt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXI7dXNlci1zZWxlY3Q6bm9uZTtib3JkZXI6dmFyKC0tYnMtYnRuLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYnMtYnRuLWJvcmRlci1jb2xvcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1icy1idG4tYm9yZGVyLXJhZGl1cyk7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1idG4tYmcpO3RyYW5zaXRpb246Y29sb3IgLjE1cyBlYXNlLWluLW91dCxiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0fUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upey5idG57dHJhbnNpdGlvbjpub25lfX0uYnRuOmhvdmVye2NvbG9yOnZhcigtLWJzLWJ0bi1ob3Zlci1jb2xvcik7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1idG4taG92ZXItYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yKX0uYnRuLWNoZWNrOmZvY3VzKy5idG4sLmJ0bjpmb2N1c3tjb2xvcjp2YXIoLS1icy1idG4taG92ZXItY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYnRuLWhvdmVyLWJnKTtib3JkZXItY29sb3I6dmFyKC0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcik7b3V0bGluZTowO2JveC1zaGFkb3c6dmFyKC0tYnMtYnRuLWZvY3VzLWJveC1zaGFkb3cpfS5idG4tY2hlY2s6Y2hlY2tlZCsuYnRuLC5idG4tY2hlY2s6YWN0aXZlKy5idG4sLmJ0bjphY3RpdmUsLmJ0bi5hY3RpdmUsLmJ0bi5zaG93e2NvbG9yOnZhcigtLWJzLWJ0bi1hY3RpdmUtY29sb3IpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYnRuLWFjdGl2ZS1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yKX0uYnRuLWNoZWNrOmNoZWNrZWQrLmJ0bjpmb2N1cywuYnRuLWNoZWNrOmFjdGl2ZSsuYnRuOmZvY3VzLC5idG46YWN0aXZlOmZvY3VzLC5idG4uYWN0aXZlOmZvY3VzLC5idG4uc2hvdzpmb2N1c3tib3gtc2hhZG93OnZhcigtLWJzLWJ0bi1mb2N1cy1ib3gtc2hhZG93KX0uYnRuOmRpc2FibGVkLC5idG4uZGlzYWJsZWQsZmllbGRzZXQ6ZGlzYWJsZWQgLmJ0bntjb2xvcjp2YXIoLS1icy1idG4tZGlzYWJsZWQtY29sb3IpO3BvaW50ZXItZXZlbnRzOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1icy1idG4tZGlzYWJsZWQtYmcpO2JvcmRlci1jb2xvcjp2YXIoLS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yKTtvcGFjaXR5OnZhcigtLWJzLWJ0bi1kaXNhYmxlZC1vcGFjaXR5KX0uYnRuLXByaW1hcnl7LS1icy1idG4tY29sb3I6ICNmZmY7LS1icy1idG4tYmc6ICMwZDZlZmQ7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjMGQ2ZWZkOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiAjMGI1ZWQ3Oy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzBhNThjYTstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiA0OSwgMTMyLCAyNTM7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzogIzBhNThjYTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjMGE1M2JlOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogI2ZmZjstLWJzLWJ0bi1kaXNhYmxlZC1iZzogIzBkNmVmZDstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICMwZDZlZmR9LmJ0bi1zZWNvbmRhcnl7LS1icy1idG4tY29sb3I6ICNmZmY7LS1icy1idG4tYmc6ICM2Yzc1N2Q7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjNmM3NTdkOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiAjNWM2MzZhOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzU2NWU2NDstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAxMzAsIDEzOCwgMTQ1Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjogI2ZmZjstLWJzLWJ0bi1hY3RpdmUtYmc6ICM1NjVlNjQ7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogIzUxNTg1ZTstLWJzLWJ0bi1hY3RpdmUtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6ICNmZmY7LS1icy1idG4tZGlzYWJsZWQtYmc6ICM2Yzc1N2Q7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjNmM3NTdkfS5idG4tc3VjY2Vzc3stLWJzLWJ0bi1jb2xvcjogI2ZmZjstLWJzLWJ0bi1iZzogIzE5ODc1NDstLWJzLWJ0bi1ib3JkZXItY29sb3I6ICMxOTg3NTQ7LS1icy1idG4taG92ZXItY29sb3I6ICNmZmY7LS1icy1idG4taG92ZXItYmc6ICMxNTczNDc7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiAjMTQ2YzQzOy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6IDYwLCAxNTMsIDExMDstLWJzLWJ0bi1hY3RpdmUtY29sb3I6ICNmZmY7LS1icy1idG4tYWN0aXZlLWJnOiAjMTQ2YzQzOy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICMxMzY1M2Y7LS1icy1idG4tYWN0aXZlLXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWRpc2FibGVkLWJnOiAjMTk4NzU0Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogIzE5ODc1NH0uYnRuLWluZm97LS1icy1idG4tY29sb3I6ICMwMDA7LS1icy1idG4tYmc6ICMwZGNhZjA7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjMGRjYWYwOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWhvdmVyLWJnOiAjMzFkMmYyOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzI1Y2ZmMjstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAxMSwgMTcyLCAyMDQ7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWFjdGl2ZS1iZzogIzNkZDVmMzstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjMjVjZmYyOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogIzAwMDstLWJzLWJ0bi1kaXNhYmxlZC1iZzogIzBkY2FmMDstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICMwZGNhZjB9LmJ0bi13YXJuaW5ney0tYnMtYnRuLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWJnOiAjZmZjMTA3Oy0tYnMtYnRuLWJvcmRlci1jb2xvcjogI2ZmYzEwNzstLWJzLWJ0bi1ob3Zlci1jb2xvcjogIzAwMDstLWJzLWJ0bi1ob3Zlci1iZzogI2ZmY2EyYzstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICNmZmM3MjA7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMjE3LCAxNjQsIDY7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWFjdGl2ZS1iZzogI2ZmY2QzOTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjZmZjNzIwOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogIzAwMDstLWJzLWJ0bi1kaXNhYmxlZC1iZzogI2ZmYzEwNzstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICNmZmMxMDd9LmJ0bi1kYW5nZXJ7LS1icy1idG4tY29sb3I6ICNmZmY7LS1icy1idG4tYmc6ICNkYzM1NDU7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Oy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiAjYmIyZDNiOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogI2IwMmEzNzstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAyMjUsIDgzLCA5NzstLWJzLWJ0bi1hY3RpdmUtY29sb3I6ICNmZmY7LS1icy1idG4tYWN0aXZlLWJnOiAjYjAyYTM3Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICNhNTI4MzQ7LS1icy1idG4tYWN0aXZlLXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWRpc2FibGVkLWJnOiAjZGMzNTQ1Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogI2RjMzU0NX0uYnRuLWxpZ2h0ey0tYnMtYnRuLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWJnOiAjZjhmOWZhOy0tYnMtYnRuLWJvcmRlci1jb2xvcjogI2Y4ZjlmYTstLWJzLWJ0bi1ob3Zlci1jb2xvcjogIzAwMDstLWJzLWJ0bi1ob3Zlci1iZzogI2QzZDRkNTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICNjNmM3Yzg7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMjExLCAyMTIsIDIxMzstLWJzLWJ0bi1hY3RpdmUtY29sb3I6ICMwMDA7LS1icy1idG4tYWN0aXZlLWJnOiAjYzZjN2M4Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICNiYWJiYmM7LS1icy1idG4tYWN0aXZlLXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWRpc2FibGVkLWJnOiAjZjhmOWZhOy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogI2Y4ZjlmYX0uYnRuLWRhcmt7LS1icy1idG4tY29sb3I6ICNmZmY7LS1icy1idG4tYmc6ICMyMTI1Mjk7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjMjEyNTI5Oy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiAjNDI0NjQ5Oy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzM3M2IzZTstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiA2NiwgNzAsIDczOy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjogI2ZmZjstLWJzLWJ0bi1hY3RpdmUtYmc6ICM0ZDUxNTQ7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogIzM3M2IzZTstLWJzLWJ0bi1hY3RpdmUtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6ICNmZmY7LS1icy1idG4tZGlzYWJsZWQtYmc6ICMyMTI1Mjk7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjMjEyNTI5fS5idG4tb3V0bGluZS1wcmltYXJ5ey0tYnMtYnRuLWNvbG9yOiAjMGQ2ZWZkOy0tYnMtYnRuLWJvcmRlci1jb2xvcjogIzBkNmVmZDstLWJzLWJ0bi1ob3Zlci1jb2xvcjogI2ZmZjstLWJzLWJ0bi1ob3Zlci1iZzogIzBkNmVmZDstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICMwZDZlZmQ7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMTMsIDExMCwgMjUzOy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjogI2ZmZjstLWJzLWJ0bi1hY3RpdmUtYmc6ICMwZDZlZmQ7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogIzBkNmVmZDstLWJzLWJ0bi1hY3RpdmUtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6ICMwZDZlZmQ7LS1icy1idG4tZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogIzBkNmVmZDstLWJzLWdyYWRpZW50OiBub25lfS5idG4tb3V0bGluZS1zZWNvbmRhcnl7LS1icy1idG4tY29sb3I6ICM2Yzc1N2Q7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjNmM3NTdkOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWhvdmVyLWJnOiAjNmM3NTdkOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzZjNzU3ZDstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAxMDgsIDExNywgMTI1Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjogI2ZmZjstLWJzLWJ0bi1hY3RpdmUtYmc6ICM2Yzc1N2Q7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogIzZjNzU3ZDstLWJzLWJ0bi1hY3RpdmUtc2hhZG93OiBpbnNldCAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyNSk7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6ICM2Yzc1N2Q7LS1icy1idG4tZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50Oy0tYnMtYnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogIzZjNzU3ZDstLWJzLWdyYWRpZW50OiBub25lfS5idG4tb3V0bGluZS1zdWNjZXNzey0tYnMtYnRuLWNvbG9yOiAjMTk4NzU0Oy0tYnMtYnRuLWJvcmRlci1jb2xvcjogIzE5ODc1NDstLWJzLWJ0bi1ob3Zlci1jb2xvcjogI2ZmZjstLWJzLWJ0bi1ob3Zlci1iZzogIzE5ODc1NDstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICMxOTg3NTQ7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMjUsIDEzNSwgODQ7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzogIzE5ODc1NDstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjMTk4NzU0Oy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogIzE5ODc1NDstLWJzLWJ0bi1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjMTk4NzU0Oy0tYnMtZ3JhZGllbnQ6IG5vbmV9LmJ0bi1vdXRsaW5lLWluZm97LS1icy1idG4tY29sb3I6ICMwZGNhZjA7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjMGRjYWYwOy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWhvdmVyLWJnOiAjMGRjYWYwOy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogIzBkY2FmMDstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAxMywgMjAyLCAyNDA7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWFjdGl2ZS1iZzogIzBkY2FmMDstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjMGRjYWYwOy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogIzBkY2FmMDstLWJzLWJ0bi1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjMGRjYWYwOy0tYnMtZ3JhZGllbnQ6IG5vbmV9LmJ0bi1vdXRsaW5lLXdhcm5pbmd7LS1icy1idG4tY29sb3I6ICNmZmMxMDc7LS1icy1idG4tYm9yZGVyLWNvbG9yOiAjZmZjMTA3Oy0tYnMtYnRuLWhvdmVyLWNvbG9yOiAjMDAwOy0tYnMtYnRuLWhvdmVyLWJnOiAjZmZjMTA3Oy0tYnMtYnRuLWhvdmVyLWJvcmRlci1jb2xvcjogI2ZmYzEwNzstLWJzLWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAyNTUsIDE5MywgNzstLWJzLWJ0bi1hY3RpdmUtY29sb3I6ICMwMDA7LS1icy1idG4tYWN0aXZlLWJnOiAjZmZjMTA3Oy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICNmZmMxMDc7LS1icy1idG4tYWN0aXZlLXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiAjZmZjMTA3Oy0tYnMtYnRuLWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudDstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICNmZmMxMDc7LS1icy1ncmFkaWVudDogbm9uZX0uYnRuLW91dGxpbmUtZGFuZ2Vyey0tYnMtYnRuLWNvbG9yOiAjZGMzNTQ1Oy0tYnMtYnRuLWJvcmRlci1jb2xvcjogI2RjMzU0NTstLWJzLWJ0bi1ob3Zlci1jb2xvcjogI2ZmZjstLWJzLWJ0bi1ob3Zlci1iZzogI2RjMzU0NTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICNkYzM1NDU7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMjIwLCA1MywgNjk7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzogI2RjMzU0NTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Oy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogI2RjMzU0NTstLWJzLWJ0bi1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Oy0tYnMtZ3JhZGllbnQ6IG5vbmV9LmJ0bi1vdXRsaW5lLWxpZ2h0ey0tYnMtYnRuLWNvbG9yOiAjZjhmOWZhOy0tYnMtYnRuLWJvcmRlci1jb2xvcjogI2Y4ZjlmYTstLWJzLWJ0bi1ob3Zlci1jb2xvcjogIzAwMDstLWJzLWJ0bi1ob3Zlci1iZzogI2Y4ZjlmYTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICNmOGY5ZmE7LS1icy1idG4tZm9jdXMtc2hhZG93LXJnYjogMjQ4LCAyNDksIDI1MDstLWJzLWJ0bi1hY3RpdmUtY29sb3I6ICMwMDA7LS1icy1idG4tYWN0aXZlLWJnOiAjZjhmOWZhOy0tYnMtYnRuLWFjdGl2ZS1ib3JkZXItY29sb3I6ICNmOGY5ZmE7LS1icy1idG4tYWN0aXZlLXNoYWRvdzogaW5zZXQgMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMjUpOy0tYnMtYnRuLWRpc2FibGVkLWNvbG9yOiAjZjhmOWZhOy0tYnMtYnRuLWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudDstLWJzLWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICNmOGY5ZmE7LS1icy1ncmFkaWVudDogbm9uZX0uYnRuLW91dGxpbmUtZGFya3stLWJzLWJ0bi1jb2xvcjogIzIxMjUyOTstLWJzLWJ0bi1ib3JkZXItY29sb3I6ICMyMTI1Mjk7LS1icy1idG4taG92ZXItY29sb3I6ICNmZmY7LS1icy1idG4taG92ZXItYmc6ICMyMTI1Mjk7LS1icy1idG4taG92ZXItYm9yZGVyLWNvbG9yOiAjMjEyNTI5Oy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6IDMzLCAzNywgNDE7LS1icy1idG4tYWN0aXZlLWNvbG9yOiAjZmZmOy0tYnMtYnRuLWFjdGl2ZS1iZzogIzIxMjUyOTstLWJzLWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjMjEyNTI5Oy0tYnMtYnRuLWFjdGl2ZS1zaGFkb3c6IGluc2V0IDAgM3B4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTI1KTstLWJzLWJ0bi1kaXNhYmxlZC1jb2xvcjogIzIxMjUyOTstLWJzLWJ0bi1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAjMjEyNTI5Oy0tYnMtZ3JhZGllbnQ6IG5vbmV9LmJ0bi1saW5rey0tYnMtYnRuLWZvbnQtd2VpZ2h0OiA0MDA7LS1icy1idG4tY29sb3I6IHZhcigtLWJzLWxpbmstY29sb3IpOy0tYnMtYnRuLWJnOiB0cmFuc3BhcmVudDstLWJzLWJ0bi1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Oy0tYnMtYnRuLWhvdmVyLWNvbG9yOiB2YXIoLS1icy1saW5rLWhvdmVyLWNvbG9yKTstLWJzLWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Oy0tYnMtYnRuLWFjdGl2ZS1jb2xvcjogdmFyKC0tYnMtbGluay1ob3Zlci1jb2xvcik7LS1icy1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7LS1icy1idG4tZGlzYWJsZWQtY29sb3I6ICM2Yzc1N2Q7LS1icy1idG4tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDstLWJzLWJ0bi1ib3gtc2hhZG93OiBub25lOy0tYnMtYnRuLWZvY3VzLXNoYWRvdy1yZ2I6IDQ5LCAxMzIsIDI1Mzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5idG4tbGluazpmb2N1c3tjb2xvcjp2YXIoLS1icy1idG4tY29sb3IpfS5idG4tbGluazpob3Zlcntjb2xvcjp2YXIoLS1icy1idG4taG92ZXItY29sb3IpfS5idG4tbGd7LS1icy1idG4tcGFkZGluZy15OiAwLjVyZW07LS1icy1idG4tcGFkZGluZy14OiAxcmVtOy0tYnMtYnRuLWZvbnQtc2l6ZToxLjI1cmVtOy0tYnMtYnRuLWJvcmRlci1yYWRpdXM6IDAuNXJlbX0uYnRuLXNtey0tYnMtYnRuLXBhZGRpbmcteTogMC4yNXJlbTstLWJzLWJ0bi1wYWRkaW5nLXg6IDAuNXJlbTstLWJzLWJ0bi1mb250LXNpemU6MC44NzVyZW07LS1icy1idG4tYm9yZGVyLXJhZGl1czogMC4yNXJlbX0uZmFkZXt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBsaW5lYXJ9QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7LmZhZGV7dHJhbnNpdGlvbjpub25lfX0uZmFkZTpub3QoLnNob3cpe29wYWNpdHk6MH0uY29sbGFwc2U6bm90KC5zaG93KXtkaXNwbGF5Om5vbmV9LmNvbGxhcHNpbmd7aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246aGVpZ2h0IC4zNXMgZWFzZX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsuY29sbGFwc2luZ3t0cmFuc2l0aW9uOm5vbmV9fS5jb2xsYXBzaW5nLmNvbGxhcHNlLWhvcml6b250YWx7d2lkdGg6MDtoZWlnaHQ6YXV0bzt0cmFuc2l0aW9uOndpZHRoIC4zNXMgZWFzZX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsuY29sbGFwc2luZy5jb2xsYXBzZS1ob3Jpem9udGFse3RyYW5zaXRpb246bm9uZX19QGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3swJXtiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6MXJlbX19LnByb2dyZXNzey0tYnMtcHJvZ3Jlc3MtaGVpZ2h0OiAxcmVtOy0tYnMtcHJvZ3Jlc3MtZm9udC1zaXplOjAuNzVyZW07LS1icy1wcm9ncmVzcy1iZzogI2U5ZWNlZjstLWJzLXByb2dyZXNzLWJvcmRlci1yYWRpdXM6IDAuMzc1cmVtOy0tYnMtcHJvZ3Jlc3MtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOy0tYnMtcHJvZ3Jlc3MtYmFyLWNvbG9yOiAjZmZmOy0tYnMtcHJvZ3Jlc3MtYmFyLWJnOiAjMGQ2ZWZkOy0tYnMtcHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb246IHdpZHRoIDAuNnMgZWFzZTtkaXNwbGF5OmZsZXg7aGVpZ2h0OnZhcigtLWJzLXByb2dyZXNzLWhlaWdodCk7b3ZlcmZsb3c6aGlkZGVuO2ZvbnQtc2l6ZTp2YXIoLS1icy1wcm9ncmVzcy1mb250LXNpemUpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtcHJvZ3Jlc3MtYmcpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtcHJvZ3Jlc3MtYm9yZGVyLXJhZGl1cyl9LnByb2dyZXNzLWJhcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnZhcigtLWJzLXByb2dyZXNzLWJhci1jb2xvcik7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtcHJvZ3Jlc3MtYmFyLWJnKTt0cmFuc2l0aW9uOnZhcigtLWJzLXByb2dyZXNzLWJhci10cmFuc2l0aW9uKX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsucHJvZ3Jlc3MtYmFye3RyYW5zaXRpb246bm9uZX19LnByb2dyZXNzLWJhci1zdHJpcGVke2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1zaXplOnZhcigtLWJzLXByb2dyZXNzLWhlaWdodCkgdmFyKC0tYnMtcHJvZ3Jlc3MtaGVpZ2h0KX0ucHJvZ3Jlc3MtYmFyLWFuaW1hdGVke2FuaW1hdGlvbjoxcyBsaW5lYXIgaW5maW5pdGUgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN9QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7LnByb2dyZXNzLWJhci1hbmltYXRlZHthbmltYXRpb246bm9uZX19LmJ0bi1jbG9zZXtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3dpZHRoOjFlbTtoZWlnaHQ6MWVtO3BhZGRpbmc6LjI1ZW0gLjI1ZW07Y29sb3I6IzAwMDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCkgdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSclMjMwMDAnJTNlJTNjcGF0aCBkPSdNLjI5My4yOTNhMSAxIDAgMCAxIDEuNDE0IDBMOCA2LjU4NiAxNC4yOTMuMjkzYTEgMSAwIDEgMSAxLjQxNCAxLjQxNEw5LjQxNCA4bDYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNCAxLjQxNEw4IDkuNDE0bC02LjI5MyA2LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTRMNi41ODYgOCAuMjkzIDEuNzA3YTEgMSAwIDAgMSAwLTEuNDE0eicvJTNlJTNjL3N2ZyUzZVxcXCIpIGNlbnRlci8xZW0gYXV0byBuby1yZXBlYXQ7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czouMzc1cmVtO29wYWNpdHk6LjV9LmJ0bi1jbG9zZTpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO29wYWNpdHk6Ljc1fS5idG4tY2xvc2U6Zm9jdXN7b3V0bGluZTowO2JveC1zaGFkb3c6MCAwIDAgLjI1cmVtIHJnYmEoMTMsMTEwLDI1MywuMjUpO29wYWNpdHk6MX0uYnRuLWNsb3NlOmRpc2FibGVkLC5idG4tY2xvc2UuZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZTt1c2VyLXNlbGVjdDpub25lO29wYWNpdHk6LjI1fS5idG4tY2xvc2Utd2hpdGV7ZmlsdGVyOmludmVydCgxKSBncmF5c2NhbGUoMTAwJSkgYnJpZ2h0bmVzcygyMDAlKX0ubW9kYWx7LS1icy1tb2RhbC16aW5kZXg6IDEwNTU7LS1icy1tb2RhbC13aWR0aDogNTAwcHg7LS1icy1tb2RhbC1wYWRkaW5nOiAxcmVtOy0tYnMtbW9kYWwtbWFyZ2luOiAwLjVyZW07LS1icy1tb2RhbC1jb2xvcjogOy0tYnMtbW9kYWwtYmc6ICNmZmY7LS1icy1tb2RhbC1ib3JkZXItY29sb3I6IHZhcigtLWJzLWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCk7LS1icy1tb2RhbC1ib3JkZXItd2lkdGg6IDFweDstLWJzLW1vZGFsLWJvcmRlci1yYWRpdXM6IDAuNXJlbTstLWJzLW1vZGFsLWJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDAsIDAsIDAsIDAuMDc1KTstLWJzLW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXM6IGNhbGMoMC41cmVtIC0gMXB4KTstLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nLXg6IDFyZW07LS1icy1tb2RhbC1oZWFkZXItcGFkZGluZy15OiAxcmVtOy0tYnMtbW9kYWwtaGVhZGVyLXBhZGRpbmc6IDFyZW0gMXJlbTstLWJzLW1vZGFsLWhlYWRlci1ib3JkZXItY29sb3I6IHZhcigtLWJzLWJvcmRlci1jb2xvcik7LS1icy1tb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoOiAxcHg7LS1icy1tb2RhbC10aXRsZS1saW5lLWhlaWdodDogMS41Oy0tYnMtbW9kYWwtZm9vdGVyLWdhcDogMC41cmVtOy0tYnMtbW9kYWwtZm9vdGVyLWJnOiA7LS1icy1tb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yOiB2YXIoLS1icy1ib3JkZXItY29sb3IpOy0tYnMtbW9kYWwtZm9vdGVyLWJvcmRlci13aWR0aDogMXB4O3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt6LWluZGV4OnZhcigtLWJzLW1vZGFsLXppbmRleCk7ZGlzcGxheTpub25lO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvO291dGxpbmU6MH0ubW9kYWwtZGlhbG9ne3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOmF1dG87bWFyZ2luOnZhcigtLWJzLW1vZGFsLW1hcmdpbik7cG9pbnRlci1ldmVudHM6bm9uZX0ubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9ne3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlLW91dDt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsIC01MHB4KX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXsubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9ne3RyYW5zaXRpb246bm9uZX19Lm1vZGFsLnNob3cgLm1vZGFsLWRpYWxvZ3t0cmFuc2Zvcm06bm9uZX0ubW9kYWwubW9kYWwtc3RhdGljIC5tb2RhbC1kaWFsb2d7dHJhbnNmb3JtOnNjYWxlKDEuMDIpfS5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZXtoZWlnaHQ6Y2FsYygxMDAlIC0gdmFyKC0tYnMtbW9kYWwtbWFyZ2luKSoyKX0ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWNvbnRlbnR7bWF4LWhlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0ubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWJvZHl7b3ZlcmZsb3cteTphdXRvfS5tb2RhbC1kaWFsb2ctY2VudGVyZWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OmNhbGMoMTAwJSAtIHZhcigtLWJzLW1vZGFsLW1hcmdpbikqMil9Lm1vZGFsLWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoxMDAlO2NvbG9yOnZhcigtLWJzLW1vZGFsLWNvbG9yKTtwb2ludGVyLWV2ZW50czphdXRvO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtbW9kYWwtYmcpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtib3JkZXI6dmFyKC0tYnMtbW9kYWwtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1tb2RhbC1ib3JkZXItY29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tYnMtbW9kYWwtYm9yZGVyLXJhZGl1cyk7b3V0bGluZTowfS5tb2RhbC1iYWNrZHJvcHstLWJzLWJhY2tkcm9wLXppbmRleDogMTA1MDstLWJzLWJhY2tkcm9wLWJnOiAjMDAwOy0tYnMtYmFja2Ryb3Atb3BhY2l0eTogMC41O3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt6LWluZGV4OnZhcigtLWJzLWJhY2tkcm9wLXppbmRleCk7d2lkdGg6MTAwdnc7aGVpZ2h0OjEwMHZoO2JhY2tncm91bmQtY29sb3I6dmFyKC0tYnMtYmFja2Ryb3AtYmcpfS5tb2RhbC1iYWNrZHJvcC5mYWRle29wYWNpdHk6MH0ubW9kYWwtYmFja2Ryb3Auc2hvd3tvcGFjaXR5OnZhcigtLWJzLWJhY2tkcm9wLW9wYWNpdHkpfS5tb2RhbC1oZWFkZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtc2hyaW5rOjA7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6dmFyKC0tYnMtbW9kYWwtaGVhZGVyLXBhZGRpbmcpO2JvcmRlci1ib3R0b206dmFyKC0tYnMtbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYnMtbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcik7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czp2YXIoLS1icy1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKX0ubW9kYWwtaGVhZGVyIC5idG4tY2xvc2V7cGFkZGluZzpjYWxjKHZhcigtLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nLXkpKi41KSBjYWxjKHZhcigtLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nLXgpKi41KTttYXJnaW46Y2FsYyh2YXIoLS1icy1tb2RhbC1oZWFkZXItcGFkZGluZy15KSotMC41KSBjYWxjKHZhcigtLWJzLW1vZGFsLWhlYWRlci1wYWRkaW5nLXgpKi0wLjUpIGNhbGModmFyKC0tYnMtbW9kYWwtaGVhZGVyLXBhZGRpbmcteSkqLTAuNSkgYXV0b30ubW9kYWwtdGl0bGV7bWFyZ2luLWJvdHRvbTowO2xpbmUtaGVpZ2h0OnZhcigtLWJzLW1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0KX0ubW9kYWwtYm9keXtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6dmFyKC0tYnMtbW9kYWwtcGFkZGluZyl9Lm1vZGFsLWZvb3RlcntkaXNwbGF5OmZsZXg7ZmxleC1zaHJpbms6MDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmc6Y2FsYyh2YXIoLS1icy1tb2RhbC1wYWRkaW5nKSAtIHZhcigtLWJzLW1vZGFsLWZvb3Rlci1nYXApKi41KTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJzLW1vZGFsLWZvb3Rlci1iZyk7Ym9yZGVyLXRvcDp2YXIoLS1icy1tb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1icy1tb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yKTtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czp2YXIoLS1icy1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOnZhcigtLWJzLW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXMpfS5tb2RhbC1mb290ZXI+KnttYXJnaW46Y2FsYyh2YXIoLS1icy1tb2RhbC1mb290ZXItZ2FwKSouNSl9QG1lZGlhKG1pbi13aWR0aDogNTc2cHgpey5tb2RhbHstLWJzLW1vZGFsLW1hcmdpbjogMS43NXJlbTstLWJzLW1vZGFsLWJveC1zaGFkb3c6IDAgMC41cmVtIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjE1KX0ubW9kYWwtZGlhbG9ne21heC13aWR0aDp2YXIoLS1icy1tb2RhbC13aWR0aCk7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0b30ubW9kYWwtc217LS1icy1tb2RhbC13aWR0aDogMzAwcHh9fUBtZWRpYShtaW4td2lkdGg6IDk5MnB4KXsubW9kYWwtbGcsLm1vZGFsLXhsey0tYnMtbW9kYWwtd2lkdGg6IDgwMHB4fX1AbWVkaWEobWluLXdpZHRoOiAxMjAwcHgpey5tb2RhbC14bHstLWJzLW1vZGFsLXdpZHRoOiAxMTQwcHh9fS5tb2RhbC1mdWxsc2NyZWVue3dpZHRoOjEwMHZ3O21heC13aWR0aDpub25lO2hlaWdodDoxMDAlO21hcmdpbjowfS5tb2RhbC1mdWxsc2NyZWVuIC5tb2RhbC1jb250ZW50e2hlaWdodDoxMDAlO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MH0ubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtaGVhZGVyLC5tb2RhbC1mdWxsc2NyZWVuIC5tb2RhbC1mb290ZXJ7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuIC5tb2RhbC1ib2R5e292ZXJmbG93LXk6YXV0b31AbWVkaWEobWF4LXdpZHRoOiA1NzUuOThweCl7Lm1vZGFsLWZ1bGxzY3JlZW4tc20tZG93bnt3aWR0aDoxMDB2dzttYXgtd2lkdGg6bm9uZTtoZWlnaHQ6MTAwJTttYXJnaW46MH0ubW9kYWwtZnVsbHNjcmVlbi1zbS1kb3duIC5tb2RhbC1jb250ZW50e2hlaWdodDoxMDAlO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MH0ubW9kYWwtZnVsbHNjcmVlbi1zbS1kb3duIC5tb2RhbC1oZWFkZXIsLm1vZGFsLWZ1bGxzY3JlZW4tc20tZG93biAubW9kYWwtZm9vdGVye2JvcmRlci1yYWRpdXM6MH0ubW9kYWwtZnVsbHNjcmVlbi1zbS1kb3duIC5tb2RhbC1ib2R5e292ZXJmbG93LXk6YXV0b319QG1lZGlhKG1heC13aWR0aDogNzY3Ljk4cHgpey5tb2RhbC1mdWxsc2NyZWVuLW1kLWRvd257d2lkdGg6MTAwdnc7bWF4LXdpZHRoOm5vbmU7aGVpZ2h0OjEwMCU7bWFyZ2luOjB9Lm1vZGFsLWZ1bGxzY3JlZW4tbWQtZG93biAubW9kYWwtY29udGVudHtoZWlnaHQ6MTAwJTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4tbWQtZG93biAubW9kYWwtaGVhZGVyLC5tb2RhbC1mdWxsc2NyZWVuLW1kLWRvd24gLm1vZGFsLWZvb3Rlcntib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4tbWQtZG93biAubW9kYWwtYm9keXtvdmVyZmxvdy15OmF1dG99fUBtZWRpYShtYXgtd2lkdGg6IDk5MS45OHB4KXsubW9kYWwtZnVsbHNjcmVlbi1sZy1kb3due3dpZHRoOjEwMHZ3O21heC13aWR0aDpub25lO2hlaWdodDoxMDAlO21hcmdpbjowfS5tb2RhbC1mdWxsc2NyZWVuLWxnLWRvd24gLm1vZGFsLWNvbnRlbnR7aGVpZ2h0OjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLWxnLWRvd24gLm1vZGFsLWhlYWRlciwubW9kYWwtZnVsbHNjcmVlbi1sZy1kb3duIC5tb2RhbC1mb290ZXJ7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLWxnLWRvd24gLm1vZGFsLWJvZHl7b3ZlcmZsb3cteTphdXRvfX1AbWVkaWEobWF4LXdpZHRoOiAxMTk5Ljk4cHgpey5tb2RhbC1mdWxsc2NyZWVuLXhsLWRvd257d2lkdGg6MTAwdnc7bWF4LXdpZHRoOm5vbmU7aGVpZ2h0OjEwMCU7bWFyZ2luOjB9Lm1vZGFsLWZ1bGxzY3JlZW4teGwtZG93biAubW9kYWwtY29udGVudHtoZWlnaHQ6MTAwJTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4teGwtZG93biAubW9kYWwtaGVhZGVyLC5tb2RhbC1mdWxsc2NyZWVuLXhsLWRvd24gLm1vZGFsLWZvb3Rlcntib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4teGwtZG93biAubW9kYWwtYm9keXtvdmVyZmxvdy15OmF1dG99fUBtZWRpYShtYXgtd2lkdGg6IDEzOTkuOThweCl7Lm1vZGFsLWZ1bGxzY3JlZW4teHhsLWRvd257d2lkdGg6MTAwdnc7bWF4LXdpZHRoOm5vbmU7aGVpZ2h0OjEwMCU7bWFyZ2luOjB9Lm1vZGFsLWZ1bGxzY3JlZW4teHhsLWRvd24gLm1vZGFsLWNvbnRlbnR7aGVpZ2h0OjEwMCU7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1mdWxsc2NyZWVuLXh4bC1kb3duIC5tb2RhbC1oZWFkZXIsLm1vZGFsLWZ1bGxzY3JlZW4teHhsLWRvd24gLm1vZGFsLWZvb3Rlcntib3JkZXItcmFkaXVzOjB9Lm1vZGFsLWZ1bGxzY3JlZW4teHhsLWRvd24gLm1vZGFsLWJvZHl7b3ZlcmZsb3cteTphdXRvfX0uc3Bpbm5lci1ncm93LC5zcGlubmVyLWJvcmRlcntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDp2YXIoLS1icy1zcGlubmVyLXdpZHRoKTtoZWlnaHQ6dmFyKC0tYnMtc3Bpbm5lci1oZWlnaHQpO3ZlcnRpY2FsLWFsaWduOnZhcigtLWJzLXNwaW5uZXItdmVydGljYWwtYWxpZ24pO2JvcmRlci1yYWRpdXM6NTAlO2FuaW1hdGlvbjp2YXIoLS1icy1zcGlubmVyLWFuaW1hdGlvbi1zcGVlZCkgbGluZWFyIGluZmluaXRlIHZhcigtLWJzLXNwaW5uZXItYW5pbWF0aW9uLW5hbWUpfUBrZXlmcmFtZXMgc3Bpbm5lci1ib3JkZXJ7dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpIC8qIHJ0bDppZ25vcmUgKi99fS5zcGlubmVyLWJvcmRlcnstLWJzLXNwaW5uZXItd2lkdGg6IDJyZW07LS1icy1zcGlubmVyLWhlaWdodDogMnJlbTstLWJzLXNwaW5uZXItdmVydGljYWwtYWxpZ246IC0wLjEyNWVtOy0tYnMtc3Bpbm5lci1ib3JkZXItd2lkdGg6IDAuMjVlbTstLWJzLXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkOiAwLjc1czstLWJzLXNwaW5uZXItYW5pbWF0aW9uLW5hbWU6IHNwaW5uZXItYm9yZGVyO2JvcmRlcjp2YXIoLS1icy1zcGlubmVyLWJvcmRlci13aWR0aCkgc29saWQgY3VycmVudGNvbG9yO2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApfS5zcGlubmVyLWJvcmRlci1zbXstLWJzLXNwaW5uZXItd2lkdGg6IDFyZW07LS1icy1zcGlubmVyLWhlaWdodDogMXJlbTstLWJzLXNwaW5uZXItYm9yZGVyLXdpZHRoOiAwLjJlbX1Aa2V5ZnJhbWVzIHNwaW5uZXItZ3Jvd3swJXt0cmFuc2Zvcm06c2NhbGUoMCl9NTAle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX19LnNwaW5uZXItZ3Jvd3stLWJzLXNwaW5uZXItd2lkdGg6IDJyZW07LS1icy1zcGlubmVyLWhlaWdodDogMnJlbTstLWJzLXNwaW5uZXItdmVydGljYWwtYWxpZ246IC0wLjEyNWVtOy0tYnMtc3Bpbm5lci1hbmltYXRpb24tc3BlZWQ6IDAuNzVzOy0tYnMtc3Bpbm5lci1hbmltYXRpb24tbmFtZTogc3Bpbm5lci1ncm93O2JhY2tncm91bmQtY29sb3I6Y3VycmVudGNvbG9yO29wYWNpdHk6MH0uc3Bpbm5lci1ncm93LXNtey0tYnMtc3Bpbm5lci13aWR0aDogMXJlbTstLWJzLXNwaW5uZXItaGVpZ2h0OiAxcmVtfUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upey5zcGlubmVyLWJvcmRlciwuc3Bpbm5lci1ncm93ey0tYnMtc3Bpbm5lci1hbmltYXRpb24tc3BlZWQ6IDEuNXN9fVwiLFwiQG1peGluIGJzQmFubmVyKCRmaWxlLCAkc3VmZml4OlxcXCJcXFwiKSB7XFxuICAvKiFcXG4gICAqIEJvb3RzdHJhcCAjeyRmaWxlfSB2NS4yLjAgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pXFxuICAgKiBDb3B5cmlnaHQgMjAxMS0yMDIyIFRoZSBCb290c3RyYXAgQXV0aG9yc1xcbiAgICogQ29weXJpZ2h0IDIwMTEtMjAyMiBUd2l0dGVyLCBJbmMuXFxuICAgKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcXG4gICAqL1xcbn1cXG5cXG5cIixcIjpyb290IHtcXG4gIC8vIE5vdGU6IEN1c3RvbSB2YXJpYWJsZSB2YWx1ZXMgb25seSBzdXBwb3J0IFNhc3NTY3JpcHQgaW5zaWRlIGAje31gLlxcblxcbiAgLy8gQ29sb3JzXFxuICAvL1xcbiAgLy8gR2VuZXJhdGUgcGFsZXR0ZXMgZm9yIGZ1bGwgY29sb3JzLCBncmF5cywgYW5kIHRoZW1lIGNvbG9ycy5cXG5cXG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICRjb2xvcnMge1xcbiAgICAtLSN7JHByZWZpeH0jeyRjb2xvcn06ICN7JHZhbHVlfTtcXG4gIH1cXG5cXG4gIEBlYWNoICRjb2xvciwgJHZhbHVlIGluICRncmF5cyB7XFxuICAgIC0tI3skcHJlZml4fWdyYXktI3skY29sb3J9OiAjeyR2YWx1ZX07XFxuICB9XFxuXFxuICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcXG4gICAgLS0jeyRwcmVmaXh9I3skY29sb3J9OiAjeyR2YWx1ZX07XFxuICB9XFxuXFxuICBAZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzLXJnYiB7XFxuICAgIC0tI3skcHJlZml4fSN7JGNvbG9yfS1yZ2I6ICN7JHZhbHVlfTtcXG4gIH1cXG5cXG4gIC0tI3skcHJlZml4fXdoaXRlLXJnYjogI3t0by1yZ2IoJHdoaXRlKX07XFxuICAtLSN7JHByZWZpeH1ibGFjay1yZ2I6ICN7dG8tcmdiKCRibGFjayl9O1xcbiAgLS0jeyRwcmVmaXh9Ym9keS1jb2xvci1yZ2I6ICN7dG8tcmdiKCRib2R5LWNvbG9yKX07XFxuICAtLSN7JHByZWZpeH1ib2R5LWJnLXJnYjogI3t0by1yZ2IoJGJvZHktYmcpfTtcXG5cXG4gIC8vIEZvbnRzXFxuXFxuICAvLyBOb3RlOiBVc2UgYGluc3BlY3RgIGZvciBsaXN0cyBzbyB0aGF0IHF1b3RlZCBpdGVtcyBrZWVwIHRoZSBxdW90ZXMuXFxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3Mvc2Fzcy9pc3N1ZXMvMjM4MyNpc3N1ZWNvbW1lbnQtMzM2MzQ5MTcyXFxuICAtLSN7JHByZWZpeH1mb250LXNhbnMtc2VyaWY6ICN7aW5zcGVjdCgkZm9udC1mYW1pbHktc2Fucy1zZXJpZil9O1xcbiAgLS0jeyRwcmVmaXh9Zm9udC1tb25vc3BhY2U6ICN7aW5zcGVjdCgkZm9udC1mYW1pbHktbW9ub3NwYWNlKX07XFxuICAtLSN7JHByZWZpeH1ncmFkaWVudDogI3skZ3JhZGllbnR9O1xcblxcbiAgLy8gUm9vdCBhbmQgYm9keVxcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IHJvb3QtYm9keS12YXJpYWJsZXNcXG4gIEBpZiAkZm9udC1zaXplLXJvb3QgIT0gbnVsbCB7XFxuICAgIC0tI3skcHJlZml4fXJvb3QtZm9udC1zaXplOiAjeyRmb250LXNpemUtcm9vdH07XFxuICB9XFxuICAtLSN7JHByZWZpeH1ib2R5LWZvbnQtZmFtaWx5OiAjeyRmb250LWZhbWlseS1iYXNlfTtcXG4gIEBpbmNsdWRlIHJmcygkZm9udC1zaXplLWJhc2UsIC0tI3skcHJlZml4fWJvZHktZm9udC1zaXplKTtcXG4gIC0tI3skcHJlZml4fWJvZHktZm9udC13ZWlnaHQ6ICN7JGZvbnQtd2VpZ2h0LWJhc2V9O1xcbiAgLS0jeyRwcmVmaXh9Ym9keS1saW5lLWhlaWdodDogI3skbGluZS1oZWlnaHQtYmFzZX07XFxuICAtLSN7JHByZWZpeH1ib2R5LWNvbG9yOiAjeyRib2R5LWNvbG9yfTtcXG4gIEBpZiAkYm9keS10ZXh0LWFsaWduICE9IG51bGwge1xcbiAgICAtLSN7JHByZWZpeH1ib2R5LXRleHQtYWxpZ246ICN7JGJvZHktdGV4dC1hbGlnbn07XFxuICB9XFxuICAtLSN7JHByZWZpeH1ib2R5LWJnOiAjeyRib2R5LWJnfTtcXG4gIC8vIHNjc3MtZG9jcy1lbmQgcm9vdC1ib2R5LXZhcmlhYmxlc1xcblxcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IHJvb3QtYm9yZGVyLXZhclxcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXdpZHRoOiAjeyRib3JkZXItd2lkdGh9O1xcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXN0eWxlOiAjeyRib3JkZXItc3R5bGV9O1xcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yOiAjeyRib3JkZXItY29sb3J9O1xcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yLXRyYW5zbHVjZW50OiAjeyRib3JkZXItY29sb3ItdHJhbnNsdWNlbnR9O1xcblxcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1czogI3skYm9yZGVyLXJhZGl1c307XFxuICAtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLXNtOiAjeyRib3JkZXItcmFkaXVzLXNtfTtcXG4gIC0tI3skcHJlZml4fWJvcmRlci1yYWRpdXMtbGc6ICN7JGJvcmRlci1yYWRpdXMtbGd9O1xcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cy14bDogI3skYm9yZGVyLXJhZGl1cy14bH07XFxuICAtLSN7JHByZWZpeH1ib3JkZXItcmFkaXVzLTJ4bDogI3skYm9yZGVyLXJhZGl1cy0yeGx9O1xcbiAgLS0jeyRwcmVmaXh9Ym9yZGVyLXJhZGl1cy1waWxsOiAjeyRib3JkZXItcmFkaXVzLXBpbGx9O1xcbiAgLy8gc2Nzcy1kb2NzLWVuZCByb290LWJvcmRlci12YXJcXG5cXG4gIC0tI3skcHJlZml4fWxpbmstY29sb3I6ICN7JGxpbmstY29sb3J9O1xcbiAgLS0jeyRwcmVmaXh9bGluay1ob3Zlci1jb2xvcjogI3skbGluay1ob3Zlci1jb2xvcn07XFxuXFxuICAtLSN7JHByZWZpeH1jb2RlLWNvbG9yOiAjeyRjb2RlLWNvbG9yfTtcXG5cXG4gIC0tI3skcHJlZml4fWhpZ2hsaWdodC1iZzogI3skbWFyay1iZ307XFxufVxcblwiLFwiLy8gc3R5bGVsaW50LWRpc2FibGUgcHJvcGVydHktYmxhY2tsaXN0LCBzY3NzL2RvbGxhci12YXJpYWJsZS1kZWZhdWx0XFxuXFxuLy8gU0NTUyBSRlMgbWl4aW5cXG4vL1xcbi8vIEF1dG9tYXRlZCByZXNwb25zaXZlIHZhbHVlcyBmb3IgZm9udCBzaXplcywgcGFkZGluZ3MsIG1hcmdpbnMgYW5kIG11Y2ggbW9yZVxcbi8vXFxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9yZnMvYmxvYi9tYWluL0xJQ0VOU0UpXFxuXFxuLy8gQ29uZmlndXJhdGlvblxcblxcbi8vIEJhc2UgdmFsdWVcXG4kcmZzLWJhc2UtdmFsdWU6IDEuMjVyZW0gIWRlZmF1bHQ7XFxuJHJmcy11bml0OiByZW0gIWRlZmF1bHQ7XFxuXFxuQGlmICRyZnMtdW5pdCAhPSByZW0gYW5kICRyZnMtdW5pdCAhPSBweCB7XFxuICBAZXJyb3IgXFxcImAjeyRyZnMtdW5pdH1gIGlzIG5vdCBhIHZhbGlkIHVuaXQgZm9yICRyZnMtdW5pdC4gVXNlIGBweGAgb3IgYHJlbWAuXFxcIjtcXG59XFxuXFxuLy8gQnJlYWtwb2ludCBhdCB3aGVyZSB2YWx1ZXMgc3RhcnQgZGVjcmVhc2luZyBpZiBzY3JlZW4gd2lkdGggaXMgc21hbGxlclxcbiRyZnMtYnJlYWtwb2ludDogMTIwMHB4ICFkZWZhdWx0O1xcbiRyZnMtYnJlYWtwb2ludC11bml0OiBweCAhZGVmYXVsdDtcXG5cXG5AaWYgJHJmcy1icmVha3BvaW50LXVuaXQgIT0gcHggYW5kICRyZnMtYnJlYWtwb2ludC11bml0ICE9IGVtIGFuZCAkcmZzLWJyZWFrcG9pbnQtdW5pdCAhPSByZW0ge1xcbiAgQGVycm9yIFxcXCJgI3skcmZzLWJyZWFrcG9pbnQtdW5pdH1gIGlzIG5vdCBhIHZhbGlkIHVuaXQgZm9yICRyZnMtYnJlYWtwb2ludC11bml0LiBVc2UgYHB4YCwgYGVtYCBvciBgcmVtYC5cXFwiO1xcbn1cXG5cXG4vLyBSZXNpemUgdmFsdWVzIGJhc2VkIG9uIHNjcmVlbiBoZWlnaHQgYW5kIHdpZHRoXFxuJHJmcy10d28tZGltZW5zaW9uYWw6IGZhbHNlICFkZWZhdWx0O1xcblxcbi8vIEZhY3RvciBvZiBkZWNyZWFzZVxcbiRyZnMtZmFjdG9yOiAxMCAhZGVmYXVsdDtcXG5cXG5AaWYgdHlwZS1vZigkcmZzLWZhY3RvcikgIT0gbnVtYmVyIG9yICRyZnMtZmFjdG9yIDw9IDEge1xcbiAgQGVycm9yIFxcXCJgI3skcmZzLWZhY3Rvcn1gIGlzIG5vdCBhIHZhbGlkICAkcmZzLWZhY3RvciwgaXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMS5cXFwiO1xcbn1cXG5cXG4vLyBNb2RlLiBQb3NzaWJpbGl0aWVzOiBcXFwibWluLW1lZGlhLXF1ZXJ5XFxcIiwgXFxcIm1heC1tZWRpYS1xdWVyeVxcXCJcXG4kcmZzLW1vZGU6IG1pbi1tZWRpYS1xdWVyeSAhZGVmYXVsdDtcXG5cXG4vLyBHZW5lcmF0ZSBlbmFibGUgb3IgZGlzYWJsZSBjbGFzc2VzLiBQb3NzaWJpbGl0aWVzOiBmYWxzZSwgXFxcImVuYWJsZVxcXCIgb3IgXFxcImRpc2FibGVcXFwiXFxuJHJmcy1jbGFzczogZmFsc2UgIWRlZmF1bHQ7XFxuXFxuLy8gMSByZW0gPSAkcmZzLXJlbS12YWx1ZSBweFxcbiRyZnMtcmVtLXZhbHVlOiAxNiAhZGVmYXVsdDtcXG5cXG4vLyBTYWZhcmkgaWZyYW1lIHJlc2l6ZSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL3Jmcy9pc3N1ZXMvMTRcXG4kcmZzLXNhZmFyaS1pZnJhbWUtcmVzaXplLWJ1Zy1maXg6IGZhbHNlICFkZWZhdWx0O1xcblxcbi8vIERpc2FibGUgUkZTIGJ5IHNldHRpbmcgJGVuYWJsZS1yZnMgdG8gZmFsc2VcXG4kZW5hYmxlLXJmczogdHJ1ZSAhZGVmYXVsdDtcXG5cXG4vLyBDYWNoZSAkcmZzLWJhc2UtdmFsdWUgdW5pdFxcbiRyZnMtYmFzZS12YWx1ZS11bml0OiB1bml0KCRyZnMtYmFzZS12YWx1ZSk7XFxuXFxuQGZ1bmN0aW9uIGRpdmlkZSgkZGl2aWRlbmQsICRkaXZpc29yLCAkcHJlY2lzaW9uOiAxMCkge1xcbiAgJHNpZ246IGlmKCRkaXZpZGVuZCA+IDAgYW5kICRkaXZpc29yID4gMCBvciAkZGl2aWRlbmQgPCAwIGFuZCAkZGl2aXNvciA8IDAsIDEsIC0xKTtcXG4gICRkaXZpZGVuZDogYWJzKCRkaXZpZGVuZCk7XFxuICAkZGl2aXNvcjogYWJzKCRkaXZpc29yKTtcXG4gIEBpZiAkZGl2aWRlbmQgPT0gMCB7XFxuICAgIEByZXR1cm4gMDtcXG4gIH1cXG4gIEBpZiAkZGl2aXNvciA9PSAwIHtcXG4gICAgQGVycm9yIFxcXCJDYW5ub3QgZGl2aWRlIGJ5IDBcXFwiO1xcbiAgfVxcbiAgJHJlbWFpbmRlcjogJGRpdmlkZW5kO1xcbiAgJHJlc3VsdDogMDtcXG4gICRmYWN0b3I6IDEwO1xcbiAgQHdoaWxlICgkcmVtYWluZGVyID4gMCBhbmQgJHByZWNpc2lvbiA+PSAwKSB7XFxuICAgICRxdW90aWVudDogMDtcXG4gICAgQHdoaWxlICgkcmVtYWluZGVyID49ICRkaXZpc29yKSB7XFxuICAgICAgJHJlbWFpbmRlcjogJHJlbWFpbmRlciAtICRkaXZpc29yO1xcbiAgICAgICRxdW90aWVudDogJHF1b3RpZW50ICsgMTtcXG4gICAgfVxcbiAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTAgKyAkcXVvdGllbnQ7XFxuICAgICRmYWN0b3I6ICRmYWN0b3IgKiAuMTtcXG4gICAgJHJlbWFpbmRlcjogJHJlbWFpbmRlciAqIDEwO1xcbiAgICAkcHJlY2lzaW9uOiAkcHJlY2lzaW9uIC0gMTtcXG4gICAgQGlmICgkcHJlY2lzaW9uIDwgMCBhbmQgJHJlbWFpbmRlciA+PSAkZGl2aXNvciAqIDUpIHtcXG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgMTtcXG4gICAgfVxcbiAgfVxcbiAgJHJlc3VsdDogJHJlc3VsdCAqICRmYWN0b3IgKiAkc2lnbjtcXG4gICRkaXZpZGVuZC11bml0OiB1bml0KCRkaXZpZGVuZCk7XFxuICAkZGl2aXNvci11bml0OiB1bml0KCRkaXZpc29yKTtcXG4gICR1bml0LW1hcDogKFxcbiAgICBcXFwicHhcXFwiOiAxcHgsXFxuICAgIFxcXCJyZW1cXFwiOiAxcmVtLFxcbiAgICBcXFwiZW1cXFwiOiAxZW0sXFxuICAgIFxcXCIlXFxcIjogMSVcXG4gICk7XFxuICBAaWYgKCRkaXZpZGVuZC11bml0ICE9ICRkaXZpc29yLXVuaXQgYW5kIG1hcC1oYXMta2V5KCR1bml0LW1hcCwgJGRpdmlkZW5kLXVuaXQpKSB7XFxuICAgICRyZXN1bHQ6ICRyZXN1bHQgKiBtYXAtZ2V0KCR1bml0LW1hcCwgJGRpdmlkZW5kLXVuaXQpO1xcbiAgfVxcbiAgQHJldHVybiAkcmVzdWx0O1xcbn1cXG5cXG4vLyBSZW1vdmUgcHgtdW5pdCBmcm9tICRyZnMtYmFzZS12YWx1ZSBmb3IgY2FsY3VsYXRpb25zXFxuQGlmICRyZnMtYmFzZS12YWx1ZS11bml0ID09IHB4IHtcXG4gICRyZnMtYmFzZS12YWx1ZTogZGl2aWRlKCRyZnMtYmFzZS12YWx1ZSwgJHJmcy1iYXNlLXZhbHVlICogMCArIDEpO1xcbn1cXG5AZWxzZSBpZiAkcmZzLWJhc2UtdmFsdWUtdW5pdCA9PSByZW0ge1xcbiAgJHJmcy1iYXNlLXZhbHVlOiBkaXZpZGUoJHJmcy1iYXNlLXZhbHVlLCBkaXZpZGUoJHJmcy1iYXNlLXZhbHVlICogMCArIDEsICRyZnMtcmVtLXZhbHVlKSk7XFxufVxcblxcbi8vIENhY2hlICRyZnMtYnJlYWtwb2ludCB1bml0IHRvIHByZXZlbnQgbXVsdGlwbGUgY2FsbHNcXG4kcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZTogdW5pdCgkcmZzLWJyZWFrcG9pbnQpO1xcblxcbi8vIFJlbW92ZSB1bml0IGZyb20gJHJmcy1icmVha3BvaW50IGZvciBjYWxjdWxhdGlvbnNcXG5AaWYgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gcHgge1xcbiAgJHJmcy1icmVha3BvaW50OiBkaXZpZGUoJHJmcy1icmVha3BvaW50LCAkcmZzLWJyZWFrcG9pbnQgKiAwICsgMSk7XFxufVxcbkBlbHNlIGlmICRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlID09IHJlbSBvciAkcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZSA9PSBcXFwiZW1cXFwiIHtcXG4gICRyZnMtYnJlYWtwb2ludDogZGl2aWRlKCRyZnMtYnJlYWtwb2ludCwgZGl2aWRlKCRyZnMtYnJlYWtwb2ludCAqIDAgKyAxLCAkcmZzLXJlbS12YWx1ZSkpO1xcbn1cXG5cXG4vLyBDYWxjdWxhdGUgdGhlIG1lZGlhIHF1ZXJ5IHZhbHVlXFxuJHJmcy1tcS12YWx1ZTogaWYoJHJmcy1icmVha3BvaW50LXVuaXQgPT0gcHgsICN7JHJmcy1icmVha3BvaW50fXB4LCAje2RpdmlkZSgkcmZzLWJyZWFrcG9pbnQsICRyZnMtcmVtLXZhbHVlKX0jeyRyZnMtYnJlYWtwb2ludC11bml0fSk7XFxuJHJmcy1tcS1wcm9wZXJ0eS13aWR0aDogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgbWF4LXdpZHRoLCBtaW4td2lkdGgpO1xcbiRyZnMtbXEtcHJvcGVydHktaGVpZ2h0OiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCBtYXgtaGVpZ2h0LCBtaW4taGVpZ2h0KTtcXG5cXG4vLyBJbnRlcm5hbCBtaXhpbiB1c2VkIHRvIGRldGVybWluZSB3aGljaCBtZWRpYSBxdWVyeSBuZWVkcyB0byBiZSB1c2VkXFxuQG1peGluIF9yZnMtbWVkaWEtcXVlcnkge1xcbiAgQGlmICRyZnMtdHdvLWRpbWVuc2lvbmFsIHtcXG4gICAgQGlmICRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnkge1xcbiAgICAgIEBtZWRpYSAoI3skcmZzLW1xLXByb3BlcnR5LXdpZHRofTogI3skcmZzLW1xLXZhbHVlfSksICgjeyRyZnMtbXEtcHJvcGVydHktaGVpZ2h0fTogI3skcmZzLW1xLXZhbHVlfSkge1xcbiAgICAgICAgQGNvbnRlbnQ7XFxuICAgICAgfVxcbiAgICB9XFxuICAgIEBlbHNlIHtcXG4gICAgICBAbWVkaWEgKCN7JHJmcy1tcS1wcm9wZXJ0eS13aWR0aH06ICN7JHJmcy1tcS12YWx1ZX0pIGFuZCAoI3skcmZzLW1xLXByb3BlcnR5LWhlaWdodH06ICN7JHJmcy1tcS12YWx1ZX0pIHtcXG4gICAgICAgIEBjb250ZW50O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbiAgQGVsc2Uge1xcbiAgICBAbWVkaWEgKCN7JHJmcy1tcS1wcm9wZXJ0eS13aWR0aH06ICN7JHJmcy1tcS12YWx1ZX0pIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vLyBJbnRlcm5hbCBtaXhpbiB0aGF0IGFkZHMgZGlzYWJsZSBjbGFzc2VzIHRvIHRoZSBzZWxlY3RvciBpZiBuZWVkZWQuXFxuQG1peGluIF9yZnMtcnVsZSB7XFxuICBAaWYgJHJmcy1jbGFzcyA9PSBkaXNhYmxlIGFuZCAkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5IHtcXG4gICAgLy8gQWRkaW5nIGFuIGV4dHJhIGNsYXNzIGluY3JlYXNlcyBzcGVjaWZpY2l0eSwgd2hpY2ggcHJldmVudHMgdGhlIG1lZGlhIHF1ZXJ5IHRvIG92ZXJyaWRlIHRoZSBwcm9wZXJ0eVxcbiAgICAmLFxcbiAgICAuZGlzYWJsZS1yZnMgJixcXG4gICAgJi5kaXNhYmxlLXJmcyB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH1cXG4gIEBlbHNlIGlmICRyZnMtY2xhc3MgPT0gZW5hYmxlIGFuZCAkcmZzLW1vZGUgPT0gbWluLW1lZGlhLXF1ZXJ5IHtcXG4gICAgLmVuYWJsZS1yZnMgJixcXG4gICAgJi5lbmFibGUtcmZzIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfVxcbiAgQGVsc2Uge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuLy8gSW50ZXJuYWwgbWl4aW4gdGhhdCBhZGRzIGVuYWJsZSBjbGFzc2VzIHRvIHRoZSBzZWxlY3RvciBpZiBuZWVkZWQuXFxuQG1peGluIF9yZnMtbWVkaWEtcXVlcnktcnVsZSB7XFxuXFxuICBAaWYgJHJmcy1jbGFzcyA9PSBlbmFibGUge1xcbiAgICBAaWYgJHJmcy1tb2RlID09IG1pbi1tZWRpYS1xdWVyeSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG5cXG4gICAgQGluY2x1ZGUgX3Jmcy1tZWRpYS1xdWVyeSB7XFxuICAgICAgLmVuYWJsZS1yZnMgJixcXG4gICAgICAmLmVuYWJsZS1yZnMge1xcbiAgICAgICAgQGNvbnRlbnQ7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuICBAZWxzZSB7XFxuICAgIEBpZiAkcmZzLWNsYXNzID09IGRpc2FibGUgYW5kICRyZnMtbW9kZSA9PSBtaW4tbWVkaWEtcXVlcnkge1xcbiAgICAgIC5kaXNhYmxlLXJmcyAmLFxcbiAgICAgICYuZGlzYWJsZS1yZnMge1xcbiAgICAgICAgQGNvbnRlbnQ7XFxuICAgICAgfVxcbiAgICB9XFxuICAgIEBpbmNsdWRlIF9yZnMtbWVkaWEtcXVlcnkge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGZvcm1hdHRlZCBub24tcmVzcG9uc2l2ZSB2YWx1ZVxcbkBmdW5jdGlvbiByZnMtdmFsdWUoJHZhbHVlcykge1xcbiAgLy8gQ29udmVydCB0byBsaXN0XFxuICAkdmFsdWVzOiBpZih0eXBlLW9mKCR2YWx1ZXMpICE9IGxpc3QsICgkdmFsdWVzLCksICR2YWx1ZXMpO1xcblxcbiAgJHZhbDogJyc7XFxuXFxuICAvLyBMb29wIG92ZXIgZWFjaCB2YWx1ZSBhbmQgY2FsY3VsYXRlIHZhbHVlXFxuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XFxuICAgIEBpZiAkdmFsdWUgPT0gMCB7XFxuICAgICAgJHZhbDogJHZhbCArICcgMCc7XFxuICAgIH1cXG4gICAgQGVsc2Uge1xcbiAgICAgIC8vIENhY2hlICR2YWx1ZSB1bml0XFxuICAgICAgJHVuaXQ6IGlmKHR5cGUtb2YoJHZhbHVlKSA9PSBcXFwibnVtYmVyXFxcIiwgdW5pdCgkdmFsdWUpLCBmYWxzZSk7XFxuXFxuICAgICAgQGlmICR1bml0ID09IHB4IHtcXG4gICAgICAgIC8vIENvbnZlcnQgdG8gcmVtIGlmIG5lZWRlZFxcbiAgICAgICAgJHZhbDogJHZhbCArICcgJyArIGlmKCRyZnMtdW5pdCA9PSByZW0sICN7ZGl2aWRlKCR2YWx1ZSwgJHZhbHVlICogMCArICRyZnMtcmVtLXZhbHVlKX1yZW0sICR2YWx1ZSk7XFxuICAgICAgfVxcbiAgICAgIEBlbHNlIGlmICR1bml0ID09IHJlbSB7XFxuICAgICAgICAvLyBDb252ZXJ0IHRvIHB4IGlmIG5lZWRlZFxcbiAgICAgICAgJHZhbDogJHZhbCArICcgJyArIGlmKCRyZnMtdW5pdCA9PSBweCwgI3tkaXZpZGUoJHZhbHVlLCAkdmFsdWUgKiAwICsgMSkgKiAkcmZzLXJlbS12YWx1ZX1weCwgJHZhbHVlKTtcXG4gICAgICB9XFxuICAgICAgQGVsc2Uge1xcbiAgICAgICAgLy8gSWYgJHZhbHVlIGlzbid0IGEgbnVtYmVyIChsaWtlIGluaGVyaXQpIG9yICR2YWx1ZSBoYXMgYSB1bml0IChub3QgcHggb3IgcmVtLCBsaWtlIDEuNWVtKSBvciAkIGlzIDAsIGp1c3QgcHJpbnQgdGhlIHZhbHVlXFxuICAgICAgICAkdmFsOiAkdmFsICsgJyAnICsgJHZhbHVlO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLy8gUmVtb3ZlIGZpcnN0IHNwYWNlXFxuICBAcmV0dXJuIHVucXVvdGUoc3RyLXNsaWNlKCR2YWwsIDIpKTtcXG59XFxuXFxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgcmVzcG9uc2l2ZSB2YWx1ZSBjYWxjdWxhdGVkIGJ5IFJGU1xcbkBmdW5jdGlvbiByZnMtZmx1aWQtdmFsdWUoJHZhbHVlcykge1xcbiAgLy8gQ29udmVydCB0byBsaXN0XFxuICAkdmFsdWVzOiBpZih0eXBlLW9mKCR2YWx1ZXMpICE9IGxpc3QsICgkdmFsdWVzLCksICR2YWx1ZXMpO1xcblxcbiAgJHZhbDogJyc7XFxuXFxuICAvLyBMb29wIG92ZXIgZWFjaCB2YWx1ZSBhbmQgY2FsY3VsYXRlIHZhbHVlXFxuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XFxuICAgIEBpZiAkdmFsdWUgPT0gMCB7XFxuICAgICAgJHZhbDogJHZhbCArICcgMCc7XFxuICAgIH1cXG5cXG4gICAgQGVsc2Uge1xcbiAgICAgIC8vIENhY2hlICR2YWx1ZSB1bml0XFxuICAgICAgJHVuaXQ6IGlmKHR5cGUtb2YoJHZhbHVlKSA9PSBcXFwibnVtYmVyXFxcIiwgdW5pdCgkdmFsdWUpLCBmYWxzZSk7XFxuXFxuICAgICAgLy8gSWYgJHZhbHVlIGlzbid0IGEgbnVtYmVyIChsaWtlIGluaGVyaXQpIG9yICR2YWx1ZSBoYXMgYSB1bml0IChub3QgcHggb3IgcmVtLCBsaWtlIDEuNWVtKSBvciAkIGlzIDAsIGp1c3QgcHJpbnQgdGhlIHZhbHVlXFxuICAgICAgQGlmIG5vdCAkdW5pdCBvciAkdW5pdCAhPSBweCBhbmQgJHVuaXQgIT0gcmVtIHtcXG4gICAgICAgICR2YWw6ICR2YWwgKyAnICcgKyAkdmFsdWU7XFxuICAgICAgfVxcblxcbiAgICAgIEBlbHNlIHtcXG4gICAgICAgIC8vIFJlbW92ZSB1bml0IGZyb20gJHZhbHVlIGZvciBjYWxjdWxhdGlvbnNcXG4gICAgICAgICR2YWx1ZTogZGl2aWRlKCR2YWx1ZSwgJHZhbHVlICogMCArIGlmKCR1bml0ID09IHB4LCAxLCBkaXZpZGUoMSwgJHJmcy1yZW0tdmFsdWUpKSk7XFxuXFxuICAgICAgICAvLyBPbmx5IGFkZCB0aGUgbWVkaWEgcXVlcnkgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZVxcbiAgICAgICAgQGlmIGFicygkdmFsdWUpIDw9ICRyZnMtYmFzZS12YWx1ZSBvciBub3QgJGVuYWJsZS1yZnMge1xcbiAgICAgICAgICAkdmFsOiAkdmFsICsgJyAnICsgIGlmKCRyZnMtdW5pdCA9PSByZW0sICN7ZGl2aWRlKCR2YWx1ZSwgJHJmcy1yZW0tdmFsdWUpfXJlbSwgI3skdmFsdWV9cHgpO1xcbiAgICAgICAgfVxcbiAgICAgICAgQGVsc2Uge1xcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pbmltdW0gdmFsdWVcXG4gICAgICAgICAgJHZhbHVlLW1pbjogJHJmcy1iYXNlLXZhbHVlICsgZGl2aWRlKGFicygkdmFsdWUpIC0gJHJmcy1iYXNlLXZhbHVlLCAkcmZzLWZhY3Rvcik7XFxuXFxuICAgICAgICAgIC8vIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGJldHdlZW4gJHZhbHVlIGFuZCB0aGUgbWluaW11bSB2YWx1ZVxcbiAgICAgICAgICAkdmFsdWUtZGlmZjogYWJzKCR2YWx1ZSkgLSAkdmFsdWUtbWluO1xcblxcbiAgICAgICAgICAvLyBCYXNlIHZhbHVlIGZvcm1hdHRpbmdcXG4gICAgICAgICAgJG1pbi13aWR0aDogaWYoJHJmcy11bml0ID09IHJlbSwgI3tkaXZpZGUoJHZhbHVlLW1pbiwgJHJmcy1yZW0tdmFsdWUpfXJlbSwgI3skdmFsdWUtbWlufXB4KTtcXG5cXG4gICAgICAgICAgLy8gVXNlIG5lZ2F0aXZlIHZhbHVlIGlmIG5lZWRlZFxcbiAgICAgICAgICAkbWluLXdpZHRoOiBpZigkdmFsdWUgPCAwLCAtJG1pbi13aWR0aCwgJG1pbi13aWR0aCk7XFxuXFxuICAgICAgICAgIC8vIFVzZSBgdm1pbmAgaWYgdHdvLWRpbWVuc2lvbmFsIGlzIGVuYWJsZWRcXG4gICAgICAgICAgJHZhcmlhYmxlLXVuaXQ6IGlmKCRyZnMtdHdvLWRpbWVuc2lvbmFsLCB2bWluLCB2dyk7XFxuXFxuICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgdmFyaWFibGUgd2lkdGggYmV0d2VlbiAwIGFuZCAkcmZzLWJyZWFrcG9pbnRcXG4gICAgICAgICAgJHZhcmlhYmxlLXdpZHRoOiAje2RpdmlkZSgkdmFsdWUtZGlmZiAqIDEwMCwgJHJmcy1icmVha3BvaW50KX0jeyR2YXJpYWJsZS11bml0fTtcXG5cXG4gICAgICAgICAgLy8gUmV0dXJuIHRoZSBjYWxjdWxhdGVkIHZhbHVlXFxuICAgICAgICAgICR2YWw6ICR2YWwgKyAnIGNhbGMoJyArICRtaW4td2lkdGggKyBpZigkdmFsdWUgPCAwLCAnIC0gJywgJyArICcpICsgJHZhcmlhYmxlLXdpZHRoICsgJyknO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLy8gUmVtb3ZlIGZpcnN0IHNwYWNlXFxuICBAcmV0dXJuIHVucXVvdGUoc3RyLXNsaWNlKCR2YWwsIDIpKTtcXG59XFxuXFxuLy8gUkZTIG1peGluXFxuQG1peGluIHJmcygkdmFsdWVzLCAkcHJvcGVydHk6IGZvbnQtc2l6ZSkge1xcbiAgQGlmICR2YWx1ZXMgIT0gbnVsbCB7XFxuICAgICR2YWw6IHJmcy12YWx1ZSgkdmFsdWVzKTtcXG4gICAgJGZsdWlkVmFsOiByZnMtZmx1aWQtdmFsdWUoJHZhbHVlcyk7XFxuXFxuICAgIC8vIERvIG5vdCBwcmludCB0aGUgbWVkaWEgcXVlcnkgaWYgcmVzcG9uc2l2ZSAmIG5vbi1yZXNwb25zaXZlIHZhbHVlcyBhcmUgdGhlIHNhbWVcXG4gICAgQGlmICR2YWwgPT0gJGZsdWlkVmFsIHtcXG4gICAgICAjeyRwcm9wZXJ0eX06ICR2YWw7XFxuICAgIH1cXG4gICAgQGVsc2Uge1xcbiAgICAgIEBpbmNsdWRlIF9yZnMtcnVsZSB7XFxuICAgICAgICAjeyRwcm9wZXJ0eX06IGlmKCRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnksICR2YWwsICRmbHVpZFZhbCk7XFxuXFxuICAgICAgICAvLyBJbmNsdWRlIHNhZmFyaSBpZnJhbWUgcmVzaXplIGZpeCBpZiBuZWVkZWRcXG4gICAgICAgIG1pbi13aWR0aDogaWYoJHJmcy1zYWZhcmktaWZyYW1lLXJlc2l6ZS1idWctZml4LCAoMCAqIDF2dyksIG51bGwpO1xcbiAgICAgIH1cXG5cXG4gICAgICBAaW5jbHVkZSBfcmZzLW1lZGlhLXF1ZXJ5LXJ1bGUge1xcbiAgICAgICAgI3skcHJvcGVydHl9OiBpZigkcmZzLW1vZGUgPT0gbWF4LW1lZGlhLXF1ZXJ5LCAkZmx1aWRWYWwsICR2YWwpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vLyBTaG9ydGhhbmQgaGVscGVyIG1peGluc1xcbkBtaXhpbiBmb250LXNpemUoJHZhbHVlKSB7XFxuICBAaW5jbHVkZSByZnMoJHZhbHVlKTtcXG59XFxuXFxuQG1peGluIHBhZGRpbmcoJHZhbHVlKSB7XFxuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nKTtcXG59XFxuXFxuQG1peGluIHBhZGRpbmctdG9wKCR2YWx1ZSkge1xcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgcGFkZGluZy10b3ApO1xcbn1cXG5cXG5AbWl4aW4gcGFkZGluZy1yaWdodCgkdmFsdWUpIHtcXG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmctcmlnaHQpO1xcbn1cXG5cXG5AbWl4aW4gcGFkZGluZy1ib3R0b20oJHZhbHVlKSB7XFxuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLWJvdHRvbSk7XFxufVxcblxcbkBtaXhpbiBwYWRkaW5nLWxlZnQoJHZhbHVlKSB7XFxuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLWxlZnQpO1xcbn1cXG5cXG5AbWl4aW4gbWFyZ2luKCR2YWx1ZSkge1xcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luKTtcXG59XFxuXFxuQG1peGluIG1hcmdpbi10b3AoJHZhbHVlKSB7XFxuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4tdG9wKTtcXG59XFxuXFxuQG1peGluIG1hcmdpbi1yaWdodCgkdmFsdWUpIHtcXG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi1yaWdodCk7XFxufVxcblxcbkBtaXhpbiBtYXJnaW4tYm90dG9tKCR2YWx1ZSkge1xcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luLWJvdHRvbSk7XFxufVxcblxcbkBtaXhpbiBtYXJnaW4tbGVmdCgkdmFsdWUpIHtcXG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi1sZWZ0KTtcXG59XFxuXCIsXCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnQsIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZSwgcHJvcGVydHktbm8tdmVuZG9yLXByZWZpeFxcblxcblxcbi8vIFJlYm9vdFxcbi8vXFxuLy8gTm9ybWFsaXphdGlvbiBvZiBIVE1MIGVsZW1lbnRzLCBtYW51YWxseSBmb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzIHRvIHJlbW92ZVxcbi8vIHN0eWxlcyB0YXJnZXRpbmcgaXJyZWxldmFudCBicm93c2VycyB3aGlsZSBhcHBseWluZyBuZXcgc3R5bGVzLlxcbi8vXFxuLy8gTm9ybWFsaXplIGlzIGxpY2Vuc2VkIE1JVC4gaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzc1xcblxcblxcbi8vIERvY3VtZW50XFxuLy9cXG4vLyBDaGFuZ2UgZnJvbSBgYm94LXNpemluZzogY29udGVudC1ib3hgIHNvIHRoYXQgYHdpZHRoYCBpcyBub3QgYWZmZWN0ZWQgYnkgYHBhZGRpbmdgIG9yIGBib3JkZXJgLlxcblxcbiosXFxuKjo6YmVmb3JlLFxcbio6OmFmdGVyIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcblxcblxcbi8vIFJvb3RcXG4vL1xcbi8vIEFiaWxpdHkgdG8gdGhlIHZhbHVlIG9mIHRoZSByb290IGZvbnQgc2l6ZXMsIGFmZmVjdGluZyB0aGUgdmFsdWUgb2YgYHJlbWAuXFxuLy8gbnVsbCBieSBkZWZhdWx0LCB0aHVzIG5vdGhpbmcgaXMgZ2VuZXJhdGVkLlxcblxcbjpyb290IHtcXG4gIEBpZiAkZm9udC1zaXplLXJvb3QgIT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSh2YXIoLS0jeyRwcmVmaXh9cm9vdC1mb250LXNpemUpKTtcXG4gIH1cXG5cXG4gIEBpZiAkZW5hYmxlLXNtb290aC1zY3JvbGwge1xcbiAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcXG4gICAgICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG5cXG4vLyBCb2R5XFxuLy9cXG4vLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXFxuLy8gMi4gQXMgYSBiZXN0IHByYWN0aWNlLCBhcHBseSBhIGRlZmF1bHQgYGJhY2tncm91bmQtY29sb3JgLlxcbi8vIDMuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxcbi8vIDQuIENoYW5nZSB0aGUgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IHRvIGJlIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQgaW4gaU9TLlxcblxcbi8vIHNjc3MtZG9jcy1zdGFydCByZWJvb3QtYm9keS1ydWxlc1xcbmJvZHkge1xcbiAgbWFyZ2luOiAwOyAvLyAxXFxuICBmb250LWZhbWlseTogdmFyKC0tI3skcHJlZml4fWJvZHktZm9udC1mYW1pbHkpO1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKHZhcigtLSN7JHByZWZpeH1ib2R5LWZvbnQtc2l6ZSkpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1ib2R5LWZvbnQtd2VpZ2h0KTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9Ym9keS1saW5lLWhlaWdodCk7XFxuICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWJvZHktY29sb3IpO1xcbiAgdGV4dC1hbGlnbjogdmFyKC0tI3skcHJlZml4fWJvZHktdGV4dC1hbGlnbik7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9Ym9keS1iZyk7IC8vIDJcXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gM1xcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKCRibGFjaywgMCk7IC8vIDRcXG59XFxuLy8gc2Nzcy1kb2NzLWVuZCByZWJvb3QtYm9keS1ydWxlc1xcblxcblxcbi8vIENvbnRlbnQgZ3JvdXBpbmdcXG4vL1xcbi8vIDEuIFJlc2V0IEZpcmVmb3gncyBncmF5IGNvbG9yXFxuXFxuaHIge1xcbiAgbWFyZ2luOiAkaHItbWFyZ2luLXkgMDtcXG4gIGNvbG9yOiAkaHItY29sb3I7IC8vIDFcXG4gIGJvcmRlcjogMDtcXG4gIGJvcmRlci10b3A6ICRoci1ib3JkZXItd2lkdGggc29saWQgJGhyLWJvcmRlci1jb2xvcjtcXG4gIG9wYWNpdHk6ICRoci1vcGFjaXR5O1xcbn1cXG5cXG5cXG4vLyBUeXBvZ3JhcGh5XFxuLy9cXG4vLyAxLiBSZW1vdmUgdG9wIG1hcmdpbnMgZnJvbSBoZWFkaW5nc1xcbi8vICAgIEJ5IGRlZmF1bHQsIGA8aDE+YC1gPGg2PmAgYWxsIHJlY2VpdmUgdG9wIGFuZCBib3R0b20gbWFyZ2lucy4gV2UgbnVrZSB0aGUgdG9wXFxuLy8gICAgbWFyZ2luIGZvciBlYXNpZXIgY29udHJvbCB3aXRoaW4gdHlwZSBzY2FsZXMgYXMgaXQgYXZvaWRzIG1hcmdpbiBjb2xsYXBzaW5nLlxcblxcbiVoZWFkaW5nIHtcXG4gIG1hcmdpbi10b3A6IDA7IC8vIDFcXG4gIG1hcmdpbi1ib3R0b206ICRoZWFkaW5ncy1tYXJnaW4tYm90dG9tO1xcbiAgZm9udC1mYW1pbHk6ICRoZWFkaW5ncy1mb250LWZhbWlseTtcXG4gIGZvbnQtc3R5bGU6ICRoZWFkaW5ncy1mb250LXN0eWxlO1xcbiAgZm9udC13ZWlnaHQ6ICRoZWFkaW5ncy1mb250LXdlaWdodDtcXG4gIGxpbmUtaGVpZ2h0OiAkaGVhZGluZ3MtbGluZS1oZWlnaHQ7XFxuICBjb2xvcjogJGhlYWRpbmdzLWNvbG9yO1xcbn1cXG5cXG5oMSB7XFxuICBAZXh0ZW5kICVoZWFkaW5nO1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoMS1mb250LXNpemUpO1xcbn1cXG5cXG5oMiB7XFxuICBAZXh0ZW5kICVoZWFkaW5nO1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoMi1mb250LXNpemUpO1xcbn1cXG5cXG5oMyB7XFxuICBAZXh0ZW5kICVoZWFkaW5nO1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoMy1mb250LXNpemUpO1xcbn1cXG5cXG5oNCB7XFxuICBAZXh0ZW5kICVoZWFkaW5nO1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoNC1mb250LXNpemUpO1xcbn1cXG5cXG5oNSB7XFxuICBAZXh0ZW5kICVoZWFkaW5nO1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoNS1mb250LXNpemUpO1xcbn1cXG5cXG5oNiB7XFxuICBAZXh0ZW5kICVoZWFkaW5nO1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoNi1mb250LXNpemUpO1xcbn1cXG5cXG5cXG4vLyBSZXNldCBtYXJnaW5zIG9uIHBhcmFncmFwaHNcXG4vL1xcbi8vIFNpbWlsYXJseSwgdGhlIHRvcCBtYXJnaW4gb24gYDxwPmBzIGdldCByZXNldC4gSG93ZXZlciwgd2UgYWxzbyByZXNldCB0aGVcXG4vLyBib3R0b20gbWFyZ2luIHRvIHVzZSBgcmVtYCB1bml0cyBpbnN0ZWFkIG9mIGBlbWAuXFxuXFxucCB7XFxuICBtYXJnaW4tdG9wOiAwO1xcbiAgbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xcbn1cXG5cXG5cXG4vLyBBYmJyZXZpYXRpb25zXFxuLy9cXG4vLyAxLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgT3BlcmEsIGFuZCBTYWZhcmkuXFxuLy8gMi4gQWRkIGV4cGxpY2l0IGN1cnNvciB0byBpbmRpY2F0ZSBjaGFuZ2VkIGJlaGF2aW9yLlxcbi8vIDMuIFByZXZlbnQgdGhlIHRleHQtZGVjb3JhdGlvbiB0byBiZSBza2lwcGVkLlxcblxcbmFiYnJbdGl0bGVdIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLy8gMVxcbiAgY3Vyc29yOiBoZWxwOyAvLyAyXFxuICB0ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6IG5vbmU7IC8vIDNcXG59XFxuXFxuXFxuLy8gQWRkcmVzc1xcblxcbmFkZHJlc3Mge1xcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbn1cXG5cXG5cXG4vLyBMaXN0c1xcblxcbm9sLFxcbnVsIHtcXG4gIHBhZGRpbmctbGVmdDogMnJlbTtcXG59XFxuXFxub2wsXFxudWwsXFxuZGwge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XFxufVxcblxcbm9sIG9sLFxcbnVsIHVsLFxcbm9sIHVsLFxcbnVsIG9sIHtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxufVxcblxcbmR0IHtcXG4gIGZvbnQtd2VpZ2h0OiAkZHQtZm9udC13ZWlnaHQ7XFxufVxcblxcbi8vIDEuIFVuZG8gYnJvd3NlciBkZWZhdWx0XFxuXFxuZGQge1xcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XFxuICBtYXJnaW4tbGVmdDogMDsgLy8gMVxcbn1cXG5cXG5cXG4vLyBCbG9ja3F1b3RlXFxuXFxuYmxvY2txdW90ZSB7XFxuICBtYXJnaW46IDAgMCAxcmVtO1xcbn1cXG5cXG5cXG4vLyBTdHJvbmdcXG4vL1xcbi8vIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmlcXG5cXG5iLFxcbnN0cm9uZyB7XFxuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGRlcjtcXG59XFxuXFxuXFxuLy8gU21hbGxcXG4vL1xcbi8vIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzXFxuXFxuc21hbGwge1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRzbWFsbC1mb250LXNpemUpO1xcbn1cXG5cXG5cXG4vLyBNYXJrXFxuXFxubWFyayB7XFxuICBwYWRkaW5nOiAkbWFyay1wYWRkaW5nO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tI3skcHJlZml4fWhpZ2hsaWdodC1iZyk7XFxufVxcblxcblxcbi8vIFN1YiBhbmQgU3VwXFxuLy9cXG4vLyBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cXG4vLyBhbGwgYnJvd3NlcnMuXFxuXFxuc3ViLFxcbnN1cCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBAaW5jbHVkZSBmb250LXNpemUoJHN1Yi1zdXAtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiAwO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbn1cXG5cXG5zdWIgeyBib3R0b206IC0uMjVlbTsgfVxcbnN1cCB7IHRvcDogLS41ZW07IH1cXG5cXG5cXG4vLyBMaW5rc1xcblxcbmEge1xcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1saW5rLWNvbG9yKTtcXG4gIHRleHQtZGVjb3JhdGlvbjogJGxpbmstZGVjb3JhdGlvbjtcXG5cXG4gICY6aG92ZXIge1xcbiAgICBjb2xvcjogdmFyKC0tI3skcHJlZml4fWxpbmstaG92ZXItY29sb3IpO1xcbiAgICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWhvdmVyLWRlY29yYXRpb247XFxuICB9XFxufVxcblxcbi8vIEFuZCB1bmRvIHRoZXNlIHN0eWxlcyBmb3IgcGxhY2Vob2xkZXIgbGlua3MvbmFtZWQgYW5jaG9ycyAod2l0aG91dCBocmVmKS5cXG4vLyBJdCB3b3VsZCBiZSBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB0byBqdXN0IHVzZSBhW2hyZWZdIGluIHByZXZpb3VzIGJsb2NrLCBidXQgdGhhdFxcbi8vIGNhdXNlcyBzcGVjaWZpY2l0eSBpc3N1ZXMgaW4gbWFueSBvdGhlciBzdHlsZXMgdGhhdCBhcmUgdG9vIGNvbXBsZXggdG8gZml4Llxcbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE5NDAyXFxuXFxuYTpub3QoW2hyZWZdKTpub3QoW2NsYXNzXSkge1xcbiAgJixcXG4gICY6aG92ZXIge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgfVxcbn1cXG5cXG5cXG4vLyBDb2RlXFxuXFxucHJlLFxcbmNvZGUsXFxua2JkLFxcbnNhbXAge1xcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1jb2RlO1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKDFlbSk7IC8vIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cXG59XFxuXFxuLy8gMS4gUmVtb3ZlIGJyb3dzZXIgZGVmYXVsdCB0b3AgbWFyZ2luXFxuLy8gMi4gUmVzZXQgYnJvd3NlciBkZWZhdWx0IG9mIGAxZW1gIHRvIHVzZSBgcmVtYHNcXG4vLyAzLiBEb24ndCBhbGxvdyBjb250ZW50IHRvIGJyZWFrIG91dHNpZGVcXG5cXG5wcmUge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBtYXJnaW4tdG9wOiAwOyAvLyAxXFxuICBtYXJnaW4tYm90dG9tOiAxcmVtOyAvLyAyXFxuICBvdmVyZmxvdzogYXV0bzsgLy8gM1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRjb2RlLWZvbnQtc2l6ZSk7XFxuICBjb2xvcjogJHByZS1jb2xvcjtcXG5cXG4gIC8vIEFjY291bnQgZm9yIHNvbWUgY29kZSBvdXRwdXRzIHRoYXQgcGxhY2UgY29kZSB0YWdzIGluIHByZSB0YWdzXFxuICBjb2RlIHtcXG4gICAgQGluY2x1ZGUgZm9udC1zaXplKGluaGVyaXQpO1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gICAgd29yZC1icmVhazogbm9ybWFsO1xcbiAgfVxcbn1cXG5cXG5jb2RlIHtcXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkY29kZS1mb250LXNpemUpO1xcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1jb2RlLWNvbG9yKTtcXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcXG5cXG4gIC8vIFN0cmVhbWxpbmUgdGhlIHN0eWxlIHdoZW4gaW5zaWRlIGFuY2hvcnMgdG8gYXZvaWQgYnJva2VuIHVuZGVybGluZSBhbmQgbW9yZVxcbiAgYSA+ICYge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gIH1cXG59XFxuXFxua2JkIHtcXG4gIHBhZGRpbmc6ICRrYmQtcGFkZGluZy15ICRrYmQtcGFkZGluZy14O1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRrYmQtZm9udC1zaXplKTtcXG4gIGNvbG9yOiAka2JkLWNvbG9yO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogJGtiZC1iZztcXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMtc20pO1xcblxcbiAga2JkIHtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgQGluY2x1ZGUgZm9udC1zaXplKDFlbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiAkbmVzdGVkLWtiZC1mb250LXdlaWdodDtcXG4gIH1cXG59XFxuXFxuXFxuLy8gRmlndXJlc1xcbi8vXFxuLy8gQXBwbHkgYSBjb25zaXN0ZW50IG1hcmdpbiBzdHJhdGVneSAobWF0Y2hlcyBvdXIgdHlwZSBzdHlsZXMpLlxcblxcbmZpZ3VyZSB7XFxuICBtYXJnaW46IDAgMCAxcmVtO1xcbn1cXG5cXG5cXG4vLyBJbWFnZXMgYW5kIGNvbnRlbnRcXG5cXG5pbWcsXFxuc3ZnIHtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxufVxcblxcblxcbi8vIFRhYmxlc1xcbi8vXFxuLy8gUHJldmVudCBkb3VibGUgYm9yZGVyc1xcblxcbnRhYmxlIHtcXG4gIGNhcHRpb24tc2lkZTogYm90dG9tO1xcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcXG59XFxuXFxuY2FwdGlvbiB7XFxuICBwYWRkaW5nLXRvcDogJHRhYmxlLWNlbGwtcGFkZGluZy15O1xcbiAgcGFkZGluZy1ib3R0b206ICR0YWJsZS1jZWxsLXBhZGRpbmcteTtcXG4gIGNvbG9yOiAkdGFibGUtY2FwdGlvbi1jb2xvcjtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxufVxcblxcbi8vIDEuIFJlbW92ZXMgZm9udC13ZWlnaHQgYm9sZCBieSBpbmhlcml0aW5nXFxuLy8gMi4gTWF0Y2hlcyBkZWZhdWx0IGA8dGQ+YCBhbGlnbm1lbnQgYnkgaW5oZXJpdGluZyBgdGV4dC1hbGlnbmAuXFxuLy8gMy4gRml4IGFsaWdubWVudCBmb3IgU2FmYXJpXFxuXFxudGgge1xcbiAgZm9udC13ZWlnaHQ6ICR0YWJsZS10aC1mb250LXdlaWdodDsgLy8gMVxcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDsgLy8gMlxcbiAgdGV4dC1hbGlnbjogLXdlYmtpdC1tYXRjaC1wYXJlbnQ7IC8vIDNcXG59XFxuXFxudGhlYWQsXFxudGJvZHksXFxudGZvb3QsXFxudHIsXFxudGQsXFxudGgge1xcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gIGJvcmRlci13aWR0aDogMDtcXG59XFxuXFxuXFxuLy8gRm9ybXNcXG4vL1xcbi8vIDEuIEFsbG93IGxhYmVscyB0byB1c2UgYG1hcmdpbmAgZm9yIHNwYWNpbmcuXFxuXFxubGFiZWwge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvLyAxXFxufVxcblxcbi8vIFJlbW92ZSB0aGUgZGVmYXVsdCBgYm9yZGVyLXJhZGl1c2AgdGhhdCBtYWNPUyBDaHJvbWUgYWRkcy5cXG4vLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDA5M1xcblxcbmJ1dHRvbiB7XFxuICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktZGlzYWxsb3dlZC1saXN0XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbn1cXG5cXG4vLyBFeHBsaWNpdGx5IHJlbW92ZSBmb2N1cyBvdXRsaW5lIGluIENocm9taXVtIHdoZW4gaXQgc2hvdWxkbid0IGJlXFxuLy8gdmlzaWJsZSAoZS5nLiBhcyByZXN1bHQgb2YgbW91c2UgY2xpY2sgb3IgdG91Y2ggdGFwKS4gSXQgYWxyZWFkeVxcbi8vIHNob3VsZCBiZSBkb2luZyB0aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCBzZWVtcyB0byBjdXJyZW50bHkgYmVcXG4vLyBjb25mdXNlZCBhbmQgYXBwbGllcyBpdHMgdmVyeSB2aXNpYmxlIHR3by10b25lIG91dGxpbmUgYW55d2F5LlxcblxcbmJ1dHRvbjpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcXG4gIG91dGxpbmU6IDA7XFxufVxcblxcbi8vIDEuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaVxcblxcbmlucHV0LFxcbmJ1dHRvbixcXG5zZWxlY3QsXFxub3B0Z3JvdXAsXFxudGV4dGFyZWEge1xcbiAgbWFyZ2luOiAwOyAvLyAxXFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShpbmhlcml0KTtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbn1cXG5cXG4vLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3hcXG5idXR0b24sXFxuc2VsZWN0IHtcXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xcbn1cXG4vLyBTZXQgdGhlIGN1cnNvciBmb3Igbm9uLWA8YnV0dG9uPmAgYnV0dG9uc1xcbi8vXFxuLy8gRGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8zMDU2Mlxcbltyb2xlPVxcXCJidXR0b25cXFwiXSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbnNlbGVjdCB7XFxuICAvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHdvcmQtd3JhcCBpbiBTYWZhcmkuXFxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDk5MFxcbiAgd29yZC13cmFwOiBub3JtYWw7XFxuXFxuICAvLyBVbmRvIHRoZSBvcGFjaXR5IGNoYW5nZSBmcm9tIENocm9tZVxcbiAgJjpkaXNhYmxlZCB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxufVxcblxcbi8vIFJlbW92ZSB0aGUgZHJvcGRvd24gYXJyb3cgb25seSBmcm9tIHRleHQgdHlwZSBpbnB1dHMgYnVpbHQgd2l0aCBkYXRhbGlzdHMgaW4gQ2hyb21lLlxcbi8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTQ5OTcxMThcXG5cXG5bbGlzdF06bm90KFt0eXBlPVxcXCJkYXRlXFxcIl0pOm5vdChbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXSk6bm90KFt0eXBlPVxcXCJtb250aFxcXCJdKTpub3QoW3R5cGU9XFxcIndlZWtcXFwiXSk6bm90KFt0eXBlPVxcXCJ0aW1lXFxcIl0pOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3Ige1xcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4vLyAxLiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2BcXG4vLyAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXFxuLy8gMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cXG4vLyAzLiBPcGluaW9uYXRlZDogYWRkIFxcXCJoYW5kXFxcIiBjdXJzb3IgdG8gbm9uLWRpc2FibGVkIGJ1dHRvbiBlbGVtZW50cy5cXG5cXG5idXR0b24sXFxuW3R5cGU9XFxcImJ1dHRvblxcXCJdLCAvLyAxXFxuW3R5cGU9XFxcInJlc2V0XFxcIl0sXFxuW3R5cGU9XFxcInN1Ym1pdFxcXCJdIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAyXFxuXFxuICBAaWYgJGVuYWJsZS1idXR0b24tcG9pbnRlcnMge1xcbiAgICAmOm5vdCg6ZGlzYWJsZWQpIHtcXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7IC8vIDNcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vLyBSZW1vdmUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGZyb20gRmlyZWZveCwgYnV0IGRvbid0IHJlc3RvcmUgdGhlIG91dGxpbmUgbGlrZSBOb3JtYWxpemUuXFxuXFxuOjotbW96LWZvY3VzLWlubmVyIHtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXItc3R5bGU6IG5vbmU7XFxufVxcblxcbi8vIDEuIFRleHRhcmVhcyBzaG91bGQgcmVhbGx5IG9ubHkgcmVzaXplIHZlcnRpY2FsbHkgc28gdGhleSBkb24ndCBicmVhayB0aGVpciAoaG9yaXpvbnRhbCkgY29udGFpbmVycy5cXG5cXG50ZXh0YXJlYSB7XFxuICByZXNpemU6IHZlcnRpY2FsOyAvLyAxXFxufVxcblxcbi8vIDEuIEJyb3dzZXJzIHNldCBhIGRlZmF1bHQgYG1pbi13aWR0aDogbWluLWNvbnRlbnQ7YCBvbiBmaWVsZHNldHMsXFxuLy8gICAgdW5saWtlIGUuZy4gYDxkaXY+YHMsIHdoaWNoIGhhdmUgYG1pbi13aWR0aDogMDtgIGJ5IGRlZmF1bHQuXFxuLy8gICAgU28gd2UgcmVzZXQgdGhhdCB0byBlbnN1cmUgZmllbGRzZXRzIGJlaGF2ZSBtb3JlIGxpa2UgYSBzdGFuZGFyZCBibG9jayBlbGVtZW50Llxcbi8vICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzEyMzU5XFxuLy8gICAgYW5kIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN0aGUtZmllbGRzZXQtYW5kLWxlZ2VuZC1lbGVtZW50c1xcbi8vIDIuIFJlc2V0IHRoZSBkZWZhdWx0IG91dGxpbmUgYmVoYXZpb3Igb2YgZmllbGRzZXRzIHNvIHRoZXkgZG9uJ3QgYWZmZWN0IHBhZ2UgbGF5b3V0LlxcblxcbmZpZWxkc2V0IHtcXG4gIG1pbi13aWR0aDogMDsgLy8gMVxcbiAgcGFkZGluZzogMDsgLy8gMlxcbiAgbWFyZ2luOiAwOyAvLyAyXFxuICBib3JkZXI6IDA7IC8vIDJcXG59XFxuXFxuLy8gMS4gQnkgdXNpbmcgYGZsb2F0OiBsZWZ0YCwgdGhlIGxlZ2VuZCB3aWxsIGJlaGF2ZSBsaWtlIGEgYmxvY2sgZWxlbWVudC5cXG4vLyAgICBUaGlzIHdheSB0aGUgYm9yZGVyIG9mIGEgZmllbGRzZXQgd3JhcHMgYXJvdW5kIHRoZSBsZWdlbmQgaWYgcHJlc2VudC5cXG4vLyAyLiBGaXggd3JhcHBpbmcgYnVnLlxcbi8vICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzI5NzEyXFxuXFxubGVnZW5kIHtcXG4gIGZsb2F0OiBsZWZ0OyAvLyAxXFxuICB3aWR0aDogMTAwJTtcXG4gIHBhZGRpbmc6IDA7XFxuICBtYXJnaW4tYm90dG9tOiAkbGVnZW5kLW1hcmdpbi1ib3R0b207XFxuICBAaW5jbHVkZSBmb250LXNpemUoJGxlZ2VuZC1mb250LXNpemUpO1xcbiAgZm9udC13ZWlnaHQ6ICRsZWdlbmQtZm9udC13ZWlnaHQ7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG5cXG4gICsgKiB7XFxuICAgIGNsZWFyOiBsZWZ0OyAvLyAyXFxuICB9XFxufVxcblxcbi8vIEZpeCBoZWlnaHQgb2YgaW5wdXRzIHdpdGggYSB0eXBlIG9mIGRhdGV0aW1lLWxvY2FsLCBkYXRlLCBtb250aCwgd2Vlaywgb3IgdGltZVxcbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzE4ODQyXFxuXFxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtZmllbGRzLXdyYXBwZXIsXFxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtdGV4dCxcXG46Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51dGUsXFxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZCxcXG46Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1kYXktZmllbGQsXFxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbW9udGgtZmllbGQsXFxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQteWVhci1maWVsZCB7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG46Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xcbiAgaGVpZ2h0OiBhdXRvO1xcbn1cXG5cXG4vLyAxLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cXG4vLyAyLiBUaGlzIG92ZXJyaWRlcyB0aGUgZXh0cmEgcm91bmRlZCBjb3JuZXJzIG9uIHNlYXJjaCBpbnB1dHMgaW4gaU9TIHNvIHRoYXQgb3VyXFxuLy8gICAgYC5mb3JtLWNvbnRyb2xgIGNsYXNzIGNhbiBwcm9wZXJseSBzdHlsZSB0aGVtLiBOb3RlIHRoYXQgdGhpcyBjYW5ub3Qgc2ltcGx5XFxuLy8gICAgYmUgYWRkZWQgdG8gYC5mb3JtLWNvbnRyb2xgIGFzIGl0J3Mgbm90IHNwZWNpZmljIGVub3VnaC4gRm9yIGRldGFpbHMsIHNlZVxcbi8vICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTE1ODYuXFxuXFxuW3R5cGU9XFxcInNlYXJjaFxcXCJdIHtcXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvLyAxXFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLy8gMlxcbn1cXG5cXG4vLyAxLiBBIGZldyBpbnB1dCB0eXBlcyBzaG91bGQgc3RheSBMVFJcXG4vLyBTZWUgaHR0cHM6Ly9ydGxzdHlsaW5nLmNvbS9wb3N0cy9ydGwtc3R5bGluZyNmb3JtLWlucHV0c1xcbi8vIDIuIFJUTCBvbmx5IG91dHB1dFxcbi8vIFNlZSBodHRwczovL3J0bGNzcy5jb20vbGVhcm4vdXNhZ2UtZ3VpZGUvY29udHJvbC1kaXJlY3RpdmVzLyNyYXdcXG5cXG4vKiBydGw6cmF3Olxcblt0eXBlPVxcXCJ0ZWxcXFwiXSxcXG5bdHlwZT1cXFwidXJsXFxcIl0sXFxuW3R5cGU9XFxcImVtYWlsXFxcIl0sXFxuW3R5cGU9XFxcIm51bWJlclxcXCJdIHtcXG4gIGRpcmVjdGlvbjogbHRyO1xcbn1cXG4qL1xcblxcbi8vIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cXG5cXG46Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbn1cXG5cXG4vLyBSZW1vdmUgcGFkZGluZyBhcm91bmQgY29sb3IgcGlja2VycyBpbiB3ZWJraXQgYnJvd3NlcnNcXG5cXG46Oi13ZWJraXQtY29sb3Itc3dhdGNoLXdyYXBwZXIge1xcbiAgcGFkZGluZzogMDtcXG59XFxuXFxuXFxuLy8gMS4gSW5oZXJpdCBmb250IGZhbWlseSBhbmQgbGluZSBoZWlnaHQgZm9yIGZpbGUgaW5wdXQgYnV0dG9uc1xcbi8vIDIuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXFxuXFxuOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiB7XFxuICBmb250OiBpbmhlcml0OyAvLyAxXFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLy8gMlxcbn1cXG5cXG4vLyBDb3JyZWN0IGVsZW1lbnQgZGlzcGxheXNcXG5cXG5vdXRwdXQge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG5cXG4vLyBSZW1vdmUgYm9yZGVyIGZyb20gaWZyYW1lXFxuXFxuaWZyYW1lIHtcXG4gIGJvcmRlcjogMDtcXG59XFxuXFxuLy8gU3VtbWFyeVxcbi8vXFxuLy8gMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzXFxuXFxuc3VtbWFyeSB7XFxuICBkaXNwbGF5OiBsaXN0LWl0ZW07IC8vIDFcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuXFxuLy8gUHJvZ3Jlc3NcXG4vL1xcbi8vIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXFxuXFxucHJvZ3Jlc3Mge1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbn1cXG5cXG5cXG4vLyBIaWRkZW4gYXR0cmlidXRlXFxuLy9cXG4vLyBBbHdheXMgaGlkZSBhbiBlbGVtZW50IHdpdGggdGhlIGBoaWRkZW5gIEhUTUwgYXR0cmlidXRlLlxcblxcbltoaWRkZW5dIHtcXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXCIsXCIvLyBWYXJpYWJsZXNcXG4vL1xcbi8vIFZhcmlhYmxlcyBzaG91bGQgZm9sbG93IHRoZSBgJGNvbXBvbmVudC1zdGF0ZS1wcm9wZXJ0eS1zaXplYCBmb3JtdWxhIGZvclxcbi8vIGNvbnNpc3RlbnQgbmFtaW5nLiBFeDogJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yIGFuZCAkbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXhzLlxcblxcbi8vIENvbG9yIHN5c3RlbVxcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBncmF5LWNvbG9yLXZhcmlhYmxlc1xcbiR3aGl0ZTogICAgI2ZmZiAhZGVmYXVsdDtcXG4kZ3JheS0xMDA6ICNmOGY5ZmEgIWRlZmF1bHQ7XFxuJGdyYXktMjAwOiAjZTllY2VmICFkZWZhdWx0O1xcbiRncmF5LTMwMDogI2RlZTJlNiAhZGVmYXVsdDtcXG4kZ3JheS00MDA6ICNjZWQ0ZGEgIWRlZmF1bHQ7XFxuJGdyYXktNTAwOiAjYWRiNWJkICFkZWZhdWx0O1xcbiRncmF5LTYwMDogIzZjNzU3ZCAhZGVmYXVsdDtcXG4kZ3JheS03MDA6ICM0OTUwNTcgIWRlZmF1bHQ7XFxuJGdyYXktODAwOiAjMzQzYTQwICFkZWZhdWx0O1xcbiRncmF5LTkwMDogIzIxMjUyOSAhZGVmYXVsdDtcXG4kYmxhY2s6ICAgICMwMDAgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBncmF5LWNvbG9yLXZhcmlhYmxlc1xcblxcbi8vIGZ1c3YtZGlzYWJsZVxcbi8vIHNjc3MtZG9jcy1zdGFydCBncmF5LWNvbG9ycy1tYXBcXG4kZ3JheXM6IChcXG4gIFxcXCIxMDBcXFwiOiAkZ3JheS0xMDAsXFxuICBcXFwiMjAwXFxcIjogJGdyYXktMjAwLFxcbiAgXFxcIjMwMFxcXCI6ICRncmF5LTMwMCxcXG4gIFxcXCI0MDBcXFwiOiAkZ3JheS00MDAsXFxuICBcXFwiNTAwXFxcIjogJGdyYXktNTAwLFxcbiAgXFxcIjYwMFxcXCI6ICRncmF5LTYwMCxcXG4gIFxcXCI3MDBcXFwiOiAkZ3JheS03MDAsXFxuICBcXFwiODAwXFxcIjogJGdyYXktODAwLFxcbiAgXFxcIjkwMFxcXCI6ICRncmF5LTkwMFxcbikgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBncmF5LWNvbG9ycy1tYXBcXG4vLyBmdXN2LWVuYWJsZVxcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBjb2xvci12YXJpYWJsZXNcXG4kYmx1ZTogICAgIzBkNmVmZCAhZGVmYXVsdDtcXG4kaW5kaWdvOiAgIzY2MTBmMiAhZGVmYXVsdDtcXG4kcHVycGxlOiAgIzZmNDJjMSAhZGVmYXVsdDtcXG4kcGluazogICAgI2Q2MzM4NCAhZGVmYXVsdDtcXG4kcmVkOiAgICAgI2RjMzU0NSAhZGVmYXVsdDtcXG4kb3JhbmdlOiAgI2ZkN2UxNCAhZGVmYXVsdDtcXG4keWVsbG93OiAgI2ZmYzEwNyAhZGVmYXVsdDtcXG4kZ3JlZW46ICAgIzE5ODc1NCAhZGVmYXVsdDtcXG4kdGVhbDogICAgIzIwYzk5NyAhZGVmYXVsdDtcXG4kY3lhbjogICAgIzBkY2FmMCAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGNvbG9yLXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBjb2xvcnMtbWFwXFxuJGNvbG9yczogKFxcbiAgXFxcImJsdWVcXFwiOiAgICAgICAkYmx1ZSxcXG4gIFxcXCJpbmRpZ29cXFwiOiAgICAgJGluZGlnbyxcXG4gIFxcXCJwdXJwbGVcXFwiOiAgICAgJHB1cnBsZSxcXG4gIFxcXCJwaW5rXFxcIjogICAgICAgJHBpbmssXFxuICBcXFwicmVkXFxcIjogICAgICAgICRyZWQsXFxuICBcXFwib3JhbmdlXFxcIjogICAgICRvcmFuZ2UsXFxuICBcXFwieWVsbG93XFxcIjogICAgICR5ZWxsb3csXFxuICBcXFwiZ3JlZW5cXFwiOiAgICAgICRncmVlbixcXG4gIFxcXCJ0ZWFsXFxcIjogICAgICAgJHRlYWwsXFxuICBcXFwiY3lhblxcXCI6ICAgICAgICRjeWFuLFxcbiAgXFxcImJsYWNrXFxcIjogICAgICAkYmxhY2ssXFxuICBcXFwid2hpdGVcXFwiOiAgICAgICR3aGl0ZSxcXG4gIFxcXCJncmF5XFxcIjogICAgICAgJGdyYXktNjAwLFxcbiAgXFxcImdyYXktZGFya1xcXCI6ICAkZ3JheS04MDBcXG4pICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgY29sb3JzLW1hcFxcblxcbi8vIFRoZSBjb250cmFzdCByYXRpbyB0byByZWFjaCBhZ2FpbnN0IHdoaXRlLCB0byBkZXRlcm1pbmUgaWYgY29sb3IgY2hhbmdlcyBmcm9tIFxcXCJsaWdodFxcXCIgdG8gXFxcImRhcmtcXFwiLiBBY2NlcHRhYmxlIHZhbHVlcyBmb3IgV0NBRyAyLjAgYXJlIDMsIDQuNSBhbmQgNy5cXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC8jdmlzdWFsLWF1ZGlvLWNvbnRyYXN0LWNvbnRyYXN0XFxuJG1pbi1jb250cmFzdC1yYXRpbzogICA0LjUgIWRlZmF1bHQ7XFxuXFxuLy8gQ3VzdG9taXplIHRoZSBsaWdodCBhbmQgZGFyayB0ZXh0IGNvbG9ycyBmb3IgdXNlIGluIG91ciBjb2xvciBjb250cmFzdCBmdW5jdGlvbi5cXG4kY29sb3ItY29udHJhc3QtZGFyazogICAgICAkYmxhY2sgIWRlZmF1bHQ7XFxuJGNvbG9yLWNvbnRyYXN0LWxpZ2h0OiAgICAgJHdoaXRlICFkZWZhdWx0O1xcblxcbi8vIGZ1c3YtZGlzYWJsZVxcbiRibHVlLTEwMDogdGludC1jb2xvcigkYmx1ZSwgODAlKSAhZGVmYXVsdDtcXG4kYmx1ZS0yMDA6IHRpbnQtY29sb3IoJGJsdWUsIDYwJSkgIWRlZmF1bHQ7XFxuJGJsdWUtMzAwOiB0aW50LWNvbG9yKCRibHVlLCA0MCUpICFkZWZhdWx0O1xcbiRibHVlLTQwMDogdGludC1jb2xvcigkYmx1ZSwgMjAlKSAhZGVmYXVsdDtcXG4kYmx1ZS01MDA6ICRibHVlICFkZWZhdWx0O1xcbiRibHVlLTYwMDogc2hhZGUtY29sb3IoJGJsdWUsIDIwJSkgIWRlZmF1bHQ7XFxuJGJsdWUtNzAwOiBzaGFkZS1jb2xvcigkYmx1ZSwgNDAlKSAhZGVmYXVsdDtcXG4kYmx1ZS04MDA6IHNoYWRlLWNvbG9yKCRibHVlLCA2MCUpICFkZWZhdWx0O1xcbiRibHVlLTkwMDogc2hhZGUtY29sb3IoJGJsdWUsIDgwJSkgIWRlZmF1bHQ7XFxuXFxuJGluZGlnby0xMDA6IHRpbnQtY29sb3IoJGluZGlnbywgODAlKSAhZGVmYXVsdDtcXG4kaW5kaWdvLTIwMDogdGludC1jb2xvcigkaW5kaWdvLCA2MCUpICFkZWZhdWx0O1xcbiRpbmRpZ28tMzAwOiB0aW50LWNvbG9yKCRpbmRpZ28sIDQwJSkgIWRlZmF1bHQ7XFxuJGluZGlnby00MDA6IHRpbnQtY29sb3IoJGluZGlnbywgMjAlKSAhZGVmYXVsdDtcXG4kaW5kaWdvLTUwMDogJGluZGlnbyAhZGVmYXVsdDtcXG4kaW5kaWdvLTYwMDogc2hhZGUtY29sb3IoJGluZGlnbywgMjAlKSAhZGVmYXVsdDtcXG4kaW5kaWdvLTcwMDogc2hhZGUtY29sb3IoJGluZGlnbywgNDAlKSAhZGVmYXVsdDtcXG4kaW5kaWdvLTgwMDogc2hhZGUtY29sb3IoJGluZGlnbywgNjAlKSAhZGVmYXVsdDtcXG4kaW5kaWdvLTkwMDogc2hhZGUtY29sb3IoJGluZGlnbywgODAlKSAhZGVmYXVsdDtcXG5cXG4kcHVycGxlLTEwMDogdGludC1jb2xvcigkcHVycGxlLCA4MCUpICFkZWZhdWx0O1xcbiRwdXJwbGUtMjAwOiB0aW50LWNvbG9yKCRwdXJwbGUsIDYwJSkgIWRlZmF1bHQ7XFxuJHB1cnBsZS0zMDA6IHRpbnQtY29sb3IoJHB1cnBsZSwgNDAlKSAhZGVmYXVsdDtcXG4kcHVycGxlLTQwMDogdGludC1jb2xvcigkcHVycGxlLCAyMCUpICFkZWZhdWx0O1xcbiRwdXJwbGUtNTAwOiAkcHVycGxlICFkZWZhdWx0O1xcbiRwdXJwbGUtNjAwOiBzaGFkZS1jb2xvcigkcHVycGxlLCAyMCUpICFkZWZhdWx0O1xcbiRwdXJwbGUtNzAwOiBzaGFkZS1jb2xvcigkcHVycGxlLCA0MCUpICFkZWZhdWx0O1xcbiRwdXJwbGUtODAwOiBzaGFkZS1jb2xvcigkcHVycGxlLCA2MCUpICFkZWZhdWx0O1xcbiRwdXJwbGUtOTAwOiBzaGFkZS1jb2xvcigkcHVycGxlLCA4MCUpICFkZWZhdWx0O1xcblxcbiRwaW5rLTEwMDogdGludC1jb2xvcigkcGluaywgODAlKSAhZGVmYXVsdDtcXG4kcGluay0yMDA6IHRpbnQtY29sb3IoJHBpbmssIDYwJSkgIWRlZmF1bHQ7XFxuJHBpbmstMzAwOiB0aW50LWNvbG9yKCRwaW5rLCA0MCUpICFkZWZhdWx0O1xcbiRwaW5rLTQwMDogdGludC1jb2xvcigkcGluaywgMjAlKSAhZGVmYXVsdDtcXG4kcGluay01MDA6ICRwaW5rICFkZWZhdWx0O1xcbiRwaW5rLTYwMDogc2hhZGUtY29sb3IoJHBpbmssIDIwJSkgIWRlZmF1bHQ7XFxuJHBpbmstNzAwOiBzaGFkZS1jb2xvcigkcGluaywgNDAlKSAhZGVmYXVsdDtcXG4kcGluay04MDA6IHNoYWRlLWNvbG9yKCRwaW5rLCA2MCUpICFkZWZhdWx0O1xcbiRwaW5rLTkwMDogc2hhZGUtY29sb3IoJHBpbmssIDgwJSkgIWRlZmF1bHQ7XFxuXFxuJHJlZC0xMDA6IHRpbnQtY29sb3IoJHJlZCwgODAlKSAhZGVmYXVsdDtcXG4kcmVkLTIwMDogdGludC1jb2xvcigkcmVkLCA2MCUpICFkZWZhdWx0O1xcbiRyZWQtMzAwOiB0aW50LWNvbG9yKCRyZWQsIDQwJSkgIWRlZmF1bHQ7XFxuJHJlZC00MDA6IHRpbnQtY29sb3IoJHJlZCwgMjAlKSAhZGVmYXVsdDtcXG4kcmVkLTUwMDogJHJlZCAhZGVmYXVsdDtcXG4kcmVkLTYwMDogc2hhZGUtY29sb3IoJHJlZCwgMjAlKSAhZGVmYXVsdDtcXG4kcmVkLTcwMDogc2hhZGUtY29sb3IoJHJlZCwgNDAlKSAhZGVmYXVsdDtcXG4kcmVkLTgwMDogc2hhZGUtY29sb3IoJHJlZCwgNjAlKSAhZGVmYXVsdDtcXG4kcmVkLTkwMDogc2hhZGUtY29sb3IoJHJlZCwgODAlKSAhZGVmYXVsdDtcXG5cXG4kb3JhbmdlLTEwMDogdGludC1jb2xvcigkb3JhbmdlLCA4MCUpICFkZWZhdWx0O1xcbiRvcmFuZ2UtMjAwOiB0aW50LWNvbG9yKCRvcmFuZ2UsIDYwJSkgIWRlZmF1bHQ7XFxuJG9yYW5nZS0zMDA6IHRpbnQtY29sb3IoJG9yYW5nZSwgNDAlKSAhZGVmYXVsdDtcXG4kb3JhbmdlLTQwMDogdGludC1jb2xvcigkb3JhbmdlLCAyMCUpICFkZWZhdWx0O1xcbiRvcmFuZ2UtNTAwOiAkb3JhbmdlICFkZWZhdWx0O1xcbiRvcmFuZ2UtNjAwOiBzaGFkZS1jb2xvcigkb3JhbmdlLCAyMCUpICFkZWZhdWx0O1xcbiRvcmFuZ2UtNzAwOiBzaGFkZS1jb2xvcigkb3JhbmdlLCA0MCUpICFkZWZhdWx0O1xcbiRvcmFuZ2UtODAwOiBzaGFkZS1jb2xvcigkb3JhbmdlLCA2MCUpICFkZWZhdWx0O1xcbiRvcmFuZ2UtOTAwOiBzaGFkZS1jb2xvcigkb3JhbmdlLCA4MCUpICFkZWZhdWx0O1xcblxcbiR5ZWxsb3ctMTAwOiB0aW50LWNvbG9yKCR5ZWxsb3csIDgwJSkgIWRlZmF1bHQ7XFxuJHllbGxvdy0yMDA6IHRpbnQtY29sb3IoJHllbGxvdywgNjAlKSAhZGVmYXVsdDtcXG4keWVsbG93LTMwMDogdGludC1jb2xvcigkeWVsbG93LCA0MCUpICFkZWZhdWx0O1xcbiR5ZWxsb3ctNDAwOiB0aW50LWNvbG9yKCR5ZWxsb3csIDIwJSkgIWRlZmF1bHQ7XFxuJHllbGxvdy01MDA6ICR5ZWxsb3cgIWRlZmF1bHQ7XFxuJHllbGxvdy02MDA6IHNoYWRlLWNvbG9yKCR5ZWxsb3csIDIwJSkgIWRlZmF1bHQ7XFxuJHllbGxvdy03MDA6IHNoYWRlLWNvbG9yKCR5ZWxsb3csIDQwJSkgIWRlZmF1bHQ7XFxuJHllbGxvdy04MDA6IHNoYWRlLWNvbG9yKCR5ZWxsb3csIDYwJSkgIWRlZmF1bHQ7XFxuJHllbGxvdy05MDA6IHNoYWRlLWNvbG9yKCR5ZWxsb3csIDgwJSkgIWRlZmF1bHQ7XFxuXFxuJGdyZWVuLTEwMDogdGludC1jb2xvcigkZ3JlZW4sIDgwJSkgIWRlZmF1bHQ7XFxuJGdyZWVuLTIwMDogdGludC1jb2xvcigkZ3JlZW4sIDYwJSkgIWRlZmF1bHQ7XFxuJGdyZWVuLTMwMDogdGludC1jb2xvcigkZ3JlZW4sIDQwJSkgIWRlZmF1bHQ7XFxuJGdyZWVuLTQwMDogdGludC1jb2xvcigkZ3JlZW4sIDIwJSkgIWRlZmF1bHQ7XFxuJGdyZWVuLTUwMDogJGdyZWVuICFkZWZhdWx0O1xcbiRncmVlbi02MDA6IHNoYWRlLWNvbG9yKCRncmVlbiwgMjAlKSAhZGVmYXVsdDtcXG4kZ3JlZW4tNzAwOiBzaGFkZS1jb2xvcigkZ3JlZW4sIDQwJSkgIWRlZmF1bHQ7XFxuJGdyZWVuLTgwMDogc2hhZGUtY29sb3IoJGdyZWVuLCA2MCUpICFkZWZhdWx0O1xcbiRncmVlbi05MDA6IHNoYWRlLWNvbG9yKCRncmVlbiwgODAlKSAhZGVmYXVsdDtcXG5cXG4kdGVhbC0xMDA6IHRpbnQtY29sb3IoJHRlYWwsIDgwJSkgIWRlZmF1bHQ7XFxuJHRlYWwtMjAwOiB0aW50LWNvbG9yKCR0ZWFsLCA2MCUpICFkZWZhdWx0O1xcbiR0ZWFsLTMwMDogdGludC1jb2xvcigkdGVhbCwgNDAlKSAhZGVmYXVsdDtcXG4kdGVhbC00MDA6IHRpbnQtY29sb3IoJHRlYWwsIDIwJSkgIWRlZmF1bHQ7XFxuJHRlYWwtNTAwOiAkdGVhbCAhZGVmYXVsdDtcXG4kdGVhbC02MDA6IHNoYWRlLWNvbG9yKCR0ZWFsLCAyMCUpICFkZWZhdWx0O1xcbiR0ZWFsLTcwMDogc2hhZGUtY29sb3IoJHRlYWwsIDQwJSkgIWRlZmF1bHQ7XFxuJHRlYWwtODAwOiBzaGFkZS1jb2xvcigkdGVhbCwgNjAlKSAhZGVmYXVsdDtcXG4kdGVhbC05MDA6IHNoYWRlLWNvbG9yKCR0ZWFsLCA4MCUpICFkZWZhdWx0O1xcblxcbiRjeWFuLTEwMDogdGludC1jb2xvcigkY3lhbiwgODAlKSAhZGVmYXVsdDtcXG4kY3lhbi0yMDA6IHRpbnQtY29sb3IoJGN5YW4sIDYwJSkgIWRlZmF1bHQ7XFxuJGN5YW4tMzAwOiB0aW50LWNvbG9yKCRjeWFuLCA0MCUpICFkZWZhdWx0O1xcbiRjeWFuLTQwMDogdGludC1jb2xvcigkY3lhbiwgMjAlKSAhZGVmYXVsdDtcXG4kY3lhbi01MDA6ICRjeWFuICFkZWZhdWx0O1xcbiRjeWFuLTYwMDogc2hhZGUtY29sb3IoJGN5YW4sIDIwJSkgIWRlZmF1bHQ7XFxuJGN5YW4tNzAwOiBzaGFkZS1jb2xvcigkY3lhbiwgNDAlKSAhZGVmYXVsdDtcXG4kY3lhbi04MDA6IHNoYWRlLWNvbG9yKCRjeWFuLCA2MCUpICFkZWZhdWx0O1xcbiRjeWFuLTkwMDogc2hhZGUtY29sb3IoJGN5YW4sIDgwJSkgIWRlZmF1bHQ7XFxuXFxuJGJsdWVzOiAoXFxuICBcXFwiYmx1ZS0xMDBcXFwiOiAkYmx1ZS0xMDAsXFxuICBcXFwiYmx1ZS0yMDBcXFwiOiAkYmx1ZS0yMDAsXFxuICBcXFwiYmx1ZS0zMDBcXFwiOiAkYmx1ZS0zMDAsXFxuICBcXFwiYmx1ZS00MDBcXFwiOiAkYmx1ZS00MDAsXFxuICBcXFwiYmx1ZS01MDBcXFwiOiAkYmx1ZS01MDAsXFxuICBcXFwiYmx1ZS02MDBcXFwiOiAkYmx1ZS02MDAsXFxuICBcXFwiYmx1ZS03MDBcXFwiOiAkYmx1ZS03MDAsXFxuICBcXFwiYmx1ZS04MDBcXFwiOiAkYmx1ZS04MDAsXFxuICBcXFwiYmx1ZS05MDBcXFwiOiAkYmx1ZS05MDBcXG4pICFkZWZhdWx0O1xcblxcbiRpbmRpZ29zOiAoXFxuICBcXFwiaW5kaWdvLTEwMFxcXCI6ICRpbmRpZ28tMTAwLFxcbiAgXFxcImluZGlnby0yMDBcXFwiOiAkaW5kaWdvLTIwMCxcXG4gIFxcXCJpbmRpZ28tMzAwXFxcIjogJGluZGlnby0zMDAsXFxuICBcXFwiaW5kaWdvLTQwMFxcXCI6ICRpbmRpZ28tNDAwLFxcbiAgXFxcImluZGlnby01MDBcXFwiOiAkaW5kaWdvLTUwMCxcXG4gIFxcXCJpbmRpZ28tNjAwXFxcIjogJGluZGlnby02MDAsXFxuICBcXFwiaW5kaWdvLTcwMFxcXCI6ICRpbmRpZ28tNzAwLFxcbiAgXFxcImluZGlnby04MDBcXFwiOiAkaW5kaWdvLTgwMCxcXG4gIFxcXCJpbmRpZ28tOTAwXFxcIjogJGluZGlnby05MDBcXG4pICFkZWZhdWx0O1xcblxcbiRwdXJwbGVzOiAoXFxuICBcXFwicHVycGxlLTEwMFxcXCI6ICRwdXJwbGUtMTAwLFxcbiAgXFxcInB1cnBsZS0yMDBcXFwiOiAkcHVycGxlLTIwMCxcXG4gIFxcXCJwdXJwbGUtMzAwXFxcIjogJHB1cnBsZS0zMDAsXFxuICBcXFwicHVycGxlLTQwMFxcXCI6ICRwdXJwbGUtNDAwLFxcbiAgXFxcInB1cnBsZS01MDBcXFwiOiAkcHVycGxlLTUwMCxcXG4gIFxcXCJwdXJwbGUtNjAwXFxcIjogJHB1cnBsZS02MDAsXFxuICBcXFwicHVycGxlLTcwMFxcXCI6ICRwdXJwbGUtNzAwLFxcbiAgXFxcInB1cnBsZS04MDBcXFwiOiAkcHVycGxlLTgwMCxcXG4gIFxcXCJwdXJwbGUtOTAwXFxcIjogJHB1cnBsZS05MDBcXG4pICFkZWZhdWx0O1xcblxcbiRwaW5rczogKFxcbiAgXFxcInBpbmstMTAwXFxcIjogJHBpbmstMTAwLFxcbiAgXFxcInBpbmstMjAwXFxcIjogJHBpbmstMjAwLFxcbiAgXFxcInBpbmstMzAwXFxcIjogJHBpbmstMzAwLFxcbiAgXFxcInBpbmstNDAwXFxcIjogJHBpbmstNDAwLFxcbiAgXFxcInBpbmstNTAwXFxcIjogJHBpbmstNTAwLFxcbiAgXFxcInBpbmstNjAwXFxcIjogJHBpbmstNjAwLFxcbiAgXFxcInBpbmstNzAwXFxcIjogJHBpbmstNzAwLFxcbiAgXFxcInBpbmstODAwXFxcIjogJHBpbmstODAwLFxcbiAgXFxcInBpbmstOTAwXFxcIjogJHBpbmstOTAwXFxuKSAhZGVmYXVsdDtcXG5cXG4kcmVkczogKFxcbiAgXFxcInJlZC0xMDBcXFwiOiAkcmVkLTEwMCxcXG4gIFxcXCJyZWQtMjAwXFxcIjogJHJlZC0yMDAsXFxuICBcXFwicmVkLTMwMFxcXCI6ICRyZWQtMzAwLFxcbiAgXFxcInJlZC00MDBcXFwiOiAkcmVkLTQwMCxcXG4gIFxcXCJyZWQtNTAwXFxcIjogJHJlZC01MDAsXFxuICBcXFwicmVkLTYwMFxcXCI6ICRyZWQtNjAwLFxcbiAgXFxcInJlZC03MDBcXFwiOiAkcmVkLTcwMCxcXG4gIFxcXCJyZWQtODAwXFxcIjogJHJlZC04MDAsXFxuICBcXFwicmVkLTkwMFxcXCI6ICRyZWQtOTAwXFxuKSAhZGVmYXVsdDtcXG5cXG4kb3JhbmdlczogKFxcbiAgXFxcIm9yYW5nZS0xMDBcXFwiOiAkb3JhbmdlLTEwMCxcXG4gIFxcXCJvcmFuZ2UtMjAwXFxcIjogJG9yYW5nZS0yMDAsXFxuICBcXFwib3JhbmdlLTMwMFxcXCI6ICRvcmFuZ2UtMzAwLFxcbiAgXFxcIm9yYW5nZS00MDBcXFwiOiAkb3JhbmdlLTQwMCxcXG4gIFxcXCJvcmFuZ2UtNTAwXFxcIjogJG9yYW5nZS01MDAsXFxuICBcXFwib3JhbmdlLTYwMFxcXCI6ICRvcmFuZ2UtNjAwLFxcbiAgXFxcIm9yYW5nZS03MDBcXFwiOiAkb3JhbmdlLTcwMCxcXG4gIFxcXCJvcmFuZ2UtODAwXFxcIjogJG9yYW5nZS04MDAsXFxuICBcXFwib3JhbmdlLTkwMFxcXCI6ICRvcmFuZ2UtOTAwXFxuKSAhZGVmYXVsdDtcXG5cXG4keWVsbG93czogKFxcbiAgXFxcInllbGxvdy0xMDBcXFwiOiAkeWVsbG93LTEwMCxcXG4gIFxcXCJ5ZWxsb3ctMjAwXFxcIjogJHllbGxvdy0yMDAsXFxuICBcXFwieWVsbG93LTMwMFxcXCI6ICR5ZWxsb3ctMzAwLFxcbiAgXFxcInllbGxvdy00MDBcXFwiOiAkeWVsbG93LTQwMCxcXG4gIFxcXCJ5ZWxsb3ctNTAwXFxcIjogJHllbGxvdy01MDAsXFxuICBcXFwieWVsbG93LTYwMFxcXCI6ICR5ZWxsb3ctNjAwLFxcbiAgXFxcInllbGxvdy03MDBcXFwiOiAkeWVsbG93LTcwMCxcXG4gIFxcXCJ5ZWxsb3ctODAwXFxcIjogJHllbGxvdy04MDAsXFxuICBcXFwieWVsbG93LTkwMFxcXCI6ICR5ZWxsb3ctOTAwXFxuKSAhZGVmYXVsdDtcXG5cXG4kZ3JlZW5zOiAoXFxuICBcXFwiZ3JlZW4tMTAwXFxcIjogJGdyZWVuLTEwMCxcXG4gIFxcXCJncmVlbi0yMDBcXFwiOiAkZ3JlZW4tMjAwLFxcbiAgXFxcImdyZWVuLTMwMFxcXCI6ICRncmVlbi0zMDAsXFxuICBcXFwiZ3JlZW4tNDAwXFxcIjogJGdyZWVuLTQwMCxcXG4gIFxcXCJncmVlbi01MDBcXFwiOiAkZ3JlZW4tNTAwLFxcbiAgXFxcImdyZWVuLTYwMFxcXCI6ICRncmVlbi02MDAsXFxuICBcXFwiZ3JlZW4tNzAwXFxcIjogJGdyZWVuLTcwMCxcXG4gIFxcXCJncmVlbi04MDBcXFwiOiAkZ3JlZW4tODAwLFxcbiAgXFxcImdyZWVuLTkwMFxcXCI6ICRncmVlbi05MDBcXG4pICFkZWZhdWx0O1xcblxcbiR0ZWFsczogKFxcbiAgXFxcInRlYWwtMTAwXFxcIjogJHRlYWwtMTAwLFxcbiAgXFxcInRlYWwtMjAwXFxcIjogJHRlYWwtMjAwLFxcbiAgXFxcInRlYWwtMzAwXFxcIjogJHRlYWwtMzAwLFxcbiAgXFxcInRlYWwtNDAwXFxcIjogJHRlYWwtNDAwLFxcbiAgXFxcInRlYWwtNTAwXFxcIjogJHRlYWwtNTAwLFxcbiAgXFxcInRlYWwtNjAwXFxcIjogJHRlYWwtNjAwLFxcbiAgXFxcInRlYWwtNzAwXFxcIjogJHRlYWwtNzAwLFxcbiAgXFxcInRlYWwtODAwXFxcIjogJHRlYWwtODAwLFxcbiAgXFxcInRlYWwtOTAwXFxcIjogJHRlYWwtOTAwXFxuKSAhZGVmYXVsdDtcXG5cXG4kY3lhbnM6IChcXG4gIFxcXCJjeWFuLTEwMFxcXCI6ICRjeWFuLTEwMCxcXG4gIFxcXCJjeWFuLTIwMFxcXCI6ICRjeWFuLTIwMCxcXG4gIFxcXCJjeWFuLTMwMFxcXCI6ICRjeWFuLTMwMCxcXG4gIFxcXCJjeWFuLTQwMFxcXCI6ICRjeWFuLTQwMCxcXG4gIFxcXCJjeWFuLTUwMFxcXCI6ICRjeWFuLTUwMCxcXG4gIFxcXCJjeWFuLTYwMFxcXCI6ICRjeWFuLTYwMCxcXG4gIFxcXCJjeWFuLTcwMFxcXCI6ICRjeWFuLTcwMCxcXG4gIFxcXCJjeWFuLTgwMFxcXCI6ICRjeWFuLTgwMCxcXG4gIFxcXCJjeWFuLTkwMFxcXCI6ICRjeWFuLTkwMFxcbikgIWRlZmF1bHQ7XFxuLy8gZnVzdi1lbmFibGVcXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdGhlbWUtY29sb3ItdmFyaWFibGVzXFxuJHByaW1hcnk6ICAgICAgICRibHVlICFkZWZhdWx0O1xcbiRzZWNvbmRhcnk6ICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XFxuJHN1Y2Nlc3M6ICAgICAgICRncmVlbiAhZGVmYXVsdDtcXG4kaW5mbzogICAgICAgICAgJGN5YW4gIWRlZmF1bHQ7XFxuJHdhcm5pbmc6ICAgICAgICR5ZWxsb3cgIWRlZmF1bHQ7XFxuJGRhbmdlcjogICAgICAgICRyZWQgIWRlZmF1bHQ7XFxuJGxpZ2h0OiAgICAgICAgICRncmF5LTEwMCAhZGVmYXVsdDtcXG4kZGFyazogICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgdGhlbWUtY29sb3ItdmFyaWFibGVzXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHRoZW1lLWNvbG9ycy1tYXBcXG4kdGhlbWUtY29sb3JzOiAoXFxuICBcXFwicHJpbWFyeVxcXCI6ICAgICRwcmltYXJ5LFxcbiAgXFxcInNlY29uZGFyeVxcXCI6ICAkc2Vjb25kYXJ5LFxcbiAgXFxcInN1Y2Nlc3NcXFwiOiAgICAkc3VjY2VzcyxcXG4gIFxcXCJpbmZvXFxcIjogICAgICAgJGluZm8sXFxuICBcXFwid2FybmluZ1xcXCI6ICAgICR3YXJuaW5nLFxcbiAgXFxcImRhbmdlclxcXCI6ICAgICAkZGFuZ2VyLFxcbiAgXFxcImxpZ2h0XFxcIjogICAgICAkbGlnaHQsXFxuICBcXFwiZGFya1xcXCI6ICAgICAgICRkYXJrXFxuKSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIHRoZW1lLWNvbG9ycy1tYXBcXG5cXG4vLyBDaGFyYWN0ZXJzIHdoaWNoIGFyZSBlc2NhcGVkIGJ5IHRoZSBlc2NhcGUtc3ZnIGZ1bmN0aW9uXFxuJGVzY2FwZWQtY2hhcmFjdGVyczogKFxcbiAgKFxcXCI8XFxcIiwgXFxcIiUzY1xcXCIpLFxcbiAgKFxcXCI+XFxcIiwgXFxcIiUzZVxcXCIpLFxcbiAgKFxcXCIjXFxcIiwgXFxcIiUyM1xcXCIpLFxcbiAgKFxcXCIoXFxcIiwgXFxcIiUyOFxcXCIpLFxcbiAgKFxcXCIpXFxcIiwgXFxcIiUyOVxcXCIpLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8gT3B0aW9uc1xcbi8vXFxuLy8gUXVpY2tseSBtb2RpZnkgZ2xvYmFsIHN0eWxpbmcgYnkgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIG9wdGlvbmFsIGZlYXR1cmVzLlxcblxcbiRlbmFibGUtY2FyZXQ6ICAgICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7XFxuJGVuYWJsZS1yb3VuZGVkOiAgICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcXG4kZW5hYmxlLXNoYWRvd3M6ICAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcXG4kZW5hYmxlLWdyYWRpZW50czogICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcXG4kZW5hYmxlLXRyYW5zaXRpb25zOiAgICAgICAgICB0cnVlICFkZWZhdWx0O1xcbiRlbmFibGUtcmVkdWNlZC1tb3Rpb246ICAgICAgIHRydWUgIWRlZmF1bHQ7XFxuJGVuYWJsZS1zbW9vdGgtc2Nyb2xsOiAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcXG4kZW5hYmxlLWdyaWQtY2xhc3NlczogICAgICAgICB0cnVlICFkZWZhdWx0O1xcbiRlbmFibGUtY29udGFpbmVyLWNsYXNzZXM6ICAgIHRydWUgIWRlZmF1bHQ7XFxuJGVuYWJsZS1jc3NncmlkOiAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XFxuJGVuYWJsZS1idXR0b24tcG9pbnRlcnM6ICAgICAgdHJ1ZSAhZGVmYXVsdDtcXG4kZW5hYmxlLXJmczogICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0O1xcbiRlbmFibGUtdmFsaWRhdGlvbi1pY29uczogICAgIHRydWUgIWRlZmF1bHQ7XFxuJGVuYWJsZS1uZWdhdGl2ZS1tYXJnaW5zOiAgICAgZmFsc2UgIWRlZmF1bHQ7XFxuJGVuYWJsZS1kZXByZWNhdGlvbi1tZXNzYWdlczogdHJ1ZSAhZGVmYXVsdDtcXG4kZW5hYmxlLWltcG9ydGFudC11dGlsaXRpZXM6ICB0cnVlICFkZWZhdWx0O1xcblxcbi8vIFByZWZpeCBmb3IgOnJvb3QgQ1NTIHZhcmlhYmxlc1xcblxcbiR2YXJpYWJsZS1wcmVmaXg6ICAgICAgICAgICAgIGJzLSAhZGVmYXVsdDsgLy8gRGVwcmVjYXRlZCBpbiB2NS4yLjAgZm9yIHRoZSBzaG9ydGVyIGAkcHJlZml4YFxcbiRwcmVmaXg6ICAgICAgICAgICAgICAgICAgICAgICR2YXJpYWJsZS1wcmVmaXggIWRlZmF1bHQ7XFxuXFxuLy8gR3JhZGllbnRcXG4vL1xcbi8vIFRoZSBncmFkaWVudCB3aGljaCBpcyBhZGRlZCB0byBjb21wb25lbnRzIGlmIGAkZW5hYmxlLWdyYWRpZW50c2AgaXMgYHRydWVgXFxuLy8gVGhpcyBncmFkaWVudCBpcyBhbHNvIGFkZGVkIHRvIGVsZW1lbnRzIHdpdGggYC5iZy1ncmFkaWVudGBcXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdmFyaWFibGUtZ3JhZGllbnRcXG4kZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoJHdoaXRlLCAuMTUpLCByZ2JhKCR3aGl0ZSwgMCkpICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgdmFyaWFibGUtZ3JhZGllbnRcXG5cXG4vLyBTcGFjaW5nXFxuLy9cXG4vLyBDb250cm9sIHRoZSBkZWZhdWx0IHN0eWxpbmcgb2YgbW9zdCBCb290c3RyYXAgZWxlbWVudHMgYnkgbW9kaWZ5aW5nIHRoZXNlXFxuLy8gdmFyaWFibGVzLiBNb3N0bHkgZm9jdXNlZCBvbiBzcGFjaW5nLlxcbi8vIFlvdSBjYW4gYWRkIG1vcmUgZW50cmllcyB0byB0aGUgJHNwYWNlcnMgbWFwLCBzaG91bGQgeW91IG5lZWQgbW9yZSB2YXJpYXRpb24uXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHNwYWNlci12YXJpYWJsZXMtbWFwc1xcbiRzcGFjZXI6IDFyZW0gIWRlZmF1bHQ7XFxuJHNwYWNlcnM6IChcXG4gIDA6IDAsXFxuICAxOiAkc3BhY2VyICogLjI1LFxcbiAgMjogJHNwYWNlciAqIC41LFxcbiAgMzogJHNwYWNlcixcXG4gIDQ6ICRzcGFjZXIgKiAxLjUsXFxuICA1OiAkc3BhY2VyICogMyxcXG4pICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgc3BhY2VyLXZhcmlhYmxlcy1tYXBzXFxuXFxuLy8gUG9zaXRpb25cXG4vL1xcbi8vIERlZmluZSB0aGUgZWRnZSBwb3NpdGlvbmluZyBhbmNob3JzIG9mIHRoZSBwb3NpdGlvbiB1dGlsaXRpZXMuXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHBvc2l0aW9uLW1hcFxcbiRwb3NpdGlvbi12YWx1ZXM6IChcXG4gIDA6IDAsXFxuICA1MDogNTAlLFxcbiAgMTAwOiAxMDAlXFxuKSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIHBvc2l0aW9uLW1hcFxcblxcbi8vIEJvZHlcXG4vL1xcbi8vIFNldHRpbmdzIGZvciB0aGUgYDxib2R5PmAgZWxlbWVudC5cXG5cXG4kYm9keS1iZzogICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiRib2R5LWNvbG9yOiAgICAgICAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XFxuJGJvZHktdGV4dC1hbGlnbjogICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XFxuXFxuLy8gTGlua3NcXG4vL1xcbi8vIFN0eWxlIGFuY2hvciBlbGVtZW50cy5cXG5cXG4kbGluay1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJpbWFyeSAhZGVmYXVsdDtcXG4kbGluay1kZWNvcmF0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmUgIWRlZmF1bHQ7XFxuJGxpbmstc2hhZGUtcGVyY2VudGFnZTogICAgICAgICAgICAgICAgICAgMjAlICFkZWZhdWx0O1xcbiRsaW5rLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0LWNvbG9yKCRsaW5rLWNvbG9yLCAkbGluay1zaGFkZS1wZXJjZW50YWdlKSAhZGVmYXVsdDtcXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcblxcbiRzdHJldGNoZWQtbGluay1wc2V1ZG8tZWxlbWVudDogICAgICAgICAgIGFmdGVyICFkZWZhdWx0O1xcbiRzdHJldGNoZWQtbGluay16LWluZGV4OiAgICAgICAgICAgICAgICAgIDEgIWRlZmF1bHQ7XFxuXFxuLy8gUGFyYWdyYXBoc1xcbi8vXFxuLy8gU3R5bGUgcCBlbGVtZW50LlxcblxcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogICAxcmVtICFkZWZhdWx0O1xcblxcblxcbi8vIEdyaWQgYnJlYWtwb2ludHNcXG4vL1xcbi8vIERlZmluZSB0aGUgbWluaW11bSBkaW1lbnNpb25zIGF0IHdoaWNoIHlvdXIgbGF5b3V0IHdpbGwgY2hhbmdlLFxcbi8vIGFkYXB0aW5nIHRvIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMsIGZvciB1c2UgaW4gbWVkaWEgcXVlcmllcy5cXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZ3JpZC1icmVha3BvaW50c1xcbiRncmlkLWJyZWFrcG9pbnRzOiAoXFxuICB4czogMCxcXG4gIHNtOiA1NzZweCxcXG4gIG1kOiA3NjhweCxcXG4gIGxnOiA5OTJweCxcXG4gIHhsOiAxMjAwcHgsXFxuICB4eGw6IDE0MDBweFxcbikgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBncmlkLWJyZWFrcG9pbnRzXFxuXFxuQGluY2x1ZGUgX2Fzc2VydC1hc2NlbmRpbmcoJGdyaWQtYnJlYWtwb2ludHMsIFxcXCIkZ3JpZC1icmVha3BvaW50c1xcXCIpO1xcbkBpbmNsdWRlIF9hc3NlcnQtc3RhcnRzLWF0LXplcm8oJGdyaWQtYnJlYWtwb2ludHMsIFxcXCIkZ3JpZC1icmVha3BvaW50c1xcXCIpO1xcblxcblxcbi8vIEdyaWQgY29udGFpbmVyc1xcbi8vXFxuLy8gRGVmaW5lIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGAuY29udGFpbmVyYCBmb3IgZGlmZmVyZW50IHNjcmVlbiBzaXplcy5cXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgY29udGFpbmVyLW1heC13aWR0aHNcXG4kY29udGFpbmVyLW1heC13aWR0aHM6IChcXG4gIHNtOiA1NDBweCxcXG4gIG1kOiA3MjBweCxcXG4gIGxnOiA5NjBweCxcXG4gIHhsOiAxMTQwcHgsXFxuICB4eGw6IDEzMjBweFxcbikgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBjb250YWluZXItbWF4LXdpZHRoc1xcblxcbkBpbmNsdWRlIF9hc3NlcnQtYXNjZW5kaW5nKCRjb250YWluZXItbWF4LXdpZHRocywgXFxcIiRjb250YWluZXItbWF4LXdpZHRoc1xcXCIpO1xcblxcblxcbi8vIEdyaWQgY29sdW1uc1xcbi8vXFxuLy8gU2V0IHRoZSBudW1iZXIgb2YgY29sdW1ucyBhbmQgc3BlY2lmeSB0aGUgd2lkdGggb2YgdGhlIGd1dHRlcnMuXFxuXFxuJGdyaWQtY29sdW1uczogICAgICAgICAgICAgICAgMTIgIWRlZmF1bHQ7XFxuJGdyaWQtZ3V0dGVyLXdpZHRoOiAgICAgICAgICAgMS41cmVtICFkZWZhdWx0O1xcbiRncmlkLXJvdy1jb2x1bW5zOiAgICAgICAgICAgIDYgIWRlZmF1bHQ7XFxuXFxuLy8gQ29udGFpbmVyIHBhZGRpbmdcXG5cXG4kY29udGFpbmVyLXBhZGRpbmcteDogJGdyaWQtZ3V0dGVyLXdpZHRoICFkZWZhdWx0O1xcblxcblxcbi8vIENvbXBvbmVudHNcXG4vL1xcbi8vIERlZmluZSBjb21tb24gcGFkZGluZyBhbmQgYm9yZGVyIHJhZGl1cyBzaXplcyBhbmQgbW9yZS5cXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYm9yZGVyLXZhcmlhYmxlc1xcbiRib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgIDFweCAhZGVmYXVsdDtcXG4kYm9yZGVyLXdpZHRoczogKFxcbiAgMTogMXB4LFxcbiAgMjogMnB4LFxcbiAgMzogM3B4LFxcbiAgNDogNHB4LFxcbiAgNTogNXB4XFxuKSAhZGVmYXVsdDtcXG5cXG4kYm9yZGVyLXN0eWxlOiAgICAgICAgICAgICAgICBzb2xpZCAhZGVmYXVsdDtcXG4kYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XFxuJGJvcmRlci1jb2xvci10cmFuc2x1Y2VudDogICAgcmdiYSgkYmxhY2ssIC4xNzUpICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgYm9yZGVyLXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBib3JkZXItcmFkaXVzLXZhcmlhYmxlc1xcbiRib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgIC4zNzVyZW0gIWRlZmF1bHQ7XFxuJGJvcmRlci1yYWRpdXMtc206ICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xcbiRib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xcbiRib3JkZXItcmFkaXVzLXhsOiAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XFxuJGJvcmRlci1yYWRpdXMtMnhsOiAgICAgICAgICAgMnJlbSAhZGVmYXVsdDtcXG4kYm9yZGVyLXJhZGl1cy1waWxsOiAgICAgICAgICA1MHJlbSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGJvcmRlci1yYWRpdXMtdmFyaWFibGVzXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJveC1zaGFkb3ctdmFyaWFibGVzXFxuJGJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICAgMCAuNXJlbSAxcmVtIHJnYmEoJGJsYWNrLCAuMTUpICFkZWZhdWx0O1xcbiRib3gtc2hhZG93LXNtOiAgICAgICAgICAgICAgIDAgLjEyNXJlbSAuMjVyZW0gcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xcbiRib3gtc2hhZG93LWxnOiAgICAgICAgICAgICAgIDAgMXJlbSAzcmVtIHJnYmEoJGJsYWNrLCAuMTc1KSAhZGVmYXVsdDtcXG4kYm94LXNoYWRvdy1pbnNldDogICAgICAgICAgICBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIC4wNzUpICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgYm94LXNoYWRvdy12YXJpYWJsZXNcXG5cXG4kY29tcG9uZW50LWFjdGl2ZS1jb2xvcjogICAgICAkd2hpdGUgIWRlZmF1bHQ7XFxuJGNvbXBvbmVudC1hY3RpdmUtYmc6ICAgICAgICAgJHByaW1hcnkgIWRlZmF1bHQ7XFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNhcmV0LXZhcmlhYmxlc1xcbiRjYXJldC13aWR0aDogICAgICAgICAgICAgICAgIC4zZW0gIWRlZmF1bHQ7XFxuJGNhcmV0LXZlcnRpY2FsLWFsaWduOiAgICAgICAgJGNhcmV0LXdpZHRoICogLjg1ICFkZWZhdWx0O1xcbiRjYXJldC1zcGFjaW5nOiAgICAgICAgICAgICAgICRjYXJldC13aWR0aCAqIC44NSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGNhcmV0LXZhcmlhYmxlc1xcblxcbiR0cmFuc2l0aW9uLWJhc2U6ICAgICAgICAgICAgIGFsbCAuMnMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XFxuJHRyYW5zaXRpb24tZmFkZTogICAgICAgICAgICAgb3BhY2l0eSAuMTVzIGxpbmVhciAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3Mtc3RhcnQgY29sbGFwc2UtdHJhbnNpdGlvblxcbiR0cmFuc2l0aW9uLWNvbGxhcHNlOiAgICAgICAgIGhlaWdodCAuMzVzIGVhc2UgIWRlZmF1bHQ7XFxuJHRyYW5zaXRpb24tY29sbGFwc2Utd2lkdGg6ICAgd2lkdGggLjM1cyBlYXNlICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgY29sbGFwc2UtdHJhbnNpdGlvblxcblxcbi8vIHN0eWxlbGludC1kaXNhYmxlIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxcbi8vIHNjc3MtZG9jcy1zdGFydCBhc3BlY3QtcmF0aW9zXFxuJGFzcGVjdC1yYXRpb3M6IChcXG4gIFxcXCIxeDFcXFwiOiAxMDAlLFxcbiAgXFxcIjR4M1xcXCI6IGNhbGMoMyAvIDQgKiAxMDAlKSxcXG4gIFxcXCIxNng5XFxcIjogY2FsYyg5IC8gMTYgKiAxMDAlKSxcXG4gIFxcXCIyMXg5XFxcIjogY2FsYyg5IC8gMjEgKiAxMDAlKVxcbikgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBhc3BlY3QtcmF0aW9zXFxuLy8gc3R5bGVsaW50LWVuYWJsZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcXG5cXG4vLyBUeXBvZ3JhcGh5XFxuLy9cXG4vLyBGb250LCBsaW5lLWhlaWdodCwgYW5kIGNvbG9yIGZvciBib2R5IHRleHQsIGhlYWRpbmdzLCBhbmQgbW9yZS5cXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9udC12YXJpYWJsZXNcXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSB2YWx1ZS1rZXl3b3JkLWNhc2VcXG4kZm9udC1mYW1pbHktc2Fucy1zZXJpZjogICAgICBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIFxcXCJTZWdvZSBVSVxcXCIsIFJvYm90bywgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgXFxcIk5vdG8gU2Fuc1xcXCIsIFxcXCJMaWJlcmF0aW9uIFNhbnNcXFwiLCBBcmlhbCwgc2Fucy1zZXJpZiwgXFxcIkFwcGxlIENvbG9yIEVtb2ppXFxcIiwgXFxcIlNlZ29lIFVJIEVtb2ppXFxcIiwgXFxcIlNlZ29lIFVJIFN5bWJvbFxcXCIsIFxcXCJOb3RvIENvbG9yIEVtb2ppXFxcIiAhZGVmYXVsdDtcXG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiAgICAgICBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFxcXCJMaWJlcmF0aW9uIE1vbm9cXFwiLCBcXFwiQ291cmllciBOZXdcXFwiLCBtb25vc3BhY2UgIWRlZmF1bHQ7XFxuLy8gc3R5bGVsaW50LWVuYWJsZSB2YWx1ZS1rZXl3b3JkLWNhc2VcXG4kZm9udC1mYW1pbHktYmFzZTogICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Zm9udC1zYW5zLXNlcmlmKSAhZGVmYXVsdDtcXG4kZm9udC1mYW1pbHktY29kZTogICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Zm9udC1tb25vc3BhY2UpICFkZWZhdWx0O1xcblxcbi8vICRmb250LXNpemUtcm9vdCBhZmZlY3RzIHRoZSB2YWx1ZSBvZiBgcmVtYCwgd2hpY2ggaXMgdXNlZCBmb3IgYXMgd2VsbCBmb250IHNpemVzLCBwYWRkaW5ncywgYW5kIG1hcmdpbnNcXG4vLyAkZm9udC1zaXplLWJhc2UgYWZmZWN0cyB0aGUgZm9udCBzaXplIG9mIHRoZSBib2R5IHRleHRcXG4kZm9udC1zaXplLXJvb3Q6ICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRmb250LXNpemUtYmFzZTogICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7IC8vIEFzc3VtZXMgdGhlIGJyb3dzZXIgZGVmYXVsdCwgdHlwaWNhbGx5IGAxNnB4YFxcbiRmb250LXNpemUtc206ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIC44NzUgIWRlZmF1bHQ7XFxuJGZvbnQtc2l6ZS1sZzogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS4yNSAhZGVmYXVsdDtcXG5cXG4kZm9udC13ZWlnaHQtbGlnaHRlcjogICAgICAgICBsaWdodGVyICFkZWZhdWx0O1xcbiRmb250LXdlaWdodC1saWdodDogICAgICAgICAgIDMwMCAhZGVmYXVsdDtcXG4kZm9udC13ZWlnaHQtbm9ybWFsOiAgICAgICAgICA0MDAgIWRlZmF1bHQ7XFxuJGZvbnQtd2VpZ2h0LXNlbWlib2xkOiAgICAgICAgNjAwICFkZWZhdWx0O1xcbiRmb250LXdlaWdodC1ib2xkOiAgICAgICAgICAgIDcwMCAhZGVmYXVsdDtcXG4kZm9udC13ZWlnaHQtYm9sZGVyOiAgICAgICAgICBib2xkZXIgIWRlZmF1bHQ7XFxuXFxuJGZvbnQtd2VpZ2h0LWJhc2U6ICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcXG5cXG4kbGluZS1oZWlnaHQtYmFzZTogICAgICAgICAgICAxLjUgIWRlZmF1bHQ7XFxuJGxpbmUtaGVpZ2h0LXNtOiAgICAgICAgICAgICAgMS4yNSAhZGVmYXVsdDtcXG4kbGluZS1oZWlnaHQtbGc6ICAgICAgICAgICAgICAyICFkZWZhdWx0O1xcblxcbiRoMS1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDIuNSAhZGVmYXVsdDtcXG4kaDItZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAyICFkZWZhdWx0O1xcbiRoMy1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuNzUgIWRlZmF1bHQ7XFxuJGg0LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS41ICFkZWZhdWx0O1xcbiRoNS1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuMjUgIWRlZmF1bHQ7XFxuJGg2LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgZm9udC12YXJpYWJsZXNcXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9udC1zaXplc1xcbiRmb250LXNpemVzOiAoXFxuICAxOiAkaDEtZm9udC1zaXplLFxcbiAgMjogJGgyLWZvbnQtc2l6ZSxcXG4gIDM6ICRoMy1mb250LXNpemUsXFxuICA0OiAkaDQtZm9udC1zaXplLFxcbiAgNTogJGg1LWZvbnQtc2l6ZSxcXG4gIDY6ICRoNi1mb250LXNpemVcXG4pICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgZm9udC1zaXplc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBoZWFkaW5ncy12YXJpYWJsZXNcXG4kaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTogICAgICAkc3BhY2VyICogLjUgIWRlZmF1bHQ7XFxuJGhlYWRpbmdzLWZvbnQtZmFtaWx5OiAgICAgICAgbnVsbCAhZGVmYXVsdDtcXG4kaGVhZGluZ3MtZm9udC1zdHlsZTogICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRoZWFkaW5ncy1mb250LXdlaWdodDogICAgICAgIDUwMCAhZGVmYXVsdDtcXG4kaGVhZGluZ3MtbGluZS1oZWlnaHQ6ICAgICAgICAxLjIgIWRlZmF1bHQ7XFxuJGhlYWRpbmdzLWNvbG9yOiAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGhlYWRpbmdzLXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBkaXNwbGF5LWhlYWRpbmdzXFxuJGRpc3BsYXktZm9udC1zaXplczogKFxcbiAgMTogNXJlbSxcXG4gIDI6IDQuNXJlbSxcXG4gIDM6IDRyZW0sXFxuICA0OiAzLjVyZW0sXFxuICA1OiAzcmVtLFxcbiAgNjogMi41cmVtXFxuKSAhZGVmYXVsdDtcXG5cXG4kZGlzcGxheS1mb250LWZhbWlseTogbnVsbCAhZGVmYXVsdDtcXG4kZGlzcGxheS1mb250LXN0eWxlOiAgbnVsbCAhZGVmYXVsdDtcXG4kZGlzcGxheS1mb250LXdlaWdodDogMzAwICFkZWZhdWx0O1xcbiRkaXNwbGF5LWxpbmUtaGVpZ2h0OiAkaGVhZGluZ3MtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBkaXNwbGF5LWhlYWRpbmdzXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHR5cGUtdmFyaWFibGVzXFxuJGxlYWQtZm9udC1zaXplOiAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS4yNSAhZGVmYXVsdDtcXG4kbGVhZC1mb250LXdlaWdodDogICAgICAgICAgICAzMDAgIWRlZmF1bHQ7XFxuXFxuJHNtYWxsLWZvbnQtc2l6ZTogICAgICAgICAgICAgLjg3NWVtICFkZWZhdWx0O1xcblxcbiRzdWItc3VwLWZvbnQtc2l6ZTogICAgICAgICAgIC43NWVtICFkZWZhdWx0O1xcblxcbiR0ZXh0LW11dGVkOiAgICAgICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcXG5cXG4kaW5pdGlhbGlzbS1mb250LXNpemU6ICAgICAgICAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xcblxcbiRibG9ja3F1b3RlLW1hcmdpbi15OiAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XFxuJGJsb2NrcXVvdGUtZm9udC1zaXplOiAgICAgICAgJGZvbnQtc2l6ZS1iYXNlICogMS4yNSAhZGVmYXVsdDtcXG4kYmxvY2txdW90ZS1mb290ZXItY29sb3I6ICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XFxuJGJsb2NrcXVvdGUtZm9vdGVyLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcXG5cXG4kaHItbWFyZ2luLXk6ICAgICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xcbiRoci1jb2xvcjogICAgICAgICAgICAgICAgICAgIGluaGVyaXQgIWRlZmF1bHQ7XFxuXFxuLy8gZnVzdi1kaXNhYmxlXFxuJGhyLWJnLWNvbG9yOiAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDsgLy8gRGVwcmVjYXRlZCBpbiB2NS4yLjBcXG4kaHItaGVpZ2h0OiAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0OyAvLyBEZXByZWNhdGVkIGluIHY1LjIuMFxcbi8vIGZ1c3YtZW5hYmxlXFxuXFxuJGhyLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDsgLy8gQWxsb3dzIGZvciBpbmhlcml0ZWQgY29sb3JzXFxuJGhyLWJvcmRlci13aWR0aDogICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG4kaHItb3BhY2l0eTogICAgICAgICAgICAgICAgICAuMjUgIWRlZmF1bHQ7XFxuXFxuJGxlZ2VuZC1tYXJnaW4tYm90dG9tOiAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XFxuJGxlZ2VuZC1mb250LXNpemU6ICAgICAgICAgICAgMS41cmVtICFkZWZhdWx0O1xcbiRsZWdlbmQtZm9udC13ZWlnaHQ6ICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XFxuXFxuJGR0LWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XFxuXFxuJGxpc3QtaW5saW5lLXBhZGRpbmc6ICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XFxuXFxuJG1hcmstcGFkZGluZzogICAgICAgICAgICAgICAgLjE4NzVlbSAhZGVmYXVsdDtcXG4kbWFyay1iZzogICAgICAgICAgICAgICAgICAgICAkeWVsbG93LTEwMCAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIHR5cGUtdmFyaWFibGVzXFxuXFxuXFxuLy8gVGFibGVzXFxuLy9cXG4vLyBDdXN0b21pemVzIHRoZSBgLnRhYmxlYCBjb21wb25lbnQgd2l0aCBiYXNpYyB2YWx1ZXMsIGVhY2ggdXNlZCBhY3Jvc3MgYWxsIHRhYmxlIHZhcmlhdGlvbnMuXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHRhYmxlLXZhcmlhYmxlc1xcbiR0YWJsZS1jZWxsLXBhZGRpbmcteTogICAgICAgIC41cmVtICFkZWZhdWx0O1xcbiR0YWJsZS1jZWxsLXBhZGRpbmcteDogICAgICAgIC41cmVtICFkZWZhdWx0O1xcbiR0YWJsZS1jZWxsLXBhZGRpbmcteS1zbTogICAgIC4yNXJlbSAhZGVmYXVsdDtcXG4kdGFibGUtY2VsbC1wYWRkaW5nLXgtc206ICAgICAuMjVyZW0gIWRlZmF1bHQ7XFxuXFxuJHRhYmxlLWNlbGwtdmVydGljYWwtYWxpZ246ICAgdG9wICFkZWZhdWx0O1xcblxcbiR0YWJsZS1jb2xvcjogICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWNvbG9yKSAhZGVmYXVsdDtcXG4kdGFibGUtYmc6ICAgICAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAhZGVmYXVsdDtcXG4kdGFibGUtYWNjZW50LWJnOiAgICAgICAgICAgICB0cmFuc3BhcmVudCAhZGVmYXVsdDtcXG5cXG4kdGFibGUtdGgtZm9udC13ZWlnaHQ6ICAgICAgICBudWxsICFkZWZhdWx0O1xcblxcbiR0YWJsZS1zdHJpcGVkLWNvbG9yOiAgICAgICAgICR0YWJsZS1jb2xvciAhZGVmYXVsdDtcXG4kdGFibGUtc3RyaXBlZC1iZy1mYWN0b3I6ICAgICAuMDUgIWRlZmF1bHQ7XFxuJHRhYmxlLXN0cmlwZWQtYmc6ICAgICAgICAgICAgcmdiYSgkYmxhY2ssICR0YWJsZS1zdHJpcGVkLWJnLWZhY3RvcikgIWRlZmF1bHQ7XFxuXFxuJHRhYmxlLWFjdGl2ZS1jb2xvcjogICAgICAgICAgJHRhYmxlLWNvbG9yICFkZWZhdWx0O1xcbiR0YWJsZS1hY3RpdmUtYmctZmFjdG9yOiAgICAgIC4xICFkZWZhdWx0O1xcbiR0YWJsZS1hY3RpdmUtYmc6ICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAkdGFibGUtYWN0aXZlLWJnLWZhY3RvcikgIWRlZmF1bHQ7XFxuXFxuJHRhYmxlLWhvdmVyLWNvbG9yOiAgICAgICAgICAgJHRhYmxlLWNvbG9yICFkZWZhdWx0O1xcbiR0YWJsZS1ob3Zlci1iZy1mYWN0b3I6ICAgICAgIC4wNzUgIWRlZmF1bHQ7XFxuJHRhYmxlLWhvdmVyLWJnOiAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssICR0YWJsZS1ob3Zlci1iZy1mYWN0b3IpICFkZWZhdWx0O1xcblxcbiR0YWJsZS1ib3JkZXItZmFjdG9yOiAgICAgICAgIC4xICFkZWZhdWx0O1xcbiR0YWJsZS1ib3JkZXItd2lkdGg6ICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuJHRhYmxlLWJvcmRlci1jb2xvcjogICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvcikgIWRlZmF1bHQ7XFxuXFxuJHRhYmxlLXN0cmlwZWQtb3JkZXI6ICAgICAgICAgb2RkICFkZWZhdWx0O1xcbiR0YWJsZS1zdHJpcGVkLWNvbHVtbnMtb3JkZXI6IGV2ZW4gIWRlZmF1bHQ7XFxuXFxuJHRhYmxlLWdyb3VwLXNlcGFyYXRvci1jb2xvcjogY3VycmVudGNvbG9yICFkZWZhdWx0O1xcblxcbiR0YWJsZS1jYXB0aW9uLWNvbG9yOiAgICAgICAgICR0ZXh0LW11dGVkICFkZWZhdWx0O1xcblxcbiR0YWJsZS1iZy1zY2FsZTogICAgICAgICAgICAgIC04MCUgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCB0YWJsZS12YXJpYWJsZXNcXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdGFibGUtbG9vcFxcbiR0YWJsZS12YXJpYW50czogKFxcbiAgXFxcInByaW1hcnlcXFwiOiAgICBzaGlmdC1jb2xvcigkcHJpbWFyeSwgJHRhYmxlLWJnLXNjYWxlKSxcXG4gIFxcXCJzZWNvbmRhcnlcXFwiOiAgc2hpZnQtY29sb3IoJHNlY29uZGFyeSwgJHRhYmxlLWJnLXNjYWxlKSxcXG4gIFxcXCJzdWNjZXNzXFxcIjogICAgc2hpZnQtY29sb3IoJHN1Y2Nlc3MsICR0YWJsZS1iZy1zY2FsZSksXFxuICBcXFwiaW5mb1xcXCI6ICAgICAgIHNoaWZ0LWNvbG9yKCRpbmZvLCAkdGFibGUtYmctc2NhbGUpLFxcbiAgXFxcIndhcm5pbmdcXFwiOiAgICBzaGlmdC1jb2xvcigkd2FybmluZywgJHRhYmxlLWJnLXNjYWxlKSxcXG4gIFxcXCJkYW5nZXJcXFwiOiAgICAgc2hpZnQtY29sb3IoJGRhbmdlciwgJHRhYmxlLWJnLXNjYWxlKSxcXG4gIFxcXCJsaWdodFxcXCI6ICAgICAgJGxpZ2h0LFxcbiAgXFxcImRhcmtcXFwiOiAgICAgICAkZGFyayxcXG4pICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgdGFibGUtbG9vcFxcblxcblxcbi8vIEJ1dHRvbnMgKyBGb3Jtc1xcbi8vXFxuLy8gU2hhcmVkIHZhcmlhYmxlcyB0aGF0IGFyZSByZWFzc2lnbmVkIHRvIGAkaW5wdXQtYCBhbmQgYCRidG4tYCBzcGVjaWZpYyB2YXJpYWJsZXMuXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGlucHV0LWJ0bi12YXJpYWJsZXNcXG4kaW5wdXQtYnRuLXBhZGRpbmcteTogICAgICAgICAuMzc1cmVtICFkZWZhdWx0O1xcbiRpbnB1dC1idG4tcGFkZGluZy14OiAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcXG4kaW5wdXQtYnRuLWZvbnQtZmFtaWx5OiAgICAgICBudWxsICFkZWZhdWx0O1xcbiRpbnB1dC1idG4tZm9udC1zaXplOiAgICAgICAgICRmb250LXNpemUtYmFzZSAhZGVmYXVsdDtcXG4kaW5wdXQtYnRuLWxpbmUtaGVpZ2h0OiAgICAgICAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcXG5cXG4kaW5wdXQtYnRuLWZvY3VzLXdpZHRoOiAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcXG4kaW5wdXQtYnRuLWZvY3VzLWNvbG9yLW9wYWNpdHk6IC4yNSAhZGVmYXVsdDtcXG4kaW5wdXQtYnRuLWZvY3VzLWNvbG9yOiAgICAgICAgIHJnYmEoJGNvbXBvbmVudC1hY3RpdmUtYmcsICRpbnB1dC1idG4tZm9jdXMtY29sb3Itb3BhY2l0eSkgIWRlZmF1bHQ7XFxuJGlucHV0LWJ0bi1mb2N1cy1ibHVyOiAgICAgICAgICAwICFkZWZhdWx0O1xcbiRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdzogICAgMCAwICRpbnB1dC1idG4tZm9jdXMtYmx1ciAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICRpbnB1dC1idG4tZm9jdXMtY29sb3IgIWRlZmF1bHQ7XFxuXFxuJGlucHV0LWJ0bi1wYWRkaW5nLXktc206ICAgICAgLjI1cmVtICFkZWZhdWx0O1xcbiRpbnB1dC1idG4tcGFkZGluZy14LXNtOiAgICAgIC41cmVtICFkZWZhdWx0O1xcbiRpbnB1dC1idG4tZm9udC1zaXplLXNtOiAgICAgICRmb250LXNpemUtc20gIWRlZmF1bHQ7XFxuXFxuJGlucHV0LWJ0bi1wYWRkaW5nLXktbGc6ICAgICAgLjVyZW0gIWRlZmF1bHQ7XFxuJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGc6ICAgICAgMXJlbSAhZGVmYXVsdDtcXG4kaW5wdXQtYnRuLWZvbnQtc2l6ZS1sZzogICAgICAkZm9udC1zaXplLWxnICFkZWZhdWx0O1xcblxcbiRpbnB1dC1idG4tYm9yZGVyLXdpZHRoOiAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBpbnB1dC1idG4tdmFyaWFibGVzXFxuXFxuXFxuLy8gQnV0dG9uc1xcbi8vXFxuLy8gRm9yIGVhY2ggb2YgQm9vdHN0cmFwJ3MgYnV0dG9ucywgZGVmaW5lIHRleHQsIGJhY2tncm91bmQsIGFuZCBib3JkZXIgY29sb3IuXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJ0bi12YXJpYWJsZXNcXG4kYnRuLXBhZGRpbmcteTogICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteSAhZGVmYXVsdDtcXG4kYnRuLXBhZGRpbmcteDogICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteCAhZGVmYXVsdDtcXG4kYnRuLWZvbnQtZmFtaWx5OiAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xcbiRidG4tZm9udC1zaXplOiAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1zaXplICFkZWZhdWx0O1xcbiRidG4tbGluZS1oZWlnaHQ6ICAgICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQgIWRlZmF1bHQ7XFxuJGJ0bi13aGl0ZS1zcGFjZTogICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDsgLy8gU2V0IHRvIGBub3dyYXBgIHRvIHByZXZlbnQgdGV4dCB3cmFwcGluZ1xcblxcbiRidG4tcGFkZGluZy15LXNtOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LXNtICFkZWZhdWx0O1xcbiRidG4tcGFkZGluZy14LXNtOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LXNtICFkZWZhdWx0O1xcbiRidG4tZm9udC1zaXplLXNtOiAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1zaXplLXNtICFkZWZhdWx0O1xcblxcbiRidG4tcGFkZGluZy15LWxnOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LWxnICFkZWZhdWx0O1xcbiRidG4tcGFkZGluZy14LWxnOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LWxnICFkZWZhdWx0O1xcbiRidG4tZm9udC1zaXplLWxnOiAgICAgICAgICAgICRpbnB1dC1idG4tZm9udC1zaXplLWxnICFkZWZhdWx0O1xcblxcbiRidG4tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcblxcbiRidG4tZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICRmb250LXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XFxuJGJ0bi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgaW5zZXQgMCAxcHggMCByZ2JhKCR3aGl0ZSwgLjE1KSwgMCAxcHggMXB4IHJnYmEoJGJsYWNrLCAuMDc1KSAhZGVmYXVsdDtcXG4kYnRuLWZvY3VzLXdpZHRoOiAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICFkZWZhdWx0O1xcbiRidG4tZm9jdXMtYm94LXNoYWRvdzogICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcXG4kYnRuLWRpc2FibGVkLW9wYWNpdHk6ICAgICAgICAuNjUgIWRlZmF1bHQ7XFxuJGJ0bi1hY3RpdmUtYm94LXNoYWRvdzogICAgICAgaW5zZXQgMCAzcHggNXB4IHJnYmEoJGJsYWNrLCAuMTI1KSAhZGVmYXVsdDtcXG5cXG4kYnRuLWxpbmstY29sb3I6ICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9bGluay1jb2xvcikgIWRlZmF1bHQ7XFxuJGJ0bi1saW5rLWhvdmVyLWNvbG9yOiAgICAgICAgdmFyKC0tI3skcHJlZml4fWxpbmstaG92ZXItY29sb3IpICFkZWZhdWx0O1xcbiRidG4tbGluay1kaXNhYmxlZC1jb2xvcjogICAgICRncmF5LTYwMCAhZGVmYXVsdDtcXG5cXG4vLyBBbGxvd3MgZm9yIGN1c3RvbWl6aW5nIGJ1dHRvbiByYWRpdXMgaW5kZXBlbmRlbnRseSBmcm9tIGdsb2JhbCBib3JkZXIgcmFkaXVzXFxuJGJ0bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuJGJ0bi1ib3JkZXItcmFkaXVzLXNtOiAgICAgICAgJGJvcmRlci1yYWRpdXMtc20gIWRlZmF1bHQ7XFxuJGJ0bi1ib3JkZXItcmFkaXVzLWxnOiAgICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XFxuXFxuJGJ0bi10cmFuc2l0aW9uOiAgICAgICAgICAgICAgY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xcblxcbiRidG4taG92ZXItYmctc2hhZGUtYW1vdW50OiAgICAgICAxNSUgIWRlZmF1bHQ7XFxuJGJ0bi1ob3Zlci1iZy10aW50LWFtb3VudDogICAgICAgIDE1JSAhZGVmYXVsdDtcXG4kYnRuLWhvdmVyLWJvcmRlci1zaGFkZS1hbW91bnQ6ICAgMjAlICFkZWZhdWx0O1xcbiRidG4taG92ZXItYm9yZGVyLXRpbnQtYW1vdW50OiAgICAxMCUgIWRlZmF1bHQ7XFxuJGJ0bi1hY3RpdmUtYmctc2hhZGUtYW1vdW50OiAgICAgIDIwJSAhZGVmYXVsdDtcXG4kYnRuLWFjdGl2ZS1iZy10aW50LWFtb3VudDogICAgICAgMjAlICFkZWZhdWx0O1xcbiRidG4tYWN0aXZlLWJvcmRlci1zaGFkZS1hbW91bnQ6ICAyNSUgIWRlZmF1bHQ7XFxuJGJ0bi1hY3RpdmUtYm9yZGVyLXRpbnQtYW1vdW50OiAgIDEwJSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGJ0bi12YXJpYWJsZXNcXG5cXG5cXG4vLyBGb3Jtc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXRleHQtdmFyaWFibGVzXFxuJGZvcm0tdGV4dC1tYXJnaW4tdG9wOiAgICAgICAgICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcXG4kZm9ybS10ZXh0LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcXG4kZm9ybS10ZXh0LWZvbnQtc3R5bGU6ICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcXG4kZm9ybS10ZXh0LWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcXG4kZm9ybS10ZXh0LWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgJHRleHQtbXV0ZWQgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLXRleHQtdmFyaWFibGVzXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGZvcm0tbGFiZWwtdmFyaWFibGVzXFxuJGZvcm0tbGFiZWwtbWFyZ2luLWJvdHRvbTogICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xcbiRmb3JtLWxhYmVsLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRmb3JtLWxhYmVsLWZvbnQtc3R5bGU6ICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRmb3JtLWxhYmVsLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgZm9ybS1sYWJlbC12YXJpYWJsZXNcXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZm9ybS1pbnB1dC12YXJpYWJsZXNcXG4kaW5wdXQtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXkgIWRlZmF1bHQ7XFxuJGlucHV0LXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14ICFkZWZhdWx0O1xcbiRpbnB1dC1mb250LWZhbWlseTogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xcbiRpbnB1dC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvbnQtc2l6ZSAhZGVmYXVsdDtcXG4kaW5wdXQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgICAgICAgJGZvbnQtd2VpZ2h0LWJhc2UgIWRlZmF1bHQ7XFxuJGlucHV0LWxpbmUtaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQgIWRlZmF1bHQ7XFxuXFxuJGlucHV0LXBhZGRpbmcteS1zbTogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LXNtICFkZWZhdWx0O1xcbiRpbnB1dC1wYWRkaW5nLXgtc206ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteC1zbSAhZGVmYXVsdDtcXG4kaW5wdXQtZm9udC1zaXplLXNtOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtc20gIWRlZmF1bHQ7XFxuXFxuJGlucHV0LXBhZGRpbmcteS1sZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LWxnICFkZWZhdWx0O1xcbiRpbnB1dC1wYWRkaW5nLXgtbGc6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteC1sZyAhZGVmYXVsdDtcXG4kaW5wdXQtZm9udC1zaXplLWxnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1mb250LXNpemUtbGcgIWRlZmF1bHQ7XFxuXFxuJGlucHV0LWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xcbiRpbnB1dC1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRpbnB1dC1kaXNhYmxlZC1iZzogICAgICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XFxuJGlucHV0LWRpc2FibGVkLWJvcmRlci1jb2xvcjogICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XFxuXFxuJGlucHV0LWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICRib2R5LWNvbG9yICFkZWZhdWx0O1xcbiRpbnB1dC1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICAgICAkZ3JheS00MDAgIWRlZmF1bHQ7XFxuJGlucHV0LWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcbiRpbnB1dC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAgICAgICAkYm94LXNoYWRvdy1pbnNldCAhZGVmYXVsdDtcXG5cXG4kaW5wdXQtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuJGlucHV0LWJvcmRlci1yYWRpdXMtc206ICAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzLXNtICFkZWZhdWx0O1xcbiRpbnB1dC1ib3JkZXItcmFkaXVzLWxnOiAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcXG5cXG4kaW5wdXQtZm9jdXMtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJnICFkZWZhdWx0O1xcbiRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICB0aW50LWNvbG9yKCRjb21wb25lbnQtYWN0aXZlLWJnLCA1MCUpICFkZWZhdWx0O1xcbiRpbnB1dC1mb2N1cy1jb2xvcjogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XFxuJGlucHV0LWZvY3VzLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9jdXMtd2lkdGggIWRlZmF1bHQ7XFxuJGlucHV0LWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcXG5cXG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICAgICAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xcbiRpbnB1dC1wbGFpbnRleHQtY29sb3I6ICAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcXG5cXG4kaW5wdXQtaGVpZ2h0LWJvcmRlcjogICAgICAgICAgICAgICAgICAgJGlucHV0LWJvcmRlci13aWR0aCAqIDIgIWRlZmF1bHQ7XFxuXFxuJGlucHV0LWhlaWdodC1pbm5lcjogICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAxZW0sICRpbnB1dC1wYWRkaW5nLXkgKiAyKSAhZGVmYXVsdDtcXG4kaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGY6ICAgICAgICAgICAgICAgYWRkKCRpbnB1dC1saW5lLWhlaWdodCAqIC41ZW0sICRpbnB1dC1wYWRkaW5nLXkpICFkZWZhdWx0O1xcbiRpbnB1dC1oZWlnaHQtaW5uZXItcXVhcnRlcjogICAgICAgICAgICBhZGQoJGlucHV0LWxpbmUtaGVpZ2h0ICogLjI1ZW0sICRpbnB1dC1wYWRkaW5nLXkgKiAuNSkgIWRlZmF1bHQ7XFxuXFxuJGlucHV0LWhlaWdodDogICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAxZW0sIGFkZCgkaW5wdXQtcGFkZGluZy15ICogMiwgJGlucHV0LWhlaWdodC1ib3JkZXIsIGZhbHNlKSkgIWRlZmF1bHQ7XFxuJGlucHV0LWhlaWdodC1zbTogICAgICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAxZW0sIGFkZCgkaW5wdXQtcGFkZGluZy15LXNtICogMiwgJGlucHV0LWhlaWdodC1ib3JkZXIsIGZhbHNlKSkgIWRlZmF1bHQ7XFxuJGlucHV0LWhlaWdodC1sZzogICAgICAgICAgICAgICAgICAgICAgIGFkZCgkaW5wdXQtbGluZS1oZWlnaHQgKiAxZW0sIGFkZCgkaW5wdXQtcGFkZGluZy15LWxnICogMiwgJGlucHV0LWhlaWdodC1ib3JkZXIsIGZhbHNlKSkgIWRlZmF1bHQ7XFxuXFxuJGlucHV0LXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XFxuXFxuJGZvcm0tY29sb3Itd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgIDNyZW0gIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLWlucHV0LXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLWNoZWNrLXZhcmlhYmxlc1xcbiRmb3JtLWNoZWNrLWlucHV0LXdpZHRoOiAgICAgICAgICAgICAgICAgIDFlbSAhZGVmYXVsdDtcXG4kZm9ybS1jaGVjay1taW4taGVpZ2h0OiAgICAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcXG4kZm9ybS1jaGVjay1wYWRkaW5nLXN0YXJ0OiAgICAgICAgICAgICAgICAkZm9ybS1jaGVjay1pbnB1dC13aWR0aCArIC41ZW0gIWRlZmF1bHQ7XFxuJGZvcm0tY2hlY2stbWFyZ2luLWJvdHRvbTogICAgICAgICAgICAgICAgLjEyNXJlbSAhZGVmYXVsdDtcXG4kZm9ybS1jaGVjay1sYWJlbC1jb2xvcjogICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRmb3JtLWNoZWNrLWxhYmVsLWN1cnNvcjogICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XFxuJGZvcm0tY2hlY2stdHJhbnNpdGlvbjogICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcXG5cXG4kZm9ybS1jaGVjay1pbnB1dC1hY3RpdmUtZmlsdGVyOiAgICAgICAgICBicmlnaHRuZXNzKDkwJSkgIWRlZmF1bHQ7XFxuXFxuJGZvcm0tY2hlY2staW5wdXQtYmc6ICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJnICFkZWZhdWx0O1xcbiRmb3JtLWNoZWNrLWlucHV0LWJvcmRlcjogICAgICAgICAgICAgICAgIDFweCBzb2xpZCByZ2JhKCRibGFjaywgLjI1KSAhZGVmYXVsdDtcXG4kZm9ybS1jaGVjay1pbnB1dC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAuMjVlbSAhZGVmYXVsdDtcXG4kZm9ybS1jaGVjay1yYWRpby1ib3JkZXItcmFkaXVzOiAgICAgICAgICA1MCUgIWRlZmF1bHQ7XFxuJGZvcm0tY2hlY2staW5wdXQtZm9jdXMtYm9yZGVyOiAgICAgICAgICAgJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcXG4kZm9ybS1jaGVjay1pbnB1dC1mb2N1cy1ib3gtc2hhZG93OiAgICAgICAkaW5wdXQtYnRuLWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XFxuXFxuJGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1jb2xvcjogICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XFxuJGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1iZy1jb2xvcjogICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XFxuJGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1ib3JkZXItY29sb3I6ICAgJGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1iZy1jb2xvciAhZGVmYXVsdDtcXG4kZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJnLWltYWdlOiAgICAgICB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDIwIDIwJz48cGF0aCBmaWxsPSdub25lJyBzdHJva2U9JyN7JGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1jb2xvcn0nIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPSczJyBkPSdtNiAxMCAzIDMgNi02Jy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuJGZvcm0tY2hlY2stcmFkaW8tY2hlY2tlZC1iZy1pbWFnZTogICAgICAgdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9Jy00IC00IDggOCc+PGNpcmNsZSByPScyJyBmaWxsPScjeyRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtY29sb3J9Jy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuXFxuJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1jb2xvcjogICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XFxuJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1iZy1jb2xvcjogICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XFxuJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1ib3JkZXItY29sb3I6ICAgJGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1iZy1jb2xvciAhZGVmYXVsdDtcXG4kZm9ybS1jaGVjay1pbnB1dC1pbmRldGVybWluYXRlLWJnLWltYWdlOiAgICAgICB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDIwIDIwJz48cGF0aCBmaWxsPSdub25lJyBzdHJva2U9JyN7JGZvcm0tY2hlY2staW5wdXQtaW5kZXRlcm1pbmF0ZS1jb2xvcn0nIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPSczJyBkPSdNNiAxMGg4Jy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuXFxuJGZvcm0tY2hlY2staW5wdXQtZGlzYWJsZWQtb3BhY2l0eTogICAgICAgIC41ICFkZWZhdWx0O1xcbiRmb3JtLWNoZWNrLWxhYmVsLWRpc2FibGVkLW9wYWNpdHk6ICAgICAgICAkZm9ybS1jaGVjay1pbnB1dC1kaXNhYmxlZC1vcGFjaXR5ICFkZWZhdWx0O1xcbiRmb3JtLWNoZWNrLWJ0bi1jaGVjay1kaXNhYmxlZC1vcGFjaXR5OiAgICAkYnRuLWRpc2FibGVkLW9wYWNpdHkgIWRlZmF1bHQ7XFxuXFxuJGZvcm0tY2hlY2staW5saW5lLW1hcmdpbi1lbmQ6ICAgIDFyZW0gIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLWNoZWNrLXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXN3aXRjaC12YXJpYWJsZXNcXG4kZm9ybS1zd2l0Y2gtY29sb3I6ICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4yNSkgIWRlZmF1bHQ7XFxuJGZvcm0tc3dpdGNoLXdpZHRoOiAgICAgICAgICAgICAgIDJlbSAhZGVmYXVsdDtcXG4kZm9ybS1zd2l0Y2gtcGFkZGluZy1zdGFydDogICAgICAgJGZvcm0tc3dpdGNoLXdpZHRoICsgLjVlbSAhZGVmYXVsdDtcXG4kZm9ybS1zd2l0Y2gtYmctaW1hZ2U6ICAgICAgICAgICAgdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9Jy00IC00IDggOCc+PGNpcmNsZSByPSczJyBmaWxsPScjeyRmb3JtLXN3aXRjaC1jb2xvcn0nLz48L3N2Zz5cXFwiKSAhZGVmYXVsdDtcXG4kZm9ybS1zd2l0Y2gtYm9yZGVyLXJhZGl1czogICAgICAgJGZvcm0tc3dpdGNoLXdpZHRoICFkZWZhdWx0O1xcbiRmb3JtLXN3aXRjaC10cmFuc2l0aW9uOiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uIC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XFxuXFxuJGZvcm0tc3dpdGNoLWZvY3VzLWNvbG9yOiAgICAgICAgICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XFxuJGZvcm0tc3dpdGNoLWZvY3VzLWJnLWltYWdlOiAgICAgIHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnPjxjaXJjbGUgcj0nMycgZmlsbD0nI3skZm9ybS1zd2l0Y2gtZm9jdXMtY29sb3J9Jy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuXFxuJGZvcm0tc3dpdGNoLWNoZWNrZWQtY29sb3I6ICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xcbiRmb3JtLXN3aXRjaC1jaGVja2VkLWJnLWltYWdlOiAgICB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nLTQgLTQgOCA4Jz48Y2lyY2xlIHI9JzMnIGZpbGw9JyN7JGZvcm0tc3dpdGNoLWNoZWNrZWQtY29sb3J9Jy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuJGZvcm0tc3dpdGNoLWNoZWNrZWQtYmctcG9zaXRpb246IHJpZ2h0IGNlbnRlciAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tc3dpdGNoLXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBpbnB1dC1ncm91cC12YXJpYWJsZXNcXG4kaW5wdXQtZ3JvdXAtYWRkb24tcGFkZGluZy15OiAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteSAhZGVmYXVsdDtcXG4kaW5wdXQtZ3JvdXAtYWRkb24tcGFkZGluZy14OiAgICAgICAgICAgJGlucHV0LXBhZGRpbmcteCAhZGVmYXVsdDtcXG4kaW5wdXQtZ3JvdXAtYWRkb24tZm9udC13ZWlnaHQ6ICAgICAgICAgJGlucHV0LWZvbnQtd2VpZ2h0ICFkZWZhdWx0O1xcbiRpbnB1dC1ncm91cC1hZGRvbi1jb2xvcjogICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XFxuJGlucHV0LWdyb3VwLWFkZG9uLWJnOiAgICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcXG4kaW5wdXQtZ3JvdXAtYWRkb24tYm9yZGVyLWNvbG9yOiAgICAgICAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGlucHV0LWdyb3VwLXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXNlbGVjdC12YXJpYWJsZXNcXG4kZm9ybS1zZWxlY3QtcGFkZGluZy15OiAgICAgICAgICAgICAkaW5wdXQtcGFkZGluZy15ICFkZWZhdWx0O1xcbiRmb3JtLXNlbGVjdC1wYWRkaW5nLXg6ICAgICAgICAgICAgICRpbnB1dC1wYWRkaW5nLXggIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWZvbnQtZmFtaWx5OiAgICAgICAgICAgJGlucHV0LWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xcbiRmb3JtLXNlbGVjdC1mb250LXNpemU6ICAgICAgICAgICAgICRpbnB1dC1mb250LXNpemUgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nOiAgICAgJGZvcm0tc2VsZWN0LXBhZGRpbmcteCAqIDMgIWRlZmF1bHQ7IC8vIEV4dHJhIHBhZGRpbmcgZm9yIGJhY2tncm91bmQtaW1hZ2VcXG4kZm9ybS1zZWxlY3QtZm9udC13ZWlnaHQ6ICAgICAgICAgICAkaW5wdXQtZm9udC13ZWlnaHQgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWxpbmUtaGVpZ2h0OiAgICAgICAgICAgJGlucHV0LWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xcbiRmb3JtLXNlbGVjdC1jb2xvcjogICAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcXG4kZm9ybS1zZWxlY3QtYmc6ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWRpc2FibGVkLWNvbG9yOiAgICAgICAgbnVsbCAhZGVmYXVsdDtcXG4kZm9ybS1zZWxlY3QtZGlzYWJsZWQtYmc6ICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWRpc2FibGVkLWJvcmRlci1jb2xvcjogJGlucHV0LWRpc2FibGVkLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcXG4kZm9ybS1zZWxlY3QtYmctcG9zaXRpb246ICAgICAgICAgICByaWdodCAkZm9ybS1zZWxlY3QtcGFkZGluZy14IGNlbnRlciAhZGVmYXVsdDtcXG4kZm9ybS1zZWxlY3QtYmctc2l6ZTogICAgICAgICAgICAgICAxNnB4IDEycHggIWRlZmF1bHQ7IC8vIEluIHBpeGVscyBiZWNhdXNlIGltYWdlIGRpbWVuc2lvbnNcXG4kZm9ybS1zZWxlY3QtaW5kaWNhdG9yLWNvbG9yOiAgICAgICAkZ3JheS04MDAgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWluZGljYXRvcjogICAgICAgICAgICAgdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNiAxNic+PHBhdGggZmlsbD0nbm9uZScgc3Ryb2tlPScjeyRmb3JtLXNlbGVjdC1pbmRpY2F0b3ItY29sb3J9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMicgZD0nbTIgNSA2IDYgNi02Jy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuXFxuJGZvcm0tc2VsZWN0LWZlZWRiYWNrLWljb24tcGFkZGluZy1lbmQ6ICRmb3JtLXNlbGVjdC1wYWRkaW5nLXggKiAyLjUgKyAkZm9ybS1zZWxlY3QtaW5kaWNhdG9yLXBhZGRpbmcgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWZlZWRiYWNrLWljb24tcG9zaXRpb246ICAgIGNlbnRlciByaWdodCAkZm9ybS1zZWxlY3QtaW5kaWNhdG9yLXBhZGRpbmcgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWZlZWRiYWNrLWljb24tc2l6ZTogICAgICAgICRpbnB1dC1oZWlnaHQtaW5uZXItaGFsZiAkaW5wdXQtaGVpZ2h0LWlubmVyLWhhbGYgIWRlZmF1bHQ7XFxuXFxuJGZvcm0tc2VsZWN0LWJvcmRlci13aWR0aDogICAgICAgICRpbnB1dC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWJvcmRlci1jb2xvcjogICAgICAgICRpbnB1dC1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWJvcmRlci1yYWRpdXM6ICAgICAgICRpbnB1dC1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcbiRmb3JtLXNlbGVjdC1ib3gtc2hhZG93OiAgICAgICAgICAkYm94LXNoYWRvdy1pbnNldCAhZGVmYXVsdDtcXG5cXG4kZm9ybS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yOiAgJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcXG4kZm9ybS1zZWxlY3QtZm9jdXMtd2lkdGg6ICAgICAgICAgJGlucHV0LWZvY3VzLXdpZHRoICFkZWZhdWx0O1xcbiRmb3JtLXNlbGVjdC1mb2N1cy1ib3gtc2hhZG93OiAgICAwIDAgMCAkZm9ybS1zZWxlY3QtZm9jdXMtd2lkdGggJGlucHV0LWJ0bi1mb2N1cy1jb2xvciAhZGVmYXVsdDtcXG5cXG4kZm9ybS1zZWxlY3QtcGFkZGluZy15LXNtOiAgICAgICAgJGlucHV0LXBhZGRpbmcteS1zbSAhZGVmYXVsdDtcXG4kZm9ybS1zZWxlY3QtcGFkZGluZy14LXNtOiAgICAgICAgJGlucHV0LXBhZGRpbmcteC1zbSAhZGVmYXVsdDtcXG4kZm9ybS1zZWxlY3QtZm9udC1zaXplLXNtOiAgICAgICAgJGlucHV0LWZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcXG4kZm9ybS1zZWxlY3QtYm9yZGVyLXJhZGl1cy1zbTogICAgJGlucHV0LWJvcmRlci1yYWRpdXMtc20gIWRlZmF1bHQ7XFxuXFxuJGZvcm0tc2VsZWN0LXBhZGRpbmcteS1sZzogICAgICAgICRpbnB1dC1wYWRkaW5nLXktbGcgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LXBhZGRpbmcteC1sZzogICAgICAgICRpbnB1dC1wYWRkaW5nLXgtbGcgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWZvbnQtc2l6ZS1sZzogICAgICAgICRpbnB1dC1mb250LXNpemUtbGcgIWRlZmF1bHQ7XFxuJGZvcm0tc2VsZWN0LWJvcmRlci1yYWRpdXMtbGc6ICAgICRpbnB1dC1ib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xcblxcbiRmb3JtLXNlbGVjdC10cmFuc2l0aW9uOiAgICAgICAgICAkaW5wdXQtdHJhbnNpdGlvbiAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGZvcm0tc2VsZWN0LXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXJhbmdlLXZhcmlhYmxlc1xcbiRmb3JtLXJhbmdlLXRyYWNrLXdpZHRoOiAgICAgICAgICAxMDAlICFkZWZhdWx0O1xcbiRmb3JtLXJhbmdlLXRyYWNrLWhlaWdodDogICAgICAgICAuNXJlbSAhZGVmYXVsdDtcXG4kZm9ybS1yYW5nZS10cmFjay1jdXJzb3I6ICAgICAgICAgcG9pbnRlciAhZGVmYXVsdDtcXG4kZm9ybS1yYW5nZS10cmFjay1iZzogICAgICAgICAgICAgJGdyYXktMzAwICFkZWZhdWx0O1xcbiRmb3JtLXJhbmdlLXRyYWNrLWJvcmRlci1yYWRpdXM6ICAxcmVtICFkZWZhdWx0O1xcbiRmb3JtLXJhbmdlLXRyYWNrLWJveC1zaGFkb3c6ICAgICAkYm94LXNoYWRvdy1pbnNldCAhZGVmYXVsdDtcXG5cXG4kZm9ybS1yYW5nZS10aHVtYi13aWR0aDogICAgICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcXG4kZm9ybS1yYW5nZS10aHVtYi1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgJGZvcm0tcmFuZ2UtdGh1bWItd2lkdGggIWRlZmF1bHQ7XFxuJGZvcm0tcmFuZ2UtdGh1bWItYmc6ICAgICAgICAgICAgICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xcbiRmb3JtLXJhbmdlLXRodW1iLWJvcmRlcjogICAgICAgICAgICAgICAgICAwICFkZWZhdWx0O1xcbiRmb3JtLXJhbmdlLXRodW1iLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xcbiRmb3JtLXJhbmdlLXRodW1iLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAwIC4xcmVtIC4yNXJlbSByZ2JhKCRibGFjaywgLjEpICFkZWZhdWx0O1xcbiRmb3JtLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICAwIDAgMCAxcHggJGJvZHktYmcsICRpbnB1dC1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xcbiRmb3JtLXJhbmdlLXRodW1iLWZvY3VzLWJveC1zaGFkb3ctd2lkdGg6ICAkaW5wdXQtZm9jdXMtd2lkdGggIWRlZmF1bHQ7IC8vIEZvciBmb2N1cyBib3ggc2hhZG93IGlzc3VlIGluIEVkZ2VcXG4kZm9ybS1yYW5nZS10aHVtYi1hY3RpdmUtYmc6ICAgICAgICAgICAgICAgdGludC1jb2xvcigkY29tcG9uZW50LWFjdGl2ZS1iZywgNzAlKSAhZGVmYXVsdDtcXG4kZm9ybS1yYW5nZS10aHVtYi1kaXNhYmxlZC1iZzogICAgICAgICAgICAgJGdyYXktNTAwICFkZWZhdWx0O1xcbiRmb3JtLXJhbmdlLXRodW1iLXRyYW5zaXRpb246ICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLXJhbmdlLXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLWZpbGUtdmFyaWFibGVzXFxuJGZvcm0tZmlsZS1idXR0b24tY29sb3I6ICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcXG4kZm9ybS1maWxlLWJ1dHRvbi1iZzogICAgICAgICAgICAgJGlucHV0LWdyb3VwLWFkZG9uLWJnICFkZWZhdWx0O1xcbiRmb3JtLWZpbGUtYnV0dG9uLWhvdmVyLWJnOiAgICAgICBzaGFkZS1jb2xvcigkZm9ybS1maWxlLWJ1dHRvbi1iZywgNSUpICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgZm9ybS1maWxlLXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLWZsb2F0aW5nLXZhcmlhYmxlc1xcbiRmb3JtLWZsb2F0aW5nLWhlaWdodDogICAgICAgICAgICBhZGQoMy41cmVtLCAkaW5wdXQtaGVpZ2h0LWJvcmRlcikgIWRlZmF1bHQ7XFxuJGZvcm0tZmxvYXRpbmctbGluZS1oZWlnaHQ6ICAgICAgIDEuMjUgIWRlZmF1bHQ7XFxuJGZvcm0tZmxvYXRpbmctcGFkZGluZy14OiAgICAgICAgICRpbnB1dC1wYWRkaW5nLXggIWRlZmF1bHQ7XFxuJGZvcm0tZmxvYXRpbmctcGFkZGluZy15OiAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XFxuJGZvcm0tZmxvYXRpbmctaW5wdXQtcGFkZGluZy10OiAgIDEuNjI1cmVtICFkZWZhdWx0O1xcbiRmb3JtLWZsb2F0aW5nLWlucHV0LXBhZGRpbmctYjogICAuNjI1cmVtICFkZWZhdWx0O1xcbiRmb3JtLWZsb2F0aW5nLWxhYmVsLW9wYWNpdHk6ICAgICAuNjUgIWRlZmF1bHQ7XFxuJGZvcm0tZmxvYXRpbmctbGFiZWwtdHJhbnNmb3JtOiAgIHNjYWxlKC44NSkgdHJhbnNsYXRlWSgtLjVyZW0pIHRyYW5zbGF0ZVgoLjE1cmVtKSAhZGVmYXVsdDtcXG4kZm9ybS1mbG9hdGluZy10cmFuc2l0aW9uOiAgICAgICAgb3BhY2l0eSAuMXMgZWFzZS1pbi1vdXQsIHRyYW5zZm9ybSAuMXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLWZsb2F0aW5nLXZhcmlhYmxlc1xcblxcbi8vIEZvcm0gdmFsaWRhdGlvblxcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLWZlZWRiYWNrLXZhcmlhYmxlc1xcbiRmb3JtLWZlZWRiYWNrLW1hcmdpbi10b3A6ICAgICAgICAgICRmb3JtLXRleHQtbWFyZ2luLXRvcCAhZGVmYXVsdDtcXG4kZm9ybS1mZWVkYmFjay1mb250LXNpemU6ICAgICAgICAgICAkZm9ybS10ZXh0LWZvbnQtc2l6ZSAhZGVmYXVsdDtcXG4kZm9ybS1mZWVkYmFjay1mb250LXN0eWxlOiAgICAgICAgICAkZm9ybS10ZXh0LWZvbnQtc3R5bGUgIWRlZmF1bHQ7XFxuJGZvcm0tZmVlZGJhY2stdmFsaWQtY29sb3I6ICAgICAgICAgJHN1Y2Nlc3MgIWRlZmF1bHQ7XFxuJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvcjogICAgICAgJGRhbmdlciAhZGVmYXVsdDtcXG5cXG4kZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkLWNvbG9yOiAgICAkZm9ybS1mZWVkYmFjay12YWxpZC1jb2xvciAhZGVmYXVsdDtcXG4kZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkOiAgICAgICAgICB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDggOCc+PHBhdGggZmlsbD0nI3skZm9ybS1mZWVkYmFjay1pY29uLXZhbGlkLWNvbG9yfScgZD0nTTIuMyA2LjczLjYgNC41M2MtLjQtMS4wNC40Ni0xLjQgMS4xLS44bDEuMSAxLjQgMy40LTMuOGMuNi0uNjMgMS42LS4yNyAxLjIuN2wtNCA0LjZjLS40My41LS44LjQtMS4xLjF6Jy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuJGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkLWNvbG9yOiAgJGZvcm0tZmVlZGJhY2staW52YWxpZC1jb2xvciAhZGVmYXVsdDtcXG4kZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWQ6ICAgICAgICB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDEyIDEyJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nI3skZm9ybS1mZWVkYmFjay1pY29uLWludmFsaWQtY29sb3J9Jz48Y2lyY2xlIGN4PSc2JyBjeT0nNicgcj0nNC41Jy8+PHBhdGggc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgZD0nTTUuOCAzLjZoLjRMNiA2LjV6Jy8+PGNpcmNsZSBjeD0nNicgY3k9JzguMicgcj0nLjYnIGZpbGw9JyN7JGZvcm0tZmVlZGJhY2staWNvbi1pbnZhbGlkLWNvbG9yfScgc3Ryb2tlPSdub25lJy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLWZlZWRiYWNrLXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBmb3JtLXZhbGlkYXRpb24tc3RhdGVzXFxuJGZvcm0tdmFsaWRhdGlvbi1zdGF0ZXM6IChcXG4gIFxcXCJ2YWxpZFxcXCI6IChcXG4gICAgXFxcImNvbG9yXFxcIjogJGZvcm0tZmVlZGJhY2stdmFsaWQtY29sb3IsXFxuICAgIFxcXCJpY29uXFxcIjogJGZvcm0tZmVlZGJhY2staWNvbi12YWxpZFxcbiAgKSxcXG4gIFxcXCJpbnZhbGlkXFxcIjogKFxcbiAgICBcXFwiY29sb3JcXFwiOiAkZm9ybS1mZWVkYmFjay1pbnZhbGlkLWNvbG9yLFxcbiAgICBcXFwiaWNvblxcXCI6ICRmb3JtLWZlZWRiYWNrLWljb24taW52YWxpZFxcbiAgKVxcbikgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBmb3JtLXZhbGlkYXRpb24tc3RhdGVzXFxuXFxuLy8gWi1pbmRleCBtYXN0ZXIgbGlzdFxcbi8vXFxuLy8gV2FybmluZzogQXZvaWQgY3VzdG9taXppbmcgdGhlc2UgdmFsdWVzLiBUaGV5J3JlIHVzZWQgZm9yIGEgYmlyZCdzIGV5ZSB2aWV3XFxuLy8gb2YgY29tcG9uZW50cyBkZXBlbmRlbnQgb24gdGhlIHotYXhpcyBhbmQgYXJlIGRlc2lnbmVkIHRvIGFsbCB3b3JrIHRvZ2V0aGVyLlxcblxcbi8vIHNjc3MtZG9jcy1zdGFydCB6aW5kZXgtc3RhY2tcXG4kemluZGV4LWRyb3Bkb3duOiAgICAgICAgICAgICAgICAgICAxMDAwICFkZWZhdWx0O1xcbiR6aW5kZXgtc3RpY2t5OiAgICAgICAgICAgICAgICAgICAgIDEwMjAgIWRlZmF1bHQ7XFxuJHppbmRleC1maXhlZDogICAgICAgICAgICAgICAgICAgICAgMTAzMCAhZGVmYXVsdDtcXG4kemluZGV4LW9mZmNhbnZhcy1iYWNrZHJvcDogICAgICAgICAxMDQwICFkZWZhdWx0O1xcbiR6aW5kZXgtb2ZmY2FudmFzOiAgICAgICAgICAgICAgICAgIDEwNDUgIWRlZmF1bHQ7XFxuJHppbmRleC1tb2RhbC1iYWNrZHJvcDogICAgICAgICAgICAgMTA1MCAhZGVmYXVsdDtcXG4kemluZGV4LW1vZGFsOiAgICAgICAgICAgICAgICAgICAgICAxMDU1ICFkZWZhdWx0O1xcbiR6aW5kZXgtcG9wb3ZlcjogICAgICAgICAgICAgICAgICAgIDEwNzAgIWRlZmF1bHQ7XFxuJHppbmRleC10b29sdGlwOiAgICAgICAgICAgICAgICAgICAgMTA4MCAhZGVmYXVsdDtcXG4kemluZGV4LXRvYXN0OiAgICAgICAgICAgICAgICAgICAgICAxMDkwICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgemluZGV4LXN0YWNrXFxuXFxuXFxuLy8gTmF2c1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBuYXYtdmFyaWFibGVzXFxuJG5hdi1saW5rLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XFxuJG5hdi1saW5rLXBhZGRpbmcteDogICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcXG4kbmF2LWxpbmstZm9udC1zaXplOiAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRuYXYtbGluay1mb250LXdlaWdodDogICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XFxuJG5hdi1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWxpbmstY29sb3IpICFkZWZhdWx0O1xcbiRuYXYtbGluay1ob3Zlci1jb2xvcjogICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWhvdmVyLWNvbG9yKSAhZGVmYXVsdDtcXG4kbmF2LWxpbmstdHJhbnNpdGlvbjogICAgICAgICAgICAgICBjb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xcbiRuYXYtbGluay1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcXG5cXG4kbmF2LXRhYnMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XFxuJG5hdi10YWJzLWJvcmRlci13aWR0aDogICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG4kbmF2LXRhYnMtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcXG4kbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6ICAkZ3JheS0yMDAgJGdyYXktMjAwICRuYXYtdGFicy1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XFxuJG5hdi10YWJzLWxpbmstYWN0aXZlLWNvbG9yOiAgICAgICAgJGdyYXktNzAwICFkZWZhdWx0O1xcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1ib3JkZXItY29sb3I6ICRncmF5LTMwMCAkZ3JheS0zMDAgJG5hdi10YWJzLWxpbmstYWN0aXZlLWJnICFkZWZhdWx0O1xcblxcbiRuYXYtcGlsbHMtYm9yZGVyLXJhZGl1czogICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcbiRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3I6ICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xcbiRuYXYtcGlsbHMtbGluay1hY3RpdmUtYmc6ICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgbmF2LXZhcmlhYmxlc1xcblxcblxcbi8vIE5hdmJhclxcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBuYXZiYXItdmFyaWFibGVzXFxuJG5hdmJhci1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgJHNwYWNlciAqIC41ICFkZWZhdWx0O1xcbiRuYXZiYXItcGFkZGluZy14OiAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XFxuXFxuJG5hdmJhci1uYXYtbGluay1wYWRkaW5nLXg6ICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XFxuXFxuJG5hdmJhci1icmFuZC1mb250LXNpemU6ICAgICAgICAgICAgJGZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcXG4vLyBDb21wdXRlIHRoZSBuYXZiYXItYnJhbmQgcGFkZGluZy15IHNvIHRoZSBuYXZiYXItYnJhbmQgd2lsbCBoYXZlIHRoZSBzYW1lIGhlaWdodCBhcyBuYXZiYXItdGV4dCBhbmQgbmF2LWxpbmtcXG4kbmF2LWxpbmstaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAkbGluZS1oZWlnaHQtYmFzZSArICRuYXYtbGluay1wYWRkaW5nLXkgKiAyICFkZWZhdWx0O1xcbiRuYXZiYXItYnJhbmQtaGVpZ2h0OiAgICAgICAgICAgICAgICRuYXZiYXItYnJhbmQtZm9udC1zaXplICogJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XFxuJG5hdmJhci1icmFuZC1wYWRkaW5nLXk6ICAgICAgICAgICAgKCRuYXYtbGluay1oZWlnaHQgLSAkbmF2YmFyLWJyYW5kLWhlaWdodCkgKiAuNSAhZGVmYXVsdDtcXG4kbmF2YmFyLWJyYW5kLW1hcmdpbi1lbmQ6ICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xcblxcbiRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXk6ICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcXG4kbmF2YmFyLXRvZ2dsZXItcGFkZGluZy14OiAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XFxuJG5hdmJhci10b2dnbGVyLWZvbnQtc2l6ZTogICAgICAgICAgJGZvbnQtc2l6ZS1sZyAhZGVmYXVsdDtcXG4kbmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1czogICAgICAkYnRuLWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuJG5hdmJhci10b2dnbGVyLWZvY3VzLXdpZHRoOiAgICAgICAgJGJ0bi1mb2N1cy13aWR0aCAhZGVmYXVsdDtcXG4kbmF2YmFyLXRvZ2dsZXItdHJhbnNpdGlvbjogICAgICAgICBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBuYXZiYXItdmFyaWFibGVzXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IG5hdmJhci10aGVtZS12YXJpYWJsZXNcXG4kbmF2YmFyLWRhcmstY29sb3I6ICAgICAgICAgICAgICAgICByZ2JhKCR3aGl0ZSwgLjU1KSAhZGVmYXVsdDtcXG4kbmF2YmFyLWRhcmstaG92ZXItY29sb3I6ICAgICAgICAgICByZ2JhKCR3aGl0ZSwgLjc1KSAhZGVmYXVsdDtcXG4kbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yOiAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XFxuJG5hdmJhci1kYXJrLWRpc2FibGVkLWNvbG9yOiAgICAgICAgcmdiYSgkd2hpdGUsIC4yNSkgIWRlZmF1bHQ7XFxuJG5hdmJhci1kYXJrLXRvZ2dsZXItaWNvbi1iZzogICAgICAgdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMCAzMCc+PHBhdGggc3Ryb2tlPScjeyRuYXZiYXItZGFyay1jb2xvcn0nIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBzdHJva2Utd2lkdGg9JzInIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuJG5hdmJhci1kYXJrLXRvZ2dsZXItYm9yZGVyLWNvbG9yOiAgcmdiYSgkd2hpdGUsIC4xKSAhZGVmYXVsdDtcXG5cXG4kbmF2YmFyLWxpZ2h0LWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywgLjU1KSAhZGVmYXVsdDtcXG4kbmF2YmFyLWxpZ2h0LWhvdmVyLWNvbG9yOiAgICAgICAgICByZ2JhKCRibGFjaywgLjcpICFkZWZhdWx0O1xcbiRuYXZiYXItbGlnaHQtYWN0aXZlLWNvbG9yOiAgICAgICAgIHJnYmEoJGJsYWNrLCAuOSkgIWRlZmF1bHQ7XFxuJG5hdmJhci1saWdodC1kaXNhYmxlZC1jb2xvcjogICAgICAgcmdiYSgkYmxhY2ssIC4zKSAhZGVmYXVsdDtcXG4kbmF2YmFyLWxpZ2h0LXRvZ2dsZXItaWNvbi1iZzogICAgICB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMwIDMwJz48cGF0aCBzdHJva2U9JyN7JG5hdmJhci1saWdodC1jb2xvcn0nIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBzdHJva2Utd2lkdGg9JzInIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuJG5hdmJhci1saWdodC10b2dnbGVyLWJvcmRlci1jb2xvcjogcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcXG5cXG4kbmF2YmFyLWxpZ2h0LWJyYW5kLWNvbG9yOiAgICAgICAgICAgICAgICAkbmF2YmFyLWxpZ2h0LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcXG4kbmF2YmFyLWxpZ2h0LWJyYW5kLWhvdmVyLWNvbG9yOiAgICAgICAgICAkbmF2YmFyLWxpZ2h0LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcXG4kbmF2YmFyLWRhcmstYnJhbmQtY29sb3I6ICAgICAgICAgICAgICAgICAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xcbiRuYXZiYXItZGFyay1icmFuZC1ob3Zlci1jb2xvcjogICAgICAgICAgICRuYXZiYXItZGFyay1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBuYXZiYXItdGhlbWUtdmFyaWFibGVzXFxuXFxuXFxuLy8gRHJvcGRvd25zXFxuLy9cXG4vLyBEcm9wZG93biBtZW51IGNvbnRhaW5lciBhbmQgY29udGVudHMuXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGRyb3Bkb3duLXZhcmlhYmxlc1xcbiRkcm9wZG93bi1taW4td2lkdGg6ICAgICAgICAgICAgICAgIDEwcmVtICFkZWZhdWx0O1xcbiRkcm9wZG93bi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgIDAgIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLXNwYWNlcjogICAgICAgICAgICAgICAgICAgLjEyNXJlbSAhZGVmYXVsdDtcXG4kZHJvcGRvd24tZm9udC1zaXplOiAgICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWJnOiAgICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiRkcm9wZG93bi1ib3JkZXItY29sb3I6ICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItY29sb3ItdHJhbnNsdWNlbnQpICFkZWZhdWx0O1xcbiRkcm9wZG93bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcbiRkcm9wZG93bi1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWlubmVyLWJvcmRlci1yYWRpdXM6ICAgICAgc3VidHJhY3QoJGRyb3Bkb3duLWJvcmRlci1yYWRpdXMsICRkcm9wZG93bi1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xcbiRkcm9wZG93bi1kaXZpZGVyLWJnOiAgICAgICAgICAgICAgICRkcm9wZG93bi1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWRpdmlkZXItbWFyZ2luLXk6ICAgICAgICAgJHNwYWNlciAqIC41ICFkZWZhdWx0O1xcbiRkcm9wZG93bi1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICRib3gtc2hhZG93ICFkZWZhdWx0O1xcblxcbiRkcm9wZG93bi1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcXG4kZHJvcGRvd24tbGluay1ob3Zlci1jb2xvcjogICAgICAgICBzaGFkZS1jb2xvcigkZHJvcGRvd24tbGluay1jb2xvciwgMTAlKSAhZGVmYXVsdDtcXG4kZHJvcGRvd24tbGluay1ob3Zlci1iZzogICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XFxuXFxuJGRyb3Bkb3duLWxpbmstYWN0aXZlLWNvbG9yOiAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWxpbmstYWN0aXZlLWJnOiAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XFxuXFxuJGRyb3Bkb3duLWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgJGdyYXktNTAwICFkZWZhdWx0O1xcblxcbiRkcm9wZG93bi1pdGVtLXBhZGRpbmcteTogICAgICAgICAgICRzcGFjZXIgKiAuMjUgIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy14OiAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcXG5cXG4kZHJvcGRvd24taGVhZGVyLWNvbG9yOiAgICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXg6ICAgICAgICAgJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy14ICFkZWZhdWx0O1xcbiRkcm9wZG93bi1oZWFkZXItcGFkZGluZy15OiAgICAgICAgICRkcm9wZG93bi1wYWRkaW5nLXkgIWRlZmF1bHQ7XFxuLy8gZnVzdi1kaXNhYmxlXFxuJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nOiAgICAgICAgICAgJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXkgJGRyb3Bkb3duLWhlYWRlci1wYWRkaW5nLXggIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gdjUuMi4wXFxuLy8gZnVzdi1lbmFibGVcXG4vLyBzY3NzLWRvY3MtZW5kIGRyb3Bkb3duLXZhcmlhYmxlc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBkcm9wZG93bi1kYXJrLXZhcmlhYmxlc1xcbiRkcm9wZG93bi1kYXJrLWNvbG9yOiAgICAgICAgICAgICAgICRncmF5LTMwMCAhZGVmYXVsdDtcXG4kZHJvcGRvd24tZGFyay1iZzogICAgICAgICAgICAgICAgICAkZ3JheS04MDAgIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWRhcmstYm9yZGVyLWNvbG9yOiAgICAgICAgJGRyb3Bkb3duLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcXG4kZHJvcGRvd24tZGFyay1kaXZpZGVyLWJnOiAgICAgICAgICAkZHJvcGRvd24tZGl2aWRlci1iZyAhZGVmYXVsdDtcXG4kZHJvcGRvd24tZGFyay1ib3gtc2hhZG93OiAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRkcm9wZG93bi1kYXJrLWxpbmstY29sb3I6ICAgICAgICAgICRkcm9wZG93bi1kYXJrLWNvbG9yICFkZWZhdWx0O1xcbiRkcm9wZG93bi1kYXJrLWxpbmstaG92ZXItY29sb3I6ICAgICR3aGl0ZSAhZGVmYXVsdDtcXG4kZHJvcGRvd24tZGFyay1saW5rLWhvdmVyLWJnOiAgICAgICByZ2JhKCR3aGl0ZSwgLjE1KSAhZGVmYXVsdDtcXG4kZHJvcGRvd24tZGFyay1saW5rLWFjdGl2ZS1jb2xvcjogICAkZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWRhcmstbGluay1hY3RpdmUtYmc6ICAgICAgJGRyb3Bkb3duLWxpbmstYWN0aXZlLWJnICFkZWZhdWx0O1xcbiRkcm9wZG93bi1kYXJrLWxpbmstZGlzYWJsZWQtY29sb3I6ICRncmF5LTUwMCAhZGVmYXVsdDtcXG4kZHJvcGRvd24tZGFyay1oZWFkZXItY29sb3I6ICAgICAgICAkZ3JheS01MDAgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBkcm9wZG93bi1kYXJrLXZhcmlhYmxlc1xcblxcblxcbi8vIFBhZ2luYXRpb25cXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgcGFnaW5hdGlvbi12YXJpYWJsZXNcXG4kcGFnaW5hdGlvbi1wYWRkaW5nLXk6ICAgICAgICAgICAgICAuMzc1cmVtICFkZWZhdWx0O1xcbiRwYWdpbmF0aW9uLXBhZGRpbmcteDogICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcXG4kcGFnaW5hdGlvbi1wYWRkaW5nLXktc206ICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XFxuJHBhZ2luYXRpb24tcGFkZGluZy14LXNtOiAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XFxuJHBhZ2luYXRpb24tcGFkZGluZy15LWxnOiAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xcbiRwYWdpbmF0aW9uLXBhZGRpbmcteC1sZzogICAgICAgICAgIDEuNXJlbSAhZGVmYXVsdDtcXG5cXG4kcGFnaW5hdGlvbi1mb250LXNpemU6ICAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XFxuXFxuJHBhZ2luYXRpb24tY29sb3I6ICAgICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWxpbmstY29sb3IpICFkZWZhdWx0O1xcbiRwYWdpbmF0aW9uLWJnOiAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcXG4kcGFnaW5hdGlvbi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcXG4kcGFnaW5hdGlvbi1ib3JkZXItd2lkdGg6ICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcbiRwYWdpbmF0aW9uLW1hcmdpbi1zdGFydDogICAgICAgICAgICgkcGFnaW5hdGlvbi1ib3JkZXItd2lkdGggKiAtMSkgIWRlZmF1bHQ7XFxuJHBhZ2luYXRpb24tYm9yZGVyLWNvbG9yOiAgICAgICAgICAgJGdyYXktMzAwICFkZWZhdWx0O1xcblxcbiRwYWdpbmF0aW9uLWZvY3VzLWNvbG9yOiAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1saW5rLWhvdmVyLWNvbG9yKSAhZGVmYXVsdDtcXG4kcGFnaW5hdGlvbi1mb2N1cy1iZzogICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XFxuJHBhZ2luYXRpb24tZm9jdXMtYm94LXNoYWRvdzogICAgICAgJGlucHV0LWJ0bi1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xcbiRwYWdpbmF0aW9uLWZvY3VzLW91dGxpbmU6ICAgICAgICAgIDAgIWRlZmF1bHQ7XFxuXFxuJHBhZ2luYXRpb24taG92ZXItY29sb3I6ICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWxpbmstaG92ZXItY29sb3IpICFkZWZhdWx0O1xcbiRwYWdpbmF0aW9uLWhvdmVyLWJnOiAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcXG4kcGFnaW5hdGlvbi1ob3Zlci1ib3JkZXItY29sb3I6ICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XFxuXFxuJHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOiAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XFxuJHBhZ2luYXRpb24tYWN0aXZlLWJnOiAgICAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XFxuJHBhZ2luYXRpb24tYWN0aXZlLWJvcmRlci1jb2xvcjogICAgJHBhZ2luYXRpb24tYWN0aXZlLWJnICFkZWZhdWx0O1xcblxcbiRwYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yOiAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcXG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1iZzogICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XFxuJHBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAgJGdyYXktMzAwICFkZWZhdWx0O1xcblxcbiRwYWdpbmF0aW9uLXRyYW5zaXRpb246ICAgICAgICAgICAgICBjb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XFxuXFxuJHBhZ2luYXRpb24tYm9yZGVyLXJhZGl1cy1zbTogICAgICAgJGJvcmRlci1yYWRpdXMtc20gIWRlZmF1bHQ7XFxuJHBhZ2luYXRpb24tYm9yZGVyLXJhZGl1cy1sZzogICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBwYWdpbmF0aW9uLXZhcmlhYmxlc1xcblxcblxcbi8vIFBsYWNlaG9sZGVyc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBwbGFjZWhvbGRlcnNcXG4kcGxhY2Vob2xkZXItb3BhY2l0eS1tYXg6ICAgICAgICAgICAuNSAhZGVmYXVsdDtcXG4kcGxhY2Vob2xkZXItb3BhY2l0eS1taW46ICAgICAgICAgICAuMiAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIHBsYWNlaG9sZGVyc1xcblxcbi8vIENhcmRzXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNhcmQtdmFyaWFibGVzXFxuJGNhcmQtc3BhY2VyLXk6ICAgICAgICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcXG4kY2FyZC1zcGFjZXIteDogICAgICAgICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xcbiRjYXJkLXRpdGxlLXNwYWNlci15OiAgICAgICAgICAgICAgICRzcGFjZXIgKiAuNSAhZGVmYXVsdDtcXG4kY2FyZC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcbiRjYXJkLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib3JkZXItY29sb3ItdHJhbnNsdWNlbnQpICFkZWZhdWx0O1xcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcbiRjYXJkLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XFxuJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1czogICAgICAgICAgc3VidHJhY3QoJGNhcmQtYm9yZGVyLXJhZGl1cywgJGNhcmQtYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcXG4kY2FyZC1jYXAtcGFkZGluZy15OiAgICAgICAgICAgICAgICAkY2FyZC1zcGFjZXIteSAqIC41ICFkZWZhdWx0O1xcbiRjYXJkLWNhcC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICRjYXJkLXNwYWNlci14ICFkZWZhdWx0O1xcbiRjYXJkLWNhcC1iZzogICAgICAgICAgICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMDMpICFkZWZhdWx0O1xcbiRjYXJkLWNhcC1jb2xvcjogICAgICAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XFxuJGNhcmQtaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcXG4kY2FyZC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRjYXJkLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcXG4kY2FyZC1pbWctb3ZlcmxheS1wYWRkaW5nOiAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xcbiRjYXJkLWdyb3VwLW1hcmdpbjogICAgICAgICAgICAgICAgICRncmlkLWd1dHRlci13aWR0aCAqIC41ICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgY2FyZC12YXJpYWJsZXNcXG5cXG4vLyBBY2NvcmRpb25cXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYWNjb3JkaW9uLXZhcmlhYmxlc1xcbiRhY2NvcmRpb24tcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XFxuJGFjY29yZGlvbi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcXG4kYWNjb3JkaW9uLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1jb2xvcikgIWRlZmF1bHQ7XFxuJGFjY29yZGlvbi1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJvZHktYmcgIWRlZmF1bHQ7XFxuJGFjY29yZGlvbi1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG4kYWNjb3JkaW9uLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yKSAhZGVmYXVsdDtcXG4kYWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcXG4kYWNjb3JkaW9uLWlubmVyLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICBzdWJ0cmFjdCgkYWNjb3JkaW9uLWJvcmRlci1yYWRpdXMsICRhY2NvcmRpb24tYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcXG5cXG4kYWNjb3JkaW9uLWJvZHktcGFkZGluZy15OiAgICAgICAgICAgICAgICAkYWNjb3JkaW9uLXBhZGRpbmcteSAhZGVmYXVsdDtcXG4kYWNjb3JkaW9uLWJvZHktcGFkZGluZy14OiAgICAgICAgICAgICAgICAkYWNjb3JkaW9uLXBhZGRpbmcteCAhZGVmYXVsdDtcXG5cXG4kYWNjb3JkaW9uLWJ1dHRvbi1wYWRkaW5nLXk6ICAgICAgICAgICAgICAkYWNjb3JkaW9uLXBhZGRpbmcteSAhZGVmYXVsdDtcXG4kYWNjb3JkaW9uLWJ1dHRvbi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAkYWNjb3JkaW9uLXBhZGRpbmcteCAhZGVmYXVsdDtcXG4kYWNjb3JkaW9uLWJ1dHRvbi1jb2xvcjogICAgICAgICAgICAgICAgICAkYWNjb3JkaW9uLWNvbG9yICFkZWZhdWx0O1xcbiRhY2NvcmRpb24tYnV0dG9uLWJnOiAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1hY2NvcmRpb24tYmcpICFkZWZhdWx0O1xcbiRhY2NvcmRpb24tdHJhbnNpdGlvbjogICAgICAgICAgICAgICAgICAgICRidG4tdHJhbnNpdGlvbiwgYm9yZGVyLXJhZGl1cyAuMTVzIGVhc2UgIWRlZmF1bHQ7XFxuJGFjY29yZGlvbi1idXR0b24tYWN0aXZlLWJnOiAgICAgICAgICAgICAgdGludC1jb2xvcigkY29tcG9uZW50LWFjdGl2ZS1iZywgOTAlKSAhZGVmYXVsdDtcXG4kYWNjb3JkaW9uLWJ1dHRvbi1hY3RpdmUtY29sb3I6ICAgICAgICAgICBzaGFkZS1jb2xvcigkcHJpbWFyeSwgMTAlKSAhZGVmYXVsdDtcXG5cXG4kYWNjb3JkaW9uLWJ1dHRvbi1mb2N1cy1ib3JkZXItY29sb3I6ICAgICAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xcbiRhY2NvcmRpb24tYnV0dG9uLWZvY3VzLWJveC1zaGFkb3c6ICAgICAgICRidG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcXG5cXG4kYWNjb3JkaW9uLWljb24td2lkdGg6ICAgICAgICAgICAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xcbiRhY2NvcmRpb24taWNvbi1jb2xvcjogICAgICAgICAgICAgICAgICAgICRhY2NvcmRpb24tYnV0dG9uLWNvbG9yICFkZWZhdWx0O1xcbiRhY2NvcmRpb24taWNvbi1hY3RpdmUtY29sb3I6ICAgICAgICAgICAgICRhY2NvcmRpb24tYnV0dG9uLWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcXG4kYWNjb3JkaW9uLWljb24tdHJhbnNpdGlvbjogICAgICAgICAgICAgICB0cmFuc2Zvcm0gLjJzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xcbiRhY2NvcmRpb24taWNvbi10cmFuc2Zvcm06ICAgICAgICAgICAgICAgIHJvdGF0ZSgtMTgwZGVnKSAhZGVmYXVsdDtcXG5cXG4kYWNjb3JkaW9uLWJ1dHRvbi1pY29uOiAgICAgICAgIHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyN7JGFjY29yZGlvbi1pY29uLWNvbG9yfSc+PHBhdGggZmlsbC1ydWxlPSdldmVub2RkJyBkPSdNMS42NDYgNC42NDZhLjUuNSAwIDAgMSAuNzA4IDBMOCAxMC4yOTNsNS42NDYtNS42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOGwtNiA2YS41LjUgMCAwIDEtLjcwOCAwbC02LTZhLjUuNSAwIDAgMSAwLS43MDh6Jy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuJGFjY29yZGlvbi1idXR0b24tYWN0aXZlLWljb246ICB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPScjeyRhY2NvcmRpb24taWNvbi1hY3RpdmUtY29sb3J9Jz48cGF0aCBmaWxsLXJ1bGU9J2V2ZW5vZGQnIGQ9J00xLjY0NiA0LjY0NmEuNS41IDAgMCAxIC43MDggMEw4IDEwLjI5M2w1LjY0Ni01LjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4IDBsLTYtNmEuNS41IDAgMCAxIDAtLjcwOHonLz48L3N2Zz5cXFwiKSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGFjY29yZGlvbi12YXJpYWJsZXNcXG5cXG4vLyBUb29sdGlwc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCB0b29sdGlwLXZhcmlhYmxlc1xcbiR0b29sdGlwLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICRmb250LXNpemUtc20gIWRlZmF1bHQ7XFxuJHRvb2x0aXAtbWF4LXdpZHRoOiAgICAgICAgICAgICAgICAgMjAwcHggIWRlZmF1bHQ7XFxuJHRvb2x0aXAtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiR0b29sdGlwLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICRibGFjayAhZGVmYXVsdDtcXG4kdG9vbHRpcC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcXG4kdG9vbHRpcC1vcGFjaXR5OiAgICAgICAgICAgICAgICAgICAuOSAhZGVmYXVsdDtcXG4kdG9vbHRpcC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAkc3BhY2VyICogLjI1ICFkZWZhdWx0O1xcbiR0b29sdGlwLXBhZGRpbmcteDogICAgICAgICAgICAgICAgICRzcGFjZXIgKiAuNSAhZGVmYXVsdDtcXG4kdG9vbHRpcC1tYXJnaW46ICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0OyAvLyBUT0RPOiByZW1vdmUgdGhpcyBpbiB2NlxcblxcbiR0b29sdGlwLWFycm93LXdpZHRoOiAgICAgICAgICAgICAgIC44cmVtICFkZWZhdWx0O1xcbiR0b29sdGlwLWFycm93LWhlaWdodDogICAgICAgICAgICAgIC40cmVtICFkZWZhdWx0O1xcbi8vIGZ1c3YtZGlzYWJsZVxcbiR0b29sdGlwLWFycm93LWNvbG9yOiAgICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7IC8vIERlcHJlY2F0ZWQgaW4gQm9vdHN0cmFwIDUuMi4wIGZvciBDU1MgdmFyaWFibGVzXFxuLy8gZnVzdi1lbmFibGVcXG4vLyBzY3NzLWRvY3MtZW5kIHRvb2x0aXAtdmFyaWFibGVzXFxuXFxuLy8gRm9ybSB0b29sdGlwcyBtdXN0IGNvbWUgYWZ0ZXIgcmVndWxhciB0b29sdGlwc1xcbi8vIHNjc3MtZG9jcy1zdGFydCB0b29sdGlwLWZlZWRiYWNrLXZhcmlhYmxlc1xcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtcGFkZGluZy15OiAgICAgJHRvb2x0aXAtcGFkZGluZy15ICFkZWZhdWx0O1xcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtcGFkZGluZy14OiAgICAgJHRvb2x0aXAtcGFkZGluZy14ICFkZWZhdWx0O1xcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtZm9udC1zaXplOiAgICAgJHRvb2x0aXAtZm9udC1zaXplICFkZWZhdWx0O1xcbiRmb3JtLWZlZWRiYWNrLXRvb2x0aXAtbGluZS1oZWlnaHQ6ICAgbnVsbCAhZGVmYXVsdDtcXG4kZm9ybS1mZWVkYmFjay10b29sdGlwLW9wYWNpdHk6ICAgICAgICR0b29sdGlwLW9wYWNpdHkgIWRlZmF1bHQ7XFxuJGZvcm0tZmVlZGJhY2stdG9vbHRpcC1ib3JkZXItcmFkaXVzOiAkdG9vbHRpcC1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgdG9vbHRpcC1mZWVkYmFjay12YXJpYWJsZXNcXG5cXG5cXG4vLyBQb3BvdmVyc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBwb3BvdmVyLXZhcmlhYmxlc1xcbiRwb3BvdmVyLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICRmb250LXNpemUtc20gIWRlZmF1bHQ7XFxuJHBvcG92ZXItYmc6ICAgICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiRwb3BvdmVyLW1heC13aWR0aDogICAgICAgICAgICAgICAgIDI3NnB4ICFkZWZhdWx0O1xcbiRwb3BvdmVyLWJvcmRlci13aWR0aDogICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuJHBvcG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCkgIWRlZmF1bHQ7XFxuJHBvcG92ZXItYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XFxuJHBvcG92ZXItaW5uZXItYm9yZGVyLXJhZGl1czogICAgICAgc3VidHJhY3QoJHBvcG92ZXItYm9yZGVyLXJhZGl1cywgJHBvcG92ZXItYm9yZGVyLXdpZHRoKSAhZGVmYXVsdDtcXG4kcG9wb3Zlci1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAkYm94LXNoYWRvdyAhZGVmYXVsdDtcXG5cXG4kcG9wb3Zlci1oZWFkZXItZm9udC1zaXplOiAgICAgICAgICAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XFxuJHBvcG92ZXItaGVhZGVyLWJnOiAgICAgICAgICAgICAgICAgc2hhZGUtY29sb3IoJHBvcG92ZXItYmcsIDYlKSAhZGVmYXVsdDtcXG4kcG9wb3Zlci1oZWFkZXItY29sb3I6ICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9aGVhZGluZy1jb2xvcikgIWRlZmF1bHQ7XFxuJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteTogICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XFxuJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteDogICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcXG5cXG4kcG9wb3Zlci1ib2R5LWNvbG9yOiAgICAgICAgICAgICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcXG4kcG9wb3Zlci1ib2R5LXBhZGRpbmcteTogICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xcbiRwb3BvdmVyLWJvZHktcGFkZGluZy14OiAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XFxuXFxuJHBvcG92ZXItYXJyb3ctd2lkdGg6ICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcXG4kcG9wb3Zlci1hcnJvdy1oZWlnaHQ6ICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIHBvcG92ZXItdmFyaWFibGVzXFxuXFxuLy8gZnVzdi1kaXNhYmxlXFxuLy8gRGVwcmVjYXRlZCBpbiBCb290c3RyYXAgNS4yLjAgZm9yIENTUyB2YXJpYWJsZXNcXG4kcG9wb3Zlci1hcnJvdy1jb2xvcjogICAgICAgICAgICAgICAkcG9wb3Zlci1iZyAhZGVmYXVsdDtcXG4kcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjogICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yLXRyYW5zbHVjZW50KSAhZGVmYXVsdDtcXG4vLyBmdXN2LWVuYWJsZVxcblxcblxcbi8vIFRvYXN0c1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCB0b2FzdC12YXJpYWJsZXNcXG4kdG9hc3QtbWF4LXdpZHRoOiAgICAgICAgICAgICAgICAgICAzNTBweCAhZGVmYXVsdDtcXG4kdG9hc3QtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XFxuJHRvYXN0LXBhZGRpbmcteTogICAgICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XFxuJHRvYXN0LWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgLjg3NXJlbSAhZGVmYXVsdDtcXG4kdG9hc3QtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiR0b2FzdC1iYWNrZ3JvdW5kLWNvbG9yOiAgICAgICAgICAgIHJnYmEoJHdoaXRlLCAuODUpICFkZWZhdWx0O1xcbiR0b2FzdC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuJHRvYXN0LWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCkgIWRlZmF1bHQ7XFxuJHRvYXN0LWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuJHRvYXN0LWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICAgJGJveC1zaGFkb3cgIWRlZmF1bHQ7XFxuJHRvYXN0LXNwYWNpbmc6ICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci1wYWRkaW5nLXggIWRlZmF1bHQ7XFxuXFxuJHRvYXN0LWhlYWRlci1jb2xvcjogICAgICAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xcbiR0b2FzdC1oZWFkZXItYmFja2dyb3VuZC1jb2xvcjogICAgIHJnYmEoJHdoaXRlLCAuODUpICFkZWZhdWx0O1xcbiR0b2FzdC1oZWFkZXItYm9yZGVyLWNvbG9yOiAgICAgICAgIHJnYmEoJGJsYWNrLCAuMDUpICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgdG9hc3QtdmFyaWFibGVzXFxuXFxuXFxuLy8gQmFkZ2VzXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJhZGdlLXZhcmlhYmxlc1xcbiRiYWRnZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgIC43NWVtICFkZWZhdWx0O1xcbiRiYWRnZS1mb250LXdlaWdodDogICAgICAgICAgICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xcbiRiYWRnZS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcXG4kYmFkZ2UtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAuMzVlbSAhZGVmYXVsdDtcXG4kYmFkZ2UtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAuNjVlbSAhZGVmYXVsdDtcXG4kYmFkZ2UtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGJhZGdlLXZhcmlhYmxlc1xcblxcblxcbi8vIE1vZGFsc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBtb2RhbC12YXJpYWJsZXNcXG4kbW9kYWwtaW5uZXItcGFkZGluZzogICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xcblxcbiRtb2RhbC1mb290ZXItbWFyZ2luLWJldHdlZW46ICAgICAgIC41cmVtICFkZWZhdWx0O1xcblxcbiRtb2RhbC1kaWFsb2ctbWFyZ2luOiAgICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xcbiRtb2RhbC1kaWFsb2ctbWFyZ2luLXktc20tdXA6ICAgICAgIDEuNzVyZW0gIWRlZmF1bHQ7XFxuXFxuJG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0OiAgICAgICAgICAgJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XFxuXFxuJG1vZGFsLWNvbnRlbnQtY29sb3I6ICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcXG4kbW9kYWwtY29udGVudC1iZzogICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XFxuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLWNvbG9yOiAgICAgICAgdmFyKC0tI3skcHJlZml4fWJvcmRlci1jb2xvci10cmFuc2x1Y2VudCkgIWRlZmF1bHQ7XFxuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoOiAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG4kbW9kYWwtY29udGVudC1ib3JkZXItcmFkaXVzOiAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcXG4kbW9kYWwtY29udGVudC1pbm5lci1ib3JkZXItcmFkaXVzOiBzdWJ0cmFjdCgkbW9kYWwtY29udGVudC1ib3JkZXItcmFkaXVzLCAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGgpICFkZWZhdWx0O1xcbiRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHM6ICAgICAgICRib3gtc2hhZG93LXNtICFkZWZhdWx0O1xcbiRtb2RhbC1jb250ZW50LWJveC1zaGFkb3ctc20tdXA6ICAgICRib3gtc2hhZG93ICFkZWZhdWx0O1xcblxcbiRtb2RhbC1iYWNrZHJvcC1iZzogICAgICAgICAgICAgICAgICRibGFjayAhZGVmYXVsdDtcXG4kbW9kYWwtYmFja2Ryb3Atb3BhY2l0eTogICAgICAgICAgICAuNSAhZGVmYXVsdDtcXG5cXG4kbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjogICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yKSAhZGVmYXVsdDtcXG4kbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aDogICAgICAgICAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuJG1vZGFsLWhlYWRlci1wYWRkaW5nLXk6ICAgICAgICAgICAgJG1vZGFsLWlubmVyLXBhZGRpbmcgIWRlZmF1bHQ7XFxuJG1vZGFsLWhlYWRlci1wYWRkaW5nLXg6ICAgICAgICAgICAgJG1vZGFsLWlubmVyLXBhZGRpbmcgIWRlZmF1bHQ7XFxuJG1vZGFsLWhlYWRlci1wYWRkaW5nOiAgICAgICAgICAgICAgJG1vZGFsLWhlYWRlci1wYWRkaW5nLXkgJG1vZGFsLWhlYWRlci1wYWRkaW5nLXggIWRlZmF1bHQ7IC8vIEtlZXAgdGhpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcXG5cXG4kbW9kYWwtZm9vdGVyLWJnOiAgICAgICAgICAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbiRtb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICRtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xcbiRtb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoOiAgICAgICAgICRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcblxcbiRtb2RhbC1zbTogICAgICAgICAgICAgICAgICAgICAgICAgIDMwMHB4ICFkZWZhdWx0O1xcbiRtb2RhbC1tZDogICAgICAgICAgICAgICAgICAgICAgICAgIDUwMHB4ICFkZWZhdWx0O1xcbiRtb2RhbC1sZzogICAgICAgICAgICAgICAgICAgICAgICAgIDgwMHB4ICFkZWZhdWx0O1xcbiRtb2RhbC14bDogICAgICAgICAgICAgICAgICAgICAgICAgIDExNDBweCAhZGVmYXVsdDtcXG5cXG4kbW9kYWwtZmFkZS10cmFuc2Zvcm06ICAgICAgICAgICAgICB0cmFuc2xhdGUoMCwgLTUwcHgpICFkZWZhdWx0O1xcbiRtb2RhbC1zaG93LXRyYW5zZm9ybTogICAgICAgICAgICAgIG5vbmUgIWRlZmF1bHQ7XFxuJG1vZGFsLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtIC4zcyBlYXNlLW91dCAhZGVmYXVsdDtcXG4kbW9kYWwtc2NhbGUtdHJhbnNmb3JtOiAgICAgICAgICAgICBzY2FsZSgxLjAyKSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIG1vZGFsLXZhcmlhYmxlc1xcblxcblxcbi8vIEFsZXJ0c1xcbi8vXFxuLy8gRGVmaW5lIGFsZXJ0IGNvbG9ycywgYm9yZGVyIHJhZGl1cywgYW5kIHBhZGRpbmcuXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGFsZXJ0LXZhcmlhYmxlc1xcbiRhbGVydC1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgJHNwYWNlciAhZGVmYXVsdDtcXG4kYWxlcnQtcGFkZGluZy14OiAgICAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XFxuJGFsZXJ0LW1hcmdpbi1ib3R0b206ICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xcbiRhbGVydC1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuJGFsZXJ0LWxpbmstZm9udC13ZWlnaHQ6ICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcXG4kYWxlcnQtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuJGFsZXJ0LWJnLXNjYWxlOiAgICAgICAgICAgICAgICAtODAlICFkZWZhdWx0O1xcbiRhbGVydC1ib3JkZXItc2NhbGU6ICAgICAgICAgICAgLTcwJSAhZGVmYXVsdDtcXG4kYWxlcnQtY29sb3Itc2NhbGU6ICAgICAgICAgICAgIDQwJSAhZGVmYXVsdDtcXG4kYWxlcnQtZGlzbWlzc2libGUtcGFkZGluZy1yOiAgICRhbGVydC1wYWRkaW5nLXggKiAzICFkZWZhdWx0OyAvLyAzeCBjb3ZlcnMgd2lkdGggb2YgeCBwbHVzIGRlZmF1bHQgcGFkZGluZyBvbiBlaXRoZXIgc2lkZVxcbi8vIHNjc3MtZG9jcy1lbmQgYWxlcnQtdmFyaWFibGVzXFxuXFxuXFxuLy8gUHJvZ3Jlc3MgYmFyc1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBwcm9ncmVzcy12YXJpYWJsZXNcXG4kcHJvZ3Jlc3MtaGVpZ2h0OiAgICAgICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xcbiRwcm9ncmVzcy1mb250LXNpemU6ICAgICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIC43NSAhZGVmYXVsdDtcXG4kcHJvZ3Jlc3MtYmc6ICAgICAgICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XFxuJHByb2dyZXNzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuJHByb2dyZXNzLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgJGJveC1zaGFkb3ctaW5zZXQgIWRlZmF1bHQ7XFxuJHByb2dyZXNzLWJhci1jb2xvcjogICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiRwcm9ncmVzcy1iYXItYmc6ICAgICAgICAgICAgICAgICAgICRwcmltYXJ5ICFkZWZhdWx0O1xcbiRwcm9ncmVzcy1iYXItYW5pbWF0aW9uLXRpbWluZzogICAgIDFzIGxpbmVhciBpbmZpbml0ZSAhZGVmYXVsdDtcXG4kcHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb246ICAgICAgICAgICB3aWR0aCAuNnMgZWFzZSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIHByb2dyZXNzLXZhcmlhYmxlc1xcblxcblxcbi8vIExpc3QgZ3JvdXBcXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgbGlzdC1ncm91cC12YXJpYWJsZXNcXG4kbGlzdC1ncm91cC1jb2xvcjogICAgICAgICAgICAgICAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XFxuJGxpc3QtZ3JvdXAtYmc6ICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiRsaXN0LWdyb3VwLWJvcmRlci1jb2xvcjogICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMTI1KSAhZGVmYXVsdDtcXG4kbGlzdC1ncm91cC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcbiRsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcblxcbiRsaXN0LWdyb3VwLWl0ZW0tcGFkZGluZy15OiAgICAgICAgICRzcGFjZXIgKiAuNSAhZGVmYXVsdDtcXG4kbGlzdC1ncm91cC1pdGVtLXBhZGRpbmcteDogICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xcbiRsaXN0LWdyb3VwLWl0ZW0tYmctc2NhbGU6ICAgICAgICAgIC04MCUgIWRlZmF1bHQ7XFxuJGxpc3QtZ3JvdXAtaXRlbS1jb2xvci1zY2FsZTogICAgICAgNDAlICFkZWZhdWx0O1xcblxcbiRsaXN0LWdyb3VwLWhvdmVyLWJnOiAgICAgICAgICAgICAgICRncmF5LTEwMCAhZGVmYXVsdDtcXG4kbGlzdC1ncm91cC1hY3RpdmUtY29sb3I6ICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcXG4kbGlzdC1ncm91cC1hY3RpdmUtYmc6ICAgICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcXG4kbGlzdC1ncm91cC1hY3RpdmUtYm9yZGVyLWNvbG9yOiAgICAkbGlzdC1ncm91cC1hY3RpdmUtYmcgIWRlZmF1bHQ7XFxuXFxuJGxpc3QtZ3JvdXAtZGlzYWJsZWQtY29sb3I6ICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xcbiRsaXN0LWdyb3VwLWRpc2FibGVkLWJnOiAgICAgICAgICAgICRsaXN0LWdyb3VwLWJnICFkZWZhdWx0O1xcblxcbiRsaXN0LWdyb3VwLWFjdGlvbi1jb2xvcjogICAgICAgICAgICRncmF5LTcwMCAhZGVmYXVsdDtcXG4kbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3I6ICAgICAkbGlzdC1ncm91cC1hY3Rpb24tY29sb3IgIWRlZmF1bHQ7XFxuXFxuJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjogICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XFxuJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1iZzogICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgbGlzdC1ncm91cC12YXJpYWJsZXNcXG5cXG5cXG4vLyBJbWFnZSB0aHVtYm5haWxzXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHRodW1ibmFpbC12YXJpYWJsZXNcXG4kdGh1bWJuYWlsLXBhZGRpbmc6ICAgICAgICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XFxuJHRodW1ibmFpbC1iZzogICAgICAgICAgICAgICAgICAgICAgJGJvZHktYmcgIWRlZmF1bHQ7XFxuJHRodW1ibmFpbC1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG4kdGh1bWJuYWlsLWJvcmRlci1jb2xvcjogICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9yZGVyLWNvbG9yKSAhZGVmYXVsdDtcXG4kdGh1bWJuYWlsLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcXG4kdGh1bWJuYWlsLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAkYm94LXNoYWRvdy1zbSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIHRodW1ibmFpbC12YXJpYWJsZXNcXG5cXG5cXG4vLyBGaWd1cmVzXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGZpZ3VyZS12YXJpYWJsZXNcXG4kZmlndXJlLWNhcHRpb24tZm9udC1zaXplOiAgICAgICAgICAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xcbiRmaWd1cmUtY2FwdGlvbi1jb2xvcjogICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGZpZ3VyZS12YXJpYWJsZXNcXG5cXG5cXG4vLyBCcmVhZGNydW1ic1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBicmVhZGNydW1iLXZhcmlhYmxlc1xcbiRicmVhZGNydW1iLWZvbnQtc2l6ZTogICAgICAgICAgICAgIG51bGwgIWRlZmF1bHQ7XFxuJGJyZWFkY3J1bWItcGFkZGluZy15OiAgICAgICAgICAgICAgMCAhZGVmYXVsdDtcXG4kYnJlYWRjcnVtYi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAwICFkZWZhdWx0O1xcbiRicmVhZGNydW1iLWl0ZW0tcGFkZGluZy14OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xcbiRicmVhZGNydW1iLW1hcmdpbi1ib3R0b206ICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XFxuJGJyZWFkY3J1bWItYmc6ICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcXG4kYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yOiAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XFxuJGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yOiAgICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xcbiRicmVhZGNydW1iLWRpdmlkZXI6ICAgICAgICAgICAgICAgIHF1b3RlKFxcXCIvXFxcIikgIWRlZmF1bHQ7XFxuJGJyZWFkY3J1bWItZGl2aWRlci1mbGlwcGVkOiAgICAgICAgJGJyZWFkY3J1bWItZGl2aWRlciAhZGVmYXVsdDtcXG4kYnJlYWRjcnVtYi1ib3JkZXItcmFkaXVzOiAgICAgICAgICBudWxsICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgYnJlYWRjcnVtYi12YXJpYWJsZXNcXG5cXG4vLyBDYXJvdXNlbFxcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBjYXJvdXNlbC12YXJpYWJsZXNcXG4kY2Fyb3VzZWwtY29udHJvbC1jb2xvcjogICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiRjYXJvdXNlbC1jb250cm9sLXdpZHRoOiAgICAgICAgICAgICAxNSUgIWRlZmF1bHQ7XFxuJGNhcm91c2VsLWNvbnRyb2wtb3BhY2l0eTogICAgICAgICAgIC41ICFkZWZhdWx0O1xcbiRjYXJvdXNlbC1jb250cm9sLWhvdmVyLW9wYWNpdHk6ICAgICAuOSAhZGVmYXVsdDtcXG4kY2Fyb3VzZWwtY29udHJvbC10cmFuc2l0aW9uOiAgICAgICAgb3BhY2l0eSAuMTVzIGVhc2UgIWRlZmF1bHQ7XFxuXFxuJGNhcm91c2VsLWluZGljYXRvci13aWR0aDogICAgICAgICAgIDMwcHggIWRlZmF1bHQ7XFxuJGNhcm91c2VsLWluZGljYXRvci1oZWlnaHQ6ICAgICAgICAgIDNweCAhZGVmYXVsdDtcXG4kY2Fyb3VzZWwtaW5kaWNhdG9yLWhpdC1hcmVhLWhlaWdodDogMTBweCAhZGVmYXVsdDtcXG4kY2Fyb3VzZWwtaW5kaWNhdG9yLXNwYWNlcjogICAgICAgICAgM3B4ICFkZWZhdWx0O1xcbiRjYXJvdXNlbC1pbmRpY2F0b3Itb3BhY2l0eTogICAgICAgICAuNSAhZGVmYXVsdDtcXG4kY2Fyb3VzZWwtaW5kaWNhdG9yLWFjdGl2ZS1iZzogICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiRjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLW9wYWNpdHk6ICAxICFkZWZhdWx0O1xcbiRjYXJvdXNlbC1pbmRpY2F0b3ItdHJhbnNpdGlvbjogICAgICBvcGFjaXR5IC42cyBlYXNlICFkZWZhdWx0O1xcblxcbiRjYXJvdXNlbC1jYXB0aW9uLXdpZHRoOiAgICAgICAgICAgICA3MCUgIWRlZmF1bHQ7XFxuJGNhcm91c2VsLWNhcHRpb24tY29sb3I6ICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcXG4kY2Fyb3VzZWwtY2FwdGlvbi1wYWRkaW5nLXk6ICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcXG4kY2Fyb3VzZWwtY2FwdGlvbi1zcGFjZXI6ICAgICAgICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcXG5cXG4kY2Fyb3VzZWwtY29udHJvbC1pY29uLXdpZHRoOiAgICAgICAgMnJlbSAhZGVmYXVsdDtcXG5cXG4kY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24tYmc6ICAgICAgdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nI3skY2Fyb3VzZWwtY29udHJvbC1jb2xvcn0nPjxwYXRoIGQ9J00xMS4zNTQgMS42NDZhLjUuNSAwIDAgMSAwIC43MDhMNS43MDcgOGw1LjY0NyA1LjY0NmEuNS41IDAgMCAxLS43MDguNzA4bC02LTZhLjUuNSAwIDAgMSAwLS43MDhsNi02YS41LjUgMCAwIDEgLjcwOCAweicvPjwvc3ZnPlxcXCIpICFkZWZhdWx0O1xcbiRjYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbi1iZzogICAgICB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPScjeyRjYXJvdXNlbC1jb250cm9sLWNvbG9yfSc+PHBhdGggZD0nTTQuNjQ2IDEuNjQ2YS41LjUgMCAwIDEgLjcwOCAwbDYgNmEuNS41IDAgMCAxIDAgLjcwOGwtNiA2YS41LjUgMCAwIDEtLjcwOC0uNzA4TDEwLjI5MyA4IDQuNjQ2IDIuMzU0YS41LjUgMCAwIDEgMC0uNzA4eicvPjwvc3ZnPlxcXCIpICFkZWZhdWx0O1xcblxcbiRjYXJvdXNlbC10cmFuc2l0aW9uLWR1cmF0aW9uOiAgICAgICAuNnMgIWRlZmF1bHQ7XFxuJGNhcm91c2VsLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAkY2Fyb3VzZWwtdHJhbnNpdGlvbi1kdXJhdGlvbiBlYXNlLWluLW91dCAhZGVmYXVsdDsgLy8gRGVmaW5lIHRyYW5zZm9ybSB0cmFuc2l0aW9uIGZpcnN0IGlmIHVzaW5nIG11bHRpcGxlIHRyYW5zaXRpb25zIChlLmcuLCBgdHJhbnNmb3JtIDJzIGVhc2UsIG9wYWNpdHkgLjVzIGVhc2Utb3V0YClcXG5cXG4kY2Fyb3VzZWwtZGFyay1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgJGJsYWNrICFkZWZhdWx0O1xcbiRjYXJvdXNlbC1kYXJrLWNhcHRpb24tY29sb3I6ICAgICAgICAkYmxhY2sgIWRlZmF1bHQ7XFxuJGNhcm91c2VsLWRhcmstY29udHJvbC1pY29uLWZpbHRlcjogIGludmVydCgxKSBncmF5c2NhbGUoMTAwKSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIGNhcm91c2VsLXZhcmlhYmxlc1xcblxcblxcbi8vIFNwaW5uZXJzXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHNwaW5uZXItdmFyaWFibGVzXFxuJHNwaW5uZXItd2lkdGg6ICAgICAgICAgICAycmVtICFkZWZhdWx0O1xcbiRzcGlubmVyLWhlaWdodDogICAgICAgICAgJHNwaW5uZXItd2lkdGggIWRlZmF1bHQ7XFxuJHNwaW5uZXItdmVydGljYWwtYWxpZ246ICAtLjEyNWVtICFkZWZhdWx0O1xcbiRzcGlubmVyLWJvcmRlci13aWR0aDogICAgLjI1ZW0gIWRlZmF1bHQ7XFxuJHNwaW5uZXItYW5pbWF0aW9uLXNwZWVkOiAuNzVzICFkZWZhdWx0O1xcblxcbiRzcGlubmVyLXdpZHRoLXNtOiAgICAgICAgMXJlbSAhZGVmYXVsdDtcXG4kc3Bpbm5lci1oZWlnaHQtc206ICAgICAgICRzcGlubmVyLXdpZHRoLXNtICFkZWZhdWx0O1xcbiRzcGlubmVyLWJvcmRlci13aWR0aC1zbTogLjJlbSAhZGVmYXVsdDtcXG4vLyBzY3NzLWRvY3MtZW5kIHNwaW5uZXItdmFyaWFibGVzXFxuXFxuXFxuLy8gQ2xvc2VcXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgY2xvc2UtdmFyaWFibGVzXFxuJGJ0bi1jbG9zZS13aWR0aDogICAgICAgICAgICAxZW0gIWRlZmF1bHQ7XFxuJGJ0bi1jbG9zZS1oZWlnaHQ6ICAgICAgICAgICAkYnRuLWNsb3NlLXdpZHRoICFkZWZhdWx0O1xcbiRidG4tY2xvc2UtcGFkZGluZy14OiAgICAgICAgLjI1ZW0gIWRlZmF1bHQ7XFxuJGJ0bi1jbG9zZS1wYWRkaW5nLXk6ICAgICAgICAkYnRuLWNsb3NlLXBhZGRpbmcteCAhZGVmYXVsdDtcXG4kYnRuLWNsb3NlLWNvbG9yOiAgICAgICAgICAgICRibGFjayAhZGVmYXVsdDtcXG4kYnRuLWNsb3NlLWJnOiAgICAgICAgICAgICAgIHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9JyN7JGJ0bi1jbG9zZS1jb2xvcn0nPjxwYXRoIGQ9J00uMjkzLjI5M2ExIDEgMCAwIDEgMS40MTQgMEw4IDYuNTg2IDE0LjI5My4yOTNhMSAxIDAgMSAxIDEuNDE0IDEuNDE0TDkuNDE0IDhsNi4yOTMgNi4yOTNhMSAxIDAgMCAxLTEuNDE0IDEuNDE0TDggOS40MTRsLTYuMjkzIDYuMjkzYTEgMSAwIDAgMS0xLjQxNC0xLjQxNEw2LjU4NiA4IC4yOTMgMS43MDdhMSAxIDAgMCAxIDAtMS40MTR6Jy8+PC9zdmc+XFxcIikgIWRlZmF1bHQ7XFxuJGJ0bi1jbG9zZS1mb2N1cy1zaGFkb3c6ICAgICAkaW5wdXQtYnRuLWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XFxuJGJ0bi1jbG9zZS1vcGFjaXR5OiAgICAgICAgICAuNSAhZGVmYXVsdDtcXG4kYnRuLWNsb3NlLWhvdmVyLW9wYWNpdHk6ICAgIC43NSAhZGVmYXVsdDtcXG4kYnRuLWNsb3NlLWZvY3VzLW9wYWNpdHk6ICAgIDEgIWRlZmF1bHQ7XFxuJGJ0bi1jbG9zZS1kaXNhYmxlZC1vcGFjaXR5OiAuMjUgIWRlZmF1bHQ7XFxuJGJ0bi1jbG9zZS13aGl0ZS1maWx0ZXI6ICAgICBpbnZlcnQoMSkgZ3JheXNjYWxlKDEwMCUpIGJyaWdodG5lc3MoMjAwJSkgIWRlZmF1bHQ7XFxuLy8gc2Nzcy1kb2NzLWVuZCBjbG9zZS12YXJpYWJsZXNcXG5cXG5cXG4vLyBPZmZjYW52YXNcXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgb2ZmY2FudmFzLXZhcmlhYmxlc1xcbiRvZmZjYW52YXMtcGFkZGluZy15OiAgICAgICAgICAgICAgICRtb2RhbC1pbm5lci1wYWRkaW5nICFkZWZhdWx0O1xcbiRvZmZjYW52YXMtcGFkZGluZy14OiAgICAgICAgICAgICAgICRtb2RhbC1pbm5lci1wYWRkaW5nICFkZWZhdWx0O1xcbiRvZmZjYW52YXMtaG9yaXpvbnRhbC13aWR0aDogICAgICAgIDQwMHB4ICFkZWZhdWx0O1xcbiRvZmZjYW52YXMtdmVydGljYWwtaGVpZ2h0OiAgICAgICAgIDMwdmggIWRlZmF1bHQ7XFxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWR1cmF0aW9uOiAgICAgLjNzICFkZWZhdWx0O1xcbiRvZmZjYW52YXMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICRtb2RhbC1jb250ZW50LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcXG4kb2ZmY2FudmFzLWJvcmRlci13aWR0aDogICAgICAgICAgICAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuJG9mZmNhbnZhcy10aXRsZS1saW5lLWhlaWdodDogICAgICAgJG1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xcbiRvZmZjYW52YXMtYmctY29sb3I6ICAgICAgICAgICAgICAgICRtb2RhbC1jb250ZW50LWJnICFkZWZhdWx0O1xcbiRvZmZjYW52YXMtY29sb3I6ICAgICAgICAgICAgICAgICAgICRtb2RhbC1jb250ZW50LWNvbG9yICFkZWZhdWx0O1xcbiRvZmZjYW52YXMtYm94LXNoYWRvdzogICAgICAgICAgICAgICRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHMgIWRlZmF1bHQ7XFxuJG9mZmNhbnZhcy1iYWNrZHJvcC1iZzogICAgICAgICAgICAgJG1vZGFsLWJhY2tkcm9wLWJnICFkZWZhdWx0O1xcbiRvZmZjYW52YXMtYmFja2Ryb3Atb3BhY2l0eTogICAgICAgICRtb2RhbC1iYWNrZHJvcC1vcGFjaXR5ICFkZWZhdWx0O1xcbi8vIHNjc3MtZG9jcy1lbmQgb2ZmY2FudmFzLXZhcmlhYmxlc1xcblxcbi8vIENvZGVcXG5cXG4kY29kZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xcbiRjb2RlLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICRwaW5rICFkZWZhdWx0O1xcblxcbiRrYmQtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAgIC4xODc1cmVtICFkZWZhdWx0O1xcbiRrYmQtcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICAgIC4zNzVyZW0gIWRlZmF1bHQ7XFxuJGtiZC1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAgJGNvZGUtZm9udC1zaXplICFkZWZhdWx0O1xcbiRrYmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcigtLSN7JHByZWZpeH1ib2R5LWJnKSAhZGVmYXVsdDtcXG4ka2JkLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIoLS0jeyRwcmVmaXh9Ym9keS1jb2xvcikgIWRlZmF1bHQ7XFxuJG5lc3RlZC1rYmQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDsgLy8gRGVwcmVjYXRlZCBpbiB2NS4yLjAsIHJlbW92aW5nIGluIHY2XFxuXFxuJHByZS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcXG5cIixcIi8vIHN0eWxlbGludC1kaXNhYmxlIHByb3BlcnR5LWRpc2FsbG93ZWQtbGlzdFxcbi8vIFNpbmdsZSBzaWRlIGJvcmRlci1yYWRpdXNcXG5cXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVwbGFjZSBuZWdhdGl2ZSB2YWx1ZXMgd2l0aCAwXFxuQGZ1bmN0aW9uIHZhbGlkLXJhZGl1cygkcmFkaXVzKSB7XFxuICAkcmV0dXJuOiAoKTtcXG4gIEBlYWNoICR2YWx1ZSBpbiAkcmFkaXVzIHtcXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBudW1iZXIge1xcbiAgICAgICRyZXR1cm46IGFwcGVuZCgkcmV0dXJuLCBtYXgoJHZhbHVlLCAwKSk7XFxuICAgIH0gQGVsc2Uge1xcbiAgICAgICRyZXR1cm46IGFwcGVuZCgkcmV0dXJuLCAkdmFsdWUpO1xcbiAgICB9XFxuICB9XFxuICBAcmV0dXJuICRyZXR1cm47XFxufVxcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBib3JkZXItcmFkaXVzLW1peGluc1xcbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzLCAkZmFsbGJhY2stYm9yZGVyLXJhZGl1czogZmFsc2UpIHtcXG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xcbiAgICBib3JkZXItcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XFxuICB9XFxuICBAZWxzZSBpZiAkZmFsbGJhY2stYm9yZGVyLXJhZGl1cyAhPSBmYWxzZSB7XFxuICAgIGJvcmRlci1yYWRpdXM6ICRmYWxsYmFjay1ib3JkZXItcmFkaXVzO1xcbiAgfVxcbn1cXG5cXG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcXG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XFxuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XFxuICB9XFxufVxcblxcbkBtaXhpbiBib3JkZXItZW5kLXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cykge1xcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XFxuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XFxuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XFxuICB9XFxufVxcblxcbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cykge1xcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XFxuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XFxuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcXG4gIH1cXG59XFxuXFxuQG1peGluIGJvcmRlci1zdGFydC1yYWRpdXMoJHJhZGl1czogJGJvcmRlci1yYWRpdXMpIHtcXG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XFxuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcXG4gIH1cXG59XFxuXFxuQG1peGluIGJvcmRlci10b3Atc3RhcnQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XFxuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcXG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xcbiAgfVxcbn1cXG5cXG5AbWl4aW4gYm9yZGVyLXRvcC1lbmQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XFxuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcXG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcXG4gIH1cXG59XFxuXFxuQG1peGluIGJvcmRlci1ib3R0b20tZW5kLXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cykge1xcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XFxuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XFxuICB9XFxufVxcblxcbkBtaXhpbiBib3JkZXItYm90dG9tLXN0YXJ0LXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cykge1xcbiAgQGlmICRlbmFibGUtcm91bmRlZCB7XFxuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcXG4gIH1cXG59XFxuLy8gc2Nzcy1kb2NzLWVuZCBib3JkZXItcmFkaXVzLW1peGluc1xcblwiLFwiLy9cXG4vLyBIZWFkaW5nc1xcbi8vXFxuLmgxIHtcXG4gIEBleHRlbmQgaDE7XFxufVxcblxcbi5oMiB7XFxuICBAZXh0ZW5kIGgyO1xcbn1cXG5cXG4uaDMge1xcbiAgQGV4dGVuZCBoMztcXG59XFxuXFxuLmg0IHtcXG4gIEBleHRlbmQgaDQ7XFxufVxcblxcbi5oNSB7XFxuICBAZXh0ZW5kIGg1O1xcbn1cXG5cXG4uaDYge1xcbiAgQGV4dGVuZCBoNjtcXG59XFxuXFxuXFxuLmxlYWQge1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRsZWFkLWZvbnQtc2l6ZSk7XFxuICBmb250LXdlaWdodDogJGxlYWQtZm9udC13ZWlnaHQ7XFxufVxcblxcbi8vIFR5cGUgZGlzcGxheSBjbGFzc2VzXFxuQGVhY2ggJGRpc3BsYXksICRmb250LXNpemUgaW4gJGRpc3BsYXktZm9udC1zaXplcyB7XFxuICAuZGlzcGxheS0jeyRkaXNwbGF5fSB7XFxuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplKTtcXG4gICAgZm9udC1mYW1pbHk6ICRkaXNwbGF5LWZvbnQtZmFtaWx5O1xcbiAgICBmb250LXN0eWxlOiAkZGlzcGxheS1mb250LXN0eWxlO1xcbiAgICBmb250LXdlaWdodDogJGRpc3BsYXktZm9udC13ZWlnaHQ7XFxuICAgIGxpbmUtaGVpZ2h0OiAkZGlzcGxheS1saW5lLWhlaWdodDtcXG4gIH1cXG59XFxuXFxuLy9cXG4vLyBFbXBoYXNpc1xcbi8vXFxuLnNtYWxsIHtcXG4gIEBleHRlbmQgc21hbGw7XFxufVxcblxcbi5tYXJrIHtcXG4gIEBleHRlbmQgbWFyaztcXG59XFxuXFxuLy9cXG4vLyBMaXN0c1xcbi8vXFxuXFxuLmxpc3QtdW5zdHlsZWQge1xcbiAgQGluY2x1ZGUgbGlzdC11bnN0eWxlZCgpO1xcbn1cXG5cXG4vLyBJbmxpbmUgdHVybnMgbGlzdCBpdGVtcyBpbnRvIGlubGluZS1ibG9ja1xcbi5saXN0LWlubGluZSB7XFxuICBAaW5jbHVkZSBsaXN0LXVuc3R5bGVkKCk7XFxufVxcbi5saXN0LWlubGluZS1pdGVtIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG5cXG4gICY6bm90KDpsYXN0LWNoaWxkKSB7XFxuICAgIG1hcmdpbi1yaWdodDogJGxpc3QtaW5saW5lLXBhZGRpbmc7XFxuICB9XFxufVxcblxcblxcbi8vXFxuLy8gTWlzY1xcbi8vXFxuXFxuLy8gQnVpbGRzIG9uIGBhYmJyYFxcbi5pbml0aWFsaXNtIHtcXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaW5pdGlhbGlzbS1mb250LXNpemUpO1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG59XFxuXFxuLy8gQmxvY2txdW90ZXNcXG4uYmxvY2txdW90ZSB7XFxuICBtYXJnaW4tYm90dG9tOiAkYmxvY2txdW90ZS1tYXJnaW4teTtcXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYmxvY2txdW90ZS1mb250LXNpemUpO1xcblxcbiAgPiA6bGFzdC1jaGlsZCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICB9XFxufVxcblxcbi5ibG9ja3F1b3RlLWZvb3RlciB7XFxuICBtYXJnaW4tdG9wOiAtJGJsb2NrcXVvdGUtbWFyZ2luLXk7XFxuICBtYXJnaW4tYm90dG9tOiAkYmxvY2txdW90ZS1tYXJnaW4teTtcXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYmxvY2txdW90ZS1mb290ZXItZm9udC1zaXplKTtcXG4gIGNvbG9yOiAkYmxvY2txdW90ZS1mb290ZXItY29sb3I7XFxuXFxuICAmOjpiZWZvcmUge1xcbiAgICBjb250ZW50OiBcXFwiXFxcXDIwMTRcXFxcMDBBMFxcXCI7IC8vIGVtIGRhc2gsIG5ic3BcXG4gIH1cXG59XFxuXCIsXCIvLyBMaXN0c1xcblxcbi8vIFVuc3R5bGVkIGtlZXBzIGxpc3QgaXRlbXMgYmxvY2sgbGV2ZWwsIGp1c3QgcmVtb3ZlcyBkZWZhdWx0IGJyb3dzZXIgcGFkZGluZyBhbmQgbGlzdC1zdHlsZVxcbkBtaXhpbiBsaXN0LXVuc3R5bGVkIHtcXG4gIHBhZGRpbmctbGVmdDogMDtcXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XFxufVxcblwiLFwiLy8gUmVzcG9uc2l2ZSBpbWFnZXMgKGVuc3VyZSBpbWFnZXMgZG9uJ3Qgc2NhbGUgYmV5b25kIHRoZWlyIHBhcmVudHMpXFxuLy9cXG4vLyBUaGlzIGlzIHB1cnBvc2VmdWxseSBvcHQtaW4gdmlhIGFuIGV4cGxpY2l0IGNsYXNzIHJhdGhlciB0aGFuIGJlaW5nIHRoZSBkZWZhdWx0IGZvciBhbGwgYDxpbWc+YHMuXFxuLy8gV2UgcHJldmlvdXNseSB0cmllZCB0aGUgXFxcImltYWdlcyBhcmUgcmVzcG9uc2l2ZSBieSBkZWZhdWx0XFxcIiBhcHByb2FjaCBpbiBCb290c3RyYXAgdjIsXFxuLy8gYW5kIGFiYW5kb25lZCBpdCBpbiBCb290c3RyYXAgdjMgYmVjYXVzZSBpdCBicmVha3MgbG90cyBvZiB0aGlyZC1wYXJ0eSB3aWRnZXRzIChpbmNsdWRpbmcgR29vZ2xlIE1hcHMpXFxuLy8gd2hpY2ggd2VyZW4ndCBleHBlY3RpbmcgdGhlIGltYWdlcyB3aXRoaW4gdGhlbXNlbHZlcyB0byBiZSBpbnZvbHVudGFyaWx5IHJlc2l6ZWQuXFxuLy8gU2VlIGFsc28gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xODE3OFxcbi5pbWctZmx1aWQge1xcbiAgQGluY2x1ZGUgaW1nLWZsdWlkKCk7XFxufVxcblxcblxcbi8vIEltYWdlIHRodW1ibmFpbHNcXG4uaW1nLXRodW1ibmFpbCB7XFxuICBwYWRkaW5nOiAkdGh1bWJuYWlsLXBhZGRpbmc7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGh1bWJuYWlsLWJnO1xcbiAgYm9yZGVyOiAkdGh1bWJuYWlsLWJvcmRlci13aWR0aCBzb2xpZCAkdGh1bWJuYWlsLWJvcmRlci1jb2xvcjtcXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJHRodW1ibmFpbC1ib3JkZXItcmFkaXVzKTtcXG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJHRodW1ibmFpbC1ib3gtc2hhZG93KTtcXG5cXG4gIC8vIEtlZXAgdGhlbSBhdCBtb3N0IDEwMCUgd2lkZVxcbiAgQGluY2x1ZGUgaW1nLWZsdWlkKCk7XFxufVxcblxcbi8vXFxuLy8gRmlndXJlc1xcbi8vXFxuXFxuLmZpZ3VyZSB7XFxuICAvLyBFbnN1cmVzIHRoZSBjYXB0aW9uJ3MgdGV4dCBhbGlnbnMgd2l0aCB0aGUgaW1hZ2UuXFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcblxcbi5maWd1cmUtaW1nIHtcXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZXIgKiAuNTtcXG4gIGxpbmUtaGVpZ2h0OiAxO1xcbn1cXG5cXG4uZmlndXJlLWNhcHRpb24ge1xcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRmaWd1cmUtY2FwdGlvbi1mb250LXNpemUpO1xcbiAgY29sb3I6ICRmaWd1cmUtY2FwdGlvbi1jb2xvcjtcXG59XFxuXCIsXCIvLyBJbWFnZSBNaXhpbnNcXG4vLyAtIFJlc3BvbnNpdmUgaW1hZ2VcXG4vLyAtIFJldGluYSBpbWFnZVxcblxcblxcbi8vIFJlc3BvbnNpdmUgaW1hZ2VcXG4vL1xcbi8vIEtlZXAgaW1hZ2VzIGZyb20gc2NhbGluZyBiZXlvbmQgdGhlIHdpZHRoIG9mIHRoZWlyIHBhcmVudHMuXFxuXFxuQG1peGluIGltZy1mbHVpZCB7XFxuICAvLyBQYXJ0IDE6IFNldCBhIG1heGltdW0gcmVsYXRpdmUgdG8gdGhlIHBhcmVudFxcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgLy8gUGFydCAyOiBPdmVycmlkZSB0aGUgaGVpZ2h0IHRvIGF1dG8sIG90aGVyd2lzZSBpbWFnZXMgd2lsbCBiZSBzdHJldGNoZWRcXG4gIC8vIHdoZW4gc2V0dGluZyBhIHdpZHRoIGFuZCBoZWlnaHQgYXR0cmlidXRlIG9uIHRoZSBpbWcgZWxlbWVudC5cXG4gIGhlaWdodDogYXV0bztcXG59XFxuXCIsXCIvLyBDb250YWluZXIgd2lkdGhzXFxuLy9cXG4vLyBTZXQgdGhlIGNvbnRhaW5lciB3aWR0aCwgYW5kIG92ZXJyaWRlIGl0IGZvciBmaXhlZCBuYXZiYXJzIGluIG1lZGlhIHF1ZXJpZXMuXFxuXFxuQGlmICRlbmFibGUtY29udGFpbmVyLWNsYXNzZXMge1xcbiAgLy8gU2luZ2xlIGNvbnRhaW5lciBjbGFzcyB3aXRoIGJyZWFrcG9pbnQgbWF4LXdpZHRoc1xcbiAgLmNvbnRhaW5lcixcXG4gIC8vIDEwMCUgd2lkZSBjb250YWluZXIgYXQgYWxsIGJyZWFrcG9pbnRzXFxuICAuY29udGFpbmVyLWZsdWlkIHtcXG4gICAgQGluY2x1ZGUgbWFrZS1jb250YWluZXIoKTtcXG4gIH1cXG5cXG4gIC8vIFJlc3BvbnNpdmUgY29udGFpbmVycyB0aGF0IGFyZSAxMDAlIHdpZGUgdW50aWwgYSBicmVha3BvaW50XFxuICBAZWFjaCAkYnJlYWtwb2ludCwgJGNvbnRhaW5lci1tYXgtd2lkdGggaW4gJGNvbnRhaW5lci1tYXgtd2lkdGhzIHtcXG4gICAgLmNvbnRhaW5lci0jeyRicmVha3BvaW50fSB7XFxuICAgICAgQGV4dGVuZCAuY29udGFpbmVyLWZsdWlkO1xcbiAgICB9XFxuXFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAgICAgJXJlc3BvbnNpdmUtY29udGFpbmVyLSN7JGJyZWFrcG9pbnR9IHtcXG4gICAgICAgIG1heC13aWR0aDogJGNvbnRhaW5lci1tYXgtd2lkdGg7XFxuICAgICAgfVxcblxcbiAgICAgIC8vIEV4dGVuZCBlYWNoIGJyZWFrcG9pbnQgd2hpY2ggaXMgc21hbGxlciBvciBlcXVhbCB0byB0aGUgY3VycmVudCBicmVha3BvaW50XFxuICAgICAgJGV4dGVuZC1icmVha3BvaW50OiB0cnVlO1xcblxcbiAgICAgIEBlYWNoICRuYW1lLCAkd2lkdGggaW4gJGdyaWQtYnJlYWtwb2ludHMge1xcbiAgICAgICAgQGlmICgkZXh0ZW5kLWJyZWFrcG9pbnQpIHtcXG4gICAgICAgICAgLmNvbnRhaW5lciN7YnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGdyaWQtYnJlYWtwb2ludHMpfSB7XFxuICAgICAgICAgICAgQGV4dGVuZCAlcmVzcG9uc2l2ZS1jb250YWluZXItI3skYnJlYWtwb2ludH07XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgLy8gT25jZSB0aGUgY3VycmVudCBicmVha3BvaW50IGlzIHJlYWNoZWQsIHN0b3AgZXh0ZW5kaW5nXFxuICAgICAgICAgIEBpZiAoJGJyZWFrcG9pbnQgPT0gJG5hbWUpIHtcXG4gICAgICAgICAgICAkZXh0ZW5kLWJyZWFrcG9pbnQ6IGZhbHNlO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblwiLFwiLy8gQ29udGFpbmVyIG1peGluc1xcblxcbkBtaXhpbiBtYWtlLWNvbnRhaW5lcigkZ3V0dGVyOiAkY29udGFpbmVyLXBhZGRpbmcteCkge1xcbiAgLS0jeyRwcmVmaXh9Z3V0dGVyLXg6ICN7JGd1dHRlcn07XFxuICAtLSN7JHByZWZpeH1ndXR0ZXIteTogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS0jeyRwcmVmaXh9Z3V0dGVyLXgpICogLjUpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxcbiAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLSN7JHByZWZpeH1ndXR0ZXIteCkgKiAuNSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XFxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG59XFxuXCIsXCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxcbi8vXFxuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxcbi8vXFxuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweClcXG4vL1xcbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cXG5cXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXFxuLy9cXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXFxuLy8gICAgbWRcXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIG1kXFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsIHh4bCkpXFxuLy8gICAgbWRcXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XFxuICBAaWYgbm90ICRuIHtcXG4gICAgQGVycm9yIFxcXCJicmVha3BvaW50IGAjeyRuYW1lfWAgbm90IGZvdW5kIGluIGAjeyRicmVha3BvaW50c31gXFxcIjtcXG4gIH1cXG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xcbn1cXG5cXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXFxuLy9cXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXFxuLy8gICAgNTc2cHhcXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XFxuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XFxufVxcblxcbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC5cXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyByZWR1Y2VkIGJ5IDAuMDJweCB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2ZcXG4vLyBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXFxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxcbi8vXFxuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgobWQsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIDc2Ny45OHB4XFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAkbWF4OiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xcbiAgQHJldHVybiBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJG1heCAtIC4wMiwgbnVsbCk7XFxufVxcblxcbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXFxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXFxuLy9cXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcXG4vLyAgICBcXFwiXFxcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXFxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXFxuLy8gICAgXFxcIi1zbVxcXCJcXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcXFwiXFxcIiwgXFxcIi0jeyRuYW1lfVxcXCIpO1xcbn1cXG5cXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXFxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XFxuICBAaWYgJG1pbiB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH0gQGVsc2Uge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xcbiAgQGlmICRtYXgge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIHtcXG4gICAgQGNvbnRlbnQ7XFxuICB9XFxufVxcblxcbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXFxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXFxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xcblxcbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXFxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1pbjogIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcXG4gICRtYXg6ICBicmVha3BvaW50LW1heCgkbmV4dCwgJGJyZWFrcG9pbnRzKTtcXG5cXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmV4dCwgJGJyZWFrcG9pbnRzKSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCIvLyBSb3dcXG4vL1xcbi8vIFJvd3MgY29udGFpbiB5b3VyIGNvbHVtbnMuXFxuXFxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcXG4gIC5yb3cge1xcbiAgICBAaW5jbHVkZSBtYWtlLXJvdygpO1xcblxcbiAgICA+ICoge1xcbiAgICAgIEBpbmNsdWRlIG1ha2UtY29sLXJlYWR5KCk7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuQGlmICRlbmFibGUtY3NzZ3JpZCB7XFxuICAuZ3JpZCB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KHZhcigtLSN7JHByZWZpeH1yb3dzLCAxKSwgMWZyKTtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQodmFyKC0tI3skcHJlZml4fWNvbHVtbnMsICN7JGdyaWQtY29sdW1uc30pLCAxZnIpO1xcbiAgICBnYXA6IHZhcigtLSN7JHByZWZpeH1nYXAsICN7JGdyaWQtZ3V0dGVyLXdpZHRofSk7XFxuXFxuICAgIEBpbmNsdWRlIG1ha2UtY3NzZ3JpZCgpO1xcbiAgfVxcbn1cXG5cXG5cXG4vLyBDb2x1bW5zXFxuLy9cXG4vLyBDb21tb24gc3R5bGVzIGZvciBzbWFsbCBhbmQgbGFyZ2UgZ3JpZCBjb2x1bW5zXFxuXFxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcXG4gIEBpbmNsdWRlIG1ha2UtZ3JpZC1jb2x1bW5zKCk7XFxufVxcblwiLFwiLy8gR3JpZCBzeXN0ZW1cXG4vL1xcbi8vIEdlbmVyYXRlIHNlbWFudGljIGdyaWQgY29sdW1ucyB3aXRoIHRoZXNlIG1peGlucy5cXG5cXG5AbWl4aW4gbWFrZS1yb3coJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoKSB7XFxuICAtLSN7JHByZWZpeH1ndXR0ZXIteDogI3skZ3V0dGVyfTtcXG4gIC0tI3skcHJlZml4fWd1dHRlci15OiAwO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtd3JhcDogd3JhcDtcXG4gIC8vIFRPRE86IFJldmlzaXQgY2FsYyBvcmRlciBhZnRlciBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvNjAzOSBpcyBmaXhlZFxcbiAgbWFyZ2luLXRvcDogY2FsYygtMSAqIHZhcigtLSN7JHByZWZpeH1ndXR0ZXIteSkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0uNSAqIHZhcigtLSN7JHByZWZpeH1ndXR0ZXIteCkpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fWd1dHRlci14KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XFxufVxcblxcbkBtaXhpbiBtYWtlLWNvbC1yZWFkeSgpIHtcXG4gIC8vIEFkZCBib3ggc2l6aW5nIGlmIG9ubHkgdGhlIGdyaWQgaXMgbG9hZGVkXFxuICBib3gtc2l6aW5nOiBpZih2YXJpYWJsZS1leGlzdHMoaW5jbHVkZS1jb2x1bW4tYm94LXNpemluZykgYW5kICRpbmNsdWRlLWNvbHVtbi1ib3gtc2l6aW5nLCBib3JkZXItYm94LCBudWxsKTtcXG4gIC8vIFByZXZlbnQgY29sdW1ucyBmcm9tIGJlY29taW5nIHRvbyBuYXJyb3cgd2hlbiBhdCBzbWFsbGVyIGdyaWQgdGllcnMgYnlcXG4gIC8vIGFsd2F5cyBzZXR0aW5nIGB3aWR0aDogMTAwJTtgLiBUaGlzIHdvcmtzIGJlY2F1c2Ugd2Ugc2V0IHRoZSB3aWR0aFxcbiAgLy8gbGF0ZXIgb24gdG8gb3ZlcnJpZGUgdGhpcyBpbml0aWFsIHdpZHRoLlxcbiAgZmxleC1zaHJpbms6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1heC13aWR0aDogMTAwJTsgLy8gUHJldmVudCBgLmNvbC1hdXRvYCwgYC5jb2xgICgmIHJlc3BvbnNpdmUgdmFyaWFudHMpIGZyb20gYnJlYWtpbmcgb3V0IHRoZSBncmlkXFxuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLSN7JHByZWZpeH1ndXR0ZXIteCkgKiAuNSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XFxuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tI3skcHJlZml4fWd1dHRlci14KSAqIC41KTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcXG4gIG1hcmdpbi10b3A6IHZhcigtLSN7JHByZWZpeH1ndXR0ZXIteSk7XFxufVxcblxcbkBtaXhpbiBtYWtlLWNvbCgkc2l6ZTogZmFsc2UsICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XFxuICBAaWYgJHNpemUge1xcbiAgICBmbGV4OiAwIDAgYXV0bztcXG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoZGl2aWRlKCRzaXplLCAkY29sdW1ucykpO1xcblxcbiAgfSBAZWxzZSB7XFxuICAgIGZsZXg6IDEgMSAwO1xcbiAgICBtYXgtd2lkdGg6IDEwMCU7XFxuICB9XFxufVxcblxcbkBtaXhpbiBtYWtlLWNvbC1hdXRvKCkge1xcbiAgZmxleDogMCAwIGF1dG87XFxuICB3aWR0aDogYXV0bztcXG59XFxuXFxuQG1peGluIG1ha2UtY29sLW9mZnNldCgkc2l6ZSwgJGNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcXG4gICRudW06IGRpdmlkZSgkc2l6ZSwgJGNvbHVtbnMpO1xcbiAgbWFyZ2luLWxlZnQ6IGlmKCRudW0gPT0gMCwgMCwgcGVyY2VudGFnZSgkbnVtKSk7XFxufVxcblxcbi8vIFJvdyBjb2x1bW5zXFxuLy9cXG4vLyBTcGVjaWZ5IG9uIGEgcGFyZW50IGVsZW1lbnQoZS5nLiwgLnJvdykgdG8gZm9yY2UgaW1tZWRpYXRlIGNoaWxkcmVuIGludG8gTk5cXG4vLyBudW1iZXIgb2YgY29sdW1ucy4gU3VwcG9ydHMgd3JhcHBpbmcgdG8gbmV3IGxpbmVzLCBidXQgZG9lcyBub3QgZG8gYSBNYXNvbnJ5XFxuLy8gc3R5bGUgZ3JpZC5cXG5AbWl4aW4gcm93LWNvbHMoJGNvdW50KSB7XFxuICA+ICoge1xcbiAgICBmbGV4OiAwIDAgYXV0bztcXG4gICAgd2lkdGg6IGRpdmlkZSgxMDAlLCAkY291bnQpO1xcbiAgfVxcbn1cXG5cXG4vLyBGcmFtZXdvcmsgZ3JpZCBnZW5lcmF0aW9uXFxuLy9cXG4vLyBVc2VkIG9ubHkgYnkgQm9vdHN0cmFwIHRvIGdlbmVyYXRlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBncmlkIGNsYXNzZXMgZ2l2ZW5cXG4vLyBhbnkgdmFsdWUgb2YgYCRncmlkLWNvbHVtbnNgLlxcblxcbkBtaXhpbiBtYWtlLWdyaWQtY29sdW1ucygkY29sdW1uczogJGdyaWQtY29sdW1ucywgJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkYnJlYWtwb2ludHMpIHtcXG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xcblxcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpIHtcXG4gICAgICAvLyBQcm92aWRlIGJhc2ljIGAuY29sLXticH1gIGNsYXNzZXMgZm9yIGVxdWFsLXdpZHRoIGZsZXhib3ggY29sdW1uc1xcbiAgICAgIC5jb2wjeyRpbmZpeH0ge1xcbiAgICAgICAgZmxleDogMSAwIDAlOyAvLyBGbGV4YnVncyAjNDogaHR0cHM6Ly9naXRodWIuY29tL3BoaWxpcHdhbHRvbi9mbGV4YnVncyNmbGV4YnVnLTRcXG4gICAgICB9XFxuXFxuICAgICAgLnJvdy1jb2xzI3skaW5maXh9LWF1dG8gPiAqIHtcXG4gICAgICAgIEBpbmNsdWRlIG1ha2UtY29sLWF1dG8oKTtcXG4gICAgICB9XFxuXFxuICAgICAgQGlmICRncmlkLXJvdy1jb2x1bW5zID4gMCB7XFxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLXJvdy1jb2x1bW5zIHtcXG4gICAgICAgICAgLnJvdy1jb2xzI3skaW5maXh9LSN7JGl9IHtcXG4gICAgICAgICAgICBAaW5jbHVkZSByb3ctY29scygkaSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgLmNvbCN7JGluZml4fS1hdXRvIHtcXG4gICAgICAgIEBpbmNsdWRlIG1ha2UtY29sLWF1dG8oKTtcXG4gICAgICB9XFxuXFxuICAgICAgQGlmICRjb2x1bW5zID4gMCB7XFxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb2x1bW5zIHtcXG4gICAgICAgICAgLmNvbCN7JGluZml4fS0jeyRpfSB7XFxuICAgICAgICAgICAgQGluY2x1ZGUgbWFrZS1jb2woJGksICRjb2x1bW5zKTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgLy8gYCRjb2x1bW5zIC0gMWAgYmVjYXVzZSBvZmZzZXR0aW5nIGJ5IHRoZSB3aWR0aCBvZiBhbiBlbnRpcmUgcm93IGlzbid0IHBvc3NpYmxlXFxuICAgICAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICgkY29sdW1ucyAtIDEpIHtcXG4gICAgICAgICAgQGlmIG5vdCAoJGluZml4ID09IFxcXCJcXFwiIGFuZCAkaSA9PSAwKSB7IC8vIEF2b2lkIGVtaXR0aW5nIHVzZWxlc3MgLm9mZnNldC0wXFxuICAgICAgICAgICAgLm9mZnNldCN7JGluZml4fS0jeyRpfSB7XFxuICAgICAgICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1vZmZzZXQoJGksICRjb2x1bW5zKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgLy8gR3V0dGVyc1xcbiAgICAgIC8vXFxuICAgICAgLy8gTWFrZSB1c2Ugb2YgYC5nLSpgLCBgLmd4LSpgIG9yIGAuZ3ktKmAgdXRpbGl0aWVzIHRvIGNoYW5nZSBzcGFjaW5nIGJldHdlZW4gdGhlIGNvbHVtbnMuXFxuICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRndXR0ZXJzIHtcXG4gICAgICAgIC5nI3skaW5maXh9LSN7JGtleX0sXFxuICAgICAgICAuZ3gjeyRpbmZpeH0tI3ska2V5fSB7XFxuICAgICAgICAgIC0tI3skcHJlZml4fWd1dHRlci14OiAjeyR2YWx1ZX07XFxuICAgICAgICB9XFxuXFxuICAgICAgICAuZyN7JGluZml4fS0jeyRrZXl9LFxcbiAgICAgICAgLmd5I3skaW5maXh9LSN7JGtleX0ge1xcbiAgICAgICAgICAtLSN7JHByZWZpeH1ndXR0ZXIteTogI3skdmFsdWV9O1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cXG5AbWl4aW4gbWFrZS1jc3NncmlkKCRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkYnJlYWtwb2ludHMpIHtcXG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xcblxcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpIHtcXG4gICAgICBAaWYgJGNvbHVtbnMgPiAwIHtcXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xcbiAgICAgICAgICAuZy1jb2wjeyRpbmZpeH0tI3skaX0ge1xcbiAgICAgICAgICAgIGdyaWQtY29sdW1uOiBhdXRvIC8gc3BhbiAkaTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgLy8gU3RhcnQgd2l0aCBgMWAgYmVjYXVzZSBgMGAgaXMgYW5kIGludmFsaWQgdmFsdWUuXFxuICAgICAgICAvLyBFbmRzIHdpdGggYCRjb2x1bW5zIC0gMWAgYmVjYXVzZSBvZmZzZXR0aW5nIGJ5IHRoZSB3aWR0aCBvZiBhbiBlbnRpcmUgcm93IGlzbid0IHBvc3NpYmxlLlxcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAoJGNvbHVtbnMgLSAxKSB7XFxuICAgICAgICAgIC5nLXN0YXJ0I3skaW5maXh9LSN7JGl9IHtcXG4gICAgICAgICAgICBncmlkLWNvbHVtbi1zdGFydDogJGk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vIEJhc2Ugc3R5bGVzXFxuLy9cXG5cXG4uYnRuIHtcXG4gIC8vIHNjc3MtZG9jcy1zdGFydCBidG4tY3NzLXZhcnNcXG4gIC0tI3skcHJlZml4fWJ0bi1wYWRkaW5nLXg6ICN7JGJ0bi1wYWRkaW5nLXh9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLXBhZGRpbmcteTogI3skYnRuLXBhZGRpbmcteX07XFxuICAtLSN7JHByZWZpeH1idG4tZm9udC1mYW1pbHk6ICN7JGJ0bi1mb250LWZhbWlseX07XFxuICBAaW5jbHVkZSByZnMoJGJ0bi1mb250LXNpemUsIC0tI3skcHJlZml4fWJ0bi1mb250LXNpemUpO1xcbiAgLS0jeyRwcmVmaXh9YnRuLWZvbnQtd2VpZ2h0OiAjeyRidG4tZm9udC13ZWlnaHR9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWxpbmUtaGVpZ2h0OiAjeyRidG4tbGluZS1oZWlnaHR9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWNvbG9yOiAjeyRib2R5LWNvbG9yfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1iZzogdHJhbnNwYXJlbnQ7XFxuICAtLSN7JHByZWZpeH1idG4tYm9yZGVyLXdpZHRoOiAjeyRidG4tYm9yZGVyLXdpZHRofTtcXG4gIC0tI3skcHJlZml4fWJ0bi1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWJvcmRlci1yYWRpdXM6ICN7JGJ0bi1ib3JkZXItcmFkaXVzfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1ib3gtc2hhZG93OiAjeyRidG4tYm94LXNoYWRvd307XFxuICAtLSN7JHByZWZpeH1idG4tZGlzYWJsZWQtb3BhY2l0eTogI3skYnRuLWRpc2FibGVkLW9wYWNpdHl9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWZvY3VzLWJveC1zaGFkb3c6IDAgMCAwICN7JGJ0bi1mb2N1cy13aWR0aH0gcmdiYSh2YXIoLS0jeyRwcmVmaXh9YnRuLWZvY3VzLXNoYWRvdy1yZ2IpLCAuNSk7XFxuICAvLyBzY3NzLWRvY3MtZW5kIGJ0bi1jc3MtdmFyc1xcblxcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcGFkZGluZzogdmFyKC0tI3skcHJlZml4fWJ0bi1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1idG4tcGFkZGluZy14KTtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWZvbnQtZmFtaWx5KTtcXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSh2YXIoLS0jeyRwcmVmaXh9YnRuLWZvbnQtc2l6ZSkpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1idG4tZm9udC13ZWlnaHQpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLSN7JHByZWZpeH1idG4tbGluZS1oZWlnaHQpO1xcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4tY29sb3IpO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBpZigkbGluay1kZWNvcmF0aW9uID09IG5vbmUsIG51bGwsIG5vbmUpO1xcbiAgd2hpdGUtc3BhY2U6ICRidG4td2hpdGUtc3BhY2U7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgY3Vyc29yOiBpZigkZW5hYmxlLWJ1dHRvbi1wb2ludGVycywgcG9pbnRlciwgbnVsbCk7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIGJvcmRlcjogdmFyKC0tI3skcHJlZml4fWJ0bi1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1idG4tYm9yZGVyLWNvbG9yKTtcXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXModmFyKC0tI3skcHJlZml4fWJ0bi1ib3JkZXItcmFkaXVzKSk7XFxuICBAaW5jbHVkZSBncmFkaWVudC1iZyh2YXIoLS0jeyRwcmVmaXh9YnRuLWJnKSk7XFxuICBAaW5jbHVkZSBib3gtc2hhZG93KHZhcigtLSN7JHByZWZpeH1idG4tYm94LXNoYWRvdykpO1xcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigkYnRuLXRyYW5zaXRpb24pO1xcblxcbiAgJjpob3ZlciB7XFxuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWNvbG9yKTtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBpZigkbGluay1ob3Zlci1kZWNvcmF0aW9uID09IHVuZGVybGluZSwgbm9uZSwgbnVsbCk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4taG92ZXItYmcpO1xcbiAgICBib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4taG92ZXItYm9yZGVyLWNvbG9yKTtcXG4gIH1cXG5cXG4gIC5idG4tY2hlY2s6Zm9jdXMgKyAmLFxcbiAgJjpmb2N1cyB7XFxuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWNvbG9yKTtcXG4gICAgQGluY2x1ZGUgZ3JhZGllbnQtYmcodmFyKC0tI3skcHJlZml4fWJ0bi1ob3Zlci1iZykpO1xcbiAgICBib3JkZXItY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4taG92ZXItYm9yZGVyLWNvbG9yKTtcXG4gICAgb3V0bGluZTogMDtcXG4gICAgLy8gQXZvaWQgdXNpbmcgbWl4aW4gc28gd2UgY2FuIHBhc3MgY3VzdG9tIGZvY3VzIHNoYWRvdyBwcm9wZXJseVxcbiAgICBAaWYgJGVuYWJsZS1zaGFkb3dzIHtcXG4gICAgICBib3gtc2hhZG93OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWJveC1zaGFkb3cpLCB2YXIoLS0jeyRwcmVmaXh9YnRuLWZvY3VzLWJveC1zaGFkb3cpO1xcbiAgICB9IEBlbHNlIHtcXG4gICAgICBib3gtc2hhZG93OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWZvY3VzLWJveC1zaGFkb3cpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuYnRuLWNoZWNrOmNoZWNrZWQgKyAmLFxcbiAgLmJ0bi1jaGVjazphY3RpdmUgKyAmLFxcbiAgJjphY3RpdmUsXFxuICAmLmFjdGl2ZSxcXG4gICYuc2hvdyB7XFxuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1jb2xvcik7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4tYWN0aXZlLWJnKTtcXG4gICAgLy8gUmVtb3ZlIENTUyBncmFkaWVudHMgaWYgdGhleSdyZSBlbmFibGVkXFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IGlmKCRlbmFibGUtZ3JhZGllbnRzLCBub25lLCBudWxsKTtcXG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1ib3JkZXItY29sb3IpO1xcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KHZhcigtLSN7JHByZWZpeH1idG4tYWN0aXZlLXNoYWRvdykpO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XFxuICAgICAgQGlmICRlbmFibGUtc2hhZG93cyB7XFxuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1zaGFkb3cpLCB2YXIoLS0jeyRwcmVmaXh9YnRuLWZvY3VzLWJveC1zaGFkb3cpO1xcbiAgICAgIH0gQGVsc2Uge1xcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tI3skcHJlZml4fWJ0bi1mb2N1cy1ib3gtc2hhZG93KTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gICY6ZGlzYWJsZWQsXFxuICAmLmRpc2FibGVkLFxcbiAgZmllbGRzZXQ6ZGlzYWJsZWQgJiB7XFxuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWNvbG9yKTtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4tZGlzYWJsZWQtYmcpO1xcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpZigkZW5hYmxlLWdyYWRpZW50cywgbm9uZSwgbnVsbCk7XFxuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3IpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLW9wYWNpdHkpO1xcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xcbiAgfVxcbn1cXG5cXG5cXG4vL1xcbi8vIEFsdGVybmF0ZSBidXR0b25zXFxuLy9cXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYnRuLXZhcmlhbnQtbG9vcHNcXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcXG4gIC5idG4tI3skY29sb3J9IHtcXG4gICAgQGlmICRjb2xvciA9PSBcXFwibGlnaHRcXFwiIHtcXG4gICAgICBAaW5jbHVkZSBidXR0b24tdmFyaWFudChcXG4gICAgICAgICR2YWx1ZSxcXG4gICAgICAgICR2YWx1ZSxcXG4gICAgICAgICRob3Zlci1iYWNrZ3JvdW5kOiBzaGFkZS1jb2xvcigkdmFsdWUsICRidG4taG92ZXItYmctc2hhZGUtYW1vdW50KSxcXG4gICAgICAgICRob3Zlci1ib3JkZXI6IHNoYWRlLWNvbG9yKCR2YWx1ZSwgJGJ0bi1ob3Zlci1ib3JkZXItc2hhZGUtYW1vdW50KSxcXG4gICAgICAgICRhY3RpdmUtYmFja2dyb3VuZDogc2hhZGUtY29sb3IoJHZhbHVlLCAkYnRuLWFjdGl2ZS1iZy1zaGFkZS1hbW91bnQpLFxcbiAgICAgICAgJGFjdGl2ZS1ib3JkZXI6IHNoYWRlLWNvbG9yKCR2YWx1ZSwgJGJ0bi1hY3RpdmUtYm9yZGVyLXNoYWRlLWFtb3VudClcXG4gICAgICApO1xcbiAgICB9IEBlbHNlIGlmICRjb2xvciA9PSBcXFwiZGFya1xcXCIge1xcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi12YXJpYW50KFxcbiAgICAgICAgJHZhbHVlLFxcbiAgICAgICAgJHZhbHVlLFxcbiAgICAgICAgJGhvdmVyLWJhY2tncm91bmQ6IHRpbnQtY29sb3IoJHZhbHVlLCAkYnRuLWhvdmVyLWJnLXRpbnQtYW1vdW50KSxcXG4gICAgICAgICRob3Zlci1ib3JkZXI6IHRpbnQtY29sb3IoJHZhbHVlLCAkYnRuLWhvdmVyLWJvcmRlci10aW50LWFtb3VudCksXFxuICAgICAgICAkYWN0aXZlLWJhY2tncm91bmQ6IHRpbnQtY29sb3IoJHZhbHVlLCAkYnRuLWFjdGl2ZS1iZy10aW50LWFtb3VudCksXFxuICAgICAgICAkYWN0aXZlLWJvcmRlcjogdGludC1jb2xvcigkdmFsdWUsICRidG4tYWN0aXZlLWJvcmRlci10aW50LWFtb3VudClcXG4gICAgICApO1xcbiAgICB9IEBlbHNlIHtcXG4gICAgICBAaW5jbHVkZSBidXR0b24tdmFyaWFudCgkdmFsdWUsICR2YWx1ZSk7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XFxuICAuYnRuLW91dGxpbmUtI3skY29sb3J9IHtcXG4gICAgQGluY2x1ZGUgYnV0dG9uLW91dGxpbmUtdmFyaWFudCgkdmFsdWUpO1xcbiAgfVxcbn1cXG4vLyBzY3NzLWRvY3MtZW5kIGJ0bi12YXJpYW50LWxvb3BzXFxuXFxuXFxuLy9cXG4vLyBMaW5rIGJ1dHRvbnNcXG4vL1xcblxcbi8vIE1ha2UgYSBidXR0b24gbG9vayBhbmQgYmVoYXZlIGxpa2UgYSBsaW5rXFxuLmJ0bi1saW5rIHtcXG4gIC0tI3skcHJlZml4fWJ0bi1mb250LXdlaWdodDogI3skZm9udC13ZWlnaHQtbm9ybWFsfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1jb2xvcjogI3skYnRuLWxpbmstY29sb3J9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWJnOiB0cmFuc3BhcmVudDtcXG4gIC0tI3skcHJlZml4fWJ0bi1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWNvbG9yOiAjeyRidG4tbGluay1ob3Zlci1jb2xvcn07XFxuICAtLSN7JHByZWZpeH1idG4taG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtY29sb3I6ICN7JGJ0bi1saW5rLWhvdmVyLWNvbG9yfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1jb2xvcjogI3skYnRuLWxpbmstZGlzYWJsZWQtY29sb3J9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAtLSN7JHByZWZpeH1idG4tYm94LXNoYWRvdzogbm9uZTtcXG4gIC0tI3skcHJlZml4fWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAje3RvLXJnYihtaXgoY29sb3ItY29udHJhc3QoJHByaW1hcnkpLCAkcHJpbWFyeSwgMTUlKSl9O1xcblxcbiAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1kZWNvcmF0aW9uO1xcblxcbiAgJjpob3ZlcixcXG4gICY6Zm9jdXMge1xcbiAgICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWhvdmVyLWRlY29yYXRpb247XFxuICB9XFxuXFxuICAmOmZvY3VzIHtcXG4gICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1idG4tY29sb3IpO1xcbiAgfVxcblxcbiAgJjpob3ZlciB7XFxuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWNvbG9yKTtcXG4gIH1cXG5cXG4gIC8vIE5vIG5lZWQgZm9yIGFuIGFjdGl2ZSBzdGF0ZSBoZXJlXFxufVxcblxcblxcbi8vXFxuLy8gQnV0dG9uIFNpemVzXFxuLy9cXG5cXG4uYnRuLWxnIHtcXG4gIEBpbmNsdWRlIGJ1dHRvbi1zaXplKCRidG4tcGFkZGluZy15LWxnLCAkYnRuLXBhZGRpbmcteC1sZywgJGJ0bi1mb250LXNpemUtbGcsICRidG4tYm9yZGVyLXJhZGl1cy1sZyk7XFxufVxcblxcbi5idG4tc20ge1xcbiAgQGluY2x1ZGUgYnV0dG9uLXNpemUoJGJ0bi1wYWRkaW5nLXktc20sICRidG4tcGFkZGluZy14LXNtLCAkYnRuLWZvbnQtc2l6ZS1zbSwgJGJ0bi1ib3JkZXItcmFkaXVzLXNtKTtcXG59XFxuXCIsXCIvLyBHcmFkaWVudHNcXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgZ3JhZGllbnQtYmctbWl4aW5cXG5AbWl4aW4gZ3JhZGllbnQtYmcoJGNvbG9yOiBudWxsKSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XFxuXFxuICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS0jeyRwcmVmaXh9Z3JhZGllbnQpO1xcbiAgfVxcbn1cXG4vLyBzY3NzLWRvY3MtZW5kIGdyYWRpZW50LWJnLW1peGluXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGdyYWRpZW50LW1peGluc1xcbi8vIEhvcml6b250YWwgZ3JhZGllbnQsIGZyb20gbGVmdCB0byByaWdodFxcbi8vXFxuLy8gQ3JlYXRlcyB0d28gY29sb3Igc3RvcHMsIHN0YXJ0IGFuZCBlbmQsIGJ5IHNwZWNpZnlpbmcgYSBjb2xvciBhbmQgcG9zaXRpb24gZm9yIGVhY2ggY29sb3Igc3RvcC5cXG5AbWl4aW4gZ3JhZGllbnQteCgkc3RhcnQtY29sb3I6ICRncmF5LTcwMCwgJGVuZC1jb2xvcjogJGdyYXktODAwLCAkc3RhcnQtcGVyY2VudDogMCUsICRlbmQtcGVyY2VudDogMTAwJSkge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkc3RhcnQtY29sb3IgJHN0YXJ0LXBlcmNlbnQsICRlbmQtY29sb3IgJGVuZC1wZXJjZW50KTtcXG59XFxuXFxuLy8gVmVydGljYWwgZ3JhZGllbnQsIGZyb20gdG9wIHRvIGJvdHRvbVxcbi8vXFxuLy8gQ3JlYXRlcyB0d28gY29sb3Igc3RvcHMsIHN0YXJ0IGFuZCBlbmQsIGJ5IHNwZWNpZnlpbmcgYSBjb2xvciBhbmQgcG9zaXRpb24gZm9yIGVhY2ggY29sb3Igc3RvcC5cXG5AbWl4aW4gZ3JhZGllbnQteSgkc3RhcnQtY29sb3I6ICRncmF5LTcwMCwgJGVuZC1jb2xvcjogJGdyYXktODAwLCAkc3RhcnQtcGVyY2VudDogbnVsbCwgJGVuZC1wZXJjZW50OiBudWxsKSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAkc3RhcnQtY29sb3IgJHN0YXJ0LXBlcmNlbnQsICRlbmQtY29sb3IgJGVuZC1wZXJjZW50KTtcXG59XFxuXFxuQG1peGluIGdyYWRpZW50LWRpcmVjdGlvbmFsKCRzdGFydC1jb2xvcjogJGdyYXktNzAwLCAkZW5kLWNvbG9yOiAkZ3JheS04MDAsICRkZWc6IDQ1ZGVnKSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJGRlZywgJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yKTtcXG59XFxuXFxuQG1peGluIGdyYWRpZW50LXgtdGhyZWUtY29sb3JzKCRzdGFydC1jb2xvcjogJGJsdWUsICRtaWQtY29sb3I6ICRwdXJwbGUsICRjb2xvci1zdG9wOiA1MCUsICRlbmQtY29sb3I6ICRyZWQpIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHN0YXJ0LWNvbG9yLCAkbWlkLWNvbG9yICRjb2xvci1zdG9wLCAkZW5kLWNvbG9yKTtcXG59XFxuXFxuQG1peGluIGdyYWRpZW50LXktdGhyZWUtY29sb3JzKCRzdGFydC1jb2xvcjogJGJsdWUsICRtaWQtY29sb3I6ICRwdXJwbGUsICRjb2xvci1zdG9wOiA1MCUsICRlbmQtY29sb3I6ICRyZWQpIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgkc3RhcnQtY29sb3IsICRtaWQtY29sb3IgJGNvbG9yLXN0b3AsICRlbmQtY29sb3IpO1xcbn1cXG5cXG5AbWl4aW4gZ3JhZGllbnQtcmFkaWFsKCRpbm5lci1jb2xvcjogJGdyYXktNzAwLCAkb3V0ZXItY29sb3I6ICRncmF5LTgwMCkge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgJGlubmVyLWNvbG9yLCAkb3V0ZXItY29sb3IpO1xcbn1cXG5cXG5AbWl4aW4gZ3JhZGllbnQtc3RyaXBlZCgkY29sb3I6IHJnYmEoJHdoaXRlLCAuMTUpLCAkYW5nbGU6IDQ1ZGVnKSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJGFuZ2xlLCAkY29sb3IgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgJGNvbG9yIDUwJSwgJGNvbG9yIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7XFxufVxcbi8vIHNjc3MtZG9jcy1lbmQgZ3JhZGllbnQtbWl4aW5zXFxuXCIsXCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBwcm9wZXJ0eS1kaXNhbGxvd2VkLWxpc3RcXG5AbWl4aW4gdHJhbnNpdGlvbigkdHJhbnNpdGlvbi4uLikge1xcbiAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPT0gMCB7XFxuICAgICR0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbi1iYXNlO1xcbiAgfVxcblxcbiAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAxIHtcXG4gICAgQGVhY2ggJHZhbHVlIGluICR0cmFuc2l0aW9uIHtcXG4gICAgICBAaWYgJHZhbHVlID09IG51bGwgb3IgJHZhbHVlID09IG5vbmUge1xcbiAgICAgICAgQHdhcm4gXFxcIlRoZSBrZXl3b3JkICdub25lJyBvciAnbnVsbCcgbXVzdCBiZSB1c2VkIGFzIGEgc2luZ2xlIGFyZ3VtZW50LlxcXCI7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICBAaWYgJGVuYWJsZS10cmFuc2l0aW9ucyB7XFxuICAgIEBpZiBudGgoJHRyYW5zaXRpb24sIDEpICE9IG51bGwge1xcbiAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xcbiAgICB9XFxuXFxuICAgIEBpZiAkZW5hYmxlLXJlZHVjZWQtbW90aW9uIGFuZCBudGgoJHRyYW5zaXRpb24sIDEpICE9IG51bGwgYW5kIG50aCgkdHJhbnNpdGlvbiwgMSkgIT0gbm9uZSB7XFxuICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcXG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblwiLFwiLy8gQnV0dG9uIHZhcmlhbnRzXFxuLy9cXG4vLyBFYXNpbHkgcHVtcCBvdXQgZGVmYXVsdCBzdHlsZXMsIGFzIHdlbGwgYXMgOmhvdmVyLCA6Zm9jdXMsIDphY3RpdmUsXFxuLy8gYW5kIGRpc2FibGVkIG9wdGlvbnMgZm9yIGFsbCBidXR0b25zXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJ0bi12YXJpYW50LW1peGluXFxuQG1peGluIGJ1dHRvbi12YXJpYW50KFxcbiAgJGJhY2tncm91bmQsXFxuICAkYm9yZGVyLFxcbiAgJGNvbG9yOiBjb2xvci1jb250cmFzdCgkYmFja2dyb3VuZCksXFxuICAkaG92ZXItYmFja2dyb3VuZDogaWYoJGNvbG9yID09ICRjb2xvci1jb250cmFzdC1saWdodCwgc2hhZGUtY29sb3IoJGJhY2tncm91bmQsICRidG4taG92ZXItYmctc2hhZGUtYW1vdW50KSwgdGludC1jb2xvcigkYmFja2dyb3VuZCwgJGJ0bi1ob3Zlci1iZy10aW50LWFtb3VudCkpLFxcbiAgJGhvdmVyLWJvcmRlcjogaWYoJGNvbG9yID09ICRjb2xvci1jb250cmFzdC1saWdodCwgc2hhZGUtY29sb3IoJGJvcmRlciwgJGJ0bi1ob3Zlci1ib3JkZXItc2hhZGUtYW1vdW50KSwgdGludC1jb2xvcigkYm9yZGVyLCAkYnRuLWhvdmVyLWJvcmRlci10aW50LWFtb3VudCkpLFxcbiAgJGhvdmVyLWNvbG9yOiBjb2xvci1jb250cmFzdCgkaG92ZXItYmFja2dyb3VuZCksXFxuICAkYWN0aXZlLWJhY2tncm91bmQ6IGlmKCRjb2xvciA9PSAkY29sb3ItY29udHJhc3QtbGlnaHQsIHNoYWRlLWNvbG9yKCRiYWNrZ3JvdW5kLCAkYnRuLWFjdGl2ZS1iZy1zaGFkZS1hbW91bnQpLCB0aW50LWNvbG9yKCRiYWNrZ3JvdW5kLCAkYnRuLWFjdGl2ZS1iZy10aW50LWFtb3VudCkpLFxcbiAgJGFjdGl2ZS1ib3JkZXI6IGlmKCRjb2xvciA9PSAkY29sb3ItY29udHJhc3QtbGlnaHQsIHNoYWRlLWNvbG9yKCRib3JkZXIsICRidG4tYWN0aXZlLWJvcmRlci1zaGFkZS1hbW91bnQpLCB0aW50LWNvbG9yKCRib3JkZXIsICRidG4tYWN0aXZlLWJvcmRlci10aW50LWFtb3VudCkpLFxcbiAgJGFjdGl2ZS1jb2xvcjogY29sb3ItY29udHJhc3QoJGFjdGl2ZS1iYWNrZ3JvdW5kKSxcXG4gICRkaXNhYmxlZC1iYWNrZ3JvdW5kOiAkYmFja2dyb3VuZCxcXG4gICRkaXNhYmxlZC1ib3JkZXI6ICRib3JkZXIsXFxuICAkZGlzYWJsZWQtY29sb3I6IGNvbG9yLWNvbnRyYXN0KCRkaXNhYmxlZC1iYWNrZ3JvdW5kKVxcbikge1xcbiAgLS0jeyRwcmVmaXh9YnRuLWNvbG9yOiAjeyRjb2xvcn07XFxuICAtLSN7JHByZWZpeH1idG4tYmc6ICN7JGJhY2tncm91bmR9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWJvcmRlci1jb2xvcjogI3skYm9yZGVyfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1ob3Zlci1jb2xvcjogI3skaG92ZXItY29sb3J9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJnOiAjeyRob3Zlci1iYWNrZ3JvdW5kfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1ob3Zlci1ib3JkZXItY29sb3I6ICN7JGhvdmVyLWJvcmRlcn07XFxuICAtLSN7JHByZWZpeH1idG4tZm9jdXMtc2hhZG93LXJnYjogI3t0by1yZ2IobWl4KCRjb2xvciwgJGJvcmRlciwgMTUlKSl9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWFjdGl2ZS1jb2xvcjogI3skYWN0aXZlLWNvbG9yfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtYmc6ICN7JGFjdGl2ZS1iYWNrZ3JvdW5kfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtYm9yZGVyLWNvbG9yOiAjeyRhY3RpdmUtYm9yZGVyfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtc2hhZG93OiAjeyRidG4tYWN0aXZlLWJveC1zaGFkb3d9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWNvbG9yOiAjeyRkaXNhYmxlZC1jb2xvcn07XFxuICAtLSN7JHByZWZpeH1idG4tZGlzYWJsZWQtYmc6ICN7JGRpc2FibGVkLWJhY2tncm91bmR9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWJvcmRlci1jb2xvcjogI3skZGlzYWJsZWQtYm9yZGVyfTtcXG59XFxuLy8gc2Nzcy1kb2NzLWVuZCBidG4tdmFyaWFudC1taXhpblxcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBidG4tb3V0bGluZS12YXJpYW50LW1peGluXFxuQG1peGluIGJ1dHRvbi1vdXRsaW5lLXZhcmlhbnQoXFxuICAkY29sb3IsXFxuICAkY29sb3ItaG92ZXI6IGNvbG9yLWNvbnRyYXN0KCRjb2xvciksXFxuICAkYWN0aXZlLWJhY2tncm91bmQ6ICRjb2xvcixcXG4gICRhY3RpdmUtYm9yZGVyOiAkY29sb3IsXFxuICAkYWN0aXZlLWNvbG9yOiBjb2xvci1jb250cmFzdCgkYWN0aXZlLWJhY2tncm91bmQpXFxuKSB7XFxuICAtLSN7JHByZWZpeH1idG4tY29sb3I6ICN7JGNvbG9yfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1ib3JkZXItY29sb3I6ICN7JGNvbG9yfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1ob3Zlci1jb2xvcjogI3skY29sb3ItaG92ZXJ9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWhvdmVyLWJnOiAjeyRhY3RpdmUtYmFja2dyb3VuZH07XFxuICAtLSN7JHByZWZpeH1idG4taG92ZXItYm9yZGVyLWNvbG9yOiAjeyRhY3RpdmUtYm9yZGVyfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1mb2N1cy1zaGFkb3ctcmdiOiAje3RvLXJnYigkY29sb3IpfTtcXG4gIC0tI3skcHJlZml4fWJ0bi1hY3RpdmUtY29sb3I6ICN7JGFjdGl2ZS1jb2xvcn07XFxuICAtLSN7JHByZWZpeH1idG4tYWN0aXZlLWJnOiAjeyRhY3RpdmUtYmFja2dyb3VuZH07XFxuICAtLSN7JHByZWZpeH1idG4tYWN0aXZlLWJvcmRlci1jb2xvcjogI3skYWN0aXZlLWJvcmRlcn07XFxuICAtLSN7JHByZWZpeH1idG4tYWN0aXZlLXNoYWRvdzogI3skYnRuLWFjdGl2ZS1ib3gtc2hhZG93fTtcXG4gIC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1jb2xvcjogI3skY29sb3J9O1xcbiAgLS0jeyRwcmVmaXh9YnRuLWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudDtcXG4gIC0tI3skcHJlZml4fWJ0bi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICN7JGNvbG9yfTtcXG4gIC0tI3skcHJlZml4fWdyYWRpZW50OiBub25lO1xcbn1cXG4vLyBzY3NzLWRvY3MtZW5kIGJ0bi1vdXRsaW5lLXZhcmlhbnQtbWl4aW5cXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYnRuLXNpemUtbWl4aW5cXG5AbWl4aW4gYnV0dG9uLXNpemUoJHBhZGRpbmcteSwgJHBhZGRpbmcteCwgJGZvbnQtc2l6ZSwgJGJvcmRlci1yYWRpdXMpIHtcXG4gIC0tI3skcHJlZml4fWJ0bi1wYWRkaW5nLXk6ICN7JHBhZGRpbmcteX07XFxuICAtLSN7JHByZWZpeH1idG4tcGFkZGluZy14OiAjeyRwYWRkaW5nLXh9O1xcbiAgQGluY2x1ZGUgcmZzKCRmb250LXNpemUsIC0tI3skcHJlZml4fWJ0bi1mb250LXNpemUpO1xcbiAgLS0jeyRwcmVmaXh9YnRuLWJvcmRlci1yYWRpdXM6ICN7JGJvcmRlci1yYWRpdXN9O1xcbn1cXG4vLyBzY3NzLWRvY3MtZW5kIGJ0bi1zaXplLW1peGluXFxuXCIsXCIuZmFkZSB7XFxuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLWZhZGUpO1xcblxcbiAgJjpub3QoLnNob3cpIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGNvbGxhcHNlLWNsYXNzZXNcXG4uY29sbGFwc2Uge1xcbiAgJjpub3QoLnNob3cpIHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIH1cXG59XFxuXFxuLmNvbGxhcHNpbmcge1xcbiAgaGVpZ2h0OiAwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tY29sbGFwc2UpO1xcblxcbiAgJi5jb2xsYXBzZS1ob3Jpem9udGFsIHtcXG4gICAgd2lkdGg6IDA7XFxuICAgIGhlaWdodDogYXV0bztcXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbigkdHJhbnNpdGlvbi1jb2xsYXBzZS13aWR0aCk7XFxuICB9XFxufVxcbi8vIHNjc3MtZG9jcy1lbmQgY29sbGFwc2UtY2xhc3Nlc1xcblwiLFwiLy8gRGlzYWJsZSBhbmltYXRpb24gaWYgdHJhbnNpdGlvbnMgYXJlIGRpc2FibGVkXFxuXFxuLy8gc2Nzcy1kb2NzLXN0YXJ0IHByb2dyZXNzLWtleWZyYW1lc1xcbkBpZiAkZW5hYmxlLXRyYW5zaXRpb25zIHtcXG4gIEBrZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMge1xcbiAgICAwJSB7IGJhY2tncm91bmQtcG9zaXRpb24teDogJHByb2dyZXNzLWhlaWdodDsgfVxcbiAgfVxcbn1cXG4vLyBzY3NzLWRvY3MtZW5kIHByb2dyZXNzLWtleWZyYW1lc1xcblxcbi5wcm9ncmVzcyB7XFxuICAvLyBzY3NzLWRvY3Mtc3RhcnQgcHJvZ3Jlc3MtY3NzLXZhcnNcXG4gIC0tI3skcHJlZml4fXByb2dyZXNzLWhlaWdodDogI3skcHJvZ3Jlc3MtaGVpZ2h0fTtcXG4gIEBpbmNsdWRlIHJmcygkcHJvZ3Jlc3MtZm9udC1zaXplLCAtLSN7JHByZWZpeH1wcm9ncmVzcy1mb250LXNpemUpO1xcbiAgLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYmc6ICN7JHByb2dyZXNzLWJnfTtcXG4gIC0tI3skcHJlZml4fXByb2dyZXNzLWJvcmRlci1yYWRpdXM6ICN7JHByb2dyZXNzLWJvcmRlci1yYWRpdXN9O1xcbiAgLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYm94LXNoYWRvdzogI3skcHJvZ3Jlc3MtYm94LXNoYWRvd307XFxuICAtLSN7JHByZWZpeH1wcm9ncmVzcy1iYXItY29sb3I6ICN7JHByb2dyZXNzLWJhci1jb2xvcn07XFxuICAtLSN7JHByZWZpeH1wcm9ncmVzcy1iYXItYmc6ICN7JHByb2dyZXNzLWJhci1iZ307XFxuICAtLSN7JHByZWZpeH1wcm9ncmVzcy1iYXItdHJhbnNpdGlvbjogI3skcHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb259O1xcbiAgLy8gc2Nzcy1kb2NzLWVuZCBwcm9ncmVzcy1jc3MtdmFyc1xcblxcbiAgZGlzcGxheTogZmxleDtcXG4gIGhlaWdodDogdmFyKC0tI3skcHJlZml4fXByb2dyZXNzLWhlaWdodCk7XFxuICBvdmVyZmxvdzogaGlkZGVuOyAvLyBmb3JjZSByb3VuZGVkIGNvcm5lcnMgYnkgY3JvcHBpbmcgaXRcXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSh2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtZm9udC1zaXplKSk7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYmcpO1xcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYm9yZGVyLXJhZGl1cykpO1xcbiAgQGluY2x1ZGUgYm94LXNoYWRvdyh2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYm94LXNoYWRvdykpO1xcbn1cXG5cXG4ucHJvZ3Jlc3MtYmFyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1iYXItY29sb3IpO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1wcm9ncmVzcy1iYXItYmcpO1xcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbih2YXIoLS0jeyRwcmVmaXh9cHJvZ3Jlc3MtYmFyLXRyYW5zaXRpb24pKTtcXG59XFxuXFxuLnByb2dyZXNzLWJhci1zdHJpcGVkIHtcXG4gIEBpbmNsdWRlIGdyYWRpZW50LXN0cmlwZWQoKTtcXG4gIGJhY2tncm91bmQtc2l6ZTogdmFyKC0tI3skcHJlZml4fXByb2dyZXNzLWhlaWdodCkgdmFyKC0tI3skcHJlZml4fXByb2dyZXNzLWhlaWdodCk7XFxufVxcblxcbkBpZiAkZW5hYmxlLXRyYW5zaXRpb25zIHtcXG4gIC5wcm9ncmVzcy1iYXItYW5pbWF0ZWQge1xcbiAgICBhbmltYXRpb246ICRwcm9ncmVzcy1iYXItYW5pbWF0aW9uLXRpbWluZyBwcm9ncmVzcy1iYXItc3RyaXBlcztcXG5cXG4gICAgQGlmICRlbmFibGUtcmVkdWNlZC1tb3Rpb24ge1xcbiAgICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XFxuICAgICAgICBhbmltYXRpb246IG5vbmU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblwiLFwiLy8gVHJhbnNwYXJlbnQgYmFja2dyb3VuZCBhbmQgYm9yZGVyIHByb3BlcnRpZXMgaW5jbHVkZWQgZm9yIGJ1dHRvbiB2ZXJzaW9uLlxcbi8vIGlPUyByZXF1aXJlcyB0aGUgYnV0dG9uIGVsZW1lbnQgaW5zdGVhZCBvZiBhbiBhbmNob3IgdGFnLlxcbi8vIElmIHlvdSB3YW50IHRoZSBhbmNob3IgdmVyc2lvbiwgaXQgcmVxdWlyZXMgYGhyZWY9XFxcIiNcXFwiYC5cXG4vLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2NsaWNrI1NhZmFyaV9Nb2JpbGVcXG5cXG4uYnRuLWNsb3NlIHtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgd2lkdGg6ICRidG4tY2xvc2Utd2lkdGg7XFxuICBoZWlnaHQ6ICRidG4tY2xvc2UtaGVpZ2h0O1xcbiAgcGFkZGluZzogJGJ0bi1jbG9zZS1wYWRkaW5nLXkgJGJ0bi1jbG9zZS1wYWRkaW5nLXg7XFxuICBjb2xvcjogJGJ0bi1jbG9zZS1jb2xvcjtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IGVzY2FwZS1zdmcoJGJ0bi1jbG9zZS1iZykgY2VudGVyIC8gJGJ0bi1jbG9zZS13aWR0aCBhdXRvIG5vLXJlcGVhdDsgLy8gaW5jbHVkZSB0cmFuc3BhcmVudCBmb3IgYnV0dG9uIGVsZW1lbnRzXFxuICBib3JkZXI6IDA7IC8vIGZvciBidXR0b24gZWxlbWVudHNcXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoKTtcXG4gIG9wYWNpdHk6ICRidG4tY2xvc2Utb3BhY2l0eTtcXG5cXG4gIC8vIE92ZXJyaWRlIDxhPidzIGhvdmVyIHN0eWxlXFxuICAmOmhvdmVyIHtcXG4gICAgY29sb3I6ICRidG4tY2xvc2UtY29sb3I7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgb3BhY2l0eTogJGJ0bi1jbG9zZS1ob3Zlci1vcGFjaXR5O1xcbiAgfVxcblxcbiAgJjpmb2N1cyB7XFxuICAgIG91dGxpbmU6IDA7XFxuICAgIGJveC1zaGFkb3c6ICRidG4tY2xvc2UtZm9jdXMtc2hhZG93O1xcbiAgICBvcGFjaXR5OiAkYnRuLWNsb3NlLWZvY3VzLW9wYWNpdHk7XFxuICB9XFxuXFxuICAmOmRpc2FibGVkLFxcbiAgJi5kaXNhYmxlZCB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgb3BhY2l0eTogJGJ0bi1jbG9zZS1kaXNhYmxlZC1vcGFjaXR5O1xcbiAgfVxcbn1cXG5cXG4uYnRuLWNsb3NlLXdoaXRlIHtcXG4gIGZpbHRlcjogJGJ0bi1jbG9zZS13aGl0ZS1maWx0ZXI7XFxufVxcblwiLFwiLy8gc3R5bGVsaW50LWRpc2FibGUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XFxuXFxuLy8gLm1vZGFsLW9wZW4gICAgICAtIGJvZHkgY2xhc3MgZm9yIGtpbGxpbmcgdGhlIHNjcm9sbFxcbi8vIC5tb2RhbCAgICAgICAgICAgLSBjb250YWluZXIgdG8gc2Nyb2xsIHdpdGhpblxcbi8vIC5tb2RhbC1kaWFsb2cgICAgLSBwb3NpdGlvbmluZyBzaGVsbCBmb3IgdGhlIGFjdHVhbCBtb2RhbFxcbi8vIC5tb2RhbC1jb250ZW50ICAgLSBhY3R1YWwgbW9kYWwgdy8gYmcgYW5kIGNvcm5lcnMgYW5kIHN0dWZmXFxuXFxuXFxuLy8gQ29udGFpbmVyIHRoYXQgdGhlIG1vZGFsIHNjcm9sbHMgd2l0aGluXFxuLm1vZGFsIHtcXG4gIC8vIHNjc3MtZG9jcy1zdGFydCBtb2RhbC1jc3MtdmFyc1xcbiAgLS0jeyRwcmVmaXh9bW9kYWwtemluZGV4OiAjeyR6aW5kZXgtbW9kYWx9O1xcbiAgLS0jeyRwcmVmaXh9bW9kYWwtd2lkdGg6ICN7JG1vZGFsLW1kfTtcXG4gIC0tI3skcHJlZml4fW1vZGFsLXBhZGRpbmc6ICN7JG1vZGFsLWlubmVyLXBhZGRpbmd9O1xcbiAgLS0jeyRwcmVmaXh9bW9kYWwtbWFyZ2luOiAjeyRtb2RhbC1kaWFsb2ctbWFyZ2lufTtcXG4gIC0tI3skcHJlZml4fW1vZGFsLWNvbG9yOiAjeyRtb2RhbC1jb250ZW50LWNvbG9yfTtcXG4gIC0tI3skcHJlZml4fW1vZGFsLWJnOiAjeyRtb2RhbC1jb250ZW50LWJnfTtcXG4gIC0tI3skcHJlZml4fW1vZGFsLWJvcmRlci1jb2xvcjogI3skbW9kYWwtY29udGVudC1ib3JkZXItY29sb3J9O1xcbiAgLS0jeyRwcmVmaXh9bW9kYWwtYm9yZGVyLXdpZHRoOiAjeyRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aH07XFxuICAtLSN7JHByZWZpeH1tb2RhbC1ib3JkZXItcmFkaXVzOiAjeyRtb2RhbC1jb250ZW50LWJvcmRlci1yYWRpdXN9O1xcbiAgLS0jeyRwcmVmaXh9bW9kYWwtYm94LXNoYWRvdzogI3skbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXhzfTtcXG4gIC0tI3skcHJlZml4fW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXM6ICN7JG1vZGFsLWNvbnRlbnQtaW5uZXItYm9yZGVyLXJhZGl1c307XFxuICAtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZy14OiAjeyRtb2RhbC1oZWFkZXItcGFkZGluZy14fTtcXG4gIC0tI3skcHJlZml4fW1vZGFsLWhlYWRlci1wYWRkaW5nLXk6ICN7JG1vZGFsLWhlYWRlci1wYWRkaW5nLXl9O1xcbiAgLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLXBhZGRpbmc6ICN7JG1vZGFsLWhlYWRlci1wYWRkaW5nfTsgLy8gVG9kbyBpbiB2NjogU3BsaXQgdGhpcyBwYWRkaW5nIGludG8geCBhbmQgeVxcbiAgLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjogI3skbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcn07XFxuICAtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoOiAjeyRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRofTtcXG4gIC0tI3skcHJlZml4fW1vZGFsLXRpdGxlLWxpbmUtaGVpZ2h0OiAjeyRtb2RhbC10aXRsZS1saW5lLWhlaWdodH07XFxuICAtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItZ2FwOiAjeyRtb2RhbC1mb290ZXItbWFyZ2luLWJldHdlZW59O1xcbiAgLS0jeyRwcmVmaXh9bW9kYWwtZm9vdGVyLWJnOiAjeyRtb2RhbC1mb290ZXItYmd9O1xcbiAgLS0jeyRwcmVmaXh9bW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcjogI3skbW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcn07XFxuICAtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoOiAjeyRtb2RhbC1mb290ZXItYm9yZGVyLXdpZHRofTtcXG4gIC8vIHNjc3MtZG9jcy1lbmQgbW9kYWwtY3NzLXZhcnNcXG5cXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICB6LWluZGV4OiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtemluZGV4KTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICAvLyBQcmV2ZW50IENocm9tZSBvbiBXaW5kb3dzIGZyb20gYWRkaW5nIGEgZm9jdXMgb3V0bGluZS4gRm9yIGRldGFpbHMsIHNlZVxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMTA5NTEuXFxuICBvdXRsaW5lOiAwO1xcbiAgLy8gV2UgZGVsaWJlcmF0ZWx5IGRvbid0IHVzZSBgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO2AgZHVlIHRvIGFcXG4gIC8vIGduYXJseSBpT1MgU2FmYXJpIGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODM0MlxcbiAgLy8gU2VlIGFsc28gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8xNzY5NVxcbn1cXG5cXG4vLyBTaGVsbCBkaXYgdG8gcG9zaXRpb24gdGhlIG1vZGFsIHdpdGggYm90dG9tIHBhZGRpbmdcXG4ubW9kYWwtZGlhbG9nIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiBhdXRvO1xcbiAgbWFyZ2luOiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtbWFyZ2luKTtcXG4gIC8vIGFsbG93IGNsaWNrcyB0byBwYXNzIHRocm91Z2ggZm9yIGN1c3RvbSBjbGljayBoYW5kbGluZyB0byBjbG9zZSBtb2RhbFxcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuXFxuICAvLyBXaGVuIGZhZGluZyBpbiB0aGUgbW9kYWwsIGFuaW1hdGUgaXQgdG8gc2xpZGUgZG93blxcbiAgLm1vZGFsLmZhZGUgJiB7XFxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oJG1vZGFsLXRyYW5zaXRpb24pO1xcbiAgICB0cmFuc2Zvcm06ICRtb2RhbC1mYWRlLXRyYW5zZm9ybTtcXG4gIH1cXG4gIC5tb2RhbC5zaG93ICYge1xcbiAgICB0cmFuc2Zvcm06ICRtb2RhbC1zaG93LXRyYW5zZm9ybTtcXG4gIH1cXG5cXG4gIC8vIFdoZW4gdHJ5aW5nIHRvIGNsb3NlLCBhbmltYXRlIGZvY3VzIHRvIHNjYWxlXFxuICAubW9kYWwubW9kYWwtc3RhdGljICYge1xcbiAgICB0cmFuc2Zvcm06ICRtb2RhbC1zY2FsZS10cmFuc2Zvcm07XFxuICB9XFxufVxcblxcbi5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSB7XFxuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLSN7JHByZWZpeH1tb2RhbC1tYXJnaW4pICogMik7XFxuXFxuICAubW9kYWwtY29udGVudCB7XFxuICAgIG1heC1oZWlnaHQ6IDEwMCU7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICB9XFxuXFxuICAubW9kYWwtYm9keSB7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICB9XFxufVxcblxcbi5tb2RhbC1kaWFsb2ctY2VudGVyZWQge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtbWFyZ2luKSAqIDIpO1xcbn1cXG5cXG4vLyBBY3R1YWwgbW9kYWxcXG4ubW9kYWwtY29udGVudCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIHdpZHRoOiAxMDAlOyAvLyBFbnN1cmUgYC5tb2RhbC1jb250ZW50YCBleHRlbmRzIHRoZSBmdWxsIHdpZHRoIG9mIHRoZSBwYXJlbnQgYC5tb2RhbC1kaWFsb2dgXFxuICAvLyBjb3VudGVyYWN0IHRoZSBwb2ludGVyLWV2ZW50czogbm9uZTsgaW4gdGhlIC5tb2RhbC1kaWFsb2dcXG4gIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtY29sb3IpO1xcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtYmcpO1xcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gIGJvcmRlcjogdmFyKC0tI3skcHJlZml4fW1vZGFsLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tI3skcHJlZml4fW1vZGFsLWJvcmRlci1jb2xvcik7XFxuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKHZhcigtLSN7JHByZWZpeH1tb2RhbC1ib3JkZXItcmFkaXVzKSk7XFxuICBAaW5jbHVkZSBib3gtc2hhZG93KHZhcigtLSN7JHByZWZpeH1tb2RhbC1ib3gtc2hhZG93KSk7XFxuICAvLyBSZW1vdmUgZm9jdXMgb3V0bGluZSBmcm9tIG9wZW5lZCBtb2RhbFxcbiAgb3V0bGluZTogMDtcXG59XFxuXFxuLy8gTW9kYWwgYmFja2dyb3VuZFxcbi5tb2RhbC1iYWNrZHJvcCB7XFxuICAvLyBzY3NzLWRvY3Mtc3RhcnQgbW9kYWwtYmFja2Ryb3AtY3NzLXZhcnNcXG4gIC0tI3skcHJlZml4fWJhY2tkcm9wLXppbmRleDogI3skemluZGV4LW1vZGFsLWJhY2tkcm9wfTtcXG4gIC0tI3skcHJlZml4fWJhY2tkcm9wLWJnOiAjeyRtb2RhbC1iYWNrZHJvcC1iZ307XFxuICAtLSN7JHByZWZpeH1iYWNrZHJvcC1vcGFjaXR5OiAjeyRtb2RhbC1iYWNrZHJvcC1vcGFjaXR5fTtcXG4gIC8vIHNjc3MtZG9jcy1lbmQgbW9kYWwtYmFja2Ryb3AtY3NzLXZhcnNcXG5cXG4gIEBpbmNsdWRlIG92ZXJsYXktYmFja2Ryb3AodmFyKC0tI3skcHJlZml4fWJhY2tkcm9wLXppbmRleCksIHZhcigtLSN7JHByZWZpeH1iYWNrZHJvcC1iZyksIHZhcigtLSN7JHByZWZpeH1iYWNrZHJvcC1vcGFjaXR5KSk7XFxufVxcblxcbi8vIE1vZGFsIGhlYWRlclxcbi8vIFRvcCBzZWN0aW9uIG9mIHRoZSBtb2RhbCB3LyB0aXRsZSBhbmQgZGlzbWlzc1xcbi5tb2RhbC1oZWFkZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtc2hyaW5rOiAwO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgLy8gUHV0IG1vZGFsIGhlYWRlciBlbGVtZW50cyAodGl0bGUgYW5kIGRpc21pc3MpIG9uIG9wcG9zaXRlIGVuZHNcXG4gIHBhZGRpbmc6IHZhcigtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZyk7XFxuICBib3JkZXItYm90dG9tOiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tI3skcHJlZml4fW1vZGFsLWhlYWRlci1ib3JkZXItY29sb3IpO1xcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXModmFyKC0tI3skcHJlZml4fW1vZGFsLWlubmVyLWJvcmRlci1yYWRpdXMpKTtcXG5cXG4gIC5idG4tY2xvc2Uge1xcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZy15KSAqIC41KSBjYWxjKHZhcigtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZy14KSAqIC41KTtcXG4gICAgbWFyZ2luOiBjYWxjKHZhcigtLSN7JHByZWZpeH1tb2RhbC1oZWFkZXItcGFkZGluZy15KSAqIC0uNSkgY2FsYyh2YXIoLS0jeyRwcmVmaXh9bW9kYWwtaGVhZGVyLXBhZGRpbmcteCkgKiAtLjUpIGNhbGModmFyKC0tI3skcHJlZml4fW1vZGFsLWhlYWRlci1wYWRkaW5nLXkpICogLS41KSBhdXRvO1xcbiAgfVxcbn1cXG5cXG4vLyBUaXRsZSB0ZXh0IHdpdGhpbiBoZWFkZXJcXG4ubW9kYWwtdGl0bGUge1xcbiAgbWFyZ2luLWJvdHRvbTogMDtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtdGl0bGUtbGluZS1oZWlnaHQpO1xcbn1cXG5cXG4vLyBNb2RhbCBib2R5XFxuLy8gV2hlcmUgYWxsIG1vZGFsIGNvbnRlbnQgcmVzaWRlcyAoc2libGluZyBvZiAubW9kYWwtaGVhZGVyIGFuZCAubW9kYWwtZm9vdGVyKVxcbi5tb2RhbC1ib2R5IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIC8vIEVuYWJsZSBgZmxleC1ncm93OiAxYCBzbyB0aGF0IHRoZSBib2R5IHRha2UgdXAgYXMgbXVjaCBzcGFjZSBhcyBwb3NzaWJsZVxcbiAgLy8gd2hlbiB0aGVyZSBzaG91bGQgYmUgYSBmaXhlZCBoZWlnaHQgb24gYC5tb2RhbC1kaWFsb2dgLlxcbiAgZmxleDogMSAxIGF1dG87XFxuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9bW9kYWwtcGFkZGluZyk7XFxufVxcblxcbi8vIEZvb3RlciAoZm9yIGFjdGlvbnMpXFxuLm1vZGFsLWZvb3RlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1zaHJpbms6IDA7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBhbGlnbi1pdGVtczogY2VudGVyOyAvLyB2ZXJ0aWNhbGx5IGNlbnRlclxcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgLy8gUmlnaHQgYWxpZ24gYnV0dG9ucyB3aXRoIGZsZXggcHJvcGVydHkgYmVjYXVzZSB0ZXh0LWFsaWduIGRvZXNuJ3Qgd29yayBvbiBmbGV4IGl0ZW1zXFxuICBwYWRkaW5nOiBjYWxjKHZhcigtLSN7JHByZWZpeH1tb2RhbC1wYWRkaW5nKSAtIHZhcigtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItZ2FwKSAqIC41KTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItYmcpO1xcbiAgYm9yZGVyLXRvcDogdmFyKC0tI3skcHJlZml4fW1vZGFsLWZvb3Rlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItYm9yZGVyLWNvbG9yKTtcXG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKHZhcigtLSN7JHByZWZpeH1tb2RhbC1pbm5lci1ib3JkZXItcmFkaXVzKSk7XFxuXFxuICAvLyBQbGFjZSBtYXJnaW4gYmV0d2VlbiBmb290ZXIgZWxlbWVudHNcXG4gIC8vIFRoaXMgc29sdXRpb24gaXMgZmFyIGZyb20gaWRlYWwgYmVjYXVzZSBvZiB0aGUgdW5pdmVyc2FsIHNlbGVjdG9yIHVzYWdlLFxcbiAgLy8gYnV0IGlzIG5lZWRlZCB0byBmaXggaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDgwMFxcbiAgPiAqIHtcXG4gICAgbWFyZ2luOiBjYWxjKHZhcigtLSN7JHByZWZpeH1tb2RhbC1mb290ZXItZ2FwKSAqIC41KTsgLy8gVG9kbyBpbiB2NjogcmVwbGFjZSB3aXRoIGdhcCBvbiBwYXJlbnQgY2xhc3NcXG4gIH1cXG59XFxuXFxuLy8gU2NhbGUgdXAgdGhlIG1vZGFsXFxuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChzbSkge1xcbiAgLm1vZGFsIHtcXG4gICAgLS0jeyRwcmVmaXh9bW9kYWwtbWFyZ2luOiAjeyRtb2RhbC1kaWFsb2ctbWFyZ2luLXktc20tdXB9O1xcbiAgICAtLSN7JHByZWZpeH1tb2RhbC1ib3gtc2hhZG93OiAjeyRtb2RhbC1jb250ZW50LWJveC1zaGFkb3ctc20tdXB9O1xcbiAgfVxcblxcbiAgLy8gQXV0b21hdGljYWxseSBzZXQgbW9kYWwncyB3aWR0aCBmb3IgbGFyZ2VyIHZpZXdwb3J0c1xcbiAgLm1vZGFsLWRpYWxvZyB7XFxuICAgIG1heC13aWR0aDogdmFyKC0tI3skcHJlZml4fW1vZGFsLXdpZHRoKTtcXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIH1cXG5cXG4gIC5tb2RhbC1zbSB7XFxuICAgIC0tI3skcHJlZml4fW1vZGFsLXdpZHRoOiAjeyRtb2RhbC1zbX07XFxuICB9XFxufVxcblxcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcXG4gIC5tb2RhbC1sZyxcXG4gIC5tb2RhbC14bCB7XFxuICAgIC0tI3skcHJlZml4fW1vZGFsLXdpZHRoOiAjeyRtb2RhbC1sZ307XFxuICB9XFxufVxcblxcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoeGwpIHtcXG4gIC5tb2RhbC14bCB7XFxuICAgIC0tI3skcHJlZml4fW1vZGFsLXdpZHRoOiAjeyRtb2RhbC14bH07XFxuICB9XFxufVxcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBtb2RhbC1mdWxsc2NyZWVuLWxvb3BcXG5AZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XFxuICAkcG9zdGZpeDogaWYoJGluZml4ICE9IFxcXCJcXFwiLCAkaW5maXggKyBcXFwiLWRvd25cXFwiLCBcXFwiXFxcIik7XFxuXFxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJGJyZWFrcG9pbnQpIHtcXG4gICAgLm1vZGFsLWZ1bGxzY3JlZW4jeyRwb3N0Zml4fSB7XFxuICAgICAgd2lkdGg6IDEwMHZ3O1xcbiAgICAgIG1heC13aWR0aDogbm9uZTtcXG4gICAgICBoZWlnaHQ6IDEwMCU7XFxuICAgICAgbWFyZ2luOiAwO1xcblxcbiAgICAgIC5tb2RhbC1jb250ZW50IHtcXG4gICAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICAgIGJvcmRlcjogMDtcXG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XFxuICAgICAgfVxcblxcbiAgICAgIC5tb2RhbC1oZWFkZXIsXFxuICAgICAgLm1vZGFsLWZvb3RlciB7XFxuICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDApO1xcbiAgICAgIH1cXG5cXG4gICAgICAubW9kYWwtYm9keSB7XFxuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG4vLyBzY3NzLWRvY3MtZW5kIG1vZGFsLWZ1bGxzY3JlZW4tbG9vcFxcblwiLFwiLy8gU2hhcmVkIGJldHdlZW4gbW9kYWxzIGFuZCBvZmZjYW52YXNlc1xcbkBtaXhpbiBvdmVybGF5LWJhY2tkcm9wKCR6aW5kZXgsICRiYWNrZHJvcC1iZywgJGJhY2tkcm9wLW9wYWNpdHkpIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICB6LWluZGV4OiAkemluZGV4O1xcbiAgd2lkdGg6IDEwMHZ3O1xcbiAgaGVpZ2h0OiAxMDB2aDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZHJvcC1iZztcXG5cXG4gIC8vIEZhZGUgZm9yIGJhY2tkcm9wXFxuICAmLmZhZGUgeyBvcGFjaXR5OiAwOyB9XFxuICAmLnNob3cgeyBvcGFjaXR5OiAkYmFja2Ryb3Atb3BhY2l0eTsgfVxcbn1cXG5cIixcIi8vXFxuLy8gUm90YXRpbmcgYm9yZGVyXFxuLy9cXG5cXG4uc3Bpbm5lci1ncm93LFxcbi5zcGlubmVyLWJvcmRlciB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB3aWR0aDogdmFyKC0tI3skcHJlZml4fXNwaW5uZXItd2lkdGgpO1xcbiAgaGVpZ2h0OiB2YXIoLS0jeyRwcmVmaXh9c3Bpbm5lci1oZWlnaHQpO1xcbiAgdmVydGljYWwtYWxpZ246IHZhcigtLSN7JHByZWZpeH1zcGlubmVyLXZlcnRpY2FsLWFsaWduKTtcXG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1kaXNhbGxvd2VkLWxpc3RcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGFuaW1hdGlvbjogdmFyKC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLXNwZWVkKSBsaW5lYXIgaW5maW5pdGUgdmFyKC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLW5hbWUpO1xcbn1cXG5cXG4vLyBzY3NzLWRvY3Mtc3RhcnQgc3Bpbm5lci1ib3JkZXIta2V5ZnJhbWVzXFxuQGtleWZyYW1lcyBzcGlubmVyLWJvcmRlciB7XFxuICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgI3tcXFwiLyogcnRsOmlnbm9yZSAqL1xcXCJ9OyB9XFxufVxcbi8vIHNjc3MtZG9jcy1lbmQgc3Bpbm5lci1ib3JkZXIta2V5ZnJhbWVzXFxuXFxuLnNwaW5uZXItYm9yZGVyIHtcXG4gIC8vIHNjc3MtZG9jcy1zdGFydCBzcGlubmVyLWJvcmRlci1jc3MtdmFyc1xcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci13aWR0aDogI3skc3Bpbm5lci13aWR0aH07XFxuICAtLSN7JHByZWZpeH1zcGlubmVyLWhlaWdodDogI3skc3Bpbm5lci1oZWlnaHR9O1xcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci12ZXJ0aWNhbC1hbGlnbjogI3skc3Bpbm5lci12ZXJ0aWNhbC1hbGlnbn07XFxuICAtLSN7JHByZWZpeH1zcGlubmVyLWJvcmRlci13aWR0aDogI3skc3Bpbm5lci1ib3JkZXItd2lkdGh9O1xcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1hbmltYXRpb24tc3BlZWQ6ICN7JHNwaW5uZXItYW5pbWF0aW9uLXNwZWVkfTtcXG4gIC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLW5hbWU6IHNwaW5uZXItYm9yZGVyO1xcbiAgLy8gc2Nzcy1kb2NzLWVuZCBzcGlubmVyLWJvcmRlci1jc3MtdmFyc1xcblxcbiAgYm9yZGVyOiB2YXIoLS0jeyRwcmVmaXh9c3Bpbm5lci1ib3JkZXItd2lkdGgpIHNvbGlkIGN1cnJlbnRjb2xvcjtcXG4gIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblxcbi5zcGlubmVyLWJvcmRlci1zbSB7XFxuICAvLyBzY3NzLWRvY3Mtc3RhcnQgc3Bpbm5lci1ib3JkZXItc20tY3NzLXZhcnNcXG4gIC0tI3skcHJlZml4fXNwaW5uZXItd2lkdGg6ICN7JHNwaW5uZXItd2lkdGgtc219O1xcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1oZWlnaHQ6ICN7JHNwaW5uZXItaGVpZ2h0LXNtfTtcXG4gIC0tI3skcHJlZml4fXNwaW5uZXItYm9yZGVyLXdpZHRoOiAjeyRzcGlubmVyLWJvcmRlci13aWR0aC1zbX07XFxuICAvLyBzY3NzLWRvY3MtZW5kIHNwaW5uZXItYm9yZGVyLXNtLWNzcy12YXJzXFxufVxcblxcbi8vXFxuLy8gR3Jvd2luZyBjaXJjbGVcXG4vL1xcblxcbi8vIHNjc3MtZG9jcy1zdGFydCBzcGlubmVyLWdyb3cta2V5ZnJhbWVzXFxuQGtleWZyYW1lcyBzcGlubmVyLWdyb3cge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgdHJhbnNmb3JtOiBub25lO1xcbiAgfVxcbn1cXG4vLyBzY3NzLWRvY3MtZW5kIHNwaW5uZXItZ3Jvdy1rZXlmcmFtZXNcXG5cXG4uc3Bpbm5lci1ncm93IHtcXG4gIC8vIHNjc3MtZG9jcy1zdGFydCBzcGlubmVyLWdyb3ctY3NzLXZhcnNcXG4gIC0tI3skcHJlZml4fXNwaW5uZXItd2lkdGg6ICN7JHNwaW5uZXItd2lkdGh9O1xcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1oZWlnaHQ6ICN7JHNwaW5uZXItaGVpZ2h0fTtcXG4gIC0tI3skcHJlZml4fXNwaW5uZXItdmVydGljYWwtYWxpZ246ICN7JHNwaW5uZXItdmVydGljYWwtYWxpZ259O1xcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1hbmltYXRpb24tc3BlZWQ6ICN7JHNwaW5uZXItYW5pbWF0aW9uLXNwZWVkfTtcXG4gIC0tI3skcHJlZml4fXNwaW5uZXItYW5pbWF0aW9uLW5hbWU6IHNwaW5uZXItZ3JvdztcXG4gIC8vIHNjc3MtZG9jcy1lbmQgc3Bpbm5lci1ncm93LWNzcy12YXJzXFxuXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Y29sb3I7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG5cXG4uc3Bpbm5lci1ncm93LXNtIHtcXG4gIC0tI3skcHJlZml4fXNwaW5uZXItd2lkdGg6ICN7JHNwaW5uZXItd2lkdGgtc219O1xcbiAgLS0jeyRwcmVmaXh9c3Bpbm5lci1oZWlnaHQ6ICN7JHNwaW5uZXItaGVpZ2h0LXNtfTtcXG59XFxuXFxuQGlmICRlbmFibGUtcmVkdWNlZC1tb3Rpb24ge1xcbiAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcXG4gICAgLnNwaW5uZXItYm9yZGVyLFxcbiAgICAuc3Bpbm5lci1ncm93IHtcXG4gICAgICAtLSN7JHByZWZpeH1zcGlubmVyLWFuaW1hdGlvbi1zcGVlZDogI3skc3Bpbm5lci1hbmltYXRpb24tc3BlZWQgKiAyfTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgcmV0dXJuIFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChjb250ZW50LCBcIn1cIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiAobW9kdWxlcywgbWVkaWFRdWVyeSwgZGVkdXBlKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG1vZHVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19pXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udGludWVcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMl0gPSBcIlwiLmNvbmNhdChtZWRpYVF1ZXJ5LCBcIiBhbmQgXCIpLmNvbmNhdChpdGVtWzJdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9pID0gYXJyICYmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFycltcIkBAaXRlcmF0b3JcIl0pOyBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9zLCBfZTsgdHJ5IHsgZm9yIChfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSkge1xuICB2YXIgX2l0ZW0gPSBfc2xpY2VkVG9BcnJheShpdGVtLCA0KSxcbiAgICAgIGNvbnRlbnQgPSBfaXRlbVsxXSxcbiAgICAgIGNzc01hcHBpbmcgPSBfaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsInZhciBuLGwsdSxpLHQsbyxyLGY9e30sZT1bXSxjPS9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2k7ZnVuY3Rpb24gcyhuLGwpe2Zvcih2YXIgdSBpbiBsKW5bdV09bFt1XTtyZXR1cm4gbn1mdW5jdGlvbiBhKG4pe3ZhciBsPW4ucGFyZW50Tm9kZTtsJiZsLnJlbW92ZUNoaWxkKG4pfWZ1bmN0aW9uIGgobCx1LGkpe3ZhciB0LG8scixmPXt9O2ZvcihyIGluIHUpXCJrZXlcIj09cj90PXVbcl06XCJyZWZcIj09cj9vPXVbcl06ZltyXT11W3JdO2lmKGFyZ3VtZW50cy5sZW5ndGg+MiYmKGYuY2hpbGRyZW49YXJndW1lbnRzLmxlbmd0aD4zP24uY2FsbChhcmd1bWVudHMsMik6aSksXCJmdW5jdGlvblwiPT10eXBlb2YgbCYmbnVsbCE9bC5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gbC5kZWZhdWx0UHJvcHMpdm9pZCAwPT09ZltyXSYmKGZbcl09bC5kZWZhdWx0UHJvcHNbcl0pO3JldHVybiB2KGwsZix0LG8sbnVsbCl9ZnVuY3Rpb24gdihuLGksdCxvLHIpe3ZhciBmPXt0eXBlOm4scHJvcHM6aSxrZXk6dCxyZWY6byxfX2s6bnVsbCxfXzpudWxsLF9fYjowLF9fZTpudWxsLF9fZDp2b2lkIDAsX19jOm51bGwsX19oOm51bGwsY29uc3RydWN0b3I6dm9pZCAwLF9fdjpudWxsPT1yPysrdTpyfTtyZXR1cm4gbnVsbD09ciYmbnVsbCE9bC52bm9kZSYmbC52bm9kZShmKSxmfWZ1bmN0aW9uIHkoKXtyZXR1cm57Y3VycmVudDpudWxsfX1mdW5jdGlvbiBwKG4pe3JldHVybiBuLmNoaWxkcmVufWZ1bmN0aW9uIGQobixsKXt0aGlzLnByb3BzPW4sdGhpcy5jb250ZXh0PWx9ZnVuY3Rpb24gXyhuLGwpe2lmKG51bGw9PWwpcmV0dXJuIG4uX18/XyhuLl9fLG4uX18uX19rLmluZGV4T2YobikrMSk6bnVsbDtmb3IodmFyIHU7bDxuLl9fay5sZW5ndGg7bCsrKWlmKG51bGwhPSh1PW4uX19rW2xdKSYmbnVsbCE9dS5fX2UpcmV0dXJuIHUuX19lO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIG4udHlwZT9fKG4pOm51bGx9ZnVuY3Rpb24gayhuKXt2YXIgbCx1O2lmKG51bGwhPShuPW4uX18pJiZudWxsIT1uLl9fYyl7Zm9yKG4uX19lPW4uX19jLmJhc2U9bnVsbCxsPTA7bDxuLl9fay5sZW5ndGg7bCsrKWlmKG51bGwhPSh1PW4uX19rW2xdKSYmbnVsbCE9dS5fX2Upe24uX19lPW4uX19jLmJhc2U9dS5fX2U7YnJlYWt9cmV0dXJuIGsobil9fWZ1bmN0aW9uIGIobil7KCFuLl9fZCYmKG4uX19kPSEwKSYmdC5wdXNoKG4pJiYhZy5fX3IrK3x8byE9PWwuZGVib3VuY2VSZW5kZXJpbmcpJiYoKG89bC5kZWJvdW5jZVJlbmRlcmluZyl8fHNldFRpbWVvdXQpKGcpfWZ1bmN0aW9uIGcoKXtmb3IodmFyIG47Zy5fX3I9dC5sZW5ndGg7KW49dC5zb3J0KGZ1bmN0aW9uKG4sbCl7cmV0dXJuIG4uX192Ll9fYi1sLl9fdi5fX2J9KSx0PVtdLG4uc29tZShmdW5jdGlvbihuKXt2YXIgbCx1LGksdCxvLHI7bi5fX2QmJihvPSh0PShsPW4pLl9fdikuX19lLChyPWwuX19QKSYmKHU9W10sKGk9cyh7fSx0KSkuX192PXQuX192KzEsaihyLHQsaSxsLl9fbix2b2lkIDAhPT1yLm93bmVyU1ZHRWxlbWVudCxudWxsIT10Ll9faD9bb106bnVsbCx1LG51bGw9PW8/Xyh0KTpvLHQuX19oKSx6KHUsdCksdC5fX2UhPW8mJmsodCkpKX0pfWZ1bmN0aW9uIHcobixsLHUsaSx0LG8scixjLHMsYSl7dmFyIGgseSxkLGssYixnLHcseD1pJiZpLl9fa3x8ZSxDPXgubGVuZ3RoO2Zvcih1Ll9faz1bXSxoPTA7aDxsLmxlbmd0aDtoKyspaWYobnVsbCE9KGs9dS5fX2tbaF09bnVsbD09KGs9bFtoXSl8fFwiYm9vbGVhblwiPT10eXBlb2Ygaz9udWxsOlwic3RyaW5nXCI9PXR5cGVvZiBrfHxcIm51bWJlclwiPT10eXBlb2Yga3x8XCJiaWdpbnRcIj09dHlwZW9mIGs/dihudWxsLGssbnVsbCxudWxsLGspOkFycmF5LmlzQXJyYXkoayk/dihwLHtjaGlsZHJlbjprfSxudWxsLG51bGwsbnVsbCk6ay5fX2I+MD92KGsudHlwZSxrLnByb3BzLGsua2V5LG51bGwsay5fX3YpOmspKXtpZihrLl9fPXUsay5fX2I9dS5fX2IrMSxudWxsPT09KGQ9eFtoXSl8fGQmJmsua2V5PT1kLmtleSYmay50eXBlPT09ZC50eXBlKXhbaF09dm9pZCAwO2Vsc2UgZm9yKHk9MDt5PEM7eSsrKXtpZigoZD14W3ldKSYmay5rZXk9PWQua2V5JiZrLnR5cGU9PT1kLnR5cGUpe3hbeV09dm9pZCAwO2JyZWFrfWQ9bnVsbH1qKG4sayxkPWR8fGYsdCxvLHIsYyxzLGEpLGI9ay5fX2UsKHk9ay5yZWYpJiZkLnJlZiE9eSYmKHd8fCh3PVtdKSxkLnJlZiYmdy5wdXNoKGQucmVmLG51bGwsayksdy5wdXNoKHksay5fX2N8fGIsaykpLG51bGwhPWI/KG51bGw9PWcmJihnPWIpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGsudHlwZSYmay5fX2s9PT1kLl9faz9rLl9fZD1zPW0oayxzLG4pOnM9QShuLGssZCx4LGIscyksXCJmdW5jdGlvblwiPT10eXBlb2YgdS50eXBlJiYodS5fX2Q9cykpOnMmJmQuX19lPT1zJiZzLnBhcmVudE5vZGUhPW4mJihzPV8oZCkpfWZvcih1Ll9fZT1nLGg9QztoLS07KW51bGwhPXhbaF0mJihcImZ1bmN0aW9uXCI9PXR5cGVvZiB1LnR5cGUmJm51bGwhPXhbaF0uX19lJiZ4W2hdLl9fZT09dS5fX2QmJih1Ll9fZD1fKGksaCsxKSksTih4W2hdLHhbaF0pKTtpZih3KWZvcihoPTA7aDx3Lmxlbmd0aDtoKyspTSh3W2hdLHdbKytoXSx3WysraF0pfWZ1bmN0aW9uIG0obixsLHUpe2Zvcih2YXIgaSx0PW4uX19rLG89MDt0JiZvPHQubGVuZ3RoO28rKykoaT10W29dKSYmKGkuX189bixsPVwiZnVuY3Rpb25cIj09dHlwZW9mIGkudHlwZT9tKGksbCx1KTpBKHUsaSxpLHQsaS5fX2UsbCkpO3JldHVybiBsfWZ1bmN0aW9uIHgobixsKXtyZXR1cm4gbD1sfHxbXSxudWxsPT1ufHxcImJvb2xlYW5cIj09dHlwZW9mIG58fChBcnJheS5pc0FycmF5KG4pP24uc29tZShmdW5jdGlvbihuKXt4KG4sbCl9KTpsLnB1c2gobikpLGx9ZnVuY3Rpb24gQShuLGwsdSxpLHQsbyl7dmFyIHIsZixlO2lmKHZvaWQgMCE9PWwuX19kKXI9bC5fX2QsbC5fX2Q9dm9pZCAwO2Vsc2UgaWYobnVsbD09dXx8dCE9b3x8bnVsbD09dC5wYXJlbnROb2RlKW46aWYobnVsbD09b3x8by5wYXJlbnROb2RlIT09biluLmFwcGVuZENoaWxkKHQpLHI9bnVsbDtlbHNle2ZvcihmPW8sZT0wOyhmPWYubmV4dFNpYmxpbmcpJiZlPGkubGVuZ3RoO2UrPTIpaWYoZj09dClicmVhayBuO24uaW5zZXJ0QmVmb3JlKHQsbykscj1vfXJldHVybiB2b2lkIDAhPT1yP3I6dC5uZXh0U2libGluZ31mdW5jdGlvbiBDKG4sbCx1LGksdCl7dmFyIG87Zm9yKG8gaW4gdSlcImNoaWxkcmVuXCI9PT1vfHxcImtleVwiPT09b3x8byBpbiBsfHxIKG4sbyxudWxsLHVbb10saSk7Zm9yKG8gaW4gbCl0JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBsW29dfHxcImNoaWxkcmVuXCI9PT1vfHxcImtleVwiPT09b3x8XCJ2YWx1ZVwiPT09b3x8XCJjaGVja2VkXCI9PT1vfHx1W29dPT09bFtvXXx8SChuLG8sbFtvXSx1W29dLGkpfWZ1bmN0aW9uICQobixsLHUpe1wiLVwiPT09bFswXT9uLnNldFByb3BlcnR5KGwsdSk6bltsXT1udWxsPT11P1wiXCI6XCJudW1iZXJcIiE9dHlwZW9mIHV8fGMudGVzdChsKT91OnUrXCJweFwifWZ1bmN0aW9uIEgobixsLHUsaSx0KXt2YXIgbztuOmlmKFwic3R5bGVcIj09PWwpaWYoXCJzdHJpbmdcIj09dHlwZW9mIHUpbi5zdHlsZS5jc3NUZXh0PXU7ZWxzZXtpZihcInN0cmluZ1wiPT10eXBlb2YgaSYmKG4uc3R5bGUuY3NzVGV4dD1pPVwiXCIpLGkpZm9yKGwgaW4gaSl1JiZsIGluIHV8fCQobi5zdHlsZSxsLFwiXCIpO2lmKHUpZm9yKGwgaW4gdSlpJiZ1W2xdPT09aVtsXXx8JChuLnN0eWxlLGwsdVtsXSl9ZWxzZSBpZihcIm9cIj09PWxbMF0mJlwiblwiPT09bFsxXSlvPWwhPT0obD1sLnJlcGxhY2UoL0NhcHR1cmUkLyxcIlwiKSksbD1sLnRvTG93ZXJDYXNlKClpbiBuP2wudG9Mb3dlckNhc2UoKS5zbGljZSgyKTpsLnNsaWNlKDIpLG4ubHx8KG4ubD17fSksbi5sW2wrb109dSx1P2l8fG4uYWRkRXZlbnRMaXN0ZW5lcihsLG8/VDpJLG8pOm4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihsLG8/VDpJLG8pO2Vsc2UgaWYoXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiIT09bCl7aWYodClsPWwucmVwbGFjZSgveGxpbmsoSHw6aCkvLFwiaFwiKS5yZXBsYWNlKC9zTmFtZSQvLFwic1wiKTtlbHNlIGlmKFwiaHJlZlwiIT09bCYmXCJsaXN0XCIhPT1sJiZcImZvcm1cIiE9PWwmJlwidGFiSW5kZXhcIiE9PWwmJlwiZG93bmxvYWRcIiE9PWwmJmwgaW4gbil0cnl7bltsXT1udWxsPT11P1wiXCI6dTticmVhayBufWNhdGNoKG4pe31cImZ1bmN0aW9uXCI9PXR5cGVvZiB1fHwobnVsbCE9dSYmKCExIT09dXx8XCJhXCI9PT1sWzBdJiZcInJcIj09PWxbMV0pP24uc2V0QXR0cmlidXRlKGwsdSk6bi5yZW1vdmVBdHRyaWJ1dGUobCkpfX1mdW5jdGlvbiBJKG4pe3RoaXMubFtuLnR5cGUrITFdKGwuZXZlbnQ/bC5ldmVudChuKTpuKX1mdW5jdGlvbiBUKG4pe3RoaXMubFtuLnR5cGUrITBdKGwuZXZlbnQ/bC5ldmVudChuKTpuKX1mdW5jdGlvbiBqKG4sdSxpLHQsbyxyLGYsZSxjKXt2YXIgYSxoLHYseSxfLGssYixnLG0seCxBLEMsJCxIPXUudHlwZTtpZih2b2lkIDAhPT11LmNvbnN0cnVjdG9yKXJldHVybiBudWxsO251bGwhPWkuX19oJiYoYz1pLl9faCxlPXUuX19lPWkuX19lLHUuX19oPW51bGwscj1bZV0pLChhPWwuX19iKSYmYSh1KTt0cnl7bjppZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBIKXtpZihnPXUucHJvcHMsbT0oYT1ILmNvbnRleHRUeXBlKSYmdFthLl9fY10seD1hP20/bS5wcm9wcy52YWx1ZTphLl9fOnQsaS5fX2M/Yj0oaD11Ll9fYz1pLl9fYykuX189aC5fX0U6KFwicHJvdG90eXBlXCJpbiBIJiZILnByb3RvdHlwZS5yZW5kZXI/dS5fX2M9aD1uZXcgSChnLHgpOih1Ll9fYz1oPW5ldyBkKGcseCksaC5jb25zdHJ1Y3Rvcj1ILGgucmVuZGVyPU8pLG0mJm0uc3ViKGgpLGgucHJvcHM9ZyxoLnN0YXRlfHwoaC5zdGF0ZT17fSksaC5jb250ZXh0PXgsaC5fX249dCx2PWguX19kPSEwLGguX19oPVtdKSxudWxsPT1oLl9fcyYmKGguX19zPWguc3RhdGUpLG51bGwhPUguZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiYoaC5fX3M9PWguc3RhdGUmJihoLl9fcz1zKHt9LGguX19zKSkscyhoLl9fcyxILmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhnLGguX19zKSkpLHk9aC5wcm9wcyxfPWguc3RhdGUsdiludWxsPT1ILmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmbnVsbCE9aC5jb21wb25lbnRXaWxsTW91bnQmJmguY29tcG9uZW50V2lsbE1vdW50KCksbnVsbCE9aC5jb21wb25lbnREaWRNb3VudCYmaC5fX2gucHVzaChoLmNvbXBvbmVudERpZE1vdW50KTtlbHNle2lmKG51bGw9PUguZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiZnIT09eSYmbnVsbCE9aC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZoLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoZyx4KSwhaC5fX2UmJm51bGwhPWguc2hvdWxkQ29tcG9uZW50VXBkYXRlJiYhMT09PWguc2hvdWxkQ29tcG9uZW50VXBkYXRlKGcsaC5fX3MseCl8fHUuX192PT09aS5fX3Ype2gucHJvcHM9ZyxoLnN0YXRlPWguX19zLHUuX192IT09aS5fX3YmJihoLl9fZD0hMSksaC5fX3Y9dSx1Ll9fZT1pLl9fZSx1Ll9faz1pLl9fayx1Ll9fay5mb3JFYWNoKGZ1bmN0aW9uKG4pe24mJihuLl9fPXUpfSksaC5fX2gubGVuZ3RoJiZmLnB1c2goaCk7YnJlYWsgbn1udWxsIT1oLmNvbXBvbmVudFdpbGxVcGRhdGUmJmguY29tcG9uZW50V2lsbFVwZGF0ZShnLGguX19zLHgpLG51bGwhPWguY29tcG9uZW50RGlkVXBkYXRlJiZoLl9faC5wdXNoKGZ1bmN0aW9uKCl7aC5jb21wb25lbnREaWRVcGRhdGUoeSxfLGspfSl9aWYoaC5jb250ZXh0PXgsaC5wcm9wcz1nLGguX192PXUsaC5fX1A9bixBPWwuX19yLEM9MCxcInByb3RvdHlwZVwiaW4gSCYmSC5wcm90b3R5cGUucmVuZGVyKWguc3RhdGU9aC5fX3MsaC5fX2Q9ITEsQSYmQSh1KSxhPWgucmVuZGVyKGgucHJvcHMsaC5zdGF0ZSxoLmNvbnRleHQpO2Vsc2UgZG97aC5fX2Q9ITEsQSYmQSh1KSxhPWgucmVuZGVyKGgucHJvcHMsaC5zdGF0ZSxoLmNvbnRleHQpLGguc3RhdGU9aC5fX3N9d2hpbGUoaC5fX2QmJisrQzwyNSk7aC5zdGF0ZT1oLl9fcyxudWxsIT1oLmdldENoaWxkQ29udGV4dCYmKHQ9cyhzKHt9LHQpLGguZ2V0Q2hpbGRDb250ZXh0KCkpKSx2fHxudWxsPT1oLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHwoaz1oLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHksXykpLCQ9bnVsbCE9YSYmYS50eXBlPT09cCYmbnVsbD09YS5rZXk/YS5wcm9wcy5jaGlsZHJlbjphLHcobixBcnJheS5pc0FycmF5KCQpPyQ6WyRdLHUsaSx0LG8scixmLGUsYyksaC5iYXNlPXUuX19lLHUuX19oPW51bGwsaC5fX2gubGVuZ3RoJiZmLnB1c2goaCksYiYmKGguX19FPWguX189bnVsbCksaC5fX2U9ITF9ZWxzZSBudWxsPT1yJiZ1Ll9fdj09PWkuX192Pyh1Ll9faz1pLl9fayx1Ll9fZT1pLl9fZSk6dS5fX2U9TChpLl9fZSx1LGksdCxvLHIsZixjKTsoYT1sLmRpZmZlZCkmJmEodSl9Y2F0Y2gobil7dS5fX3Y9bnVsbCwoY3x8bnVsbCE9cikmJih1Ll9fZT1lLHUuX19oPSEhYyxyW3IuaW5kZXhPZihlKV09bnVsbCksbC5fX2Uobix1LGkpfX1mdW5jdGlvbiB6KG4sdSl7bC5fX2MmJmwuX19jKHUsbiksbi5zb21lKGZ1bmN0aW9uKHUpe3RyeXtuPXUuX19oLHUuX19oPVtdLG4uc29tZShmdW5jdGlvbihuKXtuLmNhbGwodSl9KX1jYXRjaChuKXtsLl9fZShuLHUuX192KX19KX1mdW5jdGlvbiBMKGwsdSxpLHQsbyxyLGUsYyl7dmFyIHMsaCx2LHk9aS5wcm9wcyxwPXUucHJvcHMsZD11LnR5cGUsaz0wO2lmKFwic3ZnXCI9PT1kJiYobz0hMCksbnVsbCE9cilmb3IoO2s8ci5sZW5ndGg7aysrKWlmKChzPXJba10pJiZcInNldEF0dHJpYnV0ZVwiaW4gcz09ISFkJiYoZD9zLmxvY2FsTmFtZT09PWQ6Mz09PXMubm9kZVR5cGUpKXtsPXMscltrXT1udWxsO2JyZWFrfWlmKG51bGw9PWwpe2lmKG51bGw9PT1kKXJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwKTtsPW8/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixkKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KGQscC5pcyYmcCkscj1udWxsLGM9ITF9aWYobnVsbD09PWQpeT09PXB8fGMmJmwuZGF0YT09PXB8fChsLmRhdGE9cCk7ZWxzZXtpZihyPXImJm4uY2FsbChsLmNoaWxkTm9kZXMpLGg9KHk9aS5wcm9wc3x8ZikuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwsdj1wLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLCFjKXtpZihudWxsIT1yKWZvcih5PXt9LGs9MDtrPGwuYXR0cmlidXRlcy5sZW5ndGg7aysrKXlbbC5hdHRyaWJ1dGVzW2tdLm5hbWVdPWwuYXR0cmlidXRlc1trXS52YWx1ZTsodnx8aCkmJih2JiYoaCYmdi5fX2h0bWw9PWguX19odG1sfHx2Ll9faHRtbD09PWwuaW5uZXJIVE1MKXx8KGwuaW5uZXJIVE1MPXYmJnYuX19odG1sfHxcIlwiKSl9aWYoQyhsLHAseSxvLGMpLHYpdS5fX2s9W107ZWxzZSBpZihrPXUucHJvcHMuY2hpbGRyZW4sdyhsLEFycmF5LmlzQXJyYXkoayk/azpba10sdSxpLHQsbyYmXCJmb3JlaWduT2JqZWN0XCIhPT1kLHIsZSxyP3JbMF06aS5fX2smJl8oaSwwKSxjKSxudWxsIT1yKWZvcihrPXIubGVuZ3RoO2stLTspbnVsbCE9cltrXSYmYShyW2tdKTtjfHwoXCJ2YWx1ZVwiaW4gcCYmdm9pZCAwIT09KGs9cC52YWx1ZSkmJihrIT09bC52YWx1ZXx8XCJwcm9ncmVzc1wiPT09ZCYmIWt8fFwib3B0aW9uXCI9PT1kJiZrIT09eS52YWx1ZSkmJkgobCxcInZhbHVlXCIsayx5LnZhbHVlLCExKSxcImNoZWNrZWRcImluIHAmJnZvaWQgMCE9PShrPXAuY2hlY2tlZCkmJmshPT1sLmNoZWNrZWQmJkgobCxcImNoZWNrZWRcIixrLHkuY2hlY2tlZCwhMSkpfXJldHVybiBsfWZ1bmN0aW9uIE0obix1LGkpe3RyeXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBuP24odSk6bi5jdXJyZW50PXV9Y2F0Y2gobil7bC5fX2UobixpKX19ZnVuY3Rpb24gTihuLHUsaSl7dmFyIHQsbztpZihsLnVubW91bnQmJmwudW5tb3VudChuKSwodD1uLnJlZikmJih0LmN1cnJlbnQmJnQuY3VycmVudCE9PW4uX19lfHxNKHQsbnVsbCx1KSksbnVsbCE9KHQ9bi5fX2MpKXtpZih0LmNvbXBvbmVudFdpbGxVbm1vdW50KXRyeXt0LmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2gobil7bC5fX2Uobix1KX10LmJhc2U9dC5fX1A9bnVsbH1pZih0PW4uX19rKWZvcihvPTA7bzx0Lmxlbmd0aDtvKyspdFtvXSYmTih0W29dLHUsXCJmdW5jdGlvblwiIT10eXBlb2Ygbi50eXBlKTtpfHxudWxsPT1uLl9fZXx8YShuLl9fZSksbi5fX2U9bi5fX2Q9dm9pZCAwfWZ1bmN0aW9uIE8obixsLHUpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yKG4sdSl9ZnVuY3Rpb24gUCh1LGksdCl7dmFyIG8scixlO2wuX18mJmwuX18odSxpKSxyPShvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQpP251bGw6dCYmdC5fX2t8fGkuX19rLGU9W10saihpLHU9KCFvJiZ0fHxpKS5fX2s9aChwLG51bGwsW3VdKSxyfHxmLGYsdm9pZCAwIT09aS5vd25lclNWR0VsZW1lbnQsIW8mJnQ/W3RdOnI/bnVsbDppLmZpcnN0Q2hpbGQ/bi5jYWxsKGkuY2hpbGROb2Rlcyk6bnVsbCxlLCFvJiZ0P3Q6cj9yLl9fZTppLmZpcnN0Q2hpbGQsbykseihlLHUpfWZ1bmN0aW9uIFMobixsKXtQKG4sbCxTKX1mdW5jdGlvbiBxKGwsdSxpKXt2YXIgdCxvLHIsZj1zKHt9LGwucHJvcHMpO2ZvcihyIGluIHUpXCJrZXlcIj09cj90PXVbcl06XCJyZWZcIj09cj9vPXVbcl06ZltyXT11W3JdO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjImJihmLmNoaWxkcmVuPWFyZ3VtZW50cy5sZW5ndGg+Mz9uLmNhbGwoYXJndW1lbnRzLDIpOmkpLHYobC50eXBlLGYsdHx8bC5rZXksb3x8bC5yZWYsbnVsbCl9ZnVuY3Rpb24gQihuLGwpe3ZhciB1PXtfX2M6bD1cIl9fY0NcIityKyssX186bixDb25zdW1lcjpmdW5jdGlvbihuLGwpe3JldHVybiBuLmNoaWxkcmVuKGwpfSxQcm92aWRlcjpmdW5jdGlvbihuKXt2YXIgdSxpO3JldHVybiB0aGlzLmdldENoaWxkQ29udGV4dHx8KHU9W10sKGk9e30pW2xdPXRoaXMsdGhpcy5nZXRDaGlsZENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gaX0sdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24obil7dGhpcy5wcm9wcy52YWx1ZSE9PW4udmFsdWUmJnUuc29tZShiKX0sdGhpcy5zdWI9ZnVuY3Rpb24obil7dS5wdXNoKG4pO3ZhciBsPW4uY29tcG9uZW50V2lsbFVubW91bnQ7bi5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3Uuc3BsaWNlKHUuaW5kZXhPZihuKSwxKSxsJiZsLmNhbGwobil9fSksbi5jaGlsZHJlbn19O3JldHVybiB1LlByb3ZpZGVyLl9fPXUuQ29uc3VtZXIuY29udGV4dFR5cGU9dX1uPWUuc2xpY2UsbD17X19lOmZ1bmN0aW9uKG4sbCx1LGkpe2Zvcih2YXIgdCxvLHI7bD1sLl9fOylpZigodD1sLl9fYykmJiF0Ll9fKXRyeXtpZigobz10LmNvbnN0cnVjdG9yKSYmbnVsbCE9by5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3ImJih0LnNldFN0YXRlKG8uZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKG4pKSxyPXQuX19kKSxudWxsIT10LmNvbXBvbmVudERpZENhdGNoJiYodC5jb21wb25lbnREaWRDYXRjaChuLGl8fHt9KSxyPXQuX19kKSxyKXJldHVybiB0Ll9fRT10fWNhdGNoKGwpe249bH10aHJvdyBufX0sdT0wLGk9ZnVuY3Rpb24obil7cmV0dXJuIG51bGwhPW4mJnZvaWQgMD09PW4uY29uc3RydWN0b3J9LGQucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKG4sbCl7dmFyIHU7dT1udWxsIT10aGlzLl9fcyYmdGhpcy5fX3MhPT10aGlzLnN0YXRlP3RoaXMuX19zOnRoaXMuX19zPXMoe30sdGhpcy5zdGF0ZSksXCJmdW5jdGlvblwiPT10eXBlb2YgbiYmKG49bihzKHt9LHUpLHRoaXMucHJvcHMpKSxuJiZzKHUsbiksbnVsbCE9biYmdGhpcy5fX3YmJihsJiZ0aGlzLl9faC5wdXNoKGwpLGIodGhpcykpfSxkLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihuKXt0aGlzLl9fdiYmKHRoaXMuX19lPSEwLG4mJnRoaXMuX19oLnB1c2gobiksYih0aGlzKSl9LGQucHJvdG90eXBlLnJlbmRlcj1wLHQ9W10sZy5fX3I9MCxyPTA7ZXhwb3J0e1AgYXMgcmVuZGVyLFMgYXMgaHlkcmF0ZSxoIGFzIGNyZWF0ZUVsZW1lbnQsaCxwIGFzIEZyYWdtZW50LHkgYXMgY3JlYXRlUmVmLGkgYXMgaXNWYWxpZEVsZW1lbnQsZCBhcyBDb21wb25lbnQscSBhcyBjbG9uZUVsZW1lbnQsQiBhcyBjcmVhdGVDb250ZXh0LHggYXMgdG9DaGlsZEFycmF5LGwgYXMgb3B0aW9uc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wcmVhY3QubW9kdWxlLmpzLm1hcFxuIiwiaW1wb3J0e29wdGlvbnMgYXMgcixGcmFnbWVudCBhcyBffWZyb21cInByZWFjdFwiO2V4cG9ydHtGcmFnbWVudH1mcm9tXCJwcmVhY3RcIjt2YXIgbz0wO2Z1bmN0aW9uIGUoXyxlLG4sdCxmKXt2YXIgbCxzLHU9e307Zm9yKHMgaW4gZSlcInJlZlwiPT1zP2w9ZVtzXTp1W3NdPWVbc107dmFyIGE9e3R5cGU6Xyxwcm9wczp1LGtleTpuLHJlZjpsLF9fazpudWxsLF9fOm51bGwsX19iOjAsX19lOm51bGwsX19kOnZvaWQgMCxfX2M6bnVsbCxfX2g6bnVsbCxjb25zdHJ1Y3Rvcjp2b2lkIDAsX192Oi0tbyxfX3NvdXJjZTpmLF9fc2VsZjp0fTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBfJiYobD1fLmRlZmF1bHRQcm9wcykpZm9yKHMgaW4gbCl2b2lkIDA9PT11W3NdJiYodVtzXT1sW3NdKTtyZXR1cm4gci52bm9kZSYmci52bm9kZShhKSxhfWV4cG9ydHtlIGFzIGpzeCxlIGFzIGpzeHMsZSBhcyBqc3hERVZ9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9anN4UnVudGltZS5tb2R1bGUuanMubWFwXG4iLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vYm9vdHN0cmFwLnNjc3NcIjtcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBjb250ZW50LmxvY2FscyB8fCB7fTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIGlzT2xkSUUgPSBmdW5jdGlvbiBpc09sZElFKCkge1xuICB2YXIgbWVtbztcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKCkge1xuICAgIGlmICh0eXBlb2YgbWVtbyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIFRlc3QgZm9yIElFIDw9IDkgYXMgcHJvcG9zZWQgYnkgQnJvd3NlcmhhY2tzXG4gICAgICAvLyBAc2VlIGh0dHA6Ly9icm93c2VyaGFja3MuY29tLyNoYWNrLWU3MWQ4NjkyZjY1MzM0MTczZmVlNzE1YzIyMmNiODA1XG4gICAgICAvLyBUZXN0cyBmb3IgZXhpc3RlbmNlIG9mIHN0YW5kYXJkIGdsb2JhbHMgaXMgdG8gYWxsb3cgc3R5bGUtbG9hZGVyXG4gICAgICAvLyB0byBvcGVyYXRlIGNvcnJlY3RseSBpbnRvIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudHNcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIvaXNzdWVzLzE3N1xuICAgICAgbWVtbyA9IEJvb2xlYW4od2luZG93ICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCAmJiAhd2luZG93LmF0b2IpO1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vO1xuICB9O1xufSgpO1xuXG52YXIgZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICB2YXIgbWVtbyA9IHt9O1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUodGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vW3RhcmdldF07XG4gIH07XG59KCk7XG5cbnZhciBzdHlsZXNJbkRvbSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRG9tLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRG9tW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM11cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlc0luRG9tLnB1c2goe1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiBhZGRTdHlsZShvYmosIG9wdGlvbnMpLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICB2YXIgYXR0cmlidXRlcyA9IG9wdGlvbnMuYXR0cmlidXRlcyB8fCB7fTtcblxuICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMubm9uY2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSAndW5kZWZpbmVkJyA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICAgIGlmIChub25jZSkge1xuICAgICAgYXR0cmlidXRlcy5ub25jZSA9IG5vbmNlO1xuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gIH0pO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5pbnNlcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBvcHRpb25zLmluc2VydChzdHlsZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhcmdldCA9IGdldFRhcmdldChvcHRpb25zLmluc2VydCB8fCAnaGVhZCcpO1xuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGUucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGUpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxudmFyIHJlcGxhY2VUZXh0ID0gZnVuY3Rpb24gcmVwbGFjZVRleHQoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlcGxhY2UoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50O1xuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xuICB9O1xufSgpO1xuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnKHN0eWxlLCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLm1lZGlhID8gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKS5jb25jYXQob2JqLmNzcywgXCJ9XCIpIDogb2JqLmNzczsgLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKTtcbiAgICB2YXIgY2hpbGROb2RlcyA9IHN0eWxlLmNoaWxkTm9kZXM7XG5cbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlLmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGNzc05vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnKHN0eWxlLCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3M7XG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYTtcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKG1lZGlhKSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoJ21lZGlhJyk7XG4gIH1cblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGUuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoc3R5bGUuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxudmFyIHNpbmdsZXRvbiA9IG51bGw7XG52YXIgc2luZ2xldG9uQ291bnRlciA9IDA7XG5cbmZ1bmN0aW9uIGFkZFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgc3R5bGU7XG4gIHZhciB1cGRhdGU7XG4gIHZhciByZW1vdmU7XG5cbiAgaWYgKG9wdGlvbnMuc2luZ2xldG9uKSB7XG4gICAgdmFyIHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKys7XG4gICAgc3R5bGUgPSBzaW5nbGV0b24gfHwgKHNpbmdsZXRvbiA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCBmYWxzZSk7XG4gICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZSA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGUsIG9wdGlvbnMpO1xuXG4gICAgcmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKTtcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlKG9iaik7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZShuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZSgpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsgLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4gIC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcblxuICBpZiAoIW9wdGlvbnMuc2luZ2xldG9uICYmIHR5cGVvZiBvcHRpb25zLnNpbmdsZXRvbiAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgb3B0aW9ucy5zaW5nbGV0b24gPSBpc09sZElFKCk7XG4gIH1cblxuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ld0xpc3QpICE9PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRG9tW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRvbVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRvbS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsImltcG9ydCB7IGNyZWF0ZVJlZiwgQ29tcG9uZW50LCBDb21wb25lbnRDaGlsZHJlbiB9IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSBcImJvb3RzdHJhcFwiO1xuaW1wb3J0ICcuL2Jvb3RzdHJhcC5zY3NzJztcblxuaW50ZXJmYWNlIE1vZGFsUHJvcHMge1xuICBjaGlsZHJlbjogQ29tcG9uZW50Q2hpbGRyZW47XG4gIGJ1dHRvbnM/OiBDb21wb25lbnRDaGlsZHJlbjtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGlzbWlzc0hhbmRsZXI/OiAoaGlkZU1vZGFsPzogKCkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIE15TW9kYWwgZXh0ZW5kcyBDb21wb25lbnQ8TW9kYWxQcm9wcywge30+IHtcbiAgcmVmID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBNb2RhbC5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMucmVmLmN1cnJlbnQhKS5zaG93KCk7XG4gICAgdGhpcy5yZWYuY3VycmVudD8uYWRkRXZlbnRMaXN0ZW5lcignaGlkZS5icy5tb2RhbCcsICgpID0+IHsgdGhpcy5wcm9wcy5kaXNtaXNzSGFuZGxlciAmJiB0aGlzLnByb3BzLmRpc21pc3NIYW5kbGVyKCk7IH0pO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5oaWRlKClcbiAgfVxuXG4gIGhpZGUoKTogdm9pZCB7XG4gICAgTW9kYWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLnJlZi5jdXJyZW50ISkuaGlkZSgpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiA8ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIHJlZj17dGhpcy5yZWZ9IHRhYkluZGV4PXstMX0gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj57dGhpcy5wcm9wcy50aXRsZX08L2g1PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5idXR0b25zfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQnV0dG9uUHJvcHMge1xuICBwcmlvcml0eTogXCJwcmltYXJ5XCIgfCBcInNlY29uZGFyeVwiIHwgXCJkYW5nZXJcIlxuICBjbGlja0hhbmRsZXI/OiAoKSA9PiB2b2lkXG4gIGNoaWxkcmVuOiBDb21wb25lbnRDaGlsZHJlblxuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBCdXR0b24ocHJvcHM6QnV0dG9uUHJvcHMpIHtcbiAgbGV0IGNsYXNzZXM6IHN0cmluZyA9IFwiYnRuIGJ0bi1cIiArIHByb3BzLnByaW9yaXR5XG5cbiAgcmV0dXJuIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRpc2FibGVkPXtwcm9wcy5kaXNhYmxlZH0gY2xhc3M9e2NsYXNzZXN9IG9uQ2xpY2s9eyAoKSA9PiB7IHByb3BzLmNsaWNrSGFuZGxlciA/IHByb3BzLmNsaWNrSGFuZGxlcigpIDogbnVsbDsgfX0+eyBwcm9wcy5jaGlsZHJlbn08L2J1dHRvbj5cbn1cbiIsImV4cG9ydCBjbGFzcyBDb25uZWN0aW9uRmFjdG9yeSB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcHJvdG9jb2xzOiBzdHJpbmdbXTtcblxuICAgIGNvbnN0cnVjdG9yKHVybDogc3RyaW5nLCBwcm90b2NvbHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMudXJsID0gdXJsO1xuICAgICAgICB0aGlzLnByb3RvY29scyA9IHByb3RvY29scztcbiAgICB9O1xuXG4gICAgY3JlYXRlKCk6IENvbm5lY3Rpb24ge1xuICAgICAgICByZXR1cm4gbmV3IENvbm5lY3Rpb24odGhpcy51cmwsIHRoaXMucHJvdG9jb2xzKTtcbiAgICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvbiB7XG4gICAgYmFyZTogV2ViU29ja2V0O1xuXG4gICAgY29uc3RydWN0b3IodXJsOiBzdHJpbmcsIHByb3RvY29sczogc3RyaW5nW10pIHtcbiAgICAgICAgdGhpcy5iYXJlID0gbmV3IFdlYlNvY2tldCh1cmwsIHByb3RvY29scyk7XG4gICAgfVxuXG4gICAgb3BlbigpIHtcbiAgICAgICAgLy8gbm90aGluZyB0b2RvIGZvciB3ZWJzb2NrZXRcbiAgICB9O1xuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuYmFyZS5jbG9zZSgpO1xuICAgIH07XG5cbiAgICBzZW5kKGRhdGE6IHN0cmluZykge1xuICAgICAgICB0aGlzLmJhcmUuc2VuZChkYXRhKTtcbiAgICB9O1xuXG4gICAgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5iYXJlLnJlYWR5U3RhdGUgPT0gV2ViU29ja2V0LkNPTk5FQ1RJTkcgfHxcbiAgICAgICAgICAgIHRoaXMuYmFyZS5yZWFkeVN0YXRlID09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIG9uT3BlbihjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLmJhcmUub25vcGVuID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG9uUmVjZWl2ZShjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLmJhcmUub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjayhldmVudC5kYXRhKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBvbkNsb3NlKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuYmFyZS5vbmNsb3NlID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJleHBvcnQgY29uc3QgcHJvdG9jb2xzID0gW1wid2VidHR5XCJdO1xuXG5leHBvcnQgY29uc3QgbXNnSW5wdXRVbmtub3duID0gJzAnO1xuZXhwb3J0IGNvbnN0IG1zZ0lucHV0ID0gJzEnO1xuZXhwb3J0IGNvbnN0IG1zZ1BpbmcgPSAnMic7XG5leHBvcnQgY29uc3QgbXNnUmVzaXplVGVybWluYWwgPSAnMyc7XG5leHBvcnQgY29uc3QgbXNnU2V0RW5jb2RpbmcgPSAnNCc7XG5cbmV4cG9ydCBjb25zdCBtc2dVbmtub3duT3V0cHV0ID0gJzAnO1xuZXhwb3J0IGNvbnN0IG1zZ091dHB1dCA9ICcxJztcbmV4cG9ydCBjb25zdCBtc2dQb25nID0gJzInO1xuZXhwb3J0IGNvbnN0IG1zZ1NldFdpbmRvd1RpdGxlID0gJzMnO1xuZXhwb3J0IGNvbnN0IG1zZ1NldFByZWZlcmVuY2VzID0gJzQnO1xuZXhwb3J0IGNvbnN0IG1zZ1NldFJlY29ubmVjdCA9ICc1JztcbmV4cG9ydCBjb25zdCBtc2dTZXRCdWZmZXJTaXplID0gJzYnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVybWluYWwge1xuICAgIC8qXG4gICAgICogR2V0IGRpbWVuc2lvbnMgb2YgdGhlIHRlcm1pbmFsXG4gICAgICovXG4gICAgaW5mbygpOiB7IGNvbHVtbnM6IG51bWJlciwgcm93czogbnVtYmVyIH07XG5cbiAgICAvKlxuICAgICAqIFByb2Nlc3Mgb3V0cHV0IGZyb20gdGhlIHNlcnZlciBzaWRlXG4gICAgICovXG4gICAgb3V0cHV0KGRhdGE6IFVpbnQ4QXJyYXkpOiB2b2lkO1xuXG4gICAgLypcbiAgICAgKiBEaXNwbGF5IGEgbWVzc2FnZSBvdmVybGF5IG9uIHRoZSB0ZXJtaW5hbFxuICAgICAqL1xuICAgIHNob3dNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZywgdGltZW91dDogbnVtYmVyKTogdm9pZDtcblxuICAgIC8vIERvbid0IHRoaW5rIHdlIG5lZWQgdGhpcyBhbnltb3JlXG4gICAgLy8gICAgZ2V0TWVzc2FnZSgpOiBIVE1MRWxlbWVudDtcblxuICAgIC8qXG4gICAgICogUmVtb3ZlIG1lc3NhZ2Ugc2hvd24gYnkgc2hvTWVzc2FnZS4gWW91IG9ubHkgbmVlZCB0byBjYWxsXG4gICAgICogdGhpcyBpZiB5b3Ugd2FudCB0byBkaXNtaXNzIGl0IHNvb25lciB0aGFuIHRoZSB0aW1lb3V0LlxuICAgICAqL1xuICAgIHJlbW92ZU1lc3NhZ2UoKTogdm9pZDtcblxuXG4gICAgLypcbiAgICAgKiBTZXQgd2luZG93IHRpdGxlXG4gICAgICovXG4gICAgc2V0V2luZG93VGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICAvKlxuICAgICAqIFNldCBwcmVmZXJlbmNlcy4gVE9ETzogQWRkIHR5cGluZ3NcbiAgICAgKi9cbiAgICBzZXRQcmVmZXJlbmNlcyh2YWx1ZTogb2JqZWN0KTogdm9pZDtcblxuXG4gICAgLypcbiAgICAgKiBTZXRzIGFuIGlucHV0IChlLmcuIHVzZXIgdHlwZXMgc29tZXRoaW5nKSBoYW5kbGVyXG4gICAgICovXG4gICAgb25JbnB1dChjYWxsYmFjazogKGlucHV0OiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkO1xuXG4gICAgLypcbiAgICAgKiBTZXRzIGEgcmVzaXplIGhhbmRsZXJcbiAgICAgKi9cbiAgICBvblJlc2l6ZShjYWxsYmFjazogKGNvbG11bnM6IG51bWJlciwgcm93czogbnVtYmVyKSA9PiB2b2lkKTogdm9pZDtcblxuICAgIHJlc2V0KCk6IHZvaWQ7XG4gICAgZGVhY3RpdmF0ZSgpOiB2b2lkO1xuICAgIGNsb3NlKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbiB7XG4gICAgb3BlbigpOiB2b2lkO1xuICAgIGNsb3NlKCk6IHZvaWQ7XG5cbiAgICAvKlxuICAgICAqIFRoaXMgdGFrZXMgZnVja2luZyBzdHJpbmdzPz9cbiAgICAgKi9cbiAgICBzZW5kKHM6IHN0cmluZyk6IHZvaWQ7XG5cbiAgICBpc09wZW4oKTogYm9vbGVhbjtcbiAgICBvbk9wZW4oY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkO1xuICAgIG9uUmVjZWl2ZShjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQ7XG4gICAgb25DbG9zZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbkZhY3Rvcnkge1xuICAgIGNyZWF0ZSgpOiBDb25uZWN0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgV2ViVFRZIHtcbiAgICAvKlxuICAgICAqIEEgdGVybWluYWwgaW5zdGFuY2UgdGhhdCBpbXBsZW1lbnRzIHRoZSBUZXJtaW5hbCBpbnRlcmZhY2UuXG4gICAgICogVGhpcyBtYWRlIGEgbG90IG9mIHNlbnNlIHdoZW4gd2UgaGFkIGJvdGggSFRlcm0gYW5kIHh0ZXJtLCBidXRcbiAgICAgKiBub3cgSSB3b25kZXIgaWYgdGhlIGFic3RyYWN0aW9uIG1ha2VzIHNlbnNlLiBLZWVwaW5nIGl0IGZvciBub3csXG4gICAgICogdGhvdWdoLlxuICAgICAqL1xuICAgIHRlcm06IFRlcm1pbmFsO1xuXG4gICAgLypcbiAgICAgKiBDb25uZWN0aW9uRmFjdG9yeSBhbmQgY29ubmVjdGlvbiBpbnN0YW5jZS4gV2UgcGFzcyB0aGUgZmFjdG9yeVxuICAgICAqIGluIGluc3RlYWQgb2YganVzdCBhIGNvbm5lY3Rpb24gc28gdGhhdCB3ZSBjYW4gcmVjb25uZWN0LlxuICAgICAqL1xuICAgIGNvbm5lY3Rpb25GYWN0b3J5OiBDb25uZWN0aW9uRmFjdG9yeTtcbiAgICBjb25uZWN0aW9uOiBDb25uZWN0aW9uO1xuXG4gICAgLypcbiAgICAgKiBBcmd1bWVudHMgcGFzc2VkIGluIGJ5IHRoZSB1c2VyLiBXZSBmb3J3YXJkIHRoZW0gdG8gdGhlIGJhY2tlbmRcbiAgICAgKiB3aGVyZSB0aGV5IGFyZSBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBsaW5lLlxuICAgICAqL1xuICAgIGFyZ3M6IHN0cmluZztcblxuICAgIC8qXG4gICAgICogQW4gYXV0aGVudGljYXRpb24gdG9rZW4uIFRoZSBjbGllbnQgZ2V0cyB0aGlzIGZyb20gYC9hdXRoX3Rva2VuLmpzYC5cbiAgICAgKi9cbiAgICBhdXRoVG9rZW46IHN0cmluZztcblxuICAgIC8qXG4gICAgICogSWYgY29ubmVjdGlvbiBpcyBkcm9wcGVkLCByZWNvbm5lY3QgYWZ0ZXIgYHJlY29ubmVjdGAgc2Vjb25kcy5cbiAgICAgKiAtMSBtZWFucyBkbyBub3QgcmVjb25uZWN0LlxuICAgICAqL1xuICAgIHJlY29ubmVjdDogbnVtYmVyO1xuXG4gICAgLypcbiAgICAgKiBUaGUgc2VydmVyJ3MgYnVmZmVyIHNpemUuIElmIGEgc2luZ2xlIG1lc3NhZ2UgZXhjZWVkcyB0aGlzIHNpemUsIGl0IHdpbGxcbiAgICAgKiBiZSB0cnVuY2F0ZWQgb24gdGhlIHNlcnZlciwgc28gd2UgdHJhY2sgaXQgaGVyZSBzbyB0aGF0IHdlIGNhbiBzcGxpdCBtZXNzYWdlc1xuICAgICAqIGludG8gY2h1bmtzIHNtYWxsIGVub3VnaCB0aGF0IHdlIGRvbid0IGh1cnQgdGhlIHNlcnZlcidzIGZlZWxpbmdzLlxuICAgICAqL1xuICAgIGJ1ZlNpemU6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHRlcm06IFRlcm1pbmFsLCBjb25uZWN0aW9uRmFjdG9yeTogQ29ubmVjdGlvbkZhY3RvcnksIGFyZ3M6IHN0cmluZywgYXV0aFRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uRmFjdG9yeSA9IGNvbm5lY3Rpb25GYWN0b3J5O1xuICAgICAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgICAgICB0aGlzLmF1dGhUb2tlbiA9IGF1dGhUb2tlbjtcbiAgICAgICAgdGhpcy5yZWNvbm5lY3QgPSAtMTtcbiAgICAgICAgdGhpcy5idWZTaXplID0gMTAyNDtcbiAgICB9O1xuXG4gICAgb3BlbigpIHtcbiAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSB0aGlzLmNvbm5lY3Rpb25GYWN0b3J5LmNyZWF0ZSgpO1xuICAgICAgICBsZXQgcGluZ1RpbWVyOiBOb2RlSlMuVGltZW91dDtcbiAgICAgICAgbGV0IHJlY29ubmVjdFRpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0O1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uO1xuXG4gICAgICAgIGNvbnN0IHNldHVwID0gKCkgPT4ge1xuICAgICAgICAgICAgY29ubmVjdGlvbi5vbk9wZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlcm1JbmZvID0gdGhpcy50ZXJtLmluZm8oKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbm5lY3Rpb24odGhpcy5hcmdzLCB0aGlzLmF1dGhUb2tlbik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRlcm0ub25SZXNpemUoKGNvbHVtbnM6IG51bWJlciwgcm93czogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZFJlc2l6ZVRlcm1pbmFsKGNvbHVtbnMsIHJvd3MpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kUmVzaXplVGVybWluYWwodGVybUluZm8uY29sdW1ucywgdGVybUluZm8ucm93cyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRTZXRFbmNvZGluZyhcImJhc2U2NFwiKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudGVybS5vbklucHV0KFxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQ6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZElucHV0KGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBwaW5nVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZFBpbmcoKVxuICAgICAgICAgICAgICAgIH0sIDMwICogMTAwMCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29ubmVjdGlvbi5vblJlY2VpdmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gZGF0YS5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGFbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBtc2dPdXRwdXQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRlcm0ub3V0cHV0KFVpbnQ4QXJyYXkuZnJvbShhdG9iKHBheWxvYWQpLCBjID0+IGMuY2hhckNvZGVBdCgwKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbXNnUG9uZzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIG1zZ1NldFdpbmRvd1RpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXJtLnNldFdpbmRvd1RpdGxlKHBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbXNnU2V0UHJlZmVyZW5jZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVmZXJlbmNlcyA9IEpTT04ucGFyc2UocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRlcm0uc2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbXNnU2V0UmVjb25uZWN0OlxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0b1JlY29ubmVjdCA9IEpTT04ucGFyc2UocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkVuYWJsaW5nIHJlY29ubmVjdDogXCIgKyBhdXRvUmVjb25uZWN0ICsgXCIgc2Vjb25kc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3QgPSBhdXRvUmVjb25uZWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbXNnU2V0QnVmZmVyU2l6ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZlNpemUgPSBKU09OLnBhcnNlKHBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWZTaXplID0gYnVmU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25uZWN0aW9uLm9uQ2xvc2UoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocGluZ1RpbWVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRlcm0uZGVhY3RpdmF0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMudGVybS5zaG93TWVzc2FnZShcIkNvbm5lY3Rpb24gQ2xvc2VkXCIsIDApO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlY29ubmVjdCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb25uZWN0VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiA9IHRoaXMuY29ubmVjdGlvbkZhY3RvcnkuY3JlYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRlcm0ucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIHRoaXMucmVjb25uZWN0ICogMTAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbm5lY3Rpb24ub3BlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0dXAoKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChyZWNvbm5lY3RUaW1lb3V0KTtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVDb25uZWN0aW9uKGFyZ3MsIGF1dGhUb2tlbikge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uc2VuZChKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBBcmd1bWVudHM6IGFyZ3MsXG4gICAgICAgICAgICAgICAgQXV0aFRva2VuOiBhdXRoVG9rZW4sXG4gICAgICAgICAgICB9XG4gICAgICAgICkpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogc2VuZElucHV0IHNlbmRzIGRhdGEgdG8gdGhlIHNlcnZlci4gSXQgYWNjZXB0cyBzdHJpbmdzIG9yIFVpbnQ4QXJyYXlzLlxuICAgICAqIHN0cmluZ3Mgd2lsbCBiZSBlbmNvZGVkIGFzIFVURi04LiBVaW50OEFycmF5cyBhcmUgcGFzc2VkIGFsb25nIGFzLWlzLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2VuZElucHV0KGlucHV0OiBzdHJpbmcgfCBVaW50OEFycmF5KSB7XG4gICAgICAgIGxldCBlZmZlY3RpdmVCdWZmZXJTaXplID0gdGhpcy5idWZTaXplIC0gMTtcbiAgICAgICAgbGV0IGRhdGFTdHJpbmc6IHN0cmluZztcblxuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBkYXRhU3RyaW5nID0gaW5wdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRhU3RyaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZSguLi5pbnB1dClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFjY291bnQgZm9yIGJhc2U2NCBlbmNvZGluZ1xuICAgICAgICBsZXQgbWF4Q2h1bmtTaXplID0gTWF0aC5mbG9vcihlZmZlY3RpdmVCdWZmZXJTaXplIC8gNCkgKiAzO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5jZWlsKGRhdGFTdHJpbmcubGVuZ3RoIC8gbWF4Q2h1bmtTaXplKTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgaW5wdXRDaHVuayA9IGRhdGFTdHJpbmcuc3Vic3RyaW5nKGkgKiBtYXhDaHVua1NpemUsIE1hdGgubWluKChpICsgMSkgKiBtYXhDaHVua1NpemUsIGRhdGFTdHJpbmcubGVuZ3RoKSlcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5zZW5kKG1zZ0lucHV0ICsgYnRvYShpbnB1dENodW5rKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbmRQaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uc2VuZChtc2dQaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbmRSZXNpemVUZXJtaW5hbChjb2xtdW5zOiBudW1iZXIsIHJvd3M6IG51bWJlcikge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uc2VuZChcbiAgICAgICAgICAgIG1zZ1Jlc2l6ZVRlcm1pbmFsICsgSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBjb2xtdW5zLFxuICAgICAgICAgICAgICAgICAgICByb3dzOiByb3dzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VuZFNldEVuY29kaW5nKGVuY29kaW5nOiBcImJhc2U2NFwiIHwgXCJudWxsXCIpIHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLnNlbmQobXNnU2V0RW5jb2RpbmcgKyBlbmNvZGluZylcbiAgICB9XG5cbn07XG4iLCJpbXBvcnQgeyBUZXJtaW5hbCwgSURpc3Bvc2FibGUgfSBmcm9tIFwieHRlcm1cIjtcbmltcG9ydCB7IEZpdEFkZG9uIH0gZnJvbSAneHRlcm0tYWRkb24tZml0JztcbmltcG9ydCB7IFdlYkxpbmtzQWRkb24gfSBmcm9tICd4dGVybS1hZGRvbi13ZWItbGlua3MnO1xuaW1wb3J0IHsgV2ViZ2xBZGRvbiB9IGZyb20gJ3h0ZXJtLWFkZG9uLXdlYmdsJztcbmltcG9ydCB7IFpNb2RlbUFkZG9uIH0gZnJvbSBcIi4vem1vZGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBPdXJYdGVybSB7XG4gICAgLy8gVGhlIEhUTUxFbGVtZW50IHRoYXQgY29udGFpbnMgb3VyIHRlcm1pbmFsXG4gICAgZWxlbTogSFRNTEVsZW1lbnQ7XG5cbiAgICAvLyBUaGUgeHRlcm1qcy5YVGVybVxuICAgIHRlcm06IFRlcm1pbmFsO1xuXG4gICAgcmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgICBtZXNzYWdlOiBIVE1MRWxlbWVudDtcbiAgICBtZXNzYWdlVGltZW91dDogbnVtYmVyO1xuICAgIG1lc3NhZ2VUaW1lcjogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgICBvblJlc2l6ZUhhbmRsZXI6IElEaXNwb3NhYmxlO1xuICAgIG9uRGF0YUhhbmRsZXI6IElEaXNwb3NhYmxlO1xuXG4gICAgZml0QWRkT246IEZpdEFkZG9uO1xuICAgIHptb2RlbUFkZG9uOiBaTW9kZW1BZGRvbjtcbiAgICB0b1NlcnZlcjogKGRhdGE6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+IHZvaWQ7XG4gICAgZW5jb2RlcjogVGV4dEVuY29kZXJcblxuICAgIGNvbnN0cnVjdG9yKGVsZW06IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuZWxlbSA9IGVsZW07XG4gICAgICAgIHRoaXMudGVybSA9IG5ldyBUZXJtaW5hbCgpO1xuICAgICAgICB0aGlzLmZpdEFkZE9uID0gbmV3IEZpdEFkZG9uKCk7XG4gICAgICAgIHRoaXMuem1vZGVtQWRkb24gPSBuZXcgWk1vZGVtQWRkb24oe1xuICAgICAgICAgICAgdG9UZXJtaW5hbDogKHg6IFVpbnQ4QXJyYXkpID0+IHRoaXMudGVybS53cml0ZSh4KSxcbiAgICAgICAgICAgIHRvU2VydmVyOiAoeDogVWludDhBcnJheSkgPT4gdGhpcy5zZW5kSW5wdXQoeClcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGVybS5sb2FkQWRkb24obmV3IFdlYkxpbmtzQWRkb24oKSk7XG4gICAgICAgIHRoaXMudGVybS5sb2FkQWRkb24odGhpcy5maXRBZGRPbik7XG4gICAgICAgIHRoaXMudGVybS5sb2FkQWRkb24odGhpcy56bW9kZW1BZGRvbik7XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlID0gZWxlbS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIHRoaXMubWVzc2FnZS5jbGFzc05hbWUgPSBcInh0ZXJtLW92ZXJsYXlcIjtcbiAgICAgICAgdGhpcy5tZXNzYWdlVGltZW91dCA9IDIwMDA7XG5cbiAgICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZml0QWRkT24uZml0KCk7XG4gICAgICAgICAgICB0aGlzLnRlcm0uc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoU3RyaW5nKHRoaXMudGVybS5jb2xzKSArIFwieFwiICsgU3RyaW5nKHRoaXMudGVybS5yb3dzKSwgdGhpcy5tZXNzYWdlVGltZW91dCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy50ZXJtLm9wZW4oZWxlbSk7XG4gICAgICAgIHRoaXMudGVybS5mb2N1cygpO1xuICAgICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyKCk7XG5cbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgKCkgPT4geyB0aGlzLnJlc2l6ZUxpc3RlbmVyKCk7IH0pO1xuICAgIH07XG5cbiAgICBpbmZvKCk6IHsgY29sdW1uczogbnVtYmVyLCByb3dzOiBudW1iZXIgfSB7XG4gICAgICAgIHJldHVybiB7IGNvbHVtbnM6IHRoaXMudGVybS5jb2xzLCByb3dzOiB0aGlzLnRlcm0ucm93cyB9O1xuICAgIH07XG5cbiAgICAvLyBUaGlzIGdldHMgY2FsbGVkIGZyb20gdGhlIFdlYnNvY2tldCdzIG9uUmVjZWl2ZSBoYW5kbGVyXG4gICAgb3V0cHV0KGRhdGE6IFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgdGhpcy56bW9kZW1BZGRvbi5jb25zdW1lKGRhdGEpO1xuICAgIH07XG5cbiAgICBnZXRNZXNzYWdlKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZTtcbiAgICB9XG5cbiAgICBzaG93TWVzc2FnZShtZXNzYWdlOiBzdHJpbmcsIHRpbWVvdXQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLm1lc3NhZ2UuaW5uZXJIVE1MID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZUVsZW0odGltZW91dCk7XG4gICAgfVxuXG4gICAgc2hvd01lc3NhZ2VFbGVtKHRpbWVvdXQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLmVsZW0uYXBwZW5kQ2hpbGQodGhpcy5tZXNzYWdlKTtcblxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm1lc3NhZ2VUaW1lcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVvdXQgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbS5yZW1vdmVDaGlsZCh0aGlzLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJlbW92ZU1lc3NhZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UucGFyZW50Tm9kZSA9PSB0aGlzLmVsZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbS5yZW1vdmVDaGlsZCh0aGlzLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0V2luZG93VGl0bGUodGl0bGU6IHN0cmluZykge1xuICAgICAgICBkb2N1bWVudC50aXRsZSA9IHRpdGxlO1xuICAgIH07XG5cbiAgICBzZXRQcmVmZXJlbmNlcyh2YWx1ZTogb2JqZWN0KSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT0gXCJFbmFibGVXZWJHTFwiICYmIGtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMudGVybS5sb2FkQWRkb24obmV3IFdlYmdsQWRkb24oKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSBcImZvbnQtc2l6ZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZXJtLnNldE9wdGlvbihcImZvbnRTaXplXCIsIHZhbHVlW2tleV0pXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSBcImZvbnQtZmFtaWx5XCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRlcm0uc2V0T3B0aW9uKFwiZm9udEZhbWlseVwiLCB2YWx1ZVtrZXldKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgc2VuZElucHV0KGRhdGE6IFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9TZXJ2ZXIoZGF0YSlcbiAgICB9XG5cbiAgICBvbklucHV0KGNhbGxiYWNrOiAoaW5wdXQ6IHN0cmluZykgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLmVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKVxuICAgICAgICB0aGlzLnRvU2VydmVyID0gY2FsbGJhY2s7XG5cbiAgICAgICAgLy8gSSAqdGhpbmsqIHdlJ3JlIG9rIGxpa2UgdGhpcywgYnV0IGlmIG5vdCwgd2UgY2FuIGRpc3Bvc2VcbiAgICAgICAgLy8gb2YgdGhlIHByZXZpb3VzIGhhbmRsZXIgYW5kIHB1dCB0aGUgbmV3IG9uZSBpbiBwbGFjZS5cbiAgICAgICAgaWYgKHRoaXMub25EYXRhSGFuZGxlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25EYXRhSGFuZGxlciA9IHRoaXMudGVybS5vbkRhdGEoKGlucHV0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvU2VydmVyKHRoaXMuZW5jb2Rlci5lbmNvZGUoaW5wdXQpKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uUmVzaXplKGNhbGxiYWNrOiAoY29sbXVuczogbnVtYmVyLCByb3dzOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5vblJlc2l6ZUhhbmRsZXIgPSB0aGlzLnRlcm0ub25SZXNpemUoKCkgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2sodGhpcy50ZXJtLmNvbHMsIHRoaXMudGVybS5yb3dzKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGRlYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25EYXRhSGFuZGxlci5kaXNwb3NlKCk7XG4gICAgICAgIHRoaXMub25SZXNpemVIYW5kbGVyLmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy50ZXJtLmJsdXIoKTtcbiAgICB9XG5cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlKCk7XG4gICAgICAgIHRoaXMudGVybS5jbGVhcigpO1xuICAgIH1cblxuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLnJlc2l6ZUxpc3RlbmVyKTtcbiAgICAgICAgdGhpcy50ZXJtLmRpc3Bvc2UoKTtcbiAgICB9XG5cbiAgICBkaXNhYmxlU3RkaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGVybS5vcHRpb25zLmRpc2FibGVTdGRpbiA9IHRydWU7XG4gICAgfVxuXG4gICAgZW5hYmxlU3RkaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGVybS5vcHRpb25zLmRpc2FibGVTdGRpbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRlcm0uZm9jdXMoKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBJVGVybWluYWxBZGRvbiwgVGVybWluYWwgfSBmcm9tIFwieHRlcm1cIjtcbmltcG9ydCB7IEJyb3dzZXIsIERldGVjdGlvbiwgT2ZmZXIsIFNlbnRyeSwgU2Vzc2lvbiB9IGZyb20gJ3ptb2RlbS5qcy9zcmMvem1vZGVtX2Jyb3dzZXInO1xuaW1wb3J0IHsgTXlNb2RhbCwgQnV0dG9uIH0gZnJvbSBcIi4vTXlNb2RhbFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRDaGlsZHJlbiwgY3JlYXRlUmVmLCByZW5kZXIgfSBmcm9tIFwicHJlYWN0XCI7XG5cbmV4cG9ydCBjbGFzcyBaTW9kZW1BZGRvbiBpbXBsZW1lbnRzIElUZXJtaW5hbEFkZG9uIHtcbiAgICB0ZXJtOiBUZXJtaW5hbDtcbiAgICBlbGVtOiBIVE1MRGl2RWxlbWVudDtcbiAgICBzZW50cnk6IFNlbnRyeTtcbiAgICB0b1Rlcm1pbmFsOiAoZGF0YTogVWludDhBcnJheSkgPT4gdm9pZDtcbiAgICB0b1NlcnZlcjogKGRhdGE6IFVpbnQ4QXJyYXkpID0+IHZvaWQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wczoge1xuICAgICAgICB0b1Rlcm1pbmFsOiAoZGF0YTogVWludDhBcnJheSkgPT4gdm9pZCxcbiAgICAgICAgdG9TZXJ2ZXI6IChkYXRhOiBVaW50OEFycmF5KSA9PiB2b2lkXG4gICAgfSkge1xuICAgICAgICB0aGlzLmNyZWF0ZUVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy50b1Rlcm1pbmFsID0gcHJvcHMudG9UZXJtaW5hbDtcbiAgICAgICAgdGhpcy50b1NlcnZlciA9IHByb3BzLnRvU2VydmVyO1xuXG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5wcmVwZW5kKHRoaXMuZWxlbSk7XG4gICAgfVxuXG4gICAgY29uc3VtZShkYXRhOiBVaW50OEFycmF5KSB7XG4gICAgICAgIHRoaXMuc2VudHJ5LmNvbnN1bWUoZGF0YSlcbiAgICB9XG5cbiAgICBhY3RpdmF0ZSh0ZXJtaW5hbDogVGVybWluYWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdGVybWluYWxcbiAgICB9XG5cbiAgICBkaXNwb3NlKCkge1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdCgpIHtcbiAgICAgICAgcmVuZGVyKDw+PC8+LCB0aGlzLmVsZW0pO1xuXG4gICAgICAgIHRoaXMuc2VudHJ5ID0gbmV3IFNlbnRyeSh7XG4gICAgICAgICAgICAndG9fdGVybWluYWwnOiAoZDogVWludDhBcnJheSkgPT4gdGhpcy50b1Rlcm1pbmFsKGQpLFxuICAgICAgICAgICAgJ29uX2RldGVjdCc6IChkZXRlY3Rpb246IERldGVjdGlvbikgPT4gdGhpcy5vbkRldGVjdChkZXRlY3Rpb24pLFxuICAgICAgICAgICAgJ3NlbmRlcic6ICh4OiBVaW50OEFycmF5KSA9PiB7IHRoaXMudG9TZXJ2ZXIoeCkgfSxcbiAgICAgICAgICAgICdvbl9yZXRyYWN0JzogKCkgPT4gdGhpcy5yZXNldCgpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0KCkge1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgICAgdGhpcy50ZXJtLm9wdGlvbnMuZGlzYWJsZVN0ZGluID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGVybS5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25EZXRlY3QoZGV0ZWN0aW9uOiBEZXRlY3Rpb24pIHtcbiAgICAgICAgdmFyIHpzZXNzaW9uID0gZGV0ZWN0aW9uLmNvbmZpcm0oKTtcblxuICAgICAgICB0aGlzLnRlcm0ub3B0aW9ucy5kaXNhYmxlU3RkaW4gPSB0cnVlO1xuXG4gICAgICAgIHpzZXNzaW9uLm9uKCdzZXNzaW9uX2VuZCcsICgpID0+IHsgdGhpcy5yZXNldCgpIH0pO1xuXG4gICAgICAgIGlmICh6c2Vzc2lvbi50eXBlID09PSBcInNlbmRcIikge1xuICAgICAgICAgICAgdGhpcy5zZW5kKHpzZXNzaW9uKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHpzZXNzaW9uLm9uKFwib2ZmZXJcIiwgKHhmZXI6IGFueSkgPT4gdGhpcy5vbk9mZmVyKHhmZXIpKTtcbiAgICAgICAgICAgIHpzZXNzaW9uLnN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbmQoenNlc3Npb246IFNlc3Npb24pIHtcbiAgICAgICAgcmVuZGVyKDxTZW5kRmlsZU1vZGFsIHNlc3Npb249e3pzZXNzaW9ufSAvPiwgdGhpcy5lbGVtKVxuICAgIH1cblxuICAgIHByaXZhdGUgb25PZmZlcih4ZmVyOiBPZmZlcikge1xuICAgICAgICByZW5kZXIoPFJlY2VpdmVGaWxlTW9kYWwgeGZlcj17eGZlcn0gb25GaW5pc2g9eygpID0+IHRoaXMucmVzZXQoKX0gLz4sIHRoaXMuZWxlbSlcbiAgICB9XG59XG5cbi8vIFJlbmRlcnMgYSBib290c3RyYXAgcHJvZ3Jlc3MgYmFyXG5mdW5jdGlvbiBQcm9ncmVzcyhwcm9wczogeyBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIG5vdzogbnVtYmVyLCBjaGlsZHJlbj86IENvbXBvbmVudENoaWxkcmVuIH0pIHtcbiAgICBsZXQgeyBtaW4sIG1heCwgbm93IH0gPSBwcm9wcztcbiAgICBsZXQgcGVyY2VudGFnZSA9IFwiMFwiO1xuXG4gICAgaWYgKCh0eXBlb2YgbWluID09PSBcIm51bWJlclwiKSAmJlxuICAgICAgICAodHlwZW9mIG1heCA9PT0gXCJudW1iZXJcIikgJiZcbiAgICAgICAgKHR5cGVvZiBub3cgPT09IFwibnVtYmVyXCIpICYmXG4gICAgICAgIChtaW4gIT0gbWF4KSkge1xuICAgICAgICBwZXJjZW50YWdlID0gKDEwMCAqIChub3cgLSBtaW4pIC8gKG1heCAtIG1pbikpLnRvRml4ZWQoMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCIgcm9sZT1cInByb2dyZXNzYmFyXCIgc3R5bGU9e1wid2lkdGg6IFwiICsgcGVyY2VudGFnZSArIFwiJVwifSBhcmlhLXZhbHVlbm93PXtub3d9IGFyaWEtdmFsdWVtaW49e21pbn0gYXJpYS12YWx1ZW1heD17bWF4fT57cHJvcHMuY2hpbGRyZW59PC9kaXY+XG4gICAgPC9kaXY+XG59XG5cbmludGVyZmFjZSBSZWNlaXZlRmlsZU1vZGFsUHJvcHMge1xuICAgIHhmZXI6IE9mZmVyO1xuICAgIG9uRmluaXNoPzogKCkgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIFJlY2VpdmVGaWxlTW9kYWxTdGF0ZSB7XG4gICAgc3RhdGU6IFwibm90c3RhcnRlZFwiIHwgXCJzdGFydGVkXCIgfCBcInNraXBwZWRcIiB8IFwiZG9uZVwiXG59XG5cbmV4cG9ydCBjbGFzcyBSZWNlaXZlRmlsZU1vZGFsIGV4dGVuZHMgQ29tcG9uZW50PFJlY2VpdmVGaWxlTW9kYWxQcm9wcywgUmVjZWl2ZUZpbGVNb2RhbFN0YXRlPiB7XG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzdGF0ZTogXCJub3RzdGFydGVkXCIgfSlcbiAgICB9XG5cbiAgICBhY2NlcHQoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzdGF0ZTogXCJzdGFydGVkXCIgfSk7XG5cbiAgICAgICAgbGV0IHRpbWVySUQgPSBzZXRJbnRlcnZhbChcbiAgICAgICAgICAgICgpID0+IHRoaXMuZm9yY2VVcGRhdGUoKSxcbiAgICAgICAgICAgIDEwMFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucHJvcHMueGZlci5hY2NlcHQoKS50aGVuKChwYXlsb2FkczogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyBBbGwgZG9uZSwgc28gc3RvcCB1cGRhdGluZyB0aGUgcHJvZ3Jlc3MgYmFyXG4gICAgICAgICAgICAvLyBhbmQgcGVyZm9ybSBhIGZpbmFsIHJlbmRlci5cbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJJRCk7XG4gICAgICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLnN0YXRlICE9IFwic2tpcHBlZFwiKSB7XG4gICAgICAgICAgICAgICAgQnJvd3Nlci5zYXZlX3RvX2Rpc2soXG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWRzLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnhmZXIuZ2V0X2RldGFpbHMoKS5uYW1lXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzdGF0ZTogXCJkb25lXCIgfSlcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBmaW5pc2goKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdmaW5pc2hlZCcpO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkZpbmlzaCkgdGhpcy5wcm9wcy5vbkZpbmlzaCgpO1xuICAgIH1cblxuICAgIHByb2dyZXNzKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5zdGF0ZSAhPT0gXCJub3RzdGFydGVkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiA8UHJvZ3Jlc3MgbWluPXswfSBtYXg9e3RoaXMucHJvcHMueGZlci5nZXRfZGV0YWlscygpLnNpemV9IG5vdz17dGhpcy5wcm9wcy54ZmVyLmdldF9vZmZzZXQoKX0gLz5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNraXAoKSB7XG4gICAgICAgIHRoaXMucHJvcHMueGZlci5za2lwKClcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHN0YXRlOiBcInNraXBwZWRcIiB9KVxuICAgIH1cblxuICAgIGJ1dHRvbnMoKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZS5zdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSBcIm5vdHN0YXJ0ZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gPD5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBwcmlvcml0eT1cInByaW1hcnlcIiBjbGlja0hhbmRsZXI9eygpID0+IHsgdGhpcy5hY2NlcHQoKTsgfX0+QWNjZXB0PC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b24gcHJpb3JpdHk9XCJzZWNvbmRhcnlcIiBjbGlja0hhbmRsZXI9eygpID0+IHsgdGhpcy5za2lwKCk7IH19PkRlY2xpbmU8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgIGNhc2UgXCJzdGFydGVkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b24gcHJpb3JpdHk9XCJkYW5nZXJcIiBjbGlja0hhbmRsZXI9eygpID0+IHsgdGhpcy5za2lwKCk7IH19PkNhbmNlbDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgY2FzZSBcInNraXBwZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gPD5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBwcmlvcml0eT1cImRhbmdlclwiIGRpc2FibGVkPXt0cnVlfT5Ta2lwcGluZy4uLjwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5zdGF0ZSAhPSBcImRvbmVcIilcbiAgICAgICAgICAgIHJldHVybiA8TXlNb2RhbCB0aXRsZT1cIkluY29taW5nIGZpbGVcIlxuICAgICAgICAgICAgICAgIGJ1dHRvbnM9e3RoaXMuYnV0dG9ucygpfT5cbiAgICAgICAgICAgICAgICBBY2NlcHQgPGNvZGU+e3RoaXMucHJvcHMueGZlci5nZXRfZGV0YWlscygpLm5hbWV9PC9jb2RlPiAoe3RoaXMucHJvcHMueGZlci5nZXRfZGV0YWlscygpLnNpemUudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMCB9KX0gYnl0ZXMpP1xuICAgICAgICAgICAgICAgIHt0aGlzLnByb2dyZXNzKCl9XG4gICAgICAgICAgICA8L015TW9kYWw+XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBTZW5kRmlsZU1vZGFsIGV4dGVuZHMgQ29tcG9uZW50PFNlbmRGaWxlTW9kYWxQcm9wcywgU2VuZEZpbGVNb2RhbFN0YXRlPiB7XG4gICAgZmlsZVBpY2tlclJlZiA9IGNyZWF0ZVJlZjxIVE1MSW5wdXRFbGVtZW50PigpO1xuXG4gICAgY29uc3RydWN0b3IocHJvcHM6IFNlbmRGaWxlTW9kYWxQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcylcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHN0YXRlOiBcIm5vdHN0YXJ0ZWRcIiB9KVxuICAgIH1cblxuICAgIGJ1dHRvbnMoKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZS5zdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSBcInN0YXJ0ZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gPD5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBwcmlvcml0eT1cInByaW1hcnlcIiBjbGlja0hhbmRsZXI9eygpID0+IHsgdGhpcy5zZW5kKCk7IH19IGRpc2FibGVkPXt0cnVlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRpbmcuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgIGNhc2UgXCJub3RzdGFydGVkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b24gcHJpb3JpdHk9XCJwcmltYXJ5XCIgY2xpY2tIYW5kbGVyPXsoKSA9PiB7IHRoaXMuc2VuZCgpOyB9fT5TZW5kPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VuZCgpIHtcbiAgICAgICAgQnJvd3Nlci5zZW5kX2ZpbGVzKHRoaXMucHJvcHMuc2Vzc2lvbixcbiAgICAgICAgICAgIHRoaXMuZmlsZVBpY2tlclJlZi5jdXJyZW50IS5maWxlcywge1xuICAgICAgICAgICAgb25fb2ZmZXJfcmVzcG9uc2U6IChmLCB4ZmVyKSA9PiB7IHRoaXMuc2V0U3RhdGUoeyBzdGF0ZTogXCJzdGFydGVkXCIgfSkgfSxcbiAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc3RhdGU6IFwiZG9uZVwiIH0pXG4gICAgICAgICAgICB0aGlzLnByb3BzLnNlc3Npb24uY2xvc2UoKVxuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25GaW5pc2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25GaW5pc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlID0+IGNvbnNvbGUubG9nKGUpKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnN0YXRlICE9IFwiZG9uZVwiKVxuICAgICAgICAgICAgcmV0dXJuIDxNeU1vZGFsIHRpdGxlPVwiU2VuZCBmaWxlKHMpXCJcbiAgICAgICAgICAgICAgICBidXR0b25zPXt0aGlzLmJ1dHRvbnMoKX0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZvcm1GaWxlTXVsdGlwbGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSByZXF1ZXN0ZWQgZmlsZSB0cmFuc2ZlclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcmVmPXt0aGlzLmZpbGVQaWNrZXJSZWZ9IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIHR5cGU9XCJmaWxlXCIgaWQ9XCJmb3JtRmlsZU11bHRpcGxlXCIgbXVsdGlwbGUgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvTXlNb2RhbD5cbiAgICB9XG59XG5cbmludGVyZmFjZSBTZW5kRmlsZU1vZGFsUHJvcHMge1xuICAgIG9uRmluaXNoPzogKCkgPT4gdm9pZDtcbiAgICBzZXNzaW9uOiBTZXNzaW9uO1xufVxuXG5pbnRlcmZhY2UgU2VuZEZpbGVNb2RhbFN0YXRlIHtcbiAgICBzdGF0ZTogXCJub3RzdGFydGVkXCIgfCBcInN0YXJ0ZWRcIiB8IFwiZG9uZVwiXG4gICAgY3VycmVudEZpbGU6IGFueVxufVxuIiwiIWZ1bmN0aW9uKGUsdCl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5GaXRBZGRvbj10KCk6ZS5GaXRBZGRvbj10KCl9KHNlbGYsKGZ1bmN0aW9uKCl7cmV0dXJuKCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9ezc3NTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRml0QWRkb249dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oZSl7dGhpcy5fdGVybWluYWw9ZX0sZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUuZml0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wb3NlRGltZW5zaW9ucygpO2lmKGUmJnRoaXMuX3Rlcm1pbmFsKXt2YXIgdD10aGlzLl90ZXJtaW5hbC5fY29yZTt0aGlzLl90ZXJtaW5hbC5yb3dzPT09ZS5yb3dzJiZ0aGlzLl90ZXJtaW5hbC5jb2xzPT09ZS5jb2xzfHwodC5fcmVuZGVyU2VydmljZS5jbGVhcigpLHRoaXMuX3Rlcm1pbmFsLnJlc2l6ZShlLmNvbHMsZS5yb3dzKSl9fSxlLnByb3RvdHlwZS5wcm9wb3NlRGltZW5zaW9ucz1mdW5jdGlvbigpe2lmKHRoaXMuX3Rlcm1pbmFsJiZ0aGlzLl90ZXJtaW5hbC5lbGVtZW50JiZ0aGlzLl90ZXJtaW5hbC5lbGVtZW50LnBhcmVudEVsZW1lbnQpe3ZhciBlPXRoaXMuX3Rlcm1pbmFsLl9jb3JlO2lmKDAhPT1lLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoJiYwIT09ZS5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmFjdHVhbENlbGxIZWlnaHQpe3ZhciB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuX3Rlcm1pbmFsLmVsZW1lbnQucGFyZW50RWxlbWVudCkscj1wYXJzZUludCh0LmdldFByb3BlcnR5VmFsdWUoXCJoZWlnaHRcIikpLGk9TWF0aC5tYXgoMCxwYXJzZUludCh0LmdldFByb3BlcnR5VmFsdWUoXCJ3aWR0aFwiKSkpLG49d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fdGVybWluYWwuZWxlbWVudCksbz1yLShwYXJzZUludChuLmdldFByb3BlcnR5VmFsdWUoXCJwYWRkaW5nLXRvcFwiKSkrcGFyc2VJbnQobi5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1ib3R0b21cIikpKSxhPWktKHBhcnNlSW50KG4uZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctcmlnaHRcIikpK3BhcnNlSW50KG4uZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSkpLWUudmlld3BvcnQuc2Nyb2xsQmFyV2lkdGg7cmV0dXJue2NvbHM6TWF0aC5tYXgoMixNYXRoLmZsb29yKGEvZS5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmFjdHVhbENlbGxXaWR0aCkpLHJvd3M6TWF0aC5tYXgoMSxNYXRoLmZsb29yKG8vZS5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmFjdHVhbENlbGxIZWlnaHQpKX19fX0sZX0oKTt0LkZpdEFkZG9uPXJ9fSx0PXt9O3JldHVybiBmdW5jdGlvbiByKGkpe2lmKHRbaV0pcmV0dXJuIHRbaV0uZXhwb3J0czt2YXIgbj10W2ldPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtpXShuLG4uZXhwb3J0cyxyKSxuLmV4cG9ydHN9KDc3NSl9KSgpfSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9eHRlcm0tYWRkb24tZml0LmpzLm1hcCIsIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHQpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuV2ViTGlua3NBZGRvbj10KCk6ZS5XZWJMaW5rc0FkZG9uPXQoKX0od2luZG93LChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgaT10W3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKGkuZXhwb3J0cyxpLGkuZXhwb3J0cyxuKSxpLmw9ITAsaS5leHBvcnRzfXJldHVybiBuLm09ZSxuLmM9dCxuLmQ9ZnVuY3Rpb24oZSx0LHIpe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGdldDpyfSl9LG4ucj1mdW5jdGlvbihlKXtcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxuLnQ9ZnVuY3Rpb24oZSx0KXtpZigxJnQmJihlPW4oZSkpLDgmdClyZXR1cm4gZTtpZig0JnQmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihuLnIociksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pLDImdCYmXCJzdHJpbmdcIiE9dHlwZW9mIGUpZm9yKHZhciBpIGluIGUpbi5kKHIsaSxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0uYmluZChudWxsLGkpKTtyZXR1cm4gcn0sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCxcImFcIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD1cIlwiLG4obi5zPTApfShbZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuV2ViTGlua3NBZGRvbj12b2lkIDA7dmFyIHI9bigxKSxpPW5ldyBSZWdFeHAoXCIoPzpefFteXFxcXGRhLXpcXFxcLi1dKykoKGh0dHBzPzpcXFxcL1xcXFwvKSgoKFtcXFxcZGEtelxcXFwuLV0rKVxcXFwuKFthLXpcXFxcLl17Miw2fSkpfCgoXFxcXGR7MSwzfVxcXFwuKXszfVxcXFxkezEsM30pfChsb2NhbGhvc3QpKSg6XFxcXGR7MSw1fSk/KChcXFxcL1tcXFxcL1xcXFx3XFxcXC5cXFxcLSV+OitAXSopKihbXjpcXFwiJ1xcXFxzXSkpPyhcXFxcP1swLTlcXFxcd1xcXFxbXFxcXF1cXFxcKFxcXFwpXFxcXC9cXFxcP1xcXFwhI0AkJSYnKissOjt+XFxcXD1cXFxcLlxcXFwtXSopPygjWzAtOVxcXFx3XFxcXFtcXFxcXVxcXFwoXFxcXClcXFxcL1xcXFw/XFxcXCEjQCQlJicqKyw6O35cXFxcPVxcXFwuXFxcXC1dKik/KSgkfFteXFxcXC9cXFxcd1xcXFwuXFxcXC0lXSspXCIpO2Z1bmN0aW9uIG8oZSx0KXt2YXIgbj13aW5kb3cub3BlbigpO24/KG4ub3BlbmVyPW51bGwsbi5sb2NhdGlvbi5ocmVmPXQpOmNvbnNvbGUud2FybihcIk9wZW5pbmcgbGluayBibG9ja2VkIGFzIG9wZW5lciBjb3VsZCBub3QgYmUgY2xlYXJlZFwiKX12YXIgYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3ZvaWQgMD09PWUmJihlPW8pLHZvaWQgMD09PXQmJih0PXt9KSx2b2lkIDA9PT1uJiYobj0hMSksdGhpcy5faGFuZGxlcj1lLHRoaXMuX29wdGlvbnM9dCx0aGlzLl91c2VMaW5rUHJvdmlkZXI9bix0aGlzLl9vcHRpb25zLm1hdGNoSW5kZXg9MX1yZXR1cm4gZS5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oZSl7dGhpcy5fdGVybWluYWw9ZSx0aGlzLl91c2VMaW5rUHJvdmlkZXImJlwicmVnaXN0ZXJMaW5rUHJvdmlkZXJcImluIHRoaXMuX3Rlcm1pbmFsP3RoaXMuX2xpbmtQcm92aWRlcj10aGlzLl90ZXJtaW5hbC5yZWdpc3RlckxpbmtQcm92aWRlcihuZXcgci5XZWJMaW5rUHJvdmlkZXIodGhpcy5fdGVybWluYWwsaSx0aGlzLl9oYW5kbGVyKSk6dGhpcy5fbGlua01hdGNoZXJJZD10aGlzLl90ZXJtaW5hbC5yZWdpc3RlckxpbmtNYXRjaGVyKGksdGhpcy5faGFuZGxlcix0aGlzLl9vcHRpb25zKX0sZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3ZhciBlO3ZvaWQgMCE9PXRoaXMuX2xpbmtNYXRjaGVySWQmJnZvaWQgMCE9PXRoaXMuX3Rlcm1pbmFsJiZ0aGlzLl90ZXJtaW5hbC5kZXJlZ2lzdGVyTGlua01hdGNoZXIodGhpcy5fbGlua01hdGNoZXJJZCksbnVsbD09PShlPXRoaXMuX2xpbmtQcm92aWRlcil8fHZvaWQgMD09PWV8fGUuZGlzcG9zZSgpfSxlfSgpO3QuV2ViTGlua3NBZGRvbj1hfSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5MaW5rQ29tcHV0ZXI9dC5XZWJMaW5rUHJvdmlkZXI9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5fdGVybWluYWw9ZSx0aGlzLl9yZWdleD10LHRoaXMuX2hhbmRsZXI9bn1yZXR1cm4gZS5wcm90b3R5cGUucHJvdmlkZUxpbmtzPWZ1bmN0aW9uKGUsdCl7dChpLmNvbXB1dGVMaW5rKGUsdGhpcy5fcmVnZXgsdGhpcy5fdGVybWluYWwsdGhpcy5faGFuZGxlcikpfSxlfSgpO3QuV2ViTGlua1Byb3ZpZGVyPXI7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLmNvbXB1dGVMaW5rPWZ1bmN0aW9uKHQsbixyLGkpe2Zvcih2YXIgbyxhPW5ldyBSZWdFeHAobi5zb3VyY2UsKG4uZmxhZ3N8fFwiXCIpK1wiZ1wiKSxzPWUuX3RyYW5zbGF0ZUJ1ZmZlckxpbmVUb1N0cmluZ1dpdGhXcmFwKHQtMSwhMSxyKSx1PXNbMF0sZD1zWzFdLGw9LTEsYz1bXTtudWxsIT09KG89YS5leGVjKHUpKTspe3ZhciBmPW9bMV07aWYoIWYpe2NvbnNvbGUubG9nKFwibWF0Y2ggZm91bmQgd2l0aG91dCBjb3JyZXNwb25kaW5nIG1hdGNoSW5kZXhcIik7YnJlYWt9aWYobD11LmluZGV4T2YoZixsKzEpLGEubGFzdEluZGV4PWwrZi5sZW5ndGgsbDwwKWJyZWFrO2Zvcih2YXIgcD1sK2YubGVuZ3RoLGg9ZCsxO3A+ci5jb2xzOylwLT1yLmNvbHMsaCsrO3ZhciB2PXtzdGFydDp7eDpsKzEseTpkKzF9LGVuZDp7eDpwLHk6aH19O2MucHVzaCh7cmFuZ2U6dix0ZXh0OmYsYWN0aXZhdGU6aX0pfXJldHVybiBjfSxlLl90cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmdXaXRoV3JhcD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPVwiXCI7ZG97aWYoIShzPW4uYnVmZmVyLmFjdGl2ZS5nZXRMaW5lKGUpKSlicmVhaztzLmlzV3JhcHBlZCYmZS0tLGk9cy5pc1dyYXBwZWR9d2hpbGUoaSk7dmFyIGE9ZTtkb3t2YXIgcyx1PW4uYnVmZmVyLmFjdGl2ZS5nZXRMaW5lKGUrMSk7aWYocj0hIXUmJnUuaXNXcmFwcGVkLCEocz1uLmJ1ZmZlci5hY3RpdmUuZ2V0TGluZShlKSkpYnJlYWs7bys9cy50cmFuc2xhdGVUb1N0cmluZyghciYmdCkuc3Vic3RyaW5nKDAsbi5jb2xzKSxlKyt9d2hpbGUocik7cmV0dXJuW28sYV19LGV9KCk7dC5MaW5rQ29tcHV0ZXI9aX1dKX0pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXh0ZXJtLWFkZG9uLXdlYi1saW5rcy5qcy5tYXAiLCIhZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSxlKTpcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLldlYmdsQWRkb249ZSgpOnQuV2ViZ2xBZGRvbj1lKCl9KHNlbGYsKGZ1bmN0aW9uKCl7cmV0dXJuKCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9ezk2NToodCxlLGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS5HbHlwaFJlbmRlcmVyPXZvaWQgMDt2YXIgcj1pKDM4MSksbz1pKDMxMCksbj1pKDQ1NSkscz1pKDI1OSksYT1pKDg1NSksbD1pKDE0NyksaD0xMCxjPWgqRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULF89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxpLG8pe3RoaXMuX3Rlcm1pbmFsPXQsdGhpcy5fY29sb3JzPWUsdGhpcy5fZ2w9aSx0aGlzLl9kaW1lbnNpb25zPW8sdGhpcy5fYWN0aXZlQnVmZmVyPTAsdGhpcy5fdmVydGljZXM9e2NvdW50OjAsYXR0cmlidXRlczpuZXcgRmxvYXQzMkFycmF5KDApLGF0dHJpYnV0ZXNCdWZmZXJzOltuZXcgRmxvYXQzMkFycmF5KDApLG5ldyBGbG9hdDMyQXJyYXkoMCldLHNlbGVjdGlvbkF0dHJpYnV0ZXM6bmV3IEZsb2F0MzJBcnJheSgwKX07dmFyIG49dGhpcy5fZ2wscz1yLnRocm93SWZGYWxzeShyLmNyZWF0ZVByb2dyYW0obixcIiN2ZXJzaW9uIDMwMCBlc1xcbmxheW91dCAobG9jYXRpb24gPSAwKSBpbiB2ZWMyIGFfdW5pdHF1YWQ7XFxubGF5b3V0IChsb2NhdGlvbiA9IDEpIGluIHZlYzIgYV9jZWxscG9zO1xcbmxheW91dCAobG9jYXRpb24gPSAyKSBpbiB2ZWMyIGFfb2Zmc2V0O1xcbmxheW91dCAobG9jYXRpb24gPSAzKSBpbiB2ZWMyIGFfc2l6ZTtcXG5sYXlvdXQgKGxvY2F0aW9uID0gNCkgaW4gdmVjMiBhX3RleGNvb3JkO1xcbmxheW91dCAobG9jYXRpb24gPSA1KSBpbiB2ZWMyIGFfdGV4c2l6ZTtcXG5cXG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xcbnVuaWZvcm0gdmVjMiB1X3Jlc29sdXRpb247XFxuXFxub3V0IHZlYzIgdl90ZXhjb29yZDtcXG5cXG52b2lkIG1haW4oKSB7XFxuICB2ZWMyIHplcm9Ub09uZSA9IChhX29mZnNldCAvIHVfcmVzb2x1dGlvbikgKyBhX2NlbGxwb3MgKyAoYV91bml0cXVhZCAqIGFfc2l6ZSk7XFxuICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHZlYzQoemVyb1RvT25lLCAwLjAsIDEuMCk7XFxuICB2X3RleGNvb3JkID0gYV90ZXhjb29yZCArIGFfdW5pdHF1YWQgKiBhX3RleHNpemU7XFxufVwiLFwiI3ZlcnNpb24gMzAwIGVzXFxucHJlY2lzaW9uIGxvd3AgZmxvYXQ7XFxuXFxuaW4gdmVjMiB2X3RleGNvb3JkO1xcblxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfdGV4dHVyZTtcXG5cXG5vdXQgdmVjNCBvdXRDb2xvcjtcXG5cXG52b2lkIG1haW4oKSB7XFxuICBvdXRDb2xvciA9IHRleHR1cmUodV90ZXh0dXJlLCB2X3RleGNvb3JkKTtcXG59XCIpKTt0aGlzLl9wcm9ncmFtPXMsdGhpcy5fcHJvamVjdGlvbkxvY2F0aW9uPXIudGhyb3dJZkZhbHN5KG4uZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMuX3Byb2dyYW0sXCJ1X3Byb2plY3Rpb25cIikpLHRoaXMuX3Jlc29sdXRpb25Mb2NhdGlvbj1yLnRocm93SWZGYWxzeShuLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLl9wcm9ncmFtLFwidV9yZXNvbHV0aW9uXCIpKSx0aGlzLl90ZXh0dXJlTG9jYXRpb249ci50aHJvd0lmRmFsc3kobi5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5fcHJvZ3JhbSxcInVfdGV4dHVyZVwiKSksdGhpcy5fdmVydGV4QXJyYXlPYmplY3Q9bi5jcmVhdGVWZXJ0ZXhBcnJheSgpLG4uYmluZFZlcnRleEFycmF5KHRoaXMuX3ZlcnRleEFycmF5T2JqZWN0KTt2YXIgYT1uZXcgRmxvYXQzMkFycmF5KFswLDAsMSwwLDAsMSwxLDFdKSxsPW4uY3JlYXRlQnVmZmVyKCk7bi5iaW5kQnVmZmVyKG4uQVJSQVlfQlVGRkVSLGwpLG4uYnVmZmVyRGF0YShuLkFSUkFZX0JVRkZFUixhLG4uU1RBVElDX0RSQVcpLG4uZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCksbi52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsMix0aGlzLl9nbC5GTE9BVCwhMSwwLDApO3ZhciBoPW5ldyBVaW50OEFycmF5KFswLDEsMywwLDIsM10pLF89bi5jcmVhdGVCdWZmZXIoKTtuLmJpbmRCdWZmZXIobi5FTEVNRU5UX0FSUkFZX0JVRkZFUixfKSxuLmJ1ZmZlckRhdGEobi5FTEVNRU5UX0FSUkFZX0JVRkZFUixoLG4uU1RBVElDX0RSQVcpLHRoaXMuX2F0dHJpYnV0ZXNCdWZmZXI9ci50aHJvd0lmRmFsc3kobi5jcmVhdGVCdWZmZXIoKSksbi5iaW5kQnVmZmVyKG4uQVJSQVlfQlVGRkVSLHRoaXMuX2F0dHJpYnV0ZXNCdWZmZXIpLG4uZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMiksbi52ZXJ0ZXhBdHRyaWJQb2ludGVyKDIsMixuLkZMT0FULCExLGMsMCksbi52ZXJ0ZXhBdHRyaWJEaXZpc29yKDIsMSksbi5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgzKSxuLnZlcnRleEF0dHJpYlBvaW50ZXIoMywyLG4uRkxPQVQsITEsYywyKkZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCksbi52ZXJ0ZXhBdHRyaWJEaXZpc29yKDMsMSksbi5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSg0KSxuLnZlcnRleEF0dHJpYlBvaW50ZXIoNCwyLG4uRkxPQVQsITEsYyw0KkZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCksbi52ZXJ0ZXhBdHRyaWJEaXZpc29yKDQsMSksbi5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSg1KSxuLnZlcnRleEF0dHJpYlBvaW50ZXIoNSwyLG4uRkxPQVQsITEsYyw2KkZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCksbi52ZXJ0ZXhBdHRyaWJEaXZpc29yKDUsMSksbi5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKSxuLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwyLG4uRkxPQVQsITEsYyw4KkZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCksbi52ZXJ0ZXhBdHRyaWJEaXZpc29yKDEsMSksdGhpcy5fYXRsYXNUZXh0dXJlPXIudGhyb3dJZkZhbHN5KG4uY3JlYXRlVGV4dHVyZSgpKSxuLmJpbmRUZXh0dXJlKG4uVEVYVFVSRV8yRCx0aGlzLl9hdGxhc1RleHR1cmUpLG4udGV4SW1hZ2UyRChuLlRFWFRVUkVfMkQsMCxuLlJHQkEsMSwxLDAsbi5SR0JBLG4uVU5TSUdORURfQllURSxuZXcgVWludDhBcnJheShbMCwwLDI1NSwyNTVdKSksbi50ZXhQYXJhbWV0ZXJpKG4uVEVYVFVSRV8yRCxuLlRFWFRVUkVfV1JBUF9TLG4uQ0xBTVBfVE9fRURHRSksbi50ZXhQYXJhbWV0ZXJpKG4uVEVYVFVSRV8yRCxuLlRFWFRVUkVfV1JBUF9ULG4uQ0xBTVBfVE9fRURHRSksbi5lbmFibGUobi5CTEVORCksbi5ibGVuZEZ1bmMobi5TUkNfQUxQSEEsbi5PTkVfTUlOVVNfU1JDX0FMUEhBKSx0aGlzLm9uUmVzaXplKCl9cmV0dXJuIHQucHJvdG90eXBlLmJlZ2luRnJhbWU9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5fYXRsYXN8fHRoaXMuX2F0bGFzLmJlZ2luRnJhbWUoKX0sdC5wcm90b3R5cGUudXBkYXRlQ2VsbD1mdW5jdGlvbih0LGUsaSxyLG8sbil7dGhpcy5fdXBkYXRlQ2VsbCh0aGlzLl92ZXJ0aWNlcy5hdHRyaWJ1dGVzLHQsZSxpLHIsbyxuKX0sdC5wcm90b3R5cGUuX3VwZGF0ZUNlbGw9ZnVuY3Rpb24odCxlLGkscixvLHMsbCl7dmFyIGMsXz0oaSp0aGlzLl90ZXJtaW5hbC5jb2xzK2UpKmg7ciE9PWEuTlVMTF9DRUxMX0NPREUmJnIhPT1hLldISVRFU1BBQ0VfQ0VMTF9DT0RFJiZ2b2lkIDAhPT1yP3RoaXMuX2F0bGFzJiYoKGM9bCYmbC5sZW5ndGg+MT90aGlzLl9hdGxhcy5nZXRSYXN0ZXJpemVkR2x5cGhDb21iaW5lZENoYXIobCxvLHMpOnRoaXMuX2F0bGFzLmdldFJhc3Rlcml6ZWRHbHlwaChyLG8scykpPyh0W19dPS1jLm9mZnNldC54K3RoaXMuX2RpbWVuc2lvbnMuc2NhbGVkQ2hhckxlZnQsdFtfKzFdPS1jLm9mZnNldC55K3RoaXMuX2RpbWVuc2lvbnMuc2NhbGVkQ2hhclRvcCx0W18rMl09Yy5zaXplLngvdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDYW52YXNXaWR0aCx0W18rM109Yy5zaXplLnkvdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDYW52YXNIZWlnaHQsdFtfKzRdPWMudGV4dHVyZVBvc2l0aW9uQ2xpcFNwYWNlLngsdFtfKzVdPWMudGV4dHVyZVBvc2l0aW9uQ2xpcFNwYWNlLnksdFtfKzZdPWMuc2l6ZUNsaXBTcGFjZS54LHRbXys3XT1jLnNpemVDbGlwU3BhY2UueSk6bi5maWxsKHQsMCxfLF8raC0xLTIpKTpuLmZpbGwodCwwLF8sXytoLTEtMil9LHQucHJvdG90eXBlLnVwZGF0ZVNlbGVjdGlvbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl90ZXJtaW5hbDt0aGlzLl92ZXJ0aWNlcy5zZWxlY3Rpb25BdHRyaWJ1dGVzPXMuc2xpY2UodGhpcy5fdmVydGljZXMuYXR0cmlidXRlcywwKTt2YXIgaT10aGlzLl9jb2xvcnMuc2VsZWN0aW9uT3BhcXVlLnJnYmE+Pj44fDUwMzMxNjQ4O2lmKHQuc2VsZWN0aW9uLmNvbHVtblNlbGVjdE1vZGUpZm9yKHZhciByPXQuc2VsZWN0aW9uLnN0YXJ0Q29sLG89dC5zZWxlY3Rpb24uZW5kQ29sLXIsbj10LnNlbGVjdGlvbi52aWV3cG9ydENhcHBlZEVuZFJvdy10LnNlbGVjdGlvbi52aWV3cG9ydENhcHBlZFN0YXJ0Um93KzEsYT10LnNlbGVjdGlvbi52aWV3cG9ydENhcHBlZFN0YXJ0Um93O2E8dC5zZWxlY3Rpb24udmlld3BvcnRDYXBwZWRTdGFydFJvdytuO2ErKyl0aGlzLl91cGRhdGVTZWxlY3Rpb25SYW5nZShyLHIrbyxhLHQsaSk7ZWxzZXtyPXQuc2VsZWN0aW9uLnZpZXdwb3J0U3RhcnRSb3c9PT10LnNlbGVjdGlvbi52aWV3cG9ydENhcHBlZFN0YXJ0Um93P3Quc2VsZWN0aW9uLnN0YXJ0Q29sOjA7dmFyIGw9dC5zZWxlY3Rpb24udmlld3BvcnRDYXBwZWRTdGFydFJvdz09PXQuc2VsZWN0aW9uLnZpZXdwb3J0Q2FwcGVkRW5kUm93P3Quc2VsZWN0aW9uLmVuZENvbDplLmNvbHM7dGhpcy5fdXBkYXRlU2VsZWN0aW9uUmFuZ2UocixsLHQuc2VsZWN0aW9uLnZpZXdwb3J0Q2FwcGVkU3RhcnRSb3csdCxpKTt2YXIgaD1NYXRoLm1heCh0LnNlbGVjdGlvbi52aWV3cG9ydENhcHBlZEVuZFJvdy10LnNlbGVjdGlvbi52aWV3cG9ydENhcHBlZFN0YXJ0Um93LTEsMCk7Zm9yKGE9dC5zZWxlY3Rpb24udmlld3BvcnRDYXBwZWRTdGFydFJvdysxO2E8PXQuc2VsZWN0aW9uLnZpZXdwb3J0Q2FwcGVkU3RhcnRSb3craDthKyspdGhpcy5fdXBkYXRlU2VsZWN0aW9uUmFuZ2UoMCxsLGEsdCxpKTtpZih0LnNlbGVjdGlvbi52aWV3cG9ydENhcHBlZFN0YXJ0Um93IT09dC5zZWxlY3Rpb24udmlld3BvcnRDYXBwZWRFbmRSb3cpe3ZhciBjPXQuc2VsZWN0aW9uLnZpZXdwb3J0RW5kUm93PT09dC5zZWxlY3Rpb24udmlld3BvcnRDYXBwZWRFbmRSb3c/dC5zZWxlY3Rpb24uZW5kQ29sOmUuY29sczt0aGlzLl91cGRhdGVTZWxlY3Rpb25SYW5nZSgwLGMsdC5zZWxlY3Rpb24udmlld3BvcnRDYXBwZWRFbmRSb3csdCxpKX19fSx0LnByb3RvdHlwZS5fdXBkYXRlU2VsZWN0aW9uUmFuZ2U9ZnVuY3Rpb24odCxlLGkscixuKXtmb3IodmFyIHMsYT10aGlzLl90ZXJtaW5hbCxoPWkrYS5idWZmZXIuYWN0aXZlLnZpZXdwb3J0WSxjPXQ7YzxlO2MrKyl7dmFyIF89KGkqdGhpcy5fdGVybWluYWwuY29scytjKSpvLlJFTkRFUl9NT0RFTF9JTkRJQ0lFU19QRVJfQ0VMTCxkPXIuY2VsbHNbX10sdT1yLmNlbGxzW18rby5SRU5ERVJfTU9ERUxfRkdfT0ZGU0VUXTtpZig2NzEwODg2NCZ1KXt2YXIgZj1uZXcgbC5BdHRyaWJ1dGVEYXRhO3N3aXRjaChmLmZnPXUsZi5iZz1yLmNlbGxzW18rby5SRU5ERVJfTU9ERUxfQkdfT0ZGU0VUXSx1Jj0tMTM0MjE3NzI4LGYuZ2V0QmdDb2xvck1vZGUoKSl7Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnZhciBwPXRoaXMuX2dldENvbG9yRnJvbUFuc2lJbmRleChmLmdldEJnQ29sb3IoKSkucmdiYTt1fD1wPj44JjE2NzExNjgwfHA+PjgmNjUyODB8cD4+OCYyNTU7Y2FzZSA1MDMzMTY0ODp2YXIgZz1sLkF0dHJpYnV0ZURhdGEudG9Db2xvclJHQihmLmdldEJnQ29sb3IoKSk7dXw9Z1swXTw8MTZ8Z1sxXTw8OHxnWzJdPDwwO2Nhc2UgMDpkZWZhdWx0OnZhciB2PXRoaXMuX2NvbG9ycy5iYWNrZ3JvdW5kLnJnYmE7dXw9dj4+OCYxNjcxMTY4MHx2Pj44JjY1MjgwfHY+PjgmMjU1fXV8PTUwMzMxNjQ4fWlmKGQmby5DT01CSU5FRF9DSEFSX0JJVF9NQVNLKXtzfHwocz1hLmJ1ZmZlci5hY3RpdmUuZ2V0TGluZShoKSk7dmFyIEM9cy5nZXRDZWxsKGMpLmdldENoYXJzKCk7dGhpcy5fdXBkYXRlQ2VsbCh0aGlzLl92ZXJ0aWNlcy5zZWxlY3Rpb25BdHRyaWJ1dGVzLGMsaSxyLmNlbGxzW19dLG4sdSxDKX1lbHNlIHRoaXMuX3VwZGF0ZUNlbGwodGhpcy5fdmVydGljZXMuc2VsZWN0aW9uQXR0cmlidXRlcyxjLGksci5jZWxsc1tfXSxuLHUpfX0sdC5wcm90b3R5cGUuX2dldENvbG9yRnJvbUFuc2lJbmRleD1mdW5jdGlvbih0KXtpZih0Pj10aGlzLl9jb2xvcnMuYW5zaS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiTm8gY29sb3IgZm91bmQgZm9yIGlkeCBcIit0KTtyZXR1cm4gdGhpcy5fY29sb3JzLmFuc2lbdF19LHQucHJvdG90eXBlLm9uUmVzaXplPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdGVybWluYWwsZT10aGlzLl9nbDtlLnZpZXdwb3J0KDAsMCxlLmNhbnZhcy53aWR0aCxlLmNhbnZhcy5oZWlnaHQpO3ZhciBpPXQuY29scyp0LnJvd3MqaDtpZih0aGlzLl92ZXJ0aWNlcy5jb3VudCE9PWkpe3RoaXMuX3ZlcnRpY2VzLmNvdW50PWksdGhpcy5fdmVydGljZXMuYXR0cmlidXRlcz1uZXcgRmxvYXQzMkFycmF5KGkpO2Zvcih2YXIgcj0wO3I8dGhpcy5fdmVydGljZXMuYXR0cmlidXRlc0J1ZmZlcnMubGVuZ3RoO3IrKyl0aGlzLl92ZXJ0aWNlcy5hdHRyaWJ1dGVzQnVmZmVyc1tyXT1uZXcgRmxvYXQzMkFycmF5KGkpO2Zvcih2YXIgbz0wLG49MDtuPHQucm93cztuKyspZm9yKHZhciBzPTA7czx0LmNvbHM7cysrKXRoaXMuX3ZlcnRpY2VzLmF0dHJpYnV0ZXNbbys4XT1zL3QuY29scyx0aGlzLl92ZXJ0aWNlcy5hdHRyaWJ1dGVzW28rOV09bi90LnJvd3Msbys9aH19LHQucHJvdG90eXBlLnNldENvbG9ycz1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5fYXRsYXMpe3ZhciBpPXRoaXMuX2dsO2kudXNlUHJvZ3JhbSh0aGlzLl9wcm9ncmFtKSxpLmJpbmRWZXJ0ZXhBcnJheSh0aGlzLl92ZXJ0ZXhBcnJheU9iamVjdCksdGhpcy5fYWN0aXZlQnVmZmVyPSh0aGlzLl9hY3RpdmVCdWZmZXIrMSklMjtmb3IodmFyIG89dGhpcy5fdmVydGljZXMuYXR0cmlidXRlc0J1ZmZlcnNbdGhpcy5fYWN0aXZlQnVmZmVyXSxuPTAscz0wO3M8dC5saW5lTGVuZ3Rocy5sZW5ndGg7cysrKXt2YXIgYT1zKnRoaXMuX3Rlcm1pbmFsLmNvbHMqaCxsPShlP3RoaXMuX3ZlcnRpY2VzLnNlbGVjdGlvbkF0dHJpYnV0ZXM6dGhpcy5fdmVydGljZXMuYXR0cmlidXRlcykuc3ViYXJyYXkoYSxhK3QubGluZUxlbmd0aHNbc10qaCk7by5zZXQobCxuKSxuKz1sLmxlbmd0aH1pLmJpbmRCdWZmZXIoaS5BUlJBWV9CVUZGRVIsdGhpcy5fYXR0cmlidXRlc0J1ZmZlciksaS5idWZmZXJEYXRhKGkuQVJSQVlfQlVGRkVSLG8uc3ViYXJyYXkoMCxuKSxpLlNUUkVBTV9EUkFXKSx0aGlzLl9hdGxhcy5oYXNDYW52YXNDaGFuZ2VkJiYodGhpcy5fYXRsYXMuaGFzQ2FudmFzQ2hhbmdlZD0hMSxpLnVuaWZvcm0xaSh0aGlzLl90ZXh0dXJlTG9jYXRpb24sMCksaS5hY3RpdmVUZXh0dXJlKGkuVEVYVFVSRTArMCksaS5iaW5kVGV4dHVyZShpLlRFWFRVUkVfMkQsdGhpcy5fYXRsYXNUZXh0dXJlKSxpLnRleEltYWdlMkQoaS5URVhUVVJFXzJELDAsaS5SR0JBLGkuUkdCQSxpLlVOU0lHTkVEX0JZVEUsdGhpcy5fYXRsYXMuY2FjaGVDYW52YXMpLGkuZ2VuZXJhdGVNaXBtYXAoaS5URVhUVVJFXzJEKSksaS51bmlmb3JtTWF0cml4NGZ2KHRoaXMuX3Byb2plY3Rpb25Mb2NhdGlvbiwhMSxyLlBST0pFQ1RJT05fTUFUUklYKSxpLnVuaWZvcm0yZih0aGlzLl9yZXNvbHV0aW9uTG9jYXRpb24saS5jYW52YXMud2lkdGgsaS5jYW52YXMuaGVpZ2h0KSxpLmRyYXdFbGVtZW50c0luc3RhbmNlZChpLlRSSUFOR0xFUyw2LGkuVU5TSUdORURfQllURSwwLG4vaCl9fSx0LnByb3RvdHlwZS5zZXRBdGxhcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nbDt0aGlzLl9hdGxhcz10LGUuYmluZFRleHR1cmUoZS5URVhUVVJFXzJELHRoaXMuX2F0bGFzVGV4dHVyZSksZS50ZXhJbWFnZTJEKGUuVEVYVFVSRV8yRCwwLGUuUkdCQSxlLlJHQkEsZS5VTlNJR05FRF9CWVRFLHQuY2FjaGVDYW52YXMpLGUuZ2VuZXJhdGVNaXBtYXAoZS5URVhUVVJFXzJEKX0sdC5wcm90b3R5cGUuc2V0RGltZW5zaW9ucz1mdW5jdGlvbih0KXt0aGlzLl9kaW1lbnNpb25zPXR9LHR9KCk7ZS5HbHlwaFJlbmRlcmVyPV99LDM0NDoodCxlLGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS5SZWN0YW5nbGVSZW5kZXJlcj12b2lkIDA7dmFyIHI9aSgzODEpLG89aSg0NTUpLG49aSgzMTApLHM9OCpGbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLGksbyl7dGhpcy5fdGVybWluYWw9dCx0aGlzLl9jb2xvcnM9ZSx0aGlzLl9nbD1pLHRoaXMuX2RpbWVuc2lvbnM9byx0aGlzLl92ZXJ0aWNlcz17Y291bnQ6MCxhdHRyaWJ1dGVzOm5ldyBGbG9hdDMyQXJyYXkoMTYwKSxzZWxlY3Rpb246bmV3IEZsb2F0MzJBcnJheSgyNCl9O3ZhciBuPXRoaXMuX2dsO3RoaXMuX3Byb2dyYW09ci50aHJvd0lmRmFsc3koci5jcmVhdGVQcm9ncmFtKG4sXCIjdmVyc2lvbiAzMDAgZXNcXG5sYXlvdXQgKGxvY2F0aW9uID0gMCkgaW4gdmVjMiBhX3Bvc2l0aW9uO1xcbmxheW91dCAobG9jYXRpb24gPSAxKSBpbiB2ZWMyIGFfc2l6ZTtcXG5sYXlvdXQgKGxvY2F0aW9uID0gMikgaW4gdmVjNCBhX2NvbG9yO1xcbmxheW91dCAobG9jYXRpb24gPSAzKSBpbiB2ZWMyIGFfdW5pdHF1YWQ7XFxuXFxudW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbjtcXG51bmlmb3JtIHZlYzIgdV9yZXNvbHV0aW9uO1xcblxcbm91dCB2ZWM0IHZfY29sb3I7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdmVjMiB6ZXJvVG9PbmUgPSAoYV9wb3NpdGlvbiArIChhX3VuaXRxdWFkICogYV9zaXplKSkgLyB1X3Jlc29sdXRpb247XFxuICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHZlYzQoemVyb1RvT25lLCAwLjAsIDEuMCk7XFxuICB2X2NvbG9yID0gYV9jb2xvcjtcXG59XCIsXCIjdmVyc2lvbiAzMDAgZXNcXG5wcmVjaXNpb24gbG93cCBmbG9hdDtcXG5cXG5pbiB2ZWM0IHZfY29sb3I7XFxuXFxub3V0IHZlYzQgb3V0Q29sb3I7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgb3V0Q29sb3IgPSB2X2NvbG9yO1xcbn1cIikpLHRoaXMuX3Jlc29sdXRpb25Mb2NhdGlvbj1yLnRocm93SWZGYWxzeShuLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLl9wcm9ncmFtLFwidV9yZXNvbHV0aW9uXCIpKSx0aGlzLl9wcm9qZWN0aW9uTG9jYXRpb249ci50aHJvd0lmRmFsc3kobi5nZXRVbmlmb3JtTG9jYXRpb24odGhpcy5fcHJvZ3JhbSxcInVfcHJvamVjdGlvblwiKSksdGhpcy5fdmVydGV4QXJyYXlPYmplY3Q9bi5jcmVhdGVWZXJ0ZXhBcnJheSgpLG4uYmluZFZlcnRleEFycmF5KHRoaXMuX3ZlcnRleEFycmF5T2JqZWN0KTt2YXIgYT1uZXcgRmxvYXQzMkFycmF5KFswLDAsMSwwLDAsMSwxLDFdKSxsPW4uY3JlYXRlQnVmZmVyKCk7bi5iaW5kQnVmZmVyKG4uQVJSQVlfQlVGRkVSLGwpLG4uYnVmZmVyRGF0YShuLkFSUkFZX0JVRkZFUixhLG4uU1RBVElDX0RSQVcpLG4uZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMyksbi52ZXJ0ZXhBdHRyaWJQb2ludGVyKDMsMix0aGlzLl9nbC5GTE9BVCwhMSwwLDApO3ZhciBoPW5ldyBVaW50OEFycmF5KFswLDEsMywwLDIsM10pLGM9bi5jcmVhdGVCdWZmZXIoKTtuLmJpbmRCdWZmZXIobi5FTEVNRU5UX0FSUkFZX0JVRkZFUixjKSxuLmJ1ZmZlckRhdGEobi5FTEVNRU5UX0FSUkFZX0JVRkZFUixoLG4uU1RBVElDX0RSQVcpLHRoaXMuX2F0dHJpYnV0ZXNCdWZmZXI9ci50aHJvd0lmRmFsc3kobi5jcmVhdGVCdWZmZXIoKSksbi5iaW5kQnVmZmVyKG4uQVJSQVlfQlVGRkVSLHRoaXMuX2F0dHJpYnV0ZXNCdWZmZXIpLG4uZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCksbi52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsMixuLkZMT0FULCExLHMsMCksbi52ZXJ0ZXhBdHRyaWJEaXZpc29yKDAsMSksbi5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKSxuLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwyLG4uRkxPQVQsITEscywyKkZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCksbi52ZXJ0ZXhBdHRyaWJEaXZpc29yKDEsMSksbi5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgyKSxuLnZlcnRleEF0dHJpYlBvaW50ZXIoMiw0LG4uRkxPQVQsITEscyw0KkZsb2F0MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCksbi52ZXJ0ZXhBdHRyaWJEaXZpc29yKDIsMSksdGhpcy5fdXBkYXRlQ2FjaGVkQ29sb3JzKCl9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dsO3QudXNlUHJvZ3JhbSh0aGlzLl9wcm9ncmFtKSx0LmJpbmRWZXJ0ZXhBcnJheSh0aGlzLl92ZXJ0ZXhBcnJheU9iamVjdCksdC51bmlmb3JtTWF0cml4NGZ2KHRoaXMuX3Byb2plY3Rpb25Mb2NhdGlvbiwhMSxyLlBST0pFQ1RJT05fTUFUUklYKSx0LnVuaWZvcm0yZih0aGlzLl9yZXNvbHV0aW9uTG9jYXRpb24sdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSx0LmJpbmRCdWZmZXIodC5BUlJBWV9CVUZGRVIsdGhpcy5fYXR0cmlidXRlc0J1ZmZlciksdC5idWZmZXJEYXRhKHQuQVJSQVlfQlVGRkVSLHRoaXMuX3ZlcnRpY2VzLmF0dHJpYnV0ZXMsdC5EWU5BTUlDX0RSQVcpLHQuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKHRoaXMuX2dsLlRSSUFOR0xFUyw2LHQuVU5TSUdORURfQllURSwwLHRoaXMuX3ZlcnRpY2VzLmNvdW50KSx0LmJpbmRCdWZmZXIodC5BUlJBWV9CVUZGRVIsdGhpcy5fYXR0cmlidXRlc0J1ZmZlciksdC5idWZmZXJEYXRhKHQuQVJSQVlfQlVGRkVSLHRoaXMuX3ZlcnRpY2VzLnNlbGVjdGlvbix0LkRZTkFNSUNfRFJBVyksdC5kcmF3RWxlbWVudHNJbnN0YW5jZWQodGhpcy5fZ2wuVFJJQU5HTEVTLDYsdC5VTlNJR05FRF9CWVRFLDAsMyl9LHQucHJvdG90eXBlLm9uUmVzaXplPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlVmlld3BvcnRSZWN0YW5nbGUoKX0sdC5wcm90b3R5cGUuc2V0Q29sb3JzPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlQ2FjaGVkQ29sb3JzKCksdGhpcy5fdXBkYXRlVmlld3BvcnRSZWN0YW5nbGUoKX0sdC5wcm90b3R5cGUuX3VwZGF0ZUNhY2hlZENvbG9ycz1mdW5jdGlvbigpe3RoaXMuX2JnRmxvYXQ9dGhpcy5fY29sb3JUb0Zsb2F0MzJBcnJheSh0aGlzLl9jb2xvcnMuYmFja2dyb3VuZCksdGhpcy5fc2VsZWN0aW9uRmxvYXQ9dGhpcy5fY29sb3JUb0Zsb2F0MzJBcnJheSh0aGlzLl9jb2xvcnMuc2VsZWN0aW9uT3BhcXVlKX0sdC5wcm90b3R5cGUuX3VwZGF0ZVZpZXdwb3J0UmVjdGFuZ2xlPWZ1bmN0aW9uKCl7dGhpcy5fYWRkUmVjdGFuZ2xlRmxvYXQodGhpcy5fdmVydGljZXMuYXR0cmlidXRlcywwLDAsMCx0aGlzLl90ZXJtaW5hbC5jb2xzKnRoaXMuX2RpbWVuc2lvbnMuc2NhbGVkQ2VsbFdpZHRoLHRoaXMuX3Rlcm1pbmFsLnJvd3MqdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDZWxsSGVpZ2h0LHRoaXMuX2JnRmxvYXQpfSx0LnByb3RvdHlwZS51cGRhdGVTZWxlY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGVybWluYWw7aWYodC5oYXNTZWxlY3Rpb24paWYodC5jb2x1bW5TZWxlY3RNb2RlKXt2YXIgaT10LnN0YXJ0Q29sLHI9dC5lbmRDb2wtaSxuPXQudmlld3BvcnRDYXBwZWRFbmRSb3ctdC52aWV3cG9ydENhcHBlZFN0YXJ0Um93KzE7dGhpcy5fYWRkUmVjdGFuZ2xlRmxvYXQodGhpcy5fdmVydGljZXMuc2VsZWN0aW9uLDAsaSp0aGlzLl9kaW1lbnNpb25zLnNjYWxlZENlbGxXaWR0aCx0LnZpZXdwb3J0Q2FwcGVkU3RhcnRSb3cqdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDZWxsSGVpZ2h0LHIqdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDZWxsV2lkdGgsbip0aGlzLl9kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQsdGhpcy5fc2VsZWN0aW9uRmxvYXQpLG8uZmlsbCh0aGlzLl92ZXJ0aWNlcy5zZWxlY3Rpb24sMCw4KX1lbHNle2k9dC52aWV3cG9ydFN0YXJ0Um93PT09dC52aWV3cG9ydENhcHBlZFN0YXJ0Um93P3Quc3RhcnRDb2w6MDt2YXIgcz10LnZpZXdwb3J0Q2FwcGVkU3RhcnRSb3c9PT10LnZpZXdwb3J0RW5kUm93P3QuZW5kQ29sOmUuY29sczt0aGlzLl9hZGRSZWN0YW5nbGVGbG9hdCh0aGlzLl92ZXJ0aWNlcy5zZWxlY3Rpb24sMCxpKnRoaXMuX2RpbWVuc2lvbnMuc2NhbGVkQ2VsbFdpZHRoLHQudmlld3BvcnRDYXBwZWRTdGFydFJvdyp0aGlzLl9kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQsKHMtaSkqdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDZWxsV2lkdGgsdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDZWxsSGVpZ2h0LHRoaXMuX3NlbGVjdGlvbkZsb2F0KTt2YXIgYT1NYXRoLm1heCh0LnZpZXdwb3J0Q2FwcGVkRW5kUm93LXQudmlld3BvcnRDYXBwZWRTdGFydFJvdy0xLDApO2lmKHRoaXMuX2FkZFJlY3RhbmdsZUZsb2F0KHRoaXMuX3ZlcnRpY2VzLnNlbGVjdGlvbiw4LDAsKHQudmlld3BvcnRDYXBwZWRTdGFydFJvdysxKSp0aGlzLl9kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQsZS5jb2xzKnRoaXMuX2RpbWVuc2lvbnMuc2NhbGVkQ2VsbFdpZHRoLGEqdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDZWxsSGVpZ2h0LHRoaXMuX3NlbGVjdGlvbkZsb2F0KSx0LnZpZXdwb3J0Q2FwcGVkU3RhcnRSb3chPT10LnZpZXdwb3J0Q2FwcGVkRW5kUm93KXt2YXIgbD10LnZpZXdwb3J0RW5kUm93PT09dC52aWV3cG9ydENhcHBlZEVuZFJvdz90LmVuZENvbDplLmNvbHM7dGhpcy5fYWRkUmVjdGFuZ2xlRmxvYXQodGhpcy5fdmVydGljZXMuc2VsZWN0aW9uLDE2LDAsdC52aWV3cG9ydENhcHBlZEVuZFJvdyp0aGlzLl9kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQsbCp0aGlzLl9kaW1lbnNpb25zLnNjYWxlZENlbGxXaWR0aCx0aGlzLl9kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQsdGhpcy5fc2VsZWN0aW9uRmxvYXQpfWVsc2Ugby5maWxsKHRoaXMuX3ZlcnRpY2VzLnNlbGVjdGlvbiwwLDE2KX1lbHNlIG8uZmlsbCh0aGlzLl92ZXJ0aWNlcy5zZWxlY3Rpb24sMCwwKX0sdC5wcm90b3R5cGUudXBkYXRlQmFja2dyb3VuZHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX3Rlcm1pbmFsLGk9dGhpcy5fdmVydGljZXMscj0xLG89MDtvPGUucm93cztvKyspe2Zvcih2YXIgcz0tMSxhPTAsbD0wLGg9ITEsYz0wO2M8ZS5jb2xzO2MrKyl7dmFyIF89KG8qZS5jb2xzK2MpKm4uUkVOREVSX01PREVMX0lORElDSUVTX1BFUl9DRUxMLGQ9dC5jZWxsc1tfK24uUkVOREVSX01PREVMX0JHX09GRlNFVF0sdT10LmNlbGxzW18rbi5SRU5ERVJfTU9ERUxfRkdfT0ZGU0VUXSxmPSEhKDY3MTA4ODY0JnUpO2lmKGQhPT1hfHx1IT09bCYmKGh8fGYpKXtpZigwIT09YXx8aCYmMCE9PWwpe3ZhciBwPTgqcisrO3RoaXMuX3VwZGF0ZVJlY3RhbmdsZShpLHAsbCxhLHMsYyxvKX1zPWMsYT1kLGw9dSxoPWZ9fSgwIT09YXx8aCYmMCE9PWwpJiYocD04KnIrKyx0aGlzLl91cGRhdGVSZWN0YW5nbGUoaSxwLGwsYSxzLGUuY29scyxvKSl9aS5jb3VudD1yfSx0LnByb3RvdHlwZS5fdXBkYXRlUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSxpLG8sbixzLGEpe3ZhciBsO2lmKDY3MTA4ODY0Jmkpc3dpdGNoKDUwMzMxNjQ4Jmkpe2Nhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpsPXRoaXMuX2NvbG9ycy5hbnNpWzI1NSZpXS5yZ2JhO2JyZWFrO2Nhc2UgNTAzMzE2NDg6bD0oMTY3NzcyMTUmaSk8PDg7YnJlYWs7Y2FzZSAwOmRlZmF1bHQ6bD10aGlzLl9jb2xvcnMuZm9yZWdyb3VuZC5yZ2JhfWVsc2Ugc3dpdGNoKDUwMzMxNjQ4Jm8pe2Nhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpsPXRoaXMuX2NvbG9ycy5hbnNpWzI1NSZvXS5yZ2JhO2JyZWFrO2Nhc2UgNTAzMzE2NDg6bD0oMTY3NzcyMTUmbyk8PDg7YnJlYWs7Y2FzZSAwOmRlZmF1bHQ6bD10aGlzLl9jb2xvcnMuYmFja2dyb3VuZC5yZ2JhfXQuYXR0cmlidXRlcy5sZW5ndGg8ZSs0JiYodC5hdHRyaWJ1dGVzPXIuZXhwYW5kRmxvYXQzMkFycmF5KHQuYXR0cmlidXRlcyx0aGlzLl90ZXJtaW5hbC5yb3dzKnRoaXMuX3Rlcm1pbmFsLmNvbHMqOCkpO3ZhciBoPW4qdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDZWxsV2lkdGgsYz1hKnRoaXMuX2RpbWVuc2lvbnMuc2NhbGVkQ2VsbEhlaWdodCxfPShsPj4yNCYyNTUpLzI1NSxkPShsPj4xNiYyNTUpLzI1NSx1PShsPj44JjI1NSkvMjU1O3RoaXMuX2FkZFJlY3RhbmdsZSh0LmF0dHJpYnV0ZXMsZSxoLGMsKHMtbikqdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDZWxsV2lkdGgsdGhpcy5fZGltZW5zaW9ucy5zY2FsZWRDZWxsSGVpZ2h0LF8sZCx1LDEpfSx0LnByb3RvdHlwZS5fYWRkUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSxpLHIsbyxuLHMsYSxsLGgpe3RbZV09aSx0W2UrMV09cix0W2UrMl09byx0W2UrM109bix0W2UrNF09cyx0W2UrNV09YSx0W2UrNl09bCx0W2UrN109aH0sdC5wcm90b3R5cGUuX2FkZFJlY3RhbmdsZUZsb2F0PWZ1bmN0aW9uKHQsZSxpLHIsbyxuLHMpe3RbZV09aSx0W2UrMV09cix0W2UrMl09byx0W2UrM109bix0W2UrNF09c1swXSx0W2UrNV09c1sxXSx0W2UrNl09c1syXSx0W2UrN109c1szXX0sdC5wcm90b3R5cGUuX2NvbG9yVG9GbG9hdDMyQXJyYXk9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoWyh0LnJnYmE+PjI0JjI1NSkvMjU1LCh0LnJnYmE+PjE2JjI1NSkvMjU1LCh0LnJnYmE+PjgmMjU1KS8yNTUsKDI1NSZ0LnJnYmEpLzI1NV0pfSx0fSgpO2UuUmVjdGFuZ2xlUmVuZGVyZXI9YX0sMzEwOih0LGUsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLlJlbmRlck1vZGVsPWUuQ09NQklORURfQ0hBUl9CSVRfTUFTSz1lLlJFTkRFUl9NT0RFTF9GR19PRkZTRVQ9ZS5SRU5ERVJfTU9ERUxfQkdfT0ZGU0VUPWUuUkVOREVSX01PREVMX0lORElDSUVTX1BFUl9DRUxMPXZvaWQgMDt2YXIgcj1pKDQ1NSk7ZS5SRU5ERVJfTU9ERUxfSU5ESUNJRVNfUEVSX0NFTEw9MyxlLlJFTkRFUl9NT0RFTF9CR19PRkZTRVQ9MSxlLlJFTkRFUl9NT0RFTF9GR19PRkZTRVQ9MixlLkNPTUJJTkVEX0NIQVJfQklUX01BU0s9MjE0NzQ4MzY0ODt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmNlbGxzPW5ldyBVaW50MzJBcnJheSgwKSx0aGlzLmxpbmVMZW5ndGhzPW5ldyBVaW50MzJBcnJheSgwKSx0aGlzLnNlbGVjdGlvbj17aGFzU2VsZWN0aW9uOiExLGNvbHVtblNlbGVjdE1vZGU6ITEsdmlld3BvcnRTdGFydFJvdzowLHZpZXdwb3J0RW5kUm93OjAsdmlld3BvcnRDYXBwZWRTdGFydFJvdzowLHZpZXdwb3J0Q2FwcGVkRW5kUm93OjAsc3RhcnRDb2w6MCxlbmRDb2w6MH19cmV0dXJuIHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0LGkpe3ZhciByPXQqaSplLlJFTkRFUl9NT0RFTF9JTkRJQ0lFU19QRVJfQ0VMTDtyIT09dGhpcy5jZWxscy5sZW5ndGgmJih0aGlzLmNlbGxzPW5ldyBVaW50MzJBcnJheShyKSx0aGlzLmxpbmVMZW5ndGhzPW5ldyBVaW50MzJBcnJheShpKSl9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7ci5maWxsKHRoaXMuY2VsbHMsMCwwKSxyLmZpbGwodGhpcy5saW5lTGVuZ3RocywwLDApfSx0LnByb3RvdHlwZS5jbGVhclNlbGVjdGlvbj1mdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uLmhhc1NlbGVjdGlvbj0hMSx0aGlzLnNlbGVjdGlvbi52aWV3cG9ydFN0YXJ0Um93PTAsdGhpcy5zZWxlY3Rpb24udmlld3BvcnRFbmRSb3c9MCx0aGlzLnNlbGVjdGlvbi52aWV3cG9ydENhcHBlZFN0YXJ0Um93PTAsdGhpcy5zZWxlY3Rpb24udmlld3BvcnRDYXBwZWRFbmRSb3c9MCx0aGlzLnNlbGVjdGlvbi5zdGFydENvbD0wLHRoaXMuc2VsZWN0aW9uLmVuZENvbD0wfSx0fSgpO2UuUmVuZGVyTW9kZWw9b30sMjU5Oih0LGUpPT57ZnVuY3Rpb24gaSh0LGUsaSl7dm9pZCAwPT09ZSYmKGU9MCksdm9pZCAwPT09aSYmKGk9dC5sZW5ndGgpLGU8MCYmKGU9KHQubGVuZ3RoK2UpJXQubGVuZ3RoKSxpPWk+PXQubGVuZ3RoP3QubGVuZ3RoOih0Lmxlbmd0aCtpKSV0Lmxlbmd0aCxlPU1hdGgubWluKGUsaSk7Zm9yKHZhciByPW5ldyB0LmNvbnN0cnVjdG9yKGktZSksbz0wO288aS1lOysrbylyW29dPXRbbytlXTtyZXR1cm4gcn1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLnNsaWNlRmFsbGJhY2s9ZS5zbGljZT12b2lkIDAsZS5zbGljZT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQuc2xpY2U/dC5zbGljZShlLHIpOmkodCxlLHIpfSxlLnNsaWNlRmFsbGJhY2s9aX0sNzk1Oih0LGUsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLldlYmdsQWRkb249dm9pZCAwO3ZhciByPWkoNjY2KSxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9wcmVzZXJ2ZURyYXdpbmdCdWZmZXI9dH1yZXR1cm4gdC5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24odCl7aWYoIXQuZWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYWN0aXZhdGUgV2ViZ2xBZGRvbiBiZWZvcmUgVGVybWluYWwub3BlblwiKTt0aGlzLl90ZXJtaW5hbD10O3ZhciBlPXQuX2NvcmUuX3JlbmRlclNlcnZpY2UsaT10Ll9jb3JlLl9jb2xvck1hbmFnZXIuY29sb3JzO3RoaXMuX3JlbmRlcmVyPW5ldyByLldlYmdsUmVuZGVyZXIodCxpLHRoaXMuX3ByZXNlcnZlRHJhd2luZ0J1ZmZlciksZS5zZXRSZW5kZXJlcih0aGlzLl9yZW5kZXJlcil9LHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtpZighdGhpcy5fdGVybWluYWwpdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGRpc3Bvc2UgV2ViZ2xBZGRvbiBiZWNhdXNlIGl0IGlzIGFjdGl2YXRlZFwiKTt2YXIgdD10aGlzLl90ZXJtaW5hbC5fY29yZS5fcmVuZGVyU2VydmljZTt0LnNldFJlbmRlcmVyKHRoaXMuX3Rlcm1pbmFsLl9jb3JlLl9jcmVhdGVSZW5kZXJlcigpKSx0Lm9uUmVzaXplKHRoaXMuX3Rlcm1pbmFsLmNvbHMsdGhpcy5fdGVybWluYWwucm93cyksdGhpcy5fcmVuZGVyZXI9dm9pZCAwfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJ0ZXh0dXJlQXRsYXNcIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIG51bGw9PT0odD10aGlzLl9yZW5kZXJlcil8fHZvaWQgMD09PXQ/dm9pZCAwOnQudGV4dHVyZUF0bGFzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNsZWFyVGV4dHVyZUF0bGFzPWZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuX3JlbmRlcmVyKXx8dm9pZCAwPT09dHx8dC5jbGVhckNoYXJBdGxhcygpfSx0fSgpO2UuV2ViZ2xBZGRvbj1vfSw2NjY6ZnVuY3Rpb24odCxlLGkpe3ZhciByLG89dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJih0W2ldPWVbaV0pfSkodCxlKX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fXIodCxlKSx0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihpLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgaSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLldlYmdsUmVuZGVyZXI9dm9pZCAwO3ZhciBuPWkoOTY1KSxzPWkoNzMzKSxhPWkoNDYxKSxsPWkoNzEzKSxoPWkoMzQ0KSxjPWkoMzEwKSxfPWkoODU5KSxkPWkoODU1KSx1PWkoMzQ1KSxmPWkoNzgyKSxwPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxpLHIpe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztvLl90ZXJtaW5hbD1lLG8uX2NvbG9ycz1pLG8uX21vZGVsPW5ldyBjLlJlbmRlck1vZGVsLG8uX3dvcmtDZWxsPW5ldyBmLkNlbGxEYXRhLG8uX29uUmVxdWVzdFJlZHJhdz1uZXcgdS5FdmVudEVtaXR0ZXIsby5fY29yZT1vLl90ZXJtaW5hbC5fY29yZSxvLl9yZW5kZXJMYXllcnM9W25ldyBzLkxpbmtSZW5kZXJMYXllcihvLl9jb3JlLnNjcmVlbkVsZW1lbnQsMixvLl9jb2xvcnMsby5fY29yZSksbmV3IGEuQ3Vyc29yUmVuZGVyTGF5ZXIoby5fY29yZS5zY3JlZW5FbGVtZW50LDMsby5fY29sb3JzLG8uX29uUmVxdWVzdFJlZHJhdyldLG8uZGltZW5zaW9ucz17c2NhbGVkQ2hhcldpZHRoOjAsc2NhbGVkQ2hhckhlaWdodDowLHNjYWxlZENlbGxXaWR0aDowLHNjYWxlZENlbGxIZWlnaHQ6MCxzY2FsZWRDaGFyTGVmdDowLHNjYWxlZENoYXJUb3A6MCxzY2FsZWRDYW52YXNXaWR0aDowLHNjYWxlZENhbnZhc0hlaWdodDowLGNhbnZhc1dpZHRoOjAsY2FudmFzSGVpZ2h0OjAsYWN0dWFsQ2VsbFdpZHRoOjAsYWN0dWFsQ2VsbEhlaWdodDowfSxvLl9kZXZpY2VQaXhlbFJhdGlvPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLG8uX3VwZGF0ZURpbWVuc2lvbnMoKSxvLl9jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTt2YXIgbD17YW50aWFsaWFzOiExLGRlcHRoOiExLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjpyfTtpZihvLl9nbD1vLl9jYW52YXMuZ2V0Q29udGV4dChcIndlYmdsMlwiLGwpLCFvLl9nbCl0aHJvdyBuZXcgRXJyb3IoXCJXZWJHTDIgbm90IHN1cHBvcnRlZCBcIitvLl9nbCk7cmV0dXJuIG8uX2NvcmUuc2NyZWVuRWxlbWVudC5hcHBlbmRDaGlsZChvLl9jYW52YXMpLG8uX3JlY3RhbmdsZVJlbmRlcmVyPW5ldyBoLlJlY3RhbmdsZVJlbmRlcmVyKG8uX3Rlcm1pbmFsLG8uX2NvbG9ycyxvLl9nbCxvLmRpbWVuc2lvbnMpLG8uX2dseXBoUmVuZGVyZXI9bmV3IG4uR2x5cGhSZW5kZXJlcihvLl90ZXJtaW5hbCxvLl9jb2xvcnMsby5fZ2wsby5kaW1lbnNpb25zKSxvLm9uQ2hhclNpemVDaGFuZ2VkKCksby5faXNBdHRhY2hlZD1kb2N1bWVudC5ib2R5LmNvbnRhaW5zKG8uX2NvcmUuc2NyZWVuRWxlbWVudCksb31yZXR1cm4gbyhlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uUmVxdWVzdFJlZHJhd1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25SZXF1ZXN0UmVkcmF3LmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJMYXllcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGlzcG9zZSgpfSkpLHRoaXMuX2NvcmUuc2NyZWVuRWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9jYW52YXMpLHQucHJvdG90eXBlLmRpc3Bvc2UuY2FsbCh0aGlzKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwidGV4dHVyZUF0bGFzXCIse2dldDpmdW5jdGlvbigpe3ZhciB0O3JldHVybiBudWxsPT09KHQ9dGhpcy5fY2hhckF0bGFzKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jYWNoZUNhbnZhc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5zZXRDb2xvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9jb2xvcnM9dCx0aGlzLl9yZW5kZXJMYXllcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5zZXRDb2xvcnMoZS5fdGVybWluYWwsZS5fY29sb3JzKSx0LnJlc2V0KGUuX3Rlcm1pbmFsKX0pKSx0aGlzLl9yZWN0YW5nbGVSZW5kZXJlci5zZXRDb2xvcnMoKSx0aGlzLl9nbHlwaFJlbmRlcmVyLnNldENvbG9ycygpLHRoaXMuX3JlZnJlc2hDaGFyQXRsYXMoKSx0aGlzLl9tb2RlbC5jbGVhcigpfSxlLnByb3RvdHlwZS5vbkRldmljZVBpeGVsUmF0aW9DaGFuZ2U9ZnVuY3Rpb24oKXt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvIT09d2luZG93LmRldmljZVBpeGVsUmF0aW8mJih0aGlzLl9kZXZpY2VQaXhlbFJhdGlvPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLHRoaXMub25SZXNpemUodGhpcy5fdGVybWluYWwuY29scyx0aGlzLl90ZXJtaW5hbC5yb3dzKSl9LGUucHJvdG90eXBlLm9uUmVzaXplPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt0aGlzLl91cGRhdGVEaW1lbnNpb25zKCksdGhpcy5fbW9kZWwucmVzaXplKHRoaXMuX3Rlcm1pbmFsLmNvbHMsdGhpcy5fdGVybWluYWwucm93cyksdGhpcy5fcmVuZGVyTGF5ZXJzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlc2l6ZShpLl90ZXJtaW5hbCxpLmRpbWVuc2lvbnMpfSkpLHRoaXMuX2NhbnZhcy53aWR0aD10aGlzLmRpbWVuc2lvbnMuc2NhbGVkQ2FudmFzV2lkdGgsdGhpcy5fY2FudmFzLmhlaWdodD10aGlzLmRpbWVuc2lvbnMuc2NhbGVkQ2FudmFzSGVpZ2h0LHRoaXMuX2NhbnZhcy5zdHlsZS53aWR0aD10aGlzLmRpbWVuc2lvbnMuY2FudmFzV2lkdGgrXCJweFwiLHRoaXMuX2NhbnZhcy5zdHlsZS5oZWlnaHQ9dGhpcy5kaW1lbnNpb25zLmNhbnZhc0hlaWdodCtcInB4XCIsdGhpcy5fY29yZS5zY3JlZW5FbGVtZW50LnN0eWxlLndpZHRoPXRoaXMuZGltZW5zaW9ucy5jYW52YXNXaWR0aCtcInB4XCIsdGhpcy5fY29yZS5zY3JlZW5FbGVtZW50LnN0eWxlLmhlaWdodD10aGlzLmRpbWVuc2lvbnMuY2FudmFzSGVpZ2h0K1wicHhcIix0aGlzLl9yZWN0YW5nbGVSZW5kZXJlci5vblJlc2l6ZSgpLHRoaXMuX21vZGVsLnNlbGVjdGlvbi5oYXNTZWxlY3Rpb24mJnRoaXMuX3JlY3RhbmdsZVJlbmRlcmVyLnVwZGF0ZVNlbGVjdGlvbih0aGlzLl9tb2RlbC5zZWxlY3Rpb24pLHRoaXMuX2dseXBoUmVuZGVyZXIuc2V0RGltZW5zaW9ucyh0aGlzLmRpbWVuc2lvbnMpLHRoaXMuX2dseXBoUmVuZGVyZXIub25SZXNpemUoKSx0aGlzLl9yZWZyZXNoQ2hhckF0bGFzKCksdGhpcy5fbW9kZWwuY2xlYXIoKX0sZS5wcm90b3R5cGUub25DaGFyU2l6ZUNoYW5nZWQ9ZnVuY3Rpb24oKXt0aGlzLm9uUmVzaXplKHRoaXMuX3Rlcm1pbmFsLmNvbHMsdGhpcy5fdGVybWluYWwucm93cyl9LGUucHJvdG90eXBlLm9uQmx1cj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fcmVuZGVyTGF5ZXJzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9uQmx1cih0Ll90ZXJtaW5hbCl9KSl9LGUucHJvdG90eXBlLm9uRm9jdXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX3JlbmRlckxheWVycy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5vbkZvY3VzKHQuX3Rlcm1pbmFsKX0pKX0sZS5wcm90b3R5cGUub25TZWxlY3Rpb25DaGFuZ2VkPWZ1bmN0aW9uKHQsZSxpKXt2YXIgcj10aGlzO3RoaXMuX3JlbmRlckxheWVycy5mb3JFYWNoKChmdW5jdGlvbihvKXtyZXR1cm4gby5vblNlbGVjdGlvbkNoYW5nZWQoci5fdGVybWluYWwsdCxlLGkpfSkpLHRoaXMuX3VwZGF0ZVNlbGVjdGlvbk1vZGVsKHQsZSxpKSx0aGlzLl9vblJlcXVlc3RSZWRyYXcuZmlyZSh7c3RhcnQ6MCxlbmQ6dGhpcy5fdGVybWluYWwucm93cy0xfSl9LGUucHJvdG90eXBlLm9uQ3Vyc29yTW92ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fcmVuZGVyTGF5ZXJzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9uQ3Vyc29yTW92ZSh0Ll90ZXJtaW5hbCl9KSl9LGUucHJvdG90eXBlLm9uT3B0aW9uc0NoYW5nZWQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX3JlbmRlckxheWVycy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5vbk9wdGlvbnNDaGFuZ2VkKHQuX3Rlcm1pbmFsKX0pKSx0aGlzLl91cGRhdGVEaW1lbnNpb25zKCksdGhpcy5fcmVmcmVzaENoYXJBdGxhcygpfSxlLnByb3RvdHlwZS5fcmVmcmVzaENoYXJBdGxhcz1mdW5jdGlvbigpe2lmKHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDaGFyV2lkdGg8PTAmJnRoaXMuZGltZW5zaW9ucy5zY2FsZWRDaGFySGVpZ2h0PD0wKXRoaXMuX2lzQXR0YWNoZWQ9ITE7ZWxzZXt2YXIgdD1sLmFjcXVpcmVDaGFyQXRsYXModGhpcy5fdGVybWluYWwsdGhpcy5fY29sb3JzLHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDaGFyV2lkdGgsdGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJIZWlnaHQpO2lmKCEoXCJnZXRSYXN0ZXJpemVkR2x5cGhcImluIHQpKXRocm93IG5ldyBFcnJvcihcIlRoZSB3ZWJnbCByZW5kZXJlciBvbmx5IHdvcmtzIHdpdGggdGhlIHdlYmdsIGNoYXIgYXRsYXNcIik7dGhpcy5fY2hhckF0bGFzPXQsdGhpcy5fY2hhckF0bGFzLndhcm1VcCgpLHRoaXMuX2dseXBoUmVuZGVyZXIuc2V0QXRsYXModGhpcy5fY2hhckF0bGFzKX19LGUucHJvdG90eXBlLmNsZWFyQ2hhckF0bGFzPWZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuX2NoYXJBdGxhcyl8fHZvaWQgMD09PXR8fHQuY2xlYXJUZXh0dXJlKCksdGhpcy5fbW9kZWwuY2xlYXIoKSx0aGlzLl91cGRhdGVNb2RlbCgwLHRoaXMuX3Rlcm1pbmFsLnJvd3MtMSksdGhpcy5fb25SZXF1ZXN0UmVkcmF3LmZpcmUoe3N0YXJ0OjAsZW5kOnRoaXMuX3Rlcm1pbmFsLnJvd3MtMX0pfSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fcmVuZGVyTGF5ZXJzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc2V0KHQuX3Rlcm1pbmFsKX0pKX0sZS5wcm90b3R5cGUucmVnaXN0ZXJDaGFyYWN0ZXJKb2luZXI9ZnVuY3Rpb24odCl7cmV0dXJuLTF9LGUucHJvdG90eXBlLmRlcmVnaXN0ZXJDaGFyYWN0ZXJKb2luZXI9ZnVuY3Rpb24odCl7cmV0dXJuITF9LGUucHJvdG90eXBlLnJlbmRlclJvd3M9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO2lmKCF0aGlzLl9pc0F0dGFjaGVkKXtpZighKGRvY3VtZW50LmJvZHkuY29udGFpbnModGhpcy5fY29yZS5zY3JlZW5FbGVtZW50KSYmdGhpcy5fY29yZS5fY2hhclNpemVTZXJ2aWNlLndpZHRoJiZ0aGlzLl9jb3JlLl9jaGFyU2l6ZVNlcnZpY2UuaGVpZ2h0KSlyZXR1cm47dGhpcy5fdXBkYXRlRGltZW5zaW9ucygpLHRoaXMuX3JlZnJlc2hDaGFyQXRsYXMoKSx0aGlzLl9pc0F0dGFjaGVkPSEwfXRoaXMuX3JlbmRlckxheWVycy5mb3JFYWNoKChmdW5jdGlvbihyKXtyZXR1cm4gci5vbkdyaWRDaGFuZ2VkKGkuX3Rlcm1pbmFsLHQsZSl9KSksdGhpcy5fZ2x5cGhSZW5kZXJlci5iZWdpbkZyYW1lKCkmJih0aGlzLl9tb2RlbC5jbGVhcigpLHRoaXMuX3VwZGF0ZVNlbGVjdGlvbk1vZGVsKHZvaWQgMCx2b2lkIDApKSx0aGlzLl91cGRhdGVNb2RlbCh0LGUpLHRoaXMuX3JlY3RhbmdsZVJlbmRlcmVyLnJlbmRlcigpLHRoaXMuX2dseXBoUmVuZGVyZXIucmVuZGVyKHRoaXMuX21vZGVsLHRoaXMuX21vZGVsLnNlbGVjdGlvbi5oYXNTZWxlY3Rpb24pfSxlLnByb3RvdHlwZS5fdXBkYXRlTW9kZWw9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9dGhpcy5fY29yZSxyPXQ7cjw9ZTtyKyspe3ZhciBvPXIraS5idWZmZXIueWRpc3Asbj1pLmJ1ZmZlci5saW5lcy5nZXQobyk7dGhpcy5fbW9kZWwubGluZUxlbmd0aHNbcl09MDtmb3IodmFyIHM9MDtzPGkuY29scztzKyspe24ubG9hZENlbGwocyx0aGlzLl93b3JrQ2VsbCk7dmFyIGE9dGhpcy5fd29ya0NlbGwuZ2V0Q2hhcnMoKSxsPXRoaXMuX3dvcmtDZWxsLmdldENvZGUoKSxoPShyKmkuY29scytzKSpjLlJFTkRFUl9NT0RFTF9JTkRJQ0lFU19QRVJfQ0VMTDtsIT09ZC5OVUxMX0NFTExfQ09ERSYmKHRoaXMuX21vZGVsLmxpbmVMZW5ndGhzW3JdPXMrMSksdGhpcy5fbW9kZWwuY2VsbHNbaF09PT1sJiZ0aGlzLl9tb2RlbC5jZWxsc1toK2MuUkVOREVSX01PREVMX0JHX09GRlNFVF09PT10aGlzLl93b3JrQ2VsbC5iZyYmdGhpcy5fbW9kZWwuY2VsbHNbaCtjLlJFTkRFUl9NT0RFTF9GR19PRkZTRVRdPT09dGhpcy5fd29ya0NlbGwuZmd8fChhLmxlbmd0aD4xJiYobHw9Yy5DT01CSU5FRF9DSEFSX0JJVF9NQVNLKSx0aGlzLl9tb2RlbC5jZWxsc1toXT1sLHRoaXMuX21vZGVsLmNlbGxzW2grYy5SRU5ERVJfTU9ERUxfQkdfT0ZGU0VUXT10aGlzLl93b3JrQ2VsbC5iZyx0aGlzLl9tb2RlbC5jZWxsc1toK2MuUkVOREVSX01PREVMX0ZHX09GRlNFVF09dGhpcy5fd29ya0NlbGwuZmcsdGhpcy5fZ2x5cGhSZW5kZXJlci51cGRhdGVDZWxsKHMscixsLHRoaXMuX3dvcmtDZWxsLmJnLHRoaXMuX3dvcmtDZWxsLmZnLGEpKX19dGhpcy5fcmVjdGFuZ2xlUmVuZGVyZXIudXBkYXRlQmFja2dyb3VuZHModGhpcy5fbW9kZWwpLHRoaXMuX21vZGVsLnNlbGVjdGlvbi5oYXNTZWxlY3Rpb24mJnRoaXMuX2dseXBoUmVuZGVyZXIudXBkYXRlU2VsZWN0aW9uKHRoaXMuX21vZGVsKX0sZS5wcm90b3R5cGUuX3VwZGF0ZVNlbGVjdGlvbk1vZGVsPWZ1bmN0aW9uKHQsZSxpKXt2b2lkIDA9PT1pJiYoaT0hMSk7dmFyIHI9dGhpcy5fdGVybWluYWw7aWYoIXR8fCFlfHx0WzBdPT09ZVswXSYmdFsxXT09PWVbMV0pcmV0dXJuIHRoaXMuX21vZGVsLmNsZWFyU2VsZWN0aW9uKCksdm9pZCB0aGlzLl9yZWN0YW5nbGVSZW5kZXJlci51cGRhdGVTZWxlY3Rpb24odGhpcy5fbW9kZWwuc2VsZWN0aW9uKTt2YXIgbz10WzFdLXIuYnVmZmVyLmFjdGl2ZS52aWV3cG9ydFksbj1lWzFdLXIuYnVmZmVyLmFjdGl2ZS52aWV3cG9ydFkscz1NYXRoLm1heChvLDApLGE9TWF0aC5taW4obixyLnJvd3MtMSk7aWYocz49ci5yb3dzfHxhPDApcmV0dXJuIHRoaXMuX21vZGVsLmNsZWFyU2VsZWN0aW9uKCksdm9pZCB0aGlzLl9yZWN0YW5nbGVSZW5kZXJlci51cGRhdGVTZWxlY3Rpb24odGhpcy5fbW9kZWwuc2VsZWN0aW9uKTt0aGlzLl9tb2RlbC5zZWxlY3Rpb24uaGFzU2VsZWN0aW9uPSEwLHRoaXMuX21vZGVsLnNlbGVjdGlvbi5jb2x1bW5TZWxlY3RNb2RlPWksdGhpcy5fbW9kZWwuc2VsZWN0aW9uLnZpZXdwb3J0U3RhcnRSb3c9byx0aGlzLl9tb2RlbC5zZWxlY3Rpb24udmlld3BvcnRFbmRSb3c9bix0aGlzLl9tb2RlbC5zZWxlY3Rpb24udmlld3BvcnRDYXBwZWRTdGFydFJvdz1zLHRoaXMuX21vZGVsLnNlbGVjdGlvbi52aWV3cG9ydENhcHBlZEVuZFJvdz1hLHRoaXMuX21vZGVsLnNlbGVjdGlvbi5zdGFydENvbD10WzBdLHRoaXMuX21vZGVsLnNlbGVjdGlvbi5lbmRDb2w9ZVswXSx0aGlzLl9yZWN0YW5nbGVSZW5kZXJlci51cGRhdGVTZWxlY3Rpb24odGhpcy5fbW9kZWwuc2VsZWN0aW9uKX0sZS5wcm90b3R5cGUuX3VwZGF0ZURpbWVuc2lvbnM9ZnVuY3Rpb24oKXt0aGlzLl9jb3JlLl9jaGFyU2l6ZVNlcnZpY2Uud2lkdGgmJnRoaXMuX2NvcmUuX2NoYXJTaXplU2VydmljZS5oZWlnaHQmJih0aGlzLmRpbWVuc2lvbnMuc2NhbGVkQ2hhcldpZHRoPU1hdGguZmxvb3IodGhpcy5fY29yZS5fY2hhclNpemVTZXJ2aWNlLndpZHRoKnRoaXMuX2RldmljZVBpeGVsUmF0aW8pLHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDaGFySGVpZ2h0PU1hdGguY2VpbCh0aGlzLl9jb3JlLl9jaGFyU2l6ZVNlcnZpY2UuaGVpZ2h0KnRoaXMuX2RldmljZVBpeGVsUmF0aW8pLHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDZWxsSGVpZ2h0PU1hdGguZmxvb3IodGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJIZWlnaHQqdGhpcy5fdGVybWluYWwuZ2V0T3B0aW9uKFwibGluZUhlaWdodFwiKSksdGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJUb3A9MT09PXRoaXMuX3Rlcm1pbmFsLmdldE9wdGlvbihcImxpbmVIZWlnaHRcIik/MDpNYXRoLnJvdW5kKCh0aGlzLmRpbWVuc2lvbnMuc2NhbGVkQ2VsbEhlaWdodC10aGlzLmRpbWVuc2lvbnMuc2NhbGVkQ2hhckhlaWdodCkvMiksdGhpcy5kaW1lbnNpb25zLnNjYWxlZENlbGxXaWR0aD10aGlzLmRpbWVuc2lvbnMuc2NhbGVkQ2hhcldpZHRoK01hdGgucm91bmQodGhpcy5fdGVybWluYWwuZ2V0T3B0aW9uKFwibGV0dGVyU3BhY2luZ1wiKSksdGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJMZWZ0PU1hdGguZmxvb3IodGhpcy5fdGVybWluYWwuZ2V0T3B0aW9uKFwibGV0dGVyU3BhY2luZ1wiKS8yKSx0aGlzLmRpbWVuc2lvbnMuc2NhbGVkQ2FudmFzSGVpZ2h0PXRoaXMuX3Rlcm1pbmFsLnJvd3MqdGhpcy5kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQsdGhpcy5kaW1lbnNpb25zLnNjYWxlZENhbnZhc1dpZHRoPXRoaXMuX3Rlcm1pbmFsLmNvbHMqdGhpcy5kaW1lbnNpb25zLnNjYWxlZENlbGxXaWR0aCx0aGlzLmRpbWVuc2lvbnMuY2FudmFzSGVpZ2h0PU1hdGgucm91bmQodGhpcy5kaW1lbnNpb25zLnNjYWxlZENhbnZhc0hlaWdodC90aGlzLl9kZXZpY2VQaXhlbFJhdGlvKSx0aGlzLmRpbWVuc2lvbnMuY2FudmFzV2lkdGg9TWF0aC5yb3VuZCh0aGlzLmRpbWVuc2lvbnMuc2NhbGVkQ2FudmFzV2lkdGgvdGhpcy5fZGV2aWNlUGl4ZWxSYXRpbyksdGhpcy5kaW1lbnNpb25zLmFjdHVhbENlbGxIZWlnaHQ9dGhpcy5kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQvdGhpcy5fZGV2aWNlUGl4ZWxSYXRpbyx0aGlzLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoPXRoaXMuZGltZW5zaW9ucy5zY2FsZWRDZWxsV2lkdGgvdGhpcy5fZGV2aWNlUGl4ZWxSYXRpbyl9LGV9KF8uRGlzcG9zYWJsZSk7ZS5XZWJnbFJlbmRlcmVyPXB9LDM4MToodCxlKT0+e2Z1bmN0aW9uIGkodCxlLGkpe3ZhciBvPXIodC5jcmVhdGVTaGFkZXIoZSkpO2lmKHQuc2hhZGVyU291cmNlKG8saSksdC5jb21waWxlU2hhZGVyKG8pLHQuZ2V0U2hhZGVyUGFyYW1ldGVyKG8sdC5DT01QSUxFX1NUQVRVUykpcmV0dXJuIG87Y29uc29sZS5lcnJvcih0LmdldFNoYWRlckluZm9Mb2cobykpLHQuZGVsZXRlU2hhZGVyKG8pfWZ1bmN0aW9uIHIodCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKFwidmFsdWUgbXVzdCBub3QgYmUgZmFsc3lcIik7cmV0dXJuIHR9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS50aHJvd0lmRmFsc3k9ZS5leHBhbmRGbG9hdDMyQXJyYXk9ZS5jcmVhdGVTaGFkZXI9ZS5jcmVhdGVQcm9ncmFtPWUuUFJPSkVDVElPTl9NQVRSSVg9dm9pZCAwLGUuUFJPSkVDVElPTl9NQVRSSVg9bmV3IEZsb2F0MzJBcnJheShbMiwwLDAsMCwwLC0yLDAsMCwwLDAsMSwwLC0xLDEsMCwxXSksZS5jcmVhdGVQcm9ncmFtPWZ1bmN0aW9uKHQsZSxvKXt2YXIgbj1yKHQuY3JlYXRlUHJvZ3JhbSgpKTtpZih0LmF0dGFjaFNoYWRlcihuLHIoaSh0LHQuVkVSVEVYX1NIQURFUixlKSkpLHQuYXR0YWNoU2hhZGVyKG4scihpKHQsdC5GUkFHTUVOVF9TSEFERVIsbykpKSx0LmxpbmtQcm9ncmFtKG4pLHQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihuLHQuTElOS19TVEFUVVMpKXJldHVybiBuO2NvbnNvbGUuZXJyb3IodC5nZXRQcm9ncmFtSW5mb0xvZyhuKSksdC5kZWxldGVQcm9ncmFtKG4pfSxlLmNyZWF0ZVNoYWRlcj1pLGUuZXhwYW5kRmxvYXQzMkFycmF5PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPU1hdGgubWluKDIqdC5sZW5ndGgsZSkscj1uZXcgRmxvYXQzMkFycmF5KGkpLG89MDtvPHQubGVuZ3RoO28rKylyW29dPXRbb107cmV0dXJuIHJ9LGUudGhyb3dJZkZhbHN5PXJ9LDcxMzoodCxlLGkpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS5yZW1vdmVUZXJtaW5hbEZyb21DYWNoZT1lLmFjcXVpcmVDaGFyQXRsYXM9dm9pZCAwO3ZhciByPWkoNDMzKSxvPWkoMTY3KSxuPVtdO2UuYWNxdWlyZUNoYXJBdGxhcz1mdW5jdGlvbih0LGUsaSxzKXtmb3IodmFyIGE9ci5nZW5lcmF0ZUNvbmZpZyhpLHMsdCxlKSxsPTA7bDxuLmxlbmd0aDtsKyspe3ZhciBoPShjPW5bbF0pLm93bmVkQnkuaW5kZXhPZih0KTtpZihoPj0wKXtpZihyLmNvbmZpZ0VxdWFscyhjLmNvbmZpZyxhKSlyZXR1cm4gYy5hdGxhczsxPT09Yy5vd25lZEJ5Lmxlbmd0aD8oYy5hdGxhcy5kaXNwb3NlKCksbi5zcGxpY2UobCwxKSk6Yy5vd25lZEJ5LnNwbGljZShoLDEpO2JyZWFrfX1mb3IobD0wO2w8bi5sZW5ndGg7bCsrKXt2YXIgYz1uW2xdO2lmKHIuY29uZmlnRXF1YWxzKGMuY29uZmlnLGEpKXJldHVybiBjLm93bmVkQnkucHVzaCh0KSxjLmF0bGFzfXZhciBfPXthdGxhczpuZXcgby5XZWJnbENoYXJBdGxhcyhkb2N1bWVudCxhKSxjb25maWc6YSxvd25lZEJ5Olt0XX07cmV0dXJuIG4ucHVzaChfKSxfLmF0bGFzfSxlLnJlbW92ZVRlcm1pbmFsRnJvbUNhY2hlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8bi5sZW5ndGg7ZSsrKXt2YXIgaT1uW2VdLm93bmVkQnkuaW5kZXhPZih0KTtpZigtMSE9PWkpezE9PT1uW2VdLm93bmVkQnkubGVuZ3RoPyhuW2VdLmF0bGFzLmRpc3Bvc2UoKSxuLnNwbGljZShlLDEpKTpuW2VdLm93bmVkQnkuc3BsaWNlKGksMSk7YnJlYWt9fX19LDQzMzoodCxlKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuaXMyNTZDb2xvcj1lLmNvbmZpZ0VxdWFscz1lLmdlbmVyYXRlQ29uZmlnPXZvaWQgMDt2YXIgaT17Y3NzOlwiXCIscmdiYTowfTtlLmdlbmVyYXRlQ29uZmlnPWZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBuPXtmb3JlZ3JvdW5kOm8uZm9yZWdyb3VuZCxiYWNrZ3JvdW5kOm8uYmFja2dyb3VuZCxjdXJzb3I6aSxjdXJzb3JBY2NlbnQ6aSxzZWxlY3Rpb25UcmFuc3BhcmVudDppLHNlbGVjdGlvbk9wYXF1ZTppLGFuc2k6by5hbnNpLnNsaWNlKCksY29udHJhc3RDYWNoZTpvLmNvbnRyYXN0Q2FjaGV9O3JldHVybntkZXZpY2VQaXhlbFJhdGlvOndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLHNjYWxlZENoYXJXaWR0aDp0LHNjYWxlZENoYXJIZWlnaHQ6ZSxmb250RmFtaWx5OnIuZ2V0T3B0aW9uKFwiZm9udEZhbWlseVwiKSxmb250U2l6ZTpyLmdldE9wdGlvbihcImZvbnRTaXplXCIpLGZvbnRXZWlnaHQ6ci5nZXRPcHRpb24oXCJmb250V2VpZ2h0XCIpLGZvbnRXZWlnaHRCb2xkOnIuZ2V0T3B0aW9uKFwiZm9udFdlaWdodEJvbGRcIiksYWxsb3dUcmFuc3BhcmVuY3k6ci5nZXRPcHRpb24oXCJhbGxvd1RyYW5zcGFyZW5jeVwiKSxkcmF3Qm9sZFRleHRJbkJyaWdodENvbG9yczpyLmdldE9wdGlvbihcImRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzXCIpLG1pbmltdW1Db250cmFzdFJhdGlvOnIuZ2V0T3B0aW9uKFwibWluaW11bUNvbnRyYXN0UmF0aW9cIiksY29sb3JzOm59fSxlLmNvbmZpZ0VxdWFscz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT0wO2k8dC5jb2xvcnMuYW5zaS5sZW5ndGg7aSsrKWlmKHQuY29sb3JzLmFuc2lbaV0ucmdiYSE9PWUuY29sb3JzLmFuc2lbaV0ucmdiYSlyZXR1cm4hMTtyZXR1cm4gdC5kZXZpY2VQaXhlbFJhdGlvPT09ZS5kZXZpY2VQaXhlbFJhdGlvJiZ0LmZvbnRGYW1pbHk9PT1lLmZvbnRGYW1pbHkmJnQuZm9udFNpemU9PT1lLmZvbnRTaXplJiZ0LmZvbnRXZWlnaHQ9PT1lLmZvbnRXZWlnaHQmJnQuZm9udFdlaWdodEJvbGQ9PT1lLmZvbnRXZWlnaHRCb2xkJiZ0LmFsbG93VHJhbnNwYXJlbmN5PT09ZS5hbGxvd1RyYW5zcGFyZW5jeSYmdC5zY2FsZWRDaGFyV2lkdGg9PT1lLnNjYWxlZENoYXJXaWR0aCYmdC5zY2FsZWRDaGFySGVpZ2h0PT09ZS5zY2FsZWRDaGFySGVpZ2h0JiZ0LmRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzPT09ZS5kcmF3Qm9sZFRleHRJbkJyaWdodENvbG9ycyYmdC5taW5pbXVtQ29udHJhc3RSYXRpbz09PWUubWluaW11bUNvbnRyYXN0UmF0aW8mJnQuY29sb3JzLmZvcmVncm91bmQ9PT1lLmNvbG9ycy5mb3JlZ3JvdW5kJiZ0LmNvbG9ycy5iYWNrZ3JvdW5kPT09ZS5jb2xvcnMuYmFja2dyb3VuZH0sZS5pczI1NkNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiAxNjc3NzIxNj09KDUwMzMxNjQ4JnQpfHwzMzU1NDQzMj09KDUwMzMxNjQ4JnQpfX0sMTY3Oih0LGUsaSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLldlYmdsQ2hhckF0bGFzPXZvaWQgMDt2YXIgcj1pKDQ5OSksbz1pKDg1NSksbj1pKDM4MSkscz1pKDE0NyksYT1pKDc0MiksbD0xMDI0LGg9MTAyNCxjPU1hdGguZmxvb3IoODE5LjIpLF89e2NzczpcInJnYmEoMCwgMCwgMCwgMClcIixyZ2JhOjB9LGQ9e29mZnNldDp7eDowLHk6MH0sdGV4dHVyZVBvc2l0aW9uOnt4OjAseTowfSx0ZXh0dXJlUG9zaXRpb25DbGlwU3BhY2U6e3g6MCx5OjB9LHNpemU6e3g6MCx5OjB9LHNpemVDbGlwU3BhY2U6e3g6MCx5OjB9fSx1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX2NvbmZpZz1lLHRoaXMuX2RpZFdhcm1VcD0hMSx0aGlzLl9jYWNoZU1hcD17fSx0aGlzLl9jYWNoZU1hcENvbWJpbmVkPXt9LHRoaXMuX2N1cnJlbnRSb3dZPTAsdGhpcy5fY3VycmVudFJvd1g9MCx0aGlzLl9jdXJyZW50Um93SGVpZ2h0PTAsdGhpcy5oYXNDYW52YXNDaGFuZ2VkPSExLHRoaXMuX3dvcmtCb3VuZGluZ0JveD17dG9wOjAsbGVmdDowLGJvdHRvbTowLHJpZ2h0OjB9LHRoaXMuX3dvcmtBdHRyaWJ1dGVEYXRhPW5ldyBzLkF0dHJpYnV0ZURhdGEsdGhpcy5jYWNoZUNhbnZhcz10LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIiksdGhpcy5jYWNoZUNhbnZhcy53aWR0aD1sLHRoaXMuY2FjaGVDYW52YXMuaGVpZ2h0PWgsdGhpcy5fY2FjaGVDdHg9bi50aHJvd0lmRmFsc3kodGhpcy5jYWNoZUNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIix7YWxwaGE6ITB9KSksdGhpcy5fdG1wQ2FudmFzPXQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKSx0aGlzLl90bXBDYW52YXMud2lkdGg9Mip0aGlzLl9jb25maWcuc2NhbGVkQ2hhcldpZHRoKzQsdGhpcy5fdG1wQ2FudmFzLmhlaWdodD10aGlzLl9jb25maWcuc2NhbGVkQ2hhckhlaWdodCs0LHRoaXMuX3RtcEN0eD1uLnRocm93SWZGYWxzeSh0aGlzLl90bXBDYW52YXMuZ2V0Q29udGV4dChcIjJkXCIse2FscGhhOnRoaXMuX2NvbmZpZy5hbGxvd1RyYW5zcGFyZW5jeX0pKX1yZXR1cm4gdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuY2FjaGVDYW52YXMucGFyZW50RWxlbWVudCYmdGhpcy5jYWNoZUNhbnZhcy5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuY2FjaGVDYW52YXMpfSx0LnByb3RvdHlwZS53YXJtVXA9ZnVuY3Rpb24oKXt0aGlzLl9kaWRXYXJtVXB8fCh0aGlzLl9kb1dhcm1VcCgpLHRoaXMuX2RpZFdhcm1VcD0hMCl9LHQucHJvdG90eXBlLl9kb1dhcm1VcD1mdW5jdGlvbigpe2Zvcih2YXIgdCxlLGk9MzM7aTwxMjY7aSsrKXt2YXIgcj10aGlzLl9kcmF3VG9DYWNoZShpLG8uREVGQVVMVF9DT0xPUixvLkRFRkFVTFRfQ09MT1IpO3RoaXMuX2NhY2hlTWFwW2ldPSgodD17fSlbby5ERUZBVUxUX0NPTE9SXT0oKGU9e30pW28uREVGQVVMVF9DT0xPUl09cixlKSx0KX19LHQucHJvdG90eXBlLmJlZ2luRnJhbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3VycmVudFJvd1k+YyYmKHRoaXMuY2xlYXJUZXh0dXJlKCksdGhpcy53YXJtVXAoKSwhMCl9LHQucHJvdG90eXBlLmNsZWFyVGV4dHVyZT1mdW5jdGlvbigpezA9PT10aGlzLl9jdXJyZW50Um93WCYmMD09PXRoaXMuX2N1cnJlbnRSb3dZfHwodGhpcy5fY2FjaGVDdHguY2xlYXJSZWN0KDAsMCxsLGgpLHRoaXMuX2NhY2hlTWFwPXt9LHRoaXMuX2NhY2hlTWFwQ29tYmluZWQ9e30sdGhpcy5fY3VycmVudFJvd0hlaWdodD0wLHRoaXMuX2N1cnJlbnRSb3dYPTAsdGhpcy5fY3VycmVudFJvd1k9MCx0aGlzLl9kaWRXYXJtVXA9ITEpfSx0LnByb3RvdHlwZS5nZXRSYXN0ZXJpemVkR2x5cGhDb21iaW5lZENoYXI9ZnVuY3Rpb24odCxlLGkpe3ZhciByLG89dGhpcy5fY2FjaGVNYXBDb21iaW5lZFt0XTtvfHwobz17fSx0aGlzLl9jYWNoZU1hcENvbWJpbmVkW3RdPW8pO3ZhciBuPW9bZV07cmV0dXJuIG4mJihyPW5baV0pLHJ8fChyPXRoaXMuX2RyYXdUb0NhY2hlKHQsZSxpKSxvW2VdfHwob1tlXT17fSksb1tlXVtpXT1yKSxyfSx0LnByb3RvdHlwZS5nZXRSYXN0ZXJpemVkR2x5cGg9ZnVuY3Rpb24odCxlLGkpe3ZhciByLG89dGhpcy5fY2FjaGVNYXBbdF07b3x8KG89e30sdGhpcy5fY2FjaGVNYXBbdF09byk7dmFyIG49b1tlXTtyZXR1cm4gbiYmKHI9bltpXSkscnx8KHI9dGhpcy5fZHJhd1RvQ2FjaGUodCxlLGkpLG9bZV18fChvW2VdPXt9KSxvW2VdW2ldPXIpLHJ9LHQucHJvdG90eXBlLl9nZXRDb2xvckZyb21BbnNpSW5kZXg9ZnVuY3Rpb24odCl7aWYodD49dGhpcy5fY29uZmlnLmNvbG9ycy5hbnNpLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJObyBjb2xvciBmb3VuZCBmb3IgaWR4IFwiK3QpO3JldHVybiB0aGlzLl9jb25maWcuY29sb3JzLmFuc2lbdF19LHQucHJvdG90eXBlLl9nZXRCYWNrZ3JvdW5kQ29sb3I9ZnVuY3Rpb24odCxlLGkpe2lmKHRoaXMuX2NvbmZpZy5hbGxvd1RyYW5zcGFyZW5jeSlyZXR1cm4gXztzd2l0Y2godCl7Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnJldHVybiB0aGlzLl9nZXRDb2xvckZyb21BbnNpSW5kZXgoZSk7Y2FzZSA1MDMzMTY0ODp2YXIgcj1zLkF0dHJpYnV0ZURhdGEudG9Db2xvclJHQihlKTtyZXR1cm57cmdiYTplPDw4LGNzczpcIiNcIitmKHJbMF0pK2YoclsxXSkrZihyWzJdKX07Y2FzZSAwOmRlZmF1bHQ6cmV0dXJuIGk/dGhpcy5fY29uZmlnLmNvbG9ycy5mb3JlZ3JvdW5kOnRoaXMuX2NvbmZpZy5jb2xvcnMuYmFja2dyb3VuZH19LHQucHJvdG90eXBlLl9nZXRGb3JlZ3JvdW5kQ3NzPWZ1bmN0aW9uKHQsZSxpLHIsbyxuLGwsaCl7dmFyIGM9dGhpcy5fZ2V0TWluaW11bUNvbnRyYXN0Q3NzKHQsZSxpLHIsbyxuLGwsaCk7aWYoYylyZXR1cm4gYztzd2l0Y2gobyl7Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnJldHVybiB0aGlzLl9jb25maWcuZHJhd0JvbGRUZXh0SW5CcmlnaHRDb2xvcnMmJmgmJm48OCYmKG4rPTgpLHRoaXMuX2dldENvbG9yRnJvbUFuc2lJbmRleChuKS5jc3M7Y2FzZSA1MDMzMTY0ODp2YXIgXz1zLkF0dHJpYnV0ZURhdGEudG9Db2xvclJHQihuKTtyZXR1cm4gYS5jaGFubmVscy50b0NzcyhfWzBdLF9bMV0sX1syXSk7Y2FzZSAwOmRlZmF1bHQ6aWYobCl7dmFyIGQ9dGhpcy5fY29uZmlnLmNvbG9ycy5iYWNrZ3JvdW5kLmNzcztyZXR1cm4gOT09PWQubGVuZ3RoP2Quc3Vic3RyKDAsNyk6ZH1yZXR1cm4gdGhpcy5fY29uZmlnLmNvbG9ycy5mb3JlZ3JvdW5kLmNzc319LHQucHJvdG90eXBlLl9yZXNvbHZlQmFja2dyb3VuZFJnYmE9ZnVuY3Rpb24odCxlLGkpe3N3aXRjaCh0KXtjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6cmV0dXJuIHRoaXMuX2dldENvbG9yRnJvbUFuc2lJbmRleChlKS5yZ2JhO2Nhc2UgNTAzMzE2NDg6cmV0dXJuIGU8PDg7Y2FzZSAwOmRlZmF1bHQ6cmV0dXJuIGk/dGhpcy5fY29uZmlnLmNvbG9ycy5mb3JlZ3JvdW5kLnJnYmE6dGhpcy5fY29uZmlnLmNvbG9ycy5iYWNrZ3JvdW5kLnJnYmF9fSx0LnByb3RvdHlwZS5fcmVzb2x2ZUZvcmVncm91bmRSZ2JhPWZ1bmN0aW9uKHQsZSxpLHIpe3N3aXRjaCh0KXtjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6cmV0dXJuIHRoaXMuX2NvbmZpZy5kcmF3Qm9sZFRleHRJbkJyaWdodENvbG9ycyYmciYmZTw4JiYoZSs9OCksdGhpcy5fZ2V0Q29sb3JGcm9tQW5zaUluZGV4KGUpLnJnYmE7Y2FzZSA1MDMzMTY0ODpyZXR1cm4gZTw8ODtjYXNlIDA6ZGVmYXVsdDpyZXR1cm4gaT90aGlzLl9jb25maWcuY29sb3JzLmJhY2tncm91bmQucmdiYTp0aGlzLl9jb25maWcuY29sb3JzLmZvcmVncm91bmQucmdiYX19LHQucHJvdG90eXBlLl9nZXRNaW5pbXVtQ29udHJhc3RDc3M9ZnVuY3Rpb24odCxlLGkscixvLG4scyxsKXtpZigxIT09dGhpcy5fY29uZmlnLm1pbmltdW1Db250cmFzdFJhdGlvKXt2YXIgaD10aGlzLl9jb25maWcuY29sb3JzLmNvbnRyYXN0Q2FjaGUuZ2V0Q3NzKHQscik7aWYodm9pZCAwIT09aClyZXR1cm4gaHx8dm9pZCAwO3ZhciBjPXRoaXMuX3Jlc29sdmVCYWNrZ3JvdW5kUmdiYShlLGkscyksXz10aGlzLl9yZXNvbHZlRm9yZWdyb3VuZFJnYmEobyxuLHMsbCksZD1hLnJnYmEuZW5zdXJlQ29udHJhc3RSYXRpbyhjLF8sdGhpcy5fY29uZmlnLm1pbmltdW1Db250cmFzdFJhdGlvKTtpZihkKXt2YXIgdT1hLmNoYW5uZWxzLnRvQ3NzKGQ+PjI0JjI1NSxkPj4xNiYyNTUsZD4+OCYyNTUpO3JldHVybiB0aGlzLl9jb25maWcuY29sb3JzLmNvbnRyYXN0Q2FjaGUuc2V0Q3NzKHQscix1KSx1fXRoaXMuX2NvbmZpZy5jb2xvcnMuY29udHJhc3RDYWNoZS5zZXRDc3ModCxyLG51bGwpfX0sdC5wcm90b3R5cGUuX2RyYXdUb0NhY2hlPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1cIm51bWJlclwiPT10eXBlb2YgdD9TdHJpbmcuZnJvbUNoYXJDb2RlKHQpOnQ7aWYodGhpcy5oYXNDYW52YXNDaGFuZ2VkPSEwLHRoaXMuX3RtcEN0eC5zYXZlKCksdGhpcy5fd29ya0F0dHJpYnV0ZURhdGEuZmc9aSx0aGlzLl93b3JrQXR0cmlidXRlRGF0YS5iZz1lLHRoaXMuX3dvcmtBdHRyaWJ1dGVEYXRhLmlzSW52aXNpYmxlKCkpcmV0dXJuIGQ7dmFyIG49ISF0aGlzLl93b3JrQXR0cmlidXRlRGF0YS5pc0JvbGQoKSxzPSEhdGhpcy5fd29ya0F0dHJpYnV0ZURhdGEuaXNJbnZlcnNlKCksYT0hIXRoaXMuX3dvcmtBdHRyaWJ1dGVEYXRhLmlzRGltKCksYz0hIXRoaXMuX3dvcmtBdHRyaWJ1dGVEYXRhLmlzSXRhbGljKCksXz10aGlzLl93b3JrQXR0cmlidXRlRGF0YS5nZXRGZ0NvbG9yKCksdT10aGlzLl93b3JrQXR0cmlidXRlRGF0YS5nZXRGZ0NvbG9yTW9kZSgpLGY9dGhpcy5fd29ya0F0dHJpYnV0ZURhdGEuZ2V0QmdDb2xvcigpLHA9dGhpcy5fd29ya0F0dHJpYnV0ZURhdGEuZ2V0QmdDb2xvck1vZGUoKTtpZihzKXt2YXIgZz1fO189ZixmPWc7dmFyIHY9dTt1PXAscD12fXZhciBDPXRoaXMuX2dldEJhY2tncm91bmRDb2xvcihwLGYscyk7dGhpcy5fdG1wQ3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj1cImNvcHlcIix0aGlzLl90bXBDdHguZmlsbFN0eWxlPUMuY3NzLHRoaXMuX3RtcEN0eC5maWxsUmVjdCgwLDAsdGhpcy5fdG1wQ2FudmFzLndpZHRoLHRoaXMuX3RtcENhbnZhcy5oZWlnaHQpLHRoaXMuX3RtcEN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249XCJzb3VyY2Utb3ZlclwiO3ZhciBtPW4/dGhpcy5fY29uZmlnLmZvbnRXZWlnaHRCb2xkOnRoaXMuX2NvbmZpZy5mb250V2VpZ2h0LHk9Yz9cIml0YWxpY1wiOlwiXCI7dGhpcy5fdG1wQ3R4LmZvbnQ9eStcIiBcIittK1wiIFwiK3RoaXMuX2NvbmZpZy5mb250U2l6ZSp0aGlzLl9jb25maWcuZGV2aWNlUGl4ZWxSYXRpbytcInB4IFwiK3RoaXMuX2NvbmZpZy5mb250RmFtaWx5LHRoaXMuX3RtcEN0eC50ZXh0QmFzZWxpbmU9XCJtaWRkbGVcIix0aGlzLl90bXBDdHguZmlsbFN0eWxlPXRoaXMuX2dldEZvcmVncm91bmRDc3MoZSxwLGYsaSx1LF8scyxuKSxhJiYodGhpcy5fdG1wQ3R4Lmdsb2JhbEFscGhhPXIuRElNX09QQUNJVFkpLHRoaXMuX3RtcEN0eC5maWxsVGV4dChvLDIsMit0aGlzLl9jb25maWcuc2NhbGVkQ2hhckhlaWdodC8yKSx0aGlzLl90bXBDdHgucmVzdG9yZSgpO3ZhciBSPXRoaXMuX3RtcEN0eC5nZXRJbWFnZURhdGEoMCwwLHRoaXMuX3RtcENhbnZhcy53aWR0aCx0aGlzLl90bXBDYW52YXMuaGVpZ2h0KTtpZihmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT0hMCxyPWUucmdiYT4+PjI0LG89ZS5yZ2JhPj4+MTYmMjU1LG49ZS5yZ2JhPj4+OCYyNTUscz0wO3M8dC5kYXRhLmxlbmd0aDtzKz00KXQuZGF0YVtzXT09PXImJnQuZGF0YVtzKzFdPT09byYmdC5kYXRhW3MrMl09PT1uP3QuZGF0YVtzKzNdPTA6aT0hMTtyZXR1cm4gaX0oUixDKSlyZXR1cm4gZDt2YXIgYj10aGlzLl9maW5kR2x5cGhCb3VuZGluZ0JveChSLHRoaXMuX3dvcmtCb3VuZGluZ0JveCksdz10aGlzLl9jbGlwSW1hZ2VEYXRhKFIsdGhpcy5fd29ya0JvdW5kaW5nQm94KTtyZXR1cm4gdGhpcy5fY3VycmVudFJvd1grdGhpcy5fY29uZmlnLnNjYWxlZENoYXJXaWR0aD5sJiYodGhpcy5fY3VycmVudFJvd1g9MCx0aGlzLl9jdXJyZW50Um93WSs9dGhpcy5fY3VycmVudFJvd0hlaWdodCx0aGlzLl9jdXJyZW50Um93SGVpZ2h0PTApLGIudGV4dHVyZVBvc2l0aW9uLng9dGhpcy5fY3VycmVudFJvd1gsYi50ZXh0dXJlUG9zaXRpb24ueT10aGlzLl9jdXJyZW50Um93WSxiLnRleHR1cmVQb3NpdGlvbkNsaXBTcGFjZS54PXRoaXMuX2N1cnJlbnRSb3dYL2wsYi50ZXh0dXJlUG9zaXRpb25DbGlwU3BhY2UueT10aGlzLl9jdXJyZW50Um93WS9oLHRoaXMuX2N1cnJlbnRSb3dIZWlnaHQ9TWF0aC5tYXgodGhpcy5fY3VycmVudFJvd0hlaWdodCxiLnNpemUueSksdGhpcy5fY3VycmVudFJvd1grPWIuc2l6ZS54LHRoaXMuX2NhY2hlQ3R4LnB1dEltYWdlRGF0YSh3LGIudGV4dHVyZVBvc2l0aW9uLngsYi50ZXh0dXJlUG9zaXRpb24ueSksYn0sdC5wcm90b3R5cGUuX2ZpbmRHbHlwaEJvdW5kaW5nQm94PWZ1bmN0aW9uKHQsZSl7ZS50b3A9MDtmb3IodmFyIGk9ITEscj0wO3I8dGhpcy5fdG1wQ2FudmFzLmhlaWdodDtyKyspe2Zvcih2YXIgbz0wO288dGhpcy5fdG1wQ2FudmFzLndpZHRoO28rKyl7dmFyIG49cip0aGlzLl90bXBDYW52YXMud2lkdGgqNCs0Km8rMztpZigwIT09dC5kYXRhW25dKXtlLnRvcD1yLGk9ITA7YnJlYWt9fWlmKGkpYnJlYWt9Zm9yKGUubGVmdD0wLGk9ITEsbz0wO288dGhpcy5fdG1wQ2FudmFzLndpZHRoO28rKyl7Zm9yKHI9MDtyPHRoaXMuX3RtcENhbnZhcy5oZWlnaHQ7cisrKWlmKG49cip0aGlzLl90bXBDYW52YXMud2lkdGgqNCs0Km8rMywwIT09dC5kYXRhW25dKXtlLmxlZnQ9byxpPSEwO2JyZWFrfWlmKGkpYnJlYWt9Zm9yKGUucmlnaHQ9dGhpcy5fdG1wQ2FudmFzLndpZHRoLGk9ITEsbz10aGlzLl90bXBDYW52YXMud2lkdGgtMTtvPj0wO28tLSl7Zm9yKHI9MDtyPHRoaXMuX3RtcENhbnZhcy5oZWlnaHQ7cisrKWlmKG49cip0aGlzLl90bXBDYW52YXMud2lkdGgqNCs0Km8rMywwIT09dC5kYXRhW25dKXtlLnJpZ2h0PW8saT0hMDticmVha31pZihpKWJyZWFrfWZvcihlLmJvdHRvbT10aGlzLl90bXBDYW52YXMuaGVpZ2h0LGk9ITEscj10aGlzLl90bXBDYW52YXMuaGVpZ2h0LTE7cj49MDtyLS0pe2ZvcihvPTA7bzx0aGlzLl90bXBDYW52YXMud2lkdGg7bysrKWlmKG49cip0aGlzLl90bXBDYW52YXMud2lkdGgqNCs0Km8rMywwIT09dC5kYXRhW25dKXtlLmJvdHRvbT1yLGk9ITA7YnJlYWt9aWYoaSlicmVha31yZXR1cm57dGV4dHVyZVBvc2l0aW9uOnt4OjAseTowfSx0ZXh0dXJlUG9zaXRpb25DbGlwU3BhY2U6e3g6MCx5OjB9LHNpemU6e3g6ZS5yaWdodC1lLmxlZnQrMSx5OmUuYm90dG9tLWUudG9wKzF9LHNpemVDbGlwU3BhY2U6e3g6KGUucmlnaHQtZS5sZWZ0KzEpL2wseTooZS5ib3R0b20tZS50b3ArMSkvaH0sb2Zmc2V0Ont4OjItZS5sZWZ0LHk6Mi1lLnRvcH19fSx0LnByb3RvdHlwZS5fY2xpcEltYWdlRGF0YT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1lLnJpZ2h0LWUubGVmdCsxLHI9ZS5ib3R0b20tZS50b3ArMSxvPW5ldyBVaW50OENsYW1wZWRBcnJheShpKnIqNCksbj1lLnRvcDtuPD1lLmJvdHRvbTtuKyspZm9yKHZhciBzPWUubGVmdDtzPD1lLnJpZ2h0O3MrKyl7dmFyIGE9bip0aGlzLl90bXBDYW52YXMud2lkdGgqNCs0KnMsbD0obi1lLnRvcCkqaSo0KzQqKHMtZS5sZWZ0KTtvW2xdPXQuZGF0YVthXSxvW2wrMV09dC5kYXRhW2ErMV0sb1tsKzJdPXQuZGF0YVthKzJdLG9bbCszXT10LmRhdGFbYSszXX1yZXR1cm4gbmV3IEltYWdlRGF0YShvLGkscil9LHR9KCk7ZnVuY3Rpb24gZih0KXt2YXIgZT10LnRvU3RyaW5nKDE2KTtyZXR1cm4gZS5sZW5ndGg8Mj9cIjBcIitlOmV9ZS5XZWJnbENoYXJBdGxhcz11fSw1OTI6KHQsZSxpKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuQmFzZVJlbmRlckxheWVyPXZvaWQgMDt2YXIgcj1pKDcxMyksbz1pKDM4MSksbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLGkscixvKXt0aGlzLl9jb250YWluZXI9dCx0aGlzLl9hbHBoYT1yLHRoaXMuX2NvbG9ycz1vLHRoaXMuX3NjYWxlZENoYXJXaWR0aD0wLHRoaXMuX3NjYWxlZENoYXJIZWlnaHQ9MCx0aGlzLl9zY2FsZWRDZWxsV2lkdGg9MCx0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0PTAsdGhpcy5fc2NhbGVkQ2hhckxlZnQ9MCx0aGlzLl9zY2FsZWRDaGFyVG9wPTAsdGhpcy5fY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIiksdGhpcy5fY2FudmFzLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1cIitlK1wiLWxheWVyXCIpLHRoaXMuX2NhbnZhcy5zdHlsZS56SW5kZXg9aS50b1N0cmluZygpLHRoaXMuX2luaXRDYW52YXMoKSx0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fY2FudmFzKX1yZXR1cm4gdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLl9jYW52YXMpLHRoaXMuX2NoYXJBdGxhcyYmdGhpcy5fY2hhckF0bGFzLmRpc3Bvc2UoKX0sdC5wcm90b3R5cGUuX2luaXRDYW52YXM9ZnVuY3Rpb24oKXt0aGlzLl9jdHg9by50aHJvd0lmRmFsc3kodGhpcy5fY2FudmFzLmdldENvbnRleHQoXCIyZFwiLHthbHBoYTp0aGlzLl9hbHBoYX0pKSx0aGlzLl9hbHBoYXx8dGhpcy5fY2xlYXJBbGwoKX0sdC5wcm90b3R5cGUub25PcHRpb25zQ2hhbmdlZD1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLm9uQmx1cj1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLm9uRm9jdXM9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5vbkN1cnNvck1vdmU9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5vbkdyaWRDaGFuZ2VkPWZ1bmN0aW9uKHQsZSxpKXt9LHQucHJvdG90eXBlLm9uU2VsZWN0aW9uQ2hhbmdlZD1mdW5jdGlvbih0LGUsaSxyKXt2b2lkIDA9PT1yJiYocj0hMSl9LHQucHJvdG90eXBlLnNldENvbG9ycz1mdW5jdGlvbih0LGUpe3RoaXMuX3JlZnJlc2hDaGFyQXRsYXModCxlKX0sdC5wcm90b3R5cGUuX3NldFRyYW5zcGFyZW5jeT1mdW5jdGlvbih0LGUpe2lmKGUhPT10aGlzLl9hbHBoYSl7dmFyIGk9dGhpcy5fY2FudmFzO3RoaXMuX2FscGhhPWUsdGhpcy5fY2FudmFzPXRoaXMuX2NhbnZhcy5jbG9uZU5vZGUoKSx0aGlzLl9pbml0Q2FudmFzKCksdGhpcy5fY29udGFpbmVyLnJlcGxhY2VDaGlsZCh0aGlzLl9jYW52YXMsaSksdGhpcy5fcmVmcmVzaENoYXJBdGxhcyh0LHRoaXMuX2NvbG9ycyksdGhpcy5vbkdyaWRDaGFuZ2VkKHQsMCx0LnJvd3MtMSl9fSx0LnByb3RvdHlwZS5fcmVmcmVzaENoYXJBdGxhcz1mdW5jdGlvbih0LGUpe3RoaXMuX3NjYWxlZENoYXJXaWR0aDw9MCYmdGhpcy5fc2NhbGVkQ2hhckhlaWdodDw9MHx8KHRoaXMuX2NoYXJBdGxhcz1yLmFjcXVpcmVDaGFyQXRsYXModCxlLHRoaXMuX3NjYWxlZENoYXJXaWR0aCx0aGlzLl9zY2FsZWRDaGFySGVpZ2h0KSx0aGlzLl9jaGFyQXRsYXMud2FybVVwKCkpfSx0LnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24odCxlKXt0aGlzLl9zY2FsZWRDZWxsV2lkdGg9ZS5zY2FsZWRDZWxsV2lkdGgsdGhpcy5fc2NhbGVkQ2VsbEhlaWdodD1lLnNjYWxlZENlbGxIZWlnaHQsdGhpcy5fc2NhbGVkQ2hhcldpZHRoPWUuc2NhbGVkQ2hhcldpZHRoLHRoaXMuX3NjYWxlZENoYXJIZWlnaHQ9ZS5zY2FsZWRDaGFySGVpZ2h0LHRoaXMuX3NjYWxlZENoYXJMZWZ0PWUuc2NhbGVkQ2hhckxlZnQsdGhpcy5fc2NhbGVkQ2hhclRvcD1lLnNjYWxlZENoYXJUb3AsdGhpcy5fY2FudmFzLndpZHRoPWUuc2NhbGVkQ2FudmFzV2lkdGgsdGhpcy5fY2FudmFzLmhlaWdodD1lLnNjYWxlZENhbnZhc0hlaWdodCx0aGlzLl9jYW52YXMuc3R5bGUud2lkdGg9ZS5jYW52YXNXaWR0aCtcInB4XCIsdGhpcy5fY2FudmFzLnN0eWxlLmhlaWdodD1lLmNhbnZhc0hlaWdodCtcInB4XCIsdGhpcy5fYWxwaGF8fHRoaXMuX2NsZWFyQWxsKCksdGhpcy5fcmVmcmVzaENoYXJBdGxhcyh0LHRoaXMuX2NvbG9ycyl9LHQucHJvdG90eXBlLl9maWxsQ2VsbHM9ZnVuY3Rpb24odCxlLGkscil7dGhpcy5fY3R4LmZpbGxSZWN0KHQqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLGUqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodCxpKnRoaXMuX3NjYWxlZENlbGxXaWR0aCxyKnRoaXMuX3NjYWxlZENlbGxIZWlnaHQpfSx0LnByb3RvdHlwZS5fZmlsbEJvdHRvbUxpbmVBdENlbGxzPWZ1bmN0aW9uKHQsZSxpKXt2b2lkIDA9PT1pJiYoaT0xKSx0aGlzLl9jdHguZmlsbFJlY3QodCp0aGlzLl9zY2FsZWRDZWxsV2lkdGgsKGUrMSkqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodC13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpby0xLGkqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKX0sdC5wcm90b3R5cGUuX2ZpbGxMZWZ0TGluZUF0Q2VsbD1mdW5jdGlvbih0LGUsaSl7dGhpcy5fY3R4LmZpbGxSZWN0KHQqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLGUqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodCx3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyppLHRoaXMuX3NjYWxlZENlbGxIZWlnaHQpfSx0LnByb3RvdHlwZS5fc3Ryb2tlUmVjdEF0Q2VsbD1mdW5jdGlvbih0LGUsaSxyKXt0aGlzLl9jdHgubGluZVdpZHRoPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLHRoaXMuX2N0eC5zdHJva2VSZWN0KHQqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoK3dpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLzIsZSp0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0K3dpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLzIsaSp0aGlzLl9zY2FsZWRDZWxsV2lkdGgtd2luZG93LmRldmljZVBpeGVsUmF0aW8scip0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0LXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKX0sdC5wcm90b3R5cGUuX2NsZWFyQWxsPWZ1bmN0aW9uKCl7dGhpcy5fYWxwaGE/dGhpcy5fY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5fY2FudmFzLndpZHRoLHRoaXMuX2NhbnZhcy5oZWlnaHQpOih0aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5iYWNrZ3JvdW5kLmNzcyx0aGlzLl9jdHguZmlsbFJlY3QoMCwwLHRoaXMuX2NhbnZhcy53aWR0aCx0aGlzLl9jYW52YXMuaGVpZ2h0KSl9LHQucHJvdG90eXBlLl9jbGVhckNlbGxzPWZ1bmN0aW9uKHQsZSxpLHIpe3RoaXMuX2FscGhhP3RoaXMuX2N0eC5jbGVhclJlY3QodCp0aGlzLl9zY2FsZWRDZWxsV2lkdGgsZSp0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0LGkqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLHIqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodCk6KHRoaXMuX2N0eC5maWxsU3R5bGU9dGhpcy5fY29sb3JzLmJhY2tncm91bmQuY3NzLHRoaXMuX2N0eC5maWxsUmVjdCh0KnRoaXMuX3NjYWxlZENlbGxXaWR0aCxlKnRoaXMuX3NjYWxlZENlbGxIZWlnaHQsaSp0aGlzLl9zY2FsZWRDZWxsV2lkdGgscip0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0KSl9LHQucHJvdG90eXBlLl9maWxsQ2hhclRydWVDb2xvcj1mdW5jdGlvbih0LGUsaSxyKXt0aGlzLl9jdHguZm9udD10aGlzLl9nZXRGb250KHQsITEsITEpLHRoaXMuX2N0eC50ZXh0QmFzZWxpbmU9XCJtaWRkbGVcIix0aGlzLl9jbGlwUm93KHQsciksdGhpcy5fY3R4LmZpbGxUZXh0KGUuZ2V0Q2hhcnMoKSxpKnRoaXMuX3NjYWxlZENlbGxXaWR0aCt0aGlzLl9zY2FsZWRDaGFyTGVmdCxyKnRoaXMuX3NjYWxlZENlbGxIZWlnaHQrdGhpcy5fc2NhbGVkQ2hhclRvcCt0aGlzLl9zY2FsZWRDaGFySGVpZ2h0LzIpfSx0LnByb3RvdHlwZS5fY2xpcFJvdz1mdW5jdGlvbih0LGUpe3RoaXMuX2N0eC5iZWdpblBhdGgoKSx0aGlzLl9jdHgucmVjdCgwLGUqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodCx0LmNvbHMqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLHRoaXMuX3NjYWxlZENlbGxIZWlnaHQpLHRoaXMuX2N0eC5jbGlwKCl9LHQucHJvdG90eXBlLl9nZXRGb250PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4oaT9cIml0YWxpY1wiOlwiXCIpK1wiIFwiKyhlP3QuZ2V0T3B0aW9uKFwiZm9udFdlaWdodEJvbGRcIik6dC5nZXRPcHRpb24oXCJmb250V2VpZ2h0XCIpKStcIiBcIit0LmdldE9wdGlvbihcImZvbnRTaXplXCIpKndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvK1wicHggXCIrdC5nZXRPcHRpb24oXCJmb250RmFtaWx5XCIpfSx0fSgpO2UuQmFzZVJlbmRlckxheWVyPW59LDQ2MTpmdW5jdGlvbih0LGUsaSl7dmFyIHIsbz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4ocj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxpKSYmKHRbaV09ZVtpXSl9KSh0LGUpfSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPXR9cih0LGUpLHQucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KGkucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBpKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuQ3Vyc29yUmVuZGVyTGF5ZXI9dm9pZCAwO3ZhciBuPWkoNTkyKSxzPWkoNzgyKSxhPTYwMCxsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxpLHIsbyl7dmFyIG49dC5jYWxsKHRoaXMsZSxcImN1cnNvclwiLGksITAscil8fHRoaXM7cmV0dXJuIG4uX29uUmVxdWVzdFJlZnJlc2hSb3dzRXZlbnQ9byxuLl9jZWxsPW5ldyBzLkNlbGxEYXRhLG4uX3N0YXRlPXt4OjAseTowLGlzRm9jdXNlZDohMSxzdHlsZTpcIlwiLHdpZHRoOjB9LG4uX2N1cnNvclJlbmRlcmVycz17YmFyOm4uX3JlbmRlckJhckN1cnNvci5iaW5kKG4pLGJsb2NrOm4uX3JlbmRlckJsb2NrQ3Vyc29yLmJpbmQobiksdW5kZXJsaW5lOm4uX3JlbmRlclVuZGVybGluZUN1cnNvci5iaW5kKG4pfSxufXJldHVybiBvKGUsdCksZS5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKGUsaSl7dC5wcm90b3R5cGUucmVzaXplLmNhbGwodGhpcyxlLGkpLHRoaXMuX3N0YXRlPXt4OjAseTowLGlzRm9jdXNlZDohMSxzdHlsZTpcIlwiLHdpZHRoOjB9fSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbih0KXt0aGlzLl9jbGVhckN1cnNvcigpLHRoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyJiYodGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXIuZGlzcG9zZSgpLHRoaXMub25PcHRpb25zQ2hhbmdlZCh0KSl9LGUucHJvdG90eXBlLm9uQmx1cj1mdW5jdGlvbih0KXt0aGlzLl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlciYmdGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXIucGF1c2UoKSx0aGlzLl9vblJlcXVlc3RSZWZyZXNoUm93c0V2ZW50LmZpcmUoe3N0YXJ0OnQuYnVmZmVyLmFjdGl2ZS5jdXJzb3JZLGVuZDp0LmJ1ZmZlci5hY3RpdmUuY3Vyc29yWX0pfSxlLnByb3RvdHlwZS5vbkZvY3VzPWZ1bmN0aW9uKHQpe3RoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyP3RoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyLnJlc3VtZSh0KTp0aGlzLl9vblJlcXVlc3RSZWZyZXNoUm93c0V2ZW50LmZpcmUoe3N0YXJ0OnQuYnVmZmVyLmFjdGl2ZS5jdXJzb3JZLGVuZDp0LmJ1ZmZlci5hY3RpdmUuY3Vyc29yWX0pfSxlLnByb3RvdHlwZS5vbk9wdGlvbnNDaGFuZ2VkPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpczt0LmdldE9wdGlvbihcImN1cnNvckJsaW5rXCIpP3RoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyfHwodGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXI9bmV3IGgodCwoZnVuY3Rpb24oKXtpLl9yZW5kZXIodCwhMCl9KSkpOihudWxsPT09KGU9dGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXIpfHx2b2lkIDA9PT1lfHxlLmRpc3Bvc2UoKSx0aGlzLl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlcj12b2lkIDApLHRoaXMuX29uUmVxdWVzdFJlZnJlc2hSb3dzRXZlbnQuZmlyZSh7c3RhcnQ6dC5idWZmZXIuYWN0aXZlLmN1cnNvclksZW5kOnQuYnVmZmVyLmFjdGl2ZS5jdXJzb3JZfSl9LGUucHJvdG90eXBlLm9uQ3Vyc29yTW92ZT1mdW5jdGlvbih0KXt0aGlzLl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlciYmdGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXIucmVzdGFydEJsaW5rQW5pbWF0aW9uKHQpfSxlLnByb3RvdHlwZS5vbkdyaWRDaGFuZ2VkPWZ1bmN0aW9uKHQsZSxpKXshdGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXJ8fHRoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyLmlzUGF1c2VkP3RoaXMuX3JlbmRlcih0LCExKTp0aGlzLl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlci5yZXN0YXJ0QmxpbmtBbmltYXRpb24odCl9LGUucHJvdG90eXBlLl9yZW5kZXI9ZnVuY3Rpb24odCxlKXtpZih0Ll9jb3JlLl9jb3JlU2VydmljZS5pc0N1cnNvckluaXRpYWxpemVkJiYhdC5fY29yZS5fY29yZVNlcnZpY2UuaXNDdXJzb3JIaWRkZW4pe3ZhciBpPXQuYnVmZmVyLmFjdGl2ZS5iYXNlWSt0LmJ1ZmZlci5hY3RpdmUuY3Vyc29yWSxyPWktdC5idWZmZXIuYWN0aXZlLnZpZXdwb3J0WSxvPU1hdGgubWluKHQuYnVmZmVyLmFjdGl2ZS5jdXJzb3JYLHQuY29scy0xKTtpZihyPDB8fHI+PXQucm93cyl0aGlzLl9jbGVhckN1cnNvcigpO2Vsc2UgaWYodC5fY29yZS5idWZmZXIubGluZXMuZ2V0KGkpLmxvYWRDZWxsKG8sdGhpcy5fY2VsbCksdm9pZCAwIT09dGhpcy5fY2VsbC5jb250ZW50KXtpZighYyh0KSl7dGhpcy5fY2xlYXJDdXJzb3IoKSx0aGlzLl9jdHguc2F2ZSgpLHRoaXMuX2N0eC5maWxsU3R5bGU9dGhpcy5fY29sb3JzLmN1cnNvci5jc3M7dmFyIG49dC5nZXRPcHRpb24oXCJjdXJzb3JTdHlsZVwiKTtyZXR1cm4gbiYmXCJibG9ja1wiIT09bj90aGlzLl9jdXJzb3JSZW5kZXJlcnNbbl0odCxvLHIsdGhpcy5fY2VsbCk6dGhpcy5fcmVuZGVyQmx1ckN1cnNvcih0LG8scix0aGlzLl9jZWxsKSx0aGlzLl9jdHgucmVzdG9yZSgpLHRoaXMuX3N0YXRlLng9byx0aGlzLl9zdGF0ZS55PXIsdGhpcy5fc3RhdGUuaXNGb2N1c2VkPSExLHRoaXMuX3N0YXRlLnN0eWxlPW4sdm9pZCh0aGlzLl9zdGF0ZS53aWR0aD10aGlzLl9jZWxsLmdldFdpZHRoKCkpfWlmKCF0aGlzLl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlcnx8dGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXIuaXNDdXJzb3JWaXNpYmxlKXtpZih0aGlzLl9zdGF0ZSl7aWYodGhpcy5fc3RhdGUueD09PW8mJnRoaXMuX3N0YXRlLnk9PT1yJiZ0aGlzLl9zdGF0ZS5pc0ZvY3VzZWQ9PT1jKHQpJiZ0aGlzLl9zdGF0ZS5zdHlsZT09PXQuZ2V0T3B0aW9uKFwiY3Vyc29yU3R5bGVcIikmJnRoaXMuX3N0YXRlLndpZHRoPT09dGhpcy5fY2VsbC5nZXRXaWR0aCgpKXJldHVybjt0aGlzLl9jbGVhckN1cnNvcigpfXRoaXMuX2N0eC5zYXZlKCksdGhpcy5fY3Vyc29yUmVuZGVyZXJzW3QuZ2V0T3B0aW9uKFwiY3Vyc29yU3R5bGVcIil8fFwiYmxvY2tcIl0odCxvLHIsdGhpcy5fY2VsbCksdGhpcy5fY3R4LnJlc3RvcmUoKSx0aGlzLl9zdGF0ZS54PW8sdGhpcy5fc3RhdGUueT1yLHRoaXMuX3N0YXRlLmlzRm9jdXNlZD0hMSx0aGlzLl9zdGF0ZS5zdHlsZT10LmdldE9wdGlvbihcImN1cnNvclN0eWxlXCIpLHRoaXMuX3N0YXRlLndpZHRoPXRoaXMuX2NlbGwuZ2V0V2lkdGgoKX1lbHNlIHRoaXMuX2NsZWFyQ3Vyc29yKCl9fWVsc2UgdGhpcy5fY2xlYXJDdXJzb3IoKX0sZS5wcm90b3R5cGUuX2NsZWFyQ3Vyc29yPWZ1bmN0aW9uKCl7dGhpcy5fc3RhdGUmJih0aGlzLl9jbGVhckNlbGxzKHRoaXMuX3N0YXRlLngsdGhpcy5fc3RhdGUueSx0aGlzLl9zdGF0ZS53aWR0aCwxKSx0aGlzLl9zdGF0ZT17eDowLHk6MCxpc0ZvY3VzZWQ6ITEsc3R5bGU6XCJcIix3aWR0aDowfSl9LGUucHJvdG90eXBlLl9yZW5kZXJCYXJDdXJzb3I9ZnVuY3Rpb24odCxlLGkscil7dGhpcy5fY3R4LnNhdmUoKSx0aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5jdXJzb3IuY3NzLHRoaXMuX2ZpbGxMZWZ0TGluZUF0Q2VsbChlLGksdC5nZXRPcHRpb24oXCJjdXJzb3JXaWR0aFwiKSksdGhpcy5fY3R4LnJlc3RvcmUoKX0sZS5wcm90b3R5cGUuX3JlbmRlckJsb2NrQ3Vyc29yPWZ1bmN0aW9uKHQsZSxpLHIpe3RoaXMuX2N0eC5zYXZlKCksdGhpcy5fY3R4LmZpbGxTdHlsZT10aGlzLl9jb2xvcnMuY3Vyc29yLmNzcyx0aGlzLl9maWxsQ2VsbHMoZSxpLHIuZ2V0V2lkdGgoKSwxKSx0aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5jdXJzb3JBY2NlbnQuY3NzLHRoaXMuX2ZpbGxDaGFyVHJ1ZUNvbG9yKHQscixlLGkpLHRoaXMuX2N0eC5yZXN0b3JlKCl9LGUucHJvdG90eXBlLl9yZW5kZXJVbmRlcmxpbmVDdXJzb3I9ZnVuY3Rpb24odCxlLGkscil7dGhpcy5fY3R4LnNhdmUoKSx0aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5jdXJzb3IuY3NzLHRoaXMuX2ZpbGxCb3R0b21MaW5lQXRDZWxscyhlLGkpLHRoaXMuX2N0eC5yZXN0b3JlKCl9LGUucHJvdG90eXBlLl9yZW5kZXJCbHVyQ3Vyc29yPWZ1bmN0aW9uKHQsZSxpLHIpe3RoaXMuX2N0eC5zYXZlKCksdGhpcy5fY3R4LnN0cm9rZVN0eWxlPXRoaXMuX2NvbG9ycy5jdXJzb3IuY3NzLHRoaXMuX3N0cm9rZVJlY3RBdENlbGwoZSxpLHIuZ2V0V2lkdGgoKSwxKSx0aGlzLl9jdHgucmVzdG9yZSgpfSxlfShuLkJhc2VSZW5kZXJMYXllcik7ZS5DdXJzb3JSZW5kZXJMYXllcj1sO3ZhciBoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3JlbmRlckNhbGxiYWNrPWUsdGhpcy5pc0N1cnNvclZpc2libGU9ITAsYyh0KSYmdGhpcy5fcmVzdGFydEludGVydmFsKCl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImlzUGF1c2VkXCIse2dldDpmdW5jdGlvbigpe3JldHVybiEodGhpcy5fYmxpbmtTdGFydFRpbWVvdXR8fHRoaXMuX2JsaW5rSW50ZXJ2YWwpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9ibGlua0ludGVydmFsJiYod2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5fYmxpbmtJbnRlcnZhbCksdGhpcy5fYmxpbmtJbnRlcnZhbD12b2lkIDApLHRoaXMuX2JsaW5rU3RhcnRUaW1lb3V0JiYod2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9ibGlua1N0YXJ0VGltZW91dCksdGhpcy5fYmxpbmtTdGFydFRpbWVvdXQ9dm9pZCAwKSx0aGlzLl9hbmltYXRpb25GcmFtZSYmKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9hbmltYXRpb25GcmFtZSksdGhpcy5fYW5pbWF0aW9uRnJhbWU9dm9pZCAwKX0sdC5wcm90b3R5cGUucmVzdGFydEJsaW5rQW5pbWF0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5pc1BhdXNlZHx8KHRoaXMuX2FuaW1hdGlvblRpbWVSZXN0YXJ0ZWQ9RGF0ZS5ub3coKSx0aGlzLmlzQ3Vyc29yVmlzaWJsZT0hMCx0aGlzLl9hbmltYXRpb25GcmFtZXx8KHRoaXMuX2FuaW1hdGlvbkZyYW1lPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7ZS5fcmVuZGVyQ2FsbGJhY2soKSxlLl9hbmltYXRpb25GcmFtZT12b2lkIDB9KSkpKX0sdC5wcm90b3R5cGUuX3Jlc3RhcnRJbnRlcnZhbD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3ZvaWQgMD09PXQmJih0PWEpLHRoaXMuX2JsaW5rSW50ZXJ2YWwmJndpbmRvdy5jbGVhckludGVydmFsKHRoaXMuX2JsaW5rSW50ZXJ2YWwpLHRoaXMuX2JsaW5rU3RhcnRUaW1lb3V0PXdpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2lmKGUuX2FuaW1hdGlvblRpbWVSZXN0YXJ0ZWQpe3ZhciB0PWEtKERhdGUubm93KCktZS5fYW5pbWF0aW9uVGltZVJlc3RhcnRlZCk7aWYoZS5fYW5pbWF0aW9uVGltZVJlc3RhcnRlZD12b2lkIDAsdD4wKXJldHVybiB2b2lkIGUuX3Jlc3RhcnRJbnRlcnZhbCh0KX1lLmlzQ3Vyc29yVmlzaWJsZT0hMSxlLl9hbmltYXRpb25GcmFtZT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe2UuX3JlbmRlckNhbGxiYWNrKCksZS5fYW5pbWF0aW9uRnJhbWU9dm9pZCAwfSkpLGUuX2JsaW5rSW50ZXJ2YWw9d2luZG93LnNldEludGVydmFsKChmdW5jdGlvbigpe2lmKGUuX2FuaW1hdGlvblRpbWVSZXN0YXJ0ZWQpe3ZhciB0PWEtKERhdGUubm93KCktZS5fYW5pbWF0aW9uVGltZVJlc3RhcnRlZCk7cmV0dXJuIGUuX2FuaW1hdGlvblRpbWVSZXN0YXJ0ZWQ9dm9pZCAwLHZvaWQgZS5fcmVzdGFydEludGVydmFsKHQpfWUuaXNDdXJzb3JWaXNpYmxlPSFlLmlzQ3Vyc29yVmlzaWJsZSxlLl9hbmltYXRpb25GcmFtZT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe2UuX3JlbmRlckNhbGxiYWNrKCksZS5fYW5pbWF0aW9uRnJhbWU9dm9pZCAwfSkpfSksYSl9KSx0KX0sdC5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt0aGlzLmlzQ3Vyc29yVmlzaWJsZT0hMCx0aGlzLl9ibGlua0ludGVydmFsJiYod2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5fYmxpbmtJbnRlcnZhbCksdGhpcy5fYmxpbmtJbnRlcnZhbD12b2lkIDApLHRoaXMuX2JsaW5rU3RhcnRUaW1lb3V0JiYod2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9ibGlua1N0YXJ0VGltZW91dCksdGhpcy5fYmxpbmtTdGFydFRpbWVvdXQ9dm9pZCAwKSx0aGlzLl9hbmltYXRpb25GcmFtZSYmKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9hbmltYXRpb25GcmFtZSksdGhpcy5fYW5pbWF0aW9uRnJhbWU9dm9pZCAwKX0sdC5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKHQpe3RoaXMucGF1c2UoKSx0aGlzLl9hbmltYXRpb25UaW1lUmVzdGFydGVkPXZvaWQgMCx0aGlzLl9yZXN0YXJ0SW50ZXJ2YWwoKSx0aGlzLnJlc3RhcnRCbGlua0FuaW1hdGlvbih0KX0sdH0oKTtmdW5jdGlvbiBjKHQpe3JldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dC50ZXh0YXJlYSYmZG9jdW1lbnQuaGFzRm9jdXMoKX19LDczMzpmdW5jdGlvbih0LGUsaSl7dmFyIHIsbz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4ocj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxpKSYmKHRbaV09ZVtpXSl9KSh0LGUpfSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPXR9cih0LGUpLHQucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KGkucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBpKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuTGlua1JlbmRlckxheWVyPXZvaWQgMDt2YXIgbj1pKDU5Mikscz1pKDQ5OSksYT1pKDQzMyksbD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsaSxyLG8pe3ZhciBuPXQuY2FsbCh0aGlzLGUsXCJsaW5rXCIsaSwhMCxyKXx8dGhpcztyZXR1cm4gby5saW5raWZpZXIub25TaG93TGlua1VuZGVybGluZSgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX29uU2hvd0xpbmtVbmRlcmxpbmUodCl9KSksby5saW5raWZpZXIub25IaWRlTGlua1VuZGVybGluZSgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX29uSGlkZUxpbmtVbmRlcmxpbmUodCl9KSksby5saW5raWZpZXIyLm9uU2hvd0xpbmtVbmRlcmxpbmUoKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9vblNob3dMaW5rVW5kZXJsaW5lKHQpfSkpLG8ubGlua2lmaWVyMi5vbkhpZGVMaW5rVW5kZXJsaW5lKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fb25IaWRlTGlua1VuZGVybGluZSh0KX0pKSxufXJldHVybiBvKGUsdCksZS5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKGUsaSl7dC5wcm90b3R5cGUucmVzaXplLmNhbGwodGhpcyxlLGkpLHRoaXMuX3N0YXRlPXZvaWQgMH0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24odCl7dGhpcy5fY2xlYXJDdXJyZW50TGluaygpfSxlLnByb3RvdHlwZS5fY2xlYXJDdXJyZW50TGluaz1mdW5jdGlvbigpe2lmKHRoaXMuX3N0YXRlKXt0aGlzLl9jbGVhckNlbGxzKHRoaXMuX3N0YXRlLngxLHRoaXMuX3N0YXRlLnkxLHRoaXMuX3N0YXRlLmNvbHMtdGhpcy5fc3RhdGUueDEsMSk7dmFyIHQ9dGhpcy5fc3RhdGUueTItdGhpcy5fc3RhdGUueTEtMTt0PjAmJnRoaXMuX2NsZWFyQ2VsbHMoMCx0aGlzLl9zdGF0ZS55MSsxLHRoaXMuX3N0YXRlLmNvbHMsdCksdGhpcy5fY2xlYXJDZWxscygwLHRoaXMuX3N0YXRlLnkyLHRoaXMuX3N0YXRlLngyLDEpLHRoaXMuX3N0YXRlPXZvaWQgMH19LGUucHJvdG90eXBlLl9vblNob3dMaW5rVW5kZXJsaW5lPWZ1bmN0aW9uKHQpe2lmKHQuZmc9PT1zLklOVkVSVEVEX0RFRkFVTFRfQ09MT1I/dGhpcy5fY3R4LmZpbGxTdHlsZT10aGlzLl9jb2xvcnMuYmFja2dyb3VuZC5jc3M6dm9pZCAwIT09dC5mZyYmYS5pczI1NkNvbG9yKHQuZmcpP3RoaXMuX2N0eC5maWxsU3R5bGU9dGhpcy5fY29sb3JzLmFuc2lbdC5mZ10uY3NzOnRoaXMuX2N0eC5maWxsU3R5bGU9dGhpcy5fY29sb3JzLmZvcmVncm91bmQuY3NzLHQueTE9PT10LnkyKXRoaXMuX2ZpbGxCb3R0b21MaW5lQXRDZWxscyh0LngxLHQueTEsdC54Mi10LngxKTtlbHNle3RoaXMuX2ZpbGxCb3R0b21MaW5lQXRDZWxscyh0LngxLHQueTEsdC5jb2xzLXQueDEpO2Zvcih2YXIgZT10LnkxKzE7ZTx0LnkyO2UrKyl0aGlzLl9maWxsQm90dG9tTGluZUF0Q2VsbHMoMCxlLHQuY29scyk7dGhpcy5fZmlsbEJvdHRvbUxpbmVBdENlbGxzKDAsdC55Mix0LngyKX10aGlzLl9zdGF0ZT10fSxlLnByb3RvdHlwZS5fb25IaWRlTGlua1VuZGVybGluZT1mdW5jdGlvbih0KXt0aGlzLl9jbGVhckN1cnJlbnRMaW5rKCl9LGV9KG4uQmFzZVJlbmRlckxheWVyKTtlLkxpbmtSZW5kZXJMYXllcj1sfSw3NDI6KHQsZSk9Pnt2YXIgaSxyLG8sbjtmdW5jdGlvbiBzKHQpe3ZhciBlPXQudG9TdHJpbmcoMTYpO3JldHVybiBlLmxlbmd0aDwyP1wiMFwiK2U6ZX1mdW5jdGlvbiBhKHQsZSl7cmV0dXJuIHQ8ZT8oZSsuMDUpLyh0Ky4wNSk6KHQrLjA1KS8oZSsuMDUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuY29udHJhc3RSYXRpbz1lLnRvUGFkZGVkSGV4PWUucmdiYT1lLnJnYj1lLmNzcz1lLmNvbG9yPWUuY2hhbm5lbHM9dm9pZCAwLGZ1bmN0aW9uKHQpe3QudG9Dc3M9ZnVuY3Rpb24odCxlLGkscil7cmV0dXJuIHZvaWQgMCE9PXI/XCIjXCIrcyh0KStzKGUpK3MoaSkrcyhyKTpcIiNcIitzKHQpK3MoZSkrcyhpKX0sdC50b1JnYmE9ZnVuY3Rpb24odCxlLGkscil7cmV0dXJuIHZvaWQgMD09PXImJihyPTI1NSksKHQ8PDI0fGU8PDE2fGk8PDh8cik+Pj4wfX0oaT1lLmNoYW5uZWxzfHwoZS5jaGFubmVscz17fSkpLChyPWUuY29sb3J8fChlLmNvbG9yPXt9KSkuYmxlbmQ9ZnVuY3Rpb24odCxlKXt2YXIgcj0oMjU1JmUucmdiYSkvMjU1O2lmKDE9PT1yKXJldHVybntjc3M6ZS5jc3MscmdiYTplLnJnYmF9O3ZhciBvPWUucmdiYT4+MjQmMjU1LG49ZS5yZ2JhPj4xNiYyNTUscz1lLnJnYmE+PjgmMjU1LGE9dC5yZ2JhPj4yNCYyNTUsbD10LnJnYmE+PjE2JjI1NSxoPXQucmdiYT4+OCYyNTUsYz1hK01hdGgucm91bmQoKG8tYSkqciksXz1sK01hdGgucm91bmQoKG4tbCkqciksZD1oK01hdGgucm91bmQoKHMtaCkqcik7cmV0dXJue2NzczppLnRvQ3NzKGMsXyxkKSxyZ2JhOmkudG9SZ2JhKGMsXyxkKX19LHIuaXNPcGFxdWU9ZnVuY3Rpb24odCl7cmV0dXJuIDI1NT09KDI1NSZ0LnJnYmEpfSxyLmVuc3VyZUNvbnRyYXN0UmF0aW89ZnVuY3Rpb24odCxlLGkpe3ZhciByPW4uZW5zdXJlQ29udHJhc3RSYXRpbyh0LnJnYmEsZS5yZ2JhLGkpO2lmKHIpcmV0dXJuIG4udG9Db2xvcihyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1KX0sci5vcGFxdWU9ZnVuY3Rpb24odCl7dmFyIGU9KDI1NXx0LnJnYmEpPj4+MCxyPW4udG9DaGFubmVscyhlKSxvPXJbMF0scz1yWzFdLGE9clsyXTtyZXR1cm57Y3NzOmkudG9Dc3MobyxzLGEpLHJnYmE6ZX19LHIub3BhY2l0eT1mdW5jdGlvbih0LGUpe3ZhciByPU1hdGgucm91bmQoMjU1KmUpLG89bi50b0NoYW5uZWxzKHQucmdiYSkscz1vWzBdLGE9b1sxXSxsPW9bMl07cmV0dXJue2NzczppLnRvQ3NzKHMsYSxsLHIpLHJnYmE6aS50b1JnYmEocyxhLGwscil9fSwoZS5jc3N8fChlLmNzcz17fSkpLnRvQ29sb3I9ZnVuY3Rpb24odCl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDc6cmV0dXJue2Nzczp0LHJnYmE6KHBhcnNlSW50KHQuc2xpY2UoMSksMTYpPDw4fDI1NSk+Pj4wfTtjYXNlIDk6cmV0dXJue2Nzczp0LHJnYmE6cGFyc2VJbnQodC5zbGljZSgxKSwxNik+Pj4wfX10aHJvdyBuZXcgRXJyb3IoXCJjc3MudG9Db2xvcjogVW5zdXBwb3J0ZWQgY3NzIGZvcm1hdFwiKX0sZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUsaSl7dmFyIHI9dC8yNTUsbz1lLzI1NSxuPWkvMjU1O3JldHVybi4yMTI2KihyPD0uMDM5Mjg/ci8xMi45MjpNYXRoLnBvdygocisuMDU1KS8xLjA1NSwyLjQpKSsuNzE1Mioobzw9LjAzOTI4P28vMTIuOTI6TWF0aC5wb3coKG8rLjA1NSkvMS4wNTUsMi40KSkrLjA3MjIqKG48PS4wMzkyOD9uLzEyLjkyOk1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCkpfXQucmVsYXRpdmVMdW1pbmFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGUodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0KX0sdC5yZWxhdGl2ZUx1bWluYW5jZTI9ZX0obz1lLnJnYnx8KGUucmdiPXt9KSksZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUsaSl7Zm9yKHZhciByPXQ+PjI0JjI1NSxuPXQ+PjE2JjI1NSxzPXQ+PjgmMjU1LGw9ZT4+MjQmMjU1LGg9ZT4+MTYmMjU1LGM9ZT4+OCYyNTUsXz1hKG8ucmVsYXRpdmVMdW1pbmFuY2UyKGwsYyxoKSxvLnJlbGF0aXZlTHVtaW5hbmNlMihyLG4scykpO188aSYmKGw+MHx8aD4wfHxjPjApOylsLT1NYXRoLm1heCgwLE1hdGguY2VpbCguMSpsKSksaC09TWF0aC5tYXgoMCxNYXRoLmNlaWwoLjEqaCkpLGMtPU1hdGgubWF4KDAsTWF0aC5jZWlsKC4xKmMpKSxfPWEoby5yZWxhdGl2ZUx1bWluYW5jZTIobCxjLGgpLG8ucmVsYXRpdmVMdW1pbmFuY2UyKHIsbixzKSk7cmV0dXJuKGw8PDI0fGg8PDE2fGM8PDh8MjU1KT4+PjB9ZnVuY3Rpb24gcih0LGUsaSl7Zm9yKHZhciByPXQ+PjI0JjI1NSxuPXQ+PjE2JjI1NSxzPXQ+PjgmMjU1LGw9ZT4+MjQmMjU1LGg9ZT4+MTYmMjU1LGM9ZT4+OCYyNTUsXz1hKG8ucmVsYXRpdmVMdW1pbmFuY2UyKGwsYyxoKSxvLnJlbGF0aXZlTHVtaW5hbmNlMihyLG4scykpO188aSYmKGw8MjU1fHxoPDI1NXx8YzwyNTUpOylsPU1hdGgubWluKDI1NSxsK01hdGguY2VpbCguMSooMjU1LWwpKSksaD1NYXRoLm1pbigyNTUsaCtNYXRoLmNlaWwoLjEqKDI1NS1oKSkpLGM9TWF0aC5taW4oMjU1LGMrTWF0aC5jZWlsKC4xKigyNTUtYykpKSxfPWEoby5yZWxhdGl2ZUx1bWluYW5jZTIobCxjLGgpLG8ucmVsYXRpdmVMdW1pbmFuY2UyKHIsbixzKSk7cmV0dXJuKGw8PDI0fGg8PDE2fGM8PDh8MjU1KT4+PjB9dC5lbnN1cmVDb250cmFzdFJhdGlvPWZ1bmN0aW9uKHQsaSxuKXt2YXIgcz1vLnJlbGF0aXZlTHVtaW5hbmNlKHQ+PjgpLGw9by5yZWxhdGl2ZUx1bWluYW5jZShpPj44KTtpZihhKHMsbCk8bilyZXR1cm4gbDxzP2UodCxpLG4pOnIodCxpLG4pfSx0LnJlZHVjZUx1bWluYW5jZT1lLHQuaW5jcmVhc2VMdW1pbmFuY2U9cix0LnRvQ2hhbm5lbHM9ZnVuY3Rpb24odCl7cmV0dXJuW3Q+PjI0JjI1NSx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnRdfSx0LnRvQ29sb3I9ZnVuY3Rpb24odCxlLHIpe3JldHVybntjc3M6aS50b0Nzcyh0LGUscikscmdiYTppLnRvUmdiYSh0LGUscil9fX0obj1lLnJnYmF8fChlLnJnYmE9e30pKSxlLnRvUGFkZGVkSGV4PXMsZS5jb250cmFzdFJhdGlvPWF9LDQ5OToodCxlKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuQ0hBUl9BVExBU19DRUxMX1NQQUNJTkc9ZS5ESU1fT1BBQ0lUWT1lLklOVkVSVEVEX0RFRkFVTFRfQ09MT1I9dm9pZCAwLGUuSU5WRVJURURfREVGQVVMVF9DT0xPUj0yNTcsZS5ESU1fT1BBQ0lUWT0uNSxlLkNIQVJfQVRMQVNfQ0VMTF9TUEFDSU5HPTF9LDM0NToodCxlKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuZm9yd2FyZEV2ZW50PWUuRXZlbnRFbWl0dGVyPXZvaWQgMDt2YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9saXN0ZW5lcnM9W10sdGhpcy5fZGlzcG9zZWQ9ITF9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImV2ZW50XCIse2dldDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX2V2ZW50fHwodGhpcy5fZXZlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2xpc3RlbmVycy5wdXNoKGUpLHtkaXNwb3NlOmZ1bmN0aW9uKCl7aWYoIXQuX2Rpc3Bvc2VkKWZvcih2YXIgaT0wO2k8dC5fbGlzdGVuZXJzLmxlbmd0aDtpKyspaWYodC5fbGlzdGVuZXJzW2ldPT09ZSlyZXR1cm4gdm9pZCB0Ll9saXN0ZW5lcnMuc3BsaWNlKGksMSl9fX0pLHRoaXMuX2V2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmZpcmU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9W10scj0wO3I8dGhpcy5fbGlzdGVuZXJzLmxlbmd0aDtyKyspaS5wdXNoKHRoaXMuX2xpc3RlbmVyc1tyXSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKylpW3JdLmNhbGwodm9pZCAwLHQsZSl9LHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnMubGVuZ3RoPTApLHRoaXMuX2Rpc3Bvc2VkPSEwfSx0fSgpO2UuRXZlbnRFbWl0dGVyPWksZS5mb3J3YXJkRXZlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuZmlyZSh0KX0pKX19LDg1OToodCxlKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuZ2V0RGlzcG9zZUFycmF5RGlzcG9zYWJsZT1lLmRpc3Bvc2VBcnJheT1lLkRpc3Bvc2FibGU9dm9pZCAwO3ZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2Rpc3Bvc2FibGVzPVtdLHRoaXMuX2lzRGlzcG9zZWQ9ITF9cmV0dXJuIHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9pc0Rpc3Bvc2VkPSEwO2Zvcih2YXIgdD0wLGU9dGhpcy5fZGlzcG9zYWJsZXM7dDxlLmxlbmd0aDt0KyspZVt0XS5kaXNwb3NlKCk7dGhpcy5fZGlzcG9zYWJsZXMubGVuZ3RoPTB9LHQucHJvdG90eXBlLnJlZ2lzdGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kaXNwb3NhYmxlcy5wdXNoKHQpLHR9LHQucHJvdG90eXBlLnVucmVnaXN0ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZGlzcG9zYWJsZXMuaW5kZXhPZih0KTstMSE9PWUmJnRoaXMuX2Rpc3Bvc2FibGVzLnNwbGljZShlLDEpfSx0fSgpO2Z1bmN0aW9uIHIodCl7Zm9yKHZhciBlPTAsaT10O2U8aS5sZW5ndGg7ZSsrKWlbZV0uZGlzcG9zZSgpO3QubGVuZ3RoPTB9ZS5EaXNwb3NhYmxlPWksZS5kaXNwb3NlQXJyYXk9cixlLmdldERpc3Bvc2VBcnJheURpc3Bvc2FibGU9ZnVuY3Rpb24odCl7cmV0dXJue2Rpc3Bvc2U6ZnVuY3Rpb24oKXtyZXR1cm4gcih0KX19fX0sNDU1Oih0LGUpPT57ZnVuY3Rpb24gaSh0LGUsaSxyKXtpZih2b2lkIDA9PT1pJiYoaT0wKSx2b2lkIDA9PT1yJiYocj10Lmxlbmd0aCksaT49dC5sZW5ndGgpcmV0dXJuIHQ7aT0odC5sZW5ndGgraSkldC5sZW5ndGgscj1yPj10Lmxlbmd0aD90Lmxlbmd0aDoodC5sZW5ndGgrcikldC5sZW5ndGg7Zm9yKHZhciBvPWk7bzxyOysrbyl0W29dPWU7cmV0dXJuIHR9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS5jb25jYXQ9ZS5maWxsRmFsbGJhY2s9ZS5maWxsPXZvaWQgMCxlLmZpbGw9ZnVuY3Rpb24odCxlLHIsbyl7cmV0dXJuIHQuZmlsbD90LmZpbGwoZSxyLG8pOmkodCxlLHIsbyl9LGUuZmlsbEZhbGxiYWNrPWksZS5jb25jYXQ9ZnVuY3Rpb24odCxlKXt2YXIgaT1uZXcgdC5jb25zdHJ1Y3Rvcih0Lmxlbmd0aCtlLmxlbmd0aCk7cmV0dXJuIGkuc2V0KHQpLGkuc2V0KGUsdC5sZW5ndGgpLGl9fSwxNDc6KHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLkV4dGVuZGVkQXR0cnM9ZS5BdHRyaWJ1dGVEYXRhPXZvaWQgMDt2YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmZnPTAsdGhpcy5iZz0wLHRoaXMuZXh0ZW5kZWQ9bmV3IHJ9cmV0dXJuIHQudG9Db2xvclJHQj1mdW5jdGlvbih0KXtyZXR1cm5bdD4+PjE2JjI1NSx0Pj4+OCYyNTUsMjU1JnRdfSx0LmZyb21Db2xvclJHQj1mdW5jdGlvbih0KXtyZXR1cm4oMjU1JnRbMF0pPDwxNnwoMjU1JnRbMV0pPDw4fDI1NSZ0WzJdfSx0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0O3JldHVybiBlLmZnPXRoaXMuZmcsZS5iZz10aGlzLmJnLGUuZXh0ZW5kZWQ9dGhpcy5leHRlbmRlZC5jbG9uZSgpLGV9LHQucHJvdG90eXBlLmlzSW52ZXJzZT1mdW5jdGlvbigpe3JldHVybiA2NzEwODg2NCZ0aGlzLmZnfSx0LnByb3RvdHlwZS5pc0JvbGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMTM0MjE3NzI4JnRoaXMuZmd9LHQucHJvdG90eXBlLmlzVW5kZXJsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIDI2ODQzNTQ1NiZ0aGlzLmZnfSx0LnByb3RvdHlwZS5pc0JsaW5rPWZ1bmN0aW9uKCl7cmV0dXJuIDUzNjg3MDkxMiZ0aGlzLmZnfSx0LnByb3RvdHlwZS5pc0ludmlzaWJsZT1mdW5jdGlvbigpe3JldHVybiAxMDczNzQxODI0JnRoaXMuZmd9LHQucHJvdG90eXBlLmlzSXRhbGljPWZ1bmN0aW9uKCl7cmV0dXJuIDY3MTA4ODY0JnRoaXMuYmd9LHQucHJvdG90eXBlLmlzRGltPWZ1bmN0aW9uKCl7cmV0dXJuIDEzNDIxNzcyOCZ0aGlzLmJnfSx0LnByb3RvdHlwZS5nZXRGZ0NvbG9yTW9kZT1mdW5jdGlvbigpe3JldHVybiA1MDMzMTY0OCZ0aGlzLmZnfSx0LnByb3RvdHlwZS5nZXRCZ0NvbG9yTW9kZT1mdW5jdGlvbigpe3JldHVybiA1MDMzMTY0OCZ0aGlzLmJnfSx0LnByb3RvdHlwZS5pc0ZnUkdCPWZ1bmN0aW9uKCl7cmV0dXJuIDUwMzMxNjQ4PT0oNTAzMzE2NDgmdGhpcy5mZyl9LHQucHJvdG90eXBlLmlzQmdSR0I9ZnVuY3Rpb24oKXtyZXR1cm4gNTAzMzE2NDg9PSg1MDMzMTY0OCZ0aGlzLmJnKX0sdC5wcm90b3R5cGUuaXNGZ1BhbGV0dGU9ZnVuY3Rpb24oKXtyZXR1cm4gMTY3NzcyMTY9PSg1MDMzMTY0OCZ0aGlzLmZnKXx8MzM1NTQ0MzI9PSg1MDMzMTY0OCZ0aGlzLmZnKX0sdC5wcm90b3R5cGUuaXNCZ1BhbGV0dGU9ZnVuY3Rpb24oKXtyZXR1cm4gMTY3NzcyMTY9PSg1MDMzMTY0OCZ0aGlzLmJnKXx8MzM1NTQ0MzI9PSg1MDMzMTY0OCZ0aGlzLmJnKX0sdC5wcm90b3R5cGUuaXNGZ0RlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gMD09KDUwMzMxNjQ4JnRoaXMuZmcpfSx0LnByb3RvdHlwZS5pc0JnRGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiAwPT0oNTAzMzE2NDgmdGhpcy5iZyl9LHQucHJvdG90eXBlLmlzQXR0cmlidXRlRGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5mZyYmMD09PXRoaXMuYmd9LHQucHJvdG90eXBlLmdldEZnQ29sb3I9ZnVuY3Rpb24oKXtzd2l0Y2goNTAzMzE2NDgmdGhpcy5mZyl7Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnJldHVybiAyNTUmdGhpcy5mZztjYXNlIDUwMzMxNjQ4OnJldHVybiAxNjc3NzIxNSZ0aGlzLmZnO2RlZmF1bHQ6cmV0dXJuLTF9fSx0LnByb3RvdHlwZS5nZXRCZ0NvbG9yPWZ1bmN0aW9uKCl7c3dpdGNoKDUwMzMxNjQ4JnRoaXMuYmcpe2Nhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpyZXR1cm4gMjU1JnRoaXMuYmc7Y2FzZSA1MDMzMTY0ODpyZXR1cm4gMTY3NzcyMTUmdGhpcy5iZztkZWZhdWx0OnJldHVybi0xfX0sdC5wcm90b3R5cGUuaGFzRXh0ZW5kZWRBdHRycz1mdW5jdGlvbigpe3JldHVybiAyNjg0MzU0NTYmdGhpcy5iZ30sdC5wcm90b3R5cGUudXBkYXRlRXh0ZW5kZWQ9ZnVuY3Rpb24oKXt0aGlzLmV4dGVuZGVkLmlzRW1wdHkoKT90aGlzLmJnJj0tMjY4NDM1NDU3OnRoaXMuYmd8PTI2ODQzNTQ1Nn0sdC5wcm90b3R5cGUuZ2V0VW5kZXJsaW5lQ29sb3I9ZnVuY3Rpb24oKXtpZigyNjg0MzU0NTYmdGhpcy5iZyYmfnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3Ipc3dpdGNoKDUwMzMxNjQ4JnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3Ipe2Nhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpyZXR1cm4gMjU1JnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I7Y2FzZSA1MDMzMTY0ODpyZXR1cm4gMTY3NzcyMTUmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcjtkZWZhdWx0OnJldHVybiB0aGlzLmdldEZnQ29sb3IoKX1yZXR1cm4gdGhpcy5nZXRGZ0NvbG9yKCl9LHQucHJvdG90eXBlLmdldFVuZGVybGluZUNvbG9yTW9kZT1mdW5jdGlvbigpe3JldHVybiAyNjg0MzU0NTYmdGhpcy5iZyYmfnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I/NTAzMzE2NDgmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcjp0aGlzLmdldEZnQ29sb3JNb2RlKCl9LHQucHJvdG90eXBlLmlzVW5kZXJsaW5lQ29sb3JSR0I9ZnVuY3Rpb24oKXtyZXR1cm4gMjY4NDM1NDU2JnRoaXMuYmcmJn50aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yPzUwMzMxNjQ4PT0oNTAzMzE2NDgmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcik6dGhpcy5pc0ZnUkdCKCl9LHQucHJvdG90eXBlLmlzVW5kZXJsaW5lQ29sb3JQYWxldHRlPWZ1bmN0aW9uKCl7cmV0dXJuIDI2ODQzNTQ1NiZ0aGlzLmJnJiZ+dGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcj8xNjc3NzIxNj09KDUwMzMxNjQ4JnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3IpfHwzMzU1NDQzMj09KDUwMzMxNjQ4JnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3IpOnRoaXMuaXNGZ1BhbGV0dGUoKX0sdC5wcm90b3R5cGUuaXNVbmRlcmxpbmVDb2xvckRlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gMjY4NDM1NDU2JnRoaXMuYmcmJn50aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yPzA9PSg1MDMzMTY0OCZ0aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yKTp0aGlzLmlzRmdEZWZhdWx0KCl9LHQucHJvdG90eXBlLmdldFVuZGVybGluZVN0eWxlPWZ1bmN0aW9uKCl7cmV0dXJuIDI2ODQzNTQ1NiZ0aGlzLmZnPzI2ODQzNTQ1NiZ0aGlzLmJnP3RoaXMuZXh0ZW5kZWQudW5kZXJsaW5lU3R5bGU6MTowfSx0fSgpO2UuQXR0cmlidXRlRGF0YT1pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PWUmJihlPS0xKSx0aGlzLnVuZGVybGluZVN0eWxlPXQsdGhpcy51bmRlcmxpbmVDb2xvcj1lfXJldHVybiB0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgdCh0aGlzLnVuZGVybGluZVN0eWxlLHRoaXMudW5kZXJsaW5lQ29sb3IpfSx0LnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnVuZGVybGluZVN0eWxlfSx0fSgpO2UuRXh0ZW5kZWRBdHRycz1yfSw3ODI6ZnVuY3Rpb24odCxlLGkpe3ZhciByLG89dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJih0W2ldPWVbaV0pfSkodCxlKX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fXIodCxlKSx0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihpLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgaSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLkNlbGxEYXRhPXZvaWQgMDt2YXIgbj1pKDEzMykscz1pKDg1NSksYT1pKDE0NyksbD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBlLmNvbnRlbnQ9MCxlLmZnPTAsZS5iZz0wLGUuZXh0ZW5kZWQ9bmV3IGEuRXh0ZW5kZWRBdHRycyxlLmNvbWJpbmVkRGF0YT1cIlwiLGV9cmV0dXJuIG8oZSx0KSxlLmZyb21DaGFyRGF0YT1mdW5jdGlvbih0KXt2YXIgaT1uZXcgZTtyZXR1cm4gaS5zZXRGcm9tQ2hhckRhdGEodCksaX0sZS5wcm90b3R5cGUuaXNDb21iaW5lZD1mdW5jdGlvbigpe3JldHVybiAyMDk3MTUyJnRoaXMuY29udGVudH0sZS5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50Pj4yMn0sZS5wcm90b3R5cGUuZ2V0Q2hhcnM9ZnVuY3Rpb24oKXtyZXR1cm4gMjA5NzE1MiZ0aGlzLmNvbnRlbnQ/dGhpcy5jb21iaW5lZERhdGE6MjA5NzE1MSZ0aGlzLmNvbnRlbnQ/bi5zdHJpbmdGcm9tQ29kZVBvaW50KDIwOTcxNTEmdGhpcy5jb250ZW50KTpcIlwifSxlLnByb3RvdHlwZS5nZXRDb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNDb21iaW5lZCgpP3RoaXMuY29tYmluZWREYXRhLmNoYXJDb2RlQXQodGhpcy5jb21iaW5lZERhdGEubGVuZ3RoLTEpOjIwOTcxNTEmdGhpcy5jb250ZW50fSxlLnByb3RvdHlwZS5zZXRGcm9tQ2hhckRhdGE9ZnVuY3Rpb24odCl7dGhpcy5mZz10W3MuQ0hBUl9EQVRBX0FUVFJfSU5ERVhdLHRoaXMuYmc9MDt2YXIgZT0hMTtpZih0W3MuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmxlbmd0aD4yKWU9ITA7ZWxzZSBpZigyPT09dFtzLkNIQVJfREFUQV9DSEFSX0lOREVYXS5sZW5ndGgpe3ZhciBpPXRbcy5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0uY2hhckNvZGVBdCgwKTtpZig1NTI5Njw9aSYmaTw9NTYzMTkpe3ZhciByPXRbcy5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0uY2hhckNvZGVBdCgxKTs1NjMyMDw9ciYmcjw9NTczNDM/dGhpcy5jb250ZW50PTEwMjQqKGktNTUyOTYpK3ItNTYzMjArNjU1MzZ8dFtzLkNIQVJfREFUQV9XSURUSF9JTkRFWF08PDIyOmU9ITB9ZWxzZSBlPSEwfWVsc2UgdGhpcy5jb250ZW50PXRbcy5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0uY2hhckNvZGVBdCgwKXx0W3MuQ0hBUl9EQVRBX1dJRFRIX0lOREVYXTw8MjI7ZSYmKHRoaXMuY29tYmluZWREYXRhPXRbcy5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0sdGhpcy5jb250ZW50PTIwOTcxNTJ8dFtzLkNIQVJfREFUQV9XSURUSF9JTkRFWF08PDIyKX0sZS5wcm90b3R5cGUuZ2V0QXNDaGFyRGF0YT1mdW5jdGlvbigpe3JldHVyblt0aGlzLmZnLHRoaXMuZ2V0Q2hhcnMoKSx0aGlzLmdldFdpZHRoKCksdGhpcy5nZXRDb2RlKCldfSxlfShhLkF0dHJpYnV0ZURhdGEpO2UuQ2VsbERhdGE9bH0sODU1Oih0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS5XSElURVNQQUNFX0NFTExfQ09ERT1lLldISVRFU1BBQ0VfQ0VMTF9XSURUSD1lLldISVRFU1BBQ0VfQ0VMTF9DSEFSPWUuTlVMTF9DRUxMX0NPREU9ZS5OVUxMX0NFTExfV0lEVEg9ZS5OVUxMX0NFTExfQ0hBUj1lLkNIQVJfREFUQV9DT0RFX0lOREVYPWUuQ0hBUl9EQVRBX1dJRFRIX0lOREVYPWUuQ0hBUl9EQVRBX0NIQVJfSU5ERVg9ZS5DSEFSX0RBVEFfQVRUUl9JTkRFWD1lLkRFRkFVTFRfQVRUUj1lLkRFRkFVTFRfQ09MT1I9dm9pZCAwLGUuREVGQVVMVF9DT0xPUj0yNTYsZS5ERUZBVUxUX0FUVFI9MjU2fGUuREVGQVVMVF9DT0xPUjw8OSxlLkNIQVJfREFUQV9BVFRSX0lOREVYPTAsZS5DSEFSX0RBVEFfQ0hBUl9JTkRFWD0xLGUuQ0hBUl9EQVRBX1dJRFRIX0lOREVYPTIsZS5DSEFSX0RBVEFfQ09ERV9JTkRFWD0zLGUuTlVMTF9DRUxMX0NIQVI9XCJcIixlLk5VTExfQ0VMTF9XSURUSD0xLGUuTlVMTF9DRUxMX0NPREU9MCxlLldISVRFU1BBQ0VfQ0VMTF9DSEFSPVwiIFwiLGUuV0hJVEVTUEFDRV9DRUxMX1dJRFRIPTEsZS5XSElURVNQQUNFX0NFTExfQ09ERT0zMn0sMTMzOih0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksZS5VdGY4VG9VdGYzMj1lLlN0cmluZ1RvVXRmMzI9ZS51dGYzMlRvU3RyaW5nPWUuc3RyaW5nRnJvbUNvZGVQb2ludD12b2lkIDAsZS5zdHJpbmdGcm9tQ29kZVBvaW50PWZ1bmN0aW9uKHQpe3JldHVybiB0PjY1NTM1Pyh0LT02NTUzNixTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2Kyh0Pj4xMCkpK1N0cmluZy5mcm9tQ2hhckNvZGUodCUxMDI0KzU2MzIwKSk6U3RyaW5nLmZyb21DaGFyQ29kZSh0KX0sZS51dGYzMlRvU3RyaW5nPWZ1bmN0aW9uKHQsZSxpKXt2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1pJiYoaT10Lmxlbmd0aCk7Zm9yKHZhciByPVwiXCIsbz1lO288aTsrK28pe3ZhciBuPXRbb107bj42NTUzNT8obi09NjU1MzYscis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5Nisobj4+MTApKStTdHJpbmcuZnJvbUNoYXJDb2RlKG4lMTAyNCs1NjMyMCkpOnIrPVN0cmluZy5mcm9tQ2hhckNvZGUobil9cmV0dXJuIHJ9O3ZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2ludGVyaW09MH1yZXR1cm4gdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9pbnRlcmltPTB9LHQucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbih0LGUpe3ZhciBpPXQubGVuZ3RoO2lmKCFpKXJldHVybiAwO3ZhciByPTAsbz0wO3RoaXMuX2ludGVyaW0mJig1NjMyMDw9KGE9dC5jaGFyQ29kZUF0KG8rKykpJiZhPD01NzM0Mz9lW3IrK109MTAyNCoodGhpcy5faW50ZXJpbS01NTI5NikrYS01NjMyMCs2NTUzNjooZVtyKytdPXRoaXMuX2ludGVyaW0sZVtyKytdPWEpLHRoaXMuX2ludGVyaW09MCk7Zm9yKHZhciBuPW87bjxpOysrbil7dmFyIHM9dC5jaGFyQ29kZUF0KG4pO2lmKDU1Mjk2PD1zJiZzPD01NjMxOSl7aWYoKytuPj1pKXJldHVybiB0aGlzLl9pbnRlcmltPXMscjt2YXIgYTs1NjMyMDw9KGE9dC5jaGFyQ29kZUF0KG4pKSYmYTw9NTczNDM/ZVtyKytdPTEwMjQqKHMtNTUyOTYpK2EtNTYzMjArNjU1MzY6KGVbcisrXT1zLGVbcisrXT1hKX1lbHNlIDY1Mjc5IT09cyYmKGVbcisrXT1zKX1yZXR1cm4gcn0sdH0oKTtlLlN0cmluZ1RvVXRmMzI9aTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmludGVyaW09bmV3IFVpbnQ4QXJyYXkoMyl9cmV0dXJuIHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5pbnRlcmltLmZpbGwoMCl9LHQucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbih0LGUpe3ZhciBpPXQubGVuZ3RoO2lmKCFpKXJldHVybiAwO3ZhciByLG8sbixzLGE9MCxsPTAsaD0wO2lmKHRoaXMuaW50ZXJpbVswXSl7dmFyIGM9ITEsXz10aGlzLmludGVyaW1bMF07XyY9MTkyPT0oMjI0Jl8pPzMxOjIyND09KDI0MCZfKT8xNTo3O2Zvcih2YXIgZD0wLHU9dm9pZCAwOyh1PTYzJnRoaXMuaW50ZXJpbVsrK2RdKSYmZDw0OylfPDw9NixffD11O2Zvcih2YXIgZj0xOTI9PSgyMjQmdGhpcy5pbnRlcmltWzBdKT8yOjIyND09KDI0MCZ0aGlzLmludGVyaW1bMF0pPzM6NCxwPWYtZDtoPHA7KXtpZihoPj1pKXJldHVybiAwO2lmKDEyOCE9KDE5MiYodT10W2grK10pKSl7aC0tLGM9ITA7YnJlYWt9dGhpcy5pbnRlcmltW2QrK109dSxfPDw9NixffD02MyZ1fWN8fCgyPT09Zj9fPDEyOD9oLS06ZVthKytdPV86Mz09PWY/XzwyMDQ4fHxfPj01NTI5NiYmXzw9NTczNDN8fDY1Mjc5PT09X3x8KGVbYSsrXT1fKTpfPDY1NTM2fHxfPjExMTQxMTF8fChlW2ErK109XykpLHRoaXMuaW50ZXJpbS5maWxsKDApfWZvcih2YXIgZz1pLTQsdj1oO3Y8aTspe2Zvcig7ISghKHY8Zyl8fDEyOCYocj10W3ZdKXx8MTI4JihvPXRbdisxXSl8fDEyOCYobj10W3YrMl0pfHwxMjgmKHM9dFt2KzNdKSk7KWVbYSsrXT1yLGVbYSsrXT1vLGVbYSsrXT1uLGVbYSsrXT1zLHYrPTQ7aWYoKHI9dFt2KytdKTwxMjgpZVthKytdPXI7ZWxzZSBpZigxOTI9PSgyMjQmcikpe2lmKHY+PWkpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1yLGE7aWYoMTI4IT0oMTkyJihvPXRbdisrXSkpKXt2LS07Y29udGludWV9aWYoKGw9KDMxJnIpPDw2fDYzJm8pPDEyOCl7di0tO2NvbnRpbnVlfWVbYSsrXT1sfWVsc2UgaWYoMjI0PT0oMjQwJnIpKXtpZih2Pj1pKXJldHVybiB0aGlzLmludGVyaW1bMF09cixhO2lmKDEyOCE9KDE5MiYobz10W3YrK10pKSl7di0tO2NvbnRpbnVlfWlmKHY+PWkpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1yLHRoaXMuaW50ZXJpbVsxXT1vLGE7aWYoMTI4IT0oMTkyJihuPXRbdisrXSkpKXt2LS07Y29udGludWV9aWYoKGw9KDE1JnIpPDwxMnwoNjMmbyk8PDZ8NjMmbik8MjA0OHx8bD49NTUyOTYmJmw8PTU3MzQzfHw2NTI3OT09PWwpY29udGludWU7ZVthKytdPWx9ZWxzZSBpZigyNDA9PSgyNDgmcikpe2lmKHY+PWkpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1yLGE7aWYoMTI4IT0oMTkyJihvPXRbdisrXSkpKXt2LS07Y29udGludWV9aWYodj49aSlyZXR1cm4gdGhpcy5pbnRlcmltWzBdPXIsdGhpcy5pbnRlcmltWzFdPW8sYTtpZigxMjghPSgxOTImKG49dFt2KytdKSkpe3YtLTtjb250aW51ZX1pZih2Pj1pKXJldHVybiB0aGlzLmludGVyaW1bMF09cix0aGlzLmludGVyaW1bMV09byx0aGlzLmludGVyaW1bMl09bixhO2lmKDEyOCE9KDE5MiYocz10W3YrK10pKSl7di0tO2NvbnRpbnVlfWlmKChsPSg3JnIpPDwxOHwoNjMmbyk8PDEyfCg2MyZuKTw8Nnw2MyZzKTw2NTUzNnx8bD4xMTE0MTExKWNvbnRpbnVlO2VbYSsrXT1sfX1yZXR1cm4gYX0sdH0oKTtlLlV0ZjhUb1V0ZjMyPXJ9fSxlPXt9O3JldHVybiBmdW5jdGlvbiBpKHIpe2lmKGVbcl0pcmV0dXJuIGVbcl0uZXhwb3J0czt2YXIgbz1lW3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gdFtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxpKSxvLmV4cG9ydHN9KDc5NSl9KSgpfSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9eHRlcm0tYWRkb24td2ViZ2wuanMubWFwIiwiIWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9dCgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSx0KTtlbHNle3ZhciByPXQoKTtmb3IodmFyIGkgaW4gcikoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0czplKVtpXT1yW2ldfX0oc2VsZiwoZnVuY3Rpb24oKXtyZXR1cm4oKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgZT17NDU2NzpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkFjY2Vzc2liaWxpdHlNYW5hZ2VyPXZvaWQgMDt2YXIgbz1yKDkwNDIpLHM9cig2MTE0KSxhPXIoOTkyNCksYz1yKDM2NTYpLGw9cig4NDQpLGg9cig1NTk2KSx1PXIoOTYzMSksZj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQscil7dmFyIGk9ZS5jYWxsKHRoaXMpfHx0aGlzO2kuX3Rlcm1pbmFsPXQsaS5fcmVuZGVyU2VydmljZT1yLGkuX2xpdmVSZWdpb25MaW5lQ291bnQ9MCxpLl9jaGFyc1RvQ29uc3VtZT1bXSxpLl9jaGFyc1RvQW5ub3VuY2U9XCJcIixpLl9hY2Nlc3NpYmlsaXR5VHJlZVJvb3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpLl9hY2Nlc3NpYmlsaXR5VHJlZVJvb3QuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWFjY2Vzc2liaWxpdHlcIiksaS5fYWNjZXNzaWJpbGl0eVRyZWVSb290LnRhYkluZGV4PTAsaS5fcm93Q29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksaS5fcm93Q29udGFpbmVyLnNldEF0dHJpYnV0ZShcInJvbGVcIixcImxpc3RcIiksaS5fcm93Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1hY2Nlc3NpYmlsaXR5LXRyZWVcIiksaS5fcm93RWxlbWVudHM9W107Zm9yKHZhciBuPTA7bjxpLl90ZXJtaW5hbC5yb3dzO24rKylpLl9yb3dFbGVtZW50c1tuXT1pLl9jcmVhdGVBY2Nlc3NpYmlsaXR5VHJlZU5vZGUoKSxpLl9yb3dDb250YWluZXIuYXBwZW5kQ2hpbGQoaS5fcm93RWxlbWVudHNbbl0pO2lmKGkuX3RvcEJvdW5kYXJ5Rm9jdXNMaXN0ZW5lcj1mdW5jdGlvbihlKXtyZXR1cm4gaS5fb25Cb3VuZGFyeUZvY3VzKGUsMCl9LGkuX2JvdHRvbUJvdW5kYXJ5Rm9jdXNMaXN0ZW5lcj1mdW5jdGlvbihlKXtyZXR1cm4gaS5fb25Cb3VuZGFyeUZvY3VzKGUsMSl9LGkuX3Jvd0VsZW1lbnRzWzBdLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLGkuX3RvcEJvdW5kYXJ5Rm9jdXNMaXN0ZW5lciksaS5fcm93RWxlbWVudHNbaS5fcm93RWxlbWVudHMubGVuZ3RoLTFdLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLGkuX2JvdHRvbUJvdW5kYXJ5Rm9jdXNMaXN0ZW5lciksaS5fcmVmcmVzaFJvd3NEaW1lbnNpb25zKCksaS5fYWNjZXNzaWJpbGl0eVRyZWVSb290LmFwcGVuZENoaWxkKGkuX3Jvd0NvbnRhaW5lciksaS5fcmVuZGVyUm93c0RlYm91bmNlcj1uZXcgYS5UaW1lQmFzZWREZWJvdW5jZXIoaS5fcmVuZGVyUm93cy5iaW5kKGkpKSxpLl9yZWZyZXNoUm93cygpLGkuX2xpdmVSZWdpb249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpLl9saXZlUmVnaW9uLmNsYXNzTGlzdC5hZGQoXCJsaXZlLXJlZ2lvblwiKSxpLl9saXZlUmVnaW9uLnNldEF0dHJpYnV0ZShcImFyaWEtbGl2ZVwiLFwiYXNzZXJ0aXZlXCIpLGkuX2FjY2Vzc2liaWxpdHlUcmVlUm9vdC5hcHBlbmRDaGlsZChpLl9saXZlUmVnaW9uKSwhaS5fdGVybWluYWwuZWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZW5hYmxlIGFjY2Vzc2liaWxpdHkgYmVmb3JlIFRlcm1pbmFsLm9wZW5cIik7cmV0dXJuIGkuX3Rlcm1pbmFsLmVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KFwiYWZ0ZXJiZWdpblwiLGkuX2FjY2Vzc2liaWxpdHlUcmVlUm9vdCksaS5yZWdpc3RlcihpLl9yZW5kZXJSb3dzRGVib3VuY2VyKSxpLnJlZ2lzdGVyKGkuX3Rlcm1pbmFsLm9uUmVzaXplKChmdW5jdGlvbihlKXtyZXR1cm4gaS5fb25SZXNpemUoZS5yb3dzKX0pKSksaS5yZWdpc3RlcihpLl90ZXJtaW5hbC5vblJlbmRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGkuX3JlZnJlc2hSb3dzKGUuc3RhcnQsZS5lbmQpfSkpKSxpLnJlZ2lzdGVyKGkuX3Rlcm1pbmFsLm9uU2Nyb2xsKChmdW5jdGlvbigpe3JldHVybiBpLl9yZWZyZXNoUm93cygpfSkpKSxpLnJlZ2lzdGVyKGkuX3Rlcm1pbmFsLm9uQTExeUNoYXIoKGZ1bmN0aW9uKGUpe3JldHVybiBpLl9vbkNoYXIoZSl9KSkpLGkucmVnaXN0ZXIoaS5fdGVybWluYWwub25MaW5lRmVlZCgoZnVuY3Rpb24oKXtyZXR1cm4gaS5fb25DaGFyKFwiXFxuXCIpfSkpKSxpLnJlZ2lzdGVyKGkuX3Rlcm1pbmFsLm9uQTExeVRhYigoZnVuY3Rpb24oZSl7cmV0dXJuIGkuX29uVGFiKGUpfSkpKSxpLnJlZ2lzdGVyKGkuX3Rlcm1pbmFsLm9uS2V5KChmdW5jdGlvbihlKXtyZXR1cm4gaS5fb25LZXkoZS5rZXkpfSkpKSxpLnJlZ2lzdGVyKGkuX3Rlcm1pbmFsLm9uQmx1cigoZnVuY3Rpb24oKXtyZXR1cm4gaS5fY2xlYXJMaXZlUmVnaW9uKCl9KSkpLGkucmVnaXN0ZXIoaS5fcmVuZGVyU2VydmljZS5vbkRpbWVuc2lvbnNDaGFuZ2UoKGZ1bmN0aW9uKCl7cmV0dXJuIGkuX3JlZnJlc2hSb3dzRGltZW5zaW9ucygpfSkpKSxpLl9zY3JlZW5EcHJNb25pdG9yPW5ldyBoLlNjcmVlbkRwck1vbml0b3IsaS5yZWdpc3RlcihpLl9zY3JlZW5EcHJNb25pdG9yKSxpLl9zY3JlZW5EcHJNb25pdG9yLnNldExpc3RlbmVyKChmdW5jdGlvbigpe3JldHVybiBpLl9yZWZyZXNoUm93c0RpbWVuc2lvbnMoKX0pKSxpLnJlZ2lzdGVyKCgwLGMuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh3aW5kb3csXCJyZXNpemVcIiwoZnVuY3Rpb24oKXtyZXR1cm4gaS5fcmVmcmVzaFJvd3NEaW1lbnNpb25zKCl9KSkpLGl9cmV0dXJuIG4odCxlKSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuZGlzcG9zZS5jYWxsKHRoaXMpLCgwLHUucmVtb3ZlRWxlbWVudEZyb21QYXJlbnQpKHRoaXMuX2FjY2Vzc2liaWxpdHlUcmVlUm9vdCksdGhpcy5fcm93RWxlbWVudHMubGVuZ3RoPTB9LHQucHJvdG90eXBlLl9vbkJvdW5kYXJ5Rm9jdXM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLnRhcmdldCxpPXRoaXMuX3Jvd0VsZW1lbnRzWzA9PT10PzE6dGhpcy5fcm93RWxlbWVudHMubGVuZ3RoLTJdO2lmKHIuZ2V0QXR0cmlidXRlKFwiYXJpYS1wb3NpbnNldFwiKSE9PSgwPT09dD9cIjFcIjpcIlwiK3RoaXMuX3Rlcm1pbmFsLmJ1ZmZlci5saW5lcy5sZW5ndGgpJiZlLnJlbGF0ZWRUYXJnZXQ9PT1pKXt2YXIgbixvO2lmKDA9PT10PyhuPXIsbz10aGlzLl9yb3dFbGVtZW50cy5wb3AoKSx0aGlzLl9yb3dDb250YWluZXIucmVtb3ZlQ2hpbGQobykpOihuPXRoaXMuX3Jvd0VsZW1lbnRzLnNoaWZ0KCksbz1yLHRoaXMuX3Jvd0NvbnRhaW5lci5yZW1vdmVDaGlsZChuKSksbi5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIix0aGlzLl90b3BCb3VuZGFyeUZvY3VzTGlzdGVuZXIpLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsdGhpcy5fYm90dG9tQm91bmRhcnlGb2N1c0xpc3RlbmVyKSwwPT09dCl7dmFyIHM9dGhpcy5fY3JlYXRlQWNjZXNzaWJpbGl0eVRyZWVOb2RlKCk7dGhpcy5fcm93RWxlbWVudHMudW5zaGlmdChzKSx0aGlzLl9yb3dDb250YWluZXIuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KFwiYWZ0ZXJiZWdpblwiLHMpfWVsc2Ugcz10aGlzLl9jcmVhdGVBY2Nlc3NpYmlsaXR5VHJlZU5vZGUoKSx0aGlzLl9yb3dFbGVtZW50cy5wdXNoKHMpLHRoaXMuX3Jvd0NvbnRhaW5lci5hcHBlbmRDaGlsZChzKTt0aGlzLl9yb3dFbGVtZW50c1swXS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIix0aGlzLl90b3BCb3VuZGFyeUZvY3VzTGlzdGVuZXIpLHRoaXMuX3Jvd0VsZW1lbnRzW3RoaXMuX3Jvd0VsZW1lbnRzLmxlbmd0aC0xXS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIix0aGlzLl9ib3R0b21Cb3VuZGFyeUZvY3VzTGlzdGVuZXIpLHRoaXMuX3Rlcm1pbmFsLnNjcm9sbExpbmVzKDA9PT10Py0xOjEpLHRoaXMuX3Jvd0VsZW1lbnRzWzA9PT10PzE6dGhpcy5fcm93RWxlbWVudHMubGVuZ3RoLTJdLmZvY3VzKCksZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9fSx0LnByb3RvdHlwZS5fb25SZXNpemU9ZnVuY3Rpb24oZSl7dGhpcy5fcm93RWxlbWVudHNbdGhpcy5fcm93RWxlbWVudHMubGVuZ3RoLTFdLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLHRoaXMuX2JvdHRvbUJvdW5kYXJ5Rm9jdXNMaXN0ZW5lcik7Zm9yKHZhciB0PXRoaXMuX3Jvd0NvbnRhaW5lci5jaGlsZHJlbi5sZW5ndGg7dDx0aGlzLl90ZXJtaW5hbC5yb3dzO3QrKyl0aGlzLl9yb3dFbGVtZW50c1t0XT10aGlzLl9jcmVhdGVBY2Nlc3NpYmlsaXR5VHJlZU5vZGUoKSx0aGlzLl9yb3dDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fcm93RWxlbWVudHNbdF0pO2Zvcig7dGhpcy5fcm93RWxlbWVudHMubGVuZ3RoPmU7KXRoaXMuX3Jvd0NvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLl9yb3dFbGVtZW50cy5wb3AoKSk7dGhpcy5fcm93RWxlbWVudHNbdGhpcy5fcm93RWxlbWVudHMubGVuZ3RoLTFdLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLHRoaXMuX2JvdHRvbUJvdW5kYXJ5Rm9jdXNMaXN0ZW5lciksdGhpcy5fcmVmcmVzaFJvd3NEaW1lbnNpb25zKCl9LHQucHJvdG90eXBlLl9jcmVhdGVBY2Nlc3NpYmlsaXR5VHJlZU5vZGU9ZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3JldHVybiBlLnNldEF0dHJpYnV0ZShcInJvbGVcIixcImxpc3RpdGVtXCIpLGUudGFiSW5kZXg9LTEsdGhpcy5fcmVmcmVzaFJvd0RpbWVuc2lvbnMoZSksZX0sdC5wcm90b3R5cGUuX29uVGFiPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZTt0KyspdGhpcy5fb25DaGFyKFwiIFwiKX0sdC5wcm90b3R5cGUuX29uQ2hhcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMuX2xpdmVSZWdpb25MaW5lQ291bnQ8MjEmJih0aGlzLl9jaGFyc1RvQ29uc3VtZS5sZW5ndGg+MD90aGlzLl9jaGFyc1RvQ29uc3VtZS5zaGlmdCgpIT09ZSYmKHRoaXMuX2NoYXJzVG9Bbm5vdW5jZSs9ZSk6dGhpcy5fY2hhcnNUb0Fubm91bmNlKz1lLFwiXFxuXCI9PT1lJiYodGhpcy5fbGl2ZVJlZ2lvbkxpbmVDb3VudCsrLDIxPT09dGhpcy5fbGl2ZVJlZ2lvbkxpbmVDb3VudCYmKHRoaXMuX2xpdmVSZWdpb24udGV4dENvbnRlbnQrPW8udG9vTXVjaE91dHB1dCkpLHMuaXNNYWMmJnRoaXMuX2xpdmVSZWdpb24udGV4dENvbnRlbnQmJnRoaXMuX2xpdmVSZWdpb24udGV4dENvbnRlbnQubGVuZ3RoPjAmJiF0aGlzLl9saXZlUmVnaW9uLnBhcmVudE5vZGUmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5fYWNjZXNzaWJpbGl0eVRyZWVSb290LmFwcGVuZENoaWxkKHQuX2xpdmVSZWdpb24pfSksMCkpfSx0LnByb3RvdHlwZS5fY2xlYXJMaXZlUmVnaW9uPWZ1bmN0aW9uKCl7dGhpcy5fbGl2ZVJlZ2lvbi50ZXh0Q29udGVudD1cIlwiLHRoaXMuX2xpdmVSZWdpb25MaW5lQ291bnQ9MCxzLmlzTWFjJiYoMCx1LnJlbW92ZUVsZW1lbnRGcm9tUGFyZW50KSh0aGlzLl9saXZlUmVnaW9uKX0sdC5wcm90b3R5cGUuX29uS2V5PWZ1bmN0aW9uKGUpe3RoaXMuX2NsZWFyTGl2ZVJlZ2lvbigpLHRoaXMuX2NoYXJzVG9Db25zdW1lLnB1c2goZSl9LHQucHJvdG90eXBlLl9yZWZyZXNoUm93cz1mdW5jdGlvbihlLHQpe3RoaXMuX3JlbmRlclJvd3NEZWJvdW5jZXIucmVmcmVzaChlLHQsdGhpcy5fdGVybWluYWwucm93cyl9LHQucHJvdG90eXBlLl9yZW5kZXJSb3dzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMuX3Rlcm1pbmFsLmJ1ZmZlcixpPXIubGluZXMubGVuZ3RoLnRvU3RyaW5nKCksbj1lO248PXQ7bisrKXt2YXIgbz1yLnRyYW5zbGF0ZUJ1ZmZlckxpbmVUb1N0cmluZyhyLnlkaXNwK24sITApLHM9KHIueWRpc3ArbisxKS50b1N0cmluZygpLGE9dGhpcy5fcm93RWxlbWVudHNbbl07YSYmKDA9PT1vLmxlbmd0aD9hLmlubmVyVGV4dD1cIsKgXCI6YS50ZXh0Q29udGVudD1vLGEuc2V0QXR0cmlidXRlKFwiYXJpYS1wb3NpbnNldFwiLHMpLGEuc2V0QXR0cmlidXRlKFwiYXJpYS1zZXRzaXplXCIsaSkpfXRoaXMuX2Fubm91bmNlQ2hhcmFjdGVycygpfSx0LnByb3RvdHlwZS5fcmVmcmVzaFJvd3NEaW1lbnNpb25zPWZ1bmN0aW9uKCl7aWYodGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmFjdHVhbENlbGxIZWlnaHQpe3RoaXMuX3Jvd0VsZW1lbnRzLmxlbmd0aCE9PXRoaXMuX3Rlcm1pbmFsLnJvd3MmJnRoaXMuX29uUmVzaXplKHRoaXMuX3Rlcm1pbmFsLnJvd3MpO2Zvcih2YXIgZT0wO2U8dGhpcy5fdGVybWluYWwucm93cztlKyspdGhpcy5fcmVmcmVzaFJvd0RpbWVuc2lvbnModGhpcy5fcm93RWxlbWVudHNbZV0pfX0sdC5wcm90b3R5cGUuX3JlZnJlc2hSb3dEaW1lbnNpb25zPWZ1bmN0aW9uKGUpe2Uuc3R5bGUuaGVpZ2h0PXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5hY3R1YWxDZWxsSGVpZ2h0K1wicHhcIn0sdC5wcm90b3R5cGUuX2Fubm91bmNlQ2hhcmFjdGVycz1mdW5jdGlvbigpezAhPT10aGlzLl9jaGFyc1RvQW5ub3VuY2UubGVuZ3RoJiYodGhpcy5fbGl2ZVJlZ2lvbi50ZXh0Q29udGVudCs9dGhpcy5fY2hhcnNUb0Fubm91bmNlLHRoaXMuX2NoYXJzVG9Bbm5vdW5jZT1cIlwiKX0sdH0obC5EaXNwb3NhYmxlKTt0LkFjY2Vzc2liaWxpdHlNYW5hZ2VyPWZ9LDM2MTQ6KGUsdCk9PntmdW5jdGlvbiByKGUpe3JldHVybiBlLnJlcGxhY2UoL1xccj9cXG4vZyxcIlxcclwiKX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIHQ/XCJcdTAwMWJbMjAwflwiK2UrXCJcdTAwMWJbMjAxflwiOmV9ZnVuY3Rpb24gbihlLHQsbil7ZT1pKGU9cihlKSxuLmRlY1ByaXZhdGVNb2Rlcy5icmFja2V0ZWRQYXN0ZU1vZGUpLG4udHJpZ2dlckRhdGFFdmVudChlLCEwKSx0LnZhbHVlPVwiXCJ9ZnVuY3Rpb24gbyhlLHQscil7dmFyIGk9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPWUuY2xpZW50WC1pLmxlZnQtMTAsbz1lLmNsaWVudFktaS50b3AtMTA7dC5zdHlsZS53aWR0aD1cIjIwcHhcIix0LnN0eWxlLmhlaWdodD1cIjIwcHhcIix0LnN0eWxlLmxlZnQ9bitcInB4XCIsdC5zdHlsZS50b3A9bytcInB4XCIsdC5zdHlsZS56SW5kZXg9XCIxMDAwXCIsdC5mb2N1cygpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQucmlnaHRDbGlja0hhbmRsZXI9dC5tb3ZlVGV4dEFyZWFVbmRlck1vdXNlQ3Vyc29yPXQucGFzdGU9dC5oYW5kbGVQYXN0ZUV2ZW50PXQuY29weUhhbmRsZXI9dC5icmFja2V0VGV4dEZvclBhc3RlPXQucHJlcGFyZVRleHRGb3JUZXJtaW5hbD12b2lkIDAsdC5wcmVwYXJlVGV4dEZvclRlcm1pbmFsPXIsdC5icmFja2V0VGV4dEZvclBhc3RlPWksdC5jb3B5SGFuZGxlcj1mdW5jdGlvbihlLHQpe2UuY2xpcGJvYXJkRGF0YSYmZS5jbGlwYm9hcmREYXRhLnNldERhdGEoXCJ0ZXh0L3BsYWluXCIsdC5zZWxlY3Rpb25UZXh0KSxlLnByZXZlbnREZWZhdWx0KCl9LHQuaGFuZGxlUGFzdGVFdmVudD1mdW5jdGlvbihlLHQscil7ZS5zdG9wUHJvcGFnYXRpb24oKSxlLmNsaXBib2FyZERhdGEmJm4oZS5jbGlwYm9hcmREYXRhLmdldERhdGEoXCJ0ZXh0L3BsYWluXCIpLHQscil9LHQucGFzdGU9bix0Lm1vdmVUZXh0QXJlYVVuZGVyTW91c2VDdXJzb3I9byx0LnJpZ2h0Q2xpY2tIYW5kbGVyPWZ1bmN0aW9uKGUsdCxyLGksbil7byhlLHQsciksbiYmaS5yaWdodENsaWNrU2VsZWN0KGUpLHQudmFsdWU9aS5zZWxlY3Rpb25UZXh0LHQuc2VsZWN0KCl9fSw3MjM5OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db2xvckNvbnRyYXN0Q2FjaGU9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuX2NvbG9yPXt9LHRoaXMuX3JnYmE9e319cmV0dXJuIGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fY29sb3I9e30sdGhpcy5fcmdiYT17fX0sZS5wcm90b3R5cGUuc2V0Q3NzPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9yZ2JhW2VdfHwodGhpcy5fcmdiYVtlXT17fSksdGhpcy5fcmdiYVtlXVt0XT1yfSxlLnByb3RvdHlwZS5nZXRDc3M9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fcmdiYVtlXT90aGlzLl9yZ2JhW2VdW3RdOnZvaWQgMH0sZS5wcm90b3R5cGUuc2V0Q29sb3I9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX2NvbG9yW2VdfHwodGhpcy5fY29sb3JbZV09e30pLHRoaXMuX2NvbG9yW2VdW3RdPXJ9LGUucHJvdG90eXBlLmdldENvbG9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2NvbG9yW2VdP3RoaXMuX2NvbG9yW2VdW3RdOnZvaWQgMH0sZX0oKTt0LkNvbG9yQ29udHJhc3RDYWNoZT1yfSw1NjgwOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzJiZ0aGlzLl9fcmVhZHx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXTtpZighcilyZXR1cm4gZTt2YXIgaSxuLG89ci5jYWxsKGUpLHM9W107dHJ5e2Zvcig7KHZvaWQgMD09PXR8fHQtLSA+MCkmJiEoaT1vLm5leHQoKSkuZG9uZTspcy5wdXNoKGkudmFsdWUpfWNhdGNoKGUpe249e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2kmJiFpLmRvbmUmJihyPW8ucmV0dXJuKSYmci5jYWxsKG8pfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gc307T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db2xvck1hbmFnZXI9dC5ERUZBVUxUX0FOU0lfQ09MT1JTPXZvaWQgMDt2YXIgbj1yKDgwNTUpLG89cig3MjM5KSxzPW4uY3NzLnRvQ29sb3IoXCIjZmZmZmZmXCIpLGE9bi5jc3MudG9Db2xvcihcIiMwMDAwMDBcIiksYz1uLmNzcy50b0NvbG9yKFwiI2ZmZmZmZlwiKSxsPW4uY3NzLnRvQ29sb3IoXCIjMDAwMDAwXCIpLGg9e2NzczpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKVwiLHJnYmE6NDI5NDk2NzExN307dC5ERUZBVUxUX0FOU0lfQ09MT1JTPU9iamVjdC5mcmVlemUoZnVuY3Rpb24oKXtmb3IodmFyIGU9W24uY3NzLnRvQ29sb3IoXCIjMmUzNDM2XCIpLG4uY3NzLnRvQ29sb3IoXCIjY2MwMDAwXCIpLG4uY3NzLnRvQ29sb3IoXCIjNGU5YTA2XCIpLG4uY3NzLnRvQ29sb3IoXCIjYzRhMDAwXCIpLG4uY3NzLnRvQ29sb3IoXCIjMzQ2NWE0XCIpLG4uY3NzLnRvQ29sb3IoXCIjNzU1MDdiXCIpLG4uY3NzLnRvQ29sb3IoXCIjMDY5ODlhXCIpLG4uY3NzLnRvQ29sb3IoXCIjZDNkN2NmXCIpLG4uY3NzLnRvQ29sb3IoXCIjNTU1NzUzXCIpLG4uY3NzLnRvQ29sb3IoXCIjZWYyOTI5XCIpLG4uY3NzLnRvQ29sb3IoXCIjOGFlMjM0XCIpLG4uY3NzLnRvQ29sb3IoXCIjZmNlOTRmXCIpLG4uY3NzLnRvQ29sb3IoXCIjNzI5ZmNmXCIpLG4uY3NzLnRvQ29sb3IoXCIjYWQ3ZmE4XCIpLG4uY3NzLnRvQ29sb3IoXCIjMzRlMmUyXCIpLG4uY3NzLnRvQ29sb3IoXCIjZWVlZWVjXCIpXSx0PVswLDk1LDEzNSwxNzUsMjE1LDI1NV0scj0wO3I8MjE2O3IrKyl7dmFyIGk9dFtyLzM2JTZ8MF0sbz10W3IvNiU2fDBdLHM9dFtyJTZdO2UucHVzaCh7Y3NzOm4uY2hhbm5lbHMudG9Dc3MoaSxvLHMpLHJnYmE6bi5jaGFubmVscy50b1JnYmEoaSxvLHMpfSl9Zm9yKHI9MDtyPDI0O3IrKyl7dmFyIGE9OCsxMCpyO2UucHVzaCh7Y3NzOm4uY2hhbm5lbHMudG9Dc3MoYSxhLGEpLHJnYmE6bi5jaGFubmVscy50b1JnYmEoYSxhLGEpfSl9cmV0dXJuIGV9KCkpO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHIpe3RoaXMuYWxsb3dUcmFuc3BhcmVuY3k9cjt2YXIgaT1lLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7aS53aWR0aD0xLGkuaGVpZ2h0PTE7dmFyIHU9aS5nZXRDb250ZXh0KFwiMmRcIik7aWYoIXUpdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGdldCByZW5kZXJpbmcgY29udGV4dFwiKTt0aGlzLl9jdHg9dSx0aGlzLl9jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPVwiY29weVwiLHRoaXMuX2xpdG11c0NvbG9yPXRoaXMuX2N0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLDAsMSwxKSx0aGlzLl9jb250cmFzdENhY2hlPW5ldyBvLkNvbG9yQ29udHJhc3RDYWNoZSx0aGlzLmNvbG9ycz17Zm9yZWdyb3VuZDpzLGJhY2tncm91bmQ6YSxjdXJzb3I6YyxjdXJzb3JBY2NlbnQ6bCxzZWxlY3Rpb25UcmFuc3BhcmVudDpoLHNlbGVjdGlvbk9wYXF1ZTpuLmNvbG9yLmJsZW5kKGEsaCksc2VsZWN0aW9uRm9yZWdyb3VuZDp2b2lkIDAsYW5zaTp0LkRFRkFVTFRfQU5TSV9DT0xPUlMuc2xpY2UoKSxjb250cmFzdENhY2hlOnRoaXMuX2NvbnRyYXN0Q2FjaGV9LHRoaXMuX3VwZGF0ZVJlc3RvcmVDb2xvcnMoKX1yZXR1cm4gZS5wcm90b3R5cGUub25PcHRpb25zQ2hhbmdlPWZ1bmN0aW9uKGUpe1wibWluaW11bUNvbnRyYXN0UmF0aW9cIj09PWUmJnRoaXMuX2NvbnRyYXN0Q2FjaGUuY2xlYXIoKX0sZS5wcm90b3R5cGUuc2V0VGhlbWU9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9e30pLHRoaXMuY29sb3JzLmZvcmVncm91bmQ9dGhpcy5fcGFyc2VDb2xvcihlLmZvcmVncm91bmQscyksdGhpcy5jb2xvcnMuYmFja2dyb3VuZD10aGlzLl9wYXJzZUNvbG9yKGUuYmFja2dyb3VuZCxhKSx0aGlzLmNvbG9ycy5jdXJzb3I9dGhpcy5fcGFyc2VDb2xvcihlLmN1cnNvcixjLCEwKSx0aGlzLmNvbG9ycy5jdXJzb3JBY2NlbnQ9dGhpcy5fcGFyc2VDb2xvcihlLmN1cnNvckFjY2VudCxsLCEwKSx0aGlzLmNvbG9ycy5zZWxlY3Rpb25UcmFuc3BhcmVudD10aGlzLl9wYXJzZUNvbG9yKGUuc2VsZWN0aW9uLGgsITApLHRoaXMuY29sb3JzLnNlbGVjdGlvbk9wYXF1ZT1uLmNvbG9yLmJsZW5kKHRoaXMuY29sb3JzLmJhY2tncm91bmQsdGhpcy5jb2xvcnMuc2VsZWN0aW9uVHJhbnNwYXJlbnQpO3ZhciByPXtjc3M6XCJcIixyZ2JhOjB9O3RoaXMuY29sb3JzLnNlbGVjdGlvbkZvcmVncm91bmQ9ZS5zZWxlY3Rpb25Gb3JlZ3JvdW5kP3RoaXMuX3BhcnNlQ29sb3IoZS5zZWxlY3Rpb25Gb3JlZ3JvdW5kLHIpOnZvaWQgMCx0aGlzLmNvbG9ycy5zZWxlY3Rpb25Gb3JlZ3JvdW5kPT09ciYmKHRoaXMuY29sb3JzLnNlbGVjdGlvbkZvcmVncm91bmQ9dm9pZCAwKSxuLmNvbG9yLmlzT3BhcXVlKHRoaXMuY29sb3JzLnNlbGVjdGlvblRyYW5zcGFyZW50KSYmKHRoaXMuY29sb3JzLnNlbGVjdGlvblRyYW5zcGFyZW50PW4uY29sb3Iub3BhY2l0eSh0aGlzLmNvbG9ycy5zZWxlY3Rpb25UcmFuc3BhcmVudCwuMykpLHRoaXMuY29sb3JzLmFuc2lbMF09dGhpcy5fcGFyc2VDb2xvcihlLmJsYWNrLHQuREVGQVVMVF9BTlNJX0NPTE9SU1swXSksdGhpcy5jb2xvcnMuYW5zaVsxXT10aGlzLl9wYXJzZUNvbG9yKGUucmVkLHQuREVGQVVMVF9BTlNJX0NPTE9SU1sxXSksdGhpcy5jb2xvcnMuYW5zaVsyXT10aGlzLl9wYXJzZUNvbG9yKGUuZ3JlZW4sdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzJdKSx0aGlzLmNvbG9ycy5hbnNpWzNdPXRoaXMuX3BhcnNlQ29sb3IoZS55ZWxsb3csdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzNdKSx0aGlzLmNvbG9ycy5hbnNpWzRdPXRoaXMuX3BhcnNlQ29sb3IoZS5ibHVlLHQuREVGQVVMVF9BTlNJX0NPTE9SU1s0XSksdGhpcy5jb2xvcnMuYW5zaVs1XT10aGlzLl9wYXJzZUNvbG9yKGUubWFnZW50YSx0LkRFRkFVTFRfQU5TSV9DT0xPUlNbNV0pLHRoaXMuY29sb3JzLmFuc2lbNl09dGhpcy5fcGFyc2VDb2xvcihlLmN5YW4sdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzZdKSx0aGlzLmNvbG9ycy5hbnNpWzddPXRoaXMuX3BhcnNlQ29sb3IoZS53aGl0ZSx0LkRFRkFVTFRfQU5TSV9DT0xPUlNbN10pLHRoaXMuY29sb3JzLmFuc2lbOF09dGhpcy5fcGFyc2VDb2xvcihlLmJyaWdodEJsYWNrLHQuREVGQVVMVF9BTlNJX0NPTE9SU1s4XSksdGhpcy5jb2xvcnMuYW5zaVs5XT10aGlzLl9wYXJzZUNvbG9yKGUuYnJpZ2h0UmVkLHQuREVGQVVMVF9BTlNJX0NPTE9SU1s5XSksdGhpcy5jb2xvcnMuYW5zaVsxMF09dGhpcy5fcGFyc2VDb2xvcihlLmJyaWdodEdyZWVuLHQuREVGQVVMVF9BTlNJX0NPTE9SU1sxMF0pLHRoaXMuY29sb3JzLmFuc2lbMTFdPXRoaXMuX3BhcnNlQ29sb3IoZS5icmlnaHRZZWxsb3csdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzExXSksdGhpcy5jb2xvcnMuYW5zaVsxMl09dGhpcy5fcGFyc2VDb2xvcihlLmJyaWdodEJsdWUsdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzEyXSksdGhpcy5jb2xvcnMuYW5zaVsxM109dGhpcy5fcGFyc2VDb2xvcihlLmJyaWdodE1hZ2VudGEsdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzEzXSksdGhpcy5jb2xvcnMuYW5zaVsxNF09dGhpcy5fcGFyc2VDb2xvcihlLmJyaWdodEN5YW4sdC5ERUZBVUxUX0FOU0lfQ09MT1JTWzE0XSksdGhpcy5jb2xvcnMuYW5zaVsxNV09dGhpcy5fcGFyc2VDb2xvcihlLmJyaWdodFdoaXRlLHQuREVGQVVMVF9BTlNJX0NPTE9SU1sxNV0pLHRoaXMuX2NvbnRyYXN0Q2FjaGUuY2xlYXIoKSx0aGlzLl91cGRhdGVSZXN0b3JlQ29sb3JzKCl9LGUucHJvdG90eXBlLnJlc3RvcmVDb2xvcj1mdW5jdGlvbihlKXtpZih2b2lkIDAhPT1lKXN3aXRjaChlKXtjYXNlIDI1Njp0aGlzLmNvbG9ycy5mb3JlZ3JvdW5kPXRoaXMuX3Jlc3RvcmVDb2xvcnMuZm9yZWdyb3VuZDticmVhaztjYXNlIDI1Nzp0aGlzLmNvbG9ycy5iYWNrZ3JvdW5kPXRoaXMuX3Jlc3RvcmVDb2xvcnMuYmFja2dyb3VuZDticmVhaztjYXNlIDI1ODp0aGlzLmNvbG9ycy5jdXJzb3I9dGhpcy5fcmVzdG9yZUNvbG9ycy5jdXJzb3I7YnJlYWs7ZGVmYXVsdDp0aGlzLmNvbG9ycy5hbnNpW2VdPXRoaXMuX3Jlc3RvcmVDb2xvcnMuYW5zaVtlXX1lbHNlIGZvcih2YXIgdD0wO3Q8dGhpcy5fcmVzdG9yZUNvbG9ycy5hbnNpLmxlbmd0aDsrK3QpdGhpcy5jb2xvcnMuYW5zaVt0XT10aGlzLl9yZXN0b3JlQ29sb3JzLmFuc2lbdF19LGUucHJvdG90eXBlLl91cGRhdGVSZXN0b3JlQ29sb3JzPWZ1bmN0aW9uKCl7dGhpcy5fcmVzdG9yZUNvbG9ycz17Zm9yZWdyb3VuZDp0aGlzLmNvbG9ycy5mb3JlZ3JvdW5kLGJhY2tncm91bmQ6dGhpcy5jb2xvcnMuYmFja2dyb3VuZCxjdXJzb3I6dGhpcy5jb2xvcnMuY3Vyc29yLGFuc2k6dGhpcy5jb2xvcnMuYW5zaS5zbGljZSgpfX0sZS5wcm90b3R5cGUuX3BhcnNlQ29sb3I9ZnVuY3Rpb24oZSx0LHIpe2lmKHZvaWQgMD09PXImJihyPXRoaXMuYWxsb3dUcmFuc3BhcmVuY3kpLHZvaWQgMD09PWUpcmV0dXJuIHQ7aWYodGhpcy5fY3R4LmZpbGxTdHlsZT10aGlzLl9saXRtdXNDb2xvcix0aGlzLl9jdHguZmlsbFN0eWxlPWUsXCJzdHJpbmdcIiE9dHlwZW9mIHRoaXMuX2N0eC5maWxsU3R5bGUpcmV0dXJuIGNvbnNvbGUud2FybihcIkNvbG9yOiBcIitlK1wiIGlzIGludmFsaWQgdXNpbmcgZmFsbGJhY2sgXCIrdC5jc3MpLHQ7dGhpcy5fY3R4LmZpbGxSZWN0KDAsMCwxLDEpO3ZhciBvPXRoaXMuX2N0eC5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YTtpZigyNTUhPT1vWzNdKXtpZighcilyZXR1cm4gY29uc29sZS53YXJuKFwiQ29sb3I6IFwiK2UrXCIgaXMgdXNpbmcgdHJhbnNwYXJlbmN5LCBidXQgYWxsb3dUcmFuc3BhcmVuY3kgaXMgZmFsc2UuIFVzaW5nIGZhbGxiYWNrIFwiK3QuY3NzK1wiLlwiKSx0O3ZhciBzPWkodGhpcy5fY3R4LmZpbGxTdHlsZS5zdWJzdHJpbmcoNSx0aGlzLl9jdHguZmlsbFN0eWxlLmxlbmd0aC0xKS5zcGxpdChcIixcIikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gTnVtYmVyKGUpfSkpLDQpLGE9c1swXSxjPXNbMV0sbD1zWzJdLGg9c1szXSx1PU1hdGgucm91bmQoMjU1KmgpO3JldHVybntyZ2JhOm4uY2hhbm5lbHMudG9SZ2JhKGEsYyxsLHUpLGNzczplfX1yZXR1cm57Y3NzOnRoaXMuX2N0eC5maWxsU3R5bGUscmdiYTpuLmNoYW5uZWxzLnRvUmdiYShvWzBdLG9bMV0sb1syXSxvWzNdKX19LGV9KCk7dC5Db2xvck1hbmFnZXI9dX0sOTYzMTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMmJnRoaXMuX192YWx1ZXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLHI9dCYmZVt0XSxpPTA7aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBlJiZpPj1lLmxlbmd0aCYmKGU9dm9pZCAwKSx7dmFsdWU6ZSYmZVtpKytdLGRvbmU6IWV9fX07dGhyb3cgbmV3IFR5cGVFcnJvcih0P1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQucmVtb3ZlRWxlbWVudEZyb21QYXJlbnQ9dm9pZCAwLHQucmVtb3ZlRWxlbWVudEZyb21QYXJlbnQ9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdCxpLG49W10sbz0wO288YXJndW1lbnRzLmxlbmd0aDtvKyspbltvXT1hcmd1bWVudHNbb107dHJ5e2Zvcih2YXIgcz1yKG4pLGE9cy5uZXh0KCk7IWEuZG9uZTthPXMubmV4dCgpKXt2YXIgYz1hLnZhbHVlO251bGw9PT0oaT1udWxsPT1jP3ZvaWQgMDpjLnBhcmVudEVsZW1lbnQpfHx2b2lkIDA9PT1pfHxpLnJlbW92ZUNoaWxkKGMpfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYodD1zLnJldHVybikmJnQuY2FsbChzKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19fX0sMzY1NjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyPXZvaWQgMCx0LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcj1mdW5jdGlvbihlLHQscixpKXtlLmFkZEV2ZW50TGlzdGVuZXIodCxyLGkpO3ZhciBuPSExO3JldHVybntkaXNwb3NlOmZ1bmN0aW9uKCl7bnx8KG49ITAsZS5yZW1vdmVFdmVudExpc3RlbmVyKHQscixpKSl9fX19LDM1NTE6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LG49dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Nb3VzZVpvbmU9dC5MaW5raWZpZXI9dm9pZCAwO3ZhciBvPXIoODQ2MCkscz1yKDI1ODUpLGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyKXt0aGlzLl9idWZmZXJTZXJ2aWNlPWUsdGhpcy5fbG9nU2VydmljZT10LHRoaXMuX3VuaWNvZGVTZXJ2aWNlPXIsdGhpcy5fbGlua01hdGNoZXJzPVtdLHRoaXMuX25leHRMaW5rTWF0Y2hlcklkPTAsdGhpcy5fb25TaG93TGlua1VuZGVybGluZT1uZXcgby5FdmVudEVtaXR0ZXIsdGhpcy5fb25IaWRlTGlua1VuZGVybGluZT1uZXcgby5FdmVudEVtaXR0ZXIsdGhpcy5fb25MaW5rVG9vbHRpcD1uZXcgby5FdmVudEVtaXR0ZXIsdGhpcy5fcm93c1RvTGlua2lmeT17c3RhcnQ6dm9pZCAwLGVuZDp2b2lkIDB9fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJvblNob3dMaW5rVW5kZXJsaW5lXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblNob3dMaW5rVW5kZXJsaW5lLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uSGlkZUxpbmtVbmRlcmxpbmVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uSGlkZUxpbmtVbmRlcmxpbmUuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwib25MaW5rVG9vbHRpcFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25MaW5rVG9vbHRpcC5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5hdHRhY2hUb0RvbT1mdW5jdGlvbihlLHQpe3RoaXMuX2VsZW1lbnQ9ZSx0aGlzLl9tb3VzZVpvbmVNYW5hZ2VyPXR9LGUucHJvdG90eXBlLmxpbmtpZnlSb3dzPWZ1bmN0aW9uKHQscil7dmFyIGk9dGhpczt0aGlzLl9tb3VzZVpvbmVNYW5hZ2VyJiYodm9pZCAwPT09dGhpcy5fcm93c1RvTGlua2lmeS5zdGFydHx8dm9pZCAwPT09dGhpcy5fcm93c1RvTGlua2lmeS5lbmQ/KHRoaXMuX3Jvd3NUb0xpbmtpZnkuc3RhcnQ9dCx0aGlzLl9yb3dzVG9MaW5raWZ5LmVuZD1yKToodGhpcy5fcm93c1RvTGlua2lmeS5zdGFydD1NYXRoLm1pbih0aGlzLl9yb3dzVG9MaW5raWZ5LnN0YXJ0LHQpLHRoaXMuX3Jvd3NUb0xpbmtpZnkuZW5kPU1hdGgubWF4KHRoaXMuX3Jvd3NUb0xpbmtpZnkuZW5kLHIpKSx0aGlzLl9tb3VzZVpvbmVNYW5hZ2VyLmNsZWFyQWxsKHQsciksdGhpcy5fcm93c1RpbWVvdXRJZCYmY2xlYXJUaW1lb3V0KHRoaXMuX3Jvd3NUaW1lb3V0SWQpLHRoaXMuX3Jvd3NUaW1lb3V0SWQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gaS5fbGlua2lmeVJvd3MoKX0pLGUuX3RpbWVCZWZvcmVMYXRlbmN5KSl9LGUucHJvdG90eXBlLl9saW5raWZ5Um93cz1mdW5jdGlvbigpe3RoaXMuX3Jvd3NUaW1lb3V0SWQ9dm9pZCAwO3ZhciBlPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyO2lmKHZvaWQgMCE9PXRoaXMuX3Jvd3NUb0xpbmtpZnkuc3RhcnQmJnZvaWQgMCE9PXRoaXMuX3Jvd3NUb0xpbmtpZnkuZW5kKXt2YXIgdD1lLnlkaXNwK3RoaXMuX3Jvd3NUb0xpbmtpZnkuc3RhcnQ7aWYoISh0Pj1lLmxpbmVzLmxlbmd0aCkpe2Zvcih2YXIgcj1lLnlkaXNwK01hdGgubWluKHRoaXMuX3Jvd3NUb0xpbmtpZnkuZW5kLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cykrMSxpPU1hdGguY2VpbCgyZTMvdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKSxuPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLml0ZXJhdG9yKCExLHQscixpLGkpO24uaGFzTmV4dCgpOylmb3IodmFyIG89bi5uZXh0KCkscz0wO3M8dGhpcy5fbGlua01hdGNoZXJzLmxlbmd0aDtzKyspdGhpcy5fZG9MaW5raWZ5Um93KG8ucmFuZ2UuZmlyc3Qsby5jb250ZW50LHRoaXMuX2xpbmtNYXRjaGVyc1tzXSk7dGhpcy5fcm93c1RvTGlua2lmeS5zdGFydD12b2lkIDAsdGhpcy5fcm93c1RvTGlua2lmeS5lbmQ9dm9pZCAwfX1lbHNlIHRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJfcm93VG9MaW5raWZ5IHdhcyB1bnNldCBiZWZvcmUgX2xpbmtpZnlSb3dzIHdhcyBjYWxsZWRcIil9LGUucHJvdG90eXBlLnJlZ2lzdGVyTGlua01hdGNoZXI9ZnVuY3Rpb24oZSx0LHIpe2lmKHZvaWQgMD09PXImJihyPXt9KSwhdCl0aHJvdyBuZXcgRXJyb3IoXCJoYW5kbGVyIG11c3QgYmUgZGVmaW5lZFwiKTt2YXIgaT17aWQ6dGhpcy5fbmV4dExpbmtNYXRjaGVySWQrKyxyZWdleDplLGhhbmRsZXI6dCxtYXRjaEluZGV4OnIubWF0Y2hJbmRleCx2YWxpZGF0aW9uQ2FsbGJhY2s6ci52YWxpZGF0aW9uQ2FsbGJhY2ssaG92ZXJUb29sdGlwQ2FsbGJhY2s6ci50b29sdGlwQ2FsbGJhY2ssaG92ZXJMZWF2ZUNhbGxiYWNrOnIubGVhdmVDYWxsYmFjayx3aWxsTGlua0FjdGl2YXRlOnIud2lsbExpbmtBY3RpdmF0ZSxwcmlvcml0eTpyLnByaW9yaXR5fHwwfTtyZXR1cm4gdGhpcy5fYWRkTGlua01hdGNoZXJUb0xpc3QoaSksaS5pZH0sZS5wcm90b3R5cGUuX2FkZExpbmtNYXRjaGVyVG9MaXN0PWZ1bmN0aW9uKGUpe2lmKDAhPT10aGlzLl9saW5rTWF0Y2hlcnMubGVuZ3RoKXtmb3IodmFyIHQ9dGhpcy5fbGlua01hdGNoZXJzLmxlbmd0aC0xO3Q+PTA7dC0tKWlmKGUucHJpb3JpdHk8PXRoaXMuX2xpbmtNYXRjaGVyc1t0XS5wcmlvcml0eSlyZXR1cm4gdm9pZCB0aGlzLl9saW5rTWF0Y2hlcnMuc3BsaWNlKHQrMSwwLGUpO3RoaXMuX2xpbmtNYXRjaGVycy5zcGxpY2UoMCwwLGUpfWVsc2UgdGhpcy5fbGlua01hdGNoZXJzLnB1c2goZSl9LGUucHJvdG90eXBlLmRlcmVnaXN0ZXJMaW5rTWF0Y2hlcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMuX2xpbmtNYXRjaGVycy5sZW5ndGg7dCsrKWlmKHRoaXMuX2xpbmtNYXRjaGVyc1t0XS5pZD09PWUpcmV0dXJuIHRoaXMuX2xpbmtNYXRjaGVycy5zcGxpY2UodCwxKSwhMDtyZXR1cm4hMX0sZS5wcm90b3R5cGUuX2RvTGlua2lmeVJvdz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBpLG49dGhpcyxvPW5ldyBSZWdFeHAoci5yZWdleC5zb3VyY2UsKHIucmVnZXguZmxhZ3N8fFwiXCIpK1wiZ1wiKSxzPS0xLGE9ZnVuY3Rpb24oKXt2YXIgYT1pW1wibnVtYmVyXCIhPXR5cGVvZiByLm1hdGNoSW5kZXg/MDpyLm1hdGNoSW5kZXhdO2lmKCFhKXJldHVybiBjLl9sb2dTZXJ2aWNlLmRlYnVnKFwibWF0Y2ggZm91bmQgd2l0aG91dCBjb3JyZXNwb25kaW5nIG1hdGNoSW5kZXhcIixpLHIpLFwiYnJlYWtcIjtpZihzPXQuaW5kZXhPZihhLHMrMSksby5sYXN0SW5kZXg9cythLmxlbmd0aCxzPDApcmV0dXJuXCJicmVha1wiO3ZhciBsPWMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnN0cmluZ0luZGV4VG9CdWZmZXJJbmRleChlLHMpO2lmKGxbMF08MClyZXR1cm5cImJyZWFrXCI7dmFyIGg9Yy5fYnVmZmVyU2VydmljZS5idWZmZXIubGluZXMuZ2V0KGxbMF0pO2lmKCFoKXJldHVyblwiYnJlYWtcIjt2YXIgdT1oLmdldEZnKGxbMV0pLGY9dT91Pj45JjUxMTp2b2lkIDA7ci52YWxpZGF0aW9uQ2FsbGJhY2s/ci52YWxpZGF0aW9uQ2FsbGJhY2soYSwoZnVuY3Rpb24oZSl7bi5fcm93c1RpbWVvdXRJZHx8ZSYmbi5fYWRkTGluayhsWzFdLGxbMF0tbi5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3AsYSxyLGYpfSkpOmMuX2FkZExpbmsobFsxXSxsWzBdLWMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwLGEscixmKX0sYz10aGlzO251bGwhPT0oaT1vLmV4ZWModCkpJiZcImJyZWFrXCIhPT1hKCk7KTt9LGUucHJvdG90eXBlLl9hZGRMaW5rPWZ1bmN0aW9uKGUsdCxyLGksbil7dmFyIG89dGhpcztpZih0aGlzLl9tb3VzZVpvbmVNYW5hZ2VyJiZ0aGlzLl9lbGVtZW50KXt2YXIgcz10aGlzLl91bmljb2RlU2VydmljZS5nZXRTdHJpbmdDZWxsV2lkdGgociksYT1lJXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxsPXQrTWF0aC5mbG9vcihlL3RoaXMuX2J1ZmZlclNlcnZpY2UuY29scyksaD0oYStzKSV0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdT1sK01hdGguZmxvb3IoKGErcykvdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKTswPT09aCYmKGg9dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHUtLSksdGhpcy5fbW91c2Vab25lTWFuYWdlci5hZGQobmV3IGMoYSsxLGwrMSxoKzEsdSsxLChmdW5jdGlvbihlKXtpZihpLmhhbmRsZXIpcmV0dXJuIGkuaGFuZGxlcihlLHIpO3ZhciB0PXdpbmRvdy5vcGVuKCk7dD8odC5vcGVuZXI9bnVsbCx0LmxvY2F0aW9uLmhyZWY9cik6Y29uc29sZS53YXJuKFwiT3BlbmluZyBsaW5rIGJsb2NrZWQgYXMgb3BlbmVyIGNvdWxkIG5vdCBiZSBjbGVhcmVkXCIpfSksKGZ1bmN0aW9uKCl7by5fb25TaG93TGlua1VuZGVybGluZS5maXJlKG8uX2NyZWF0ZUxpbmtIb3ZlckV2ZW50KGEsbCxoLHUsbikpLG8uX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWN1cnNvci1wb2ludGVyXCIpfSksKGZ1bmN0aW9uKGUpe28uX29uTGlua1Rvb2x0aXAuZmlyZShvLl9jcmVhdGVMaW5rSG92ZXJFdmVudChhLGwsaCx1LG4pKSxpLmhvdmVyVG9vbHRpcENhbGxiYWNrJiZpLmhvdmVyVG9vbHRpcENhbGxiYWNrKGUscix7c3RhcnQ6e3g6YSx5Omx9LGVuZDp7eDpoLHk6dX19KX0pLChmdW5jdGlvbigpe28uX29uSGlkZUxpbmtVbmRlcmxpbmUuZmlyZShvLl9jcmVhdGVMaW5rSG92ZXJFdmVudChhLGwsaCx1LG4pKSxvLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJ4dGVybS1jdXJzb3ItcG9pbnRlclwiKSxpLmhvdmVyTGVhdmVDYWxsYmFjayYmaS5ob3ZlckxlYXZlQ2FsbGJhY2soKX0pLChmdW5jdGlvbihlKXtyZXR1cm4haS53aWxsTGlua0FjdGl2YXRlfHxpLndpbGxMaW5rQWN0aXZhdGUoZSxyKX0pKSl9fSxlLnByb3RvdHlwZS5fY3JlYXRlTGlua0hvdmVyRXZlbnQ9ZnVuY3Rpb24oZSx0LHIsaSxuKXtyZXR1cm57eDE6ZSx5MTp0LHgyOnIseTI6aSxjb2xzOnRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxmZzpufX0sZS5fdGltZUJlZm9yZUxhdGVuY3k9MjAwLGU9aShbbigwLHMuSUJ1ZmZlclNlcnZpY2UpLG4oMSxzLklMb2dTZXJ2aWNlKSxuKDIscy5JVW5pY29kZVNlcnZpY2UpXSxlKX0oKTt0LkxpbmtpZmllcj1hO3ZhciBjPWZ1bmN0aW9uKGUsdCxyLGksbixvLHMsYSxjKXt0aGlzLngxPWUsdGhpcy55MT10LHRoaXMueDI9cix0aGlzLnkyPWksdGhpcy5jbGlja0NhbGxiYWNrPW4sdGhpcy5ob3ZlckNhbGxiYWNrPW8sdGhpcy50b29sdGlwQ2FsbGJhY2s9cyx0aGlzLmxlYXZlQ2FsbGJhY2s9YSx0aGlzLndpbGxMaW5rQWN0aXZhdGU9Y307dC5Nb3VzZVpvbmU9Y30sNjQ2NTpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KSxvPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LHM9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX0sYT10aGlzJiZ0aGlzLl9fdmFsdWVzfHxmdW5jdGlvbihlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixyPXQmJmVbdF0saT0wO2lmKHIpcmV0dXJuIHIuY2FsbChlKTtpZihlJiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSYmaT49ZS5sZW5ndGgmJihlPXZvaWQgMCkse3ZhbHVlOmUmJmVbaSsrXSxkb25lOiFlfX19O3Rocm93IG5ldyBUeXBlRXJyb3IodD9cIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCI6XCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpfSxjPXRoaXMmJnRoaXMuX19yZWFkfHxmdW5jdGlvbihlLHQpe3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdO2lmKCFyKXJldHVybiBlO3ZhciBpLG4sbz1yLmNhbGwoZSkscz1bXTt0cnl7Zm9yKDsodm9pZCAwPT09dHx8dC0tID4wKSYmIShpPW8ubmV4dCgpKS5kb25lOylzLnB1c2goaS52YWx1ZSl9Y2F0Y2goZSl7bj17ZXJyb3I6ZX19ZmluYWxseXt0cnl7aSYmIWkuZG9uZSYmKHI9by5yZXR1cm4pJiZyLmNhbGwobyl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiBzfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxpbmtpZmllcjI9dm9pZCAwO3ZhciBsPXIoMjU4NSksaD1yKDg0NjApLHU9cig4NDQpLGY9cigzNjU2KSxfPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7dmFyIHI9ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9idWZmZXJTZXJ2aWNlPXQsci5fbGlua1Byb3ZpZGVycz1bXSxyLl9saW5rQ2FjaGVEaXNwb3NhYmxlcz1bXSxyLl9pc01vdXNlT3V0PSEwLHIuX2FjdGl2ZUxpbmU9LTEsci5fb25TaG93TGlua1VuZGVybGluZT1yLnJlZ2lzdGVyKG5ldyBoLkV2ZW50RW1pdHRlciksci5fb25IaWRlTGlua1VuZGVybGluZT1yLnJlZ2lzdGVyKG5ldyBoLkV2ZW50RW1pdHRlciksci5yZWdpc3RlcigoMCx1LmdldERpc3Bvc2VBcnJheURpc3Bvc2FibGUpKHIuX2xpbmtDYWNoZURpc3Bvc2FibGVzKSkscn1yZXR1cm4gbih0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImN1cnJlbnRMaW5rXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50TGlua30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvblNob3dMaW5rVW5kZXJsaW5lXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblNob3dMaW5rVW5kZXJsaW5lLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uSGlkZUxpbmtVbmRlcmxpbmVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uSGlkZUxpbmtVbmRlcmxpbmUuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUucmVnaXN0ZXJMaW5rUHJvdmlkZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fbGlua1Byb3ZpZGVycy5wdXNoKGUpLHtkaXNwb3NlOmZ1bmN0aW9uKCl7dmFyIHI9dC5fbGlua1Byb3ZpZGVycy5pbmRleE9mKGUpOy0xIT09ciYmdC5fbGlua1Byb3ZpZGVycy5zcGxpY2UociwxKX19fSx0LnByb3RvdHlwZS5hdHRhY2hUb0RvbT1mdW5jdGlvbihlLHQscil7dmFyIGk9dGhpczt0aGlzLl9lbGVtZW50PWUsdGhpcy5fbW91c2VTZXJ2aWNlPXQsdGhpcy5fcmVuZGVyU2VydmljZT1yLHRoaXMucmVnaXN0ZXIoKDAsZi5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuX2VsZW1lbnQsXCJtb3VzZWxlYXZlXCIsKGZ1bmN0aW9uKCl7aS5faXNNb3VzZU91dD0hMCxpLl9jbGVhckN1cnJlbnRMaW5rKCl9KSkpLHRoaXMucmVnaXN0ZXIoKDAsZi5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuX2VsZW1lbnQsXCJtb3VzZW1vdmVcIix0aGlzLl9vbk1vdXNlTW92ZS5iaW5kKHRoaXMpKSksdGhpcy5yZWdpc3RlcigoMCxmLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy5fZWxlbWVudCxcIm1vdXNlZG93blwiLHRoaXMuX2hhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpKSksdGhpcy5yZWdpc3RlcigoMCxmLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy5fZWxlbWVudCxcIm1vdXNldXBcIix0aGlzLl9oYW5kbGVNb3VzZVVwLmJpbmQodGhpcykpKX0sdC5wcm90b3R5cGUuX29uTW91c2VNb3ZlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2xhc3RNb3VzZUV2ZW50PWUsdGhpcy5fZWxlbWVudCYmdGhpcy5fbW91c2VTZXJ2aWNlKXt2YXIgdD10aGlzLl9wb3NpdGlvbkZyb21Nb3VzZUV2ZW50KGUsdGhpcy5fZWxlbWVudCx0aGlzLl9tb3VzZVNlcnZpY2UpO2lmKHQpe3RoaXMuX2lzTW91c2VPdXQ9ITE7Zm9yKHZhciByPWUuY29tcG9zZWRQYXRoKCksaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbj1yW2ldO2lmKG4uY2xhc3NMaXN0LmNvbnRhaW5zKFwieHRlcm1cIikpYnJlYWs7aWYobi5jbGFzc0xpc3QuY29udGFpbnMoXCJ4dGVybS1ob3ZlclwiKSlyZXR1cm59dGhpcy5fbGFzdEJ1ZmZlckNlbGwmJnQueD09PXRoaXMuX2xhc3RCdWZmZXJDZWxsLngmJnQueT09PXRoaXMuX2xhc3RCdWZmZXJDZWxsLnl8fCh0aGlzLl9vbkhvdmVyKHQpLHRoaXMuX2xhc3RCdWZmZXJDZWxsPXQpfX19LHQucHJvdG90eXBlLl9vbkhvdmVyPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2FjdGl2ZUxpbmUhPT1lLnkpcmV0dXJuIHRoaXMuX2NsZWFyQ3VycmVudExpbmsoKSx2b2lkIHRoaXMuX2Fza0ZvckxpbmsoZSwhMSk7dGhpcy5fY3VycmVudExpbmsmJnRoaXMuX2xpbmtBdFBvc2l0aW9uKHRoaXMuX2N1cnJlbnRMaW5rLmxpbmssZSl8fCh0aGlzLl9jbGVhckN1cnJlbnRMaW5rKCksdGhpcy5fYXNrRm9yTGluayhlLCEwKSl9LHQucHJvdG90eXBlLl9hc2tGb3JMaW5rPWZ1bmN0aW9uKGUsdCl7dmFyIHIsaSxuLG8scz10aGlzO3RoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcyYmdHx8KG51bGw9PT0obj10aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMpfHx2b2lkIDA9PT1ufHxuLmZvckVhY2goKGZ1bmN0aW9uKGUpe251bGw9PWV8fGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5saW5rLmRpc3Bvc2UmJmUubGluay5kaXNwb3NlKCl9KSl9KSksdGhpcy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzPW5ldyBNYXAsdGhpcy5fYWN0aXZlTGluZT1lLnkpO3ZhciBsPSExLGg9ZnVuY3Rpb24ocixpKXt0PyhudWxsPT09KG89dS5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzKXx8dm9pZCAwPT09bz92b2lkIDA6by5nZXQocikpJiYobD11Ll9jaGVja0xpbmtQcm92aWRlclJlc3VsdChyLGUsbCkpOmkucHJvdmlkZUxpbmtzKGUueSwoZnVuY3Rpb24odCl7dmFyIGksbjtpZighcy5faXNNb3VzZU91dCl7dmFyIG89bnVsbD09dD92b2lkIDA6dC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybntsaW5rOmV9fSkpO251bGw9PT0oaT1zLl9hY3RpdmVQcm92aWRlclJlcGxpZXMpfHx2b2lkIDA9PT1pfHxpLnNldChyLG8pLGw9cy5fY2hlY2tMaW5rUHJvdmlkZXJSZXN1bHQocixlLGwpLChudWxsPT09KG49cy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzKXx8dm9pZCAwPT09bj92b2lkIDA6bi5zaXplKT09PXMuX2xpbmtQcm92aWRlcnMubGVuZ3RoJiZzLl9yZW1vdmVJbnRlcnNlY3RpbmdMaW5rcyhlLnkscy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzKX19KSl9LHU9dGhpczt0cnl7Zm9yKHZhciBmPWEodGhpcy5fbGlua1Byb3ZpZGVycy5lbnRyaWVzKCkpLF89Zi5uZXh0KCk7IV8uZG9uZTtfPWYubmV4dCgpKXt2YXIgZD1jKF8udmFsdWUsMik7aChkWzBdLGRbMV0pfX1jYXRjaChlKXtyPXtlcnJvcjplfX1maW5hbGx5e3RyeXtfJiYhXy5kb25lJiYoaT1mLnJldHVybikmJmkuY2FsbChmKX1maW5hbGx5e2lmKHIpdGhyb3cgci5lcnJvcn19fSx0LnByb3RvdHlwZS5fcmVtb3ZlSW50ZXJzZWN0aW5nTGlua3M9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9bmV3IFNldCxpPTA7aTx0LnNpemU7aSsrKXt2YXIgbj10LmdldChpKTtpZihuKWZvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKWZvcih2YXIgcz1uW29dLGE9cy5saW5rLnJhbmdlLnN0YXJ0Lnk8ZT8wOnMubGluay5yYW5nZS5zdGFydC54LGM9cy5saW5rLnJhbmdlLmVuZC55PmU/dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzOnMubGluay5yYW5nZS5lbmQueCxsPWE7bDw9YztsKyspe2lmKHIuaGFzKGwpKXtuLnNwbGljZShvLS0sMSk7YnJlYWt9ci5hZGQobCl9fX0sdC5wcm90b3R5cGUuX2NoZWNrTGlua1Byb3ZpZGVyUmVzdWx0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXM7aWYoIXRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcylyZXR1cm4gcjtmb3IodmFyIG89dGhpcy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzLmdldChlKSxzPSExLGE9MDthPGU7YSsrKXRoaXMuX2FjdGl2ZVByb3ZpZGVyUmVwbGllcy5oYXMoYSkmJiF0aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMuZ2V0KGEpfHwocz0hMCk7aWYoIXMmJm8pe3ZhciBjPW8uZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4uX2xpbmtBdFBvc2l0aW9uKGUubGluayx0KX0pKTtjJiYocj0hMCx0aGlzLl9oYW5kbGVOZXdMaW5rKGMpKX1pZih0aGlzLl9hY3RpdmVQcm92aWRlclJlcGxpZXMuc2l6ZT09PXRoaXMuX2xpbmtQcm92aWRlcnMubGVuZ3RoJiYhcilmb3IoYT0wO2E8dGhpcy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzLnNpemU7YSsrKXt2YXIgbD1udWxsPT09KGk9dGhpcy5fYWN0aXZlUHJvdmlkZXJSZXBsaWVzLmdldChhKSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4uX2xpbmtBdFBvc2l0aW9uKGUubGluayx0KX0pKTtpZihsKXtyPSEwLHRoaXMuX2hhbmRsZU5ld0xpbmsobCk7YnJlYWt9fXJldHVybiByfSx0LnByb3RvdHlwZS5faGFuZGxlTW91c2VEb3duPWZ1bmN0aW9uKCl7dGhpcy5fbW91c2VEb3duTGluaz10aGlzLl9jdXJyZW50TGlua30sdC5wcm90b3R5cGUuX2hhbmRsZU1vdXNlVXA9ZnVuY3Rpb24oZSl7aWYodGhpcy5fZWxlbWVudCYmdGhpcy5fbW91c2VTZXJ2aWNlJiZ0aGlzLl9jdXJyZW50TGluayl7dmFyIHQ9dGhpcy5fcG9zaXRpb25Gcm9tTW91c2VFdmVudChlLHRoaXMuX2VsZW1lbnQsdGhpcy5fbW91c2VTZXJ2aWNlKTt0JiZ0aGlzLl9tb3VzZURvd25MaW5rPT09dGhpcy5fY3VycmVudExpbmsmJnRoaXMuX2xpbmtBdFBvc2l0aW9uKHRoaXMuX2N1cnJlbnRMaW5rLmxpbmssdCkmJnRoaXMuX2N1cnJlbnRMaW5rLmxpbmsuYWN0aXZhdGUoZSx0aGlzLl9jdXJyZW50TGluay5saW5rLnRleHQpfX0sdC5wcm90b3R5cGUuX2NsZWFyQ3VycmVudExpbms9ZnVuY3Rpb24oZSx0KXt0aGlzLl9lbGVtZW50JiZ0aGlzLl9jdXJyZW50TGluayYmdGhpcy5fbGFzdE1vdXNlRXZlbnQmJighZXx8IXR8fHRoaXMuX2N1cnJlbnRMaW5rLmxpbmsucmFuZ2Uuc3RhcnQueT49ZSYmdGhpcy5fY3VycmVudExpbmsubGluay5yYW5nZS5lbmQueTw9dCkmJih0aGlzLl9saW5rTGVhdmUodGhpcy5fZWxlbWVudCx0aGlzLl9jdXJyZW50TGluay5saW5rLHRoaXMuX2xhc3RNb3VzZUV2ZW50KSx0aGlzLl9jdXJyZW50TGluaz12b2lkIDAsKDAsdS5kaXNwb3NlQXJyYXkpKHRoaXMuX2xpbmtDYWNoZURpc3Bvc2FibGVzKSl9LHQucHJvdG90eXBlLl9oYW5kbGVOZXdMaW5rPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodGhpcy5fZWxlbWVudCYmdGhpcy5fbGFzdE1vdXNlRXZlbnQmJnRoaXMuX21vdXNlU2VydmljZSl7dmFyIHI9dGhpcy5fcG9zaXRpb25Gcm9tTW91c2VFdmVudCh0aGlzLl9sYXN0TW91c2VFdmVudCx0aGlzLl9lbGVtZW50LHRoaXMuX21vdXNlU2VydmljZSk7ciYmdGhpcy5fbGlua0F0UG9zaXRpb24oZS5saW5rLHIpJiYodGhpcy5fY3VycmVudExpbms9ZSx0aGlzLl9jdXJyZW50TGluay5zdGF0ZT17ZGVjb3JhdGlvbnM6e3VuZGVybGluZTp2b2lkIDA9PT1lLmxpbmsuZGVjb3JhdGlvbnN8fGUubGluay5kZWNvcmF0aW9ucy51bmRlcmxpbmUscG9pbnRlckN1cnNvcjp2b2lkIDA9PT1lLmxpbmsuZGVjb3JhdGlvbnN8fGUubGluay5kZWNvcmF0aW9ucy5wb2ludGVyQ3Vyc29yfSxpc0hvdmVyZWQ6ITB9LHRoaXMuX2xpbmtIb3Zlcih0aGlzLl9lbGVtZW50LGUubGluayx0aGlzLl9sYXN0TW91c2VFdmVudCksZS5saW5rLmRlY29yYXRpb25zPXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUubGluay5kZWNvcmF0aW9ucyx7cG9pbnRlckN1cnNvcjp7Z2V0OmZ1bmN0aW9uKCl7dmFyIGUscjtyZXR1cm4gbnVsbD09PShyPW51bGw9PT0oZT10Ll9jdXJyZW50TGluayl8fHZvaWQgMD09PWU/dm9pZCAwOmUuc3RhdGUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmRlY29yYXRpb25zLnBvaW50ZXJDdXJzb3J9LHNldDpmdW5jdGlvbihlKXt2YXIgcixpOyhudWxsPT09KHI9dC5fY3VycmVudExpbmspfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0YXRlKSYmdC5fY3VycmVudExpbmsuc3RhdGUuZGVjb3JhdGlvbnMucG9pbnRlckN1cnNvciE9PWUmJih0Ll9jdXJyZW50TGluay5zdGF0ZS5kZWNvcmF0aW9ucy5wb2ludGVyQ3Vyc29yPWUsdC5fY3VycmVudExpbmsuc3RhdGUuaXNIb3ZlcmVkJiYobnVsbD09PShpPXQuX2VsZW1lbnQpfHx2b2lkIDA9PT1pfHxpLmNsYXNzTGlzdC50b2dnbGUoXCJ4dGVybS1jdXJzb3ItcG9pbnRlclwiLGUpKSl9fSx1bmRlcmxpbmU6e2dldDpmdW5jdGlvbigpe3ZhciBlLHI7cmV0dXJuIG51bGw9PT0ocj1udWxsPT09KGU9dC5fY3VycmVudExpbmspfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnN0YXRlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5kZWNvcmF0aW9ucy51bmRlcmxpbmV9LHNldDpmdW5jdGlvbihyKXt2YXIgaSxuLG87KG51bGw9PT0oaT10Ll9jdXJyZW50TGluayl8fHZvaWQgMD09PWk/dm9pZCAwOmkuc3RhdGUpJiYobnVsbD09PShvPW51bGw9PT0obj10Ll9jdXJyZW50TGluayl8fHZvaWQgMD09PW4/dm9pZCAwOm4uc3RhdGUpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmRlY29yYXRpb25zLnVuZGVybGluZSkhPT1yJiYodC5fY3VycmVudExpbmsuc3RhdGUuZGVjb3JhdGlvbnMudW5kZXJsaW5lPXIsdC5fY3VycmVudExpbmsuc3RhdGUuaXNIb3ZlcmVkJiZ0Ll9maXJlVW5kZXJsaW5lRXZlbnQoZS5saW5rLHIpKX19fSksdGhpcy5fcmVuZGVyU2VydmljZSYmdGhpcy5fbGlua0NhY2hlRGlzcG9zYWJsZXMucHVzaCh0aGlzLl9yZW5kZXJTZXJ2aWNlLm9uUmVuZGVyZWRWaWV3cG9ydENoYW5nZSgoZnVuY3Rpb24oZSl7dmFyIHI9MD09PWUuc3RhcnQ/MDplLnN0YXJ0KzErdC5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3A7dC5fY2xlYXJDdXJyZW50TGluayhyLGUuZW5kKzErdC5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3ApfSkpKSl9fSx0LnByb3RvdHlwZS5fbGlua0hvdmVyPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaTsobnVsbD09PShpPXRoaXMuX2N1cnJlbnRMaW5rKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGF0ZSkmJih0aGlzLl9jdXJyZW50TGluay5zdGF0ZS5pc0hvdmVyZWQ9ITAsdGhpcy5fY3VycmVudExpbmsuc3RhdGUuZGVjb3JhdGlvbnMudW5kZXJsaW5lJiZ0aGlzLl9maXJlVW5kZXJsaW5lRXZlbnQodCwhMCksdGhpcy5fY3VycmVudExpbmsuc3RhdGUuZGVjb3JhdGlvbnMucG9pbnRlckN1cnNvciYmZS5jbGFzc0xpc3QuYWRkKFwieHRlcm0tY3Vyc29yLXBvaW50ZXJcIikpLHQuaG92ZXImJnQuaG92ZXIocix0LnRleHQpfSx0LnByb3RvdHlwZS5fZmlyZVVuZGVybGluZUV2ZW50PWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5yYW5nZSxpPXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwLG49dGhpcy5fY3JlYXRlTGlua1VuZGVybGluZUV2ZW50KHIuc3RhcnQueC0xLHIuc3RhcnQueS1pLTEsci5lbmQueCxyLmVuZC55LWktMSx2b2lkIDApOyh0P3RoaXMuX29uU2hvd0xpbmtVbmRlcmxpbmU6dGhpcy5fb25IaWRlTGlua1VuZGVybGluZSkuZmlyZShuKX0sdC5wcm90b3R5cGUuX2xpbmtMZWF2ZT1mdW5jdGlvbihlLHQscil7dmFyIGk7KG51bGw9PT0oaT10aGlzLl9jdXJyZW50TGluayl8fHZvaWQgMD09PWk/dm9pZCAwOmkuc3RhdGUpJiYodGhpcy5fY3VycmVudExpbmsuc3RhdGUuaXNIb3ZlcmVkPSExLHRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmRlY29yYXRpb25zLnVuZGVybGluZSYmdGhpcy5fZmlyZVVuZGVybGluZUV2ZW50KHQsITEpLHRoaXMuX2N1cnJlbnRMaW5rLnN0YXRlLmRlY29yYXRpb25zLnBvaW50ZXJDdXJzb3ImJmUuY2xhc3NMaXN0LnJlbW92ZShcInh0ZXJtLWN1cnNvci1wb2ludGVyXCIpKSx0LmxlYXZlJiZ0LmxlYXZlKHIsdC50ZXh0KX0sdC5wcm90b3R5cGUuX2xpbmtBdFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5yYW5nZS5zdGFydC55PT09ZS5yYW5nZS5lbmQueSxpPWUucmFuZ2Uuc3RhcnQueTx0Lnksbj1lLnJhbmdlLmVuZC55PnQueTtyZXR1cm4ociYmZS5yYW5nZS5zdGFydC54PD10LngmJmUucmFuZ2UuZW5kLng+PXQueHx8aSYmZS5yYW5nZS5lbmQueD49dC54fHxuJiZlLnJhbmdlLnN0YXJ0Lng8PXQueHx8aSYmbikmJmUucmFuZ2Uuc3RhcnQueTw9dC55JiZlLnJhbmdlLmVuZC55Pj10Lnl9LHQucHJvdG90eXBlLl9wb3NpdGlvbkZyb21Nb3VzZUV2ZW50PWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yLmdldENvb3JkcyhlLHQsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyk7aWYoaSlyZXR1cm57eDppWzBdLHk6aVsxXSt0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcH19LHQucHJvdG90eXBlLl9jcmVhdGVMaW5rVW5kZXJsaW5lRXZlbnQ9ZnVuY3Rpb24oZSx0LHIsaSxuKXtyZXR1cm57eDE6ZSx5MTp0LHgyOnIseTI6aSxjb2xzOnRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxmZzpufX0sbyhbcygwLGwuSUJ1ZmZlclNlcnZpY2UpXSx0KX0odS5EaXNwb3NhYmxlKTt0LkxpbmtpZmllcjI9X30sOTA0MjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudG9vTXVjaE91dHB1dD10LnByb21wdExhYmVsPXZvaWQgMCx0LnByb21wdExhYmVsPVwiVGVybWluYWwgaW5wdXRcIix0LnRvb011Y2hPdXRwdXQ9XCJUb28gbXVjaCBvdXRwdXQgdG8gYW5ub3VuY2UsIG5hdmlnYXRlIHRvIHJvd3MgbWFudWFsbHkgdG8gcmVhZFwifSw2OTU0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pLG89dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQscixpKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTppO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixpKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShuPWVbYV0pJiYocz0obzwzP24ocyk6bz4zP24odCxyLHMpOm4odCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30scz10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dChyLGksZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk1vdXNlWm9uZU1hbmFnZXI9dm9pZCAwO3ZhciBhPXIoODQ0KSxjPXIoMzY1NiksbD1yKDQ3MjUpLGg9cigyNTg1KSx1PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxyLGksbixvLHMpe3ZhciBhPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gYS5fZWxlbWVudD10LGEuX3NjcmVlbkVsZW1lbnQ9cixhLl9idWZmZXJTZXJ2aWNlPWksYS5fbW91c2VTZXJ2aWNlPW4sYS5fc2VsZWN0aW9uU2VydmljZT1vLGEuX29wdGlvbnNTZXJ2aWNlPXMsYS5fem9uZXM9W10sYS5fYXJlWm9uZXNBY3RpdmU9ITEsYS5fbGFzdEhvdmVyQ29vcmRzPVt2b2lkIDAsdm9pZCAwXSxhLl9pbml0aWFsU2VsZWN0aW9uTGVuZ3RoPTAsYS5yZWdpc3RlcigoMCxjLmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikoYS5fZWxlbWVudCxcIm1vdXNlZG93blwiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5fb25Nb3VzZURvd24oZSl9KSkpLGEuX21vdXNlTW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGUpe3JldHVybiBhLl9vbk1vdXNlTW92ZShlKX0sYS5fbW91c2VMZWF2ZUxpc3RlbmVyPWZ1bmN0aW9uKGUpe3JldHVybiBhLl9vbk1vdXNlTGVhdmUoZSl9LGEuX2NsaWNrTGlzdGVuZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGEuX29uQ2xpY2soZSl9LGF9cmV0dXJuIG4odCxlKSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuZGlzcG9zZS5jYWxsKHRoaXMpLHRoaXMuX2RlYWN0aXZhdGUoKX0sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuX3pvbmVzLnB1c2goZSksMT09PXRoaXMuX3pvbmVzLmxlbmd0aCYmdGhpcy5fYWN0aXZhdGUoKX0sdC5wcm90b3R5cGUuY2xlYXJBbGw9ZnVuY3Rpb24oZSx0KXtpZigwIT09dGhpcy5fem9uZXMubGVuZ3RoKXtlJiZ0fHwoZT0wLHQ9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTEpO2Zvcih2YXIgcj0wO3I8dGhpcy5fem9uZXMubGVuZ3RoO3IrKyl7dmFyIGk9dGhpcy5fem9uZXNbcl07KGkueTE+ZSYmaS55MTw9dCsxfHxpLnkyPmUmJmkueTI8PXQrMXx8aS55MTxlJiZpLnkyPnQrMSkmJih0aGlzLl9jdXJyZW50Wm9uZSYmdGhpcy5fY3VycmVudFpvbmU9PT1pJiYodGhpcy5fY3VycmVudFpvbmUubGVhdmVDYWxsYmFjaygpLHRoaXMuX2N1cnJlbnRab25lPXZvaWQgMCksdGhpcy5fem9uZXMuc3BsaWNlKHItLSwxKSl9MD09PXRoaXMuX3pvbmVzLmxlbmd0aCYmdGhpcy5fZGVhY3RpdmF0ZSgpfX0sdC5wcm90b3R5cGUuX2FjdGl2YXRlPWZ1bmN0aW9uKCl7dGhpcy5fYXJlWm9uZXNBY3RpdmV8fCh0aGlzLl9hcmVab25lc0FjdGl2ZT0hMCx0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0aGlzLl9tb3VzZU1vdmVMaXN0ZW5lciksdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHRoaXMuX21vdXNlTGVhdmVMaXN0ZW5lciksdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLl9jbGlja0xpc3RlbmVyKSl9LHQucHJvdG90eXBlLl9kZWFjdGl2YXRlPWZ1bmN0aW9uKCl7dGhpcy5fYXJlWm9uZXNBY3RpdmUmJih0aGlzLl9hcmVab25lc0FjdGl2ZT0hMSx0aGlzLl9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0aGlzLl9tb3VzZU1vdmVMaXN0ZW5lciksdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHRoaXMuX21vdXNlTGVhdmVMaXN0ZW5lciksdGhpcy5fZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLl9jbGlja0xpc3RlbmVyKSl9LHQucHJvdG90eXBlLl9vbk1vdXNlTW92ZT1mdW5jdGlvbihlKXt0aGlzLl9sYXN0SG92ZXJDb29yZHNbMF09PT1lLnBhZ2VYJiZ0aGlzLl9sYXN0SG92ZXJDb29yZHNbMV09PT1lLnBhZ2VZfHwodGhpcy5fb25Ib3ZlcihlKSx0aGlzLl9sYXN0SG92ZXJDb29yZHM9W2UucGFnZVgsZS5wYWdlWV0pfSx0LnByb3RvdHlwZS5fb25Ib3Zlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9dGhpcy5fZmluZFpvbmVFdmVudEF0KGUpO3IhPT10aGlzLl9jdXJyZW50Wm9uZSYmKHRoaXMuX2N1cnJlbnRab25lJiYodGhpcy5fY3VycmVudFpvbmUubGVhdmVDYWxsYmFjaygpLHRoaXMuX2N1cnJlbnRab25lPXZvaWQgMCx0aGlzLl90b29sdGlwVGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuX3Rvb2x0aXBUaW1lb3V0KSksciYmKHRoaXMuX2N1cnJlbnRab25lPXIsci5ob3ZlckNhbGxiYWNrJiZyLmhvdmVyQ2FsbGJhY2soZSksdGhpcy5fdG9vbHRpcFRpbWVvdXQ9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX29uVG9vbHRpcChlKX0pLHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubGlua1Rvb2x0aXBIb3ZlckR1cmF0aW9uKSkpfSx0LnByb3RvdHlwZS5fb25Ub29sdGlwPWZ1bmN0aW9uKGUpe3RoaXMuX3Rvb2x0aXBUaW1lb3V0PXZvaWQgMDt2YXIgdD10aGlzLl9maW5kWm9uZUV2ZW50QXQoZSk7bnVsbD09dHx8dC50b29sdGlwQ2FsbGJhY2soZSl9LHQucHJvdG90eXBlLl9vbk1vdXNlRG93bj1mdW5jdGlvbihlKXtpZih0aGlzLl9pbml0aWFsU2VsZWN0aW9uTGVuZ3RoPXRoaXMuX2dldFNlbGVjdGlvbkxlbmd0aCgpLHRoaXMuX2FyZVpvbmVzQWN0aXZlKXt2YXIgdD10aGlzLl9maW5kWm9uZUV2ZW50QXQoZSk7KG51bGw9PXQ/dm9pZCAwOnQud2lsbExpbmtBY3RpdmF0ZShlKSkmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9fSx0LnByb3RvdHlwZS5fb25Nb3VzZUxlYXZlPWZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRab25lJiYodGhpcy5fY3VycmVudFpvbmUubGVhdmVDYWxsYmFjaygpLHRoaXMuX2N1cnJlbnRab25lPXZvaWQgMCx0aGlzLl90b29sdGlwVGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuX3Rvb2x0aXBUaW1lb3V0KSl9LHQucHJvdG90eXBlLl9vbkNsaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2ZpbmRab25lRXZlbnRBdChlKSxyPXRoaXMuX2dldFNlbGVjdGlvbkxlbmd0aCgpO3QmJnI9PT10aGlzLl9pbml0aWFsU2VsZWN0aW9uTGVuZ3RoJiYodC5jbGlja0NhbGxiYWNrKGUpLGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX0sdC5wcm90b3R5cGUuX2dldFNlbGVjdGlvbkxlbmd0aD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX3NlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uVGV4dDtyZXR1cm4gZT9lLmxlbmd0aDowfSx0LnByb3RvdHlwZS5fZmluZFpvbmVFdmVudEF0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX21vdXNlU2VydmljZS5nZXRDb29yZHMoZSx0aGlzLl9zY3JlZW5FbGVtZW50LHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MpO2lmKHQpZm9yKHZhciByPXRbMF0saT10WzFdLG49MDtuPHRoaXMuX3pvbmVzLmxlbmd0aDtuKyspe3ZhciBvPXRoaXMuX3pvbmVzW25dO2lmKG8ueTE9PT1vLnkyKXtpZihpPT09by55MSYmcj49by54MSYmcjxvLngyKXJldHVybiBvfWVsc2UgaWYoaT09PW8ueTEmJnI+PW8ueDF8fGk9PT1vLnkyJiZyPG8ueDJ8fGk+by55MSYmaTxvLnkyKXJldHVybiBvfX0sbyhbcygyLGguSUJ1ZmZlclNlcnZpY2UpLHMoMyxsLklNb3VzZVNlcnZpY2UpLHMoNCxsLklTZWxlY3Rpb25TZXJ2aWNlKSxzKDUsaC5JT3B0aW9uc1NlcnZpY2UpXSx0KX0oYS5EaXNwb3NhYmxlKTt0Lk1vdXNlWm9uZU1hbmFnZXI9dX0sNjE5MzpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMmJnRoaXMuX192YWx1ZXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLHI9dCYmZVt0XSxpPTA7aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBlJiZpPj1lLmxlbmd0aCYmKGU9dm9pZCAwKSx7dmFsdWU6ZSYmZVtpKytdLGRvbmU6IWV9fX07dGhyb3cgbmV3IFR5cGVFcnJvcih0P1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUmVuZGVyRGVib3VuY2VyPXZvaWQgMDt2YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fcmVuZGVyQ2FsbGJhY2s9ZSx0aGlzLl9yZWZyZXNoQ2FsbGJhY2tzPVtdfXJldHVybiBlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW9uRnJhbWUmJih3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWUpLHRoaXMuX2FuaW1hdGlvbkZyYW1lPXZvaWQgMCl9LGUucHJvdG90eXBlLmFkZFJlZnJlc2hDYWxsYmFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9yZWZyZXNoQ2FsbGJhY2tzLnB1c2goZSksdGhpcy5fYW5pbWF0aW9uRnJhbWV8fCh0aGlzLl9hbmltYXRpb25GcmFtZT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe3JldHVybiB0Ll9pbm5lclJlZnJlc2goKX0pKSksdGhpcy5fYW5pbWF0aW9uRnJhbWV9LGUucHJvdG90eXBlLnJlZnJlc2g9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXM7dGhpcy5fcm93Q291bnQ9cixlPXZvaWQgMCE9PWU/ZTowLHQ9dm9pZCAwIT09dD90OnRoaXMuX3Jvd0NvdW50LTEsdGhpcy5fcm93U3RhcnQ9dm9pZCAwIT09dGhpcy5fcm93U3RhcnQ/TWF0aC5taW4odGhpcy5fcm93U3RhcnQsZSk6ZSx0aGlzLl9yb3dFbmQ9dm9pZCAwIT09dGhpcy5fcm93RW5kP01hdGgubWF4KHRoaXMuX3Jvd0VuZCx0KTp0LHRoaXMuX2FuaW1hdGlvbkZyYW1lfHwodGhpcy5fYW5pbWF0aW9uRnJhbWU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtyZXR1cm4gaS5faW5uZXJSZWZyZXNoKCl9KSkpfSxlLnByb3RvdHlwZS5faW5uZXJSZWZyZXNoPWZ1bmN0aW9uKCl7aWYodGhpcy5fYW5pbWF0aW9uRnJhbWU9dm9pZCAwLHZvaWQgMCE9PXRoaXMuX3Jvd1N0YXJ0JiZ2b2lkIDAhPT10aGlzLl9yb3dFbmQmJnZvaWQgMCE9PXRoaXMuX3Jvd0NvdW50KXt2YXIgZT1NYXRoLm1heCh0aGlzLl9yb3dTdGFydCwwKSx0PU1hdGgubWluKHRoaXMuX3Jvd0VuZCx0aGlzLl9yb3dDb3VudC0xKTt0aGlzLl9yb3dTdGFydD12b2lkIDAsdGhpcy5fcm93RW5kPXZvaWQgMCx0aGlzLl9yZW5kZXJDYWxsYmFjayhlLHQpLHRoaXMuX3J1blJlZnJlc2hDYWxsYmFja3MoKX1lbHNlIHRoaXMuX3J1blJlZnJlc2hDYWxsYmFja3MoKX0sZS5wcm90b3R5cGUuX3J1blJlZnJlc2hDYWxsYmFja3M9ZnVuY3Rpb24oKXt2YXIgZSx0O3RyeXtmb3IodmFyIGk9cih0aGlzLl9yZWZyZXNoQ2FsbGJhY2tzKSxuPWkubmV4dCgpOyFuLmRvbmU7bj1pLm5leHQoKSkoMCxuLnZhbHVlKSgwKX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtuJiYhbi5kb25lJiYodD1pLnJldHVybikmJnQuY2FsbChpKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19dGhpcy5fcmVmcmVzaENhbGxiYWNrcz1bXX0sZX0oKTt0LlJlbmRlckRlYm91bmNlcj1pfSw1NTk2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU2NyZWVuRHByTW9uaXRvcj12b2lkIDA7dmFyIG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciB0PW51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gdC5fY3VycmVudERldmljZVBpeGVsUmF0aW89d2luZG93LmRldmljZVBpeGVsUmF0aW8sdH1yZXR1cm4gbih0LGUpLHQucHJvdG90eXBlLnNldExpc3RlbmVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5fbGlzdGVuZXImJnRoaXMuY2xlYXJMaXN0ZW5lcigpLHRoaXMuX2xpc3RlbmVyPWUsdGhpcy5fb3V0ZXJMaXN0ZW5lcj1mdW5jdGlvbigpe3QuX2xpc3RlbmVyJiYodC5fbGlzdGVuZXIod2luZG93LmRldmljZVBpeGVsUmF0aW8sdC5fY3VycmVudERldmljZVBpeGVsUmF0aW8pLHQuX3VwZGF0ZURwcigpKX0sdGhpcy5fdXBkYXRlRHByKCl9LHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5kaXNwb3NlLmNhbGwodGhpcyksdGhpcy5jbGVhckxpc3RlbmVyKCl9LHQucHJvdG90eXBlLl91cGRhdGVEcHI9ZnVuY3Rpb24oKXt2YXIgZTt0aGlzLl9vdXRlckxpc3RlbmVyJiYobnVsbD09PShlPXRoaXMuX3Jlc29sdXRpb25NZWRpYU1hdGNoTGlzdCl8fHZvaWQgMD09PWV8fGUucmVtb3ZlTGlzdGVuZXIodGhpcy5fb3V0ZXJMaXN0ZW5lciksdGhpcy5fY3VycmVudERldmljZVBpeGVsUmF0aW89d2luZG93LmRldmljZVBpeGVsUmF0aW8sdGhpcy5fcmVzb2x1dGlvbk1lZGlhTWF0Y2hMaXN0PXdpbmRvdy5tYXRjaE1lZGlhKFwic2NyZWVuIGFuZCAocmVzb2x1dGlvbjogXCIrd2luZG93LmRldmljZVBpeGVsUmF0aW8rXCJkcHB4KVwiKSx0aGlzLl9yZXNvbHV0aW9uTWVkaWFNYXRjaExpc3QuYWRkTGlzdGVuZXIodGhpcy5fb3V0ZXJMaXN0ZW5lcikpfSx0LnByb3RvdHlwZS5jbGVhckxpc3RlbmVyPWZ1bmN0aW9uKCl7dGhpcy5fcmVzb2x1dGlvbk1lZGlhTWF0Y2hMaXN0JiZ0aGlzLl9saXN0ZW5lciYmdGhpcy5fb3V0ZXJMaXN0ZW5lciYmKHRoaXMuX3Jlc29sdXRpb25NZWRpYU1hdGNoTGlzdC5yZW1vdmVMaXN0ZW5lcih0aGlzLl9vdXRlckxpc3RlbmVyKSx0aGlzLl9yZXNvbHV0aW9uTWVkaWFNYXRjaExpc3Q9dm9pZCAwLHRoaXMuX2xpc3RlbmVyPXZvaWQgMCx0aGlzLl9vdXRlckxpc3RlbmVyPXZvaWQgMCl9LHR9KHIoODQ0KS5EaXNwb3NhYmxlKTt0LlNjcmVlbkRwck1vbml0b3I9b30sMzIzNjpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KSxvPXRoaXMmJnRoaXMuX192YWx1ZXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLHI9dCYmZVt0XSxpPTA7aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBlJiZpPj1lLmxlbmd0aCYmKGU9dm9pZCAwKSx7dmFsdWU6ZSYmZVtpKytdLGRvbmU6IWV9fX07dGhyb3cgbmV3IFR5cGVFcnJvcih0P1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9LHM9dGhpcyYmdGhpcy5fX3JlYWR8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl07aWYoIXIpcmV0dXJuIGU7dmFyIGksbixvPXIuY2FsbChlKSxzPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT10fHx0LS0gPjApJiYhKGk9by5uZXh0KCkpLmRvbmU7KXMucHVzaChpLnZhbHVlKX1jYXRjaChlKXtuPXtlcnJvcjplfX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYocj1vLnJldHVybikmJnIuY2FsbChvKX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19cmV0dXJuIHN9LGE9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihlLHQscil7aWYocnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBpLG49MCxvPXQubGVuZ3RoO248bztuKyspIWkmJm4gaW4gdHx8KGl8fChpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCxuKSksaVtuXT10W25dKTtyZXR1cm4gZS5jb25jYXQoaXx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRlcm1pbmFsPXZvaWQgMDt2YXIgYz1yKDI5NTApLGw9cigxNjgwKSxoPXIoMzYxNCksdT1yKDI1ODQpLGY9cig1NDM1KSxfPXIoMzUyNSksZD1yKDM1NTEpLHA9cig5MzEyKSx2PXIoNjExNCkseT1yKDM2NTYpLGc9cig5MDQyKSxtPXIoMzU3KSxiPXIoNjk1NCksUz1yKDQ1NjcpLEM9cigxMjk2KSx3PXIoNzM5OSksTD1yKDg0NjApLEU9cig4NDM3KSx4PXIoNTY4MCksUj1yKDMyMzApLGs9cig0NzI1KSxNPXIoNDI4KSxBPXIoODkzNCksTz1yKDY0NjUpLEQ9cig1MTE0KSxUPXIoODk2OSksQj1yKDgwNTUpLFA9cig0MjY5KSxJPXIoNTk0MSksSD1yKDMxMDcpLGo9cig1NzQ0KSxGPXIoOTA3NCksVz1yKDI1ODUpLFU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3cuZG9jdW1lbnQ6bnVsbCxxPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciByPWUuY2FsbCh0aGlzLHQpfHx0aGlzO3JldHVybiByLmJyb3dzZXI9dixyLl9rZXlEb3duSGFuZGxlZD0hMSxyLl9rZXlEb3duU2Vlbj0hMSxyLl9rZXlQcmVzc0hhbmRsZWQ9ITEsci5fdW5wcm9jZXNzZWREZWFkS2V5PSExLHIuX29uQ3Vyc29yTW92ZT1uZXcgTC5FdmVudEVtaXR0ZXIsci5fb25LZXk9bmV3IEwuRXZlbnRFbWl0dGVyLHIuX29uUmVuZGVyPW5ldyBMLkV2ZW50RW1pdHRlcixyLl9vblNlbGVjdGlvbkNoYW5nZT1uZXcgTC5FdmVudEVtaXR0ZXIsci5fb25UaXRsZUNoYW5nZT1uZXcgTC5FdmVudEVtaXR0ZXIsci5fb25CZWxsPW5ldyBMLkV2ZW50RW1pdHRlcixyLl9vbkZvY3VzPW5ldyBMLkV2ZW50RW1pdHRlcixyLl9vbkJsdXI9bmV3IEwuRXZlbnRFbWl0dGVyLHIuX29uQTExeUNoYXJFbWl0dGVyPW5ldyBMLkV2ZW50RW1pdHRlcixyLl9vbkExMXlUYWJFbWl0dGVyPW5ldyBMLkV2ZW50RW1pdHRlcixyLl9zZXR1cCgpLHIubGlua2lmaWVyPXIuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGQuTGlua2lmaWVyKSxyLmxpbmtpZmllcjI9ci5yZWdpc3RlcihyLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShPLkxpbmtpZmllcjIpKSxyLl9kZWNvcmF0aW9uU2VydmljZT1yLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShGLkRlY29yYXRpb25TZXJ2aWNlKSxyLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKFcuSURlY29yYXRpb25TZXJ2aWNlLHIuX2RlY29yYXRpb25TZXJ2aWNlKSxyLnJlZ2lzdGVyKHIuX2lucHV0SGFuZGxlci5vblJlcXVlc3RCZWxsKChmdW5jdGlvbigpe3JldHVybiByLmJlbGwoKX0pKSksci5yZWdpc3RlcihyLl9pbnB1dEhhbmRsZXIub25SZXF1ZXN0UmVmcmVzaFJvd3MoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIucmVmcmVzaChlLHQpfSkpKSxyLnJlZ2lzdGVyKHIuX2lucHV0SGFuZGxlci5vblJlcXVlc3RTZW5kRm9jdXMoKGZ1bmN0aW9uKCl7cmV0dXJuIHIuX3JlcG9ydEZvY3VzKCl9KSkpLHIucmVnaXN0ZXIoci5faW5wdXRIYW5kbGVyLm9uUmVxdWVzdFJlc2V0KChmdW5jdGlvbigpe3JldHVybiByLnJlc2V0KCl9KSkpLHIucmVnaXN0ZXIoci5faW5wdXRIYW5kbGVyLm9uUmVxdWVzdFdpbmRvd3NPcHRpb25zUmVwb3J0KChmdW5jdGlvbihlKXtyZXR1cm4gci5fcmVwb3J0V2luZG93c09wdGlvbnMoZSl9KSkpLHIucmVnaXN0ZXIoci5faW5wdXRIYW5kbGVyLm9uQ29sb3IoKGZ1bmN0aW9uKGUpe3JldHVybiByLl9oYW5kbGVDb2xvckV2ZW50KGUpfSkpKSxyLnJlZ2lzdGVyKCgwLEwuZm9yd2FyZEV2ZW50KShyLl9pbnB1dEhhbmRsZXIub25DdXJzb3JNb3ZlLHIuX29uQ3Vyc29yTW92ZSkpLHIucmVnaXN0ZXIoKDAsTC5mb3J3YXJkRXZlbnQpKHIuX2lucHV0SGFuZGxlci5vblRpdGxlQ2hhbmdlLHIuX29uVGl0bGVDaGFuZ2UpKSxyLnJlZ2lzdGVyKCgwLEwuZm9yd2FyZEV2ZW50KShyLl9pbnB1dEhhbmRsZXIub25BMTF5Q2hhcixyLl9vbkExMXlDaGFyRW1pdHRlcikpLHIucmVnaXN0ZXIoKDAsTC5mb3J3YXJkRXZlbnQpKHIuX2lucHV0SGFuZGxlci5vbkExMXlUYWIsci5fb25BMTF5VGFiRW1pdHRlcikpLHIucmVnaXN0ZXIoci5fYnVmZmVyU2VydmljZS5vblJlc2l6ZSgoZnVuY3Rpb24oZSl7cmV0dXJuIHIuX2FmdGVyUmVzaXplKGUuY29scyxlLnJvd3MpfSkpKSxyfXJldHVybiBuKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25DdXJzb3JNb3ZlXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkN1cnNvck1vdmUuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25LZXlcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uS2V5LmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uUmVuZGVyXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblJlbmRlci5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvblNlbGVjdGlvbkNoYW5nZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25TZWxlY3Rpb25DaGFuZ2UuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25UaXRsZUNoYW5nZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25UaXRsZUNoYW5nZS5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvbkJlbGxcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uQmVsbC5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvbkZvY3VzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkZvY3VzLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uQmx1clwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25CbHVyLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uQTExeUNoYXJcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uQTExeUNoYXJFbWl0dGVyLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uQTExeVRhYlwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25BMTF5VGFiRW1pdHRlci5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5faGFuZGxlQ29sb3JFdmVudD1mdW5jdGlvbihlKXt2YXIgdCxyLGksbjtpZih0aGlzLl9jb2xvck1hbmFnZXIpe3RyeXtmb3IodmFyIGM9byhlKSxsPWMubmV4dCgpOyFsLmRvbmU7bD1jLm5leHQoKSl7dmFyIGg9bC52YWx1ZSxmPXZvaWQgMCxfPVwiXCI7c3dpdGNoKGguaW5kZXgpe2Nhc2UgMjU2OmY9XCJmb3JlZ3JvdW5kXCIsXz1cIjEwXCI7YnJlYWs7Y2FzZSAyNTc6Zj1cImJhY2tncm91bmRcIixfPVwiMTFcIjticmVhaztjYXNlIDI1ODpmPVwiY3Vyc29yXCIsXz1cIjEyXCI7YnJlYWs7ZGVmYXVsdDpmPVwiYW5zaVwiLF89XCI0O1wiK2guaW5kZXh9aWYoZilzd2l0Y2goaC50eXBlKXtjYXNlIDA6dmFyIGQ9Qi5jb2xvci50b0NvbG9yUkdCKFwiYW5zaVwiPT09Zj90aGlzLl9jb2xvck1hbmFnZXIuY29sb3JzLmFuc2lbaC5pbmRleF06dGhpcy5fY29sb3JNYW5hZ2VyLmNvbG9yc1tmXSk7dGhpcy5jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHUuQzAuRVNDK1wiXVwiK18rXCI7XCIrKDAsSS50b1JnYlN0cmluZykoZCkrdS5DMV9FU0NBUEVELlNUKTticmVhaztjYXNlIDE6XCJhbnNpXCI9PT1mP3RoaXMuX2NvbG9yTWFuYWdlci5jb2xvcnMuYW5zaVtoLmluZGV4XT1CLnJnYmEudG9Db2xvci5hcHBseShCLnJnYmEsYShbXSxzKGguY29sb3IpLCExKSk6dGhpcy5fY29sb3JNYW5hZ2VyLmNvbG9yc1tmXT1CLnJnYmEudG9Db2xvci5hcHBseShCLnJnYmEsYShbXSxzKGguY29sb3IpLCExKSk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbG9yTWFuYWdlci5yZXN0b3JlQ29sb3IoaC5pbmRleCl9fX1jYXRjaChlKXt0PXtlcnJvcjplfX1maW5hbGx5e3RyeXtsJiYhbC5kb25lJiYocj1jLnJldHVybikmJnIuY2FsbChjKX1maW5hbGx5e2lmKHQpdGhyb3cgdC5lcnJvcn19bnVsbD09PShpPXRoaXMuX3JlbmRlclNlcnZpY2UpfHx2b2lkIDA9PT1pfHxpLnNldENvbG9ycyh0aGlzLl9jb2xvck1hbmFnZXIuY29sb3JzKSxudWxsPT09KG49dGhpcy52aWV3cG9ydCl8fHZvaWQgMD09PW58fG4ub25UaGVtZUNoYW5nZSh0aGlzLl9jb2xvck1hbmFnZXIuY29sb3JzKX19LHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt2YXIgdCxyLGk7dGhpcy5faXNEaXNwb3NlZHx8KGUucHJvdG90eXBlLmRpc3Bvc2UuY2FsbCh0aGlzKSxudWxsPT09KHQ9dGhpcy5fcmVuZGVyU2VydmljZSl8fHZvaWQgMD09PXR8fHQuZGlzcG9zZSgpLHRoaXMuX2N1c3RvbUtleUV2ZW50SGFuZGxlcj12b2lkIDAsdGhpcy53cml0ZT1mdW5jdGlvbigpe30sbnVsbD09PShpPW51bGw9PT0ocj10aGlzLmVsZW1lbnQpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnBhcmVudE5vZGUpfHx2b2lkIDA9PT1pfHxpLnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCkpfSx0LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXI9dm9pZCAwfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJidWZmZXJcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVmZmVycy5hY3RpdmV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZm9jdXM9ZnVuY3Rpb24oKXt0aGlzLnRleHRhcmVhJiZ0aGlzLnRleHRhcmVhLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9LHQucHJvdG90eXBlLl91cGRhdGVPcHRpb25zPWZ1bmN0aW9uKHQpe3ZhciByLGksbixvO3N3aXRjaChlLnByb3RvdHlwZS5fdXBkYXRlT3B0aW9ucy5jYWxsKHRoaXMsdCksdCl7Y2FzZVwiZm9udEZhbWlseVwiOmNhc2VcImZvbnRTaXplXCI6bnVsbD09PShyPXRoaXMuX3JlbmRlclNlcnZpY2UpfHx2b2lkIDA9PT1yfHxyLmNsZWFyKCksbnVsbD09PShpPXRoaXMuX2NoYXJTaXplU2VydmljZSl8fHZvaWQgMD09PWl8fGkubWVhc3VyZSgpO2JyZWFrO2Nhc2VcImN1cnNvckJsaW5rXCI6Y2FzZVwiY3Vyc29yU3R5bGVcIjp0aGlzLnJlZnJlc2godGhpcy5idWZmZXIueSx0aGlzLmJ1ZmZlci55KTticmVhaztjYXNlXCJjdXN0b21HbHlwaHNcIjpjYXNlXCJkcmF3Qm9sZFRleHRJbkJyaWdodENvbG9yc1wiOmNhc2VcImxldHRlclNwYWNpbmdcIjpjYXNlXCJsaW5lSGVpZ2h0XCI6Y2FzZVwiZm9udFdlaWdodFwiOmNhc2VcImZvbnRXZWlnaHRCb2xkXCI6Y2FzZVwibWluaW11bUNvbnRyYXN0UmF0aW9cIjp0aGlzLl9yZW5kZXJTZXJ2aWNlJiYodGhpcy5fcmVuZGVyU2VydmljZS5jbGVhcigpLHRoaXMuX3JlbmRlclNlcnZpY2Uub25SZXNpemUodGhpcy5jb2xzLHRoaXMucm93cyksdGhpcy5yZWZyZXNoKDAsdGhpcy5yb3dzLTEpKTticmVhaztjYXNlXCJyZW5kZXJlclR5cGVcIjp0aGlzLl9yZW5kZXJTZXJ2aWNlJiYodGhpcy5fcmVuZGVyU2VydmljZS5zZXRSZW5kZXJlcih0aGlzLl9jcmVhdGVSZW5kZXJlcigpKSx0aGlzLl9yZW5kZXJTZXJ2aWNlLm9uUmVzaXplKHRoaXMuY29scyx0aGlzLnJvd3MpKTticmVhaztjYXNlXCJzY3JvbGxiYWNrXCI6bnVsbD09PShuPXRoaXMudmlld3BvcnQpfHx2b2lkIDA9PT1ufHxuLnN5bmNTY3JvbGxBcmVhKCk7YnJlYWs7Y2FzZVwic2NyZWVuUmVhZGVyTW9kZVwiOnRoaXMub3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zY3JlZW5SZWFkZXJNb2RlPyF0aGlzLl9hY2Nlc3NpYmlsaXR5TWFuYWdlciYmdGhpcy5fcmVuZGVyU2VydmljZSYmKHRoaXMuX2FjY2Vzc2liaWxpdHlNYW5hZ2VyPW5ldyBTLkFjY2Vzc2liaWxpdHlNYW5hZ2VyKHRoaXMsdGhpcy5fcmVuZGVyU2VydmljZSkpOihudWxsPT09KG89dGhpcy5fYWNjZXNzaWJpbGl0eU1hbmFnZXIpfHx2b2lkIDA9PT1vfHxvLmRpc3Bvc2UoKSx0aGlzLl9hY2Nlc3NpYmlsaXR5TWFuYWdlcj12b2lkIDApO2JyZWFrO2Nhc2VcInRhYlN0b3BXaWR0aFwiOnRoaXMuYnVmZmVycy5zZXR1cFRhYlN0b3BzKCk7YnJlYWs7Y2FzZVwidGhlbWVcIjp0aGlzLl9zZXRUaGVtZSh0aGlzLm9wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMudGhlbWUpfX0sdC5wcm90b3R5cGUuX29uVGV4dEFyZWFGb2N1cz1mdW5jdGlvbihlKXt0aGlzLmNvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5zZW5kRm9jdXMmJnRoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudCh1LkMwLkVTQytcIltJXCIpLHRoaXMudXBkYXRlQ3Vyc29yU3R5bGUoZSksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJmb2N1c1wiKSx0aGlzLl9zaG93Q3Vyc29yKCksdGhpcy5fb25Gb2N1cy5maXJlKCl9LHQucHJvdG90eXBlLmJsdXI9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMudGV4dGFyZWEpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmJsdXIoKX0sdC5wcm90b3R5cGUuX29uVGV4dEFyZWFCbHVyPWZ1bmN0aW9uKCl7dGhpcy50ZXh0YXJlYS52YWx1ZT1cIlwiLHRoaXMucmVmcmVzaCh0aGlzLmJ1ZmZlci55LHRoaXMuYnVmZmVyLnkpLHRoaXMuY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLnNlbmRGb2N1cyYmdGhpcy5jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHUuQzAuRVNDK1wiW09cIiksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJmb2N1c1wiKSx0aGlzLl9vbkJsdXIuZmlyZSgpfSx0LnByb3RvdHlwZS5fc3luY1RleHRBcmVhPWZ1bmN0aW9uKCl7aWYodGhpcy50ZXh0YXJlYSYmdGhpcy5idWZmZXIuaXNDdXJzb3JJblZpZXdwb3J0JiYhdGhpcy5fY29tcG9zaXRpb25IZWxwZXIuaXNDb21wb3NpbmcmJnRoaXMuX3JlbmRlclNlcnZpY2Upe3ZhciBlPXRoaXMuYnVmZmVyLnliYXNlK3RoaXMuYnVmZmVyLnksdD10aGlzLmJ1ZmZlci5saW5lcy5nZXQoZSk7aWYodCl7dmFyIHI9TWF0aC5taW4odGhpcy5idWZmZXIueCx0aGlzLmNvbHMtMSksaT10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbEhlaWdodCxuPXQuZ2V0V2lkdGgociksbz10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoKm4scz10aGlzLmJ1ZmZlci55KnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5hY3R1YWxDZWxsSGVpZ2h0LGE9cip0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoO3RoaXMudGV4dGFyZWEuc3R5bGUubGVmdD1hK1wicHhcIix0aGlzLnRleHRhcmVhLnN0eWxlLnRvcD1zK1wicHhcIix0aGlzLnRleHRhcmVhLnN0eWxlLndpZHRoPW8rXCJweFwiLHRoaXMudGV4dGFyZWEuc3R5bGUuaGVpZ2h0PWkrXCJweFwiLHRoaXMudGV4dGFyZWEuc3R5bGUubGluZUhlaWdodD1pK1wicHhcIix0aGlzLnRleHRhcmVhLnN0eWxlLnpJbmRleD1cIi01XCJ9fX0sdC5wcm90b3R5cGUuX2luaXRHbG9iYWw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuX2JpbmRLZXlzKCksdGhpcy5yZWdpc3RlcigoMCx5LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy5lbGVtZW50LFwiY29weVwiLChmdW5jdGlvbih0KXtlLmhhc1NlbGVjdGlvbigpJiYoMCxoLmNvcHlIYW5kbGVyKSh0LGUuX3NlbGVjdGlvblNlcnZpY2UpfSkpKTt2YXIgdD1mdW5jdGlvbih0KXtyZXR1cm4oMCxoLmhhbmRsZVBhc3RlRXZlbnQpKHQsZS50ZXh0YXJlYSxlLmNvcmVTZXJ2aWNlKX07dGhpcy5yZWdpc3RlcigoMCx5LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcInBhc3RlXCIsdCkpLHRoaXMucmVnaXN0ZXIoKDAseS5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcInBhc3RlXCIsdCkpLHYuaXNGaXJlZm94P3RoaXMucmVnaXN0ZXIoKDAseS5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcIm1vdXNlZG93blwiLChmdW5jdGlvbih0KXsyPT09dC5idXR0b24mJigwLGgucmlnaHRDbGlja0hhbmRsZXIpKHQsZS50ZXh0YXJlYSxlLnNjcmVlbkVsZW1lbnQsZS5fc2VsZWN0aW9uU2VydmljZSxlLm9wdGlvbnMucmlnaHRDbGlja1NlbGVjdHNXb3JkKX0pKSk6dGhpcy5yZWdpc3RlcigoMCx5LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy5lbGVtZW50LFwiY29udGV4dG1lbnVcIiwoZnVuY3Rpb24odCl7KDAsaC5yaWdodENsaWNrSGFuZGxlcikodCxlLnRleHRhcmVhLGUuc2NyZWVuRWxlbWVudCxlLl9zZWxlY3Rpb25TZXJ2aWNlLGUub3B0aW9ucy5yaWdodENsaWNrU2VsZWN0c1dvcmQpfSkpKSx2LmlzTGludXgmJnRoaXMucmVnaXN0ZXIoKDAseS5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcImF1eGNsaWNrXCIsKGZ1bmN0aW9uKHQpezE9PT10LmJ1dHRvbiYmKDAsaC5tb3ZlVGV4dEFyZWFVbmRlck1vdXNlQ3Vyc29yKSh0LGUudGV4dGFyZWEsZS5zY3JlZW5FbGVtZW50KX0pKSl9LHQucHJvdG90eXBlLl9iaW5kS2V5cz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5yZWdpc3RlcigoMCx5LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImtleXVwXCIsKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9rZXlVcCh0KX0pLCEwKSksdGhpcy5yZWdpc3RlcigoMCx5LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImtleWRvd25cIiwoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2tleURvd24odCl9KSwhMCkpLHRoaXMucmVnaXN0ZXIoKDAseS5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMudGV4dGFyZWEsXCJrZXlwcmVzc1wiLChmdW5jdGlvbih0KXtyZXR1cm4gZS5fa2V5UHJlc3ModCl9KSwhMCkpLHRoaXMucmVnaXN0ZXIoKDAseS5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMudGV4dGFyZWEsXCJjb21wb3NpdGlvbnN0YXJ0XCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2NvbXBvc2l0aW9uSGVscGVyLmNvbXBvc2l0aW9uc3RhcnQoKX0pKSksdGhpcy5yZWdpc3RlcigoMCx5LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImNvbXBvc2l0aW9udXBkYXRlXCIsKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9jb21wb3NpdGlvbkhlbHBlci5jb21wb3NpdGlvbnVwZGF0ZSh0KX0pKSksdGhpcy5yZWdpc3RlcigoMCx5LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikodGhpcy50ZXh0YXJlYSxcImNvbXBvc2l0aW9uZW5kXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2NvbXBvc2l0aW9uSGVscGVyLmNvbXBvc2l0aW9uZW5kKCl9KSkpLHRoaXMucmVnaXN0ZXIoKDAseS5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMudGV4dGFyZWEsXCJpbnB1dFwiLChmdW5jdGlvbih0KXtyZXR1cm4gZS5faW5wdXRFdmVudCh0KX0pLCEwKSksdGhpcy5yZWdpc3Rlcih0aGlzLm9uUmVuZGVyKChmdW5jdGlvbigpe3JldHVybiBlLl9jb21wb3NpdGlvbkhlbHBlci51cGRhdGVDb21wb3NpdGlvbkVsZW1lbnRzKCl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5vblJlbmRlcigoZnVuY3Rpb24odCl7cmV0dXJuIGUuX3F1ZXVlTGlua2lmaWNhdGlvbih0LnN0YXJ0LHQuZW5kKX0pKSl9LHQucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJUZXJtaW5hbCByZXF1aXJlcyBhIHBhcmVudCBlbGVtZW50LlwiKTtlLmlzQ29ubmVjdGVkfHx0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiVGVybWluYWwub3BlbiB3YXMgY2FsbGVkIG9uIGFuIGVsZW1lbnQgdGhhdCB3YXMgbm90IGF0dGFjaGVkIHRvIHRoZSBET01cIiksdGhpcy5fZG9jdW1lbnQ9ZS5vd25lckRvY3VtZW50LHRoaXMuZWxlbWVudD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuZWxlbWVudC5kaXI9XCJsdHJcIix0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInRlcm1pbmFsXCIpLHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwieHRlcm1cIiksdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCIwXCIpLGUuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTt2YXIgcj1VLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTt0aGlzLl92aWV3cG9ydEVsZW1lbnQ9VS5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwieHRlcm0tdmlld3BvcnRcIiksci5hcHBlbmRDaGlsZCh0aGlzLl92aWV3cG9ydEVsZW1lbnQpLHRoaXMuX3ZpZXdwb3J0U2Nyb2xsQXJlYT1VLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy5fdmlld3BvcnRTY3JvbGxBcmVhLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1zY3JvbGwtYXJlYVwiKSx0aGlzLl92aWV3cG9ydEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdmlld3BvcnRTY3JvbGxBcmVhKSx0aGlzLnNjcmVlbkVsZW1lbnQ9VS5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHRoaXMuc2NyZWVuRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwieHRlcm0tc2NyZWVuXCIpLHRoaXMuX2hlbHBlckNvbnRhaW5lcj1VLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdGhpcy5faGVscGVyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1oZWxwZXJzXCIpLHRoaXMuc2NyZWVuRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWxwZXJDb250YWluZXIpLHIuYXBwZW5kQ2hpbGQodGhpcy5zY3JlZW5FbGVtZW50KSx0aGlzLnRleHRhcmVhPVUuY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIpLHRoaXMudGV4dGFyZWEuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWhlbHBlci10ZXh0YXJlYVwiKSx0aGlzLnRleHRhcmVhLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixnLnByb21wdExhYmVsKSx0aGlzLnRleHRhcmVhLnNldEF0dHJpYnV0ZShcImFyaWEtbXVsdGlsaW5lXCIsXCJmYWxzZVwiKSx0aGlzLnRleHRhcmVhLnNldEF0dHJpYnV0ZShcImF1dG9jb3JyZWN0XCIsXCJvZmZcIiksdGhpcy50ZXh0YXJlYS5zZXRBdHRyaWJ1dGUoXCJhdXRvY2FwaXRhbGl6ZVwiLFwib2ZmXCIpLHRoaXMudGV4dGFyZWEuc2V0QXR0cmlidXRlKFwic3BlbGxjaGVja1wiLFwiZmFsc2VcIiksdGhpcy50ZXh0YXJlYS50YWJJbmRleD0wLHRoaXMucmVnaXN0ZXIoKDAseS5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMudGV4dGFyZWEsXCJmb2N1c1wiLChmdW5jdGlvbihlKXtyZXR1cm4gdC5fb25UZXh0QXJlYUZvY3VzKGUpfSkpKSx0aGlzLnJlZ2lzdGVyKCgwLHkuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLnRleHRhcmVhLFwiYmx1clwiLChmdW5jdGlvbigpe3JldHVybiB0Ll9vblRleHRBcmVhQmx1cigpfSkpKSx0aGlzLl9oZWxwZXJDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50ZXh0YXJlYSk7dmFyIGk9dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoRC5Db3JlQnJvd3NlclNlcnZpY2UsdGhpcy50ZXh0YXJlYSk7dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShrLklDb3JlQnJvd3NlclNlcnZpY2UsaSksdGhpcy5fY2hhclNpemVTZXJ2aWNlPXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKE0uQ2hhclNpemVTZXJ2aWNlLHRoaXMuX2RvY3VtZW50LHRoaXMuX2hlbHBlckNvbnRhaW5lciksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShrLklDaGFyU2l6ZVNlcnZpY2UsdGhpcy5fY2hhclNpemVTZXJ2aWNlKSx0aGlzLl90aGVtZT10aGlzLm9wdGlvbnMudGhlbWV8fHRoaXMuX3RoZW1lLHRoaXMuX2NvbG9yTWFuYWdlcj1uZXcgeC5Db2xvck1hbmFnZXIoVSx0aGlzLm9wdGlvbnMuYWxsb3dUcmFuc3BhcmVuY3kpLHRoaXMucmVnaXN0ZXIodGhpcy5vcHRpb25zU2VydmljZS5vbk9wdGlvbkNoYW5nZSgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2NvbG9yTWFuYWdlci5vbk9wdGlvbnNDaGFuZ2UoZSl9KSkpLHRoaXMuX2NvbG9yTWFuYWdlci5zZXRUaGVtZSh0aGlzLl90aGVtZSksdGhpcy5fY2hhcmFjdGVySm9pbmVyU2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShQLkNoYXJhY3RlckpvaW5lclNlcnZpY2UpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2Uoay5JQ2hhcmFjdGVySm9pbmVyU2VydmljZSx0aGlzLl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlKTt2YXIgbj10aGlzLl9jcmVhdGVSZW5kZXJlcigpO3RoaXMuX3JlbmRlclNlcnZpY2U9dGhpcy5yZWdpc3Rlcih0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShSLlJlbmRlclNlcnZpY2Usbix0aGlzLnJvd3MsdGhpcy5zY3JlZW5FbGVtZW50KSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShrLklSZW5kZXJTZXJ2aWNlLHRoaXMuX3JlbmRlclNlcnZpY2UpLHRoaXMucmVnaXN0ZXIodGhpcy5fcmVuZGVyU2VydmljZS5vblJlbmRlcmVkVmlld3BvcnRDaGFuZ2UoKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9vblJlbmRlci5maXJlKGUpfSkpKSx0aGlzLm9uUmVzaXplKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fcmVuZGVyU2VydmljZS5yZXNpemUoZS5jb2xzLGUucm93cyl9KSksdGhpcy5fY29tcG9zaXRpb25WaWV3PVUuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0aGlzLl9jb21wb3NpdGlvblZpZXcuY2xhc3NMaXN0LmFkZChcImNvbXBvc2l0aW9uLXZpZXdcIiksdGhpcy5fY29tcG9zaXRpb25IZWxwZXI9dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoYy5Db21wb3NpdGlvbkhlbHBlcix0aGlzLnRleHRhcmVhLHRoaXMuX2NvbXBvc2l0aW9uVmlldyksdGhpcy5faGVscGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2NvbXBvc2l0aW9uVmlldyksdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHIpLHRoaXMuX3NvdW5kU2VydmljZT10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShtLlNvdW5kU2VydmljZSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShrLklTb3VuZFNlcnZpY2UsdGhpcy5fc291bmRTZXJ2aWNlKSx0aGlzLl9tb3VzZVNlcnZpY2U9dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoQS5Nb3VzZVNlcnZpY2UpLHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2Uoay5JTW91c2VTZXJ2aWNlLHRoaXMuX21vdXNlU2VydmljZSksdGhpcy52aWV3cG9ydD10aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShsLlZpZXdwb3J0LChmdW5jdGlvbihlKXtyZXR1cm4gdC5zY3JvbGxMaW5lcyhlLCEwLDEpfSksdGhpcy5fdmlld3BvcnRFbGVtZW50LHRoaXMuX3ZpZXdwb3J0U2Nyb2xsQXJlYSx0aGlzLmVsZW1lbnQpLHRoaXMudmlld3BvcnQub25UaGVtZUNoYW5nZSh0aGlzLl9jb2xvck1hbmFnZXIuY29sb3JzKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2lucHV0SGFuZGxlci5vblJlcXVlc3RTeW5jU2Nyb2xsQmFyKChmdW5jdGlvbigpe3JldHVybiB0LnZpZXdwb3J0LnN5bmNTY3JvbGxBcmVhKCl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy52aWV3cG9ydCksdGhpcy5yZWdpc3Rlcih0aGlzLm9uQ3Vyc29yTW92ZSgoZnVuY3Rpb24oKXt0Ll9yZW5kZXJTZXJ2aWNlLm9uQ3Vyc29yTW92ZSgpLHQuX3N5bmNUZXh0QXJlYSgpfSkpKSx0aGlzLnJlZ2lzdGVyKHRoaXMub25SZXNpemUoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX3JlbmRlclNlcnZpY2Uub25SZXNpemUodC5jb2xzLHQucm93cyl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5vbkJsdXIoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX3JlbmRlclNlcnZpY2Uub25CbHVyKCl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5vbkZvY3VzKChmdW5jdGlvbigpe3JldHVybiB0Ll9yZW5kZXJTZXJ2aWNlLm9uRm9jdXMoKX0pKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9yZW5kZXJTZXJ2aWNlLm9uRGltZW5zaW9uc0NoYW5nZSgoZnVuY3Rpb24oKXtyZXR1cm4gdC52aWV3cG9ydC5zeW5jU2Nyb2xsQXJlYSgpfSkpKSx0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlPXRoaXMucmVnaXN0ZXIodGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UocC5TZWxlY3Rpb25TZXJ2aWNlLHRoaXMuZWxlbWVudCx0aGlzLnNjcmVlbkVsZW1lbnQsdGhpcy5saW5raWZpZXIyKSksdGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShrLklTZWxlY3Rpb25TZXJ2aWNlLHRoaXMuX3NlbGVjdGlvblNlcnZpY2UpLHRoaXMucmVnaXN0ZXIodGhpcy5fc2VsZWN0aW9uU2VydmljZS5vblJlcXVlc3RTY3JvbGxMaW5lcygoZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2Nyb2xsTGluZXMoZS5hbW91bnQsZS5zdXBwcmVzc1Njcm9sbEV2ZW50KX0pKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLm9uU2VsZWN0aW9uQ2hhbmdlKChmdW5jdGlvbigpe3JldHVybiB0Ll9vblNlbGVjdGlvbkNoYW5nZS5maXJlKCl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fc2VsZWN0aW9uU2VydmljZS5vblJlcXVlc3RSZWRyYXcoKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9yZW5kZXJTZXJ2aWNlLm9uU2VsZWN0aW9uQ2hhbmdlZChlLnN0YXJ0LGUuZW5kLGUuY29sdW1uU2VsZWN0TW9kZSl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fc2VsZWN0aW9uU2VydmljZS5vbkxpbnV4TW91c2VTZWxlY3Rpb24oKGZ1bmN0aW9uKGUpe3QudGV4dGFyZWEudmFsdWU9ZSx0LnRleHRhcmVhLmZvY3VzKCksdC50ZXh0YXJlYS5zZWxlY3QoKX0pKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9vblNjcm9sbC5ldmVudCgoZnVuY3Rpb24oZSl7dC52aWV3cG9ydC5zeW5jU2Nyb2xsQXJlYSgpLHQuX3NlbGVjdGlvblNlcnZpY2UucmVmcmVzaCgpfSkpKSx0aGlzLnJlZ2lzdGVyKCgwLHkuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh0aGlzLl92aWV3cG9ydEVsZW1lbnQsXCJzY3JvbGxcIiwoZnVuY3Rpb24oKXtyZXR1cm4gdC5fc2VsZWN0aW9uU2VydmljZS5yZWZyZXNoKCl9KSkpLHRoaXMuX21vdXNlWm9uZU1hbmFnZXI9dGhpcy5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoYi5Nb3VzZVpvbmVNYW5hZ2VyLHRoaXMuZWxlbWVudCx0aGlzLnNjcmVlbkVsZW1lbnQpLHRoaXMucmVnaXN0ZXIodGhpcy5fbW91c2Vab25lTWFuYWdlciksdGhpcy5yZWdpc3Rlcih0aGlzLm9uU2Nyb2xsKChmdW5jdGlvbigpe3JldHVybiB0Ll9tb3VzZVpvbmVNYW5hZ2VyLmNsZWFyQWxsKCl9KSkpLHRoaXMubGlua2lmaWVyLmF0dGFjaFRvRG9tKHRoaXMuZWxlbWVudCx0aGlzLl9tb3VzZVpvbmVNYW5hZ2VyKSx0aGlzLmxpbmtpZmllcjIuYXR0YWNoVG9Eb20odGhpcy5zY3JlZW5FbGVtZW50LHRoaXMuX21vdXNlU2VydmljZSx0aGlzLl9yZW5kZXJTZXJ2aWNlKSx0aGlzLnJlZ2lzdGVyKHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKEguQnVmZmVyRGVjb3JhdGlvblJlbmRlcmVyLHRoaXMuc2NyZWVuRWxlbWVudCkpLHRoaXMucmVnaXN0ZXIoKDAseS5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHRoaXMuZWxlbWVudCxcIm1vdXNlZG93blwiLChmdW5jdGlvbihlKXtyZXR1cm4gdC5fc2VsZWN0aW9uU2VydmljZS5vbk1vdXNlRG93bihlKX0pKSksdGhpcy5jb3JlTW91c2VTZXJ2aWNlLmFyZU1vdXNlRXZlbnRzQWN0aXZlPyh0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLmRpc2FibGUoKSx0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImVuYWJsZS1tb3VzZS1ldmVudHNcIikpOnRoaXMuX3NlbGVjdGlvblNlcnZpY2UuZW5hYmxlKCksdGhpcy5vcHRpb25zLnNjcmVlblJlYWRlck1vZGUmJih0aGlzLl9hY2Nlc3NpYmlsaXR5TWFuYWdlcj1uZXcgUy5BY2Nlc3NpYmlsaXR5TWFuYWdlcih0aGlzLHRoaXMuX3JlbmRlclNlcnZpY2UpKSx0aGlzLm9wdGlvbnMub3ZlcnZpZXdSdWxlcldpZHRoJiYodGhpcy5fb3ZlcnZpZXdSdWxlclJlbmRlcmVyPXRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGouT3ZlcnZpZXdSdWxlclJlbmRlcmVyLHRoaXMuX3ZpZXdwb3J0RWxlbWVudCx0aGlzLnNjcmVlbkVsZW1lbnQpKSx0aGlzLm9wdGlvbnNTZXJ2aWNlLm9uT3B0aW9uQ2hhbmdlKChmdW5jdGlvbigpeyF0Ll9vdmVydmlld1J1bGVyUmVuZGVyZXImJnQub3B0aW9ucy5vdmVydmlld1J1bGVyV2lkdGgmJnQuX3ZpZXdwb3J0RWxlbWVudCYmdC5zY3JlZW5FbGVtZW50JiYodC5fb3ZlcnZpZXdSdWxlclJlbmRlcmVyPXQuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKGouT3ZlcnZpZXdSdWxlclJlbmRlcmVyLHQuX3ZpZXdwb3J0RWxlbWVudCx0LnNjcmVlbkVsZW1lbnQpKX0pKSx0aGlzLl9jaGFyU2l6ZVNlcnZpY2UubWVhc3VyZSgpLHRoaXMucmVmcmVzaCgwLHRoaXMucm93cy0xKSx0aGlzLl9pbml0R2xvYmFsKCksdGhpcy5iaW5kTW91c2UoKX0sdC5wcm90b3R5cGUuX2NyZWF0ZVJlbmRlcmVyPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMub3B0aW9ucy5yZW5kZXJlclR5cGUpe2Nhc2VcImNhbnZhc1wiOnJldHVybiB0aGlzLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShfLlJlbmRlcmVyLHRoaXMuX2NvbG9yTWFuYWdlci5jb2xvcnMsdGhpcy5zY3JlZW5FbGVtZW50LHRoaXMubGlua2lmaWVyLHRoaXMubGlua2lmaWVyMik7Y2FzZVwiZG9tXCI6cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKEMuRG9tUmVuZGVyZXIsdGhpcy5fY29sb3JNYW5hZ2VyLmNvbG9ycyx0aGlzLmVsZW1lbnQsdGhpcy5zY3JlZW5FbGVtZW50LHRoaXMuX3ZpZXdwb3J0RWxlbWVudCx0aGlzLmxpbmtpZmllcix0aGlzLmxpbmtpZmllcjIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgcmVuZGVyZXJUeXBlIFwiJyt0aGlzLm9wdGlvbnMucmVuZGVyZXJUeXBlKydcIicpfX0sdC5wcm90b3R5cGUuX3NldFRoZW1lPWZ1bmN0aW9uKGUpe3ZhciB0LHIsaTt0aGlzLl90aGVtZT1lLG51bGw9PT0odD10aGlzLl9jb2xvck1hbmFnZXIpfHx2b2lkIDA9PT10fHx0LnNldFRoZW1lKGUpLG51bGw9PT0ocj10aGlzLl9yZW5kZXJTZXJ2aWNlKXx8dm9pZCAwPT09cnx8ci5zZXRDb2xvcnModGhpcy5fY29sb3JNYW5hZ2VyLmNvbG9ycyksbnVsbD09PShpPXRoaXMudmlld3BvcnQpfHx2b2lkIDA9PT1pfHxpLm9uVGhlbWVDaGFuZ2UodGhpcy5fY29sb3JNYW5hZ2VyLmNvbG9ycyl9LHQucHJvdG90eXBlLmJpbmRNb3VzZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLHI9dGhpcy5lbGVtZW50O2Z1bmN0aW9uIGkoZSl7dmFyIHIsaSxuPXQuX21vdXNlU2VydmljZS5nZXRSYXdCeXRlQ29vcmRzKGUsdC5zY3JlZW5FbGVtZW50LHQuY29scyx0LnJvd3MpO2lmKCFuKXJldHVybiExO3N3aXRjaChlLm92ZXJyaWRlVHlwZXx8ZS50eXBlKXtjYXNlXCJtb3VzZW1vdmVcIjppPTMyLHZvaWQgMD09PWUuYnV0dG9ucz8ocj0zLHZvaWQgMCE9PWUuYnV0dG9uJiYocj1lLmJ1dHRvbjwzP2UuYnV0dG9uOjMpKTpyPTEmZS5idXR0b25zPzA6NCZlLmJ1dHRvbnM/MToyJmUuYnV0dG9ucz8yOjM7YnJlYWs7Y2FzZVwibW91c2V1cFwiOmk9MCxyPWUuYnV0dG9uPDM/ZS5idXR0b246MzticmVhaztjYXNlXCJtb3VzZWRvd25cIjppPTEscj1lLmJ1dHRvbjwzP2UuYnV0dG9uOjM7YnJlYWs7Y2FzZVwid2hlZWxcIjppZigwPT09dC52aWV3cG9ydC5nZXRMaW5lc1Njcm9sbGVkKGUpKXJldHVybiExO2k9ZS5kZWx0YVk8MD8wOjEscj00O2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9cmV0dXJuISh2b2lkIDA9PT1pfHx2b2lkIDA9PT1yfHxyPjQpJiZ0LmNvcmVNb3VzZVNlcnZpY2UudHJpZ2dlck1vdXNlRXZlbnQoe2NvbDpuLngtMzMscm93Om4ueS0zMyxidXR0b246cixhY3Rpb246aSxjdHJsOmUuY3RybEtleSxhbHQ6ZS5hbHRLZXksc2hpZnQ6ZS5zaGlmdEtleX0pfXZhciBuPXttb3VzZXVwOm51bGwsd2hlZWw6bnVsbCxtb3VzZWRyYWc6bnVsbCxtb3VzZW1vdmU6bnVsbH0sbz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KSx0LmJ1dHRvbnN8fChlLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLG4ubW91c2V1cCksbi5tb3VzZWRyYWcmJmUuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixuLm1vdXNlZHJhZykpLGUuY2FuY2VsKHQpfSxzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLGUuY2FuY2VsKHQsITApfSxhPWZ1bmN0aW9uKGUpe2UuYnV0dG9ucyYmaShlKX0sYz1mdW5jdGlvbihlKXtlLmJ1dHRvbnN8fGkoZSl9O3RoaXMucmVnaXN0ZXIodGhpcy5jb3JlTW91c2VTZXJ2aWNlLm9uUHJvdG9jb2xDaGFuZ2UoKGZ1bmN0aW9uKHQpe3Q/KFwiZGVidWdcIj09PWUub3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5sb2dMZXZlbCYmZS5fbG9nU2VydmljZS5kZWJ1ZyhcIkJpbmRpbmcgdG8gbW91c2UgZXZlbnRzOlwiLGUuY29yZU1vdXNlU2VydmljZS5leHBsYWluRXZlbnRzKHQpKSxlLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImVuYWJsZS1tb3VzZS1ldmVudHNcIiksZS5fc2VsZWN0aW9uU2VydmljZS5kaXNhYmxlKCkpOihlLl9sb2dTZXJ2aWNlLmRlYnVnKFwiVW5iaW5kaW5nIGZyb20gbW91c2UgZXZlbnRzLlwiKSxlLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImVuYWJsZS1tb3VzZS1ldmVudHNcIiksZS5fc2VsZWN0aW9uU2VydmljZS5lbmFibGUoKSksOCZ0P24ubW91c2Vtb3ZlfHwoci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsYyksbi5tb3VzZW1vdmU9Yyk6KHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLG4ubW91c2Vtb3ZlKSxuLm1vdXNlbW92ZT1udWxsKSwxNiZ0P24ud2hlZWx8fChyLmFkZEV2ZW50TGlzdGVuZXIoXCJ3aGVlbFwiLHMse3Bhc3NpdmU6ITF9KSxuLndoZWVsPXMpOihyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ3aGVlbFwiLG4ud2hlZWwpLG4ud2hlZWw9bnVsbCksMiZ0P24ubW91c2V1cHx8KG4ubW91c2V1cD1vKTooZS5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIixuLm1vdXNldXApLG4ubW91c2V1cD1udWxsKSw0JnQ/bi5tb3VzZWRyYWd8fChuLm1vdXNlZHJhZz1hKTooZS5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLG4ubW91c2VkcmFnKSxuLm1vdXNlZHJhZz1udWxsKX0pKSksdGhpcy5jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZVByb3RvY29sPXRoaXMuY29yZU1vdXNlU2VydmljZS5hY3RpdmVQcm90b2NvbCx0aGlzLnJlZ2lzdGVyKCgwLHkuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKShyLFwibW91c2Vkb3duXCIsKGZ1bmN0aW9uKHQpe2lmKHQucHJldmVudERlZmF1bHQoKSxlLmZvY3VzKCksZS5jb3JlTW91c2VTZXJ2aWNlLmFyZU1vdXNlRXZlbnRzQWN0aXZlJiYhZS5fc2VsZWN0aW9uU2VydmljZS5zaG91bGRGb3JjZVNlbGVjdGlvbih0KSlyZXR1cm4gaSh0KSxuLm1vdXNldXAmJmUuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsbi5tb3VzZXVwKSxuLm1vdXNlZHJhZyYmZS5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLG4ubW91c2VkcmFnKSxlLmNhbmNlbCh0KX0pKSksdGhpcy5yZWdpc3RlcigoMCx5LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikocixcIndoZWVsXCIsKGZ1bmN0aW9uKHQpe2lmKCFuLndoZWVsKXtpZighZS5idWZmZXIuaGFzU2Nyb2xsYmFjayl7dmFyIHI9ZS52aWV3cG9ydC5nZXRMaW5lc1Njcm9sbGVkKHQpO2lmKDA9PT1yKXJldHVybjtmb3IodmFyIGk9dS5DMC5FU0MrKGUuY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmFwcGxpY2F0aW9uQ3Vyc29yS2V5cz9cIk9cIjpcIltcIikrKHQuZGVsdGFZPDA/XCJBXCI6XCJCXCIpLG89XCJcIixzPTA7czxNYXRoLmFicyhyKTtzKyspbys9aTtyZXR1cm4gZS5jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KG8sITApLGUuY2FuY2VsKHQsITApfXJldHVybiBlLnZpZXdwb3J0Lm9uV2hlZWwodCk/ZS5jYW5jZWwodCk6dm9pZCAwfX0pLHtwYXNzaXZlOiExfSkpLHRoaXMucmVnaXN0ZXIoKDAseS5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHIsXCJ0b3VjaHN0YXJ0XCIsKGZ1bmN0aW9uKHQpe2lmKCFlLmNvcmVNb3VzZVNlcnZpY2UuYXJlTW91c2VFdmVudHNBY3RpdmUpcmV0dXJuIGUudmlld3BvcnQub25Ub3VjaFN0YXJ0KHQpLGUuY2FuY2VsKHQpfSkse3Bhc3NpdmU6ITB9KSksdGhpcy5yZWdpc3RlcigoMCx5LmFkZERpc3Bvc2FibGVEb21MaXN0ZW5lcikocixcInRvdWNobW92ZVwiLChmdW5jdGlvbih0KXtpZighZS5jb3JlTW91c2VTZXJ2aWNlLmFyZU1vdXNlRXZlbnRzQWN0aXZlKXJldHVybiBlLnZpZXdwb3J0Lm9uVG91Y2hNb3ZlKHQpP3ZvaWQgMDplLmNhbmNlbCh0KX0pLHtwYXNzaXZlOiExfSkpfSx0LnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKGUsdCl7dmFyIHI7bnVsbD09PShyPXRoaXMuX3JlbmRlclNlcnZpY2UpfHx2b2lkIDA9PT1yfHxyLnJlZnJlc2hSb3dzKGUsdCl9LHQucHJvdG90eXBlLl9xdWV1ZUxpbmtpZmljYXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgcjtudWxsPT09KHI9dGhpcy5saW5raWZpZXIpfHx2b2lkIDA9PT1yfHxyLmxpbmtpZnlSb3dzKGUsdCl9LHQucHJvdG90eXBlLnVwZGF0ZUN1cnNvclN0eWxlPWZ1bmN0aW9uKGUpe3ZhciB0OyhudWxsPT09KHQ9dGhpcy5fc2VsZWN0aW9uU2VydmljZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuc2hvdWxkQ29sdW1uU2VsZWN0KGUpKT90aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImNvbHVtbi1zZWxlY3RcIik6dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJjb2x1bW4tc2VsZWN0XCIpfSx0LnByb3RvdHlwZS5fc2hvd0N1cnNvcj1mdW5jdGlvbigpe3RoaXMuY29yZVNlcnZpY2UuaXNDdXJzb3JJbml0aWFsaXplZHx8KHRoaXMuY29yZVNlcnZpY2UuaXNDdXJzb3JJbml0aWFsaXplZD0hMCx0aGlzLnJlZnJlc2godGhpcy5idWZmZXIueSx0aGlzLmJ1ZmZlci55KSl9LHQucHJvdG90eXBlLnNjcm9sbExpbmVzPWZ1bmN0aW9uKHQscixpKXt2b2lkIDA9PT1pJiYoaT0wKSxlLnByb3RvdHlwZS5zY3JvbGxMaW5lcy5jYWxsKHRoaXMsdCxyLGkpLHRoaXMucmVmcmVzaCgwLHRoaXMucm93cy0xKX0sdC5wcm90b3R5cGUucGFzdGU9ZnVuY3Rpb24oZSl7KDAsaC5wYXN0ZSkoZSx0aGlzLnRleHRhcmVhLHRoaXMuY29yZVNlcnZpY2UpfSx0LnByb3RvdHlwZS5hdHRhY2hDdXN0b21LZXlFdmVudEhhbmRsZXI9ZnVuY3Rpb24oZSl7dGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyPWV9LHQucHJvdG90eXBlLnJlZ2lzdGVyTGlua01hdGNoZXI9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMubGlua2lmaWVyLnJlZ2lzdGVyTGlua01hdGNoZXIoZSx0LHIpO3JldHVybiB0aGlzLnJlZnJlc2goMCx0aGlzLnJvd3MtMSksaX0sdC5wcm90b3R5cGUuZGVyZWdpc3RlckxpbmtNYXRjaGVyPWZ1bmN0aW9uKGUpe3RoaXMubGlua2lmaWVyLmRlcmVnaXN0ZXJMaW5rTWF0Y2hlcihlKSYmdGhpcy5yZWZyZXNoKDAsdGhpcy5yb3dzLTEpfSx0LnByb3RvdHlwZS5yZWdpc3RlckxpbmtQcm92aWRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5saW5raWZpZXIyLnJlZ2lzdGVyTGlua1Byb3ZpZGVyKGUpfSx0LnByb3RvdHlwZS5yZWdpc3RlckNoYXJhY3RlckpvaW5lcj1mdW5jdGlvbihlKXtpZighdGhpcy5fY2hhcmFjdGVySm9pbmVyU2VydmljZSl0aHJvdyBuZXcgRXJyb3IoXCJUZXJtaW5hbCBtdXN0IGJlIG9wZW5lZCBmaXJzdFwiKTt2YXIgdD10aGlzLl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlLnJlZ2lzdGVyKGUpO3JldHVybiB0aGlzLnJlZnJlc2goMCx0aGlzLnJvd3MtMSksdH0sdC5wcm90b3R5cGUuZGVyZWdpc3RlckNoYXJhY3RlckpvaW5lcj1mdW5jdGlvbihlKXtpZighdGhpcy5fY2hhcmFjdGVySm9pbmVyU2VydmljZSl0aHJvdyBuZXcgRXJyb3IoXCJUZXJtaW5hbCBtdXN0IGJlIG9wZW5lZCBmaXJzdFwiKTt0aGlzLl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlLmRlcmVnaXN0ZXIoZSkmJnRoaXMucmVmcmVzaCgwLHRoaXMucm93cy0xKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwibWFya2Vyc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5idWZmZXIubWFya2Vyc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5hZGRNYXJrZXI9ZnVuY3Rpb24oZSl7aWYodGhpcy5idWZmZXI9PT10aGlzLmJ1ZmZlcnMubm9ybWFsKXJldHVybiB0aGlzLmJ1ZmZlci5hZGRNYXJrZXIodGhpcy5idWZmZXIueWJhc2UrdGhpcy5idWZmZXIueStlKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJEZWNvcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9kZWNvcmF0aW9uU2VydmljZS5yZWdpc3RlckRlY29yYXRpb24oZSl9LHQucHJvdG90eXBlLmhhc1NlbGVjdGlvbj1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5fc2VsZWN0aW9uU2VydmljZSYmdGhpcy5fc2VsZWN0aW9uU2VydmljZS5oYXNTZWxlY3Rpb259LHQucHJvdG90eXBlLnNlbGVjdD1mdW5jdGlvbihlLHQscil7dGhpcy5fc2VsZWN0aW9uU2VydmljZS5zZXRTZWxlY3Rpb24oZSx0LHIpfSx0LnByb3RvdHlwZS5nZXRTZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uU2VydmljZT90aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvblRleHQ6XCJcIn0sdC5wcm90b3R5cGUuZ2V0U2VsZWN0aW9uUG9zaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlJiZ0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLmhhc1NlbGVjdGlvbilyZXR1cm57c3RhcnRDb2x1bW46dGhpcy5fc2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25TdGFydFswXSxzdGFydFJvdzp0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvblN0YXJ0WzFdLGVuZENvbHVtbjp0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbkVuZFswXSxlbmRSb3c6dGhpcy5fc2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25FbmRbMV19fSx0LnByb3RvdHlwZS5jbGVhclNlbGVjdGlvbj1mdW5jdGlvbigpe3ZhciBlO251bGw9PT0oZT10aGlzLl9zZWxlY3Rpb25TZXJ2aWNlKXx8dm9pZCAwPT09ZXx8ZS5jbGVhclNlbGVjdGlvbigpfSx0LnByb3RvdHlwZS5zZWxlY3RBbGw9ZnVuY3Rpb24oKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fc2VsZWN0aW9uU2VydmljZSl8fHZvaWQgMD09PWV8fGUuc2VsZWN0QWxsKCl9LHQucHJvdG90eXBlLnNlbGVjdExpbmVzPWZ1bmN0aW9uKGUsdCl7dmFyIHI7bnVsbD09PShyPXRoaXMuX3NlbGVjdGlvblNlcnZpY2UpfHx2b2lkIDA9PT1yfHxyLnNlbGVjdExpbmVzKGUsdCl9LHQucHJvdG90eXBlLl9rZXlEb3duPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2tleURvd25IYW5kbGVkPSExLHRoaXMuX2tleURvd25TZWVuPSEwLHRoaXMuX2N1c3RvbUtleUV2ZW50SGFuZGxlciYmITE9PT10aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXIoZSkpcmV0dXJuITE7dmFyIHQ9dGhpcy5icm93c2VyLmlzTWFjJiZ0aGlzLm9wdGlvbnMubWFjT3B0aW9uSXNNZXRhJiZlLmFsdEtleTtpZighdCYmIXRoaXMuX2NvbXBvc2l0aW9uSGVscGVyLmtleWRvd24oZSkpcmV0dXJuIHRoaXMuYnVmZmVyLnliYXNlIT09dGhpcy5idWZmZXIueWRpc3AmJnRoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsVG9Cb3R0b20oKSwhMTt0fHxcIkRlYWRcIiE9PWUua2V5JiZcIkFsdEdyYXBoXCIhPT1lLmtleXx8KHRoaXMuX3VucHJvY2Vzc2VkRGVhZEtleT0hMCk7dmFyIHI9KDAsdy5ldmFsdWF0ZUtleWJvYXJkRXZlbnQpKGUsdGhpcy5jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25DdXJzb3JLZXlzLHRoaXMuYnJvd3Nlci5pc01hYyx0aGlzLm9wdGlvbnMubWFjT3B0aW9uSXNNZXRhKTtpZih0aGlzLnVwZGF0ZUN1cnNvclN0eWxlKGUpLDM9PT1yLnR5cGV8fDI9PT1yLnR5cGUpe3ZhciBpPXRoaXMucm93cy0xO3JldHVybiB0aGlzLnNjcm9sbExpbmVzKDI9PT1yLnR5cGU/LWk6aSksdGhpcy5jYW5jZWwoZSwhMCl9cmV0dXJuIDE9PT1yLnR5cGUmJnRoaXMuc2VsZWN0QWxsKCksISF0aGlzLl9pc1RoaXJkTGV2ZWxTaGlmdCh0aGlzLmJyb3dzZXIsZSl8fChyLmNhbmNlbCYmdGhpcy5jYW5jZWwoZSwhMCksIXIua2V5fHwhIShlLmtleSYmIWUuY3RybEtleSYmIWUuYWx0S2V5JiYhZS5tZXRhS2V5JiYxPT09ZS5rZXkubGVuZ3RoJiZlLmtleS5jaGFyQ29kZUF0KDApPj02NSYmZS5rZXkuY2hhckNvZGVBdCgwKTw9OTApfHwodGhpcy5fdW5wcm9jZXNzZWREZWFkS2V5Pyh0aGlzLl91bnByb2Nlc3NlZERlYWRLZXk9ITEsITApOihyLmtleSE9PXUuQzAuRVRYJiZyLmtleSE9PXUuQzAuQ1J8fCh0aGlzLnRleHRhcmVhLnZhbHVlPVwiXCIpLHRoaXMuX29uS2V5LmZpcmUoe2tleTpyLmtleSxkb21FdmVudDplfSksdGhpcy5fc2hvd0N1cnNvcigpLHRoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChyLmtleSwhMCksdGhpcy5vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLnNjcmVlblJlYWRlck1vZGU/dm9pZCh0aGlzLl9rZXlEb3duSGFuZGxlZD0hMCk6dGhpcy5jYW5jZWwoZSwhMCkpKSl9LHQucHJvdG90eXBlLl9pc1RoaXJkTGV2ZWxTaGlmdD1mdW5jdGlvbihlLHQpe3ZhciByPWUuaXNNYWMmJiF0aGlzLm9wdGlvbnMubWFjT3B0aW9uSXNNZXRhJiZ0LmFsdEtleSYmIXQuY3RybEtleSYmIXQubWV0YUtleXx8ZS5pc1dpbmRvd3MmJnQuYWx0S2V5JiZ0LmN0cmxLZXkmJiF0Lm1ldGFLZXl8fGUuaXNXaW5kb3dzJiZ0LmdldE1vZGlmaWVyU3RhdGUoXCJBbHRHcmFwaFwiKTtyZXR1cm5cImtleXByZXNzXCI9PT10LnR5cGU/cjpyJiYoIXQua2V5Q29kZXx8dC5rZXlDb2RlPjQ3KX0sdC5wcm90b3R5cGUuX2tleVVwPWZ1bmN0aW9uKGUpe3RoaXMuX2tleURvd25TZWVuPSExLHRoaXMuX2N1c3RvbUtleUV2ZW50SGFuZGxlciYmITE9PT10aGlzLl9jdXN0b21LZXlFdmVudEhhbmRsZXIoZSl8fChmdW5jdGlvbihlKXtyZXR1cm4gMTY9PT1lLmtleUNvZGV8fDE3PT09ZS5rZXlDb2RlfHwxOD09PWUua2V5Q29kZX0oZSl8fHRoaXMuZm9jdXMoKSx0aGlzLnVwZGF0ZUN1cnNvclN0eWxlKGUpLHRoaXMuX2tleVByZXNzSGFuZGxlZD0hMSl9LHQucHJvdG90eXBlLl9rZXlQcmVzcz1mdW5jdGlvbihlKXt2YXIgdDtpZih0aGlzLl9rZXlQcmVzc0hhbmRsZWQ9ITEsdGhpcy5fa2V5RG93bkhhbmRsZWQpcmV0dXJuITE7aWYodGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyJiYhMT09PXRoaXMuX2N1c3RvbUtleUV2ZW50SGFuZGxlcihlKSlyZXR1cm4hMTtpZih0aGlzLmNhbmNlbChlKSxlLmNoYXJDb2RlKXQ9ZS5jaGFyQ29kZTtlbHNlIGlmKG51bGw9PT1lLndoaWNofHx2b2lkIDA9PT1lLndoaWNoKXQ9ZS5rZXlDb2RlO2Vsc2V7aWYoMD09PWUud2hpY2h8fDA9PT1lLmNoYXJDb2RlKXJldHVybiExO3Q9ZS53aGljaH1yZXR1cm4hKCF0fHwoZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5tZXRhS2V5KSYmIXRoaXMuX2lzVGhpcmRMZXZlbFNoaWZ0KHRoaXMuYnJvd3NlcixlKXx8KHQ9U3RyaW5nLmZyb21DaGFyQ29kZSh0KSx0aGlzLl9vbktleS5maXJlKHtrZXk6dCxkb21FdmVudDplfSksdGhpcy5fc2hvd0N1cnNvcigpLHRoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudCh0LCEwKSx0aGlzLl9rZXlQcmVzc0hhbmRsZWQ9ITAsdGhpcy5fdW5wcm9jZXNzZWREZWFkS2V5PSExLDApKX0sdC5wcm90b3R5cGUuX2lucHV0RXZlbnQ9ZnVuY3Rpb24oZSl7aWYoZS5kYXRhJiZcImluc2VydFRleHRcIj09PWUuaW5wdXRUeXBlJiYoIWUuY29tcG9zZWR8fCF0aGlzLl9rZXlEb3duU2VlbikmJiF0aGlzLm9wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuc2NyZWVuUmVhZGVyTW9kZSl7aWYodGhpcy5fa2V5UHJlc3NIYW5kbGVkKXJldHVybiExO3RoaXMuX3VucHJvY2Vzc2VkRGVhZEtleT0hMTt2YXIgdD1lLmRhdGE7cmV0dXJuIHRoaXMuY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudCh0LCEwKSx0aGlzLmNhbmNlbChlKSwhMH1yZXR1cm4hMX0sdC5wcm90b3R5cGUuYmVsbD1mdW5jdGlvbigpe3ZhciBlO3RoaXMuX3NvdW5kQmVsbCgpJiYobnVsbD09PShlPXRoaXMuX3NvdW5kU2VydmljZSl8fHZvaWQgMD09PWV8fGUucGxheUJlbGxTb3VuZCgpKSx0aGlzLl9vbkJlbGwuZmlyZSgpfSx0LnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24odCxyKXt0IT09dGhpcy5jb2xzfHxyIT09dGhpcy5yb3dzP2UucHJvdG90eXBlLnJlc2l6ZS5jYWxsKHRoaXMsdCxyKTp0aGlzLl9jaGFyU2l6ZVNlcnZpY2UmJiF0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGFzVmFsaWRTaXplJiZ0aGlzLl9jaGFyU2l6ZVNlcnZpY2UubWVhc3VyZSgpfSx0LnByb3RvdHlwZS5fYWZ0ZXJSZXNpemU9ZnVuY3Rpb24oZSx0KXt2YXIgcixpO251bGw9PT0ocj10aGlzLl9jaGFyU2l6ZVNlcnZpY2UpfHx2b2lkIDA9PT1yfHxyLm1lYXN1cmUoKSxudWxsPT09KGk9dGhpcy52aWV3cG9ydCl8fHZvaWQgMD09PWl8fGkuc3luY1Njcm9sbEFyZWEoITApfSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe2lmKDAhPT10aGlzLmJ1ZmZlci55YmFzZXx8MCE9PXRoaXMuYnVmZmVyLnkpe3RoaXMuYnVmZmVyLmNsZWFyQWxsTWFya2VycygpLHRoaXMuYnVmZmVyLmxpbmVzLnNldCgwLHRoaXMuYnVmZmVyLmxpbmVzLmdldCh0aGlzLmJ1ZmZlci55YmFzZSt0aGlzLmJ1ZmZlci55KSksdGhpcy5idWZmZXIubGluZXMubGVuZ3RoPTEsdGhpcy5idWZmZXIueWRpc3A9MCx0aGlzLmJ1ZmZlci55YmFzZT0wLHRoaXMuYnVmZmVyLnk9MDtmb3IodmFyIGU9MTtlPHRoaXMucm93cztlKyspdGhpcy5idWZmZXIubGluZXMucHVzaCh0aGlzLmJ1ZmZlci5nZXRCbGFua0xpbmUoRS5ERUZBVUxUX0FUVFJfREFUQSkpO3RoaXMucmVmcmVzaCgwLHRoaXMucm93cy0xKSx0aGlzLl9vblNjcm9sbC5maXJlKHtwb3NpdGlvbjp0aGlzLmJ1ZmZlci55ZGlzcCxzb3VyY2U6MH0pfX0sdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt2YXIgdCxyO3RoaXMub3B0aW9ucy5yb3dzPXRoaXMucm93cyx0aGlzLm9wdGlvbnMuY29scz10aGlzLmNvbHM7dmFyIGk9dGhpcy5fY3VzdG9tS2V5RXZlbnRIYW5kbGVyO3RoaXMuX3NldHVwKCksZS5wcm90b3R5cGUucmVzZXQuY2FsbCh0aGlzKSxudWxsPT09KHQ9dGhpcy5fc2VsZWN0aW9uU2VydmljZSl8fHZvaWQgMD09PXR8fHQucmVzZXQoKSx0aGlzLl9kZWNvcmF0aW9uU2VydmljZS5yZXNldCgpLHRoaXMuX2N1c3RvbUtleUV2ZW50SGFuZGxlcj1pLHRoaXMucmVmcmVzaCgwLHRoaXMucm93cy0xKSxudWxsPT09KHI9dGhpcy52aWV3cG9ydCl8fHZvaWQgMD09PXJ8fHIuc3luY1Njcm9sbEFyZWEoKX0sdC5wcm90b3R5cGUuY2xlYXJUZXh0dXJlQXRsYXM9ZnVuY3Rpb24oKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fcmVuZGVyU2VydmljZSl8fHZvaWQgMD09PWV8fGUuY2xlYXJUZXh0dXJlQXRsYXMoKX0sdC5wcm90b3R5cGUuX3JlcG9ydEZvY3VzPWZ1bmN0aW9uKCl7dmFyIGU7KG51bGw9PT0oZT10aGlzLmVsZW1lbnQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNsYXNzTGlzdC5jb250YWlucyhcImZvY3VzXCIpKT90aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQodS5DMC5FU0MrXCJbSVwiKTp0aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQodS5DMC5FU0MrXCJbT1wiKX0sdC5wcm90b3R5cGUuX3JlcG9ydFdpbmRvd3NPcHRpb25zPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX3JlbmRlclNlcnZpY2Upc3dpdGNoKGUpe2Nhc2UgZi5XaW5kb3dzT3B0aW9uc1JlcG9ydFR5cGUuR0VUX1dJTl9TSVpFX1BJWEVMUzp2YXIgdD10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuc2NhbGVkQ2FudmFzV2lkdGgudG9GaXhlZCgwKSxyPXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5zY2FsZWRDYW52YXNIZWlnaHQudG9GaXhlZCgwKTt0aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQodS5DMC5FU0MrXCJbNDtcIityK1wiO1wiK3QrXCJ0XCIpO2JyZWFrO2Nhc2UgZi5XaW5kb3dzT3B0aW9uc1JlcG9ydFR5cGUuR0VUX0NFTExfU0laRV9QSVhFTFM6dmFyIGk9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLnNjYWxlZENlbGxXaWR0aC50b0ZpeGVkKDApLG49dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQudG9GaXhlZCgwKTt0aGlzLmNvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQodS5DMC5FU0MrXCJbNjtcIituK1wiO1wiK2krXCJ0XCIpfX0sdC5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5vcHRpb25zLmNhbmNlbEV2ZW50c3x8dClyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksITF9LHQucHJvdG90eXBlLl92aXN1YWxCZWxsPWZ1bmN0aW9uKCl7cmV0dXJuITF9LHQucHJvdG90eXBlLl9zb3VuZEJlbGw9ZnVuY3Rpb24oKXtyZXR1cm5cInNvdW5kXCI9PT10aGlzLm9wdGlvbnMuYmVsbFN0eWxlfSx0fShULkNvcmVUZXJtaW5hbCk7dC5UZXJtaW5hbD1xfSw5OTI0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5UaW1lQmFzZWREZWJvdW5jZXI9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZvaWQgMD09PXQmJih0PTFlMyksdGhpcy5fcmVuZGVyQ2FsbGJhY2s9ZSx0aGlzLl9kZWJvdW5jZVRocmVzaG9sZE1TPXQsdGhpcy5fbGFzdFJlZnJlc2hNcz0wLHRoaXMuX2FkZGl0aW9uYWxSZWZyZXNoUmVxdWVzdGVkPSExfXJldHVybiBlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fcmVmcmVzaFRpbWVvdXRJRCYmY2xlYXJUaW1lb3V0KHRoaXMuX3JlZnJlc2hUaW1lb3V0SUQpfSxlLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzO3RoaXMuX3Jvd0NvdW50PXIsZT12b2lkIDAhPT1lP2U6MCx0PXZvaWQgMCE9PXQ/dDp0aGlzLl9yb3dDb3VudC0xLHRoaXMuX3Jvd1N0YXJ0PXZvaWQgMCE9PXRoaXMuX3Jvd1N0YXJ0P01hdGgubWluKHRoaXMuX3Jvd1N0YXJ0LGUpOmUsdGhpcy5fcm93RW5kPXZvaWQgMCE9PXRoaXMuX3Jvd0VuZD9NYXRoLm1heCh0aGlzLl9yb3dFbmQsdCk6dDt2YXIgbj1EYXRlLm5vdygpO2lmKG4tdGhpcy5fbGFzdFJlZnJlc2hNcz49dGhpcy5fZGVib3VuY2VUaHJlc2hvbGRNUyl0aGlzLl9sYXN0UmVmcmVzaE1zPW4sdGhpcy5faW5uZXJSZWZyZXNoKCk7ZWxzZSBpZighdGhpcy5fYWRkaXRpb25hbFJlZnJlc2hSZXF1ZXN0ZWQpe3ZhciBvPW4tdGhpcy5fbGFzdFJlZnJlc2hNcyxzPXRoaXMuX2RlYm91bmNlVGhyZXNob2xkTVMtbzt0aGlzLl9hZGRpdGlvbmFsUmVmcmVzaFJlcXVlc3RlZD0hMCx0aGlzLl9yZWZyZXNoVGltZW91dElEPXdpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2kuX2xhc3RSZWZyZXNoTXM9RGF0ZS5ub3coKSxpLl9pbm5lclJlZnJlc2goKSxpLl9hZGRpdGlvbmFsUmVmcmVzaFJlcXVlc3RlZD0hMSxpLl9yZWZyZXNoVGltZW91dElEPXZvaWQgMH0pLHMpfX0sZS5wcm90b3R5cGUuX2lubmVyUmVmcmVzaD1mdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMuX3Jvd1N0YXJ0JiZ2b2lkIDAhPT10aGlzLl9yb3dFbmQmJnZvaWQgMCE9PXRoaXMuX3Jvd0NvdW50KXt2YXIgZT1NYXRoLm1heCh0aGlzLl9yb3dTdGFydCwwKSx0PU1hdGgubWluKHRoaXMuX3Jvd0VuZCx0aGlzLl9yb3dDb3VudC0xKTt0aGlzLl9yb3dTdGFydD12b2lkIDAsdGhpcy5fcm93RW5kPXZvaWQgMCx0aGlzLl9yZW5kZXJDYWxsYmFjayhlLHQpfX0sZX0oKTt0LlRpbWVCYXNlZERlYm91bmNlcj1yfSwxNjgwOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pLG89dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQscixpKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTppO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixpKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShuPWVbYV0pJiYocz0obzwzP24ocyk6bz4zP24odCxyLHMpOm4odCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30scz10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dChyLGksZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlZpZXdwb3J0PXZvaWQgMDt2YXIgYT1yKDg0NCksYz1yKDM2NTYpLGw9cig0NzI1KSxoPXIoMjU4NSksdT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQscixpLG4sbyxzLGEsbCl7dmFyIGg9ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBoLl9zY3JvbGxMaW5lcz10LGguX3ZpZXdwb3J0RWxlbWVudD1yLGguX3Njcm9sbEFyZWE9aSxoLl9lbGVtZW50PW4saC5fYnVmZmVyU2VydmljZT1vLGguX29wdGlvbnNTZXJ2aWNlPXMsaC5fY2hhclNpemVTZXJ2aWNlPWEsaC5fcmVuZGVyU2VydmljZT1sLGguc2Nyb2xsQmFyV2lkdGg9MCxoLl9jdXJyZW50Um93SGVpZ2h0PTAsaC5fY3VycmVudFNjYWxlZENlbGxIZWlnaHQ9MCxoLl9sYXN0UmVjb3JkZWRCdWZmZXJMZW5ndGg9MCxoLl9sYXN0UmVjb3JkZWRWaWV3cG9ydEhlaWdodD0wLGguX2xhc3RSZWNvcmRlZEJ1ZmZlckhlaWdodD0wLGguX2xhc3RUb3VjaFk9MCxoLl9sYXN0U2Nyb2xsVG9wPTAsaC5fd2hlZWxQYXJ0aWFsU2Nyb2xsPTAsaC5fcmVmcmVzaEFuaW1hdGlvbkZyYW1lPW51bGwsaC5faWdub3JlTmV4dFNjcm9sbEV2ZW50PSExLGguc2Nyb2xsQmFyV2lkdGg9aC5fdmlld3BvcnRFbGVtZW50Lm9mZnNldFdpZHRoLWguX3Njcm9sbEFyZWEub2Zmc2V0V2lkdGh8fDE1LGgucmVnaXN0ZXIoKDAsYy5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKGguX3ZpZXdwb3J0RWxlbWVudCxcInNjcm9sbFwiLGguX29uU2Nyb2xsLmJpbmQoaCkpKSxoLl9hY3RpdmVCdWZmZXI9aC5fYnVmZmVyU2VydmljZS5idWZmZXIsaC5yZWdpc3RlcihoLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMub25CdWZmZXJBY3RpdmF0ZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGguX2FjdGl2ZUJ1ZmZlcj1lLmFjdGl2ZUJ1ZmZlcn0pKSksaC5fcmVuZGVyRGltZW5zaW9ucz1oLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMsaC5yZWdpc3RlcihoLl9yZW5kZXJTZXJ2aWNlLm9uRGltZW5zaW9uc0NoYW5nZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGguX3JlbmRlckRpbWVuc2lvbnM9ZX0pKSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gaC5zeW5jU2Nyb2xsQXJlYSgpfSksMCksaH1yZXR1cm4gbih0LGUpLHQucHJvdG90eXBlLm9uVGhlbWVDaGFuZ2U9ZnVuY3Rpb24oZSl7dGhpcy5fdmlld3BvcnRFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvcj1lLmJhY2tncm91bmQuY3NzfSx0LnByb3RvdHlwZS5fcmVmcmVzaD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKGUpcmV0dXJuIHRoaXMuX2lubmVyUmVmcmVzaCgpLHZvaWQobnVsbCE9PXRoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZSYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmVmcmVzaEFuaW1hdGlvbkZyYW1lKSk7bnVsbD09PXRoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZSYmKHRoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX2lubmVyUmVmcmVzaCgpfSkpKX0sdC5wcm90b3R5cGUuX2lubmVyUmVmcmVzaD1mdW5jdGlvbigpe2lmKHRoaXMuX2NoYXJTaXplU2VydmljZS5oZWlnaHQ+MCl7dGhpcy5fY3VycmVudFJvd0hlaWdodD10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuc2NhbGVkQ2VsbEhlaWdodC93aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyx0aGlzLl9jdXJyZW50U2NhbGVkQ2VsbEhlaWdodD10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuc2NhbGVkQ2VsbEhlaWdodCx0aGlzLl9sYXN0UmVjb3JkZWRWaWV3cG9ydEhlaWdodD10aGlzLl92aWV3cG9ydEVsZW1lbnQub2Zmc2V0SGVpZ2h0O3ZhciBlPU1hdGgucm91bmQodGhpcy5fY3VycmVudFJvd0hlaWdodCp0aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJMZW5ndGgpKyh0aGlzLl9sYXN0UmVjb3JkZWRWaWV3cG9ydEhlaWdodC10aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuY2FudmFzSGVpZ2h0KTt0aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJIZWlnaHQhPT1lJiYodGhpcy5fbGFzdFJlY29yZGVkQnVmZmVySGVpZ2h0PWUsdGhpcy5fc2Nyb2xsQXJlYS5zdHlsZS5oZWlnaHQ9dGhpcy5fbGFzdFJlY29yZGVkQnVmZmVySGVpZ2h0K1wicHhcIil9dmFyIHQ9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3AqdGhpcy5fY3VycmVudFJvd0hlaWdodDt0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wIT09dCYmKHRoaXMuX2lnbm9yZU5leHRTY3JvbGxFdmVudD0hMCx0aGlzLl92aWV3cG9ydEVsZW1lbnQuc2Nyb2xsVG9wPXQpLHRoaXMuX3JlZnJlc2hBbmltYXRpb25GcmFtZT1udWxsfSx0LnByb3RvdHlwZS5zeW5jU2Nyb2xsQXJlYT1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lJiYoZT0hMSksdGhpcy5fbGFzdFJlY29yZGVkQnVmZmVyTGVuZ3RoIT09dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIubGluZXMubGVuZ3RoKXJldHVybiB0aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJMZW5ndGg9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIubGluZXMubGVuZ3RoLHZvaWQgdGhpcy5fcmVmcmVzaChlKTt0aGlzLl9sYXN0UmVjb3JkZWRWaWV3cG9ydEhlaWdodD09PXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jYW52YXNIZWlnaHQmJnRoaXMuX2xhc3RTY3JvbGxUb3A9PT10aGlzLl9hY3RpdmVCdWZmZXIueWRpc3AqdGhpcy5fY3VycmVudFJvd0hlaWdodCYmdGhpcy5fcmVuZGVyRGltZW5zaW9ucy5zY2FsZWRDZWxsSGVpZ2h0PT09dGhpcy5fY3VycmVudFNjYWxlZENlbGxIZWlnaHR8fHRoaXMuX3JlZnJlc2goZSl9LHQucHJvdG90eXBlLl9vblNjcm9sbD1mdW5jdGlvbihlKXtpZih0aGlzLl9sYXN0U2Nyb2xsVG9wPXRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3AsdGhpcy5fdmlld3BvcnRFbGVtZW50Lm9mZnNldFBhcmVudCl7aWYodGhpcy5faWdub3JlTmV4dFNjcm9sbEV2ZW50KXJldHVybiB0aGlzLl9pZ25vcmVOZXh0U2Nyb2xsRXZlbnQ9ITEsdm9pZCB0aGlzLl9zY3JvbGxMaW5lcygwKTt2YXIgdD1NYXRoLnJvdW5kKHRoaXMuX2xhc3RTY3JvbGxUb3AvdGhpcy5fY3VycmVudFJvd0hlaWdodCktdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3A7dGhpcy5fc2Nyb2xsTGluZXModCl9fSx0LnByb3RvdHlwZS5fYnViYmxlU2Nyb2xsPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fdmlld3BvcnRFbGVtZW50LnNjcm9sbFRvcCt0aGlzLl9sYXN0UmVjb3JkZWRWaWV3cG9ydEhlaWdodDtyZXR1cm4hKHQ8MCYmMCE9PXRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3B8fHQ+MCYmcjx0aGlzLl9sYXN0UmVjb3JkZWRCdWZmZXJIZWlnaHQpfHwoZS5jYW5jZWxhYmxlJiZlLnByZXZlbnREZWZhdWx0KCksITEpfSx0LnByb3RvdHlwZS5vbldoZWVsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2dldFBpeGVsc1Njcm9sbGVkKGUpO3JldHVybiAwIT09dCYmKHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3ArPXQsdGhpcy5fYnViYmxlU2Nyb2xsKGUsdCkpfSx0LnByb3RvdHlwZS5fZ2V0UGl4ZWxzU2Nyb2xsZWQ9ZnVuY3Rpb24oZSl7aWYoMD09PWUuZGVsdGFZfHxlLnNoaWZ0S2V5KXJldHVybiAwO3ZhciB0PXRoaXMuX2FwcGx5U2Nyb2xsTW9kaWZpZXIoZS5kZWx0YVksZSk7cmV0dXJuIGUuZGVsdGFNb2RlPT09V2hlZWxFdmVudC5ET01fREVMVEFfTElORT90Kj10aGlzLl9jdXJyZW50Um93SGVpZ2h0OmUuZGVsdGFNb2RlPT09V2hlZWxFdmVudC5ET01fREVMVEFfUEFHRSYmKHQqPXRoaXMuX2N1cnJlbnRSb3dIZWlnaHQqdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKSx0fSx0LnByb3RvdHlwZS5nZXRMaW5lc1Njcm9sbGVkPWZ1bmN0aW9uKGUpe2lmKDA9PT1lLmRlbHRhWXx8ZS5zaGlmdEtleSlyZXR1cm4gMDt2YXIgdD10aGlzLl9hcHBseVNjcm9sbE1vZGlmaWVyKGUuZGVsdGFZLGUpO3JldHVybiBlLmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX1BJWEVMPyh0Lz10aGlzLl9jdXJyZW50Um93SGVpZ2h0KzAsdGhpcy5fd2hlZWxQYXJ0aWFsU2Nyb2xsKz10LHQ9TWF0aC5mbG9vcihNYXRoLmFicyh0aGlzLl93aGVlbFBhcnRpYWxTY3JvbGwpKSoodGhpcy5fd2hlZWxQYXJ0aWFsU2Nyb2xsPjA/MTotMSksdGhpcy5fd2hlZWxQYXJ0aWFsU2Nyb2xsJT0xKTplLmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX1BBR0UmJih0Kj10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MpLHR9LHQucHJvdG90eXBlLl9hcHBseVNjcm9sbE1vZGlmaWVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mYXN0U2Nyb2xsTW9kaWZpZXI7cmV0dXJuXCJhbHRcIj09PXImJnQuYWx0S2V5fHxcImN0cmxcIj09PXImJnQuY3RybEtleXx8XCJzaGlmdFwiPT09ciYmdC5zaGlmdEtleT9lKnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZmFzdFNjcm9sbFNlbnNpdGl2aXR5KnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuc2Nyb2xsU2Vuc2l0aXZpdHk6ZSp0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLnNjcm9sbFNlbnNpdGl2aXR5fSx0LnByb3RvdHlwZS5vblRvdWNoU3RhcnQ9ZnVuY3Rpb24oZSl7dGhpcy5fbGFzdFRvdWNoWT1lLnRvdWNoZXNbMF0ucGFnZVl9LHQucHJvdG90eXBlLm9uVG91Y2hNb3ZlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2xhc3RUb3VjaFktZS50b3VjaGVzWzBdLnBhZ2VZO3JldHVybiB0aGlzLl9sYXN0VG91Y2hZPWUudG91Y2hlc1swXS5wYWdlWSwwIT09dCYmKHRoaXMuX3ZpZXdwb3J0RWxlbWVudC5zY3JvbGxUb3ArPXQsdGhpcy5fYnViYmxlU2Nyb2xsKGUsdCkpfSxvKFtzKDQsaC5JQnVmZmVyU2VydmljZSkscyg1LGguSU9wdGlvbnNTZXJ2aWNlKSxzKDYsbC5JQ2hhclNpemVTZXJ2aWNlKSxzKDcsbC5JUmVuZGVyU2VydmljZSldLHQpfShhLkRpc3Bvc2FibGUpO3QuVmlld3BvcnQ9dX0sMzEwNzpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KSxvPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LHM9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX0sYT10aGlzJiZ0aGlzLl9fdmFsdWVzfHxmdW5jdGlvbihlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixyPXQmJmVbdF0saT0wO2lmKHIpcmV0dXJuIHIuY2FsbChlKTtpZihlJiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSYmaT49ZS5sZW5ndGgmJihlPXZvaWQgMCkse3ZhbHVlOmUmJmVbaSsrXSxkb25lOiFlfX19O3Rocm93IG5ldyBUeXBlRXJyb3IodD9cIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCI6XCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1ZmZlckRlY29yYXRpb25SZW5kZXJlcj12b2lkIDA7dmFyIGM9cigzNjU2KSxsPXIoNDcyNSksaD1yKDg0NCksdT1yKDI1ODUpLGY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIsaSxuKXt2YXIgbz1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8uX3NjcmVlbkVsZW1lbnQ9dCxvLl9idWZmZXJTZXJ2aWNlPXIsby5fZGVjb3JhdGlvblNlcnZpY2U9aSxvLl9yZW5kZXJTZXJ2aWNlPW4sby5fZGVjb3JhdGlvbkVsZW1lbnRzPW5ldyBNYXAsby5fYWx0QnVmZmVySXNBY3RpdmU9ITEsby5fZGltZW5zaW9uc0NoYW5nZWQ9ITEsby5fY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksby5fY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1kZWNvcmF0aW9uLWNvbnRhaW5lclwiKSxvLl9zY3JlZW5FbGVtZW50LmFwcGVuZENoaWxkKG8uX2NvbnRhaW5lciksby5yZWdpc3RlcihvLl9yZW5kZXJTZXJ2aWNlLm9uUmVuZGVyZWRWaWV3cG9ydENoYW5nZSgoZnVuY3Rpb24oKXtyZXR1cm4gby5fcXVldWVSZWZyZXNoKCl9KSkpLG8ucmVnaXN0ZXIoby5fcmVuZGVyU2VydmljZS5vbkRpbWVuc2lvbnNDaGFuZ2UoKGZ1bmN0aW9uKCl7by5fZGltZW5zaW9uc0NoYW5nZWQ9ITAsby5fcXVldWVSZWZyZXNoKCl9KSkpLG8ucmVnaXN0ZXIoKDAsYy5hZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIpKHdpbmRvdyxcInJlc2l6ZVwiLChmdW5jdGlvbigpe3JldHVybiBvLl9xdWV1ZVJlZnJlc2goKX0pKSksby5yZWdpc3RlcihvLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMub25CdWZmZXJBY3RpdmF0ZSgoZnVuY3Rpb24oKXtvLl9hbHRCdWZmZXJJc0FjdGl2ZT1vLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcj09PW8uX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hbHR9KSkpLG8ucmVnaXN0ZXIoby5fZGVjb3JhdGlvblNlcnZpY2Uub25EZWNvcmF0aW9uUmVnaXN0ZXJlZCgoZnVuY3Rpb24oKXtyZXR1cm4gby5fcXVldWVSZWZyZXNoKCl9KSkpLG8ucmVnaXN0ZXIoby5fZGVjb3JhdGlvblNlcnZpY2Uub25EZWNvcmF0aW9uUmVtb3ZlZCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8uX3JlbW92ZURlY29yYXRpb24oZSl9KSkpLG99cmV0dXJuIG4odCxlKSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fY29udGFpbmVyLnJlbW92ZSgpLHRoaXMuX2RlY29yYXRpb25FbGVtZW50cy5jbGVhcigpLGUucHJvdG90eXBlLmRpc3Bvc2UuY2FsbCh0aGlzKX0sdC5wcm90b3R5cGUuX3F1ZXVlUmVmcmVzaD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dm9pZCAwPT09dGhpcy5fYW5pbWF0aW9uRnJhbWUmJih0aGlzLl9hbmltYXRpb25GcmFtZT10aGlzLl9yZW5kZXJTZXJ2aWNlLmFkZFJlZnJlc2hDYWxsYmFjaygoZnVuY3Rpb24oKXtlLnJlZnJlc2hEZWNvcmF0aW9ucygpLGUuX2FuaW1hdGlvbkZyYW1lPXZvaWQgMH0pKSl9LHQucHJvdG90eXBlLnJlZnJlc2hEZWNvcmF0aW9ucz1mdW5jdGlvbigpe3ZhciBlLHQ7dHJ5e2Zvcih2YXIgcj1hKHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlLmRlY29yYXRpb25zKSxpPXIubmV4dCgpOyFpLmRvbmU7aT1yLm5leHQoKSl7dmFyIG49aS52YWx1ZTt0aGlzLl9yZW5kZXJEZWNvcmF0aW9uKG4pfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYodD1yLnJldHVybikmJnQuY2FsbChyKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19dGhpcy5fZGltZW5zaW9uc0NoYW5nZWQ9ITF9LHQucHJvdG90eXBlLl9yZW5kZXJEZWNvcmF0aW9uPWZ1bmN0aW9uKGUpe3RoaXMuX3JlZnJlc2hTdHlsZShlKSx0aGlzLl9kaW1lbnNpb25zQ2hhbmdlZCYmdGhpcy5fcmVmcmVzaFhQb3NpdGlvbihlKX0sdC5wcm90b3R5cGUuX2NyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3IuY2xhc3NMaXN0LmFkZChcInh0ZXJtLWRlY29yYXRpb25cIiksci5zdHlsZS53aWR0aD1NYXRoLnJvdW5kKChlLm9wdGlvbnMud2lkdGh8fDEpKnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5hY3R1YWxDZWxsV2lkdGgpK1wicHhcIixyLnN0eWxlLmhlaWdodD0oZS5vcHRpb25zLmhlaWdodHx8MSkqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmFjdHVhbENlbGxIZWlnaHQrXCJweFwiLHIuc3R5bGUudG9wPShlLm1hcmtlci5saW5lLXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hY3RpdmUueWRpc3ApKnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5hY3R1YWxDZWxsSGVpZ2h0K1wicHhcIixyLnN0eWxlLmxpbmVIZWlnaHQ9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmFjdHVhbENlbGxIZWlnaHQrXCJweFwiO3ZhciBpPW51bGwhPT0odD1lLm9wdGlvbnMueCkmJnZvaWQgMCE9PXQ/dDowO3JldHVybiBpJiZpPnRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyYmKHIuc3R5bGUuZGlzcGxheT1cIm5vbmVcIiksdGhpcy5fcmVmcmVzaFhQb3NpdGlvbihlLHIpLHJ9LHQucHJvdG90eXBlLl9yZWZyZXNoU3R5bGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWUubWFya2VyLmxpbmUtdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2ZS55ZGlzcDtpZihyPDB8fHI+PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyllLmVsZW1lbnQmJihlLmVsZW1lbnQuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixlLm9uUmVuZGVyRW1pdHRlci5maXJlKGUuZWxlbWVudCkpO2Vsc2V7dmFyIGk9dGhpcy5fZGVjb3JhdGlvbkVsZW1lbnRzLmdldChlKTtpfHwoZS5vbkRpc3Bvc2UoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX3JlbW92ZURlY29yYXRpb24oZSl9KSksaT10aGlzLl9jcmVhdGVFbGVtZW50KGUpLGUuZWxlbWVudD1pLHRoaXMuX2RlY29yYXRpb25FbGVtZW50cy5zZXQoZSxpKSx0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoaSkpLGkuc3R5bGUudG9wPXIqdGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmFjdHVhbENlbGxIZWlnaHQrXCJweFwiLGkuc3R5bGUuZGlzcGxheT10aGlzLl9hbHRCdWZmZXJJc0FjdGl2ZT9cIm5vbmVcIjpcImJsb2NrXCIsZS5vblJlbmRlckVtaXR0ZXIuZmlyZShpKX19LHQucHJvdG90eXBlLl9yZWZyZXNoWFBvc2l0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIHI7aWYodm9pZCAwPT09dCYmKHQ9ZS5lbGVtZW50KSx0KXt2YXIgaT1udWxsIT09KHI9ZS5vcHRpb25zLngpJiZ2b2lkIDAhPT1yP3I6MDtcInJpZ2h0XCI9PT0oZS5vcHRpb25zLmFuY2hvcnx8XCJsZWZ0XCIpP3Quc3R5bGUucmlnaHQ9aT9pKnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5hY3R1YWxDZWxsV2lkdGgrXCJweFwiOlwiXCI6dC5zdHlsZS5sZWZ0PWk/aSp0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoK1wicHhcIjpcIlwifX0sdC5wcm90b3R5cGUuX3JlbW92ZURlY29yYXRpb249ZnVuY3Rpb24oZSl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuX2RlY29yYXRpb25FbGVtZW50cy5nZXQoZSkpfHx2b2lkIDA9PT10fHx0LnJlbW92ZSgpLHRoaXMuX2RlY29yYXRpb25FbGVtZW50cy5kZWxldGUoZSl9LG8oW3MoMSx1LklCdWZmZXJTZXJ2aWNlKSxzKDIsdS5JRGVjb3JhdGlvblNlcnZpY2UpLHMoMyxsLklSZW5kZXJTZXJ2aWNlKV0sdCl9KGguRGlzcG9zYWJsZSk7dC5CdWZmZXJEZWNvcmF0aW9uUmVuZGVyZXI9Zn0sNTg3MTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMmJnRoaXMuX192YWx1ZXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLHI9dCYmZVt0XSxpPTA7aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBlJiZpPj1lLmxlbmd0aCYmKGU9dm9pZCAwKSx7dmFsdWU6ZSYmZVtpKytdLGRvbmU6IWV9fX07dGhyb3cgbmV3IFR5cGVFcnJvcih0P1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29sb3Jab25lU3RvcmU9dm9pZCAwO3ZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuX3pvbmVzPVtdLHRoaXMuX3pvbmVQb29sPVtdLHRoaXMuX3pvbmVQb29sSW5kZXg9MCx0aGlzLl9saW5lUGFkZGluZz17ZnVsbDowLGxlZnQ6MCxjZW50ZXI6MCxyaWdodDowfX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiem9uZXNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmVQb29sLmxlbmd0aD1NYXRoLm1pbih0aGlzLl96b25lUG9vbC5sZW5ndGgsdGhpcy5fem9uZXMubGVuZ3RoKSx0aGlzLl96b25lc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX3pvbmVzLmxlbmd0aD0wLHRoaXMuX3pvbmVQb29sSW5kZXg9MH0sZS5wcm90b3R5cGUuYWRkRGVjb3JhdGlvbj1mdW5jdGlvbihlKXt2YXIgdCxpO2lmKGUub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucyl7dHJ5e2Zvcih2YXIgbj1yKHRoaXMuX3pvbmVzKSxvPW4ubmV4dCgpOyFvLmRvbmU7bz1uLm5leHQoKSl7dmFyIHM9by52YWx1ZTtpZihzLmNvbG9yPT09ZS5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zLmNvbG9yJiZzLnBvc2l0aW9uPT09ZS5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zLnBvc2l0aW9uKXtpZih0aGlzLl9saW5lSW50ZXJzZWN0c1pvbmUocyxlLm1hcmtlci5saW5lKSlyZXR1cm47aWYodGhpcy5fbGluZUFkamFjZW50VG9ab25lKHMsZS5tYXJrZXIubGluZSxlLm9wdGlvbnMub3ZlcnZpZXdSdWxlck9wdGlvbnMucG9zaXRpb24pKXJldHVybiB2b2lkIHRoaXMuX2FkZExpbmVUb1pvbmUocyxlLm1hcmtlci5saW5lKX19fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihpPW4ucmV0dXJuKSYmaS5jYWxsKG4pfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX1pZih0aGlzLl96b25lUG9vbEluZGV4PHRoaXMuX3pvbmVQb29sLmxlbmd0aClyZXR1cm4gdGhpcy5fem9uZVBvb2xbdGhpcy5fem9uZVBvb2xJbmRleF0uY29sb3I9ZS5vcHRpb25zLm92ZXJ2aWV3UnVsZXJPcHRpb25zLmNvbG9yLHRoaXMuX3pvbmVQb29sW3RoaXMuX3pvbmVQb29sSW5kZXhdLnBvc2l0aW9uPWUub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucy5wb3NpdGlvbix0aGlzLl96b25lUG9vbFt0aGlzLl96b25lUG9vbEluZGV4XS5zdGFydEJ1ZmZlckxpbmU9ZS5tYXJrZXIubGluZSx0aGlzLl96b25lUG9vbFt0aGlzLl96b25lUG9vbEluZGV4XS5lbmRCdWZmZXJMaW5lPWUubWFya2VyLmxpbmUsdm9pZCB0aGlzLl96b25lcy5wdXNoKHRoaXMuX3pvbmVQb29sW3RoaXMuX3pvbmVQb29sSW5kZXgrK10pO3RoaXMuX3pvbmVzLnB1c2goe2NvbG9yOmUub3B0aW9ucy5vdmVydmlld1J1bGVyT3B0aW9ucy5jb2xvcixwb3NpdGlvbjplLm9wdGlvbnMub3ZlcnZpZXdSdWxlck9wdGlvbnMucG9zaXRpb24sc3RhcnRCdWZmZXJMaW5lOmUubWFya2VyLmxpbmUsZW5kQnVmZmVyTGluZTplLm1hcmtlci5saW5lfSksdGhpcy5fem9uZVBvb2wucHVzaCh0aGlzLl96b25lc1t0aGlzLl96b25lcy5sZW5ndGgtMV0pLHRoaXMuX3pvbmVQb29sSW5kZXgrK319LGUucHJvdG90eXBlLnNldFBhZGRpbmc9ZnVuY3Rpb24oZSl7dGhpcy5fbGluZVBhZGRpbmc9ZX0sZS5wcm90b3R5cGUuX2xpbmVJbnRlcnNlY3RzWm9uZT1mdW5jdGlvbihlLHQpe3JldHVybiB0Pj1lLnN0YXJ0QnVmZmVyTGluZSYmdDw9ZS5lbmRCdWZmZXJMaW5lfSxlLnByb3RvdHlwZS5fbGluZUFkamFjZW50VG9ab25lPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdD49ZS5zdGFydEJ1ZmZlckxpbmUtdGhpcy5fbGluZVBhZGRpbmdbcnx8XCJmdWxsXCJdJiZ0PD1lLmVuZEJ1ZmZlckxpbmUrdGhpcy5fbGluZVBhZGRpbmdbcnx8XCJmdWxsXCJdfSxlLnByb3RvdHlwZS5fYWRkTGluZVRvWm9uZT1mdW5jdGlvbihlLHQpe2Uuc3RhcnRCdWZmZXJMaW5lPU1hdGgubWluKGUuc3RhcnRCdWZmZXJMaW5lLHQpLGUuZW5kQnVmZmVyTGluZT1NYXRoLm1heChlLmVuZEJ1ZmZlckxpbmUsdCl9LGV9KCk7dC5Db2xvclpvbmVTdG9yZT1pfSw1NzQ0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pLG89dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQscixpKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTppO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixpKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShuPWVbYV0pJiYocz0obzwzP24ocyk6bz4zP24odCxyLHMpOm4odCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30scz10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dChyLGksZSl9fSxhPXRoaXMmJnRoaXMuX192YWx1ZXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLHI9dCYmZVt0XSxpPTA7aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBlJiZpPj1lLmxlbmd0aCYmKGU9dm9pZCAwKSx7dmFsdWU6ZSYmZVtpKytdLGRvbmU6IWV9fX07dGhyb3cgbmV3IFR5cGVFcnJvcih0P1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3ZlcnZpZXdSdWxlclJlbmRlcmVyPXZvaWQgMDt2YXIgYz1yKDU4NzEpLGw9cigzNjU2KSxoPXIoNDcyNSksdT1yKDg0NCksZj1yKDI1ODUpLF89e2Z1bGw6MCxsZWZ0OjAsY2VudGVyOjAscmlnaHQ6MH0sZD17ZnVsbDowLGxlZnQ6MCxjZW50ZXI6MCxyaWdodDowfSxwPXtmdWxsOjAsbGVmdDowLGNlbnRlcjowLHJpZ2h0OjB9LHY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIsaSxuLG8scyl7dmFyIGEsbD1lLmNhbGwodGhpcyl8fHRoaXM7bC5fdmlld3BvcnRFbGVtZW50PXQsbC5fc2NyZWVuRWxlbWVudD1yLGwuX2J1ZmZlclNlcnZpY2U9aSxsLl9kZWNvcmF0aW9uU2VydmljZT1uLGwuX3JlbmRlclNlcnZpY2U9byxsLl9vcHRpb25zU2VydmljZT1zLGwuX2NvbG9yWm9uZVN0b3JlPW5ldyBjLkNvbG9yWm9uZVN0b3JlLGwuX3Nob3VsZFVwZGF0ZURpbWVuc2lvbnM9ITAsbC5fc2hvdWxkVXBkYXRlQW5jaG9yPSEwLGwuX2xhc3RLbm93bkJ1ZmZlckxlbmd0aD0wLGwuX2NhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpLGwuX2NhbnZhcy5jbGFzc0xpc3QuYWRkKFwieHRlcm0tZGVjb3JhdGlvbi1vdmVydmlldy1ydWxlclwiKSxsLl9yZWZyZXNoQ2FudmFzRGltZW5zaW9ucygpLG51bGw9PT0oYT1sLl92aWV3cG9ydEVsZW1lbnQucGFyZW50RWxlbWVudCl8fHZvaWQgMD09PWF8fGEuaW5zZXJ0QmVmb3JlKGwuX2NhbnZhcyxsLl92aWV3cG9ydEVsZW1lbnQpO3ZhciBoPWwuX2NhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7aWYoIWgpdGhyb3cgbmV3IEVycm9yKFwiQ3R4IGNhbm5vdCBiZSBudWxsXCIpO3JldHVybiBsLl9jdHg9aCxsLl9yZWdpc3RlckRlY29yYXRpb25MaXN0ZW5lcnMoKSxsLl9yZWdpc3RlckJ1ZmZlckNoYW5nZUxpc3RlbmVycygpLGwuX3JlZ2lzdGVyRGltZW5zaW9uQ2hhbmdlTGlzdGVuZXJzKCksbH1yZXR1cm4gbih0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIl93aWR0aFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3B0aW9uc1NlcnZpY2Uub3B0aW9ucy5vdmVydmlld1J1bGVyV2lkdGh8fDB9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuX3JlZ2lzdGVyRGVjb3JhdGlvbkxpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5yZWdpc3Rlcih0aGlzLl9kZWNvcmF0aW9uU2VydmljZS5vbkRlY29yYXRpb25SZWdpc3RlcmVkKChmdW5jdGlvbigpe3JldHVybiBlLl9xdWV1ZVJlZnJlc2godm9pZCAwLCEwKX0pKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9kZWNvcmF0aW9uU2VydmljZS5vbkRlY29yYXRpb25SZW1vdmVkKChmdW5jdGlvbigpe3JldHVybiBlLl9xdWV1ZVJlZnJlc2godm9pZCAwLCEwKX0pKSl9LHQucHJvdG90eXBlLl9yZWdpc3RlckJ1ZmZlckNoYW5nZUxpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5yZWdpc3Rlcih0aGlzLl9yZW5kZXJTZXJ2aWNlLm9uUmVuZGVyZWRWaWV3cG9ydENoYW5nZSgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fcXVldWVSZWZyZXNoKCl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLm9uQnVmZmVyQWN0aXZhdGUoKGZ1bmN0aW9uKCl7ZS5fY2FudmFzLnN0eWxlLmRpc3BsYXk9ZS5fYnVmZmVyU2VydmljZS5idWZmZXI9PT1lLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWx0P1wibm9uZVwiOlwiYmxvY2tcIn0pKSksdGhpcy5yZWdpc3Rlcih0aGlzLl9idWZmZXJTZXJ2aWNlLm9uU2Nyb2xsKChmdW5jdGlvbigpe2UuX2xhc3RLbm93bkJ1ZmZlckxlbmd0aCE9PWUuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5ub3JtYWwubGluZXMubGVuZ3RoJiYoZS5fcmVmcmVzaERyYXdIZWlnaHRDb25zdGFudHMoKSxlLl9yZWZyZXNoQ29sb3Jab25lUGFkZGluZygpKX0pKSl9LHQucHJvdG90eXBlLl9yZWdpc3RlckRpbWVuc2lvbkNoYW5nZUxpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5yZWdpc3Rlcih0aGlzLl9yZW5kZXJTZXJ2aWNlLm9uUmVuZGVyKChmdW5jdGlvbigpe2UuX2NvbnRhaW5lckhlaWdodCYmZS5fY29udGFpbmVySGVpZ2h0PT09ZS5fc2NyZWVuRWxlbWVudC5jbGllbnRIZWlnaHR8fChlLl9xdWV1ZVJlZnJlc2goITApLGUuX2NvbnRhaW5lckhlaWdodD1lLl9zY3JlZW5FbGVtZW50LmNsaWVudEhlaWdodCl9KSkpLHRoaXMucmVnaXN0ZXIodGhpcy5fb3B0aW9uc1NlcnZpY2Uub25PcHRpb25DaGFuZ2UoKGZ1bmN0aW9uKHQpe1wib3ZlcnZpZXdSdWxlcldpZHRoXCI9PT10JiZlLl9xdWV1ZVJlZnJlc2goITApfSkpKSx0aGlzLnJlZ2lzdGVyKCgwLGwuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh3aW5kb3csXCJyZXNpemVcIiwoZnVuY3Rpb24oKXtlLl9xdWV1ZVJlZnJlc2goITApfSkpKSx0aGlzLl9xdWV1ZVJlZnJlc2goITApfSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dmFyIHQ7bnVsbD09PSh0PXRoaXMuX2NhbnZhcyl8fHZvaWQgMD09PXR8fHQucmVtb3ZlKCksZS5wcm90b3R5cGUuZGlzcG9zZS5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fcmVmcmVzaERyYXdDb25zdGFudHM9ZnVuY3Rpb24oKXt2YXIgZT1NYXRoLmZsb29yKHRoaXMuX2NhbnZhcy53aWR0aC8zKSx0PU1hdGguY2VpbCh0aGlzLl9jYW52YXMud2lkdGgvMyk7ZC5mdWxsPXRoaXMuX2NhbnZhcy53aWR0aCxkLmxlZnQ9ZSxkLmNlbnRlcj10LGQucmlnaHQ9ZSx0aGlzLl9yZWZyZXNoRHJhd0hlaWdodENvbnN0YW50cygpLHAuZnVsbD0wLHAubGVmdD0wLHAuY2VudGVyPWQubGVmdCxwLnJpZ2h0PWQubGVmdCtkLmNlbnRlcn0sdC5wcm90b3R5cGUuX3JlZnJlc2hEcmF3SGVpZ2h0Q29uc3RhbnRzPWZ1bmN0aW9uKCl7Xy5mdWxsPU1hdGgucm91bmQoMip3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyk7dmFyIGU9dGhpcy5fY2FudmFzLmhlaWdodC90aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5saW5lcy5sZW5ndGgsdD1NYXRoLnJvdW5kKE1hdGgubWF4KE1hdGgubWluKGUsMTIpLDYpKndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKTtfLmxlZnQ9dCxfLmNlbnRlcj10LF8ucmlnaHQ9dH0sdC5wcm90b3R5cGUuX3JlZnJlc2hDb2xvclpvbmVQYWRkaW5nPWZ1bmN0aW9uKCl7dGhpcy5fY29sb3Jab25lU3RvcmUuc2V0UGFkZGluZyh7ZnVsbDpNYXRoLmZsb29yKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hY3RpdmUubGluZXMubGVuZ3RoLyh0aGlzLl9jYW52YXMuaGVpZ2h0LTEpKl8uZnVsbCksbGVmdDpNYXRoLmZsb29yKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hY3RpdmUubGluZXMubGVuZ3RoLyh0aGlzLl9jYW52YXMuaGVpZ2h0LTEpKl8ubGVmdCksY2VudGVyOk1hdGguZmxvb3IodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2ZS5saW5lcy5sZW5ndGgvKHRoaXMuX2NhbnZhcy5oZWlnaHQtMSkqXy5jZW50ZXIpLHJpZ2h0Ok1hdGguZmxvb3IodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2ZS5saW5lcy5sZW5ndGgvKHRoaXMuX2NhbnZhcy5oZWlnaHQtMSkqXy5yaWdodCl9KSx0aGlzLl9sYXN0S25vd25CdWZmZXJMZW5ndGg9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLm5vcm1hbC5saW5lcy5sZW5ndGh9LHQucHJvdG90eXBlLl9yZWZyZXNoQ2FudmFzRGltZW5zaW9ucz1mdW5jdGlvbigpe3RoaXMuX2NhbnZhcy5zdHlsZS53aWR0aD10aGlzLl93aWR0aCtcInB4XCIsdGhpcy5fY2FudmFzLndpZHRoPU1hdGgucm91bmQodGhpcy5fd2lkdGgqd2luZG93LmRldmljZVBpeGVsUmF0aW8pLHRoaXMuX2NhbnZhcy5zdHlsZS5oZWlnaHQ9dGhpcy5fc2NyZWVuRWxlbWVudC5jbGllbnRIZWlnaHQrXCJweFwiLHRoaXMuX2NhbnZhcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLl9zY3JlZW5FbGVtZW50LmNsaWVudEhlaWdodCp3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyksdGhpcy5fcmVmcmVzaERyYXdDb25zdGFudHMoKSx0aGlzLl9yZWZyZXNoQ29sb3Jab25lUGFkZGluZygpfSx0LnByb3RvdHlwZS5fcmVmcmVzaERlY29yYXRpb25zPWZ1bmN0aW9uKCl7dmFyIGUsdCxyLGksbixvO3RoaXMuX3Nob3VsZFVwZGF0ZURpbWVuc2lvbnMmJnRoaXMuX3JlZnJlc2hDYW52YXNEaW1lbnNpb25zKCksdGhpcy5fY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5fY2FudmFzLndpZHRoLHRoaXMuX2NhbnZhcy5oZWlnaHQpLHRoaXMuX2NvbG9yWm9uZVN0b3JlLmNsZWFyKCk7dHJ5e2Zvcih2YXIgcz1hKHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlLmRlY29yYXRpb25zKSxjPXMubmV4dCgpOyFjLmRvbmU7Yz1zLm5leHQoKSl7dmFyIGw9Yy52YWx1ZTt0aGlzLl9jb2xvclpvbmVTdG9yZS5hZGREZWNvcmF0aW9uKGwpfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtjJiYhYy5kb25lJiYodD1zLnJldHVybikmJnQuY2FsbChzKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19dGhpcy5fY3R4LmxpbmVXaWR0aD0xO3ZhciBoPXRoaXMuX2NvbG9yWm9uZVN0b3JlLnpvbmVzO3RyeXtmb3IodmFyIHU9YShoKSxmPXUubmV4dCgpOyFmLmRvbmU7Zj11Lm5leHQoKSlcImZ1bGxcIiE9PShwPWYudmFsdWUpLnBvc2l0aW9uJiZ0aGlzLl9yZW5kZXJDb2xvclpvbmUocCl9Y2F0Y2goZSl7cj17ZXJyb3I6ZX19ZmluYWxseXt0cnl7ZiYmIWYuZG9uZSYmKGk9dS5yZXR1cm4pJiZpLmNhbGwodSl9ZmluYWxseXtpZihyKXRocm93IHIuZXJyb3J9fXRyeXtmb3IodmFyIF89YShoKSxkPV8ubmV4dCgpOyFkLmRvbmU7ZD1fLm5leHQoKSl7dmFyIHA7XCJmdWxsXCI9PT0ocD1kLnZhbHVlKS5wb3NpdGlvbiYmdGhpcy5fcmVuZGVyQ29sb3Jab25lKHApfX1jYXRjaChlKXtuPXtlcnJvcjplfX1maW5hbGx5e3RyeXtkJiYhZC5kb25lJiYobz1fLnJldHVybikmJm8uY2FsbChfKX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19dGhpcy5fc2hvdWxkVXBkYXRlRGltZW5zaW9ucz0hMSx0aGlzLl9zaG91bGRVcGRhdGVBbmNob3I9ITF9LHQucHJvdG90eXBlLl9yZW5kZXJDb2xvclpvbmU9ZnVuY3Rpb24oZSl7dGhpcy5fY3R4LmZpbGxTdHlsZT1lLmNvbG9yLHRoaXMuX2N0eC5maWxsUmVjdChwW2UucG9zaXRpb258fFwiZnVsbFwiXSxNYXRoLnJvdW5kKCh0aGlzLl9jYW52YXMuaGVpZ2h0LTEpKihlLnN0YXJ0QnVmZmVyTGluZS90aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlcnMuYWN0aXZlLmxpbmVzLmxlbmd0aCktX1tlLnBvc2l0aW9ufHxcImZ1bGxcIl0vMiksZFtlLnBvc2l0aW9ufHxcImZ1bGxcIl0sTWF0aC5yb3VuZCgodGhpcy5fY2FudmFzLmhlaWdodC0xKSooKGUuZW5kQnVmZmVyTGluZS1lLnN0YXJ0QnVmZmVyTGluZSkvdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2ZS5saW5lcy5sZW5ndGgpK19bZS5wb3NpdGlvbnx8XCJmdWxsXCJdKSl9LHQucHJvdG90eXBlLl9xdWV1ZVJlZnJlc2g9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO3RoaXMuX3Nob3VsZFVwZGF0ZURpbWVuc2lvbnM9ZXx8dGhpcy5fc2hvdWxkVXBkYXRlRGltZW5zaW9ucyx0aGlzLl9zaG91bGRVcGRhdGVBbmNob3I9dHx8dGhpcy5fc2hvdWxkVXBkYXRlQW5jaG9yLHZvaWQgMD09PXRoaXMuX2FuaW1hdGlvbkZyYW1lJiYodGhpcy5fYW5pbWF0aW9uRnJhbWU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtyLl9yZWZyZXNoRGVjb3JhdGlvbnMoKSxyLl9hbmltYXRpb25GcmFtZT12b2lkIDB9KSkpfSxvKFtzKDIsZi5JQnVmZmVyU2VydmljZSkscygzLGYuSURlY29yYXRpb25TZXJ2aWNlKSxzKDQsaC5JUmVuZGVyU2VydmljZSkscyg1LGYuSU9wdGlvbnNTZXJ2aWNlKV0sdCl9KHUuRGlzcG9zYWJsZSk7dC5PdmVydmlld1J1bGVyUmVuZGVyZXI9dn0sMjk1MDpmdW5jdGlvbihlLHQscil7dmFyIGk9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQscixpKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTppO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixpKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShuPWVbYV0pJiYocz0obzwzP24ocyk6bz4zP24odCxyLHMpOm4odCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30sbj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dChyLGksZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvbXBvc2l0aW9uSGVscGVyPXZvaWQgMDt2YXIgbz1yKDQ3MjUpLHM9cigyNTg1KSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscixpLG4sbyl7dGhpcy5fdGV4dGFyZWE9ZSx0aGlzLl9jb21wb3NpdGlvblZpZXc9dCx0aGlzLl9idWZmZXJTZXJ2aWNlPXIsdGhpcy5fb3B0aW9uc1NlcnZpY2U9aSx0aGlzLl9jb3JlU2VydmljZT1uLHRoaXMuX3JlbmRlclNlcnZpY2U9byx0aGlzLl9pc0NvbXBvc2luZz0hMSx0aGlzLl9pc1NlbmRpbmdDb21wb3NpdGlvbj0hMSx0aGlzLl9jb21wb3NpdGlvblBvc2l0aW9uPXtzdGFydDowLGVuZDowfSx0aGlzLl9kYXRhQWxyZWFkeVNlbnQ9XCJcIn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiaXNDb21wb3NpbmdcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzQ29tcG9zaW5nfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNvbXBvc2l0aW9uc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9pc0NvbXBvc2luZz0hMCx0aGlzLl9jb21wb3NpdGlvblBvc2l0aW9uLnN0YXJ0PXRoaXMuX3RleHRhcmVhLnZhbHVlLmxlbmd0aCx0aGlzLl9jb21wb3NpdGlvblZpZXcudGV4dENvbnRlbnQ9XCJcIix0aGlzLl9kYXRhQWxyZWFkeVNlbnQ9XCJcIix0aGlzLl9jb21wb3NpdGlvblZpZXcuY2xhc3NMaXN0LmFkZChcImFjdGl2ZVwiKX0sZS5wcm90b3R5cGUuY29tcG9zaXRpb251cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLl9jb21wb3NpdGlvblZpZXcudGV4dENvbnRlbnQ9ZS5kYXRhLHRoaXMudXBkYXRlQ29tcG9zaXRpb25FbGVtZW50cygpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5fY29tcG9zaXRpb25Qb3NpdGlvbi5lbmQ9dC5fdGV4dGFyZWEudmFsdWUubGVuZ3RofSksMCl9LGUucHJvdG90eXBlLmNvbXBvc2l0aW9uZW5kPWZ1bmN0aW9uKCl7dGhpcy5fZmluYWxpemVDb21wb3NpdGlvbighMCl9LGUucHJvdG90eXBlLmtleWRvd249ZnVuY3Rpb24oZSl7aWYodGhpcy5faXNDb21wb3Npbmd8fHRoaXMuX2lzU2VuZGluZ0NvbXBvc2l0aW9uKXtpZigyMjk9PT1lLmtleUNvZGUpcmV0dXJuITE7aWYoMTY9PT1lLmtleUNvZGV8fDE3PT09ZS5rZXlDb2RlfHwxOD09PWUua2V5Q29kZSlyZXR1cm4hMTt0aGlzLl9maW5hbGl6ZUNvbXBvc2l0aW9uKCExKX1yZXR1cm4gMjI5IT09ZS5rZXlDb2RlfHwodGhpcy5faGFuZGxlQW55VGV4dGFyZWFDaGFuZ2VzKCksITEpfSxlLnByb3RvdHlwZS5fZmluYWxpemVDb21wb3NpdGlvbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHRoaXMuX2NvbXBvc2l0aW9uVmlldy5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlXCIpLHRoaXMuX2lzQ29tcG9zaW5nPSExLGUpe3ZhciByPXtzdGFydDp0aGlzLl9jb21wb3NpdGlvblBvc2l0aW9uLnN0YXJ0LGVuZDp0aGlzLl9jb21wb3NpdGlvblBvc2l0aW9uLmVuZH07dGhpcy5faXNTZW5kaW5nQ29tcG9zaXRpb249ITAsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpZih0Ll9pc1NlbmRpbmdDb21wb3NpdGlvbil7dC5faXNTZW5kaW5nQ29tcG9zaXRpb249ITE7dmFyIGU7ci5zdGFydCs9dC5fZGF0YUFscmVhZHlTZW50Lmxlbmd0aCwoZT10Ll9pc0NvbXBvc2luZz90Ll90ZXh0YXJlYS52YWx1ZS5zdWJzdHJpbmcoci5zdGFydCxyLmVuZCk6dC5fdGV4dGFyZWEudmFsdWUuc3Vic3RyaW5nKHIuc3RhcnQpKS5sZW5ndGg+MCYmdC5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChlLCEwKX19KSwwKX1lbHNle3RoaXMuX2lzU2VuZGluZ0NvbXBvc2l0aW9uPSExO3ZhciBpPXRoaXMuX3RleHRhcmVhLnZhbHVlLnN1YnN0cmluZyh0aGlzLl9jb21wb3NpdGlvblBvc2l0aW9uLnN0YXJ0LHRoaXMuX2NvbXBvc2l0aW9uUG9zaXRpb24uZW5kKTt0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KGksITApfX0sZS5wcm90b3R5cGUuX2hhbmRsZUFueVRleHRhcmVhQ2hhbmdlcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLl90ZXh0YXJlYS52YWx1ZTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2lmKCFlLl9pc0NvbXBvc2luZyl7dmFyIHI9ZS5fdGV4dGFyZWEudmFsdWUucmVwbGFjZSh0LFwiXCIpO3IubGVuZ3RoPjAmJihlLl9kYXRhQWxyZWFkeVNlbnQ9cixlLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHIsITApKX19KSwwKX0sZS5wcm90b3R5cGUudXBkYXRlQ29tcG9zaXRpb25FbGVtZW50cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHRoaXMuX2lzQ29tcG9zaW5nKXtpZih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5pc0N1cnNvckluVmlld3BvcnQpe3ZhciByPU1hdGgubWluKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLngsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLTEpLGk9dGhpcy5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zLmFjdHVhbENlbGxIZWlnaHQsbj10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55KnRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5hY3R1YWxDZWxsSGVpZ2h0LG89cip0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoO3RoaXMuX2NvbXBvc2l0aW9uVmlldy5zdHlsZS5sZWZ0PW8rXCJweFwiLHRoaXMuX2NvbXBvc2l0aW9uVmlldy5zdHlsZS50b3A9bitcInB4XCIsdGhpcy5fY29tcG9zaXRpb25WaWV3LnN0eWxlLmhlaWdodD1pK1wicHhcIix0aGlzLl9jb21wb3NpdGlvblZpZXcuc3R5bGUubGluZUhlaWdodD1pK1wicHhcIix0aGlzLl9jb21wb3NpdGlvblZpZXcuc3R5bGUuZm9udEZhbWlseT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRGYW1pbHksdGhpcy5fY29tcG9zaXRpb25WaWV3LnN0eWxlLmZvbnRTaXplPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udFNpemUrXCJweFwiO3ZhciBzPXRoaXMuX2NvbXBvc2l0aW9uVmlldy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLl90ZXh0YXJlYS5zdHlsZS5sZWZ0PW8rXCJweFwiLHRoaXMuX3RleHRhcmVhLnN0eWxlLnRvcD1uK1wicHhcIix0aGlzLl90ZXh0YXJlYS5zdHlsZS53aWR0aD1NYXRoLm1heChzLndpZHRoLDEpK1wicHhcIix0aGlzLl90ZXh0YXJlYS5zdHlsZS5oZWlnaHQ9TWF0aC5tYXgocy5oZWlnaHQsMSkrXCJweFwiLHRoaXMuX3RleHRhcmVhLnN0eWxlLmxpbmVIZWlnaHQ9cy5oZWlnaHQrXCJweFwifWV8fHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIHQudXBkYXRlQ29tcG9zaXRpb25FbGVtZW50cyghMCl9KSwwKX19LGkoW24oMixzLklCdWZmZXJTZXJ2aWNlKSxuKDMscy5JT3B0aW9uc1NlcnZpY2UpLG4oNCxzLklDb3JlU2VydmljZSksbig1LG8uSVJlbmRlclNlcnZpY2UpXSxlKX0oKTt0LkNvbXBvc2l0aW9uSGVscGVyPWF9LDk4MDY6KGUsdCk9PntmdW5jdGlvbiByKGUsdCxyKXt2YXIgaT1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ZS5nZXRDb21wdXRlZFN0eWxlKHIpLG89cGFyc2VJbnQobi5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1sZWZ0XCIpKSxzPXBhcnNlSW50KG4uZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctdG9wXCIpKTtyZXR1cm5bdC5jbGllbnRYLWkubGVmdC1vLHQuY2xpZW50WS1pLnRvcC1zXX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldFJhd0J5dGVDb29yZHM9dC5nZXRDb29yZHM9dC5nZXRDb29yZHNSZWxhdGl2ZVRvRWxlbWVudD12b2lkIDAsdC5nZXRDb29yZHNSZWxhdGl2ZVRvRWxlbWVudD1yLHQuZ2V0Q29vcmRzPWZ1bmN0aW9uKGUsdCxpLG4sbyxzLGEsYyxsKXtpZihzKXt2YXIgaD1yKGUsdCxpKTtpZihoKXJldHVybiBoWzBdPU1hdGguY2VpbCgoaFswXSsobD9hLzI6MCkpL2EpLGhbMV09TWF0aC5jZWlsKGhbMV0vYyksaFswXT1NYXRoLm1pbihNYXRoLm1heChoWzBdLDEpLG4rKGw/MTowKSksaFsxXT1NYXRoLm1pbihNYXRoLm1heChoWzFdLDEpLG8pLGh9fSx0LmdldFJhd0J5dGVDb29yZHM9ZnVuY3Rpb24oZSl7aWYoZSlyZXR1cm57eDplWzBdKzMyLHk6ZVsxXSszMn19fSw5NTA0OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lm1vdmVUb0NlbGxTZXF1ZW5jZT12b2lkIDA7dmFyIGk9cigyNTg0KTtmdW5jdGlvbiBuKGUsdCxyLGkpe3ZhciBuPWUtbyhyLGUpLGE9dC1vKHIsdCksaD1NYXRoLmFicyhuLWEpLWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9MCxuPWUtbyhyLGUpLGE9dC1vKHIsdCksYz0wO2M8TWF0aC5hYnMobi1hKTtjKyspe3ZhciBsPVwiQVwiPT09cyhlLHQpPy0xOjEsaD1yLmJ1ZmZlci5saW5lcy5nZXQobitsKmMpOyhudWxsPT1oP3ZvaWQgMDpoLmlzV3JhcHBlZCkmJmkrK31yZXR1cm4gaX0oZSx0LHIpO3JldHVybiBsKGgsYyhzKGUsdCksaSkpfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI9MCxpPWUuYnVmZmVyLmxpbmVzLmdldCh0KSxuPW51bGw9PWk/dm9pZCAwOmkuaXNXcmFwcGVkO24mJnQ+PTAmJnQ8ZS5yb3dzOylyKyssbj1udWxsPT0oaT1lLmJ1ZmZlci5saW5lcy5nZXQoLS10KSk/dm9pZCAwOmkuaXNXcmFwcGVkO3JldHVybiByfWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZT50P1wiQVwiOlwiQlwifWZ1bmN0aW9uIGEoZSx0LHIsaSxuLG8pe2Zvcih2YXIgcz1lLGE9dCxjPVwiXCI7cyE9PXJ8fGEhPT1pOylzKz1uPzE6LTEsbiYmcz5vLmNvbHMtMT8oYys9by5idWZmZXIudHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nKGEsITEsZSxzKSxzPTAsZT0wLGErKyk6IW4mJnM8MCYmKGMrPW8uYnVmZmVyLnRyYW5zbGF0ZUJ1ZmZlckxpbmVUb1N0cmluZyhhLCExLDAsZSsxKSxlPXM9by5jb2xzLTEsYS0tKTtyZXR1cm4gYytvLmJ1ZmZlci50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcoYSwhMSxlLHMpfWZ1bmN0aW9uIGMoZSx0KXt2YXIgcj10P1wiT1wiOlwiW1wiO3JldHVybiBpLkMwLkVTQytyK2V9ZnVuY3Rpb24gbChlLHQpe2U9TWF0aC5mbG9vcihlKTtmb3IodmFyIHI9XCJcIixpPTA7aTxlO2krKylyKz10O3JldHVybiByfXQubW92ZVRvQ2VsbFNlcXVlbmNlPWZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBzLGg9ci5idWZmZXIueCx1PXIuYnVmZmVyLnk7aWYoIXIuYnVmZmVyLmhhc1Njcm9sbGJhY2spcmV0dXJuIGZ1bmN0aW9uKGUsdCxyLGkscyxoKXtyZXR1cm4gMD09PW4odCxpLHMsaCkubGVuZ3RoP1wiXCI6bChhKGUsdCxlLHQtbyhzLHQpLCExLHMpLmxlbmd0aCxjKFwiRFwiLGgpKX0oaCx1LDAsdCxyLGkpK24odSx0LHIsaSkrZnVuY3Rpb24oZSx0LHIsaSxzLGgpe3ZhciB1O3U9bih0LGkscyxoKS5sZW5ndGg+MD9pLW8ocyxpKTp0O3ZhciBmPWksXz1mdW5jdGlvbihlLHQscixpLHMsYSl7dmFyIGM7cmV0dXJuIGM9bihyLGkscyxhKS5sZW5ndGg+MD9pLW8ocyxpKTp0LGU8ciYmYzw9aXx8ZT49ciYmYzxpP1wiQ1wiOlwiRFwifShlLHQscixpLHMsaCk7cmV0dXJuIGwoYShlLHUscixmLFwiQ1wiPT09XyxzKS5sZW5ndGgsYyhfLGgpKX0oaCx1LGUsdCxyLGkpO2lmKHU9PT10KXJldHVybiBzPWg+ZT9cIkRcIjpcIkNcIixsKE1hdGguYWJzKGgtZSksYyhzLGkpKTtzPXU+dD9cIkRcIjpcIkNcIjt2YXIgZj1NYXRoLmFicyh1LXQpO3JldHVybiBsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuY29scy1lfSh1PnQ/ZTpoLHIpKyhmLTEpKnIuY29scysxKygodT50P2g6ZSktMSksYyhzLGkpKX19LDQzODk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMmJnRoaXMuX19hc3NpZ258fGZ1bmN0aW9uKCl7cmV0dXJuIGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MSxpPWFyZ3VtZW50cy5sZW5ndGg7cjxpO3IrKylmb3IodmFyIG4gaW4gdD1hcmd1bWVudHNbcl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlfSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sbj10aGlzJiZ0aGlzLl9fdmFsdWVzfHxmdW5jdGlvbihlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixyPXQmJmVbdF0saT0wO2lmKHIpcmV0dXJuIHIuY2FsbChlKTtpZihlJiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSYmaT49ZS5sZW5ndGgmJihlPXZvaWQgMCkse3ZhbHVlOmUmJmVbaSsrXSxkb25lOiFlfX19O3Rocm93IG5ldyBUeXBlRXJyb3IodD9cIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCI6XCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRlcm1pbmFsPXZvaWQgMDt2YXIgbz1yKDMyMzYpLHM9cig5MDQyKSxhPXIoNzk3NSksYz1yKDcwOTApLGw9cig1NzQxKSxoPXIoODI4NSksdT1bXCJjb2xzXCIsXCJyb3dzXCJdLGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciB0PXRoaXM7dGhpcy5fY29yZT1uZXcgby5UZXJtaW5hbChlKSx0aGlzLl9hZGRvbk1hbmFnZXI9bmV3IGwuQWRkb25NYW5hZ2VyLHRoaXMuX3B1YmxpY09wdGlvbnM9aSh7fSx0aGlzLl9jb3JlLm9wdGlvbnMpO3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiB0Ll9jb3JlLm9wdGlvbnNbZV19LG49ZnVuY3Rpb24oZSxyKXt0Ll9jaGVja1JlYWRvbmx5T3B0aW9ucyhlKSx0Ll9jb3JlLm9wdGlvbnNbZV09cn07Zm9yKHZhciBzIGluIHRoaXMuX2NvcmUub3B0aW9ucyl7dmFyIGE9e2dldDpyLmJpbmQodGhpcyxzKSxzZXQ6bi5iaW5kKHRoaXMscyl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLl9wdWJsaWNPcHRpb25zLHMsYSl9fXJldHVybiBlLnByb3RvdHlwZS5fY2hlY2tSZWFkb25seU9wdGlvbnM9ZnVuY3Rpb24oZSl7aWYodS5pbmNsdWRlcyhlKSl0aHJvdyBuZXcgRXJyb3IoJ09wdGlvbiBcIicrZSsnXCIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZSBjb25zdHJ1Y3RvcicpfSxlLnByb3RvdHlwZS5fY2hlY2tQcm9wb3NlZEFwaT1mdW5jdGlvbigpe2lmKCF0aGlzLl9jb3JlLm9wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuYWxsb3dQcm9wb3NlZEFwaSl0aHJvdyBuZXcgRXJyb3IoXCJZb3UgbXVzdCBzZXQgdGhlIGFsbG93UHJvcG9zZWRBcGkgb3B0aW9uIHRvIHRydWUgdG8gdXNlIHByb3Bvc2VkIEFQSVwiKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwib25CZWxsXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLm9uQmVsbH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJvbkJpbmFyeVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS5vbkJpbmFyeX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJvbkN1cnNvck1vdmVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvcmUub25DdXJzb3JNb3ZlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uRGF0YVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS5vbkRhdGF9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwib25LZXlcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvcmUub25LZXl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwib25MaW5lRmVlZFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS5vbkxpbmVGZWVkfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uUmVuZGVyXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLm9uUmVuZGVyfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uUmVzaXplXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLm9uUmVzaXplfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uU2Nyb2xsXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLm9uU2Nyb2xsfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uU2VsZWN0aW9uQ2hhbmdlXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLm9uU2VsZWN0aW9uQ2hhbmdlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uVGl0bGVDaGFuZ2VcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvcmUub25UaXRsZUNoYW5nZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJvbldyaXRlUGFyc2VkXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLm9uV3JpdGVQYXJzZWR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiZWxlbWVudFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS5lbGVtZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcInBhcnNlclwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tQcm9wb3NlZEFwaSgpLHRoaXMuX3BhcnNlcnx8KHRoaXMuX3BhcnNlcj1uZXcgYS5QYXJzZXJBcGkodGhpcy5fY29yZSkpLHRoaXMuX3BhcnNlcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJ1bmljb2RlXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja1Byb3Bvc2VkQXBpKCksbmV3IGMuVW5pY29kZUFwaSh0aGlzLl9jb3JlKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJ0ZXh0YXJlYVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS50ZXh0YXJlYX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJyb3dzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3JlLnJvd3N9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiY29sc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS5jb2xzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImJ1ZmZlclwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tQcm9wb3NlZEFwaSgpLHRoaXMuX2J1ZmZlcnx8KHRoaXMuX2J1ZmZlcj1uZXcgaC5CdWZmZXJOYW1lc3BhY2VBcGkodGhpcy5fY29yZSkpLHRoaXMuX2J1ZmZlcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJtYXJrZXJzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja1Byb3Bvc2VkQXBpKCksdGhpcy5fY29yZS5tYXJrZXJzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm1vZGVzXCIse2dldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NvcmUuY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLHQ9XCJub25lXCI7c3dpdGNoKHRoaXMuX2NvcmUuY29yZU1vdXNlU2VydmljZS5hY3RpdmVQcm90b2NvbCl7Y2FzZVwiWDEwXCI6dD1cIngxMFwiO2JyZWFrO2Nhc2VcIlZUMjAwXCI6dD1cInZ0MjAwXCI7YnJlYWs7Y2FzZVwiRFJBR1wiOnQ9XCJkcmFnXCI7YnJlYWs7Y2FzZVwiQU5ZXCI6dD1cImFueVwifXJldHVybnthcHBsaWNhdGlvbkN1cnNvcktleXNNb2RlOmUuYXBwbGljYXRpb25DdXJzb3JLZXlzLGFwcGxpY2F0aW9uS2V5cGFkTW9kZTplLmFwcGxpY2F0aW9uS2V5cGFkLGJyYWNrZXRlZFBhc3RlTW9kZTplLmJyYWNrZXRlZFBhc3RlTW9kZSxpbnNlcnRNb2RlOnRoaXMuX2NvcmUuY29yZVNlcnZpY2UubW9kZXMuaW5zZXJ0TW9kZSxtb3VzZVRyYWNraW5nTW9kZTp0LG9yaWdpbk1vZGU6ZS5vcmlnaW4scmV2ZXJzZVdyYXBhcm91bmRNb2RlOmUucmV2ZXJzZVdyYXBhcm91bmQsc2VuZEZvY3VzTW9kZTplLnNlbmRGb2N1cyx3cmFwYXJvdW5kTW9kZTplLndyYXBhcm91bmR9fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9wdGlvbnNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3B1YmxpY09wdGlvbnN9LHNldDpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSl0aGlzLl9wdWJsaWNPcHRpb25zW3RdPWVbdF19LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuYmx1cj1mdW5jdGlvbigpe3RoaXMuX2NvcmUuYmx1cigpfSxlLnByb3RvdHlwZS5mb2N1cz1mdW5jdGlvbigpe3RoaXMuX2NvcmUuZm9jdXMoKX0sZS5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKGUsdCl7dGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSx0KSx0aGlzLl9jb3JlLnJlc2l6ZShlLHQpfSxlLnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uKGUpe3RoaXMuX2NvcmUub3BlbihlKX0sZS5wcm90b3R5cGUuYXR0YWNoQ3VzdG9tS2V5RXZlbnRIYW5kbGVyPWZ1bmN0aW9uKGUpe3RoaXMuX2NvcmUuYXR0YWNoQ3VzdG9tS2V5RXZlbnRIYW5kbGVyKGUpfSxlLnByb3RvdHlwZS5yZWdpc3RlckxpbmtNYXRjaGVyPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5fY2hlY2tQcm9wb3NlZEFwaSgpLHRoaXMuX2NvcmUucmVnaXN0ZXJMaW5rTWF0Y2hlcihlLHQscil9LGUucHJvdG90eXBlLmRlcmVnaXN0ZXJMaW5rTWF0Y2hlcj1mdW5jdGlvbihlKXt0aGlzLl9jaGVja1Byb3Bvc2VkQXBpKCksdGhpcy5fY29yZS5kZXJlZ2lzdGVyTGlua01hdGNoZXIoZSl9LGUucHJvdG90eXBlLnJlZ2lzdGVyTGlua1Byb3ZpZGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jaGVja1Byb3Bvc2VkQXBpKCksdGhpcy5fY29yZS5yZWdpc3RlckxpbmtQcm92aWRlcihlKX0sZS5wcm90b3R5cGUucmVnaXN0ZXJDaGFyYWN0ZXJKb2luZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2NoZWNrUHJvcG9zZWRBcGkoKSx0aGlzLl9jb3JlLnJlZ2lzdGVyQ2hhcmFjdGVySm9pbmVyKGUpfSxlLnByb3RvdHlwZS5kZXJlZ2lzdGVyQ2hhcmFjdGVySm9pbmVyPWZ1bmN0aW9uKGUpe3RoaXMuX2NoZWNrUHJvcG9zZWRBcGkoKSx0aGlzLl9jb3JlLmRlcmVnaXN0ZXJDaGFyYWN0ZXJKb2luZXIoZSl9LGUucHJvdG90eXBlLnJlZ2lzdGVyTWFya2VyPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0wKSx0aGlzLl9jaGVja1Byb3Bvc2VkQXBpKCksdGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSksdGhpcy5fY29yZS5hZGRNYXJrZXIoZSl9LGUucHJvdG90eXBlLnJlZ2lzdGVyRGVjb3JhdGlvbj1mdW5jdGlvbihlKXt2YXIgdCxyLGk7cmV0dXJuIHRoaXMuX2NoZWNrUHJvcG9zZWRBcGkoKSx0aGlzLl92ZXJpZnlQb3NpdGl2ZUludGVnZXJzKG51bGwhPT0odD1lLngpJiZ2b2lkIDAhPT10P3Q6MCxudWxsIT09KHI9ZS53aWR0aCkmJnZvaWQgMCE9PXI/cjowLG51bGwhPT0oaT1lLmhlaWdodCkmJnZvaWQgMCE9PWk/aTowKSx0aGlzLl9jb3JlLnJlZ2lzdGVyRGVjb3JhdGlvbihlKX0sZS5wcm90b3R5cGUuYWRkTWFya2VyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlZ2lzdGVyTWFya2VyKGUpfSxlLnByb3RvdHlwZS5oYXNTZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS5oYXNTZWxlY3Rpb24oKX0sZS5wcm90b3R5cGUuc2VsZWN0PWZ1bmN0aW9uKGUsdCxyKXt0aGlzLl92ZXJpZnlJbnRlZ2VycyhlLHQsciksdGhpcy5fY29yZS5zZWxlY3QoZSx0LHIpfSxlLnByb3RvdHlwZS5nZXRTZWxlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS5nZXRTZWxlY3Rpb24oKX0sZS5wcm90b3R5cGUuZ2V0U2VsZWN0aW9uUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS5nZXRTZWxlY3Rpb25Qb3NpdGlvbigpfSxlLnByb3RvdHlwZS5jbGVhclNlbGVjdGlvbj1mdW5jdGlvbigpe3RoaXMuX2NvcmUuY2xlYXJTZWxlY3Rpb24oKX0sZS5wcm90b3R5cGUuc2VsZWN0QWxsPWZ1bmN0aW9uKCl7dGhpcy5fY29yZS5zZWxlY3RBbGwoKX0sZS5wcm90b3R5cGUuc2VsZWN0TGluZXM9ZnVuY3Rpb24oZSx0KXt0aGlzLl92ZXJpZnlJbnRlZ2VycyhlLHQpLHRoaXMuX2NvcmUuc2VsZWN0TGluZXMoZSx0KX0sZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuX2FkZG9uTWFuYWdlci5kaXNwb3NlKCksdGhpcy5fY29yZS5kaXNwb3NlKCl9LGUucHJvdG90eXBlLnNjcm9sbExpbmVzPWZ1bmN0aW9uKGUpe3RoaXMuX3ZlcmlmeUludGVnZXJzKGUpLHRoaXMuX2NvcmUuc2Nyb2xsTGluZXMoZSl9LGUucHJvdG90eXBlLnNjcm9sbFBhZ2VzPWZ1bmN0aW9uKGUpe3RoaXMuX3ZlcmlmeUludGVnZXJzKGUpLHRoaXMuX2NvcmUuc2Nyb2xsUGFnZXMoZSl9LGUucHJvdG90eXBlLnNjcm9sbFRvVG9wPWZ1bmN0aW9uKCl7dGhpcy5fY29yZS5zY3JvbGxUb1RvcCgpfSxlLnByb3RvdHlwZS5zY3JvbGxUb0JvdHRvbT1mdW5jdGlvbigpe3RoaXMuX2NvcmUuc2Nyb2xsVG9Cb3R0b20oKX0sZS5wcm90b3R5cGUuc2Nyb2xsVG9MaW5lPWZ1bmN0aW9uKGUpe3RoaXMuX3ZlcmlmeUludGVnZXJzKGUpLHRoaXMuX2NvcmUuc2Nyb2xsVG9MaW5lKGUpfSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX2NvcmUuY2xlYXIoKX0sZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLl9jb3JlLndyaXRlKGUsdCl9LGUucHJvdG90eXBlLndyaXRlVXRmOD1mdW5jdGlvbihlLHQpe3RoaXMuX2NvcmUud3JpdGUoZSx0KX0sZS5wcm90b3R5cGUud3JpdGVsbj1mdW5jdGlvbihlLHQpe3RoaXMuX2NvcmUud3JpdGUoZSksdGhpcy5fY29yZS53cml0ZShcIlxcclxcblwiLHQpfSxlLnByb3RvdHlwZS5wYXN0ZT1mdW5jdGlvbihlKXt0aGlzLl9jb3JlLnBhc3RlKGUpfSxlLnByb3RvdHlwZS5nZXRPcHRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2NvcmUub3B0aW9uc1NlcnZpY2UuZ2V0T3B0aW9uKGUpfSxlLnByb3RvdHlwZS5zZXRPcHRpb249ZnVuY3Rpb24oZSx0KXt0aGlzLl9jaGVja1JlYWRvbmx5T3B0aW9ucyhlKSx0aGlzLl9jb3JlLm9wdGlvbnNTZXJ2aWNlLnNldE9wdGlvbihlLHQpfSxlLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKGUsdCl7dGhpcy5fdmVyaWZ5SW50ZWdlcnMoZSx0KSx0aGlzLl9jb3JlLnJlZnJlc2goZSx0KX0sZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jb3JlLnJlc2V0KCl9LGUucHJvdG90eXBlLmNsZWFyVGV4dHVyZUF0bGFzPWZ1bmN0aW9uKCl7dGhpcy5fY29yZS5jbGVhclRleHR1cmVBdGxhcygpfSxlLnByb3RvdHlwZS5sb2FkQWRkb249ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2FkZG9uTWFuYWdlci5sb2FkQWRkb24odGhpcyxlKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJzdHJpbmdzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLl92ZXJpZnlJbnRlZ2Vycz1mdW5jdGlvbigpe2Zvcih2YXIgZSx0LHI9W10saT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspcltpXT1hcmd1bWVudHNbaV07dHJ5e2Zvcih2YXIgbz1uKHIpLHM9by5uZXh0KCk7IXMuZG9uZTtzPW8ubmV4dCgpKXt2YXIgYT1zLnZhbHVlO2lmKGE9PT0xLzB8fGlzTmFOKGEpfHxhJTEhPTApdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBBUEkgb25seSBhY2NlcHRzIGludGVnZXJzXCIpfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtzJiYhcy5kb25lJiYodD1vLnJldHVybikmJnQuY2FsbChvKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19fSxlLnByb3RvdHlwZS5fdmVyaWZ5UG9zaXRpdmVJbnRlZ2Vycz1mdW5jdGlvbigpe2Zvcih2YXIgZSx0LHI9W10saT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspcltpXT1hcmd1bWVudHNbaV07dHJ5e2Zvcih2YXIgbz1uKHIpLHM9by5uZXh0KCk7IXMuZG9uZTtzPW8ubmV4dCgpKXt2YXIgYT1zLnZhbHVlO2lmKGEmJihhPT09MS8wfHxpc05hTihhKXx8YSUxIT0wfHxhPDApKXRocm93IG5ldyBFcnJvcihcIlRoaXMgQVBJIG9ubHkgYWNjZXB0cyBwb3NpdGl2ZSBpbnRlZ2Vyc1wiKX19Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7cyYmIXMuZG9uZSYmKHQ9by5yZXR1cm4pJiZ0LmNhbGwobyl9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fX0sZX0oKTt0LlRlcm1pbmFsPWZ9LDE1NDY6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMmJnRoaXMuX192YWx1ZXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLHI9dCYmZVt0XSxpPTA7aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBlJiZpPj1lLmxlbmd0aCYmKGU9dm9pZCAwKSx7dmFsdWU6ZSYmZVtpKytdLGRvbmU6IWV9fX07dGhyb3cgbmV3IFR5cGVFcnJvcih0P1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQmFzZVJlbmRlckxheWVyPXZvaWQgMDt2YXIgbj1yKDY0Myksbz1yKDg4MDMpLHM9cigxNDIwKSxhPXIoMzczNCksYz1yKDE3NTIpLGw9cig4MDU1KSxoPXIoOTYzMSksdT1yKDg5NzgpLGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyLGksbixvLHMsYSxjKXt0aGlzLl9jb250YWluZXI9ZSx0aGlzLl9hbHBoYT1pLHRoaXMuX2NvbG9ycz1uLHRoaXMuX3JlbmRlcmVySWQ9byx0aGlzLl9idWZmZXJTZXJ2aWNlPXMsdGhpcy5fb3B0aW9uc1NlcnZpY2U9YSx0aGlzLl9kZWNvcmF0aW9uU2VydmljZT1jLHRoaXMuX3NjYWxlZENoYXJXaWR0aD0wLHRoaXMuX3NjYWxlZENoYXJIZWlnaHQ9MCx0aGlzLl9zY2FsZWRDZWxsV2lkdGg9MCx0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0PTAsdGhpcy5fc2NhbGVkQ2hhckxlZnQ9MCx0aGlzLl9zY2FsZWRDaGFyVG9wPTAsdGhpcy5fY29sdW1uU2VsZWN0TW9kZT0hMSx0aGlzLl9jdXJyZW50R2x5cGhJZGVudGlmaWVyPXtjaGFyczpcIlwiLGNvZGU6MCxiZzowLGZnOjAsYm9sZDohMSxkaW06ITEsaXRhbGljOiExfSx0aGlzLl9jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKSx0aGlzLl9jYW52YXMuY2xhc3NMaXN0LmFkZChcInh0ZXJtLVwiK3QrXCItbGF5ZXJcIiksdGhpcy5fY2FudmFzLnN0eWxlLnpJbmRleD1yLnRvU3RyaW5nKCksdGhpcy5faW5pdENhbnZhcygpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9jYW52YXMpfXJldHVybiBlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dmFyIGU7KDAsaC5yZW1vdmVFbGVtZW50RnJvbVBhcmVudCkodGhpcy5fY2FudmFzKSxudWxsPT09KGU9dGhpcy5fY2hhckF0bGFzKXx8dm9pZCAwPT09ZXx8ZS5kaXNwb3NlKCl9LGUucHJvdG90eXBlLl9pbml0Q2FudmFzPWZ1bmN0aW9uKCl7dGhpcy5fY3R4PSgwLGMudGhyb3dJZkZhbHN5KSh0aGlzLl9jYW52YXMuZ2V0Q29udGV4dChcIjJkXCIse2FscGhhOnRoaXMuX2FscGhhfSkpLHRoaXMuX2FscGhhfHx0aGlzLl9jbGVhckFsbCgpfSxlLnByb3RvdHlwZS5vbk9wdGlvbnNDaGFuZ2VkPWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlwZS5vbkJsdXI9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLm9uRm9jdXM9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLm9uQ3Vyc29yTW92ZT1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUub25HcmlkQ2hhbmdlZD1mdW5jdGlvbihlLHQpe30sZS5wcm90b3R5cGUub25TZWxlY3Rpb25DaGFuZ2VkPWZ1bmN0aW9uKGUsdCxyKXt2b2lkIDA9PT1yJiYocj0hMSksdGhpcy5fc2VsZWN0aW9uU3RhcnQ9ZSx0aGlzLl9zZWxlY3Rpb25FbmQ9dCx0aGlzLl9jb2x1bW5TZWxlY3RNb2RlPXJ9LGUucHJvdG90eXBlLnNldENvbG9ycz1mdW5jdGlvbihlKXt0aGlzLl9yZWZyZXNoQ2hhckF0bGFzKGUpfSxlLnByb3RvdHlwZS5fc2V0VHJhbnNwYXJlbmN5PWZ1bmN0aW9uKGUpe2lmKGUhPT10aGlzLl9hbHBoYSl7dmFyIHQ9dGhpcy5fY2FudmFzO3RoaXMuX2FscGhhPWUsdGhpcy5fY2FudmFzPXRoaXMuX2NhbnZhcy5jbG9uZU5vZGUoKSx0aGlzLl9pbml0Q2FudmFzKCksdGhpcy5fY29udGFpbmVyLnJlcGxhY2VDaGlsZCh0aGlzLl9jYW52YXMsdCksdGhpcy5fcmVmcmVzaENoYXJBdGxhcyh0aGlzLl9jb2xvcnMpLHRoaXMub25HcmlkQ2hhbmdlZCgwLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xKX19LGUucHJvdG90eXBlLl9yZWZyZXNoQ2hhckF0bGFzPWZ1bmN0aW9uKGUpe3RoaXMuX3NjYWxlZENoYXJXaWR0aDw9MCYmdGhpcy5fc2NhbGVkQ2hhckhlaWdodDw9MHx8KHRoaXMuX2NoYXJBdGxhcz0oMCxzLmFjcXVpcmVDaGFyQXRsYXMpKHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMsdGhpcy5fcmVuZGVyZXJJZCxlLHRoaXMuX3NjYWxlZENoYXJXaWR0aCx0aGlzLl9zY2FsZWRDaGFySGVpZ2h0KSx0aGlzLl9jaGFyQXRsYXMud2FybVVwKCkpfSxlLnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oZSl7dGhpcy5fc2NhbGVkQ2VsbFdpZHRoPWUuc2NhbGVkQ2VsbFdpZHRoLHRoaXMuX3NjYWxlZENlbGxIZWlnaHQ9ZS5zY2FsZWRDZWxsSGVpZ2h0LHRoaXMuX3NjYWxlZENoYXJXaWR0aD1lLnNjYWxlZENoYXJXaWR0aCx0aGlzLl9zY2FsZWRDaGFySGVpZ2h0PWUuc2NhbGVkQ2hhckhlaWdodCx0aGlzLl9zY2FsZWRDaGFyTGVmdD1lLnNjYWxlZENoYXJMZWZ0LHRoaXMuX3NjYWxlZENoYXJUb3A9ZS5zY2FsZWRDaGFyVG9wLHRoaXMuX2NhbnZhcy53aWR0aD1lLnNjYWxlZENhbnZhc1dpZHRoLHRoaXMuX2NhbnZhcy5oZWlnaHQ9ZS5zY2FsZWRDYW52YXNIZWlnaHQsdGhpcy5fY2FudmFzLnN0eWxlLndpZHRoPWUuY2FudmFzV2lkdGgrXCJweFwiLHRoaXMuX2NhbnZhcy5zdHlsZS5oZWlnaHQ9ZS5jYW52YXNIZWlnaHQrXCJweFwiLHRoaXMuX2FscGhhfHx0aGlzLl9jbGVhckFsbCgpLHRoaXMuX3JlZnJlc2hDaGFyQXRsYXModGhpcy5fY29sb3JzKX0sZS5wcm90b3R5cGUuY2xlYXJUZXh0dXJlQXRsYXM9ZnVuY3Rpb24oKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fY2hhckF0bGFzKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcigpfSxlLnByb3RvdHlwZS5fZmlsbENlbGxzPWZ1bmN0aW9uKGUsdCxyLGkpe3RoaXMuX2N0eC5maWxsUmVjdChlKnRoaXMuX3NjYWxlZENlbGxXaWR0aCx0KnRoaXMuX3NjYWxlZENlbGxIZWlnaHQscip0aGlzLl9zY2FsZWRDZWxsV2lkdGgsaSp0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0KX0sZS5wcm90b3R5cGUuX2ZpbGxNaWRkbGVMaW5lQXRDZWxscz1mdW5jdGlvbihlLHQscil7dm9pZCAwPT09ciYmKHI9MSk7dmFyIGk9TWF0aC5jZWlsKC41KnRoaXMuX3NjYWxlZENlbGxIZWlnaHQpO3RoaXMuX2N0eC5maWxsUmVjdChlKnRoaXMuX3NjYWxlZENlbGxXaWR0aCwodCsxKSp0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0LWktd2luZG93LmRldmljZVBpeGVsUmF0aW8scip0aGlzLl9zY2FsZWRDZWxsV2lkdGgsd2luZG93LmRldmljZVBpeGVsUmF0aW8pfSxlLnByb3RvdHlwZS5fZmlsbEJvdHRvbUxpbmVBdENlbGxzPWZ1bmN0aW9uKGUsdCxyKXt2b2lkIDA9PT1yJiYocj0xKSx0aGlzLl9jdHguZmlsbFJlY3QoZSp0aGlzLl9zY2FsZWRDZWxsV2lkdGgsKHQrMSkqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodC13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpby0xLHIqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKX0sZS5wcm90b3R5cGUuX2ZpbGxMZWZ0TGluZUF0Q2VsbD1mdW5jdGlvbihlLHQscil7dGhpcy5fY3R4LmZpbGxSZWN0KGUqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLHQqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodCx3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbypyLHRoaXMuX3NjYWxlZENlbGxIZWlnaHQpfSxlLnByb3RvdHlwZS5fc3Ryb2tlUmVjdEF0Q2VsbD1mdW5jdGlvbihlLHQscixpKXt0aGlzLl9jdHgubGluZVdpZHRoPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLHRoaXMuX2N0eC5zdHJva2VSZWN0KGUqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoK3dpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLzIsdCp0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0K3dpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLzIscip0aGlzLl9zY2FsZWRDZWxsV2lkdGgtd2luZG93LmRldmljZVBpeGVsUmF0aW8saSp0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0LXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKX0sZS5wcm90b3R5cGUuX2NsZWFyQWxsPWZ1bmN0aW9uKCl7dGhpcy5fYWxwaGE/dGhpcy5fY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5fY2FudmFzLndpZHRoLHRoaXMuX2NhbnZhcy5oZWlnaHQpOih0aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5iYWNrZ3JvdW5kLmNzcyx0aGlzLl9jdHguZmlsbFJlY3QoMCwwLHRoaXMuX2NhbnZhcy53aWR0aCx0aGlzLl9jYW52YXMuaGVpZ2h0KSl9LGUucHJvdG90eXBlLl9jbGVhckNlbGxzPWZ1bmN0aW9uKGUsdCxyLGkpe3RoaXMuX2FscGhhP3RoaXMuX2N0eC5jbGVhclJlY3QoZSp0aGlzLl9zY2FsZWRDZWxsV2lkdGgsdCp0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0LHIqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLGkqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodCk6KHRoaXMuX2N0eC5maWxsU3R5bGU9dGhpcy5fY29sb3JzLmJhY2tncm91bmQuY3NzLHRoaXMuX2N0eC5maWxsUmVjdChlKnRoaXMuX3NjYWxlZENlbGxXaWR0aCx0KnRoaXMuX3NjYWxlZENlbGxIZWlnaHQscip0aGlzLl9zY2FsZWRDZWxsV2lkdGgsaSp0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0KSl9LGUucHJvdG90eXBlLl9maWxsQ2hhclRydWVDb2xvcj1mdW5jdGlvbihlLHQscil7dGhpcy5fY3R4LmZvbnQ9dGhpcy5fZ2V0Rm9udCghMSwhMSksdGhpcy5fY3R4LnRleHRCYXNlbGluZT1vLlRFWFRfQkFTRUxJTkUsdGhpcy5fY2xpcFJvdyhyKTt2YXIgaT0hMTshMSE9PXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuY3VzdG9tR2x5cGhzJiYoaT0oMCx1LnRyeURyYXdDdXN0b21DaGFyKSh0aGlzLl9jdHgsZS5nZXRDaGFycygpLHQqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLHIqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodCx0aGlzLl9zY2FsZWRDZWxsV2lkdGgsdGhpcy5fc2NhbGVkQ2VsbEhlaWdodCkpLGl8fHRoaXMuX2N0eC5maWxsVGV4dChlLmdldENoYXJzKCksdCp0aGlzLl9zY2FsZWRDZWxsV2lkdGgrdGhpcy5fc2NhbGVkQ2hhckxlZnQscip0aGlzLl9zY2FsZWRDZWxsSGVpZ2h0K3RoaXMuX3NjYWxlZENoYXJUb3ArdGhpcy5fc2NhbGVkQ2hhckhlaWdodCl9LGUucHJvdG90eXBlLl9kcmF3Q2hhcnM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBzLGEsYyxsPXRoaXMuX2dldENvbnRyYXN0Q29sb3IoZSx0LHIpO2lmKGx8fGUuaXNGZ1JHQigpfHxlLmlzQmdSR0IoKSl0aGlzLl9kcmF3VW5jYWNoZWRDaGFycyhlLHQscixsKTtlbHNle3ZhciBoLHU7ZS5pc0ludmVyc2UoKT8oaD1lLmlzQmdEZWZhdWx0KCk/by5JTlZFUlRFRF9ERUZBVUxUX0NPTE9SOmUuZ2V0QmdDb2xvcigpLHU9ZS5pc0ZnRGVmYXVsdCgpP28uSU5WRVJURURfREVGQVVMVF9DT0xPUjplLmdldEZnQ29sb3IoKSk6KHU9ZS5pc0JnRGVmYXVsdCgpP24uREVGQVVMVF9DT0xPUjplLmdldEJnQ29sb3IoKSxoPWUuaXNGZ0RlZmF1bHQoKT9uLkRFRkFVTFRfQ09MT1I6ZS5nZXRGZ0NvbG9yKCkpLGgrPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZHJhd0JvbGRUZXh0SW5CcmlnaHRDb2xvcnMmJmUuaXNCb2xkKCkmJmg8OD84OjAsdGhpcy5fY3VycmVudEdseXBoSWRlbnRpZmllci5jaGFycz1lLmdldENoYXJzKCl8fG4uV0hJVEVTUEFDRV9DRUxMX0NIQVIsdGhpcy5fY3VycmVudEdseXBoSWRlbnRpZmllci5jb2RlPWUuZ2V0Q29kZSgpfHxuLldISVRFU1BBQ0VfQ0VMTF9DT0RFLHRoaXMuX2N1cnJlbnRHbHlwaElkZW50aWZpZXIuYmc9dSx0aGlzLl9jdXJyZW50R2x5cGhJZGVudGlmaWVyLmZnPWgsdGhpcy5fY3VycmVudEdseXBoSWRlbnRpZmllci5ib2xkPSEhZS5pc0JvbGQoKSx0aGlzLl9jdXJyZW50R2x5cGhJZGVudGlmaWVyLmRpbT0hIWUuaXNEaW0oKSx0aGlzLl9jdXJyZW50R2x5cGhJZGVudGlmaWVyLml0YWxpYz0hIWUuaXNJdGFsaWMoKTt2YXIgZj0hMTt0cnl7Zm9yKHZhciBfPWkodGhpcy5fZGVjb3JhdGlvblNlcnZpY2UuZ2V0RGVjb3JhdGlvbnNBdENlbGwodCxyKSksZD1fLm5leHQoKTshZC5kb25lO2Q9Xy5uZXh0KCkpe3ZhciBwPWQudmFsdWU7aWYocC5iYWNrZ3JvdW5kQ29sb3JSR0J8fHAuZm9yZWdyb3VuZENvbG9yUkdCKXtmPSEwO2JyZWFrfX19Y2F0Y2goZSl7cz17ZXJyb3I6ZX19ZmluYWxseXt0cnl7ZCYmIWQuZG9uZSYmKGE9Xy5yZXR1cm4pJiZhLmNhbGwoXyl9ZmluYWxseXtpZihzKXRocm93IHMuZXJyb3J9fSFmJiYobnVsbD09PShjPXRoaXMuX2NoYXJBdGxhcyl8fHZvaWQgMD09PWM/dm9pZCAwOmMuZHJhdyh0aGlzLl9jdHgsdGhpcy5fY3VycmVudEdseXBoSWRlbnRpZmllcix0KnRoaXMuX3NjYWxlZENlbGxXaWR0aCt0aGlzLl9zY2FsZWRDaGFyTGVmdCxyKnRoaXMuX3NjYWxlZENlbGxIZWlnaHQrdGhpcy5fc2NhbGVkQ2hhclRvcCkpfHx0aGlzLl9kcmF3VW5jYWNoZWRDaGFycyhlLHQscil9fSxlLnByb3RvdHlwZS5fZHJhd1VuY2FjaGVkQ2hhcnM9ZnVuY3Rpb24oZSx0LHIsaSl7aWYodGhpcy5fY3R4LnNhdmUoKSx0aGlzLl9jdHguZm9udD10aGlzLl9nZXRGb250KCEhZS5pc0JvbGQoKSwhIWUuaXNJdGFsaWMoKSksdGhpcy5fY3R4LnRleHRCYXNlbGluZT1vLlRFWFRfQkFTRUxJTkUsZS5pc0ludmVyc2UoKSlpZihpKXRoaXMuX2N0eC5maWxsU3R5bGU9aS5jc3M7ZWxzZSBpZihlLmlzQmdEZWZhdWx0KCkpdGhpcy5fY3R4LmZpbGxTdHlsZT1sLmNvbG9yLm9wYXF1ZSh0aGlzLl9jb2xvcnMuYmFja2dyb3VuZCkuY3NzO2Vsc2UgaWYoZS5pc0JnUkdCKCkpdGhpcy5fY3R4LmZpbGxTdHlsZT1cInJnYihcIithLkF0dHJpYnV0ZURhdGEudG9Db2xvclJHQihlLmdldEJnQ29sb3IoKSkuam9pbihcIixcIikrXCIpXCI7ZWxzZXt2YXIgbj1lLmdldEJnQ29sb3IoKTt0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzJiZlLmlzQm9sZCgpJiZuPDgmJihuKz04KSx0aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5hbnNpW25dLmNzc31lbHNlIGlmKGkpdGhpcy5fY3R4LmZpbGxTdHlsZT1pLmNzcztlbHNlIGlmKGUuaXNGZ0RlZmF1bHQoKSl0aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5mb3JlZ3JvdW5kLmNzcztlbHNlIGlmKGUuaXNGZ1JHQigpKXRoaXMuX2N0eC5maWxsU3R5bGU9XCJyZ2IoXCIrYS5BdHRyaWJ1dGVEYXRhLnRvQ29sb3JSR0IoZS5nZXRGZ0NvbG9yKCkpLmpvaW4oXCIsXCIpK1wiKVwiO2Vsc2V7dmFyIHM9ZS5nZXRGZ0NvbG9yKCk7dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5kcmF3Qm9sZFRleHRJbkJyaWdodENvbG9ycyYmZS5pc0JvbGQoKSYmczw4JiYocys9OCksdGhpcy5fY3R4LmZpbGxTdHlsZT10aGlzLl9jb2xvcnMuYW5zaVtzXS5jc3N9dGhpcy5fY2xpcFJvdyhyKSxlLmlzRGltKCkmJih0aGlzLl9jdHguZ2xvYmFsQWxwaGE9by5ESU1fT1BBQ0lUWSk7dmFyIGM9ITE7ITEhPT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1c3RvbUdseXBocyYmKGM9KDAsdS50cnlEcmF3Q3VzdG9tQ2hhcikodGhpcy5fY3R4LGUuZ2V0Q2hhcnMoKSx0KnRoaXMuX3NjYWxlZENlbGxXaWR0aCxyKnRoaXMuX3NjYWxlZENlbGxIZWlnaHQsdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLHRoaXMuX3NjYWxlZENlbGxIZWlnaHQpKSxjfHx0aGlzLl9jdHguZmlsbFRleHQoZS5nZXRDaGFycygpLHQqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoK3RoaXMuX3NjYWxlZENoYXJMZWZ0LHIqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodCt0aGlzLl9zY2FsZWRDaGFyVG9wK3RoaXMuX3NjYWxlZENoYXJIZWlnaHQpLHRoaXMuX2N0eC5yZXN0b3JlKCl9LGUucHJvdG90eXBlLl9jbGlwUm93PWZ1bmN0aW9uKGUpe3RoaXMuX2N0eC5iZWdpblBhdGgoKSx0aGlzLl9jdHgucmVjdCgwLGUqdGhpcy5fc2NhbGVkQ2VsbEhlaWdodCx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMqdGhpcy5fc2NhbGVkQ2VsbFdpZHRoLHRoaXMuX3NjYWxlZENlbGxIZWlnaHQpLHRoaXMuX2N0eC5jbGlwKCl9LGUucHJvdG90eXBlLl9nZXRGb250PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQ/XCJpdGFsaWNcIjpcIlwiKStcIiBcIisoZT90aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRXZWlnaHRCb2xkOnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udFdlaWdodCkrXCIgXCIrdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mb250U2l6ZSp3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbytcInB4IFwiK3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udEZhbWlseX0sZS5wcm90b3R5cGUuX2dldENvbnRyYXN0Q29sb3I9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLG8scyxhLGg9ITE7dHJ5e2Zvcih2YXIgdT1pKHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlLmdldERlY29yYXRpb25zQXRDZWxsKHQscikpLGY9dS5uZXh0KCk7IWYuZG9uZTtmPXUubmV4dCgpKXt2YXIgXz1mLnZhbHVlO1widG9wXCIhPT1fLm9wdGlvbnMubGF5ZXImJmh8fChfLmJhY2tncm91bmRDb2xvclJHQiYmKHM9Xy5iYWNrZ3JvdW5kQ29sb3JSR0IucmdiYSksXy5mb3JlZ3JvdW5kQ29sb3JSR0ImJihhPV8uZm9yZWdyb3VuZENvbG9yUkdCLnJnYmEpLGg9XCJ0b3BcIj09PV8ub3B0aW9ucy5sYXllcil9fWNhdGNoKGUpe249e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2YmJiFmLmRvbmUmJihvPXUucmV0dXJuKSYmby5jYWxsKHUpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1pZihofHx0aGlzLl9jb2xvcnMuc2VsZWN0aW9uRm9yZWdyb3VuZCYmdGhpcy5faXNDZWxsSW5TZWxlY3Rpb24odCxyKSYmKGE9dGhpcy5fY29sb3JzLnNlbGVjdGlvbkZvcmVncm91bmQucmdiYSksc3x8YXx8MSE9PXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubWluaW11bUNvbnRyYXN0UmF0aW8mJiEoMCxjLmV4Y2x1ZGVGcm9tQ29udHJhc3RSYXRpb0RlbWFuZHMpKGUuZ2V0Q29kZSgpKSl7aWYoIXMmJiFhKXt2YXIgZD10aGlzLl9jb2xvcnMuY29udHJhc3RDYWNoZS5nZXRDb2xvcihlLmJnLGUuZmcpO2lmKHZvaWQgMCE9PWQpcmV0dXJuIGR8fHZvaWQgMH12YXIgcD1lLmdldEZnQ29sb3IoKSx2PWUuZ2V0RmdDb2xvck1vZGUoKSx5PWUuZ2V0QmdDb2xvcigpLGc9ZS5nZXRCZ0NvbG9yTW9kZSgpLG09ISFlLmlzSW52ZXJzZSgpLGI9ISFlLmlzSW52ZXJzZSgpO2lmKG0pe3ZhciBTPXA7cD15LHk9Uzt2YXIgQz12O3Y9ZyxnPUN9dmFyIHc9dGhpcy5fcmVzb2x2ZUJhY2tncm91bmRSZ2JhKHZvaWQgMCE9PXM/NTAzMzE2NDg6ZyxudWxsIT1zP3M6eSxtKSxMPXRoaXMuX3Jlc29sdmVGb3JlZ3JvdW5kUmdiYSh2LHAsbSxiKSxFPWwucmdiYS5lbnN1cmVDb250cmFzdFJhdGlvKG51bGwhPXM/czp3LG51bGwhPWE/YTpMLHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubWluaW11bUNvbnRyYXN0UmF0aW8pO2lmKCFFKXtpZighYSlyZXR1cm4gdm9pZCB0aGlzLl9jb2xvcnMuY29udHJhc3RDYWNoZS5zZXRDb2xvcihlLmJnLGUuZmcsbnVsbCk7RT1hfXZhciB4PXtjc3M6bC5jaGFubmVscy50b0NzcyhFPj4yNCYyNTUsRT4+MTYmMjU1LEU+PjgmMjU1KSxyZ2JhOkV9O3JldHVybiBzfHxhfHx0aGlzLl9jb2xvcnMuY29udHJhc3RDYWNoZS5zZXRDb2xvcihlLmJnLGUuZmcseCkseH19LGUucHJvdG90eXBlLl9yZXNvbHZlQmFja2dyb3VuZFJnYmE9ZnVuY3Rpb24oZSx0LHIpe3N3aXRjaChlKXtjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6cmV0dXJuIHRoaXMuX2NvbG9ycy5hbnNpW3RdLnJnYmE7Y2FzZSA1MDMzMTY0ODpyZXR1cm4gdDw8ODtkZWZhdWx0OnJldHVybiByP3RoaXMuX2NvbG9ycy5mb3JlZ3JvdW5kLnJnYmE6dGhpcy5fY29sb3JzLmJhY2tncm91bmQucmdiYX19LGUucHJvdG90eXBlLl9yZXNvbHZlRm9yZWdyb3VuZFJnYmE9ZnVuY3Rpb24oZSx0LHIsaSl7c3dpdGNoKGUpe2Nhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpyZXR1cm4gdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5kcmF3Qm9sZFRleHRJbkJyaWdodENvbG9ycyYmaSYmdDw4JiYodCs9OCksdGhpcy5fY29sb3JzLmFuc2lbdF0ucmdiYTtjYXNlIDUwMzMxNjQ4OnJldHVybiB0PDw4O2RlZmF1bHQ6cmV0dXJuIHI/dGhpcy5fY29sb3JzLmJhY2tncm91bmQucmdiYTp0aGlzLl9jb2xvcnMuZm9yZWdyb3VuZC5yZ2JhfX0sZS5wcm90b3R5cGUuX2lzQ2VsbEluU2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fc2VsZWN0aW9uU3RhcnQsaT10aGlzLl9zZWxlY3Rpb25FbmQ7cmV0dXJuISghcnx8IWkpJiYodGhpcy5fY29sdW1uU2VsZWN0TW9kZT9lPj1yWzBdJiZ0Pj1yWzFdJiZlPGlbMF0mJnQ8aVsxXTp0PnJbMV0mJnQ8aVsxXXx8clsxXT09PWlbMV0mJnQ9PT1yWzFdJiZlPj1yWzBdJiZlPGlbMF18fHJbMV08aVsxXSYmdD09PWlbMV0mJmU8aVswXXx8clsxXTxpWzFdJiZ0PT09clsxXSYmZT49clswXSl9LGV9KCk7dC5CYXNlUmVuZGVyTGF5ZXI9Zn0sMjUxMjpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KSxvPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LHM9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DdXJzb3JSZW5kZXJMYXllcj12b2lkIDA7dmFyIGE9cigxNTQ2KSxjPXIoNTExKSxsPXIoMjU4NSksaD1yKDQ3MjUpLHU9NjAwLGY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIsaSxuLG8scyxhLGwsaCx1KXt2YXIgZj1lLmNhbGwodGhpcyx0LFwiY3Vyc29yXCIsciwhMCxpLG4scyxhLHUpfHx0aGlzO3JldHVybiBmLl9vblJlcXVlc3RSZWRyYXc9byxmLl9jb3JlU2VydmljZT1sLGYuX2NvcmVCcm93c2VyU2VydmljZT1oLGYuX2NlbGw9bmV3IGMuQ2VsbERhdGEsZi5fc3RhdGU9e3g6MCx5OjAsaXNGb2N1c2VkOiExLHN0eWxlOlwiXCIsd2lkdGg6MH0sZi5fY3Vyc29yUmVuZGVyZXJzPXtiYXI6Zi5fcmVuZGVyQmFyQ3Vyc29yLmJpbmQoZiksYmxvY2s6Zi5fcmVuZGVyQmxvY2tDdXJzb3IuYmluZChmKSx1bmRlcmxpbmU6Zi5fcmVuZGVyVW5kZXJsaW5lQ3Vyc29yLmJpbmQoZil9LGZ9cmV0dXJuIG4odCxlKSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXImJih0aGlzLl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlci5kaXNwb3NlKCksdGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXI9dm9pZCAwKSxlLnByb3RvdHlwZS5kaXNwb3NlLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXtlLnByb3RvdHlwZS5yZXNpemUuY2FsbCh0aGlzLHQpLHRoaXMuX3N0YXRlPXt4OjAseTowLGlzRm9jdXNlZDohMSxzdHlsZTpcIlwiLHdpZHRoOjB9fSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3ZhciBlO3RoaXMuX2NsZWFyQ3Vyc29yKCksbnVsbD09PShlPXRoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyKXx8dm9pZCAwPT09ZXx8ZS5yZXN0YXJ0QmxpbmtBbmltYXRpb24oKSx0aGlzLm9uT3B0aW9uc0NoYW5nZWQoKX0sdC5wcm90b3R5cGUub25CbHVyPWZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyKXx8dm9pZCAwPT09ZXx8ZS5wYXVzZSgpLHRoaXMuX29uUmVxdWVzdFJlZHJhdy5maXJlKHtzdGFydDp0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55LGVuZDp0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55fSl9LHQucHJvdG90eXBlLm9uRm9jdXM9ZnVuY3Rpb24oKXt2YXIgZTtudWxsPT09KGU9dGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXIpfHx2b2lkIDA9PT1lfHxlLnJlc3VtZSgpLHRoaXMuX29uUmVxdWVzdFJlZHJhdy5maXJlKHtzdGFydDp0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55LGVuZDp0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55fSl9LHQucHJvdG90eXBlLm9uT3B0aW9uc0NoYW5nZWQ9ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXM7dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5jdXJzb3JCbGluaz90aGlzLl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlcnx8KHRoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyPW5ldyBfKHRoaXMuX2NvcmVCcm93c2VyU2VydmljZS5pc0ZvY3VzZWQsKGZ1bmN0aW9uKCl7dC5fcmVuZGVyKCEwKX0pKSk6KG51bGw9PT0oZT10aGlzLl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlcil8fHZvaWQgMD09PWV8fGUuZGlzcG9zZSgpLHRoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyPXZvaWQgMCksdGhpcy5fb25SZXF1ZXN0UmVkcmF3LmZpcmUoe3N0YXJ0OnRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnksZW5kOnRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnl9KX0sdC5wcm90b3R5cGUub25DdXJzb3JNb3ZlPWZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09PShlPXRoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyKXx8dm9pZCAwPT09ZXx8ZS5yZXN0YXJ0QmxpbmtBbmltYXRpb24oKX0sdC5wcm90b3R5cGUub25HcmlkQ2hhbmdlZD1mdW5jdGlvbihlLHQpeyF0aGlzLl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlcnx8dGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXIuaXNQYXVzZWQ/dGhpcy5fcmVuZGVyKCExKTp0aGlzLl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlci5yZXN0YXJ0QmxpbmtBbmltYXRpb24oKX0sdC5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbihlKXtpZih0aGlzLl9jb3JlU2VydmljZS5pc0N1cnNvckluaXRpYWxpemVkJiYhdGhpcy5fY29yZVNlcnZpY2UuaXNDdXJzb3JIaWRkZW4pe3ZhciB0PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnliYXNlK3RoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnkscj10LXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwO2lmKHI8MHx8cj49dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKXRoaXMuX2NsZWFyQ3Vyc29yKCk7ZWxzZXt2YXIgaT1NYXRoLm1pbih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci54LHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scy0xKTtpZih0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5saW5lcy5nZXQodCkubG9hZENlbGwoaSx0aGlzLl9jZWxsKSx2b2lkIDAhPT10aGlzLl9jZWxsLmNvbnRlbnQpe2lmKCF0aGlzLl9jb3JlQnJvd3NlclNlcnZpY2UuaXNGb2N1c2VkKXt0aGlzLl9jbGVhckN1cnNvcigpLHRoaXMuX2N0eC5zYXZlKCksdGhpcy5fY3R4LmZpbGxTdHlsZT10aGlzLl9jb2xvcnMuY3Vyc29yLmNzczt2YXIgbj10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1cnNvclN0eWxlO3JldHVybiBuJiZcImJsb2NrXCIhPT1uP3RoaXMuX2N1cnNvclJlbmRlcmVyc1tuXShpLHIsdGhpcy5fY2VsbCk6dGhpcy5fcmVuZGVyQmx1ckN1cnNvcihpLHIsdGhpcy5fY2VsbCksdGhpcy5fY3R4LnJlc3RvcmUoKSx0aGlzLl9zdGF0ZS54PWksdGhpcy5fc3RhdGUueT1yLHRoaXMuX3N0YXRlLmlzRm9jdXNlZD0hMSx0aGlzLl9zdGF0ZS5zdHlsZT1uLHZvaWQodGhpcy5fc3RhdGUud2lkdGg9dGhpcy5fY2VsbC5nZXRXaWR0aCgpKX1pZighdGhpcy5fY3Vyc29yQmxpbmtTdGF0ZU1hbmFnZXJ8fHRoaXMuX2N1cnNvckJsaW5rU3RhdGVNYW5hZ2VyLmlzQ3Vyc29yVmlzaWJsZSl7aWYodGhpcy5fc3RhdGUpe2lmKHRoaXMuX3N0YXRlLng9PT1pJiZ0aGlzLl9zdGF0ZS55PT09ciYmdGhpcy5fc3RhdGUuaXNGb2N1c2VkPT09dGhpcy5fY29yZUJyb3dzZXJTZXJ2aWNlLmlzRm9jdXNlZCYmdGhpcy5fc3RhdGUuc3R5bGU9PT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1cnNvclN0eWxlJiZ0aGlzLl9zdGF0ZS53aWR0aD09PXRoaXMuX2NlbGwuZ2V0V2lkdGgoKSlyZXR1cm47dGhpcy5fY2xlYXJDdXJzb3IoKX10aGlzLl9jdHguc2F2ZSgpLHRoaXMuX2N1cnNvclJlbmRlcmVyc1t0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1cnNvclN0eWxlfHxcImJsb2NrXCJdKGkscix0aGlzLl9jZWxsKSx0aGlzLl9jdHgucmVzdG9yZSgpLHRoaXMuX3N0YXRlLng9aSx0aGlzLl9zdGF0ZS55PXIsdGhpcy5fc3RhdGUuaXNGb2N1c2VkPSExLHRoaXMuX3N0YXRlLnN0eWxlPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuY3Vyc29yU3R5bGUsdGhpcy5fc3RhdGUud2lkdGg9dGhpcy5fY2VsbC5nZXRXaWR0aCgpfWVsc2UgdGhpcy5fY2xlYXJDdXJzb3IoKX19fWVsc2UgdGhpcy5fY2xlYXJDdXJzb3IoKX0sdC5wcm90b3R5cGUuX2NsZWFyQ3Vyc29yPWZ1bmN0aW9uKCl7dGhpcy5fc3RhdGUmJih3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzwxP3RoaXMuX2NsZWFyQWxsKCk6dGhpcy5fY2xlYXJDZWxscyh0aGlzLl9zdGF0ZS54LHRoaXMuX3N0YXRlLnksdGhpcy5fc3RhdGUud2lkdGgsMSksdGhpcy5fc3RhdGU9e3g6MCx5OjAsaXNGb2N1c2VkOiExLHN0eWxlOlwiXCIsd2lkdGg6MH0pfSx0LnByb3RvdHlwZS5fcmVuZGVyQmFyQ3Vyc29yPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9jdHguc2F2ZSgpLHRoaXMuX2N0eC5maWxsU3R5bGU9dGhpcy5fY29sb3JzLmN1cnNvci5jc3MsdGhpcy5fZmlsbExlZnRMaW5lQXRDZWxsKGUsdCx0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1cnNvcldpZHRoKSx0aGlzLl9jdHgucmVzdG9yZSgpfSx0LnByb3RvdHlwZS5fcmVuZGVyQmxvY2tDdXJzb3I9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX2N0eC5zYXZlKCksdGhpcy5fY3R4LmZpbGxTdHlsZT10aGlzLl9jb2xvcnMuY3Vyc29yLmNzcyx0aGlzLl9maWxsQ2VsbHMoZSx0LHIuZ2V0V2lkdGgoKSwxKSx0aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5jdXJzb3JBY2NlbnQuY3NzLHRoaXMuX2ZpbGxDaGFyVHJ1ZUNvbG9yKHIsZSx0KSx0aGlzLl9jdHgucmVzdG9yZSgpfSx0LnByb3RvdHlwZS5fcmVuZGVyVW5kZXJsaW5lQ3Vyc29yPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9jdHguc2F2ZSgpLHRoaXMuX2N0eC5maWxsU3R5bGU9dGhpcy5fY29sb3JzLmN1cnNvci5jc3MsdGhpcy5fZmlsbEJvdHRvbUxpbmVBdENlbGxzKGUsdCksdGhpcy5fY3R4LnJlc3RvcmUoKX0sdC5wcm90b3R5cGUuX3JlbmRlckJsdXJDdXJzb3I9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX2N0eC5zYXZlKCksdGhpcy5fY3R4LnN0cm9rZVN0eWxlPXRoaXMuX2NvbG9ycy5jdXJzb3IuY3NzLHRoaXMuX3N0cm9rZVJlY3RBdENlbGwoZSx0LHIuZ2V0V2lkdGgoKSwxKSx0aGlzLl9jdHgucmVzdG9yZSgpfSxvKFtzKDUsbC5JQnVmZmVyU2VydmljZSkscyg2LGwuSU9wdGlvbnNTZXJ2aWNlKSxzKDcsbC5JQ29yZVNlcnZpY2UpLHMoOCxoLklDb3JlQnJvd3NlclNlcnZpY2UpLHMoOSxsLklEZWNvcmF0aW9uU2VydmljZSldLHQpfShhLkJhc2VSZW5kZXJMYXllcik7dC5DdXJzb3JSZW5kZXJMYXllcj1mO3ZhciBfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMuX3JlbmRlckNhbGxiYWNrPXQsdGhpcy5pc0N1cnNvclZpc2libGU9ITAsZSYmdGhpcy5fcmVzdGFydEludGVydmFsKCl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImlzUGF1c2VkXCIse2dldDpmdW5jdGlvbigpe3JldHVybiEodGhpcy5fYmxpbmtTdGFydFRpbWVvdXR8fHRoaXMuX2JsaW5rSW50ZXJ2YWwpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9ibGlua0ludGVydmFsJiYod2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5fYmxpbmtJbnRlcnZhbCksdGhpcy5fYmxpbmtJbnRlcnZhbD12b2lkIDApLHRoaXMuX2JsaW5rU3RhcnRUaW1lb3V0JiYod2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9ibGlua1N0YXJ0VGltZW91dCksdGhpcy5fYmxpbmtTdGFydFRpbWVvdXQ9dm9pZCAwKSx0aGlzLl9hbmltYXRpb25GcmFtZSYmKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9hbmltYXRpb25GcmFtZSksdGhpcy5fYW5pbWF0aW9uRnJhbWU9dm9pZCAwKX0sZS5wcm90b3R5cGUucmVzdGFydEJsaW5rQW5pbWF0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmlzUGF1c2VkfHwodGhpcy5fYW5pbWF0aW9uVGltZVJlc3RhcnRlZD1EYXRlLm5vdygpLHRoaXMuaXNDdXJzb3JWaXNpYmxlPSEwLHRoaXMuX2FuaW1hdGlvbkZyYW1lfHwodGhpcy5fYW5pbWF0aW9uRnJhbWU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtlLl9yZW5kZXJDYWxsYmFjaygpLGUuX2FuaW1hdGlvbkZyYW1lPXZvaWQgMH0pKSkpfSxlLnByb3RvdHlwZS5fcmVzdGFydEludGVydmFsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dm9pZCAwPT09ZSYmKGU9dSksdGhpcy5fYmxpbmtJbnRlcnZhbCYmKHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMuX2JsaW5rSW50ZXJ2YWwpLHRoaXMuX2JsaW5rSW50ZXJ2YWw9dm9pZCAwKSx0aGlzLl9ibGlua1N0YXJ0VGltZW91dD13aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpZih0Ll9hbmltYXRpb25UaW1lUmVzdGFydGVkKXt2YXIgZT11LShEYXRlLm5vdygpLXQuX2FuaW1hdGlvblRpbWVSZXN0YXJ0ZWQpO2lmKHQuX2FuaW1hdGlvblRpbWVSZXN0YXJ0ZWQ9dm9pZCAwLGU+MClyZXR1cm4gdm9pZCB0Ll9yZXN0YXJ0SW50ZXJ2YWwoZSl9dC5pc0N1cnNvclZpc2libGU9ITEsdC5fYW5pbWF0aW9uRnJhbWU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXt0Ll9yZW5kZXJDYWxsYmFjaygpLHQuX2FuaW1hdGlvbkZyYW1lPXZvaWQgMH0pKSx0Ll9ibGlua0ludGVydmFsPXdpbmRvdy5zZXRJbnRlcnZhbCgoZnVuY3Rpb24oKXtpZih0Ll9hbmltYXRpb25UaW1lUmVzdGFydGVkKXt2YXIgZT11LShEYXRlLm5vdygpLXQuX2FuaW1hdGlvblRpbWVSZXN0YXJ0ZWQpO3JldHVybiB0Ll9hbmltYXRpb25UaW1lUmVzdGFydGVkPXZvaWQgMCx2b2lkIHQuX3Jlc3RhcnRJbnRlcnZhbChlKX10LmlzQ3Vyc29yVmlzaWJsZT0hdC5pc0N1cnNvclZpc2libGUsdC5fYW5pbWF0aW9uRnJhbWU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXt0Ll9yZW5kZXJDYWxsYmFjaygpLHQuX2FuaW1hdGlvbkZyYW1lPXZvaWQgMH0pKX0pLHUpfSksZSl9LGUucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7dGhpcy5pc0N1cnNvclZpc2libGU9ITAsdGhpcy5fYmxpbmtJbnRlcnZhbCYmKHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMuX2JsaW5rSW50ZXJ2YWwpLHRoaXMuX2JsaW5rSW50ZXJ2YWw9dm9pZCAwKSx0aGlzLl9ibGlua1N0YXJ0VGltZW91dCYmKHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fYmxpbmtTdGFydFRpbWVvdXQpLHRoaXMuX2JsaW5rU3RhcnRUaW1lb3V0PXZvaWQgMCksdGhpcy5fYW5pbWF0aW9uRnJhbWUmJih3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWUpLHRoaXMuX2FuaW1hdGlvbkZyYW1lPXZvaWQgMCl9LGUucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3RoaXMucGF1c2UoKSx0aGlzLl9hbmltYXRpb25UaW1lUmVzdGFydGVkPXZvaWQgMCx0aGlzLl9yZXN0YXJ0SW50ZXJ2YWwoKSx0aGlzLnJlc3RhcnRCbGlua0FuaW1hdGlvbigpfSxlfSgpfSw4OTc4OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuLG8scyxhLGMsbCxoLHUsZixfLGQscCx2LHksZyxtLGIsUyxDLHcsTCxFLHgsUixrLE0sQSxPLEQsVCxCLFAsSSxILGosRixXLFUscSxOLHosSyxHLFYsWCxaLFksSiwkLFEsZWUsdGUscmUsaWUsbmUsb2Usc2UsYWUsY2UsbGUsaGUsdWUsZmUsX2UsZGUscGUsdmUseWUsZ2UsbWUsYmUsU2UsQ2Usd2UsTGUsRWUseGUsUmUsa2UsTWUsQWUsT2UsRGUsVGUsQmUsUGUsSWUsSGUsamUsRmUsV2UsVWUscWUsTmUsemUsS2UsR2UsVmUsWGUsWmUsWWUsSmUsJGUsUWUsZXQsdHQscnQsaXQsbnQsb3Qsc3QsYXQsY3QsbHQsaHQsdXQsZnQsX3QsZHQscHQsdnQseXQsZ3QsbXQsYnQsU3QsQ3Qsd3Q9dGhpcyYmdGhpcy5fX3JlYWR8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl07aWYoIXIpcmV0dXJuIGU7dmFyIGksbixvPXIuY2FsbChlKSxzPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT10fHx0LS0gPjApJiYhKGk9by5uZXh0KCkpLmRvbmU7KXMucHVzaChpLnZhbHVlKX1jYXRjaChlKXtuPXtlcnJvcjplfX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYocj1vLnJldHVybikmJnIuY2FsbChvKX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19cmV0dXJuIHN9LEx0PXRoaXMmJnRoaXMuX192YWx1ZXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLHI9dCYmZVt0XSxpPTA7aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBlJiZpPj1lLmxlbmd0aCYmKGU9dm9pZCAwKSx7dmFsdWU6ZSYmZVtpKytdLGRvbmU6IWV9fX07dGhyb3cgbmV3IFR5cGVFcnJvcih0P1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudHJ5RHJhd0N1c3RvbUNoYXI9dC5wb3dlcmxpbmVEZWZpbml0aW9ucz10LmJveERyYXdpbmdEZWZpbml0aW9ucz10LmJsb2NrRWxlbWVudERlZmluaXRpb25zPXZvaWQgMDt2YXIgRXQ9cigxNzUyKTt0LmJsb2NrRWxlbWVudERlZmluaXRpb25zPXtcIuKWgFwiOlt7eDowLHk6MCx3OjgsaDo0fV0sXCLiloFcIjpbe3g6MCx5Ojcsdzo4LGg6MX1dLFwi4paCXCI6W3t4OjAseTo2LHc6OCxoOjJ9XSxcIuKWg1wiOlt7eDowLHk6NSx3OjgsaDozfV0sXCLiloRcIjpbe3g6MCx5OjQsdzo4LGg6NH1dLFwi4paFXCI6W3t4OjAseTozLHc6OCxoOjV9XSxcIuKWhlwiOlt7eDowLHk6Mix3OjgsaDo2fV0sXCLilodcIjpbe3g6MCx5OjEsdzo4LGg6N31dLFwi4paIXCI6W3t4OjAseTowLHc6OCxoOjh9XSxcIuKWiVwiOlt7eDowLHk6MCx3OjcsaDo4fV0sXCLilopcIjpbe3g6MCx5OjAsdzo2LGg6OH1dLFwi4paLXCI6W3t4OjAseTowLHc6NSxoOjh9XSxcIuKWjFwiOlt7eDowLHk6MCx3OjQsaDo4fV0sXCLilo1cIjpbe3g6MCx5OjAsdzozLGg6OH1dLFwi4paOXCI6W3t4OjAseTowLHc6MixoOjh9XSxcIuKWj1wiOlt7eDowLHk6MCx3OjEsaDo4fV0sXCLilpBcIjpbe3g6NCx5OjAsdzo0LGg6OH1dLFwi4paUXCI6W3t4OjAseTowLHc6OSxoOjF9XSxcIuKWlVwiOlt7eDo3LHk6MCx3OjEsaDo4fV0sXCLilpZcIjpbe3g6MCx5OjQsdzo0LGg6NH1dLFwi4paXXCI6W3t4OjQseTo0LHc6NCxoOjR9XSxcIuKWmFwiOlt7eDowLHk6MCx3OjQsaDo0fV0sXCLilplcIjpbe3g6MCx5OjAsdzo0LGg6OH0se3g6MCx5OjQsdzo4LGg6NH1dLFwi4paaXCI6W3t4OjAseTowLHc6NCxoOjR9LHt4OjQseTo0LHc6NCxoOjR9XSxcIuKWm1wiOlt7eDowLHk6MCx3OjQsaDo4fSx7eDowLHk6MCx3OjQsaDo4fV0sXCLilpxcIjpbe3g6MCx5OjAsdzo4LGg6NH0se3g6NCx5OjAsdzo0LGg6OH1dLFwi4padXCI6W3t4OjQseTowLHc6NCxoOjR9XSxcIuKWnlwiOlt7eDo0LHk6MCx3OjQsaDo0fSx7eDowLHk6NCx3OjQsaDo0fV0sXCLilp9cIjpbe3g6NCx5OjAsdzo0LGg6OH0se3g6MCx5OjQsdzo4LGg6NH1dLFwi8J+tsFwiOlt7eDoxLHk6MCx3OjEsaDo4fV0sXCLwn62xXCI6W3t4OjIseTowLHc6MSxoOjh9XSxcIvCfrbJcIjpbe3g6Myx5OjAsdzoxLGg6OH1dLFwi8J+ts1wiOlt7eDo0LHk6MCx3OjEsaDo4fV0sXCLwn620XCI6W3t4OjUseTowLHc6MSxoOjh9XSxcIvCfrbVcIjpbe3g6Nix5OjAsdzoxLGg6OH1dLFwi8J+ttlwiOlt7eDowLHk6MSx3OjgsaDoxfV0sXCLwn623XCI6W3t4OjAseToyLHc6OCxoOjF9XSxcIvCfrbhcIjpbe3g6MCx5OjMsdzo4LGg6MX1dLFwi8J+tuVwiOlt7eDowLHk6NCx3OjgsaDoxfV0sXCLwn626XCI6W3t4OjAseTo1LHc6OCxoOjF9XSxcIvCfrbtcIjpbe3g6MCx5OjYsdzo4LGg6MX1dLFwi8J+tvFwiOlt7eDowLHk6MCx3OjEsaDo4fSx7eDowLHk6Nyx3OjgsaDoxfV0sXCLwn629XCI6W3t4OjAseTowLHc6MSxoOjh9LHt4OjAseTowLHc6OCxoOjF9XSxcIvCfrb5cIjpbe3g6Nyx5OjAsdzoxLGg6OH0se3g6MCx5OjAsdzo4LGg6MX1dLFwi8J+tv1wiOlt7eDo3LHk6MCx3OjEsaDo4fSx7eDowLHk6Nyx3OjgsaDoxfV0sXCLwn66AXCI6W3t4OjAseTowLHc6OCxoOjF9LHt4OjAseTo3LHc6OCxoOjF9XSxcIvCfroFcIjpbe3g6MCx5OjAsdzo4LGg6MX0se3g6MCx5OjIsdzo4LGg6MX0se3g6MCx5OjQsdzo4LGg6MX0se3g6MCx5Ojcsdzo4LGg6MX1dLFwi8J+uglwiOlt7eDowLHk6MCx3OjgsaDoyfV0sXCLwn66DXCI6W3t4OjAseTowLHc6OCxoOjN9XSxcIvCfroRcIjpbe3g6MCx5OjAsdzo4LGg6NX1dLFwi8J+uhVwiOlt7eDowLHk6MCx3OjgsaDo2fV0sXCLwn66GXCI6W3t4OjAseTowLHc6OCxoOjd9XSxcIvCfrodcIjpbe3g6Nix5OjAsdzoyLGg6OH1dLFwi8J+uiFwiOlt7eDo1LHk6MCx3OjMsaDo4fV0sXCLwn66JXCI6W3t4OjMseTowLHc6NSxoOjh9XSxcIvCfropcIjpbe3g6Mix5OjAsdzo2LGg6OH1dLFwi8J+ui1wiOlt7eDoxLHk6MCx3OjcsaDo4fV0sXCLwn66VXCI6W3t4OjAseTowLHc6MixoOjJ9LHt4OjQseTowLHc6MixoOjJ9LHt4OjIseToyLHc6MixoOjJ9LHt4OjYseToyLHc6MixoOjJ9LHt4OjAseTo0LHc6MixoOjJ9LHt4OjQseTo0LHc6MixoOjJ9LHt4OjIseTo2LHc6MixoOjJ9LHt4OjYseTo2LHc6MixoOjJ9XSxcIvCfrpZcIjpbe3g6Mix5OjAsdzoyLGg6Mn0se3g6Nix5OjAsdzoyLGg6Mn0se3g6MCx5OjIsdzoyLGg6Mn0se3g6NCx5OjIsdzoyLGg6Mn0se3g6Mix5OjQsdzoyLGg6Mn0se3g6Nix5OjQsdzoyLGg6Mn0se3g6MCx5OjYsdzoyLGg6Mn0se3g6NCx5OjYsdzoyLGg6Mn1dLFwi8J+ul1wiOlt7eDowLHk6Mix3OjgsaDoyfSx7eDowLHk6Nix3OjgsaDoyfV19O3ZhciB4dD17XCLilpFcIjpbWzEsMCwwLDBdLFswLDAsMCwwXSxbMCwwLDEsMF0sWzAsMCwwLDBdXSxcIuKWklwiOltbMSwwXSxbMCwwXSxbMCwxXSxbMCwwXV0sXCLilpNcIjpbWzAsMV0sWzEsMV0sWzEsMF0sWzEsMV1dfTt0LmJveERyYXdpbmdEZWZpbml0aW9ucz17XCLilIBcIjooaT17fSxpWzFdPVwiTTAsLjUgTDEsLjVcIixpKSxcIuKUgVwiOihuPXt9LG5bM109XCJNMCwuNSBMMSwuNVwiLG4pLFwi4pSCXCI6KG89e30sb1sxXT1cIk0uNSwwIEwuNSwxXCIsbyksXCLilINcIjoocz17fSxzWzNdPVwiTS41LDAgTC41LDFcIixzKSxcIuKUjFwiOihhPXt9LGFbMV09XCJNMC41LDEgTC41LC41IEwxLC41XCIsYSksXCLilI9cIjooYz17fSxjWzNdPVwiTTAuNSwxIEwuNSwuNSBMMSwuNVwiLGMpLFwi4pSQXCI6KGw9e30sbFsxXT1cIk0wLC41IEwuNSwuNSBMLjUsMVwiLGwpLFwi4pSTXCI6KGg9e30saFszXT1cIk0wLC41IEwuNSwuNSBMLjUsMVwiLGgpLFwi4pSUXCI6KHU9e30sdVsxXT1cIk0uNSwwIEwuNSwuNSBMMSwuNVwiLHUpLFwi4pSXXCI6KGY9e30sZlszXT1cIk0uNSwwIEwuNSwuNSBMMSwuNVwiLGYpLFwi4pSYXCI6KF89e30sX1sxXT1cIk0uNSwwIEwuNSwuNSBMMCwuNVwiLF8pLFwi4pSbXCI6KGQ9e30sZFszXT1cIk0uNSwwIEwuNSwuNSBMMCwuNVwiLGQpLFwi4pScXCI6KHA9e30scFsxXT1cIk0uNSwwIEwuNSwxIE0uNSwuNSBMMSwuNVwiLHApLFwi4pSjXCI6KHY9e30sdlszXT1cIk0uNSwwIEwuNSwxIE0uNSwuNSBMMSwuNVwiLHYpLFwi4pSkXCI6KHk9e30seVsxXT1cIk0uNSwwIEwuNSwxIE0uNSwuNSBMMCwuNVwiLHkpLFwi4pSrXCI6KGc9e30sZ1szXT1cIk0uNSwwIEwuNSwxIE0uNSwuNSBMMCwuNVwiLGcpLFwi4pSsXCI6KG09e30sbVsxXT1cIk0wLC41IEwxLC41IE0uNSwuNSBMLjUsMVwiLG0pLFwi4pSzXCI6KGI9e30sYlszXT1cIk0wLC41IEwxLC41IE0uNSwuNSBMLjUsMVwiLGIpLFwi4pS0XCI6KFM9e30sU1sxXT1cIk0wLC41IEwxLC41IE0uNSwuNSBMLjUsMFwiLFMpLFwi4pS7XCI6KEM9e30sQ1szXT1cIk0wLC41IEwxLC41IE0uNSwuNSBMLjUsMFwiLEMpLFwi4pS8XCI6KHc9e30sd1sxXT1cIk0wLC41IEwxLC41IE0uNSwwIEwuNSwxXCIsdyksXCLilYtcIjooTD17fSxMWzNdPVwiTTAsLjUgTDEsLjUgTS41LDAgTC41LDFcIixMKSxcIuKVtFwiOihFPXt9LEVbMV09XCJNLjUsLjUgTDAsLjVcIixFKSxcIuKVuFwiOih4PXt9LHhbM109XCJNLjUsLjUgTDAsLjVcIix4KSxcIuKVtVwiOihSPXt9LFJbMV09XCJNLjUsLjUgTC41LDBcIixSKSxcIuKVuVwiOihrPXt9LGtbM109XCJNLjUsLjUgTC41LDBcIixrKSxcIuKVtlwiOihNPXt9LE1bMV09XCJNLjUsLjUgTDEsLjVcIixNKSxcIuKVulwiOihBPXt9LEFbM109XCJNLjUsLjUgTDEsLjVcIixBKSxcIuKVt1wiOihPPXt9LE9bMV09XCJNLjUsLjUgTC41LDFcIixPKSxcIuKVu1wiOihEPXt9LERbM109XCJNLjUsLjUgTC41LDFcIixEKSxcIuKVkFwiOihUPXt9LFRbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk0wLFwiKyguNS10KStcIiBMMSxcIisoLjUtdCkrXCIgTTAsXCIrKC41K3QpK1wiIEwxLFwiKyguNSt0KX0sVCksXCLilZFcIjooQj17fSxCWzFdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJNXCIrKC41LWUpK1wiLDAgTFwiKyguNS1lKStcIiwxIE1cIisoLjUrZSkrXCIsMCBMXCIrKC41K2UpK1wiLDFcIn0sQiksXCLilZJcIjooUD17fSxQWzFdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJNLjUsMSBMLjUsXCIrKC41LXQpK1wiIEwxLFwiKyguNS10KStcIiBNLjUsXCIrKC41K3QpK1wiIEwxLFwiKyguNSt0KX0sUCksXCLilZNcIjooST17fSxJWzFdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJNXCIrKC41LWUpK1wiLDEgTFwiKyguNS1lKStcIiwuNSBMMSwuNSBNXCIrKC41K2UpK1wiLC41IExcIisoLjUrZSkrXCIsMVwifSxJKSxcIuKVlFwiOihIPXt9LEhbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk0xLFwiKyguNS10KStcIiBMXCIrKC41LWUpK1wiLFwiKyguNS10KStcIiBMXCIrKC41LWUpK1wiLDEgTTEsXCIrKC41K3QpK1wiIExcIisoLjUrZSkrXCIsXCIrKC41K3QpK1wiIExcIisoLjUrZSkrXCIsMVwifSxIKSxcIuKVlVwiOihqPXt9LGpbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk0wLFwiKyguNS10KStcIiBMLjUsXCIrKC41LXQpK1wiIEwuNSwxIE0wLFwiKyguNSt0KStcIiBMLjUsXCIrKC41K3QpfSxqKSxcIuKVllwiOihGPXt9LEZbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk1cIisoLjUrZSkrXCIsMSBMXCIrKC41K2UpK1wiLC41IEwwLC41IE1cIisoLjUtZSkrXCIsLjUgTFwiKyguNS1lKStcIiwxXCJ9LEYpLFwi4pWXXCI6KFc9e30sV1sxXT1mdW5jdGlvbihlLHQpe3JldHVyblwiTTAsXCIrKC41K3QpK1wiIExcIisoLjUtZSkrXCIsXCIrKC41K3QpK1wiIExcIisoLjUtZSkrXCIsMSBNMCxcIisoLjUtdCkrXCIgTFwiKyguNStlKStcIixcIisoLjUtdCkrXCIgTFwiKyguNStlKStcIiwxXCJ9LFcpLFwi4pWYXCI6KFU9e30sVVsxXT1mdW5jdGlvbihlLHQpe3JldHVyblwiTS41LDAgTC41LFwiKyguNSt0KStcIiBMMSxcIisoLjUrdCkrXCIgTS41LFwiKyguNS10KStcIiBMMSxcIisoLjUtdCl9LFUpLFwi4pWZXCI6KHE9e30scVsxXT1mdW5jdGlvbihlLHQpe3JldHVyblwiTTEsLjUgTFwiKyguNS1lKStcIiwuNSBMXCIrKC41LWUpK1wiLDAgTVwiKyguNStlKStcIiwuNSBMXCIrKC41K2UpK1wiLDBcIn0scSksXCLilZpcIjooTj17fSxOWzFdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJNMSxcIisoLjUtdCkrXCIgTFwiKyguNStlKStcIixcIisoLjUtdCkrXCIgTFwiKyguNStlKStcIiwwIE0xLFwiKyguNSt0KStcIiBMXCIrKC41LWUpK1wiLFwiKyguNSt0KStcIiBMXCIrKC41LWUpK1wiLDBcIn0sTiksXCLilZtcIjooej17fSx6WzFdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJNMCxcIisoLjUrdCkrXCIgTC41LFwiKyguNSt0KStcIiBMLjUsMCBNMCxcIisoLjUtdCkrXCIgTC41LFwiKyguNS10KX0seiksXCLilZxcIjooSz17fSxLWzFdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJNMCwuNSBMXCIrKC41K2UpK1wiLC41IExcIisoLjUrZSkrXCIsMCBNXCIrKC41LWUpK1wiLC41IExcIisoLjUtZSkrXCIsMFwifSxLKSxcIuKVnVwiOihHPXt9LEdbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk0wLFwiKyguNS10KStcIiBMXCIrKC41LWUpK1wiLFwiKyguNS10KStcIiBMXCIrKC41LWUpK1wiLDAgTTAsXCIrKC41K3QpK1wiIExcIisoLjUrZSkrXCIsXCIrKC41K3QpK1wiIExcIisoLjUrZSkrXCIsMFwifSxHKSxcIuKVnlwiOihWPXt9LFZbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk0uNSwwIEwuNSwxIE0uNSxcIisoLjUtdCkrXCIgTDEsXCIrKC41LXQpK1wiIE0uNSxcIisoLjUrdCkrXCIgTDEsXCIrKC41K3QpfSxWKSxcIuKVn1wiOihYPXt9LFhbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk1cIisoLjUtZSkrXCIsMCBMXCIrKC41LWUpK1wiLDEgTVwiKyguNStlKStcIiwwIExcIisoLjUrZSkrXCIsMSBNXCIrKC41K2UpK1wiLC41IEwxLC41XCJ9LFgpLFwi4pWgXCI6KFo9e30sWlsxXT1mdW5jdGlvbihlLHQpe3JldHVyblwiTVwiKyguNS1lKStcIiwwIExcIisoLjUtZSkrXCIsMSBNMSxcIisoLjUrdCkrXCIgTFwiKyguNStlKStcIixcIisoLjUrdCkrXCIgTFwiKyguNStlKStcIiwxIE0xLFwiKyguNS10KStcIiBMXCIrKC41K2UpK1wiLFwiKyguNS10KStcIiBMXCIrKC41K2UpK1wiLDBcIn0sWiksXCLilaFcIjooWT17fSxZWzFdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJNLjUsMCBMLjUsMSBNMCxcIisoLjUtdCkrXCIgTC41LFwiKyguNS10KStcIiBNMCxcIisoLjUrdCkrXCIgTC41LFwiKyguNSt0KX0sWSksXCLilaJcIjooSj17fSxKWzFdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJNMCwuNSBMXCIrKC41LWUpK1wiLC41IE1cIisoLjUtZSkrXCIsMCBMXCIrKC41LWUpK1wiLDEgTVwiKyguNStlKStcIiwwIExcIisoLjUrZSkrXCIsMVwifSxKKSxcIuKVo1wiOigkPXt9LCRbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk1cIisoLjUrZSkrXCIsMCBMXCIrKC41K2UpK1wiLDEgTTAsXCIrKC41K3QpK1wiIExcIisoLjUtZSkrXCIsXCIrKC41K3QpK1wiIExcIisoLjUtZSkrXCIsMSBNMCxcIisoLjUtdCkrXCIgTFwiKyguNS1lKStcIixcIisoLjUtdCkrXCIgTFwiKyguNS1lKStcIiwwXCJ9LCQpLFwi4pWkXCI6KFE9e30sUVsxXT1mdW5jdGlvbihlLHQpe3JldHVyblwiTTAsXCIrKC41LXQpK1wiIEwxLFwiKyguNS10KStcIiBNMCxcIisoLjUrdCkrXCIgTDEsXCIrKC41K3QpK1wiIE0uNSxcIisoLjUrdCkrXCIgTC41LDFcIn0sUSksXCLilaVcIjooZWU9e30sZWVbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk0wLC41IEwxLC41IE1cIisoLjUtZSkrXCIsLjUgTFwiKyguNS1lKStcIiwxIE1cIisoLjUrZSkrXCIsLjUgTFwiKyguNStlKStcIiwxXCJ9LGVlKSxcIuKVplwiOih0ZT17fSx0ZVsxXT1mdW5jdGlvbihlLHQpe3JldHVyblwiTTAsXCIrKC41LXQpK1wiIEwxLFwiKyguNS10KStcIiBNMCxcIisoLjUrdCkrXCIgTFwiKyguNS1lKStcIixcIisoLjUrdCkrXCIgTFwiKyguNS1lKStcIiwxIE0xLFwiKyguNSt0KStcIiBMXCIrKC41K2UpK1wiLFwiKyguNSt0KStcIiBMXCIrKC41K2UpK1wiLDFcIn0sdGUpLFwi4pWnXCI6KHJlPXt9LHJlWzFdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJNLjUsMCBMLjUsXCIrKC41LXQpK1wiIE0wLFwiKyguNS10KStcIiBMMSxcIisoLjUtdCkrXCIgTTAsXCIrKC41K3QpK1wiIEwxLFwiKyguNSt0KX0scmUpLFwi4pWoXCI6KGllPXt9LGllWzFdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJNMCwuNSBMMSwuNSBNXCIrKC41LWUpK1wiLC41IExcIisoLjUtZSkrXCIsMCBNXCIrKC41K2UpK1wiLC41IExcIisoLjUrZSkrXCIsMFwifSxpZSksXCLilalcIjoobmU9e30sbmVbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk0wLFwiKyguNSt0KStcIiBMMSxcIisoLjUrdCkrXCIgTTAsXCIrKC41LXQpK1wiIExcIisoLjUtZSkrXCIsXCIrKC41LXQpK1wiIExcIisoLjUtZSkrXCIsMCBNMSxcIisoLjUtdCkrXCIgTFwiKyguNStlKStcIixcIisoLjUtdCkrXCIgTFwiKyguNStlKStcIiwwXCJ9LG5lKSxcIuKVqlwiOihvZT17fSxvZVsxXT1mdW5jdGlvbihlLHQpe3JldHVyblwiTS41LDAgTC41LDEgTTAsXCIrKC41LXQpK1wiIEwxLFwiKyguNS10KStcIiBNMCxcIisoLjUrdCkrXCIgTDEsXCIrKC41K3QpfSxvZSksXCLilatcIjooc2U9e30sc2VbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk0wLC41IEwxLC41IE1cIisoLjUtZSkrXCIsMCBMXCIrKC41LWUpK1wiLDEgTVwiKyguNStlKStcIiwwIExcIisoLjUrZSkrXCIsMVwifSxzZSksXCLilaxcIjooYWU9e30sYWVbMV09ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIk0wLFwiKyguNSt0KStcIiBMXCIrKC41LWUpK1wiLFwiKyguNSt0KStcIiBMXCIrKC41LWUpK1wiLDEgTTEsXCIrKC41K3QpK1wiIExcIisoLjUrZSkrXCIsXCIrKC41K3QpK1wiIExcIisoLjUrZSkrXCIsMSBNMCxcIisoLjUtdCkrXCIgTFwiKyguNS1lKStcIixcIisoLjUtdCkrXCIgTFwiKyguNS1lKStcIiwwIE0xLFwiKyguNS10KStcIiBMXCIrKC41K2UpK1wiLFwiKyguNS10KStcIiBMXCIrKC41K2UpK1wiLDBcIn0sYWUpLFwi4pWxXCI6KGNlPXt9LGNlWzFdPVwiTTEsMCBMMCwxXCIsY2UpLFwi4pWyXCI6KGxlPXt9LGxlWzFdPVwiTTAsMCBMMSwxXCIsbGUpLFwi4pWzXCI6KGhlPXt9LGhlWzFdPVwiTTEsMCBMMCwxIE0wLDAgTDEsMVwiLGhlKSxcIuKVvFwiOih1ZT17fSx1ZVsxXT1cIk0uNSwuNSBMMCwuNVwiLHVlWzNdPVwiTS41LC41IEwxLC41XCIsdWUpLFwi4pW9XCI6KGZlPXt9LGZlWzFdPVwiTS41LC41IEwuNSwwXCIsZmVbM109XCJNLjUsLjUgTC41LDFcIixmZSksXCLilb5cIjooX2U9e30sX2VbMV09XCJNLjUsLjUgTDEsLjVcIixfZVszXT1cIk0uNSwuNSBMMCwuNVwiLF9lKSxcIuKVv1wiOihkZT17fSxkZVsxXT1cIk0uNSwuNSBMLjUsMVwiLGRlWzNdPVwiTS41LC41IEwuNSwwXCIsZGUpLFwi4pSNXCI6KHBlPXt9LHBlWzFdPVwiTS41LC41IEwuNSwxXCIscGVbM109XCJNLjUsLjUgTDEsLjVcIixwZSksXCLilI5cIjoodmU9e30sdmVbMV09XCJNLjUsLjUgTDEsLjVcIix2ZVszXT1cIk0uNSwuNSBMLjUsMVwiLHZlKSxcIuKUkVwiOih5ZT17fSx5ZVsxXT1cIk0uNSwuNSBMLjUsMVwiLHllWzNdPVwiTS41LC41IEwwLC41XCIseWUpLFwi4pSSXCI6KGdlPXt9LGdlWzFdPVwiTS41LC41IEwwLC41XCIsZ2VbM109XCJNLjUsLjUgTC41LDFcIixnZSksXCLilJVcIjoobWU9e30sbWVbMV09XCJNLjUsLjUgTC41LDBcIixtZVszXT1cIk0uNSwuNSBMMSwuNVwiLG1lKSxcIuKUllwiOihiZT17fSxiZVsxXT1cIk0uNSwuNSBMMSwuNVwiLGJlWzNdPVwiTS41LC41IEwuNSwwXCIsYmUpLFwi4pSZXCI6KFNlPXt9LFNlWzFdPVwiTS41LC41IEwuNSwwXCIsU2VbM109XCJNLjUsLjUgTDAsLjVcIixTZSksXCLilJpcIjooQ2U9e30sQ2VbMV09XCJNLjUsLjUgTDAsLjVcIixDZVszXT1cIk0uNSwuNSBMLjUsMFwiLENlKSxcIuKUnVwiOih3ZT17fSx3ZVsxXT1cIk0uNSwwIEwuNSwxXCIsd2VbM109XCJNLjUsLjUgTDEsLjVcIix3ZSksXCLilJ5cIjooTGU9e30sTGVbMV09XCJNMC41LDEgTC41LC41IEwxLC41XCIsTGVbM109XCJNLjUsLjUgTC41LDBcIixMZSksXCLilJ9cIjooRWU9e30sRWVbMV09XCJNLjUsMCBMLjUsLjUgTDEsLjVcIixFZVszXT1cIk0uNSwuNSBMLjUsMVwiLEVlKSxcIuKUoFwiOih4ZT17fSx4ZVsxXT1cIk0uNSwuNSBMMSwuNVwiLHhlWzNdPVwiTS41LDAgTC41LDFcIix4ZSksXCLilKFcIjooUmU9e30sUmVbMV09XCJNLjUsLjUgTC41LDFcIixSZVszXT1cIk0uNSwwIEwuNSwuNSBMMSwuNVwiLFJlKSxcIuKUolwiOihrZT17fSxrZVsxXT1cIk0uNSwuNSBMLjUsMFwiLGtlWzNdPVwiTTAuNSwxIEwuNSwuNSBMMSwuNVwiLGtlKSxcIuKUpVwiOihNZT17fSxNZVsxXT1cIk0uNSwwIEwuNSwxXCIsTWVbM109XCJNLjUsLjUgTDAsLjVcIixNZSksXCLilKZcIjooQWU9e30sQWVbMV09XCJNMCwuNSBMLjUsLjUgTC41LDFcIixBZVszXT1cIk0uNSwuNSBMLjUsMFwiLEFlKSxcIuKUp1wiOihPZT17fSxPZVsxXT1cIk0uNSwwIEwuNSwuNSBMMCwuNVwiLE9lWzNdPVwiTS41LC41IEwuNSwxXCIsT2UpLFwi4pSoXCI6KERlPXt9LERlWzFdPVwiTS41LC41IEwwLC41XCIsRGVbM109XCJNLjUsMCBMLjUsMVwiLERlKSxcIuKUqVwiOihUZT17fSxUZVsxXT1cIk0uNSwuNSBMLjUsMVwiLFRlWzNdPVwiTS41LDAgTC41LC41IEwwLC41XCIsVGUpLFwi4pSqXCI6KEJlPXt9LEJlWzFdPVwiTS41LC41IEwuNSwwXCIsQmVbM109XCJNMCwuNSBMLjUsLjUgTC41LDFcIixCZSksXCLilK1cIjooUGU9e30sUGVbMV09XCJNMC41LDEgTC41LC41IEwxLC41XCIsUGVbM109XCJNLjUsLjUgTDAsLjVcIixQZSksXCLilK5cIjooSWU9e30sSWVbMV09XCJNMCwuNSBMLjUsLjUgTC41LDFcIixJZVszXT1cIk0uNSwuNSBMMSwuNVwiLEllKSxcIuKUr1wiOihIZT17fSxIZVsxXT1cIk0uNSwuNSBMLjUsMVwiLEhlWzNdPVwiTTAsLjUgTDEsLjVcIixIZSksXCLilLBcIjooamU9e30samVbMV09XCJNMCwuNSBMMSwuNVwiLGplWzNdPVwiTS41LC41IEwuNSwxXCIsamUpLFwi4pSxXCI6KEZlPXt9LEZlWzFdPVwiTS41LC41IEwxLC41XCIsRmVbM109XCJNMCwuNSBMLjUsLjUgTC41LDFcIixGZSksXCLilLJcIjooV2U9e30sV2VbMV09XCJNLjUsLjUgTDAsLjVcIixXZVszXT1cIk0wLjUsMSBMLjUsLjUgTDEsLjVcIixXZSksXCLilLVcIjooVWU9e30sVWVbMV09XCJNLjUsMCBMLjUsLjUgTDEsLjVcIixVZVszXT1cIk0uNSwuNSBMMCwuNVwiLFVlKSxcIuKUtlwiOihxZT17fSxxZVsxXT1cIk0uNSwwIEwuNSwuNSBMMCwuNVwiLHFlWzNdPVwiTS41LC41IEwxLC41XCIscWUpLFwi4pS3XCI6KE5lPXt9LE5lWzFdPVwiTS41LC41IEwuNSwwXCIsTmVbM109XCJNMCwuNSBMMSwuNVwiLE5lKSxcIuKUuFwiOih6ZT17fSx6ZVsxXT1cIk0wLC41IEwxLC41XCIsemVbM109XCJNLjUsLjUgTC41LDBcIix6ZSksXCLilLlcIjooS2U9e30sS2VbMV09XCJNLjUsLjUgTDEsLjVcIixLZVszXT1cIk0uNSwwIEwuNSwuNSBMMCwuNVwiLEtlKSxcIuKUulwiOihHZT17fSxHZVsxXT1cIk0uNSwuNSBMMCwuNVwiLEdlWzNdPVwiTS41LDAgTC41LC41IEwxLC41XCIsR2UpLFwi4pS9XCI6KFZlPXt9LFZlWzFdPVwiTS41LDAgTC41LDEgTS41LC41IEwxLC41XCIsVmVbM109XCJNLjUsLjUgTDAsLjVcIixWZSksXCLilL5cIjooWGU9e30sWGVbMV09XCJNLjUsMCBMLjUsMSBNLjUsLjUgTDAsLjVcIixYZVszXT1cIk0uNSwuNSBMMSwuNVwiLFhlKSxcIuKUv1wiOihaZT17fSxaZVsxXT1cIk0uNSwwIEwuNSwxXCIsWmVbM109XCJNMCwuNSBMMSwuNVwiLFplKSxcIuKVgFwiOihZZT17fSxZZVsxXT1cIk0wLC41IEwxLC41IE0uNSwuNSBMLjUsMVwiLFllWzNdPVwiTS41LC41IEwuNSwwXCIsWWUpLFwi4pWBXCI6KEplPXt9LEplWzFdPVwiTS41LC41IEwuNSwwIE0wLC41IEwxLC41XCIsSmVbM109XCJNLjUsLjUgTC41LDFcIixKZSksXCLilYJcIjooJGU9e30sJGVbMV09XCJNMCwuNSBMMSwuNVwiLCRlWzNdPVwiTS41LDAgTC41LDFcIiwkZSksXCLilYNcIjooUWU9e30sUWVbMV09XCJNMC41LDEgTC41LC41IEwxLC41XCIsUWVbM109XCJNLjUsMCBMLjUsLjUgTDAsLjVcIixRZSksXCLilYRcIjooZXQ9e30sZXRbMV09XCJNMCwuNSBMLjUsLjUgTC41LDFcIixldFszXT1cIk0uNSwwIEwuNSwuNSBMMSwuNVwiLGV0KSxcIuKVhVwiOih0dD17fSx0dFsxXT1cIk0uNSwwIEwuNSwuNSBMMSwuNVwiLHR0WzNdPVwiTTAsLjUgTC41LC41IEwuNSwxXCIsdHQpLFwi4pWGXCI6KHJ0PXt9LHJ0WzFdPVwiTS41LDAgTC41LC41IEwwLC41XCIscnRbM109XCJNMC41LDEgTC41LC41IEwxLC41XCIscnQpLFwi4pWHXCI6KGl0PXt9LGl0WzFdPVwiTS41LC41IEwuNSwxXCIsaXRbM109XCJNLjUsLjUgTC41LDAgTTAsLjUgTDEsLjVcIixpdCksXCLilYhcIjoobnQ9e30sbnRbMV09XCJNLjUsLjUgTC41LDBcIixudFszXT1cIk0wLC41IEwxLC41IE0uNSwuNSBMLjUsMVwiLG50KSxcIuKViVwiOihvdD17fSxvdFsxXT1cIk0uNSwuNSBMMSwuNVwiLG90WzNdPVwiTS41LDAgTC41LDEgTS41LC41IEwwLC41XCIsb3QpLFwi4pWKXCI6KHN0PXt9LHN0WzFdPVwiTS41LC41IEwwLC41XCIsc3RbM109XCJNLjUsMCBMLjUsMSBNLjUsLjUgTDEsLjVcIixzdCksXCLilYxcIjooYXQ9e30sYXRbMV09XCJNLjEsLjUgTC40LC41IE0uNiwuNSBMLjksLjVcIixhdCksXCLilY1cIjooY3Q9e30sY3RbM109XCJNLjEsLjUgTC40LC41IE0uNiwuNSBMLjksLjVcIixjdCksXCLilIRcIjoobHQ9e30sbHRbMV09XCJNLjA2NjcsLjUgTC4yNjY3LC41IE0uNCwuNSBMLjYsLjUgTS43MzMzLC41IEwuOTMzMywuNVwiLGx0KSxcIuKUhVwiOihodD17fSxodFszXT1cIk0uMDY2NywuNSBMLjI2NjcsLjUgTS40LC41IEwuNiwuNSBNLjczMzMsLjUgTC45MzMzLC41XCIsaHQpLFwi4pSIXCI6KHV0PXt9LHV0WzFdPVwiTS4wNSwuNSBMLjIsLjUgTS4zLC41IEwuNDUsLjUgTS41NSwuNSBMLjcsLjUgTS44LC41IEwuOTUsLjVcIix1dCksXCLilIlcIjooZnQ9e30sZnRbM109XCJNLjA1LC41IEwuMiwuNSBNLjMsLjUgTC40NSwuNSBNLjU1LC41IEwuNywuNSBNLjgsLjUgTC45NSwuNVwiLGZ0KSxcIuKVjlwiOihfdD17fSxfdFsxXT1cIk0uNSwuMSBMLjUsLjQgTS41LC42IEwuNSwuOVwiLF90KSxcIuKVj1wiOihkdD17fSxkdFszXT1cIk0uNSwuMSBMLjUsLjQgTS41LC42IEwuNSwuOVwiLGR0KSxcIuKUhlwiOihwdD17fSxwdFsxXT1cIk0uNSwuMDY2NyBMLjUsLjI2NjcgTS41LC40IEwuNSwuNiBNLjUsLjczMzMgTC41LC45MzMzXCIscHQpLFwi4pSHXCI6KHZ0PXt9LHZ0WzNdPVwiTS41LC4wNjY3IEwuNSwuMjY2NyBNLjUsLjQgTC41LC42IE0uNSwuNzMzMyBMLjUsLjkzMzNcIix2dCksXCLilIpcIjooeXQ9e30seXRbMV09XCJNLjUsLjA1IEwuNSwuMiBNLjUsLjMgTC41LC40NSBMLjUsLjU1IE0uNSwuNyBMLjUsLjk1XCIseXQpLFwi4pSLXCI6KGd0PXt9LGd0WzNdPVwiTS41LC4wNSBMLjUsLjIgTS41LC4zIEwuNSwuNDUgTC41LC41NSBNLjUsLjcgTC41LC45NVwiLGd0KSxcIuKVrVwiOihtdD17fSxtdFsxXT1cIkMuNSwxLC41LC41LDEsLjVcIixtdCksXCLila5cIjooYnQ9e30sYnRbMV09XCJDLjUsMSwuNSwuNSwwLC41XCIsYnQpLFwi4pWvXCI6KFN0PXt9LFN0WzFdPVwiQy41LDAsLjUsLjUsMCwuNVwiLFN0KSxcIuKVsFwiOihDdD17fSxDdFsxXT1cIkMuNSwwLC41LC41LDEsLjVcIixDdCl9LHQucG93ZXJsaW5lRGVmaW5pdGlvbnM9e1wi7oKwXCI6e2Q6XCJNMCwwIEwxLC41IEwwLDFcIix0eXBlOjB9LFwi7oKxXCI6e2Q6XCJNMCwwIEwxLC41IEwwLDFcIix0eXBlOjEsaG9yaXpvbnRhbFBhZGRpbmc6LjV9LFwi7oKyXCI6e2Q6XCJNMSwwIEwwLC41IEwxLDFcIix0eXBlOjB9LFwi7oKzXCI6e2Q6XCJNMSwwIEwwLC41IEwxLDFcIix0eXBlOjEsaG9yaXpvbnRhbFBhZGRpbmc6LjV9fSx0LnRyeURyYXdDdXN0b21DaGFyPWZ1bmN0aW9uKGUscixpLG4sbyxzKXt2YXIgYT10LmJsb2NrRWxlbWVudERlZmluaXRpb25zW3JdO2lmKGEpcmV0dXJuIGZ1bmN0aW9uKGUsdCxyLGksbixvKXtmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIGE9dFtzXSxjPW4vOCxsPW8vODtlLmZpbGxSZWN0KHIrYS54KmMsaSthLnkqbCxhLncqYyxhLmgqbCl9fShlLGEsaSxuLG8scyksITA7dmFyIGM9eHRbcl07aWYoYylyZXR1cm4gZnVuY3Rpb24oZSx0LHIsaSxuLG8pe3ZhciBzLGE9UnQuZ2V0KHQpO2F8fChhPW5ldyBNYXAsUnQuc2V0KHQsYSkpO3ZhciBjPWUuZmlsbFN0eWxlO2lmKFwic3RyaW5nXCIhPXR5cGVvZiBjKXRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBmaWxsU3R5bGUgdHlwZSBcIicrYysnXCInKTt2YXIgbD1hLmdldChjKTtpZighbCl7dmFyIGg9dFswXS5sZW5ndGgsdT10Lmxlbmd0aCxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7Zi53aWR0aD1oLGYuaGVpZ2h0PXU7dmFyIF89KDAsRXQudGhyb3dJZkZhbHN5KShmLmdldENvbnRleHQoXCIyZFwiKSksZD1uZXcgSW1hZ2VEYXRhKGgsdSkscD12b2lkIDAsdj12b2lkIDAseT12b2lkIDAsZz12b2lkIDA7aWYoYy5zdGFydHNXaXRoKFwiI1wiKSlwPXBhcnNlSW50KGMuc2xpY2UoMSwzKSwxNiksdj1wYXJzZUludChjLnNsaWNlKDMsNSksMTYpLHk9cGFyc2VJbnQoYy5zbGljZSg1LDcpLDE2KSxnPWMubGVuZ3RoPjcmJnBhcnNlSW50KGMuc2xpY2UoNyw5KSwxNil8fDE7ZWxzZXtpZighYy5zdGFydHNXaXRoKFwicmdiYVwiKSl0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgZmlsbFN0eWxlIGNvbG9yIGZvcm1hdCBcIicrYysnXCIgd2hlbiBkcmF3aW5nIHBhdHRlcm4gZ2x5cGgnKTtwPShzPXd0KGMuc3Vic3RyaW5nKDUsYy5sZW5ndGgtMSkuc3BsaXQoXCIsXCIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlRmxvYXQoZSl9KSksNCkpWzBdLHY9c1sxXSx5PXNbMl0sZz1zWzNdfWZvcih2YXIgbT0wO208dTttKyspZm9yKHZhciBiPTA7YjxoO2IrKylkLmRhdGFbNCoobSpoK2IpXT1wLGQuZGF0YVs0KihtKmgrYikrMV09dixkLmRhdGFbNCoobSpoK2IpKzJdPXksZC5kYXRhWzQqKG0qaCtiKSszXT10W21dW2JdKigyNTUqZyk7Xy5wdXRJbWFnZURhdGEoZCwwLDApLGw9KDAsRXQudGhyb3dJZkZhbHN5KShlLmNyZWF0ZVBhdHRlcm4oZixudWxsKSksYS5zZXQoYyxsKX1lLmZpbGxTdHlsZT1sLGUuZmlsbFJlY3QocixpLG4sbyl9KGUsYyxpLG4sbyxzKSwhMDt2YXIgbD10LmJveERyYXdpbmdEZWZpbml0aW9uc1tyXTtpZihsKXJldHVybiBmdW5jdGlvbihlLHQscixpLG4sbyl7dmFyIHMsYSxjLGw7ZS5zdHJva2VTdHlsZT1lLmZpbGxTdHlsZTt0cnl7Zm9yKHZhciBoPUx0KE9iamVjdC5lbnRyaWVzKHQpKSx1PWgubmV4dCgpOyF1LmRvbmU7dT1oLm5leHQoKSl7dmFyIGY9d3QodS52YWx1ZSwyKSxfPWZbMF0sZD1mWzFdO2UuYmVnaW5QYXRoKCksZS5saW5lV2lkdGg9d2luZG93LmRldmljZVBpeGVsUmF0aW8qTnVtYmVyLnBhcnNlSW50KF8pO3ZhciBwPXZvaWQgMDtwPVwiZnVuY3Rpb25cIj09dHlwZW9mIGQ/ZCguMTUsLjE1L28qbik6ZDt0cnl7Zm9yKHZhciB2PShjPXZvaWQgMCxMdChwLnNwbGl0KFwiIFwiKSkpLHk9di5uZXh0KCk7IXkuZG9uZTt5PXYubmV4dCgpKXt2YXIgZz15LnZhbHVlLG09Z1swXSxiPU10W21dO2lmKGIpe3ZhciBTPWcuc3Vic3RyaW5nKDEpLnNwbGl0KFwiLFwiKTtTWzBdJiZTWzFdJiZiKGUsQXQoUyxuLG8scixpKSl9ZWxzZSBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZmluZCBkcmF3aW5nIGluc3RydWN0aW9ucyBmb3IgXCInK20rJ1wiJyl9fWNhdGNoKGUpe2M9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e3kmJiF5LmRvbmUmJihsPXYucmV0dXJuKSYmbC5jYWxsKHYpfWZpbmFsbHl7aWYoYyl0aHJvdyBjLmVycm9yfX1lLnN0cm9rZSgpLGUuY2xvc2VQYXRoKCl9fWNhdGNoKGUpe3M9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e3UmJiF1LmRvbmUmJihhPWgucmV0dXJuKSYmYS5jYWxsKGgpfWZpbmFsbHl7aWYocyl0aHJvdyBzLmVycm9yfX19KGUsbCxpLG4sbyxzKSwhMDt2YXIgaD10LnBvd2VybGluZURlZmluaXRpb25zW3JdO3JldHVybiEhaCYmKGZ1bmN0aW9uKGUsdCxyLGksbixvKXt2YXIgcyxhO2UuYmVnaW5QYXRoKCksZS5saW5lV2lkdGg9d2luZG93LmRldmljZVBpeGVsUmF0aW87dHJ5e2Zvcih2YXIgYz1MdCh0LmQuc3BsaXQoXCIgXCIpKSxsPWMubmV4dCgpOyFsLmRvbmU7bD1jLm5leHQoKSl7dmFyIGg9bC52YWx1ZSx1PWhbMF0sZj1NdFt1XTtpZihmKXt2YXIgXz1oLnN1YnN0cmluZygxKS5zcGxpdChcIixcIik7X1swXSYmX1sxXSYmZihlLEF0KF8sbixvLHIsaSx0Lmhvcml6b250YWxQYWRkaW5nKSl9ZWxzZSBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZmluZCBkcmF3aW5nIGluc3RydWN0aW9ucyBmb3IgXCInK3UrJ1wiJyl9fWNhdGNoKGUpe3M9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2wmJiFsLmRvbmUmJihhPWMucmV0dXJuKSYmYS5jYWxsKGMpfWZpbmFsbHl7aWYocyl0aHJvdyBzLmVycm9yfX0xPT09dC50eXBlPyhlLnN0cm9rZVN0eWxlPWUuZmlsbFN0eWxlLGUuc3Ryb2tlKCkpOmUuZmlsbCgpLGUuY2xvc2VQYXRoKCl9KGUsaCxpLG4sbyxzKSwhMCl9O3ZhciBSdD1uZXcgTWFwO2Z1bmN0aW9uIGt0KGUsdCxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9MCksTWF0aC5tYXgoTWF0aC5taW4oZSx0KSxyKX12YXIgTXQ9e0M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5iZXppZXJDdXJ2ZVRvKHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdKX0sTDpmdW5jdGlvbihlLHQpe3JldHVybiBlLmxpbmVUbyh0WzBdLHRbMV0pfSxNOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubW92ZVRvKHRbMF0sdFsxXSl9fTtmdW5jdGlvbiBBdChlLHQscixpLG4sbyl7dm9pZCAwPT09byYmKG89MCk7dmFyIHM9ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUZsb2F0KGUpfHxwYXJzZUludChlKX0pKTtpZihzLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcihcIlRvbyBmZXcgYXJndW1lbnRzIGZvciBpbnN0cnVjdGlvblwiKTtmb3IodmFyIGE9MDthPHMubGVuZ3RoO2ErPTIpc1thXSo9dC0yKm8qd2luZG93LmRldmljZVBpeGVsUmF0aW8sMCE9PXNbYV0mJihzW2FdPWt0KE1hdGgucm91bmQoc1thXSsuNSktLjUsdCwwKSksc1thXSs9aStvKndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO2Zvcih2YXIgYz0xO2M8cy5sZW5ndGg7Yys9MilzW2NdKj1yLDAhPT1zW2NdJiYoc1tjXT1rdChNYXRoLnJvdW5kKHNbY10rLjUpLS41LHIsMCkpLHNbY10rPW47cmV0dXJuIHN9fSwzNzAwOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5HcmlkQ2FjaGU9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuY2FjaGU9W119cmV0dXJuIGUucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8ZTtyKyspe3RoaXMuY2FjaGUubGVuZ3RoPD1yJiZ0aGlzLmNhY2hlLnB1c2goW10pO2Zvcih2YXIgaT10aGlzLmNhY2hlW3JdLmxlbmd0aDtpPHQ7aSsrKXRoaXMuY2FjaGVbcl0ucHVzaCh2b2lkIDApO3RoaXMuY2FjaGVbcl0ubGVuZ3RoPXR9dGhpcy5jYWNoZS5sZW5ndGg9ZX0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMuY2FjaGUubGVuZ3RoO2UrKylmb3IodmFyIHQ9MDt0PHRoaXMuY2FjaGVbZV0ubGVuZ3RoO3QrKyl0aGlzLmNhY2hlW2VdW3RdPXZvaWQgMH0sZX0oKTt0LkdyaWRDYWNoZT1yfSw1MDk4OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pLG89dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQscixpKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTppO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixpKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShuPWVbYV0pJiYocz0obzwzP24ocyk6bz4zP24odCxyLHMpOm4odCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30scz10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dChyLGksZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxpbmtSZW5kZXJMYXllcj12b2lkIDA7dmFyIGE9cigxNTQ2KSxjPXIoODgwMyksbD1yKDIwNDApLGg9cigyNTg1KSx1PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxyLGksbixvLHMsYSxjLGwpe3ZhciBoPWUuY2FsbCh0aGlzLHQsXCJsaW5rXCIsciwhMCxpLG4sYSxjLGwpfHx0aGlzO3JldHVybiBvLm9uU2hvd0xpbmtVbmRlcmxpbmUoKGZ1bmN0aW9uKGUpe3JldHVybiBoLl9vblNob3dMaW5rVW5kZXJsaW5lKGUpfSkpLG8ub25IaWRlTGlua1VuZGVybGluZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGguX29uSGlkZUxpbmtVbmRlcmxpbmUoZSl9KSkscy5vblNob3dMaW5rVW5kZXJsaW5lKChmdW5jdGlvbihlKXtyZXR1cm4gaC5fb25TaG93TGlua1VuZGVybGluZShlKX0pKSxzLm9uSGlkZUxpbmtVbmRlcmxpbmUoKGZ1bmN0aW9uKGUpe3JldHVybiBoLl9vbkhpZGVMaW5rVW5kZXJsaW5lKGUpfSkpLGh9cmV0dXJuIG4odCxlKSx0LnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24odCl7ZS5wcm90b3R5cGUucmVzaXplLmNhbGwodGhpcyx0KSx0aGlzLl9zdGF0ZT12b2lkIDB9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5fY2xlYXJDdXJyZW50TGluaygpfSx0LnByb3RvdHlwZS5fY2xlYXJDdXJyZW50TGluaz1mdW5jdGlvbigpe2lmKHRoaXMuX3N0YXRlKXt0aGlzLl9jbGVhckNlbGxzKHRoaXMuX3N0YXRlLngxLHRoaXMuX3N0YXRlLnkxLHRoaXMuX3N0YXRlLmNvbHMtdGhpcy5fc3RhdGUueDEsMSk7dmFyIGU9dGhpcy5fc3RhdGUueTItdGhpcy5fc3RhdGUueTEtMTtlPjAmJnRoaXMuX2NsZWFyQ2VsbHMoMCx0aGlzLl9zdGF0ZS55MSsxLHRoaXMuX3N0YXRlLmNvbHMsZSksdGhpcy5fY2xlYXJDZWxscygwLHRoaXMuX3N0YXRlLnkyLHRoaXMuX3N0YXRlLngyLDEpLHRoaXMuX3N0YXRlPXZvaWQgMH19LHQucHJvdG90eXBlLl9vblNob3dMaW5rVW5kZXJsaW5lPWZ1bmN0aW9uKGUpe2lmKGUuZmc9PT1jLklOVkVSVEVEX0RFRkFVTFRfQ09MT1I/dGhpcy5fY3R4LmZpbGxTdHlsZT10aGlzLl9jb2xvcnMuYmFja2dyb3VuZC5jc3M6ZS5mZyYmKDAsbC5pczI1NkNvbG9yKShlLmZnKT90aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5hbnNpW2UuZmddLmNzczp0aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5mb3JlZ3JvdW5kLmNzcyxlLnkxPT09ZS55Mil0aGlzLl9maWxsQm90dG9tTGluZUF0Q2VsbHMoZS54MSxlLnkxLGUueDItZS54MSk7ZWxzZXt0aGlzLl9maWxsQm90dG9tTGluZUF0Q2VsbHMoZS54MSxlLnkxLGUuY29scy1lLngxKTtmb3IodmFyIHQ9ZS55MSsxO3Q8ZS55Mjt0KyspdGhpcy5fZmlsbEJvdHRvbUxpbmVBdENlbGxzKDAsdCxlLmNvbHMpO3RoaXMuX2ZpbGxCb3R0b21MaW5lQXRDZWxscygwLGUueTIsZS54Mil9dGhpcy5fc3RhdGU9ZX0sdC5wcm90b3R5cGUuX29uSGlkZUxpbmtVbmRlcmxpbmU9ZnVuY3Rpb24oZSl7dGhpcy5fY2xlYXJDdXJyZW50TGluaygpfSxvKFtzKDYsaC5JQnVmZmVyU2VydmljZSkscyg3LGguSU9wdGlvbnNTZXJ2aWNlKSxzKDgsaC5JRGVjb3JhdGlvblNlcnZpY2UpXSx0KX0oYS5CYXNlUmVuZGVyTGF5ZXIpO3QuTGlua1JlbmRlckxheWVyPXV9LDM1MjU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG49dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pfSxpKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1pKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KTooci5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IHIpfSksbz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBuLG89YXJndW1lbnRzLmxlbmd0aCxzPW88Mz90Om51bGw9PT1pP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpOmk7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxyLGkpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKG49ZVthXSkmJihzPShvPDM/bihzKTpvPjM/bih0LHIscyk6bih0LHIpKXx8cyk7cmV0dXJuIG8+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixzKSxzfSxzPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocixpKXt0KHIsaSxlKX19LGE9dGhpcyYmdGhpcy5fX3ZhbHVlc3x8ZnVuY3Rpb24oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Iscj10JiZlW3RdLGk9MDtpZihyKXJldHVybiByLmNhbGwoZSk7aWYoZSYmXCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUmJmk+PWUubGVuZ3RoJiYoZT12b2lkIDApLHt2YWx1ZTplJiZlW2krK10sZG9uZTohZX19fTt0aHJvdyBuZXcgVHlwZUVycm9yKHQ/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5SZW5kZXJlcj12b2lkIDA7dmFyIGM9cig5NTk2KSxsPXIoNDE0OSksaD1yKDI1MTIpLHU9cig1MDk4KSxmPXIoODQ0KSxfPXIoNDcyNSksZD1yKDI1ODUpLHA9cigxNDIwKSx2PXIoODQ2MCkseT0xLGc9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIsaSxuLG8scyxhLGYpe3ZhciBfPWUuY2FsbCh0aGlzKXx8dGhpcztfLl9jb2xvcnM9dCxfLl9zY3JlZW5FbGVtZW50PXIsXy5fYnVmZmVyU2VydmljZT1zLF8uX2NoYXJTaXplU2VydmljZT1hLF8uX29wdGlvbnNTZXJ2aWNlPWYsXy5faWQ9eSsrLF8uX29uUmVxdWVzdFJlZHJhdz1uZXcgdi5FdmVudEVtaXR0ZXI7dmFyIGQ9Xy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5hbGxvd1RyYW5zcGFyZW5jeTtyZXR1cm4gXy5fcmVuZGVyTGF5ZXJzPVtvLmNyZWF0ZUluc3RhbmNlKGMuVGV4dFJlbmRlckxheWVyLF8uX3NjcmVlbkVsZW1lbnQsMCxfLl9jb2xvcnMsZCxfLl9pZCksby5jcmVhdGVJbnN0YW5jZShsLlNlbGVjdGlvblJlbmRlckxheWVyLF8uX3NjcmVlbkVsZW1lbnQsMSxfLl9jb2xvcnMsXy5faWQpLG8uY3JlYXRlSW5zdGFuY2UodS5MaW5rUmVuZGVyTGF5ZXIsXy5fc2NyZWVuRWxlbWVudCwyLF8uX2NvbG9ycyxfLl9pZCxpLG4pLG8uY3JlYXRlSW5zdGFuY2UoaC5DdXJzb3JSZW5kZXJMYXllcixfLl9zY3JlZW5FbGVtZW50LDMsXy5fY29sb3JzLF8uX2lkLF8uX29uUmVxdWVzdFJlZHJhdyldLF8uZGltZW5zaW9ucz17c2NhbGVkQ2hhcldpZHRoOjAsc2NhbGVkQ2hhckhlaWdodDowLHNjYWxlZENlbGxXaWR0aDowLHNjYWxlZENlbGxIZWlnaHQ6MCxzY2FsZWRDaGFyTGVmdDowLHNjYWxlZENoYXJUb3A6MCxzY2FsZWRDYW52YXNXaWR0aDowLHNjYWxlZENhbnZhc0hlaWdodDowLGNhbnZhc1dpZHRoOjAsY2FudmFzSGVpZ2h0OjAsYWN0dWFsQ2VsbFdpZHRoOjAsYWN0dWFsQ2VsbEhlaWdodDowfSxfLl9kZXZpY2VQaXhlbFJhdGlvPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLF8uX3VwZGF0ZURpbWVuc2lvbnMoKSxfLm9uT3B0aW9uc0NoYW5nZWQoKSxffXJldHVybiBuKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25SZXF1ZXN0UmVkcmF3XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblJlcXVlc3RSZWRyYXcuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3ZhciB0LHI7dHJ5e2Zvcih2YXIgaT1hKHRoaXMuX3JlbmRlckxheWVycyksbj1pLm5leHQoKTshbi5kb25lO249aS5uZXh0KCkpbi52YWx1ZS5kaXNwb3NlKCl9Y2F0Y2goZSl7dD17ZXJyb3I6ZX19ZmluYWxseXt0cnl7biYmIW4uZG9uZSYmKHI9aS5yZXR1cm4pJiZyLmNhbGwoaSl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fWUucHJvdG90eXBlLmRpc3Bvc2UuY2FsbCh0aGlzKSwoMCxwLnJlbW92ZVRlcm1pbmFsRnJvbUNhY2hlKSh0aGlzLl9pZCl9LHQucHJvdG90eXBlLm9uRGV2aWNlUGl4ZWxSYXRpb0NoYW5nZT1mdW5jdGlvbigpe3RoaXMuX2RldmljZVBpeGVsUmF0aW8hPT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyYmKHRoaXMuX2RldmljZVBpeGVsUmF0aW89d2luZG93LmRldmljZVBpeGVsUmF0aW8sdGhpcy5vblJlc2l6ZSh0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKSl9LHQucHJvdG90eXBlLnNldENvbG9ycz1mdW5jdGlvbihlKXt2YXIgdCxyO3RoaXMuX2NvbG9ycz1lO3RyeXtmb3IodmFyIGk9YSh0aGlzLl9yZW5kZXJMYXllcnMpLG49aS5uZXh0KCk7IW4uZG9uZTtuPWkubmV4dCgpKXt2YXIgbz1uLnZhbHVlO28uc2V0Q29sb3JzKHRoaXMuX2NvbG9ycyksby5yZXNldCgpfX1jYXRjaChlKXt0PXtlcnJvcjplfX1maW5hbGx5e3RyeXtuJiYhbi5kb25lJiYocj1pLnJldHVybikmJnIuY2FsbChpKX1maW5hbGx5e2lmKHQpdGhyb3cgdC5lcnJvcn19fSx0LnByb3RvdHlwZS5vblJlc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciByLGk7dGhpcy5fdXBkYXRlRGltZW5zaW9ucygpO3RyeXtmb3IodmFyIG49YSh0aGlzLl9yZW5kZXJMYXllcnMpLG89bi5uZXh0KCk7IW8uZG9uZTtvPW4ubmV4dCgpKW8udmFsdWUucmVzaXplKHRoaXMuZGltZW5zaW9ucyl9Y2F0Y2goZSl7cj17ZXJyb3I6ZX19ZmluYWxseXt0cnl7byYmIW8uZG9uZSYmKGk9bi5yZXR1cm4pJiZpLmNhbGwobil9ZmluYWxseXtpZihyKXRocm93IHIuZXJyb3J9fXRoaXMuX3NjcmVlbkVsZW1lbnQuc3R5bGUud2lkdGg9dGhpcy5kaW1lbnNpb25zLmNhbnZhc1dpZHRoK1wicHhcIix0aGlzLl9zY3JlZW5FbGVtZW50LnN0eWxlLmhlaWdodD10aGlzLmRpbWVuc2lvbnMuY2FudmFzSGVpZ2h0K1wicHhcIn0sdC5wcm90b3R5cGUub25DaGFyU2l6ZUNoYW5nZWQ9ZnVuY3Rpb24oKXt0aGlzLm9uUmVzaXplKHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MpfSx0LnByb3RvdHlwZS5vbkJsdXI9ZnVuY3Rpb24oKXt0aGlzLl9ydW5PcGVyYXRpb24oKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9uQmx1cigpfSkpfSx0LnByb3RvdHlwZS5vbkZvY3VzPWZ1bmN0aW9uKCl7dGhpcy5fcnVuT3BlcmF0aW9uKChmdW5jdGlvbihlKXtyZXR1cm4gZS5vbkZvY3VzKCl9KSl9LHQucHJvdG90eXBlLm9uU2VsZWN0aW9uQ2hhbmdlZD1mdW5jdGlvbihlLHQscil7dm9pZCAwPT09ciYmKHI9ITEpLHRoaXMuX3J1bk9wZXJhdGlvbigoZnVuY3Rpb24oaSl7cmV0dXJuIGkub25TZWxlY3Rpb25DaGFuZ2VkKGUsdCxyKX0pKSx0aGlzLl9jb2xvcnMuc2VsZWN0aW9uRm9yZWdyb3VuZCYmdGhpcy5fb25SZXF1ZXN0UmVkcmF3LmZpcmUoe3N0YXJ0OjAsZW5kOnRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xfSl9LHQucHJvdG90eXBlLm9uQ3Vyc29yTW92ZT1mdW5jdGlvbigpe3RoaXMuX3J1bk9wZXJhdGlvbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUub25DdXJzb3JNb3ZlKCl9KSl9LHQucHJvdG90eXBlLm9uT3B0aW9uc0NoYW5nZWQ9ZnVuY3Rpb24oKXt0aGlzLl9ydW5PcGVyYXRpb24oKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9uT3B0aW9uc0NoYW5nZWQoKX0pKX0sdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9ydW5PcGVyYXRpb24oKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc2V0KCl9KSl9LHQucHJvdG90eXBlLl9ydW5PcGVyYXRpb249ZnVuY3Rpb24oZSl7dmFyIHQscjt0cnl7Zm9yKHZhciBpPWEodGhpcy5fcmVuZGVyTGF5ZXJzKSxuPWkubmV4dCgpOyFuLmRvbmU7bj1pLm5leHQoKSllKG4udmFsdWUpfWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e24mJiFuLmRvbmUmJihyPWkucmV0dXJuKSYmci5jYWxsKGkpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX19LHQucHJvdG90eXBlLnJlbmRlclJvd3M9ZnVuY3Rpb24oZSx0KXt2YXIgcixpO3RyeXtmb3IodmFyIG49YSh0aGlzLl9yZW5kZXJMYXllcnMpLG89bi5uZXh0KCk7IW8uZG9uZTtvPW4ubmV4dCgpKW8udmFsdWUub25HcmlkQ2hhbmdlZChlLHQpfWNhdGNoKGUpe3I9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihpPW4ucmV0dXJuKSYmaS5jYWxsKG4pfWZpbmFsbHl7aWYocil0aHJvdyByLmVycm9yfX19LHQucHJvdG90eXBlLmNsZWFyVGV4dHVyZUF0bGFzPWZ1bmN0aW9uKCl7dmFyIGUsdDt0cnl7Zm9yKHZhciByPWEodGhpcy5fcmVuZGVyTGF5ZXJzKSxpPXIubmV4dCgpOyFpLmRvbmU7aT1yLm5leHQoKSlpLnZhbHVlLmNsZWFyVGV4dHVyZUF0bGFzKCl9Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7aSYmIWkuZG9uZSYmKHQ9ci5yZXR1cm4pJiZ0LmNhbGwocil9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fX0sdC5wcm90b3R5cGUuX3VwZGF0ZURpbWVuc2lvbnM9ZnVuY3Rpb24oKXt0aGlzLl9jaGFyU2l6ZVNlcnZpY2UuaGFzVmFsaWRTaXplJiYodGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJXaWR0aD1NYXRoLmZsb29yKHRoaXMuX2NoYXJTaXplU2VydmljZS53aWR0aCp3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyksdGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJIZWlnaHQ9TWF0aC5jZWlsKHRoaXMuX2NoYXJTaXplU2VydmljZS5oZWlnaHQqd2luZG93LmRldmljZVBpeGVsUmF0aW8pLHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDZWxsSGVpZ2h0PU1hdGguZmxvb3IodGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJIZWlnaHQqdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5saW5lSGVpZ2h0KSx0aGlzLmRpbWVuc2lvbnMuc2NhbGVkQ2hhclRvcD0xPT09dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5saW5lSGVpZ2h0PzA6TWF0aC5yb3VuZCgodGhpcy5kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQtdGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJIZWlnaHQpLzIpLHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDZWxsV2lkdGg9dGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJXaWR0aCtNYXRoLnJvdW5kKHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubGV0dGVyU3BhY2luZyksdGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJMZWZ0PU1hdGguZmxvb3IodGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5sZXR0ZXJTcGFjaW5nLzIpLHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDYW52YXNIZWlnaHQ9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKnRoaXMuZGltZW5zaW9ucy5zY2FsZWRDZWxsSGVpZ2h0LHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDYW52YXNXaWR0aD10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMqdGhpcy5kaW1lbnNpb25zLnNjYWxlZENlbGxXaWR0aCx0aGlzLmRpbWVuc2lvbnMuY2FudmFzSGVpZ2h0PU1hdGgucm91bmQodGhpcy5kaW1lbnNpb25zLnNjYWxlZENhbnZhc0hlaWdodC93aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyksdGhpcy5kaW1lbnNpb25zLmNhbnZhc1dpZHRoPU1hdGgucm91bmQodGhpcy5kaW1lbnNpb25zLnNjYWxlZENhbnZhc1dpZHRoL3dpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKSx0aGlzLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbEhlaWdodD10aGlzLmRpbWVuc2lvbnMuY2FudmFzSGVpZ2h0L3RoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyx0aGlzLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoPXRoaXMuZGltZW5zaW9ucy5jYW52YXNXaWR0aC90aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpfSxvKFtzKDQsZC5JSW5zdGFudGlhdGlvblNlcnZpY2UpLHMoNSxkLklCdWZmZXJTZXJ2aWNlKSxzKDYsXy5JQ2hhclNpemVTZXJ2aWNlKSxzKDcsZC5JT3B0aW9uc1NlcnZpY2UpXSx0KX0oZi5EaXNwb3NhYmxlKTt0LlJlbmRlcmVyPWd9LDE3NTI6KGUsdCk9PntmdW5jdGlvbiByKGUpe3JldHVybiA1NzUwODw9ZSYmZTw9NTc1NTh9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5leGNsdWRlRnJvbUNvbnRyYXN0UmF0aW9EZW1hbmRzPXQuaXNQb3dlcmxpbmVHbHlwaD10LnRocm93SWZGYWxzeT12b2lkIDAsdC50aHJvd0lmRmFsc3k9ZnVuY3Rpb24oZSl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwidmFsdWUgbXVzdCBub3QgYmUgZmFsc3lcIik7cmV0dXJuIGV9LHQuaXNQb3dlcmxpbmVHbHlwaD1yLHQuZXhjbHVkZUZyb21Db250cmFzdFJhdGlvRGVtYW5kcz1mdW5jdGlvbihlKXtyZXR1cm4gcihlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuIDk0NzI8PWUmJmU8PTk2MzF9KGUpfX0sNDE0OTpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KSxvPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LHM9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TZWxlY3Rpb25SZW5kZXJMYXllcj12b2lkIDA7dmFyIGE9cigxNTQ2KSxjPXIoMjU4NSksbD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQscixpLG4sbyxzLGEpe3ZhciBjPWUuY2FsbCh0aGlzLHQsXCJzZWxlY3Rpb25cIixyLCEwLGksbixvLHMsYSl8fHRoaXM7cmV0dXJuIGMuX2NsZWFyU3RhdGUoKSxjfXJldHVybiBuKHQsZSksdC5wcm90b3R5cGUuX2NsZWFyU3RhdGU9ZnVuY3Rpb24oKXt0aGlzLl9zdGF0ZT17c3RhcnQ6dm9pZCAwLGVuZDp2b2lkIDAsY29sdW1uU2VsZWN0TW9kZTp2b2lkIDAseWRpc3A6dm9pZCAwfX0sdC5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKHQpe2UucHJvdG90eXBlLnJlc2l6ZS5jYWxsKHRoaXMsdCksdGhpcy5fY2xlYXJTdGF0ZSgpfSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX3N0YXRlLnN0YXJ0JiZ0aGlzLl9zdGF0ZS5lbmQmJih0aGlzLl9jbGVhclN0YXRlKCksdGhpcy5fY2xlYXJBbGwoKSl9LHQucHJvdG90eXBlLm9uU2VsZWN0aW9uQ2hhbmdlZD1mdW5jdGlvbih0LHIsaSl7aWYoZS5wcm90b3R5cGUub25TZWxlY3Rpb25DaGFuZ2VkLmNhbGwodGhpcyx0LHIsaSksdGhpcy5fZGlkU3RhdGVDaGFuZ2UodCxyLGksdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3ApKWlmKHRoaXMuX2NsZWFyQWxsKCksdCYmcil7dmFyIG49dFsxXS10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcCxvPXJbMV0tdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3Ascz1NYXRoLm1heChuLDApLGE9TWF0aC5taW4obyx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSk7aWYocz49dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzfHxhPDApdGhpcy5fc3RhdGUueWRpc3A9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3A7ZWxzZXtpZih0aGlzLl9jdHguZmlsbFN0eWxlPXRoaXMuX2NvbG9ycy5zZWxlY3Rpb25UcmFuc3BhcmVudC5jc3MsaSl7dmFyIGM9dFswXSxsPXJbMF0tYyxoPWEtcysxO3RoaXMuX2ZpbGxDZWxscyhjLHMsbCxoKX1lbHNle2M9bj09PXM/dFswXTowO3ZhciB1PXM9PT1vP3JbMF06dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzO3RoaXMuX2ZpbGxDZWxscyhjLHMsdS1jLDEpO3ZhciBmPU1hdGgubWF4KGEtcy0xLDApO2lmKHRoaXMuX2ZpbGxDZWxscygwLHMrMSx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsZikscyE9PWEpe3ZhciBfPW89PT1hP3JbMF06dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzO3RoaXMuX2ZpbGxDZWxscygwLGEsXywxKX19dGhpcy5fc3RhdGUuc3RhcnQ9W3RbMF0sdFsxXV0sdGhpcy5fc3RhdGUuZW5kPVtyWzBdLHJbMV1dLHRoaXMuX3N0YXRlLmNvbHVtblNlbGVjdE1vZGU9aSx0aGlzLl9zdGF0ZS55ZGlzcD10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcH19ZWxzZSB0aGlzLl9jbGVhclN0YXRlKCl9LHQucHJvdG90eXBlLl9kaWRTdGF0ZUNoYW5nZT1mdW5jdGlvbihlLHQscixpKXtyZXR1cm4hdGhpcy5fYXJlQ29vcmRpbmF0ZXNFcXVhbChlLHRoaXMuX3N0YXRlLnN0YXJ0KXx8IXRoaXMuX2FyZUNvb3JkaW5hdGVzRXF1YWwodCx0aGlzLl9zdGF0ZS5lbmQpfHxyIT09dGhpcy5fc3RhdGUuY29sdW1uU2VsZWN0TW9kZXx8aSE9PXRoaXMuX3N0YXRlLnlkaXNwfSx0LnByb3RvdHlwZS5fYXJlQ29vcmRpbmF0ZXNFcXVhbD1mdW5jdGlvbihlLHQpe3JldHVybiEoIWV8fCF0KSYmZVswXT09PXRbMF0mJmVbMV09PT10WzFdfSxvKFtzKDQsYy5JQnVmZmVyU2VydmljZSkscyg1LGMuSU9wdGlvbnNTZXJ2aWNlKSxzKDYsYy5JRGVjb3JhdGlvblNlcnZpY2UpXSx0KX0oYS5CYXNlUmVuZGVyTGF5ZXIpO3QuU2VsZWN0aW9uUmVuZGVyTGF5ZXI9bH0sOTU5NjpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KSxvPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LHM9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX0sYT10aGlzJiZ0aGlzLl9fdmFsdWVzfHxmdW5jdGlvbihlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixyPXQmJmVbdF0saT0wO2lmKHIpcmV0dXJuIHIuY2FsbChlKTtpZihlJiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSYmaT49ZS5sZW5ndGgmJihlPXZvaWQgMCkse3ZhbHVlOmUmJmVbaSsrXSxkb25lOiFlfX19O3Rocm93IG5ldyBUeXBlRXJyb3IodD9cIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCI6XCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlRleHRSZW5kZXJMYXllcj12b2lkIDA7dmFyIGM9cigzNzAwKSxsPXIoMTU0NiksaD1yKDM3MzQpLHU9cig2NDMpLGY9cig1MTEpLF89cigyNTg1KSxkPXIoNDcyNSkscD1yKDQyNjkpLHY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIsaSxuLG8scyxhLGwsaCl7dmFyIHU9ZS5jYWxsKHRoaXMsdCxcInRleHRcIixyLG4saSxvLHMsYSxoKXx8dGhpcztyZXR1cm4gdS5fY2hhcmFjdGVySm9pbmVyU2VydmljZT1sLHUuX2NoYXJhY3RlcldpZHRoPTAsdS5fY2hhcmFjdGVyRm9udD1cIlwiLHUuX2NoYXJhY3Rlck92ZXJsYXBDYWNoZT17fSx1Ll93b3JrQ2VsbD1uZXcgZi5DZWxsRGF0YSx1Ll9zdGF0ZT1uZXcgYy5HcmlkQ2FjaGUsdX1yZXR1cm4gbih0LGUpLHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXtlLnByb3RvdHlwZS5yZXNpemUuY2FsbCh0aGlzLHQpO3ZhciByPXRoaXMuX2dldEZvbnQoITEsITEpO3RoaXMuX2NoYXJhY3RlcldpZHRoPT09dC5zY2FsZWRDaGFyV2lkdGgmJnRoaXMuX2NoYXJhY3RlckZvbnQ9PT1yfHwodGhpcy5fY2hhcmFjdGVyV2lkdGg9dC5zY2FsZWRDaGFyV2lkdGgsdGhpcy5fY2hhcmFjdGVyRm9udD1yLHRoaXMuX2NoYXJhY3Rlck92ZXJsYXBDYWNoZT17fSksdGhpcy5fc3RhdGUuY2xlYXIoKSx0aGlzLl9zdGF0ZS5yZXNpemUodGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyl9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5fc3RhdGUuY2xlYXIoKSx0aGlzLl9jbGVhckFsbCgpfSx0LnByb3RvdHlwZS5fZm9yRWFjaENlbGw9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgaT1lO2k8PXQ7aSsrKWZvcih2YXIgbj1pK3RoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwLG89dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIubGluZXMuZ2V0KG4pLHM9dGhpcy5fY2hhcmFjdGVySm9pbmVyU2VydmljZS5nZXRKb2luZWRDaGFyYWN0ZXJzKG4pLGE9MDthPHRoaXMuX2J1ZmZlclNlcnZpY2UuY29sczthKyspe28ubG9hZENlbGwoYSx0aGlzLl93b3JrQ2VsbCk7dmFyIGM9dGhpcy5fd29ya0NlbGwsbD0hMSxoPWE7aWYoMCE9PWMuZ2V0V2lkdGgoKSl7aWYocy5sZW5ndGg+MCYmYT09PXNbMF1bMF0pe2w9ITA7dmFyIGY9cy5zaGlmdCgpO2M9bmV3IHAuSm9pbmVkQ2VsbERhdGEodGhpcy5fd29ya0NlbGwsby50cmFuc2xhdGVUb1N0cmluZyghMCxmWzBdLGZbMV0pLGZbMV0tZlswXSksaD1mWzFdLTF9IWwmJnRoaXMuX2lzT3ZlcmxhcHBpbmcoYykmJmg8by5sZW5ndGgtMSYmby5nZXRDb2RlUG9pbnQoaCsxKT09PXUuTlVMTF9DRUxMX0NPREUmJihjLmNvbnRlbnQmPS0xMjU4MjkxMyxjLmNvbnRlbnR8PTI8PDIyKSxyKGMsYSxpKSxhPWh9fX0sdC5wcm90b3R5cGUuX2RyYXdCYWNrZ3JvdW5kPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcyxpPXRoaXMuX2N0eCxuPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxvPTAscz0wLGM9bnVsbDtpLnNhdmUoKSx0aGlzLl9mb3JFYWNoQ2VsbChlLHQsKGZ1bmN0aW9uKGUsdCxsKXt2YXIgdSxmLF89bnVsbDtlLmlzSW52ZXJzZSgpP189ZS5pc0ZnRGVmYXVsdCgpP3IuX2NvbG9ycy5mb3JlZ3JvdW5kLmNzczplLmlzRmdSR0IoKT9cInJnYihcIitoLkF0dHJpYnV0ZURhdGEudG9Db2xvclJHQihlLmdldEZnQ29sb3IoKSkuam9pbihcIixcIikrXCIpXCI6ci5fY29sb3JzLmFuc2lbZS5nZXRGZ0NvbG9yKCldLmNzczplLmlzQmdSR0IoKT9fPVwicmdiKFwiK2guQXR0cmlidXRlRGF0YS50b0NvbG9yUkdCKGUuZ2V0QmdDb2xvcigpKS5qb2luKFwiLFwiKStcIilcIjplLmlzQmdQYWxldHRlKCkmJihfPXIuX2NvbG9ycy5hbnNpW2UuZ2V0QmdDb2xvcigpXS5jc3MpO3ZhciBkPSExO3RyeXtmb3IodmFyIHA9YShyLl9kZWNvcmF0aW9uU2VydmljZS5nZXREZWNvcmF0aW9uc0F0Q2VsbCh0LHIuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwK2wpKSx2PXAubmV4dCgpOyF2LmRvbmU7dj1wLm5leHQoKSl7dmFyIHk9di52YWx1ZTtcInRvcFwiIT09eS5vcHRpb25zLmxheWVyJiZkfHwoeS5iYWNrZ3JvdW5kQ29sb3JSR0ImJihfPXkuYmFja2dyb3VuZENvbG9yUkdCLmNzcyksZD1cInRvcFwiPT09eS5vcHRpb25zLmxheWVyKX19Y2F0Y2goZSl7dT17ZXJyb3I6ZX19ZmluYWxseXt0cnl7diYmIXYuZG9uZSYmKGY9cC5yZXR1cm4pJiZmLmNhbGwocCl9ZmluYWxseXtpZih1KXRocm93IHUuZXJyb3J9fW51bGw9PT1jJiYobz10LHM9bCksbCE9PXM/KGkuZmlsbFN0eWxlPWN8fFwiXCIsci5fZmlsbENlbGxzKG8scyxuLW8sMSksbz10LHM9bCk6YyE9PV8mJihpLmZpbGxTdHlsZT1jfHxcIlwiLHIuX2ZpbGxDZWxscyhvLHMsdC1vLDEpLG89dCxzPWwpLGM9X30pKSxudWxsIT09YyYmKGkuZmlsbFN0eWxlPWMsdGhpcy5fZmlsbENlbGxzKG8scyxuLW8sMSkpLGkucmVzdG9yZSgpfSx0LnByb3RvdHlwZS5fZHJhd0ZvcmVncm91bmQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO3RoaXMuX2ZvckVhY2hDZWxsKGUsdCwoZnVuY3Rpb24oZSx0LGkpe2lmKCFlLmlzSW52aXNpYmxlKCkmJihyLl9kcmF3Q2hhcnMoZSx0LGkpLGUuaXNVbmRlcmxpbmUoKXx8ZS5pc1N0cmlrZXRocm91Z2goKSkpe2lmKHIuX2N0eC5zYXZlKCksZS5pc0ludmVyc2UoKSlpZihlLmlzQmdEZWZhdWx0KCkpci5fY3R4LmZpbGxTdHlsZT1yLl9jb2xvcnMuYmFja2dyb3VuZC5jc3M7ZWxzZSBpZihlLmlzQmdSR0IoKSlyLl9jdHguZmlsbFN0eWxlPVwicmdiKFwiK2guQXR0cmlidXRlRGF0YS50b0NvbG9yUkdCKGUuZ2V0QmdDb2xvcigpKS5qb2luKFwiLFwiKStcIilcIjtlbHNle3ZhciBuPWUuZ2V0QmdDb2xvcigpO3IuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZHJhd0JvbGRUZXh0SW5CcmlnaHRDb2xvcnMmJmUuaXNCb2xkKCkmJm48OCYmKG4rPTgpLHIuX2N0eC5maWxsU3R5bGU9ci5fY29sb3JzLmFuc2lbbl0uY3NzfWVsc2UgaWYoZS5pc0ZnRGVmYXVsdCgpKXIuX2N0eC5maWxsU3R5bGU9ci5fY29sb3JzLmZvcmVncm91bmQuY3NzO2Vsc2UgaWYoZS5pc0ZnUkdCKCkpci5fY3R4LmZpbGxTdHlsZT1cInJnYihcIitoLkF0dHJpYnV0ZURhdGEudG9Db2xvclJHQihlLmdldEZnQ29sb3IoKSkuam9pbihcIixcIikrXCIpXCI7ZWxzZXt2YXIgbz1lLmdldEZnQ29sb3IoKTtyLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzJiZlLmlzQm9sZCgpJiZvPDgmJihvKz04KSxyLl9jdHguZmlsbFN0eWxlPXIuX2NvbG9ycy5hbnNpW29dLmNzc31lLmlzU3RyaWtldGhyb3VnaCgpJiZyLl9maWxsTWlkZGxlTGluZUF0Q2VsbHModCxpLGUuZ2V0V2lkdGgoKSksZS5pc1VuZGVybGluZSgpJiZyLl9maWxsQm90dG9tTGluZUF0Q2VsbHModCxpLGUuZ2V0V2lkdGgoKSksci5fY3R4LnJlc3RvcmUoKX19KSl9LHQucHJvdG90eXBlLm9uR3JpZENoYW5nZWQ9ZnVuY3Rpb24oZSx0KXswIT09dGhpcy5fc3RhdGUuY2FjaGUubGVuZ3RoJiYodGhpcy5fY2hhckF0bGFzJiZ0aGlzLl9jaGFyQXRsYXMuYmVnaW5GcmFtZSgpLHRoaXMuX2NsZWFyQ2VsbHMoMCxlLHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0LWUrMSksdGhpcy5fZHJhd0JhY2tncm91bmQoZSx0KSx0aGlzLl9kcmF3Rm9yZWdyb3VuZChlLHQpKX0sdC5wcm90b3R5cGUub25PcHRpb25zQ2hhbmdlZD1mdW5jdGlvbigpe3RoaXMuX3NldFRyYW5zcGFyZW5jeSh0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmFsbG93VHJhbnNwYXJlbmN5KX0sdC5wcm90b3R5cGUuX2lzT3ZlcmxhcHBpbmc9ZnVuY3Rpb24oZSl7aWYoMSE9PWUuZ2V0V2lkdGgoKSlyZXR1cm4hMTtpZihlLmdldENvZGUoKTwyNTYpcmV0dXJuITE7dmFyIHQ9ZS5nZXRDaGFycygpO2lmKHRoaXMuX2NoYXJhY3Rlck92ZXJsYXBDYWNoZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gdGhpcy5fY2hhcmFjdGVyT3ZlcmxhcENhY2hlW3RdO3RoaXMuX2N0eC5zYXZlKCksdGhpcy5fY3R4LmZvbnQ9dGhpcy5fY2hhcmFjdGVyRm9udDt2YXIgcj1NYXRoLmZsb29yKHRoaXMuX2N0eC5tZWFzdXJlVGV4dCh0KS53aWR0aCk+dGhpcy5fY2hhcmFjdGVyV2lkdGg7cmV0dXJuIHRoaXMuX2N0eC5yZXN0b3JlKCksdGhpcy5fY2hhcmFjdGVyT3ZlcmxhcENhY2hlW3RdPXIscn0sbyhbcyg1LF8uSUJ1ZmZlclNlcnZpY2UpLHMoNixfLklPcHRpb25zU2VydmljZSkscyg3LGQuSUNoYXJhY3RlckpvaW5lclNlcnZpY2UpLHMoOCxfLklEZWNvcmF0aW9uU2VydmljZSldLHQpfShsLkJhc2VSZW5kZXJMYXllcik7dC5UZXh0UmVuZGVyTGF5ZXI9dn0sOTYxNjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQmFzZUNoYXJBdGxhcz12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5fZGlkV2FybVVwPSExfXJldHVybiBlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7fSxlLnByb3RvdHlwZS53YXJtVXA9ZnVuY3Rpb24oKXt0aGlzLl9kaWRXYXJtVXB8fCh0aGlzLl9kb1dhcm1VcCgpLHRoaXMuX2RpZFdhcm1VcD0hMCl9LGUucHJvdG90eXBlLl9kb1dhcm1VcD1mdW5jdGlvbigpe30sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLmJlZ2luRnJhbWU9ZnVuY3Rpb24oKXt9LGV9KCk7dC5CYXNlQ2hhckF0bGFzPXJ9LDE0MjA6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQucmVtb3ZlVGVybWluYWxGcm9tQ2FjaGU9dC5hY3F1aXJlQ2hhckF0bGFzPXZvaWQgMDt2YXIgaT1yKDIwNDApLG49cigxOTA2KSxvPVtdO3QuYWNxdWlyZUNoYXJBdGxhcz1mdW5jdGlvbihlLHQscixzLGEpe2Zvcih2YXIgYz0oMCxpLmdlbmVyYXRlQ29uZmlnKShzLGEsZSxyKSxsPTA7bDxvLmxlbmd0aDtsKyspe3ZhciBoPSh1PW9bbF0pLm93bmVkQnkuaW5kZXhPZih0KTtpZihoPj0wKXtpZigoMCxpLmNvbmZpZ0VxdWFscykodS5jb25maWcsYykpcmV0dXJuIHUuYXRsYXM7MT09PXUub3duZWRCeS5sZW5ndGg/KHUuYXRsYXMuZGlzcG9zZSgpLG8uc3BsaWNlKGwsMSkpOnUub3duZWRCeS5zcGxpY2UoaCwxKTticmVha319Zm9yKGw9MDtsPG8ubGVuZ3RoO2wrKyl7dmFyIHU9b1tsXTtpZigoMCxpLmNvbmZpZ0VxdWFscykodS5jb25maWcsYykpcmV0dXJuIHUub3duZWRCeS5wdXNoKHQpLHUuYXRsYXN9dmFyIGY9e2F0bGFzOm5ldyBuLkR5bmFtaWNDaGFyQXRsYXMoZG9jdW1lbnQsYyksY29uZmlnOmMsb3duZWRCeTpbdF19O3JldHVybiBvLnB1c2goZiksZi5hdGxhc30sdC5yZW1vdmVUZXJtaW5hbEZyb21DYWNoZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PG8ubGVuZ3RoO3QrKyl7dmFyIHI9b1t0XS5vd25lZEJ5LmluZGV4T2YoZSk7aWYoLTEhPT1yKXsxPT09b1t0XS5vd25lZEJ5Lmxlbmd0aD8ob1t0XS5hdGxhcy5kaXNwb3NlKCksby5zcGxpY2UodCwxKSk6b1t0XS5vd25lZEJ5LnNwbGljZShyLDEpO2JyZWFrfX19fSwyMDQwOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmlzMjU2Q29sb3I9dC5jb25maWdFcXVhbHM9dC5nZW5lcmF0ZUNvbmZpZz12b2lkIDA7dmFyIGk9cig2NDMpO3QuZ2VuZXJhdGVDb25maWc9ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG49e2ZvcmVncm91bmQ6aS5mb3JlZ3JvdW5kLGJhY2tncm91bmQ6aS5iYWNrZ3JvdW5kLGN1cnNvcjp2b2lkIDAsY3Vyc29yQWNjZW50OnZvaWQgMCxzZWxlY3Rpb246dm9pZCAwLGFuc2k6aS5hbnNpLnNsaWNlKCl9O3JldHVybntkZXZpY2VQaXhlbFJhdGlvOndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLHNjYWxlZENoYXJXaWR0aDplLHNjYWxlZENoYXJIZWlnaHQ6dCxmb250RmFtaWx5OnIuZm9udEZhbWlseSxmb250U2l6ZTpyLmZvbnRTaXplLGZvbnRXZWlnaHQ6ci5mb250V2VpZ2h0LGZvbnRXZWlnaHRCb2xkOnIuZm9udFdlaWdodEJvbGQsYWxsb3dUcmFuc3BhcmVuY3k6ci5hbGxvd1RyYW5zcGFyZW5jeSxjb2xvcnM6bn19LHQuY29uZmlnRXF1YWxzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjxlLmNvbG9ycy5hbnNpLmxlbmd0aDtyKyspaWYoZS5jb2xvcnMuYW5zaVtyXS5yZ2JhIT09dC5jb2xvcnMuYW5zaVtyXS5yZ2JhKXJldHVybiExO3JldHVybiBlLmRldmljZVBpeGVsUmF0aW89PT10LmRldmljZVBpeGVsUmF0aW8mJmUuZm9udEZhbWlseT09PXQuZm9udEZhbWlseSYmZS5mb250U2l6ZT09PXQuZm9udFNpemUmJmUuZm9udFdlaWdodD09PXQuZm9udFdlaWdodCYmZS5mb250V2VpZ2h0Qm9sZD09PXQuZm9udFdlaWdodEJvbGQmJmUuYWxsb3dUcmFuc3BhcmVuY3k9PT10LmFsbG93VHJhbnNwYXJlbmN5JiZlLnNjYWxlZENoYXJXaWR0aD09PXQuc2NhbGVkQ2hhcldpZHRoJiZlLnNjYWxlZENoYXJIZWlnaHQ9PT10LnNjYWxlZENoYXJIZWlnaHQmJmUuY29sb3JzLmZvcmVncm91bmQ9PT10LmNvbG9ycy5mb3JlZ3JvdW5kJiZlLmNvbG9ycy5iYWNrZ3JvdW5kPT09dC5jb2xvcnMuYmFja2dyb3VuZH0sdC5pczI1NkNvbG9yPWZ1bmN0aW9uKGUpe3JldHVybiBlPGkuREVGQVVMVF9DT0xPUn19LDg4MDM6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ0hBUl9BVExBU19DRUxMX1NQQUNJTkc9dC5URVhUX0JBU0VMSU5FPXQuRElNX09QQUNJVFk9dC5JTlZFUlRFRF9ERUZBVUxUX0NPTE9SPXZvaWQgMDt2YXIgaT1yKDYxMTQpO3QuSU5WRVJURURfREVGQVVMVF9DT0xPUj0yNTcsdC5ESU1fT1BBQ0lUWT0uNSx0LlRFWFRfQkFTRUxJTkU9aS5pc0ZpcmVmb3h8fGkuaXNMZWdhY3lFZGdlP1wiYm90dG9tXCI6XCJpZGVvZ3JhcGhpY1wiLHQuQ0hBUl9BVExBU19DRUxMX1NQQUNJTkc9MX0sMTkwNjpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk5vbmVDaGFyQXRsYXM9dC5EeW5hbWljQ2hhckF0bGFzPXQuZ2V0R2x5cGhDYWNoZUtleT12b2lkIDA7dmFyIG89cig4ODAzKSxzPXIoOTYxNiksYT1yKDU2ODApLGM9cig3MDAxKSxsPXIoNjExNCksaD1yKDE3NTIpLHU9cig4MDU1KSxmPTEwMjQsXz0xMDI0LGQ9e2NzczpcInJnYmEoMCwgMCwgMCwgMClcIixyZ2JhOjB9O2Z1bmN0aW9uIHAoZSl7cmV0dXJuIGUuY29kZTw8MjF8ZS5iZzw8MTJ8ZS5mZzw8M3woZS5ib2xkPzA6NCkrKGUuZGltPzA6MikrKGUuaXRhbGljPzA6MSl9dC5nZXRHbHlwaENhY2hlS2V5PXA7dmFyIHY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIpe3ZhciBpPWUuY2FsbCh0aGlzKXx8dGhpcztpLl9jb25maWc9cixpLl9kcmF3VG9DYWNoZUNvdW50PTAsaS5fZ2x5cGhzV2FpdGluZ09uQml0bWFwPVtdLGkuX2JpdG1hcENvbW1pdFRpbWVvdXQ9bnVsbCxpLl9iaXRtYXA9bnVsbCxpLl9jYWNoZUNhbnZhcz10LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIiksaS5fY2FjaGVDYW52YXMud2lkdGg9ZixpLl9jYWNoZUNhbnZhcy5oZWlnaHQ9XyxpLl9jYWNoZUN0eD0oMCxoLnRocm93SWZGYWxzeSkoaS5fY2FjaGVDYW52YXMuZ2V0Q29udGV4dChcIjJkXCIse2FscGhhOiEwfSkpO3ZhciBuPXQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtuLndpZHRoPWkuX2NvbmZpZy5zY2FsZWRDaGFyV2lkdGgsbi5oZWlnaHQ9aS5fY29uZmlnLnNjYWxlZENoYXJIZWlnaHQsaS5fdG1wQ3R4PSgwLGgudGhyb3dJZkZhbHN5KShuLmdldENvbnRleHQoXCIyZFwiLHthbHBoYTppLl9jb25maWcuYWxsb3dUcmFuc3BhcmVuY3l9KSksaS5fd2lkdGg9TWF0aC5mbG9vcihmL2kuX2NvbmZpZy5zY2FsZWRDaGFyV2lkdGgpLGkuX2hlaWdodD1NYXRoLmZsb29yKF8vaS5fY29uZmlnLnNjYWxlZENoYXJIZWlnaHQpO3ZhciBvPWkuX3dpZHRoKmkuX2hlaWdodDtyZXR1cm4gaS5fY2FjaGVNYXA9bmV3IGMuTFJVTWFwKG8pLGkuX2NhY2hlTWFwLnByZWFsbG9jKG8pLGl9cmV0dXJuIG4odCxlKSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX2JpdG1hcENvbW1pdFRpbWVvdXQmJih3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX2JpdG1hcENvbW1pdFRpbWVvdXQpLHRoaXMuX2JpdG1hcENvbW1pdFRpbWVvdXQ9bnVsbCl9LHQucHJvdG90eXBlLmJlZ2luRnJhbWU9ZnVuY3Rpb24oKXt0aGlzLl9kcmF3VG9DYWNoZUNvdW50PTB9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7aWYodGhpcy5fY2FjaGVNYXAuc2l6ZT4wKXt2YXIgZT10aGlzLl93aWR0aCp0aGlzLl9oZWlnaHQ7dGhpcy5fY2FjaGVNYXA9bmV3IGMuTFJVTWFwKGUpLHRoaXMuX2NhY2hlTWFwLnByZWFsbG9jKGUpfXRoaXMuX2NhY2hlQ3R4LmNsZWFyUmVjdCgwLDAsZixfKSx0aGlzLl90bXBDdHguY2xlYXJSZWN0KDAsMCx0aGlzLl9jb25maWcuc2NhbGVkQ2hhcldpZHRoLHRoaXMuX2NvbmZpZy5zY2FsZWRDaGFySGVpZ2h0KX0sdC5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihlLHQscixpKXtpZigzMj09PXQuY29kZSlyZXR1cm4hMDtpZighdGhpcy5fY2FuQ2FjaGUodCkpcmV0dXJuITE7dmFyIG49cCh0KSxvPXRoaXMuX2NhY2hlTWFwLmdldChuKTtpZihudWxsIT1vKXJldHVybiB0aGlzLl9kcmF3RnJvbUNhY2hlKGUsbyxyLGkpLCEwO2lmKHRoaXMuX2RyYXdUb0NhY2hlQ291bnQ8MTAwKXt2YXIgcztzPXRoaXMuX2NhY2hlTWFwLnNpemU8dGhpcy5fY2FjaGVNYXAuY2FwYWNpdHk/dGhpcy5fY2FjaGVNYXAuc2l6ZTp0aGlzLl9jYWNoZU1hcC5wZWVrKCkuaW5kZXg7dmFyIGE9dGhpcy5fZHJhd1RvQ2FjaGUodCxzKTtyZXR1cm4gdGhpcy5fY2FjaGVNYXAuc2V0KG4sYSksdGhpcy5fZHJhd0Zyb21DYWNoZShlLGEscixpKSwhMH1yZXR1cm4hMX0sdC5wcm90b3R5cGUuX2NhbkNhY2hlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmNvZGU8MjU2fSx0LnByb3RvdHlwZS5fdG9Db29yZGluYXRlWD1mdW5jdGlvbihlKXtyZXR1cm4gZSV0aGlzLl93aWR0aCp0aGlzLl9jb25maWcuc2NhbGVkQ2hhcldpZHRofSx0LnByb3RvdHlwZS5fdG9Db29yZGluYXRlWT1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5mbG9vcihlL3RoaXMuX3dpZHRoKSp0aGlzLl9jb25maWcuc2NhbGVkQ2hhckhlaWdodH0sdC5wcm90b3R5cGUuX2RyYXdGcm9tQ2FjaGU9ZnVuY3Rpb24oZSx0LHIsaSl7aWYoIXQuaXNFbXB0eSl7dmFyIG49dGhpcy5fdG9Db29yZGluYXRlWCh0LmluZGV4KSxvPXRoaXMuX3RvQ29vcmRpbmF0ZVkodC5pbmRleCk7ZS5kcmF3SW1hZ2UodC5pbkJpdG1hcD90aGlzLl9iaXRtYXA6dGhpcy5fY2FjaGVDYW52YXMsbixvLHRoaXMuX2NvbmZpZy5zY2FsZWRDaGFyV2lkdGgsdGhpcy5fY29uZmlnLnNjYWxlZENoYXJIZWlnaHQscixpLHRoaXMuX2NvbmZpZy5zY2FsZWRDaGFyV2lkdGgsdGhpcy5fY29uZmlnLnNjYWxlZENoYXJIZWlnaHQpfX0sdC5wcm90b3R5cGUuX2dldENvbG9yRnJvbUFuc2lJbmRleD1mdW5jdGlvbihlKXtyZXR1cm4gZTx0aGlzLl9jb25maWcuY29sb3JzLmFuc2kubGVuZ3RoP3RoaXMuX2NvbmZpZy5jb2xvcnMuYW5zaVtlXTphLkRFRkFVTFRfQU5TSV9DT0xPUlNbZV19LHQucHJvdG90eXBlLl9nZXRCYWNrZ3JvdW5kQ29sb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2NvbmZpZy5hbGxvd1RyYW5zcGFyZW5jeT9kOmUuYmc9PT1vLklOVkVSVEVEX0RFRkFVTFRfQ09MT1I/dGhpcy5fY29uZmlnLmNvbG9ycy5mb3JlZ3JvdW5kOmUuYmc8MjU2P3RoaXMuX2dldENvbG9yRnJvbUFuc2lJbmRleChlLmJnKTp0aGlzLl9jb25maWcuY29sb3JzLmJhY2tncm91bmR9LHQucHJvdG90eXBlLl9nZXRGb3JlZ3JvdW5kQ29sb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZmc9PT1vLklOVkVSVEVEX0RFRkFVTFRfQ09MT1I/dS5jb2xvci5vcGFxdWUodGhpcy5fY29uZmlnLmNvbG9ycy5iYWNrZ3JvdW5kKTplLmZnPDI1Nj90aGlzLl9nZXRDb2xvckZyb21BbnNpSW5kZXgoZS5mZyk6dGhpcy5fY29uZmlnLmNvbG9ycy5mb3JlZ3JvdW5kfSx0LnByb3RvdHlwZS5fZHJhd1RvQ2FjaGU9ZnVuY3Rpb24oZSx0KXt0aGlzLl9kcmF3VG9DYWNoZUNvdW50KyssdGhpcy5fdG1wQ3R4LnNhdmUoKTt2YXIgcj10aGlzLl9nZXRCYWNrZ3JvdW5kQ29sb3IoZSk7dGhpcy5fdG1wQ3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj1cImNvcHlcIix0aGlzLl90bXBDdHguZmlsbFN0eWxlPXIuY3NzLHRoaXMuX3RtcEN0eC5maWxsUmVjdCgwLDAsdGhpcy5fY29uZmlnLnNjYWxlZENoYXJXaWR0aCx0aGlzLl9jb25maWcuc2NhbGVkQ2hhckhlaWdodCksdGhpcy5fdG1wQ3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj1cInNvdXJjZS1vdmVyXCI7dmFyIGk9ZS5ib2xkP3RoaXMuX2NvbmZpZy5mb250V2VpZ2h0Qm9sZDp0aGlzLl9jb25maWcuZm9udFdlaWdodCxuPWUuaXRhbGljP1wiaXRhbGljXCI6XCJcIjt0aGlzLl90bXBDdHguZm9udD1uK1wiIFwiK2krXCIgXCIrdGhpcy5fY29uZmlnLmZvbnRTaXplKnRoaXMuX2NvbmZpZy5kZXZpY2VQaXhlbFJhdGlvK1wicHggXCIrdGhpcy5fY29uZmlnLmZvbnRGYW1pbHksdGhpcy5fdG1wQ3R4LnRleHRCYXNlbGluZT1vLlRFWFRfQkFTRUxJTkUsdGhpcy5fdG1wQ3R4LmZpbGxTdHlsZT10aGlzLl9nZXRGb3JlZ3JvdW5kQ29sb3IoZSkuY3NzLGUuZGltJiYodGhpcy5fdG1wQ3R4Lmdsb2JhbEFscGhhPW8uRElNX09QQUNJVFkpLHRoaXMuX3RtcEN0eC5maWxsVGV4dChlLmNoYXJzLDAsdGhpcy5fY29uZmlnLnNjYWxlZENoYXJIZWlnaHQpO3ZhciBzPXRoaXMuX3RtcEN0eC5nZXRJbWFnZURhdGEoMCwwLHRoaXMuX2NvbmZpZy5zY2FsZWRDaGFyV2lkdGgsdGhpcy5fY29uZmlnLnNjYWxlZENoYXJIZWlnaHQpLGE9ITE7aWYodGhpcy5fY29uZmlnLmFsbG93VHJhbnNwYXJlbmN5fHwoYT1nKHMscikpLGEmJlwiX1wiPT09ZS5jaGFycyYmIXRoaXMuX2NvbmZpZy5hbGxvd1RyYW5zcGFyZW5jeSlmb3IodmFyIGM9MTtjPD01JiYodGhpcy5fdG1wQ3R4LmZpbGxUZXh0KGUuY2hhcnMsMCx0aGlzLl9jb25maWcuc2NhbGVkQ2hhckhlaWdodC1jKSxhPWcocz10aGlzLl90bXBDdHguZ2V0SW1hZ2VEYXRhKDAsMCx0aGlzLl9jb25maWcuc2NhbGVkQ2hhcldpZHRoLHRoaXMuX2NvbmZpZy5zY2FsZWRDaGFySGVpZ2h0KSxyKSk7YysrKTt0aGlzLl90bXBDdHgucmVzdG9yZSgpO3ZhciBsPXRoaXMuX3RvQ29vcmRpbmF0ZVgodCksaD10aGlzLl90b0Nvb3JkaW5hdGVZKHQpO3RoaXMuX2NhY2hlQ3R4LnB1dEltYWdlRGF0YShzLGwsaCk7dmFyIHU9e2luZGV4OnQsaXNFbXB0eTphLGluQml0bWFwOiExfTtyZXR1cm4gdGhpcy5fYWRkR2x5cGhUb0JpdG1hcCh1KSx1fSx0LnByb3RvdHlwZS5fYWRkR2x5cGhUb0JpdG1hcD1mdW5jdGlvbihlKXt2YXIgdD10aGlzOyEoXCJjcmVhdGVJbWFnZUJpdG1hcFwiaW4gd2luZG93KXx8bC5pc0ZpcmVmb3h8fGwuaXNTYWZhcml8fCh0aGlzLl9nbHlwaHNXYWl0aW5nT25CaXRtYXAucHVzaChlKSxudWxsPT09dGhpcy5fYml0bWFwQ29tbWl0VGltZW91dCYmKHRoaXMuX2JpdG1hcENvbW1pdFRpbWVvdXQ9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX2dlbmVyYXRlQml0bWFwKCl9KSwxMDApKSl9LHQucHJvdG90eXBlLl9nZW5lcmF0ZUJpdG1hcD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLl9nbHlwaHNXYWl0aW5nT25CaXRtYXA7dGhpcy5fZ2x5cGhzV2FpdGluZ09uQml0bWFwPVtdLHdpbmRvdy5jcmVhdGVJbWFnZUJpdG1hcCh0aGlzLl9jYWNoZUNhbnZhcykudGhlbigoZnVuY3Rpb24ocil7ZS5fYml0bWFwPXI7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspdFtpXS5pbkJpdG1hcD0hMH0pKSx0aGlzLl9iaXRtYXBDb21taXRUaW1lb3V0PW51bGx9LHR9KHMuQmFzZUNoYXJBdGxhcyk7dC5EeW5hbWljQ2hhckF0bGFzPXY7dmFyIHk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIpe3JldHVybiBlLmNhbGwodGhpcyl8fHRoaXN9cmV0dXJuIG4odCxlKSx0LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGUsdCxyLGkpe3JldHVybiExfSx0fShzLkJhc2VDaGFyQXRsYXMpO2Z1bmN0aW9uIGcoZSx0KXtmb3IodmFyIHI9ITAsaT10LnJnYmE+Pj4yNCxuPXQucmdiYT4+PjE2JjI1NSxvPXQucmdiYT4+PjgmMjU1LHM9MDtzPGUuZGF0YS5sZW5ndGg7cys9NCllLmRhdGFbc109PT1pJiZlLmRhdGFbcysxXT09PW4mJmUuZGF0YVtzKzJdPT09bz9lLmRhdGFbcyszXT0wOnI9ITE7cmV0dXJuIHJ9dC5Ob25lQ2hhckF0bGFzPXl9LDcwMDE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxSVU1hcD12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuY2FwYWNpdHk9ZSx0aGlzLl9tYXA9e30sdGhpcy5faGVhZD1udWxsLHRoaXMuX3RhaWw9bnVsbCx0aGlzLl9ub2RlUG9vbD1bXSx0aGlzLnNpemU9MH1yZXR1cm4gZS5wcm90b3R5cGUuX3VubGlua05vZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wcmV2LHI9ZS5uZXh0O2U9PT10aGlzLl9oZWFkJiYodGhpcy5faGVhZD1yKSxlPT09dGhpcy5fdGFpbCYmKHRoaXMuX3RhaWw9dCksbnVsbCE9PXQmJih0Lm5leHQ9ciksbnVsbCE9PXImJihyLnByZXY9dCl9LGUucHJvdG90eXBlLl9hcHBlbmROb2RlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3RhaWw7bnVsbCE9PXQmJih0Lm5leHQ9ZSksZS5wcmV2PXQsZS5uZXh0PW51bGwsdGhpcy5fdGFpbD1lLG51bGw9PT10aGlzLl9oZWFkJiYodGhpcy5faGVhZD1lKX0sZS5wcm90b3R5cGUucHJlYWxsb2M9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX25vZGVQb29sLHI9MDtyPGU7cisrKXQucHVzaCh7cHJldjpudWxsLG5leHQ6bnVsbCxrZXk6bnVsbCx2YWx1ZTpudWxsfSl9LGUucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9tYXBbZV07cmV0dXJuIHZvaWQgMCE9PXQ/KHRoaXMuX3VubGlua05vZGUodCksdGhpcy5fYXBwZW5kTm9kZSh0KSx0LnZhbHVlKTpudWxsfSxlLnByb3RvdHlwZS5wZWVrVmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbWFwW2VdO3JldHVybiB2b2lkIDAhPT10P3QudmFsdWU6bnVsbH0sZS5wcm90b3R5cGUucGVlaz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2hlYWQ7cmV0dXJuIG51bGw9PT1lP251bGw6ZS52YWx1ZX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMCE9PXIpcj10aGlzLl9tYXBbZV0sdGhpcy5fdW5saW5rTm9kZShyKSxyLnZhbHVlPXQ7ZWxzZSBpZih0aGlzLnNpemU+PXRoaXMuY2FwYWNpdHkpcj10aGlzLl9oZWFkLHRoaXMuX3VubGlua05vZGUociksZGVsZXRlIHRoaXMuX21hcFtyLmtleV0sci5rZXk9ZSxyLnZhbHVlPXQsdGhpcy5fbWFwW2VdPXI7ZWxzZXt2YXIgaT10aGlzLl9ub2RlUG9vbDtpLmxlbmd0aD4wPygocj1pLnBvcCgpKS5rZXk9ZSxyLnZhbHVlPXQpOnI9e3ByZXY6bnVsbCxuZXh0Om51bGwsa2V5OmUsdmFsdWU6dH0sdGhpcy5fbWFwW2VdPXIsdGhpcy5zaXplKyt9dGhpcy5fYXBwZW5kTm9kZShyKX0sZX0oKTt0LkxSVU1hcD1yfSwxMjk2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pLG89dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQscixpKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTppO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixpKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShuPWVbYV0pJiYocz0obzwzP24ocyk6bz4zP24odCxyLHMpOm4odCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30scz10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dChyLGksZSl9fSxhPXRoaXMmJnRoaXMuX192YWx1ZXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLHI9dCYmZVt0XSxpPTA7aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBlJiZpPj1lLmxlbmd0aCYmKGU9dm9pZCAwKSx7dmFsdWU6ZSYmZVtpKytdLGRvbmU6IWV9fX07dGhyb3cgbmV3IFR5cGVFcnJvcih0P1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRG9tUmVuZGVyZXI9dm9pZCAwO3ZhciBjPXIoMzc4NyksbD1yKDg4MDMpLGg9cig4NDQpLHU9cig0NzI1KSxmPXIoMjU4NSksXz1yKDg0NjApLGQ9cig4MDU1KSxwPXIoOTYzMSksdj1cInh0ZXJtLWRvbS1yZW5kZXJlci1vd25lci1cIix5PVwieHRlcm0tZmctXCIsZz1cInh0ZXJtLWJnLVwiLG09XCJ4dGVybS1mb2N1c1wiLGI9MSxTPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxyLGksbixvLHMsYSxsLGgsdSl7dmFyIGY9ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBmLl9jb2xvcnM9dCxmLl9lbGVtZW50PXIsZi5fc2NyZWVuRWxlbWVudD1pLGYuX3ZpZXdwb3J0RWxlbWVudD1uLGYuX2xpbmtpZmllcj1vLGYuX2xpbmtpZmllcjI9cyxmLl9jaGFyU2l6ZVNlcnZpY2U9bCxmLl9vcHRpb25zU2VydmljZT1oLGYuX2J1ZmZlclNlcnZpY2U9dSxmLl90ZXJtaW5hbENsYXNzPWIrKyxmLl9yb3dFbGVtZW50cz1bXSxmLl9yb3dDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxmLl9yb3dDb250YWluZXIuY2xhc3NMaXN0LmFkZChcInh0ZXJtLXJvd3NcIiksZi5fcm93Q29udGFpbmVyLnN0eWxlLmxpbmVIZWlnaHQ9XCJub3JtYWxcIixmLl9yb3dDb250YWluZXIuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIiksZi5fcmVmcmVzaFJvd0VsZW1lbnRzKGYuX2J1ZmZlclNlcnZpY2UuY29scyxmLl9idWZmZXJTZXJ2aWNlLnJvd3MpLGYuX3NlbGVjdGlvbkNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGYuX3NlbGVjdGlvbkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwieHRlcm0tc2VsZWN0aW9uXCIpLGYuX3NlbGVjdGlvbkNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLFwidHJ1ZVwiKSxmLmRpbWVuc2lvbnM9e3NjYWxlZENoYXJXaWR0aDowLHNjYWxlZENoYXJIZWlnaHQ6MCxzY2FsZWRDZWxsV2lkdGg6MCxzY2FsZWRDZWxsSGVpZ2h0OjAsc2NhbGVkQ2hhckxlZnQ6MCxzY2FsZWRDaGFyVG9wOjAsc2NhbGVkQ2FudmFzV2lkdGg6MCxzY2FsZWRDYW52YXNIZWlnaHQ6MCxjYW52YXNXaWR0aDowLGNhbnZhc0hlaWdodDowLGFjdHVhbENlbGxXaWR0aDowLGFjdHVhbENlbGxIZWlnaHQ6MH0sZi5fdXBkYXRlRGltZW5zaW9ucygpLGYuX2luamVjdENzcygpLGYuX3Jvd0ZhY3Rvcnk9YS5jcmVhdGVJbnN0YW5jZShjLkRvbVJlbmRlcmVyUm93RmFjdG9yeSxkb2N1bWVudCxmLl9jb2xvcnMpLGYuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh2K2YuX3Rlcm1pbmFsQ2xhc3MpLGYuX3NjcmVlbkVsZW1lbnQuYXBwZW5kQ2hpbGQoZi5fcm93Q29udGFpbmVyKSxmLl9zY3JlZW5FbGVtZW50LmFwcGVuZENoaWxkKGYuX3NlbGVjdGlvbkNvbnRhaW5lciksZi5yZWdpc3RlcihmLl9saW5raWZpZXIub25TaG93TGlua1VuZGVybGluZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGYuX29uTGlua0hvdmVyKGUpfSkpKSxmLnJlZ2lzdGVyKGYuX2xpbmtpZmllci5vbkhpZGVMaW5rVW5kZXJsaW5lKChmdW5jdGlvbihlKXtyZXR1cm4gZi5fb25MaW5rTGVhdmUoZSl9KSkpLGYucmVnaXN0ZXIoZi5fbGlua2lmaWVyMi5vblNob3dMaW5rVW5kZXJsaW5lKChmdW5jdGlvbihlKXtyZXR1cm4gZi5fb25MaW5rSG92ZXIoZSl9KSkpLGYucmVnaXN0ZXIoZi5fbGlua2lmaWVyMi5vbkhpZGVMaW5rVW5kZXJsaW5lKChmdW5jdGlvbihlKXtyZXR1cm4gZi5fb25MaW5rTGVhdmUoZSl9KSkpLGZ9cmV0dXJuIG4odCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvblJlcXVlc3RSZWRyYXdcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBfLkV2ZW50RW1pdHRlcikuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh2K3RoaXMuX3Rlcm1pbmFsQ2xhc3MpLCgwLHAucmVtb3ZlRWxlbWVudEZyb21QYXJlbnQpKHRoaXMuX3Jvd0NvbnRhaW5lcix0aGlzLl9zZWxlY3Rpb25Db250YWluZXIsdGhpcy5fdGhlbWVTdHlsZUVsZW1lbnQsdGhpcy5fZGltZW5zaW9uc1N0eWxlRWxlbWVudCksZS5wcm90b3R5cGUuZGlzcG9zZS5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fdXBkYXRlRGltZW5zaW9ucz1mdW5jdGlvbigpe3ZhciBlLHQ7dGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJXaWR0aD10aGlzLl9jaGFyU2l6ZVNlcnZpY2Uud2lkdGgqd2luZG93LmRldmljZVBpeGVsUmF0aW8sdGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJIZWlnaHQ9TWF0aC5jZWlsKHRoaXMuX2NoYXJTaXplU2VydmljZS5oZWlnaHQqd2luZG93LmRldmljZVBpeGVsUmF0aW8pLHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDZWxsV2lkdGg9dGhpcy5kaW1lbnNpb25zLnNjYWxlZENoYXJXaWR0aCtNYXRoLnJvdW5kKHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubGV0dGVyU3BhY2luZyksdGhpcy5kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmRpbWVuc2lvbnMuc2NhbGVkQ2hhckhlaWdodCp0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmxpbmVIZWlnaHQpLHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDaGFyTGVmdD0wLHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDaGFyVG9wPTAsdGhpcy5kaW1lbnNpb25zLnNjYWxlZENhbnZhc1dpZHRoPXRoaXMuZGltZW5zaW9ucy5zY2FsZWRDZWxsV2lkdGgqdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDYW52YXNIZWlnaHQ9dGhpcy5kaW1lbnNpb25zLnNjYWxlZENlbGxIZWlnaHQqdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLHRoaXMuZGltZW5zaW9ucy5jYW52YXNXaWR0aD1NYXRoLnJvdW5kKHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDYW52YXNXaWR0aC93aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyksdGhpcy5kaW1lbnNpb25zLmNhbnZhc0hlaWdodD1NYXRoLnJvdW5kKHRoaXMuZGltZW5zaW9ucy5zY2FsZWRDYW52YXNIZWlnaHQvd2luZG93LmRldmljZVBpeGVsUmF0aW8pLHRoaXMuZGltZW5zaW9ucy5hY3R1YWxDZWxsV2lkdGg9dGhpcy5kaW1lbnNpb25zLmNhbnZhc1dpZHRoL3RoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbEhlaWdodD10aGlzLmRpbWVuc2lvbnMuY2FudmFzSGVpZ2h0L3RoaXMuX2J1ZmZlclNlcnZpY2Uucm93czt0cnl7Zm9yKHZhciByPWEodGhpcy5fcm93RWxlbWVudHMpLGk9ci5uZXh0KCk7IWkuZG9uZTtpPXIubmV4dCgpKXt2YXIgbj1pLnZhbHVlO24uc3R5bGUud2lkdGg9dGhpcy5kaW1lbnNpb25zLmNhbnZhc1dpZHRoK1wicHhcIixuLnN0eWxlLmhlaWdodD10aGlzLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbEhlaWdodCtcInB4XCIsbi5zdHlsZS5saW5lSGVpZ2h0PXRoaXMuZGltZW5zaW9ucy5hY3R1YWxDZWxsSGVpZ2h0K1wicHhcIixuLnN0eWxlLm92ZXJmbG93PVwiaGlkZGVuXCJ9fWNhdGNoKHQpe2U9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2kmJiFpLmRvbmUmJih0PXIucmV0dXJuKSYmdC5jYWxsKHIpfWZpbmFsbHl7aWYoZSl0aHJvdyBlLmVycm9yfX10aGlzLl9kaW1lbnNpb25zU3R5bGVFbGVtZW50fHwodGhpcy5fZGltZW5zaW9uc1N0eWxlRWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiksdGhpcy5fc2NyZWVuRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kaW1lbnNpb25zU3R5bGVFbGVtZW50KSk7dmFyIG89dGhpcy5fdGVybWluYWxTZWxlY3RvcitcIiAueHRlcm0tcm93cyBzcGFuIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBoZWlnaHQ6IDEwMCU7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHdpZHRoOiBcIit0aGlzLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoK1wicHh9XCI7dGhpcy5fZGltZW5zaW9uc1N0eWxlRWxlbWVudC50ZXh0Q29udGVudD1vLHRoaXMuX3NlbGVjdGlvbkNvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dGhpcy5fdmlld3BvcnRFbGVtZW50LnN0eWxlLmhlaWdodCx0aGlzLl9zY3JlZW5FbGVtZW50LnN0eWxlLndpZHRoPXRoaXMuZGltZW5zaW9ucy5jYW52YXNXaWR0aCtcInB4XCIsdGhpcy5fc2NyZWVuRWxlbWVudC5zdHlsZS5oZWlnaHQ9dGhpcy5kaW1lbnNpb25zLmNhbnZhc0hlaWdodCtcInB4XCJ9LHQucHJvdG90eXBlLnNldENvbG9ycz1mdW5jdGlvbihlKXt0aGlzLl9jb2xvcnM9ZSx0aGlzLl9pbmplY3RDc3MoKX0sdC5wcm90b3R5cGUuX2luamVjdENzcz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5fdGhlbWVTdHlsZUVsZW1lbnR8fCh0aGlzLl90aGVtZVN0eWxlRWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiksdGhpcy5fc2NyZWVuRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90aGVtZVN0eWxlRWxlbWVudCkpO3ZhciB0PXRoaXMuX3Rlcm1pbmFsU2VsZWN0b3IrXCIgLnh0ZXJtLXJvd3MgeyBjb2xvcjogXCIrdGhpcy5fY29sb3JzLmZvcmVncm91bmQuY3NzK1wiOyBmb250LWZhbWlseTogXCIrdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mb250RmFtaWx5K1wiOyBmb250LXNpemU6IFwiK3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udFNpemUrXCJweDt9XCI7dCs9dGhpcy5fdGVybWluYWxTZWxlY3RvcitcIiBzcGFuOm5vdCguXCIrYy5CT0xEX0NMQVNTK1wiKSB7IGZvbnQtd2VpZ2h0OiBcIit0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRXZWlnaHQrXCI7fVwiK3RoaXMuX3Rlcm1pbmFsU2VsZWN0b3IrXCIgc3Bhbi5cIitjLkJPTERfQ0xBU1MrXCIgeyBmb250LXdlaWdodDogXCIrdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5mb250V2VpZ2h0Qm9sZCtcIjt9XCIrdGhpcy5fdGVybWluYWxTZWxlY3RvcitcIiBzcGFuLlwiK2MuSVRBTElDX0NMQVNTK1wiIHsgZm9udC1zdHlsZTogaXRhbGljO31cIix0Kz1cIkBrZXlmcmFtZXMgYmxpbmtfYm94X3NoYWRvd19cIit0aGlzLl90ZXJtaW5hbENsYXNzK1wiIHsgNTAlIHsgIGJveC1zaGFkb3c6IG5vbmU7IH19XCIsdCs9XCJAa2V5ZnJhbWVzIGJsaW5rX2Jsb2NrX1wiK3RoaXMuX3Rlcm1pbmFsQ2xhc3MrXCIgeyAwJSB7ICBiYWNrZ3JvdW5kLWNvbG9yOiBcIit0aGlzLl9jb2xvcnMuY3Vyc29yLmNzcytcIjsgIGNvbG9yOiBcIit0aGlzLl9jb2xvcnMuY3Vyc29yQWNjZW50LmNzcytcIjsgfSA1MCUgeyAgYmFja2dyb3VuZC1jb2xvcjogXCIrdGhpcy5fY29sb3JzLmN1cnNvckFjY2VudC5jc3MrXCI7ICBjb2xvcjogXCIrdGhpcy5fY29sb3JzLmN1cnNvci5jc3MrXCI7IH19XCIsdCs9dGhpcy5fdGVybWluYWxTZWxlY3RvcitcIiAueHRlcm0tcm93czpub3QoLnh0ZXJtLWZvY3VzKSAuXCIrYy5DVVJTT1JfQ0xBU1MrXCIuXCIrYy5DVVJTT1JfU1RZTEVfQkxPQ0tfQ0xBU1MrXCIgeyBvdXRsaW5lOiAxcHggc29saWQgXCIrdGhpcy5fY29sb3JzLmN1cnNvci5jc3MrXCI7IG91dGxpbmUtb2Zmc2V0OiAtMXB4O31cIit0aGlzLl90ZXJtaW5hbFNlbGVjdG9yK1wiIC54dGVybS1yb3dzLnh0ZXJtLWZvY3VzIC5cIitjLkNVUlNPUl9DTEFTUytcIi5cIitjLkNVUlNPUl9CTElOS19DTEFTUytcIjpub3QoLlwiK2MuQ1VSU09SX1NUWUxFX0JMT0NLX0NMQVNTK1wiKSB7IGFuaW1hdGlvbjogYmxpbmtfYm94X3NoYWRvd19cIit0aGlzLl90ZXJtaW5hbENsYXNzK1wiIDFzIHN0ZXAtZW5kIGluZmluaXRlO31cIit0aGlzLl90ZXJtaW5hbFNlbGVjdG9yK1wiIC54dGVybS1yb3dzLnh0ZXJtLWZvY3VzIC5cIitjLkNVUlNPUl9DTEFTUytcIi5cIitjLkNVUlNPUl9CTElOS19DTEFTUytcIi5cIitjLkNVUlNPUl9TVFlMRV9CTE9DS19DTEFTUytcIiB7IGFuaW1hdGlvbjogYmxpbmtfYmxvY2tfXCIrdGhpcy5fdGVybWluYWxDbGFzcytcIiAxcyBzdGVwLWVuZCBpbmZpbml0ZTt9XCIrdGhpcy5fdGVybWluYWxTZWxlY3RvcitcIiAueHRlcm0tcm93cy54dGVybS1mb2N1cyAuXCIrYy5DVVJTT1JfQ0xBU1MrXCIuXCIrYy5DVVJTT1JfU1RZTEVfQkxPQ0tfQ0xBU1MrXCIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBcIit0aGlzLl9jb2xvcnMuY3Vyc29yLmNzcytcIjsgY29sb3I6IFwiK3RoaXMuX2NvbG9ycy5jdXJzb3JBY2NlbnQuY3NzK1wiO31cIit0aGlzLl90ZXJtaW5hbFNlbGVjdG9yK1wiIC54dGVybS1yb3dzIC5cIitjLkNVUlNPUl9DTEFTUytcIi5cIitjLkNVUlNPUl9TVFlMRV9CQVJfQ0xBU1MrXCIgeyBib3gtc2hhZG93OiBcIit0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1cnNvcldpZHRoK1wicHggMCAwIFwiK3RoaXMuX2NvbG9ycy5jdXJzb3IuY3NzK1wiIGluc2V0O31cIit0aGlzLl90ZXJtaW5hbFNlbGVjdG9yK1wiIC54dGVybS1yb3dzIC5cIitjLkNVUlNPUl9DTEFTUytcIi5cIitjLkNVUlNPUl9TVFlMRV9VTkRFUkxJTkVfQ0xBU1MrXCIgeyBib3gtc2hhZG93OiAwIC0xcHggMCBcIit0aGlzLl9jb2xvcnMuY3Vyc29yLmNzcytcIiBpbnNldDt9XCIsdCs9dGhpcy5fdGVybWluYWxTZWxlY3RvcitcIiAueHRlcm0tc2VsZWN0aW9uIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHotaW5kZXg6IDE7IHBvaW50ZXItZXZlbnRzOiBub25lO31cIit0aGlzLl90ZXJtaW5hbFNlbGVjdG9yK1wiIC54dGVybS1zZWxlY3Rpb24gZGl2IHsgcG9zaXRpb246IGFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiBcIit0aGlzLl9jb2xvcnMuc2VsZWN0aW9uT3BhcXVlLmNzcytcIjt9XCIsdGhpcy5fY29sb3JzLmFuc2kuZm9yRWFjaCgoZnVuY3Rpb24ocixpKXt0Kz1lLl90ZXJtaW5hbFNlbGVjdG9yK1wiIC5cIit5K2krXCIgeyBjb2xvcjogXCIrci5jc3MrXCI7IH1cIitlLl90ZXJtaW5hbFNlbGVjdG9yK1wiIC5cIitnK2krXCIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBcIityLmNzcytcIjsgfVwifSkpLHQrPXRoaXMuX3Rlcm1pbmFsU2VsZWN0b3IrXCIgLlwiK3krbC5JTlZFUlRFRF9ERUZBVUxUX0NPTE9SK1wiIHsgY29sb3I6IFwiK2QuY29sb3Iub3BhcXVlKHRoaXMuX2NvbG9ycy5iYWNrZ3JvdW5kKS5jc3MrXCI7IH1cIit0aGlzLl90ZXJtaW5hbFNlbGVjdG9yK1wiIC5cIitnK2wuSU5WRVJURURfREVGQVVMVF9DT0xPUitcIiB7IGJhY2tncm91bmQtY29sb3I6IFwiK3RoaXMuX2NvbG9ycy5mb3JlZ3JvdW5kLmNzcytcIjsgfVwiLHRoaXMuX3RoZW1lU3R5bGVFbGVtZW50LnRleHRDb250ZW50PXR9LHQucHJvdG90eXBlLm9uRGV2aWNlUGl4ZWxSYXRpb0NoYW5nZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZURpbWVuc2lvbnMoKX0sdC5wcm90b3R5cGUuX3JlZnJlc2hSb3dFbGVtZW50cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLl9yb3dFbGVtZW50cy5sZW5ndGg7cjw9dDtyKyspe3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7dGhpcy5fcm93Q29udGFpbmVyLmFwcGVuZENoaWxkKGkpLHRoaXMuX3Jvd0VsZW1lbnRzLnB1c2goaSl9Zm9yKDt0aGlzLl9yb3dFbGVtZW50cy5sZW5ndGg+dDspdGhpcy5fcm93Q29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMuX3Jvd0VsZW1lbnRzLnBvcCgpKX0sdC5wcm90b3R5cGUub25SZXNpemU9ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZWZyZXNoUm93RWxlbWVudHMoZSx0KSx0aGlzLl91cGRhdGVEaW1lbnNpb25zKCl9LHQucHJvdG90eXBlLm9uQ2hhclNpemVDaGFuZ2VkPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlRGltZW5zaW9ucygpfSx0LnByb3RvdHlwZS5vbkJsdXI9ZnVuY3Rpb24oKXt0aGlzLl9yb3dDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShtKX0sdC5wcm90b3R5cGUub25Gb2N1cz1mdW5jdGlvbigpe3RoaXMuX3Jvd0NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKG0pfSx0LnByb3RvdHlwZS5vblNlbGVjdGlvbkNoYW5nZWQ9ZnVuY3Rpb24oZSx0LHIpe2Zvcig7dGhpcy5fc2VsZWN0aW9uQ29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aDspdGhpcy5fc2VsZWN0aW9uQ29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMuX3NlbGVjdGlvbkNvbnRhaW5lci5jaGlsZHJlblswXSk7aWYodGhpcy5fcm93RmFjdG9yeS5vblNlbGVjdGlvbkNoYW5nZWQoZSx0LHIpLHRoaXMucmVuZGVyUm93cygwLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xKSxlJiZ0KXt2YXIgaT1lWzFdLXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwLG49dFsxXS10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcCxvPU1hdGgubWF4KGksMCkscz1NYXRoLm1pbihuLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xKTtpZighKG8+PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93c3x8czwwKSl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKHIpe3ZhciBjPWVbMF0+dFswXTthLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVNlbGVjdGlvbkVsZW1lbnQobyxjP3RbMF06ZVswXSxjP2VbMF06dFswXSxzLW8rMSkpfWVsc2V7dmFyIGw9aT09PW8/ZVswXTowLGg9bz09PW4/dFswXTp0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHM7YS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVTZWxlY3Rpb25FbGVtZW50KG8sbCxoKSk7dmFyIHU9cy1vLTE7aWYoYS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVTZWxlY3Rpb25FbGVtZW50KG8rMSwwLHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx1KSksbyE9PXMpe3ZhciBmPW49PT1zP3RbMF06dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzO2EuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlU2VsZWN0aW9uRWxlbWVudChzLDAsZikpfX10aGlzLl9zZWxlY3Rpb25Db250YWluZXIuYXBwZW5kQ2hpbGQoYSl9fX0sdC5wcm90b3R5cGUuX2NyZWF0ZVNlbGVjdGlvbkVsZW1lbnQ9ZnVuY3Rpb24oZSx0LHIsaSl7dm9pZCAwPT09aSYmKGk9MSk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtyZXR1cm4gbi5zdHlsZS5oZWlnaHQ9aSp0aGlzLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbEhlaWdodCtcInB4XCIsbi5zdHlsZS50b3A9ZSp0aGlzLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbEhlaWdodCtcInB4XCIsbi5zdHlsZS5sZWZ0PXQqdGhpcy5kaW1lbnNpb25zLmFjdHVhbENlbGxXaWR0aCtcInB4XCIsbi5zdHlsZS53aWR0aD10aGlzLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoKihyLXQpK1wicHhcIixufSx0LnByb3RvdHlwZS5vbkN1cnNvck1vdmU9ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLm9uT3B0aW9uc0NoYW5nZWQ9ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVEaW1lbnNpb25zKCksdGhpcy5faW5qZWN0Q3NzKCl9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dmFyIGUsdDt0cnl7Zm9yKHZhciByPWEodGhpcy5fcm93RWxlbWVudHMpLGk9ci5uZXh0KCk7IWkuZG9uZTtpPXIubmV4dCgpKWkudmFsdWUuaW5uZXJUZXh0PVwiXCJ9Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7aSYmIWkuZG9uZSYmKHQ9ci5yZXR1cm4pJiZ0LmNhbGwocil9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fX0sdC5wcm90b3R5cGUucmVuZGVyUm93cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55YmFzZSt0aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55LGk9TWF0aC5taW4odGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueCx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMSksbj10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmN1cnNvckJsaW5rLG89ZTtvPD10O28rKyl7dmFyIHM9dGhpcy5fcm93RWxlbWVudHNbb107cy5pbm5lclRleHQ9XCJcIjt2YXIgYT1vK3RoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnlkaXNwLGM9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIubGluZXMuZ2V0KGEpLGw9dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5jdXJzb3JTdHlsZTtzLmFwcGVuZENoaWxkKHRoaXMuX3Jvd0ZhY3RvcnkuY3JlYXRlUm93KGMsYSxhPT09cixsLGksbix0aGlzLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoLHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scykpfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwiX3Rlcm1pbmFsU2VsZWN0b3JcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuXCIuXCIrdit0aGlzLl90ZXJtaW5hbENsYXNzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLl9vbkxpbmtIb3Zlcj1mdW5jdGlvbihlKXt0aGlzLl9zZXRDZWxsVW5kZXJsaW5lKGUueDEsZS54MixlLnkxLGUueTIsZS5jb2xzLCEwKX0sdC5wcm90b3R5cGUuX29uTGlua0xlYXZlPWZ1bmN0aW9uKGUpe3RoaXMuX3NldENlbGxVbmRlcmxpbmUoZS54MSxlLngyLGUueTEsZS55MixlLmNvbHMsITEpfSx0LnByb3RvdHlwZS5fc2V0Q2VsbFVuZGVybGluZT1mdW5jdGlvbihlLHQscixpLG4sbyl7Zm9yKDtlIT09dHx8ciE9PWk7KXt2YXIgcz10aGlzLl9yb3dFbGVtZW50c1tyXTtpZighcylyZXR1cm47dmFyIGE9cy5jaGlsZHJlbltlXTthJiYoYS5zdHlsZS50ZXh0RGVjb3JhdGlvbj1vP1widW5kZXJsaW5lXCI6XCJub25lXCIpLCsrZT49biYmKGU9MCxyKyspfX0sbyhbcyg2LGYuSUluc3RhbnRpYXRpb25TZXJ2aWNlKSxzKDcsdS5JQ2hhclNpemVTZXJ2aWNlKSxzKDgsZi5JT3B0aW9uc1NlcnZpY2UpLHMoOSxmLklCdWZmZXJTZXJ2aWNlKV0sdCl9KGguRGlzcG9zYWJsZSk7dC5Eb21SZW5kZXJlcj1TfSwzNzg3OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBuLG89YXJndW1lbnRzLmxlbmd0aCxzPW88Mz90Om51bGw9PT1pP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpOmk7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxyLGkpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKG49ZVthXSkmJihzPShvPDM/bihzKTpvPjM/bih0LHIscyk6bih0LHIpKXx8cyk7cmV0dXJuIG8+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixzKSxzfSxuPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocixpKXt0KHIsaSxlKX19LG89dGhpcyYmdGhpcy5fX3ZhbHVlc3x8ZnVuY3Rpb24oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Iscj10JiZlW3RdLGk9MDtpZihyKXJldHVybiByLmNhbGwoZSk7aWYoZSYmXCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUmJmk+PWUubGVuZ3RoJiYoZT12b2lkIDApLHt2YWx1ZTplJiZlW2krK10sZG9uZTohZX19fTt0aHJvdyBuZXcgVHlwZUVycm9yKHQ/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Eb21SZW5kZXJlclJvd0ZhY3Rvcnk9dC5DVVJTT1JfU1RZTEVfVU5ERVJMSU5FX0NMQVNTPXQuQ1VSU09SX1NUWUxFX0JBUl9DTEFTUz10LkNVUlNPUl9TVFlMRV9CTE9DS19DTEFTUz10LkNVUlNPUl9CTElOS19DTEFTUz10LkNVUlNPUl9DTEFTUz10LlNUUklLRVRIUk9VR0hfQ0xBU1M9dC5VTkRFUkxJTkVfQ0xBU1M9dC5JVEFMSUNfQ0xBU1M9dC5ESU1fQ0xBU1M9dC5CT0xEX0NMQVNTPXZvaWQgMDt2YXIgcz1yKDg4MDMpLGE9cig2NDMpLGM9cig1MTEpLGw9cigyNTg1KSxoPXIoODA1NSksdT1yKDQ3MjUpLGY9cig0MjY5KSxfPXIoMTc1Mik7dC5CT0xEX0NMQVNTPVwieHRlcm0tYm9sZFwiLHQuRElNX0NMQVNTPVwieHRlcm0tZGltXCIsdC5JVEFMSUNfQ0xBU1M9XCJ4dGVybS1pdGFsaWNcIix0LlVOREVSTElORV9DTEFTUz1cInh0ZXJtLXVuZGVybGluZVwiLHQuU1RSSUtFVEhST1VHSF9DTEFTUz1cInh0ZXJtLXN0cmlrZXRocm91Z2hcIix0LkNVUlNPUl9DTEFTUz1cInh0ZXJtLWN1cnNvclwiLHQuQ1VSU09SX0JMSU5LX0NMQVNTPVwieHRlcm0tY3Vyc29yLWJsaW5rXCIsdC5DVVJTT1JfU1RZTEVfQkxPQ0tfQ0xBU1M9XCJ4dGVybS1jdXJzb3ItYmxvY2tcIix0LkNVUlNPUl9TVFlMRV9CQVJfQ0xBU1M9XCJ4dGVybS1jdXJzb3ItYmFyXCIsdC5DVVJTT1JfU1RZTEVfVU5ERVJMSU5FX0NMQVNTPVwieHRlcm0tY3Vyc29yLXVuZGVybGluZVwiO3ZhciBkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscixpLG4sbyl7dGhpcy5fZG9jdW1lbnQ9ZSx0aGlzLl9jb2xvcnM9dCx0aGlzLl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlPXIsdGhpcy5fb3B0aW9uc1NlcnZpY2U9aSx0aGlzLl9jb3JlU2VydmljZT1uLHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlPW8sdGhpcy5fd29ya0NlbGw9bmV3IGMuQ2VsbERhdGEsdGhpcy5fY29sdW1uU2VsZWN0TW9kZT0hMX1yZXR1cm4gZS5wcm90b3R5cGUuc2V0Q29sb3JzPWZ1bmN0aW9uKGUpe3RoaXMuX2NvbG9ycz1lfSxlLnByb3RvdHlwZS5vblNlbGVjdGlvbkNoYW5nZWQ9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX3NlbGVjdGlvblN0YXJ0PWUsdGhpcy5fc2VsZWN0aW9uRW5kPXQsdGhpcy5fY29sdW1uU2VsZWN0TW9kZT1yfSxlLnByb3RvdHlwZS5jcmVhdGVSb3c9ZnVuY3Rpb24oZSxyLGksbixjLGwsdSxfKXtmb3IodmFyIGQsdix5PXRoaXMuX2RvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxnPXRoaXMuX2NoYXJhY3RlckpvaW5lclNlcnZpY2UuZ2V0Sm9pbmVkQ2hhcmFjdGVycyhyKSxtPTAsYj1NYXRoLm1pbihlLmxlbmd0aCxfKS0xO2I+PTA7Yi0tKWlmKGUubG9hZENlbGwoYix0aGlzLl93b3JrQ2VsbCkuZ2V0Q29kZSgpIT09YS5OVUxMX0NFTExfQ09ERXx8aSYmYj09PWMpe209YisxO2JyZWFrfWZvcihiPTA7YjxtO2IrKyl7ZS5sb2FkQ2VsbChiLHRoaXMuX3dvcmtDZWxsKTt2YXIgUz10aGlzLl93b3JrQ2VsbC5nZXRXaWR0aCgpO2lmKDAhPT1TKXt2YXIgQz0hMSx3PWIsTD10aGlzLl93b3JrQ2VsbDtpZihnLmxlbmd0aD4wJiZiPT09Z1swXVswXSl7Qz0hMDt2YXIgRT1nLnNoaWZ0KCk7TD1uZXcgZi5Kb2luZWRDZWxsRGF0YSh0aGlzLl93b3JrQ2VsbCxlLnRyYW5zbGF0ZVRvU3RyaW5nKCEwLEVbMF0sRVsxXSksRVsxXS1FWzBdKSx3PUVbMV0tMSxTPUwuZ2V0V2lkdGgoKX12YXIgeD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtpZihTPjEmJih4LnN0eWxlLndpZHRoPXUqUytcInB4XCIpLEMmJih4LnN0eWxlLmRpc3BsYXk9XCJpbmxpbmVcIixjPj1iJiZjPD13JiYoYz1iKSksIXRoaXMuX2NvcmVTZXJ2aWNlLmlzQ3Vyc29ySGlkZGVuJiZpJiZiPT09Yylzd2l0Y2goeC5jbGFzc0xpc3QuYWRkKHQuQ1VSU09SX0NMQVNTKSxsJiZ4LmNsYXNzTGlzdC5hZGQodC5DVVJTT1JfQkxJTktfQ0xBU1MpLG4pe2Nhc2VcImJhclwiOnguY2xhc3NMaXN0LmFkZCh0LkNVUlNPUl9TVFlMRV9CQVJfQ0xBU1MpO2JyZWFrO2Nhc2VcInVuZGVybGluZVwiOnguY2xhc3NMaXN0LmFkZCh0LkNVUlNPUl9TVFlMRV9VTkRFUkxJTkVfQ0xBU1MpO2JyZWFrO2RlZmF1bHQ6eC5jbGFzc0xpc3QuYWRkKHQuQ1VSU09SX1NUWUxFX0JMT0NLX0NMQVNTKX1MLmlzQm9sZCgpJiZ4LmNsYXNzTGlzdC5hZGQodC5CT0xEX0NMQVNTKSxMLmlzSXRhbGljKCkmJnguY2xhc3NMaXN0LmFkZCh0LklUQUxJQ19DTEFTUyksTC5pc0RpbSgpJiZ4LmNsYXNzTGlzdC5hZGQodC5ESU1fQ0xBU1MpLEwuaXNVbmRlcmxpbmUoKSYmeC5jbGFzc0xpc3QuYWRkKHQuVU5ERVJMSU5FX0NMQVNTKSxMLmlzSW52aXNpYmxlKCk/eC50ZXh0Q29udGVudD1hLldISVRFU1BBQ0VfQ0VMTF9DSEFSOngudGV4dENvbnRlbnQ9TC5nZXRDaGFycygpfHxhLldISVRFU1BBQ0VfQ0VMTF9DSEFSLEwuaXNTdHJpa2V0aHJvdWdoKCkmJnguY2xhc3NMaXN0LmFkZCh0LlNUUklLRVRIUk9VR0hfQ0xBU1MpO3ZhciBSPUwuZ2V0RmdDb2xvcigpLGs9TC5nZXRGZ0NvbG9yTW9kZSgpLE09TC5nZXRCZ0NvbG9yKCksQT1MLmdldEJnQ29sb3JNb2RlKCksTz0hIUwuaXNJbnZlcnNlKCk7aWYoTyl7dmFyIEQ9UjtSPU0sTT1EO3ZhciBUPWs7az1BLEE9VH12YXIgQj12b2lkIDAsUD12b2lkIDAsST0hMTt0cnl7Zm9yKHZhciBIPShkPXZvaWQgMCxvKHRoaXMuX2RlY29yYXRpb25TZXJ2aWNlLmdldERlY29yYXRpb25zQXRDZWxsKGIscikpKSxqPUgubmV4dCgpOyFqLmRvbmU7aj1ILm5leHQoKSl7dmFyIEY9ai52YWx1ZTtcInRvcFwiIT09Ri5vcHRpb25zLmxheWVyJiZJfHwoRi5iYWNrZ3JvdW5kQ29sb3JSR0ImJihBPTUwMzMxNjQ4LE09Ri5iYWNrZ3JvdW5kQ29sb3JSR0IucmdiYT4+OCYxNjc3NzIxNSxCPUYuYmFja2dyb3VuZENvbG9yUkdCKSxGLmZvcmVncm91bmRDb2xvclJHQiYmKGs9NTAzMzE2NDgsUj1GLmZvcmVncm91bmRDb2xvclJHQi5yZ2JhPj44JjE2Nzc3MjE1LFA9Ri5mb3JlZ3JvdW5kQ29sb3JSR0IpLEk9XCJ0b3BcIj09PUYub3B0aW9ucy5sYXllcil9fWNhdGNoKGUpe2Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2omJiFqLmRvbmUmJih2PUgucmV0dXJuKSYmdi5jYWxsKEgpfWZpbmFsbHl7aWYoZCl0aHJvdyBkLmVycm9yfX12YXIgVz10aGlzLl9pc0NlbGxJblNlbGVjdGlvbihiLHIpO0l8fHRoaXMuX2NvbG9ycy5zZWxlY3Rpb25Gb3JlZ3JvdW5kJiZXJiYoaz01MDMzMTY0OCxSPXRoaXMuX2NvbG9ycy5zZWxlY3Rpb25Gb3JlZ3JvdW5kLnJnYmE+PjgmMTY3NzcyMTUsUD10aGlzLl9jb2xvcnMuc2VsZWN0aW9uRm9yZWdyb3VuZCksVyYmKEI9dGhpcy5fY29sb3JzLnNlbGVjdGlvbk9wYXF1ZSxJPSEwKSxJJiZ4LmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1kZWNvcmF0aW9uLXRvcFwiKTt2YXIgVT12b2lkIDA7c3dpdGNoKEEpe2Nhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpVPXRoaXMuX2NvbG9ycy5hbnNpW01dLHguY2xhc3NMaXN0LmFkZChcInh0ZXJtLWJnLVwiK00pO2JyZWFrO2Nhc2UgNTAzMzE2NDg6VT1oLnJnYmEudG9Db2xvcihNPj4xNixNPj44JjI1NSwyNTUmTSksdGhpcy5fYWRkU3R5bGUoeCxcImJhY2tncm91bmQtY29sb3I6I1wiK3AoKE0+Pj4wKS50b1N0cmluZygxNiksXCIwXCIsNikpO2JyZWFrO2RlZmF1bHQ6Tz8oVT10aGlzLl9jb2xvcnMuZm9yZWdyb3VuZCx4LmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1iZy1cIitzLklOVkVSVEVEX0RFRkFVTFRfQ09MT1IpKTpVPXRoaXMuX2NvbG9ycy5iYWNrZ3JvdW5kfXN3aXRjaChrKXtjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6TC5pc0JvbGQoKSYmUjw4JiZ0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzJiYoUis9OCksdGhpcy5fYXBwbHlNaW5pbXVtQ29udHJhc3QoeCxVLHRoaXMuX2NvbG9ycy5hbnNpW1JdLEwsQix2b2lkIDApfHx4LmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1mZy1cIitSKTticmVhaztjYXNlIDUwMzMxNjQ4OnZhciBxPWgucmdiYS50b0NvbG9yKFI+PjE2JjI1NSxSPj44JjI1NSwyNTUmUik7dGhpcy5fYXBwbHlNaW5pbXVtQ29udHJhc3QoeCxVLHEsTCxCLFApfHx0aGlzLl9hZGRTdHlsZSh4LFwiY29sb3I6I1wiK3AoUi50b1N0cmluZygxNiksXCIwXCIsNikpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fYXBwbHlNaW5pbXVtQ29udHJhc3QoeCxVLHRoaXMuX2NvbG9ycy5mb3JlZ3JvdW5kLEwsQix2b2lkIDApfHxPJiZ4LmNsYXNzTGlzdC5hZGQoXCJ4dGVybS1mZy1cIitzLklOVkVSVEVEX0RFRkFVTFRfQ09MT1IpfXkuYXBwZW5kQ2hpbGQoeCksYj13fX1yZXR1cm4geX0sZS5wcm90b3R5cGUuX2FwcGx5TWluaW11bUNvbnRyYXN0PWZ1bmN0aW9uKGUsdCxyLGksbixvKXtpZigxPT09dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5taW5pbXVtQ29udHJhc3RSYXRpb3x8KDAsXy5leGNsdWRlRnJvbUNvbnRyYXN0UmF0aW9EZW1hbmRzKShpLmdldENvZGUoKSkpcmV0dXJuITE7dmFyIHM9dm9pZCAwO3JldHVybiBufHxvfHwocz10aGlzLl9jb2xvcnMuY29udHJhc3RDYWNoZS5nZXRDb2xvcih0LnJnYmEsci5yZ2JhKSksdm9pZCAwPT09cyYmKHM9aC5jb2xvci5lbnN1cmVDb250cmFzdFJhdGlvKG58fHQsb3x8cix0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLm1pbmltdW1Db250cmFzdFJhdGlvKSx0aGlzLl9jb2xvcnMuY29udHJhc3RDYWNoZS5zZXRDb2xvcigobnx8dCkucmdiYSwob3x8cikucmdiYSxudWxsIT1zP3M6bnVsbCkpLCEhcyYmKHRoaXMuX2FkZFN0eWxlKGUsXCJjb2xvcjpcIitzLmNzcyksITApfSxlLnByb3RvdHlwZS5fYWRkU3R5bGU9ZnVuY3Rpb24oZSx0KXtlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJcIisoZS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIikrdCtcIjtcIil9LGUucHJvdG90eXBlLl9pc0NlbGxJblNlbGVjdGlvbj1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX3NlbGVjdGlvblN0YXJ0LGk9dGhpcy5fc2VsZWN0aW9uRW5kO3JldHVybiEoIXJ8fCFpKSYmKHRoaXMuX2NvbHVtblNlbGVjdE1vZGU/clswXTw9aVswXT9lPj1yWzBdJiZ0Pj1yWzFdJiZlPGlbMF0mJnQ8PWlbMV06ZTxyWzBdJiZ0Pj1yWzFdJiZlPj1pWzBdJiZ0PD1pWzFdOnQ+clsxXSYmdDxpWzFdfHxyWzFdPT09aVsxXSYmdD09PXJbMV0mJmU+PXJbMF0mJmU8aVswXXx8clsxXTxpWzFdJiZ0PT09aVsxXSYmZTxpWzBdfHxyWzFdPGlbMV0mJnQ9PT1yWzFdJiZlPj1yWzBdKX0saShbbigyLHUuSUNoYXJhY3RlckpvaW5lclNlcnZpY2UpLG4oMyxsLklPcHRpb25zU2VydmljZSksbig0LGwuSUNvcmVTZXJ2aWNlKSxuKDUsbC5JRGVjb3JhdGlvblNlcnZpY2UpXSxlKX0oKTtmdW5jdGlvbiBwKGUsdCxyKXtmb3IoO2UubGVuZ3RoPHI7KWU9dCtlO3JldHVybiBlfXQuRG9tUmVuZGVyZXJSb3dGYWN0b3J5PWR9LDQ1NjooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU2VsZWN0aW9uTW9kZWw9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLl9idWZmZXJTZXJ2aWNlPWUsdGhpcy5pc1NlbGVjdEFsbEFjdGl2ZT0hMSx0aGlzLnNlbGVjdGlvblN0YXJ0TGVuZ3RoPTB9cmV0dXJuIGUucHJvdG90eXBlLmNsZWFyU2VsZWN0aW9uPWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rpb25TdGFydD12b2lkIDAsdGhpcy5zZWxlY3Rpb25FbmQ9dm9pZCAwLHRoaXMuaXNTZWxlY3RBbGxBY3RpdmU9ITEsdGhpcy5zZWxlY3Rpb25TdGFydExlbmd0aD0wfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJmaW5hbFNlbGVjdGlvblN0YXJ0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzU2VsZWN0QWxsQWN0aXZlP1swLDBdOnRoaXMuc2VsZWN0aW9uRW5kJiZ0aGlzLnNlbGVjdGlvblN0YXJ0JiZ0aGlzLmFyZVNlbGVjdGlvblZhbHVlc1JldmVyc2VkKCk/dGhpcy5zZWxlY3Rpb25FbmQ6dGhpcy5zZWxlY3Rpb25TdGFydH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJmaW5hbFNlbGVjdGlvbkVuZFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1NlbGVjdEFsbEFjdGl2ZT9bdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnliYXNlK3RoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xXTp0aGlzLnNlbGVjdGlvblN0YXJ0PyF0aGlzLnNlbGVjdGlvbkVuZHx8dGhpcy5hcmVTZWxlY3Rpb25WYWx1ZXNSZXZlcnNlZCgpPyhlPXRoaXMuc2VsZWN0aW9uU3RhcnRbMF0rdGhpcy5zZWxlY3Rpb25TdGFydExlbmd0aCk+dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzP2UldGhpcy5fYnVmZmVyU2VydmljZS5jb2xzPT0wP1t0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5zZWxlY3Rpb25TdGFydFsxXStNYXRoLmZsb29yKGUvdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKS0xXTpbZSV0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5zZWxlY3Rpb25TdGFydFsxXStNYXRoLmZsb29yKGUvdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKV06W2UsdGhpcy5zZWxlY3Rpb25TdGFydFsxXV06dGhpcy5zZWxlY3Rpb25TdGFydExlbmd0aCYmdGhpcy5zZWxlY3Rpb25FbmRbMV09PT10aGlzLnNlbGVjdGlvblN0YXJ0WzFdPyhlPXRoaXMuc2VsZWN0aW9uU3RhcnRbMF0rdGhpcy5zZWxlY3Rpb25TdGFydExlbmd0aCk+dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzP1tlJXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyx0aGlzLnNlbGVjdGlvblN0YXJ0WzFdK01hdGguZmxvb3IoZS90aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpXTpbTWF0aC5tYXgoZSx0aGlzLnNlbGVjdGlvbkVuZFswXSksdGhpcy5zZWxlY3Rpb25FbmRbMV1dOnRoaXMuc2VsZWN0aW9uRW5kOnZvaWQgMDt2YXIgZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5hcmVTZWxlY3Rpb25WYWx1ZXNSZXZlcnNlZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2VsZWN0aW9uU3RhcnQsdD10aGlzLnNlbGVjdGlvbkVuZDtyZXR1cm4hKCFlfHwhdCkmJihlWzFdPnRbMV18fGVbMV09PT10WzFdJiZlWzBdPnRbMF0pfSxlLnByb3RvdHlwZS5vblRyaW09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uU3RhcnQmJih0aGlzLnNlbGVjdGlvblN0YXJ0WzFdLT1lKSx0aGlzLnNlbGVjdGlvbkVuZCYmKHRoaXMuc2VsZWN0aW9uRW5kWzFdLT1lKSx0aGlzLnNlbGVjdGlvbkVuZCYmdGhpcy5zZWxlY3Rpb25FbmRbMV08MD8odGhpcy5jbGVhclNlbGVjdGlvbigpLCEwKToodGhpcy5zZWxlY3Rpb25TdGFydCYmdGhpcy5zZWxlY3Rpb25TdGFydFsxXTwwJiYodGhpcy5zZWxlY3Rpb25TdGFydFsxXT0wKSwhMSl9LGV9KCk7dC5TZWxlY3Rpb25Nb2RlbD1yfSw0Mjg6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LG49dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5DaGFyU2l6ZVNlcnZpY2U9dm9pZCAwO3ZhciBvPXIoMjU4NSkscz1yKDg0NjApLGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyKXt0aGlzLl9vcHRpb25zU2VydmljZT1yLHRoaXMud2lkdGg9MCx0aGlzLmhlaWdodD0wLHRoaXMuX29uQ2hhclNpemVDaGFuZ2U9bmV3IHMuRXZlbnRFbWl0dGVyLHRoaXMuX21lYXN1cmVTdHJhdGVneT1uZXcgYyhlLHQsdGhpcy5fb3B0aW9uc1NlcnZpY2UpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJoYXNWYWxpZFNpemVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGg+MCYmdGhpcy5oZWlnaHQ+MH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJvbkNoYXJTaXplQ2hhbmdlXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkNoYXJTaXplQ2hhbmdlLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLm1lYXN1cmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9tZWFzdXJlU3RyYXRlZ3kubWVhc3VyZSgpO2Uud2lkdGg9PT10aGlzLndpZHRoJiZlLmhlaWdodD09PXRoaXMuaGVpZ2h0fHwodGhpcy53aWR0aD1lLndpZHRoLHRoaXMuaGVpZ2h0PWUuaGVpZ2h0LHRoaXMuX29uQ2hhclNpemVDaGFuZ2UuZmlyZSgpKX0saShbbigyLG8uSU9wdGlvbnNTZXJ2aWNlKV0sZSl9KCk7dC5DaGFyU2l6ZVNlcnZpY2U9YTt2YXIgYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIpe3RoaXMuX2RvY3VtZW50PWUsdGhpcy5fcGFyZW50RWxlbWVudD10LHRoaXMuX29wdGlvbnNTZXJ2aWNlPXIsdGhpcy5fcmVzdWx0PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLl9tZWFzdXJlRWxlbWVudD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKSx0aGlzLl9tZWFzdXJlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwieHRlcm0tY2hhci1tZWFzdXJlLWVsZW1lbnRcIiksdGhpcy5fbWVhc3VyZUVsZW1lbnQudGV4dENvbnRlbnQ9XCJXXCIsdGhpcy5fbWVhc3VyZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIiksdGhpcy5fcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9tZWFzdXJlRWxlbWVudCl9cmV0dXJuIGUucHJvdG90eXBlLm1lYXN1cmU9ZnVuY3Rpb24oKXt0aGlzLl9tZWFzdXJlRWxlbWVudC5zdHlsZS5mb250RmFtaWx5PXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuZm9udEZhbWlseSx0aGlzLl9tZWFzdXJlRWxlbWVudC5zdHlsZS5mb250U2l6ZT10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmZvbnRTaXplK1wicHhcIjt2YXIgZT10aGlzLl9tZWFzdXJlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gMCE9PWUud2lkdGgmJjAhPT1lLmhlaWdodCYmKHRoaXMuX3Jlc3VsdC53aWR0aD1lLndpZHRoLHRoaXMuX3Jlc3VsdC5oZWlnaHQ9TWF0aC5jZWlsKGUuaGVpZ2h0KSksdGhpcy5fcmVzdWx0fSxlfSgpfSw0MjY5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pLG89dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQscixpKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTppO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixpKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShuPWVbYV0pJiYocz0obzwzP24ocyk6bz4zP24odCxyLHMpOm4odCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30scz10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dChyLGksZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoYXJhY3RlckpvaW5lclNlcnZpY2U9dC5Kb2luZWRDZWxsRGF0YT12b2lkIDA7dmFyIGE9cigzNzM0KSxjPXIoNjQzKSxsPXIoNTExKSxoPXIoMjU4NSksdT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQscixpKXt2YXIgbj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uY29udGVudD0wLG4uY29tYmluZWREYXRhPVwiXCIsbi5mZz10LmZnLG4uYmc9dC5iZyxuLmNvbWJpbmVkRGF0YT1yLG4uX3dpZHRoPWksbn1yZXR1cm4gbih0LGUpLHQucHJvdG90eXBlLmlzQ29tYmluZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gMjA5NzE1Mn0sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd2lkdGh9LHQucHJvdG90eXBlLmdldENoYXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29tYmluZWREYXRhfSx0LnByb3RvdHlwZS5nZXRDb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIDIwOTcxNTF9LHQucHJvdG90eXBlLnNldEZyb21DaGFyRGF0YT1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIil9LHQucHJvdG90eXBlLmdldEFzQ2hhckRhdGE9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5mZyx0aGlzLmdldENoYXJzKCksdGhpcy5nZXRXaWR0aCgpLHRoaXMuZ2V0Q29kZSgpXX0sdH0oYS5BdHRyaWJ1dGVEYXRhKTt0LkpvaW5lZENlbGxEYXRhPXU7dmFyIGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuX2J1ZmZlclNlcnZpY2U9ZSx0aGlzLl9jaGFyYWN0ZXJKb2luZXJzPVtdLHRoaXMuX25leHRDaGFyYWN0ZXJKb2luZXJJZD0wLHRoaXMuX3dvcmtDZWxsPW5ldyBsLkNlbGxEYXRhfXJldHVybiBlLnByb3RvdHlwZS5yZWdpc3Rlcj1mdW5jdGlvbihlKXt2YXIgdD17aWQ6dGhpcy5fbmV4dENoYXJhY3RlckpvaW5lcklkKyssaGFuZGxlcjplfTtyZXR1cm4gdGhpcy5fY2hhcmFjdGVySm9pbmVycy5wdXNoKHQpLHQuaWR9LGUucHJvdG90eXBlLmRlcmVnaXN0ZXI9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLl9jaGFyYWN0ZXJKb2luZXJzLmxlbmd0aDt0KyspaWYodGhpcy5fY2hhcmFjdGVySm9pbmVyc1t0XS5pZD09PWUpcmV0dXJuIHRoaXMuX2NoYXJhY3RlckpvaW5lcnMuc3BsaWNlKHQsMSksITA7cmV0dXJuITF9LGUucHJvdG90eXBlLmdldEpvaW5lZENoYXJhY3RlcnM9ZnVuY3Rpb24oZSl7aWYoMD09PXRoaXMuX2NoYXJhY3RlckpvaW5lcnMubGVuZ3RoKXJldHVybltdO3ZhciB0PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLmdldChlKTtpZighdHx8MD09PXQubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgcj1bXSxpPXQudHJhbnNsYXRlVG9TdHJpbmcoITApLG49MCxvPTAscz0wLGE9dC5nZXRGZygwKSxsPXQuZ2V0QmcoMCksaD0wO2g8dC5nZXRUcmltbWVkTGVuZ3RoKCk7aCsrKWlmKHQubG9hZENlbGwoaCx0aGlzLl93b3JrQ2VsbCksMCE9PXRoaXMuX3dvcmtDZWxsLmdldFdpZHRoKCkpe2lmKHRoaXMuX3dvcmtDZWxsLmZnIT09YXx8dGhpcy5fd29ya0NlbGwuYmchPT1sKXtpZihoLW4+MSlmb3IodmFyIHU9dGhpcy5fZ2V0Sm9pbmVkUmFuZ2VzKGkscyxvLHQsbiksZj0wO2Y8dS5sZW5ndGg7ZisrKXIucHVzaCh1W2ZdKTtuPWgscz1vLGE9dGhpcy5fd29ya0NlbGwuZmcsbD10aGlzLl93b3JrQ2VsbC5iZ31vKz10aGlzLl93b3JrQ2VsbC5nZXRDaGFycygpLmxlbmd0aHx8Yy5XSElURVNQQUNFX0NFTExfQ0hBUi5sZW5ndGh9aWYodGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLW4+MSlmb3IodT10aGlzLl9nZXRKb2luZWRSYW5nZXMoaSxzLG8sdCxuKSxmPTA7Zjx1Lmxlbmd0aDtmKyspci5wdXNoKHVbZl0pO3JldHVybiByfSxlLnByb3RvdHlwZS5fZ2V0Sm9pbmVkUmFuZ2VzPWZ1bmN0aW9uKHQscixpLG4sbyl7dmFyIHM9dC5zdWJzdHJpbmcocixpKSxhPVtdO3RyeXthPXRoaXMuX2NoYXJhY3RlckpvaW5lcnNbMF0uaGFuZGxlcihzKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfWZvcih2YXIgYz0xO2M8dGhpcy5fY2hhcmFjdGVySm9pbmVycy5sZW5ndGg7YysrKXRyeXtmb3IodmFyIGw9dGhpcy5fY2hhcmFjdGVySm9pbmVyc1tjXS5oYW5kbGVyKHMpLGg9MDtoPGwubGVuZ3RoO2grKyllLl9tZXJnZVJhbmdlcyhhLGxbaF0pfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9cmV0dXJuIHRoaXMuX3N0cmluZ1Jhbmdlc1RvQ2VsbFJhbmdlcyhhLG4sbyksYX0sZS5wcm90b3R5cGUuX3N0cmluZ1Jhbmdlc1RvQ2VsbFJhbmdlcz1mdW5jdGlvbihlLHQscil7dmFyIGk9MCxuPSExLG89MCxzPWVbaV07aWYocyl7Zm9yKHZhciBhPXI7YTx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHM7YSsrKXt2YXIgbD10LmdldFdpZHRoKGEpLGg9dC5nZXRTdHJpbmcoYSkubGVuZ3RofHxjLldISVRFU1BBQ0VfQ0VMTF9DSEFSLmxlbmd0aDtpZigwIT09bCl7aWYoIW4mJnNbMF08PW8mJihzWzBdPWEsbj0hMCksc1sxXTw9byl7aWYoc1sxXT1hLCEocz1lWysraV0pKWJyZWFrO3NbMF08PW8/KHNbMF09YSxuPSEwKTpuPSExfW8rPWh9fXMmJihzWzFdPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyl9fSxlLl9tZXJnZVJhbmdlcz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0hMSxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBuPWVbaV07aWYocil7aWYodFsxXTw9blswXSlyZXR1cm4gZVtpLTFdWzFdPXRbMV0sZTtpZih0WzFdPD1uWzFdKXJldHVybiBlW2ktMV1bMV09TWF0aC5tYXgodFsxXSxuWzFdKSxlLnNwbGljZShpLDEpLGU7ZS5zcGxpY2UoaSwxKSxpLS19ZWxzZXtpZih0WzFdPD1uWzBdKXJldHVybiBlLnNwbGljZShpLDAsdCksZTtpZih0WzFdPD1uWzFdKXJldHVybiBuWzBdPU1hdGgubWluKHRbMF0sblswXSksZTt0WzBdPG5bMV0mJihuWzBdPU1hdGgubWluKHRbMF0sblswXSkscj0hMCl9fXJldHVybiByP2VbZS5sZW5ndGgtMV1bMV09dFsxXTplLnB1c2godCksZX0sZT1vKFtzKDAsaC5JQnVmZmVyU2VydmljZSldLGUpfSgpO3QuQ2hhcmFjdGVySm9pbmVyU2VydmljZT1mfSw1MTE0OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db3JlQnJvd3NlclNlcnZpY2U9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLl90ZXh0YXJlYT1lfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJpc0ZvY3VzZWRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuX3RleHRhcmVhLmdldFJvb3ROb2RlP3RoaXMuX3RleHRhcmVhLmdldFJvb3ROb2RlKCk6ZG9jdW1lbnQpLmFjdGl2ZUVsZW1lbnQ9PT10aGlzLl90ZXh0YXJlYSYmZG9jdW1lbnQuaGFzRm9jdXMoKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlfSgpO3QuQ29yZUJyb3dzZXJTZXJ2aWNlPXJ9LDg5MzQ6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LG49dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Nb3VzZVNlcnZpY2U9dm9pZCAwO3ZhciBvPXIoNDcyNSkscz1yKDk4MDYpLGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5fcmVuZGVyU2VydmljZT1lLHRoaXMuX2NoYXJTaXplU2VydmljZT10fXJldHVybiBlLnByb3RvdHlwZS5nZXRDb29yZHM9ZnVuY3Rpb24oZSx0LHIsaSxuKXtyZXR1cm4oMCxzLmdldENvb3Jkcykod2luZG93LGUsdCxyLGksdGhpcy5fY2hhclNpemVTZXJ2aWNlLmhhc1ZhbGlkU2l6ZSx0aGlzLl9yZW5kZXJTZXJ2aWNlLmRpbWVuc2lvbnMuYWN0dWFsQ2VsbFdpZHRoLHRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5hY3R1YWxDZWxsSGVpZ2h0LG4pfSxlLnByb3RvdHlwZS5nZXRSYXdCeXRlQ29vcmRzPWZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBuPXRoaXMuZ2V0Q29vcmRzKGUsdCxyLGkpO3JldHVybigwLHMuZ2V0UmF3Qnl0ZUNvb3Jkcykobil9LGkoW24oMCxvLklSZW5kZXJTZXJ2aWNlKSxuKDEsby5JQ2hhclNpemVTZXJ2aWNlKV0sZSl9KCk7dC5Nb3VzZVNlcnZpY2U9YX0sMzIzMDpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KSxvPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LHM9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5SZW5kZXJTZXJ2aWNlPXZvaWQgMDt2YXIgYT1yKDYxOTMpLGM9cig4NDYwKSxsPXIoODQ0KSxoPXIoNTU5NiksdT1yKDM2NTYpLGY9cigyNTg1KSxfPXIoNDcyNSksZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQscixpLG4sbyxzLGwpe3ZhciBmPWUuY2FsbCh0aGlzKXx8dGhpcztpZihmLl9yZW5kZXJlcj10LGYuX3Jvd0NvdW50PXIsZi5fY2hhclNpemVTZXJ2aWNlPW8sZi5faXNQYXVzZWQ9ITEsZi5fbmVlZHNGdWxsUmVmcmVzaD0hMSxmLl9pc05leHRSZW5kZXJSZWRyYXdPbmx5PSEwLGYuX25lZWRzU2VsZWN0aW9uUmVmcmVzaD0hMSxmLl9jYW52YXNXaWR0aD0wLGYuX2NhbnZhc0hlaWdodD0wLGYuX3NlbGVjdGlvblN0YXRlPXtzdGFydDp2b2lkIDAsZW5kOnZvaWQgMCxjb2x1bW5TZWxlY3RNb2RlOiExfSxmLl9vbkRpbWVuc2lvbnNDaGFuZ2U9bmV3IGMuRXZlbnRFbWl0dGVyLGYuX29uUmVuZGVyZWRWaWV3cG9ydENoYW5nZT1uZXcgYy5FdmVudEVtaXR0ZXIsZi5fb25SZW5kZXI9bmV3IGMuRXZlbnRFbWl0dGVyLGYuX29uUmVmcmVzaFJlcXVlc3Q9bmV3IGMuRXZlbnRFbWl0dGVyLGYucmVnaXN0ZXIoe2Rpc3Bvc2U6ZnVuY3Rpb24oKXtyZXR1cm4gZi5fcmVuZGVyZXIuZGlzcG9zZSgpfX0pLGYuX3JlbmRlckRlYm91bmNlcj1uZXcgYS5SZW5kZXJEZWJvdW5jZXIoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYuX3JlbmRlclJvd3MoZSx0KX0pKSxmLnJlZ2lzdGVyKGYuX3JlbmRlckRlYm91bmNlciksZi5fc2NyZWVuRHByTW9uaXRvcj1uZXcgaC5TY3JlZW5EcHJNb25pdG9yLGYuX3NjcmVlbkRwck1vbml0b3Iuc2V0TGlzdGVuZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIGYub25EZXZpY2VQaXhlbFJhdGlvQ2hhbmdlKCl9KSksZi5yZWdpc3RlcihmLl9zY3JlZW5EcHJNb25pdG9yKSxmLnJlZ2lzdGVyKGwub25SZXNpemUoKGZ1bmN0aW9uKCl7cmV0dXJuIGYuX2Z1bGxSZWZyZXNoKCl9KSkpLGYucmVnaXN0ZXIobC5idWZmZXJzLm9uQnVmZmVyQWN0aXZhdGUoKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIG51bGw9PT0oZT1mLl9yZW5kZXJlcil8fHZvaWQgMD09PWU/dm9pZCAwOmUuY2xlYXIoKX0pKSksZi5yZWdpc3RlcihuLm9uT3B0aW9uQ2hhbmdlKChmdW5jdGlvbigpe3JldHVybiBmLl9oYW5kbGVPcHRpb25zQ2hhbmdlZCgpfSkpKSxmLnJlZ2lzdGVyKGYuX2NoYXJTaXplU2VydmljZS5vbkNoYXJTaXplQ2hhbmdlKChmdW5jdGlvbigpe3JldHVybiBmLm9uQ2hhclNpemVDaGFuZ2VkKCl9KSkpLGYucmVnaXN0ZXIocy5vbkRlY29yYXRpb25SZWdpc3RlcmVkKChmdW5jdGlvbigpe3JldHVybiBmLl9mdWxsUmVmcmVzaCgpfSkpKSxmLnJlZ2lzdGVyKHMub25EZWNvcmF0aW9uUmVtb3ZlZCgoZnVuY3Rpb24oKXtyZXR1cm4gZi5fZnVsbFJlZnJlc2goKX0pKSksZi5fcmVuZGVyZXIub25SZXF1ZXN0UmVkcmF3KChmdW5jdGlvbihlKXtyZXR1cm4gZi5yZWZyZXNoUm93cyhlLnN0YXJ0LGUuZW5kLCEwKX0pKSxmLnJlZ2lzdGVyKCgwLHUuYWRkRGlzcG9zYWJsZURvbUxpc3RlbmVyKSh3aW5kb3csXCJyZXNpemVcIiwoZnVuY3Rpb24oKXtyZXR1cm4gZi5vbkRldmljZVBpeGVsUmF0aW9DaGFuZ2UoKX0pKSksXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiaW4gd2luZG93KXt2YXIgXz1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBmLl9vbkludGVyc2VjdGlvbkNoYW5nZShlW2UubGVuZ3RoLTFdKX0pLHt0aHJlc2hvbGQ6MH0pO18ub2JzZXJ2ZShpKSxmLnJlZ2lzdGVyKHtkaXNwb3NlOmZ1bmN0aW9uKCl7cmV0dXJuIF8uZGlzY29ubmVjdCgpfX0pfXJldHVybiBmfXJldHVybiBuKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25EaW1lbnNpb25zQ2hhbmdlXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkRpbWVuc2lvbnNDaGFuZ2UuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblJlbmRlcmVkVmlld3BvcnRDaGFuZ2UuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25SZW5kZXJcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uUmVuZGVyLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uUmVmcmVzaFJlcXVlc3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uUmVmcmVzaFJlcXVlc3QuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwiZGltZW5zaW9uc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyZXIuZGltZW5zaW9uc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fb25JbnRlcnNlY3Rpb25DaGFuZ2U9ZnVuY3Rpb24oZSl7dGhpcy5faXNQYXVzZWQ9dm9pZCAwPT09ZS5pc0ludGVyc2VjdGluZz8wPT09ZS5pbnRlcnNlY3Rpb25SYXRpbzohZS5pc0ludGVyc2VjdGluZyx0aGlzLl9pc1BhdXNlZHx8dGhpcy5fY2hhclNpemVTZXJ2aWNlLmhhc1ZhbGlkU2l6ZXx8dGhpcy5fY2hhclNpemVTZXJ2aWNlLm1lYXN1cmUoKSwhdGhpcy5faXNQYXVzZWQmJnRoaXMuX25lZWRzRnVsbFJlZnJlc2gmJih0aGlzLnJlZnJlc2hSb3dzKDAsdGhpcy5fcm93Q291bnQtMSksdGhpcy5fbmVlZHNGdWxsUmVmcmVzaD0hMSl9LHQucHJvdG90eXBlLnJlZnJlc2hSb3dzPWZ1bmN0aW9uKGUsdCxyKXt2b2lkIDA9PT1yJiYocj0hMSksdGhpcy5faXNQYXVzZWQ/dGhpcy5fbmVlZHNGdWxsUmVmcmVzaD0hMDoocnx8KHRoaXMuX2lzTmV4dFJlbmRlclJlZHJhd09ubHk9ITEpLHRoaXMuX3JlbmRlckRlYm91bmNlci5yZWZyZXNoKGUsdCx0aGlzLl9yb3dDb3VudCkpfSx0LnByb3RvdHlwZS5fcmVuZGVyUm93cz1mdW5jdGlvbihlLHQpe3RoaXMuX3JlbmRlcmVyLnJlbmRlclJvd3MoZSx0KSx0aGlzLl9uZWVkc1NlbGVjdGlvblJlZnJlc2gmJih0aGlzLl9yZW5kZXJlci5vblNlbGVjdGlvbkNoYW5nZWQodGhpcy5fc2VsZWN0aW9uU3RhdGUuc3RhcnQsdGhpcy5fc2VsZWN0aW9uU3RhdGUuZW5kLHRoaXMuX3NlbGVjdGlvblN0YXRlLmNvbHVtblNlbGVjdE1vZGUpLHRoaXMuX25lZWRzU2VsZWN0aW9uUmVmcmVzaD0hMSksdGhpcy5faXNOZXh0UmVuZGVyUmVkcmF3T25seXx8dGhpcy5fb25SZW5kZXJlZFZpZXdwb3J0Q2hhbmdlLmZpcmUoe3N0YXJ0OmUsZW5kOnR9KSx0aGlzLl9vblJlbmRlci5maXJlKHtzdGFydDplLGVuZDp0fSksdGhpcy5faXNOZXh0UmVuZGVyUmVkcmF3T25seT0hMH0sdC5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKGUsdCl7dGhpcy5fcm93Q291bnQ9dCx0aGlzLl9maXJlT25DYW52YXNSZXNpemUoKX0sdC5wcm90b3R5cGUuX2hhbmRsZU9wdGlvbnNDaGFuZ2VkPWZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyZXIub25PcHRpb25zQ2hhbmdlZCgpLHRoaXMucmVmcmVzaFJvd3MoMCx0aGlzLl9yb3dDb3VudC0xKSx0aGlzLl9maXJlT25DYW52YXNSZXNpemUoKX0sdC5wcm90b3R5cGUuX2ZpcmVPbkNhbnZhc1Jlc2l6ZT1mdW5jdGlvbigpe3RoaXMuX3JlbmRlcmVyLmRpbWVuc2lvbnMuY2FudmFzV2lkdGg9PT10aGlzLl9jYW52YXNXaWR0aCYmdGhpcy5fcmVuZGVyZXIuZGltZW5zaW9ucy5jYW52YXNIZWlnaHQ9PT10aGlzLl9jYW52YXNIZWlnaHR8fHRoaXMuX29uRGltZW5zaW9uc0NoYW5nZS5maXJlKHRoaXMuX3JlbmRlcmVyLmRpbWVuc2lvbnMpfSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuZGlzcG9zZS5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5zZXRSZW5kZXJlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMuX3JlbmRlcmVyLmRpc3Bvc2UoKSx0aGlzLl9yZW5kZXJlcj1lLHRoaXMuX3JlbmRlcmVyLm9uUmVxdWVzdFJlZHJhdygoZnVuY3Rpb24oZSl7cmV0dXJuIHQucmVmcmVzaFJvd3MoZS5zdGFydCxlLmVuZCwhMCl9KSksdGhpcy5fbmVlZHNTZWxlY3Rpb25SZWZyZXNoPSEwLHRoaXMuX2Z1bGxSZWZyZXNoKCl9LHQucHJvdG90eXBlLmFkZFJlZnJlc2hDYWxsYmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcmVuZGVyRGVib3VuY2VyLmFkZFJlZnJlc2hDYWxsYmFjayhlKX0sdC5wcm90b3R5cGUuX2Z1bGxSZWZyZXNoPWZ1bmN0aW9uKCl7dGhpcy5faXNQYXVzZWQ/dGhpcy5fbmVlZHNGdWxsUmVmcmVzaD0hMDp0aGlzLnJlZnJlc2hSb3dzKDAsdGhpcy5fcm93Q291bnQtMSl9LHQucHJvdG90eXBlLmNsZWFyVGV4dHVyZUF0bGFzPWZ1bmN0aW9uKCl7dmFyIGUsdDtudWxsPT09KHQ9bnVsbD09PShlPXRoaXMuX3JlbmRlcmVyKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jbGVhclRleHR1cmVBdGxhcyl8fHZvaWQgMD09PXR8fHQuY2FsbChlKSx0aGlzLl9mdWxsUmVmcmVzaCgpfSx0LnByb3RvdHlwZS5zZXRDb2xvcnM9ZnVuY3Rpb24oZSl7dGhpcy5fcmVuZGVyZXIuc2V0Q29sb3JzKGUpLHRoaXMuX2Z1bGxSZWZyZXNoKCl9LHQucHJvdG90eXBlLm9uRGV2aWNlUGl4ZWxSYXRpb0NoYW5nZT1mdW5jdGlvbigpe3RoaXMuX2NoYXJTaXplU2VydmljZS5tZWFzdXJlKCksdGhpcy5fcmVuZGVyZXIub25EZXZpY2VQaXhlbFJhdGlvQ2hhbmdlKCksdGhpcy5yZWZyZXNoUm93cygwLHRoaXMuX3Jvd0NvdW50LTEpfSx0LnByb3RvdHlwZS5vblJlc2l6ZT1mdW5jdGlvbihlLHQpe3RoaXMuX3JlbmRlcmVyLm9uUmVzaXplKGUsdCksdGhpcy5fZnVsbFJlZnJlc2goKX0sdC5wcm90b3R5cGUub25DaGFyU2l6ZUNoYW5nZWQ9ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJlci5vbkNoYXJTaXplQ2hhbmdlZCgpfSx0LnByb3RvdHlwZS5vbkJsdXI9ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJlci5vbkJsdXIoKX0sdC5wcm90b3R5cGUub25Gb2N1cz1mdW5jdGlvbigpe3RoaXMuX3JlbmRlcmVyLm9uRm9jdXMoKX0sdC5wcm90b3R5cGUub25TZWxlY3Rpb25DaGFuZ2VkPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9zZWxlY3Rpb25TdGF0ZS5zdGFydD1lLHRoaXMuX3NlbGVjdGlvblN0YXRlLmVuZD10LHRoaXMuX3NlbGVjdGlvblN0YXRlLmNvbHVtblNlbGVjdE1vZGU9cix0aGlzLl9yZW5kZXJlci5vblNlbGVjdGlvbkNoYW5nZWQoZSx0LHIpfSx0LnByb3RvdHlwZS5vbkN1cnNvck1vdmU9ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJlci5vbkN1cnNvck1vdmUoKX0sdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJlci5jbGVhcigpfSxvKFtzKDMsZi5JT3B0aW9uc1NlcnZpY2UpLHMoNCxfLklDaGFyU2l6ZVNlcnZpY2UpLHMoNSxmLklEZWNvcmF0aW9uU2VydmljZSkscyg2LGYuSUJ1ZmZlclNlcnZpY2UpXSx0KX0obC5EaXNwb3NhYmxlKTt0LlJlbmRlclNlcnZpY2U9ZH0sOTMxMjpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KSxvPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LHM9dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TZWxlY3Rpb25TZXJ2aWNlPXZvaWQgMDt2YXIgYT1yKDYxMTQpLGM9cig0NTYpLGw9cig1MTEpLGg9cig4NDYwKSx1PXIoNDcyNSksZj1yKDI1ODUpLF89cig5ODA2KSxkPXIoOTUwNCkscD1yKDg0NCksdj1yKDQ4NDEpLHk9U3RyaW5nLmZyb21DaGFyQ29kZSgxNjApLGc9bmV3IFJlZ0V4cCh5LFwiZ1wiKSxtPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxyLGksbixvLHMsYSx1KXt2YXIgZj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGYuX2VsZW1lbnQ9dCxmLl9zY3JlZW5FbGVtZW50PXIsZi5fbGlua2lmaWVyPWksZi5fYnVmZmVyU2VydmljZT1uLGYuX2NvcmVTZXJ2aWNlPW8sZi5fbW91c2VTZXJ2aWNlPXMsZi5fb3B0aW9uc1NlcnZpY2U9YSxmLl9yZW5kZXJTZXJ2aWNlPXUsZi5fZHJhZ1Njcm9sbEFtb3VudD0wLGYuX2VuYWJsZWQ9ITAsZi5fd29ya0NlbGw9bmV3IGwuQ2VsbERhdGEsZi5fbW91c2VEb3duVGltZVN0YW1wPTAsZi5fb2xkSGFzU2VsZWN0aW9uPSExLGYuX29sZFNlbGVjdGlvblN0YXJ0PXZvaWQgMCxmLl9vbGRTZWxlY3Rpb25FbmQ9dm9pZCAwLGYuX29uTGludXhNb3VzZVNlbGVjdGlvbj1mLnJlZ2lzdGVyKG5ldyBoLkV2ZW50RW1pdHRlciksZi5fb25SZWRyYXdSZXF1ZXN0PWYucmVnaXN0ZXIobmV3IGguRXZlbnRFbWl0dGVyKSxmLl9vblNlbGVjdGlvbkNoYW5nZT1mLnJlZ2lzdGVyKG5ldyBoLkV2ZW50RW1pdHRlciksZi5fb25SZXF1ZXN0U2Nyb2xsTGluZXM9Zi5yZWdpc3RlcihuZXcgaC5FdmVudEVtaXR0ZXIpLGYuX21vdXNlTW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGUpe3JldHVybiBmLl9vbk1vdXNlTW92ZShlKX0sZi5fbW91c2VVcExpc3RlbmVyPWZ1bmN0aW9uKGUpe3JldHVybiBmLl9vbk1vdXNlVXAoZSl9LGYuX2NvcmVTZXJ2aWNlLm9uVXNlcklucHV0KChmdW5jdGlvbigpe2YuaGFzU2VsZWN0aW9uJiZmLmNsZWFyU2VsZWN0aW9uKCl9KSksZi5fdHJpbUxpc3RlbmVyPWYuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLm9uVHJpbSgoZnVuY3Rpb24oZSl7cmV0dXJuIGYuX29uVHJpbShlKX0pKSxmLnJlZ2lzdGVyKGYuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5vbkJ1ZmZlckFjdGl2YXRlKChmdW5jdGlvbihlKXtyZXR1cm4gZi5fb25CdWZmZXJBY3RpdmF0ZShlKX0pKSksZi5lbmFibGUoKSxmLl9tb2RlbD1uZXcgYy5TZWxlY3Rpb25Nb2RlbChmLl9idWZmZXJTZXJ2aWNlKSxmLl9hY3RpdmVTZWxlY3Rpb25Nb2RlPTAsZn1yZXR1cm4gbih0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uTGludXhNb3VzZVNlbGVjdGlvblwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25MaW51eE1vdXNlU2VsZWN0aW9uLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uUmVxdWVzdFJlZHJhd1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25SZWRyYXdSZXF1ZXN0LmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uU2VsZWN0aW9uQ2hhbmdlXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblNlbGVjdGlvbkNoYW5nZS5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvblJlcXVlc3RTY3JvbGxMaW5lc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25SZXF1ZXN0U2Nyb2xsTGluZXMuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuX3JlbW92ZU1vdXNlRG93bkxpc3RlbmVycygpfSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKX0sdC5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLl9lbmFibGVkPSExfSx0LnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLl9lbmFibGVkPSEwfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJzZWxlY3Rpb25TdGFydFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25TdGFydH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJzZWxlY3Rpb25FbmRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uRW5kfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImhhc1NlbGVjdGlvblwiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvblN0YXJ0LHQ9dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25FbmQ7cmV0dXJuISghZXx8IXR8fGVbMF09PT10WzBdJiZlWzFdPT09dFsxXSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwic2VsZWN0aW9uVGV4dFwiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvblN0YXJ0LHQ9dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25FbmQ7aWYoIWV8fCF0KXJldHVyblwiXCI7dmFyIHI9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIsaT1bXTtpZigzPT09dGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZSl7aWYoZVswXT09PXRbMF0pcmV0dXJuXCJcIjtmb3IodmFyIG49ZVswXTx0WzBdP2VbMF06dFswXSxvPWVbMF08dFswXT90WzBdOmVbMF0scz1lWzFdO3M8PXRbMV07cysrKXt2YXIgYz1yLnRyYW5zbGF0ZUJ1ZmZlckxpbmVUb1N0cmluZyhzLCEwLG4sbyk7aS5wdXNoKGMpfX1lbHNle3ZhciBsPWVbMV09PT10WzFdP3RbMF06dm9pZCAwO2ZvcihpLnB1c2goci50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcoZVsxXSwhMCxlWzBdLGwpKSxzPWVbMV0rMTtzPD10WzFdLTE7cysrKXt2YXIgaD1yLmxpbmVzLmdldChzKTtjPXIudHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nKHMsITApLChudWxsPT1oP3ZvaWQgMDpoLmlzV3JhcHBlZCk/aVtpLmxlbmd0aC0xXSs9YzppLnB1c2goYyl9ZVsxXSE9PXRbMV0mJihoPXIubGluZXMuZ2V0KHRbMV0pLGM9ci50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmcodFsxXSwhMCwwLHRbMF0pLGgmJmguaXNXcmFwcGVkP2lbaS5sZW5ndGgtMV0rPWM6aS5wdXNoKGMpKX1yZXR1cm4gaS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoZyxcIiBcIil9KSkuam9pbihhLmlzV2luZG93cz9cIlxcclxcblwiOlwiXFxuXCIpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNsZWFyU2VsZWN0aW9uPWZ1bmN0aW9uKCl7dGhpcy5fbW9kZWwuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLl9yZW1vdmVNb3VzZURvd25MaXN0ZW5lcnMoKSx0aGlzLnJlZnJlc2goKSx0aGlzLl9vblNlbGVjdGlvbkNoYW5nZS5maXJlKCl9LHQucHJvdG90eXBlLnJlZnJlc2g9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLl9yZWZyZXNoQW5pbWF0aW9uRnJhbWV8fCh0aGlzLl9yZWZyZXNoQW5pbWF0aW9uRnJhbWU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtyZXR1cm4gdC5fcmVmcmVzaCgpfSkpKSxhLmlzTGludXgmJmUmJnRoaXMuc2VsZWN0aW9uVGV4dC5sZW5ndGgmJnRoaXMuX29uTGludXhNb3VzZVNlbGVjdGlvbi5maXJlKHRoaXMuc2VsZWN0aW9uVGV4dCl9LHQucHJvdG90eXBlLl9yZWZyZXNoPWZ1bmN0aW9uKCl7dGhpcy5fcmVmcmVzaEFuaW1hdGlvbkZyYW1lPXZvaWQgMCx0aGlzLl9vblJlZHJhd1JlcXVlc3QuZmlyZSh7c3RhcnQ6dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25TdGFydCxlbmQ6dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25FbmQsY29sdW1uU2VsZWN0TW9kZTozPT09dGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZX0pfSx0LnByb3RvdHlwZS5faXNDbGlja0luU2VsZWN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2dldE1vdXNlQnVmZmVyQ29vcmRzKGUpLHI9dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25TdGFydCxpPXRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uRW5kO3JldHVybiEhKHImJmkmJnQpJiZ0aGlzLl9hcmVDb29yZHNJblNlbGVjdGlvbih0LHIsaSl9LHQucHJvdG90eXBlLmlzQ2VsbEluU2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fbW9kZWwuZmluYWxTZWxlY3Rpb25TdGFydCxpPXRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uRW5kO3JldHVybiEoIXJ8fCFpKSYmdGhpcy5fYXJlQ29vcmRzSW5TZWxlY3Rpb24oW2UsdF0scixpKX0sdC5wcm90b3R5cGUuX2FyZUNvb3Jkc0luU2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVsxXT50WzFdJiZlWzFdPHJbMV18fHRbMV09PT1yWzFdJiZlWzFdPT09dFsxXSYmZVswXT49dFswXSYmZVswXTxyWzBdfHx0WzFdPHJbMV0mJmVbMV09PT1yWzFdJiZlWzBdPHJbMF18fHRbMV08clsxXSYmZVsxXT09PXRbMV0mJmVbMF0+PXRbMF19LHQucHJvdG90eXBlLl9zZWxlY3RXb3JkQXRDdXJzb3I9ZnVuY3Rpb24oZSx0KXt2YXIgcixpLG49bnVsbD09PShpPW51bGw9PT0ocj10aGlzLl9saW5raWZpZXIuY3VycmVudExpbmspfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmxpbmspfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnJhbmdlO2lmKG4pcmV0dXJuIHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0PVtuLnN0YXJ0LngtMSxuLnN0YXJ0LnktMV0sdGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnRMZW5ndGg9KDAsdi5nZXRSYW5nZUxlbmd0aCkobix0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpLHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZD12b2lkIDAsITA7dmFyIG89dGhpcy5fZ2V0TW91c2VCdWZmZXJDb29yZHMoZSk7cmV0dXJuISFvJiYodGhpcy5fc2VsZWN0V29yZEF0KG8sdCksdGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kPXZvaWQgMCwhMCl9LHQucHJvdG90eXBlLnNlbGVjdEFsbD1mdW5jdGlvbigpe3RoaXMuX21vZGVsLmlzU2VsZWN0QWxsQWN0aXZlPSEwLHRoaXMucmVmcmVzaCgpLHRoaXMuX29uU2VsZWN0aW9uQ2hhbmdlLmZpcmUoKX0sdC5wcm90b3R5cGUuc2VsZWN0TGluZXM9ZnVuY3Rpb24oZSx0KXt0aGlzLl9tb2RlbC5jbGVhclNlbGVjdGlvbigpLGU9TWF0aC5tYXgoZSwwKSx0PU1hdGgubWluKHQsdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIubGluZXMubGVuZ3RoLTEpLHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0PVswLGVdLHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZD1bdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRdLHRoaXMucmVmcmVzaCgpLHRoaXMuX29uU2VsZWN0aW9uQ2hhbmdlLmZpcmUoKX0sdC5wcm90b3R5cGUuX29uVHJpbT1mdW5jdGlvbihlKXt0aGlzLl9tb2RlbC5vblRyaW0oZSkmJnRoaXMucmVmcmVzaCgpfSx0LnByb3RvdHlwZS5fZ2V0TW91c2VCdWZmZXJDb29yZHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbW91c2VTZXJ2aWNlLmdldENvb3JkcyhlLHRoaXMuX3NjcmVlbkVsZW1lbnQsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cywhMCk7aWYodClyZXR1cm4gdFswXS0tLHRbMV0tLSx0WzFdKz10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcCx0fSx0LnByb3RvdHlwZS5fZ2V0TW91c2VFdmVudFNjcm9sbEFtb3VudD1mdW5jdGlvbihlKXt2YXIgdD0oMCxfLmdldENvb3Jkc1JlbGF0aXZlVG9FbGVtZW50KSh3aW5kb3csZSx0aGlzLl9zY3JlZW5FbGVtZW50KVsxXSxyPXRoaXMuX3JlbmRlclNlcnZpY2UuZGltZW5zaW9ucy5jYW52YXNIZWlnaHQ7cmV0dXJuIHQ+PTAmJnQ8PXI/MDoodD5yJiYodC09ciksdD1NYXRoLm1pbihNYXRoLm1heCh0LC01MCksNTApLCh0Lz01MCkvTWF0aC5hYnModCkrTWF0aC5yb3VuZCgxNCp0KSl9LHQucHJvdG90eXBlLnNob3VsZEZvcmNlU2VsZWN0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhLmlzTWFjP2UuYWx0S2V5JiZ0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLm1hY09wdGlvbkNsaWNrRm9yY2VzU2VsZWN0aW9uOmUuc2hpZnRLZXl9LHQucHJvdG90eXBlLm9uTW91c2VEb3duPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX21vdXNlRG93blRpbWVTdGFtcD1lLnRpbWVTdGFtcCwoMiE9PWUuYnV0dG9ufHwhdGhpcy5oYXNTZWxlY3Rpb24pJiYwPT09ZS5idXR0b24pe2lmKCF0aGlzLl9lbmFibGVkKXtpZighdGhpcy5zaG91bGRGb3JjZVNlbGVjdGlvbihlKSlyZXR1cm47ZS5zdG9wUHJvcGFnYXRpb24oKX1lLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZHJhZ1Njcm9sbEFtb3VudD0wLHRoaXMuX2VuYWJsZWQmJmUuc2hpZnRLZXk/dGhpcy5fb25JbmNyZW1lbnRhbENsaWNrKGUpOjE9PT1lLmRldGFpbD90aGlzLl9vblNpbmdsZUNsaWNrKGUpOjI9PT1lLmRldGFpbD90aGlzLl9vbkRvdWJsZUNsaWNrKGUpOjM9PT1lLmRldGFpbCYmdGhpcy5fb25UcmlwbGVDbGljayhlKSx0aGlzLl9hZGRNb3VzZURvd25MaXN0ZW5lcnMoKSx0aGlzLnJlZnJlc2goITApfX0sdC5wcm90b3R5cGUuX2FkZE1vdXNlRG93bkxpc3RlbmVycz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5fc2NyZWVuRWxlbWVudC5vd25lckRvY3VtZW50JiYodGhpcy5fc2NyZWVuRWxlbWVudC5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0aGlzLl9tb3VzZU1vdmVMaXN0ZW5lciksdGhpcy5fc2NyZWVuRWxlbWVudC5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsdGhpcy5fbW91c2VVcExpc3RlbmVyKSksdGhpcy5fZHJhZ1Njcm9sbEludGVydmFsVGltZXI9d2luZG93LnNldEludGVydmFsKChmdW5jdGlvbigpe3JldHVybiBlLl9kcmFnU2Nyb2xsKCl9KSw1MCl9LHQucHJvdG90eXBlLl9yZW1vdmVNb3VzZURvd25MaXN0ZW5lcnM9ZnVuY3Rpb24oKXt0aGlzLl9zY3JlZW5FbGVtZW50Lm93bmVyRG9jdW1lbnQmJih0aGlzLl9zY3JlZW5FbGVtZW50Lm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHRoaXMuX21vdXNlTW92ZUxpc3RlbmVyKSx0aGlzLl9zY3JlZW5FbGVtZW50Lm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIix0aGlzLl9tb3VzZVVwTGlzdGVuZXIpKSxjbGVhckludGVydmFsKHRoaXMuX2RyYWdTY3JvbGxJbnRlcnZhbFRpbWVyKSx0aGlzLl9kcmFnU2Nyb2xsSW50ZXJ2YWxUaW1lcj12b2lkIDB9LHQucHJvdG90eXBlLl9vbkluY3JlbWVudGFsQ2xpY2s9ZnVuY3Rpb24oZSl7dGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnQmJih0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQ9dGhpcy5fZ2V0TW91c2VCdWZmZXJDb29yZHMoZSkpfSx0LnByb3RvdHlwZS5fb25TaW5nbGVDbGljaz1mdW5jdGlvbihlKXtpZih0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydExlbmd0aD0wLHRoaXMuX21vZGVsLmlzU2VsZWN0QWxsQWN0aXZlPSExLHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGU9dGhpcy5zaG91bGRDb2x1bW5TZWxlY3QoZSk/MzowLHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0PXRoaXMuX2dldE1vdXNlQnVmZmVyQ29vcmRzKGUpLHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0KXt0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQ9dm9pZCAwO3ZhciB0PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmxpbmVzLmdldCh0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydFsxXSk7dCYmdC5sZW5ndGghPT10aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydFswXSYmMD09PXQuaGFzV2lkdGgodGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnRbMF0pJiZ0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydFswXSsrfX0sdC5wcm90b3R5cGUuX29uRG91YmxlQ2xpY2s9ZnVuY3Rpb24oZSl7dGhpcy5fc2VsZWN0V29yZEF0Q3Vyc29yKGUsITApJiYodGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZT0xKX0sdC5wcm90b3R5cGUuX29uVHJpcGxlQ2xpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZ2V0TW91c2VCdWZmZXJDb29yZHMoZSk7dCYmKHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGU9Mix0aGlzLl9zZWxlY3RMaW5lQXQodFsxXSkpfSx0LnByb3RvdHlwZS5zaG91bGRDb2x1bW5TZWxlY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuYWx0S2V5JiYhKGEuaXNNYWMmJnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubWFjT3B0aW9uQ2xpY2tGb3JjZXNTZWxlY3Rpb24pfSx0LnByb3RvdHlwZS5fb25Nb3VzZU1vdmU9ZnVuY3Rpb24oZSl7aWYoZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydCl7dmFyIHQ9dGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kP1t0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF0sdGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzFdXTpudWxsO2lmKHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZD10aGlzLl9nZXRNb3VzZUJ1ZmZlckNvb3JkcyhlKSx0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQpezI9PT10aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlP3RoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFsxXTx0aGlzLl9tb2RlbC5zZWxlY3Rpb25TdGFydFsxXT90aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF09MDp0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF09dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzOjE9PT10aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlJiZ0aGlzLl9zZWxlY3RUb1dvcmRBdCh0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQpLHRoaXMuX2RyYWdTY3JvbGxBbW91bnQ9dGhpcy5fZ2V0TW91c2VFdmVudFNjcm9sbEFtb3VudChlKSwzIT09dGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZSYmKHRoaXMuX2RyYWdTY3JvbGxBbW91bnQ+MD90aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF09dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzOnRoaXMuX2RyYWdTY3JvbGxBbW91bnQ8MCYmKHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFswXT0wKSk7dmFyIHI9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXI7aWYodGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzFdPHIubGluZXMubGVuZ3RoKXt2YXIgaT1yLmxpbmVzLmdldCh0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMV0pO2kmJjA9PT1pLmhhc1dpZHRoKHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFswXSkmJnRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFswXSsrfXQmJnRbMF09PT10aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMF0mJnRbMV09PT10aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmRbMV18fHRoaXMucmVmcmVzaCghMCl9ZWxzZSB0aGlzLnJlZnJlc2goITApfX0sdC5wcm90b3R5cGUuX2RyYWdTY3JvbGw9ZnVuY3Rpb24oKXtpZih0aGlzLl9tb2RlbC5zZWxlY3Rpb25FbmQmJnRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0JiZ0aGlzLl9kcmFnU2Nyb2xsQW1vdW50KXt0aGlzLl9vblJlcXVlc3RTY3JvbGxMaW5lcy5maXJlKHthbW91bnQ6dGhpcy5fZHJhZ1Njcm9sbEFtb3VudCxzdXBwcmVzc1Njcm9sbEV2ZW50OiExfSk7dmFyIGU9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXI7dGhpcy5fZHJhZ1Njcm9sbEFtb3VudD4wPygzIT09dGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZSYmKHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFswXT10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpLHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFsxXT1NYXRoLm1pbihlLnlkaXNwK3RoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyxlLmxpbmVzLmxlbmd0aC0xKSk6KDMhPT10aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlJiYodGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kWzBdPTApLHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZFsxXT1lLnlkaXNwKSx0aGlzLnJlZnJlc2goKX19LHQucHJvdG90eXBlLl9vbk1vdXNlVXA9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50aW1lU3RhbXAtdGhpcy5fbW91c2VEb3duVGltZVN0YW1wO2lmKHRoaXMuX3JlbW92ZU1vdXNlRG93bkxpc3RlbmVycygpLHRoaXMuc2VsZWN0aW9uVGV4dC5sZW5ndGg8PTEmJnQ8NTAwJiZlLmFsdEtleSYmdGhpcy5fb3B0aW9uc1NlcnZpY2UuZ2V0T3B0aW9uKFwiYWx0Q2xpY2tNb3Zlc0N1cnNvclwiKSl7aWYodGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueWJhc2U9PT10aGlzLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcCl7dmFyIHI9dGhpcy5fbW91c2VTZXJ2aWNlLmdldENvb3JkcyhlLHRoaXMuX2VsZW1lbnQsdGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cywhMSk7aWYociYmdm9pZCAwIT09clswXSYmdm9pZCAwIT09clsxXSl7dmFyIGk9KDAsZC5tb3ZlVG9DZWxsU2VxdWVuY2UpKHJbMF0tMSxyWzFdLTEsdGhpcy5fYnVmZmVyU2VydmljZSx0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25DdXJzb3JLZXlzKTt0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KGksITApfX19ZWxzZSB0aGlzLl9maXJlRXZlbnRJZlNlbGVjdGlvbkNoYW5nZWQoKX0sdC5wcm90b3R5cGUuX2ZpcmVFdmVudElmU2VsZWN0aW9uQ2hhbmdlZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX21vZGVsLmZpbmFsU2VsZWN0aW9uU3RhcnQsdD10aGlzLl9tb2RlbC5maW5hbFNlbGVjdGlvbkVuZCxyPSEoIWV8fCF0fHxlWzBdPT09dFswXSYmZVsxXT09PXRbMV0pO3I/ZSYmdCYmKHRoaXMuX29sZFNlbGVjdGlvblN0YXJ0JiZ0aGlzLl9vbGRTZWxlY3Rpb25FbmQmJmVbMF09PT10aGlzLl9vbGRTZWxlY3Rpb25TdGFydFswXSYmZVsxXT09PXRoaXMuX29sZFNlbGVjdGlvblN0YXJ0WzFdJiZ0WzBdPT09dGhpcy5fb2xkU2VsZWN0aW9uRW5kWzBdJiZ0WzFdPT09dGhpcy5fb2xkU2VsZWN0aW9uRW5kWzFdfHx0aGlzLl9maXJlT25TZWxlY3Rpb25DaGFuZ2UoZSx0LHIpKTp0aGlzLl9vbGRIYXNTZWxlY3Rpb24mJnRoaXMuX2ZpcmVPblNlbGVjdGlvbkNoYW5nZShlLHQscil9LHQucHJvdG90eXBlLl9maXJlT25TZWxlY3Rpb25DaGFuZ2U9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX29sZFNlbGVjdGlvblN0YXJ0PWUsdGhpcy5fb2xkU2VsZWN0aW9uRW5kPXQsdGhpcy5fb2xkSGFzU2VsZWN0aW9uPXIsdGhpcy5fb25TZWxlY3Rpb25DaGFuZ2UuZmlyZSgpfSx0LnByb3RvdHlwZS5fb25CdWZmZXJBY3RpdmF0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLl90cmltTGlzdGVuZXIuZGlzcG9zZSgpLHRoaXMuX3RyaW1MaXN0ZW5lcj1lLmFjdGl2ZUJ1ZmZlci5saW5lcy5vblRyaW0oKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9vblRyaW0oZSl9KSl9LHQucHJvdG90eXBlLl9jb252ZXJ0Vmlld3BvcnRDb2xUb0NoYXJhY3RlckluZGV4PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRbMF0saT0wO3RbMF0+PWk7aSsrKXt2YXIgbj1lLmxvYWRDZWxsKGksdGhpcy5fd29ya0NlbGwpLmdldENoYXJzKCkubGVuZ3RoOzA9PT10aGlzLl93b3JrQ2VsbC5nZXRXaWR0aCgpP3ItLTpuPjEmJnRbMF0hPT1pJiYocis9bi0xKX1yZXR1cm4gcn0sdC5wcm90b3R5cGUuc2V0U2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9tb2RlbC5jbGVhclNlbGVjdGlvbigpLHRoaXMuX3JlbW92ZU1vdXNlRG93bkxpc3RlbmVycygpLHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0PVtlLHRdLHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0TGVuZ3RoPXIsdGhpcy5yZWZyZXNoKCksdGhpcy5fZmlyZUV2ZW50SWZTZWxlY3Rpb25DaGFuZ2VkKCl9LHQucHJvdG90eXBlLnJpZ2h0Q2xpY2tTZWxlY3Q9ZnVuY3Rpb24oZSl7dGhpcy5faXNDbGlja0luU2VsZWN0aW9uKGUpfHwodGhpcy5fc2VsZWN0V29yZEF0Q3Vyc29yKGUsITEpJiZ0aGlzLnJlZnJlc2goITApLHRoaXMuX2ZpcmVFdmVudElmU2VsZWN0aW9uQ2hhbmdlZCgpKX0sdC5wcm90b3R5cGUuX2dldFdvcmRBdD1mdW5jdGlvbihlLHQscixpKXtpZih2b2lkIDA9PT1yJiYocj0hMCksdm9pZCAwPT09aSYmKGk9ITApLCEoZVswXT49dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKSl7dmFyIG49dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIsbz1uLmxpbmVzLmdldChlWzFdKTtpZihvKXt2YXIgcz1uLnRyYW5zbGF0ZUJ1ZmZlckxpbmVUb1N0cmluZyhlWzFdLCExKSxhPXRoaXMuX2NvbnZlcnRWaWV3cG9ydENvbFRvQ2hhcmFjdGVySW5kZXgobyxlKSxjPWEsbD1lWzBdLWEsaD0wLHU9MCxmPTAsXz0wO2lmKFwiIFwiPT09cy5jaGFyQXQoYSkpe2Zvcig7YT4wJiZcIiBcIj09PXMuY2hhckF0KGEtMSk7KWEtLTtmb3IoO2M8cy5sZW5ndGgmJlwiIFwiPT09cy5jaGFyQXQoYysxKTspYysrfWVsc2V7dmFyIGQ9ZVswXSxwPWVbMF07MD09PW8uZ2V0V2lkdGgoZCkmJihoKyssZC0tKSwyPT09by5nZXRXaWR0aChwKSYmKHUrKyxwKyspO3ZhciB2PW8uZ2V0U3RyaW5nKHApLmxlbmd0aDtmb3Iodj4xJiYoXys9di0xLGMrPXYtMSk7ZD4wJiZhPjAmJiF0aGlzLl9pc0NoYXJXb3JkU2VwYXJhdG9yKG8ubG9hZENlbGwoZC0xLHRoaXMuX3dvcmtDZWxsKSk7KXtvLmxvYWRDZWxsKGQtMSx0aGlzLl93b3JrQ2VsbCk7dmFyIHk9dGhpcy5fd29ya0NlbGwuZ2V0Q2hhcnMoKS5sZW5ndGg7MD09PXRoaXMuX3dvcmtDZWxsLmdldFdpZHRoKCk/KGgrKyxkLS0pOnk+MSYmKGYrPXktMSxhLT15LTEpLGEtLSxkLS19Zm9yKDtwPG8ubGVuZ3RoJiZjKzE8cy5sZW5ndGgmJiF0aGlzLl9pc0NoYXJXb3JkU2VwYXJhdG9yKG8ubG9hZENlbGwocCsxLHRoaXMuX3dvcmtDZWxsKSk7KXtvLmxvYWRDZWxsKHArMSx0aGlzLl93b3JrQ2VsbCk7dmFyIGc9dGhpcy5fd29ya0NlbGwuZ2V0Q2hhcnMoKS5sZW5ndGg7Mj09PXRoaXMuX3dvcmtDZWxsLmdldFdpZHRoKCk/KHUrKyxwKyspOmc+MSYmKF8rPWctMSxjKz1nLTEpLGMrKyxwKyt9fWMrKzt2YXIgbT1hK2wtaCtmLGI9TWF0aC5taW4odGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLGMtYStoK3UtZi1fKTtpZih0fHxcIlwiIT09cy5zbGljZShhLGMpLnRyaW0oKSl7aWYociYmMD09PW0mJjMyIT09by5nZXRDb2RlUG9pbnQoMCkpe3ZhciBTPW4ubGluZXMuZ2V0KGVbMV0tMSk7aWYoUyYmby5pc1dyYXBwZWQmJjMyIT09Uy5nZXRDb2RlUG9pbnQodGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLTEpKXt2YXIgQz10aGlzLl9nZXRXb3JkQXQoW3RoaXMuX2J1ZmZlclNlcnZpY2UuY29scy0xLGVbMV0tMV0sITEsITAsITEpO2lmKEMpe3ZhciB3PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scy1DLnN0YXJ0O20tPXcsYis9d319fWlmKGkmJm0rYj09PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyYmMzIhPT1vLmdldENvZGVQb2ludCh0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMSkpe3ZhciBMPW4ubGluZXMuZ2V0KGVbMV0rMSk7aWYoKG51bGw9PUw/dm9pZCAwOkwuaXNXcmFwcGVkKSYmMzIhPT1MLmdldENvZGVQb2ludCgwKSl7dmFyIEU9dGhpcy5fZ2V0V29yZEF0KFswLGVbMV0rMV0sITEsITEsITApO0UmJihiKz1FLmxlbmd0aCl9fXJldHVybntzdGFydDptLGxlbmd0aDpifX19fX0sdC5wcm90b3R5cGUuX3NlbGVjdFdvcmRBdD1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX2dldFdvcmRBdChlLHQpO2lmKHIpe2Zvcig7ci5zdGFydDwwOylyLnN0YXJ0Kz10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsZVsxXS0tO3RoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0PVtyLnN0YXJ0LGVbMV1dLHRoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0TGVuZ3RoPXIubGVuZ3RofX0sdC5wcm90b3R5cGUuX3NlbGVjdFRvV29yZEF0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2dldFdvcmRBdChlLCEwKTtpZih0KXtmb3IodmFyIHI9ZVsxXTt0LnN0YXJ0PDA7KXQuc3RhcnQrPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxyLS07aWYoIXRoaXMuX21vZGVsLmFyZVNlbGVjdGlvblZhbHVlc1JldmVyc2VkKCkpZm9yKDt0LnN0YXJ0K3QubGVuZ3RoPnRoaXMuX2J1ZmZlclNlcnZpY2UuY29sczspdC5sZW5ndGgtPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxyKys7dGhpcy5fbW9kZWwuc2VsZWN0aW9uRW5kPVt0aGlzLl9tb2RlbC5hcmVTZWxlY3Rpb25WYWx1ZXNSZXZlcnNlZCgpP3Quc3RhcnQ6dC5zdGFydCt0Lmxlbmd0aCxyXX19LHQucHJvdG90eXBlLl9pc0NoYXJXb3JkU2VwYXJhdG9yPWZ1bmN0aW9uKGUpe3JldHVybiAwIT09ZS5nZXRXaWR0aCgpJiZ0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndvcmRTZXBhcmF0b3IuaW5kZXhPZihlLmdldENoYXJzKCkpPj0wfSx0LnByb3RvdHlwZS5fc2VsZWN0TGluZUF0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLmdldFdyYXBwZWRSYW5nZUZvckxpbmUoZSkscj17c3RhcnQ6e3g6MCx5OnQuZmlyc3R9LGVuZDp7eDp0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMtMSx5OnQubGFzdH19O3RoaXMuX21vZGVsLnNlbGVjdGlvblN0YXJ0PVswLHQuZmlyc3RdLHRoaXMuX21vZGVsLnNlbGVjdGlvbkVuZD12b2lkIDAsdGhpcy5fbW9kZWwuc2VsZWN0aW9uU3RhcnRMZW5ndGg9KDAsdi5nZXRSYW5nZUxlbmd0aCkocix0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpfSxvKFtzKDMsZi5JQnVmZmVyU2VydmljZSkscyg0LGYuSUNvcmVTZXJ2aWNlKSxzKDUsdS5JTW91c2VTZXJ2aWNlKSxzKDYsZi5JT3B0aW9uc1NlcnZpY2UpLHMoNyx1LklSZW5kZXJTZXJ2aWNlKV0sdCl9KHAuRGlzcG9zYWJsZSk7dC5TZWxlY3Rpb25TZXJ2aWNlPW19LDQ3MjU6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSUNoYXJhY3RlckpvaW5lclNlcnZpY2U9dC5JU291bmRTZXJ2aWNlPXQuSVNlbGVjdGlvblNlcnZpY2U9dC5JUmVuZGVyU2VydmljZT10LklNb3VzZVNlcnZpY2U9dC5JQ29yZUJyb3dzZXJTZXJ2aWNlPXQuSUNoYXJTaXplU2VydmljZT12b2lkIDA7dmFyIGk9cig4MzQzKTt0LklDaGFyU2l6ZVNlcnZpY2U9KDAsaS5jcmVhdGVEZWNvcmF0b3IpKFwiQ2hhclNpemVTZXJ2aWNlXCIpLHQuSUNvcmVCcm93c2VyU2VydmljZT0oMCxpLmNyZWF0ZURlY29yYXRvcikoXCJDb3JlQnJvd3NlclNlcnZpY2VcIiksdC5JTW91c2VTZXJ2aWNlPSgwLGkuY3JlYXRlRGVjb3JhdG9yKShcIk1vdXNlU2VydmljZVwiKSx0LklSZW5kZXJTZXJ2aWNlPSgwLGkuY3JlYXRlRGVjb3JhdG9yKShcIlJlbmRlclNlcnZpY2VcIiksdC5JU2VsZWN0aW9uU2VydmljZT0oMCxpLmNyZWF0ZURlY29yYXRvcikoXCJTZWxlY3Rpb25TZXJ2aWNlXCIpLHQuSVNvdW5kU2VydmljZT0oMCxpLmNyZWF0ZURlY29yYXRvcikoXCJTb3VuZFNlcnZpY2VcIiksdC5JQ2hhcmFjdGVySm9pbmVyU2VydmljZT0oMCxpLmNyZWF0ZURlY29yYXRvcikoXCJDaGFyYWN0ZXJKb2luZXJTZXJ2aWNlXCIpfSwzNTc6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMmJnRoaXMuX19kZWNvcmF0ZXx8ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6aTtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LHIsaSk7ZWxzZSBmb3IodmFyIGE9ZS5sZW5ndGgtMTthPj0wO2EtLSkobj1lW2FdKSYmKHM9KG88Mz9uKHMpOm8+Mz9uKHQscixzKTpuKHQscikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHMpLHN9LG49dGhpcyYmdGhpcy5fX3BhcmFtfHxmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihyLGkpe3QocixpLGUpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Tb3VuZFNlcnZpY2U9dm9pZCAwO3ZhciBvPXIoMjU4NSkscz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fb3B0aW9uc1NlcnZpY2U9ZX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJhdWRpb0NvbnRleHRcIix7Z2V0OmZ1bmN0aW9uKCl7aWYoIWUuX2F1ZGlvQ29udGV4dCl7dmFyIHQ9d2luZG93LkF1ZGlvQ29udGV4dHx8d2luZG93LndlYmtpdEF1ZGlvQ29udGV4dDtpZighdClyZXR1cm4gY29uc29sZS53YXJuKFwiV2ViIEF1ZGlvIEFQSSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci4gQ29uc2lkZXIgdXBncmFkaW5nIHRvIHRoZSBsYXRlc3QgdmVyc2lvblwiKSxudWxsO2UuX2F1ZGlvQ29udGV4dD1uZXcgdH1yZXR1cm4gZS5fYXVkaW9Db250ZXh0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnBsYXlCZWxsU291bmQ9ZnVuY3Rpb24oKXt2YXIgdD1lLmF1ZGlvQ29udGV4dDtpZih0KXt2YXIgcj10LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpO3QuZGVjb2RlQXVkaW9EYXRhKHRoaXMuX2Jhc2U2NFRvQXJyYXlCdWZmZXIodGhpcy5fcmVtb3ZlTWltZVR5cGUodGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5iZWxsU291bmQpKSwoZnVuY3Rpb24oZSl7ci5idWZmZXI9ZSxyLmNvbm5lY3QodC5kZXN0aW5hdGlvbiksci5zdGFydCgwKX0pKX19LGUucHJvdG90eXBlLl9iYXNlNjRUb0FycmF5QnVmZmVyPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD13aW5kb3cuYXRvYihlKSxyPXQubGVuZ3RoLGk9bmV3IFVpbnQ4QXJyYXkociksbj0wO248cjtuKyspaVtuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIGkuYnVmZmVyfSxlLnByb3RvdHlwZS5fcmVtb3ZlTWltZVR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoXCIsXCIpWzFdfSxlPWkoW24oMCxvLklPcHRpb25zU2VydmljZSldLGUpfSgpO3QuU291bmRTZXJ2aWNlPXN9LDYzNDk6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2lyY3VsYXJMaXN0PXZvaWQgMDt2YXIgaT1yKDg0NjApLG49ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuX21heExlbmd0aD1lLHRoaXMub25EZWxldGVFbWl0dGVyPW5ldyBpLkV2ZW50RW1pdHRlcix0aGlzLm9uSW5zZXJ0RW1pdHRlcj1uZXcgaS5FdmVudEVtaXR0ZXIsdGhpcy5vblRyaW1FbWl0dGVyPW5ldyBpLkV2ZW50RW1pdHRlcix0aGlzLl9hcnJheT1uZXcgQXJyYXkodGhpcy5fbWF4TGVuZ3RoKSx0aGlzLl9zdGFydEluZGV4PTAsdGhpcy5fbGVuZ3RoPTB9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uRGVsZXRlXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9uRGVsZXRlRW1pdHRlci5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJvbkluc2VydFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbkluc2VydEVtaXR0ZXIuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwib25UcmltXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9uVHJpbUVtaXR0ZXIuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwibWF4TGVuZ3RoXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhMZW5ndGh9LHNldDpmdW5jdGlvbihlKXtpZih0aGlzLl9tYXhMZW5ndGghPT1lKXtmb3IodmFyIHQ9bmV3IEFycmF5KGUpLHI9MDtyPE1hdGgubWluKGUsdGhpcy5sZW5ndGgpO3IrKyl0W3JdPXRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KHIpXTt0aGlzLl9hcnJheT10LHRoaXMuX21heExlbmd0aD1lLHRoaXMuX3N0YXJ0SW5kZXg9MH19LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwibGVuZ3RoXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sZW5ndGh9LHNldDpmdW5jdGlvbihlKXtpZihlPnRoaXMuX2xlbmd0aClmb3IodmFyIHQ9dGhpcy5fbGVuZ3RoO3Q8ZTt0KyspdGhpcy5fYXJyYXlbdF09dm9pZCAwO3RoaXMuX2xlbmd0aD1lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXJyYXlbdGhpcy5fZ2V0Q3ljbGljSW5kZXgoZSldfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt0aGlzLl9hcnJheVt0aGlzLl9nZXRDeWNsaWNJbmRleChlKV09dH0sZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXt0aGlzLl9hcnJheVt0aGlzLl9nZXRDeWNsaWNJbmRleCh0aGlzLl9sZW5ndGgpXT1lLHRoaXMuX2xlbmd0aD09PXRoaXMuX21heExlbmd0aD8odGhpcy5fc3RhcnRJbmRleD0rK3RoaXMuX3N0YXJ0SW5kZXgldGhpcy5fbWF4TGVuZ3RoLHRoaXMub25UcmltRW1pdHRlci5maXJlKDEpKTp0aGlzLl9sZW5ndGgrK30sZS5wcm90b3R5cGUucmVjeWNsZT1mdW5jdGlvbigpe2lmKHRoaXMuX2xlbmd0aCE9PXRoaXMuX21heExlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJDYW4gb25seSByZWN5Y2xlIHdoZW4gdGhlIGJ1ZmZlciBpcyBmdWxsXCIpO3JldHVybiB0aGlzLl9zdGFydEluZGV4PSsrdGhpcy5fc3RhcnRJbmRleCV0aGlzLl9tYXhMZW5ndGgsdGhpcy5vblRyaW1FbWl0dGVyLmZpcmUoMSksdGhpcy5fYXJyYXlbdGhpcy5fZ2V0Q3ljbGljSW5kZXgodGhpcy5fbGVuZ3RoLTEpXX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiaXNGdWxsXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sZW5ndGg9PT10aGlzLl9tYXhMZW5ndGh9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KHRoaXMuX2xlbmd0aC0tLTEpXX0sZS5wcm90b3R5cGUuc3BsaWNlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPVtdLGk9MjtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXJbaS0yXT1hcmd1bWVudHNbaV07aWYodCl7Zm9yKHZhciBuPWU7bjx0aGlzLl9sZW5ndGgtdDtuKyspdGhpcy5fYXJyYXlbdGhpcy5fZ2V0Q3ljbGljSW5kZXgobildPXRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KG4rdCldO3RoaXMuX2xlbmd0aC09dCx0aGlzLm9uRGVsZXRlRW1pdHRlci5maXJlKHtpbmRleDplLGFtb3VudDp0fSl9Zm9yKG49dGhpcy5fbGVuZ3RoLTE7bj49ZTtuLS0pdGhpcy5fYXJyYXlbdGhpcy5fZ2V0Q3ljbGljSW5kZXgobityLmxlbmd0aCldPXRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KG4pXTtmb3Iobj0wO248ci5sZW5ndGg7bisrKXRoaXMuX2FycmF5W3RoaXMuX2dldEN5Y2xpY0luZGV4KGUrbildPXJbbl07aWYoci5sZW5ndGgmJnRoaXMub25JbnNlcnRFbWl0dGVyLmZpcmUoe2luZGV4OmUsYW1vdW50OnIubGVuZ3RofSksdGhpcy5fbGVuZ3RoK3IubGVuZ3RoPnRoaXMuX21heExlbmd0aCl7dmFyIG89dGhpcy5fbGVuZ3RoK3IubGVuZ3RoLXRoaXMuX21heExlbmd0aDt0aGlzLl9zdGFydEluZGV4Kz1vLHRoaXMuX2xlbmd0aD10aGlzLl9tYXhMZW5ndGgsdGhpcy5vblRyaW1FbWl0dGVyLmZpcmUobyl9ZWxzZSB0aGlzLl9sZW5ndGgrPXIubGVuZ3RofSxlLnByb3RvdHlwZS50cmltU3RhcnQ9ZnVuY3Rpb24oZSl7ZT50aGlzLl9sZW5ndGgmJihlPXRoaXMuX2xlbmd0aCksdGhpcy5fc3RhcnRJbmRleCs9ZSx0aGlzLl9sZW5ndGgtPWUsdGhpcy5vblRyaW1FbWl0dGVyLmZpcmUoZSl9LGUucHJvdG90eXBlLnNoaWZ0RWxlbWVudHM9ZnVuY3Rpb24oZSx0LHIpe2lmKCEodDw9MCkpe2lmKGU8MHx8ZT49dGhpcy5fbGVuZ3RoKXRocm93IG5ldyBFcnJvcihcInN0YXJ0IGFyZ3VtZW50IG91dCBvZiByYW5nZVwiKTtpZihlK3I8MCl0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2hpZnQgZWxlbWVudHMgaW4gbGlzdCBiZXlvbmQgaW5kZXggMFwiKTtpZihyPjApe2Zvcih2YXIgaT10LTE7aT49MDtpLS0pdGhpcy5zZXQoZStpK3IsdGhpcy5nZXQoZStpKSk7dmFyIG49ZSt0K3ItdGhpcy5fbGVuZ3RoO2lmKG4+MClmb3IodGhpcy5fbGVuZ3RoKz1uO3RoaXMuX2xlbmd0aD50aGlzLl9tYXhMZW5ndGg7KXRoaXMuX2xlbmd0aC0tLHRoaXMuX3N0YXJ0SW5kZXgrKyx0aGlzLm9uVHJpbUVtaXR0ZXIuZmlyZSgxKX1lbHNlIGZvcihpPTA7aTx0O2krKyl0aGlzLnNldChlK2krcix0aGlzLmdldChlK2kpKX19LGUucHJvdG90eXBlLl9nZXRDeWNsaWNJbmRleD1mdW5jdGlvbihlKXtyZXR1cm4odGhpcy5fc3RhcnRJbmRleCtlKSV0aGlzLl9tYXhMZW5ndGh9LGV9KCk7dC5DaXJjdWxhckxpc3Q9bn0sMTQzOTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY2xvbmU9dm9pZCAwLHQuY2xvbmU9ZnVuY3Rpb24gZSh0LHIpe2lmKHZvaWQgMD09PXImJihyPTUpLFwib2JqZWN0XCIhPXR5cGVvZiB0KXJldHVybiB0O3ZhciBpPUFycmF5LmlzQXJyYXkodCk/W106e307Zm9yKHZhciBuIGluIHQpaVtuXT1yPD0xP3Rbbl06dFtuXSYmZSh0W25dLHItMSk7cmV0dXJuIGl9fSw4MDU1OmZ1bmN0aW9uKGUsdCl7dmFyIHIsaSxuLG8scz10aGlzJiZ0aGlzLl9fcmVhZHx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXTtpZighcilyZXR1cm4gZTt2YXIgaSxuLG89ci5jYWxsKGUpLHM9W107dHJ5e2Zvcig7KHZvaWQgMD09PXR8fHQtLSA+MCkmJiEoaT1vLm5leHQoKSkuZG9uZTspcy5wdXNoKGkudmFsdWUpfWNhdGNoKGUpe249e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2kmJiFpLmRvbmUmJihyPW8ucmV0dXJuKSYmci5jYWxsKG8pfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gc307ZnVuY3Rpb24gYShlKXt2YXIgdD1lLnRvU3RyaW5nKDE2KTtyZXR1cm4gdC5sZW5ndGg8Mj9cIjBcIit0OnR9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiBlPHQ/KHQrLjA1KS8oZSsuMDUpOihlKy4wNSkvKHQrLjA1KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNvbnRyYXN0UmF0aW89dC50b1BhZGRlZEhleD10LnJnYmE9dC5yZ2I9dC5jc3M9dC5jb2xvcj10LmNoYW5uZWxzPXZvaWQgMCxmdW5jdGlvbihlKXtlLnRvQ3NzPWZ1bmN0aW9uKGUsdCxyLGkpe3JldHVybiB2b2lkIDAhPT1pP1wiI1wiK2EoZSkrYSh0KSthKHIpK2EoaSk6XCIjXCIrYShlKSthKHQpK2Eocil9LGUudG9SZ2JhPWZ1bmN0aW9uKGUsdCxyLGkpe3JldHVybiB2b2lkIDA9PT1pJiYoaT0yNTUpLChlPDwyNHx0PDwxNnxyPDw4fGkpPj4+MH19KHI9dC5jaGFubmVsc3x8KHQuY2hhbm5lbHM9e30pKSwoaT10LmNvbG9yfHwodC5jb2xvcj17fSkpLmJsZW5kPWZ1bmN0aW9uKGUsdCl7dmFyIGk9KDI1NSZ0LnJnYmEpLzI1NTtpZigxPT09aSlyZXR1cm57Y3NzOnQuY3NzLHJnYmE6dC5yZ2JhfTt2YXIgbj10LnJnYmE+PjI0JjI1NSxvPXQucmdiYT4+MTYmMjU1LHM9dC5yZ2JhPj44JjI1NSxhPWUucmdiYT4+MjQmMjU1LGM9ZS5yZ2JhPj4xNiYyNTUsbD1lLnJnYmE+PjgmMjU1LGg9YStNYXRoLnJvdW5kKChuLWEpKmkpLHU9YytNYXRoLnJvdW5kKChvLWMpKmkpLGY9bCtNYXRoLnJvdW5kKChzLWwpKmkpO3JldHVybntjc3M6ci50b0NzcyhoLHUsZikscmdiYTpyLnRvUmdiYShoLHUsZil9fSxpLmlzT3BhcXVlPWZ1bmN0aW9uKGUpe3JldHVybiAyNTU9PSgyNTUmZS5yZ2JhKX0saS5lbnN1cmVDb250cmFzdFJhdGlvPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1vLmVuc3VyZUNvbnRyYXN0UmF0aW8oZS5yZ2JhLHQucmdiYSxyKTtpZihpKXJldHVybiBvLnRvQ29sb3IoaT4+MjQmMjU1LGk+PjE2JjI1NSxpPj44JjI1NSl9LGkub3BhcXVlPWZ1bmN0aW9uKGUpe3ZhciB0PSgyNTV8ZS5yZ2JhKT4+PjAsaT1zKG8udG9DaGFubmVscyh0KSwzKSxuPWlbMF0sYT1pWzFdLGM9aVsyXTtyZXR1cm57Y3NzOnIudG9Dc3MobixhLGMpLHJnYmE6dH19LGkub3BhY2l0eT1mdW5jdGlvbihlLHQpe3ZhciBpPU1hdGgucm91bmQoMjU1KnQpLG49cyhvLnRvQ2hhbm5lbHMoZS5yZ2JhKSwzKSxhPW5bMF0sYz1uWzFdLGw9blsyXTtyZXR1cm57Y3NzOnIudG9Dc3MoYSxjLGwsaSkscmdiYTpyLnRvUmdiYShhLGMsbCxpKX19LGkudG9Db2xvclJHQj1mdW5jdGlvbihlKXtyZXR1cm5bZS5yZ2JhPj4yNCYyNTUsZS5yZ2JhPj4xNiYyNTUsZS5yZ2JhPj44JjI1NV19LCh0LmNzc3x8KHQuY3NzPXt9KSkudG9Db2xvcj1mdW5jdGlvbihlKXtpZihlLm1hdGNoKC8jWzAtOWEtZl17Myw4fS9pKSlzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgNDp2YXIgdD1wYXJzZUludChlLnNsaWNlKDEsMikucmVwZWF0KDIpLDE2KSxyPXBhcnNlSW50KGUuc2xpY2UoMiwzKS5yZXBlYXQoMiksMTYpLGk9cGFyc2VJbnQoZS5zbGljZSgzLDQpLnJlcGVhdCgyKSwxNik7cmV0dXJuIG8udG9Db2xvcih0LHIsaSk7Y2FzZSA1OnQ9cGFyc2VJbnQoZS5zbGljZSgxLDIpLnJlcGVhdCgyKSwxNikscj1wYXJzZUludChlLnNsaWNlKDIsMykucmVwZWF0KDIpLDE2KSxpPXBhcnNlSW50KGUuc2xpY2UoMyw0KS5yZXBlYXQoMiksMTYpO3ZhciBuPXBhcnNlSW50KGUuc2xpY2UoNCw1KS5yZXBlYXQoMiksMTYpO3JldHVybiBvLnRvQ29sb3IodCxyLGksbik7Y2FzZSA3OnJldHVybntjc3M6ZSxyZ2JhOihwYXJzZUludChlLnNsaWNlKDEpLDE2KTw8OHwyNTUpPj4+MH07Y2FzZSA5OnJldHVybntjc3M6ZSxyZ2JhOnBhcnNlSW50KGUuc2xpY2UoMSksMTYpPj4+MH19dmFyIHM9ZS5tYXRjaCgvcmdiYT9cXChcXHMqKFxcZHsxLDN9KVxccyosXFxzKihcXGR7MSwzfSlcXHMqLFxccyooXFxkezEsM30pXFxzKigsXFxzKigwfDF8XFxkP1xcLihcXGQrKSlcXHMqKT9cXCkvKTtpZihzKXJldHVybiB0PXBhcnNlSW50KHNbMV0pLHI9cGFyc2VJbnQoc1syXSksaT1wYXJzZUludChzWzNdKSxuPU1hdGgucm91bmQoMjU1Kih2b2lkIDA9PT1zWzVdPzE6cGFyc2VGbG9hdChzWzVdKSkpLG8udG9Db2xvcih0LHIsaSxuKTt0aHJvdyBuZXcgRXJyb3IoXCJjc3MudG9Db2xvcjogVW5zdXBwb3J0ZWQgY3NzIGZvcm1hdFwiKX0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQscil7dmFyIGk9ZS8yNTUsbj10LzI1NSxvPXIvMjU1O3JldHVybi4yMTI2KihpPD0uMDM5Mjg/aS8xMi45MjpNYXRoLnBvdygoaSsuMDU1KS8xLjA1NSwyLjQpKSsuNzE1Mioobjw9LjAzOTI4P24vMTIuOTI6TWF0aC5wb3coKG4rLjA1NSkvMS4wNTUsMi40KSkrLjA3MjIqKG88PS4wMzkyOD9vLzEyLjkyOk1hdGgucG93KChvKy4wNTUpLzEuMDU1LDIuNCkpfWUucmVsYXRpdmVMdW1pbmFuY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlKX0sZS5yZWxhdGl2ZUx1bWluYW5jZTI9dH0obj10LnJnYnx8KHQucmdiPXt9KSksZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQscil7Zm9yKHZhciBpPWU+PjI0JjI1NSxvPWU+PjE2JjI1NSxzPWU+PjgmMjU1LGE9dD4+MjQmMjU1LGw9dD4+MTYmMjU1LGg9dD4+OCYyNTUsdT1jKG4ucmVsYXRpdmVMdW1pbmFuY2UyKGEsbCxoKSxuLnJlbGF0aXZlTHVtaW5hbmNlMihpLG8scykpO3U8ciYmKGE+MHx8bD4wfHxoPjApOylhLT1NYXRoLm1heCgwLE1hdGguY2VpbCguMSphKSksbC09TWF0aC5tYXgoMCxNYXRoLmNlaWwoLjEqbCkpLGgtPU1hdGgubWF4KDAsTWF0aC5jZWlsKC4xKmgpKSx1PWMobi5yZWxhdGl2ZUx1bWluYW5jZTIoYSxsLGgpLG4ucmVsYXRpdmVMdW1pbmFuY2UyKGksbyxzKSk7cmV0dXJuKGE8PDI0fGw8PDE2fGg8PDh8MjU1KT4+PjB9ZnVuY3Rpb24gaShlLHQscil7Zm9yKHZhciBpPWU+PjI0JjI1NSxvPWU+PjE2JjI1NSxzPWU+PjgmMjU1LGE9dD4+MjQmMjU1LGw9dD4+MTYmMjU1LGg9dD4+OCYyNTUsdT1jKG4ucmVsYXRpdmVMdW1pbmFuY2UyKGEsbCxoKSxuLnJlbGF0aXZlTHVtaW5hbmNlMihpLG8scykpO3U8ciYmKGE8MjU1fHxsPDI1NXx8aDwyNTUpOylhPU1hdGgubWluKDI1NSxhK01hdGguY2VpbCguMSooMjU1LWEpKSksbD1NYXRoLm1pbigyNTUsbCtNYXRoLmNlaWwoLjEqKDI1NS1sKSkpLGg9TWF0aC5taW4oMjU1LGgrTWF0aC5jZWlsKC4xKigyNTUtaCkpKSx1PWMobi5yZWxhdGl2ZUx1bWluYW5jZTIoYSxsLGgpLG4ucmVsYXRpdmVMdW1pbmFuY2UyKGksbyxzKSk7cmV0dXJuKGE8PDI0fGw8PDE2fGg8PDh8MjU1KT4+PjB9ZS5lbnN1cmVDb250cmFzdFJhdGlvPWZ1bmN0aW9uKGUscixvKXt2YXIgcz1uLnJlbGF0aXZlTHVtaW5hbmNlKGU+PjgpLGE9bi5yZWxhdGl2ZUx1bWluYW5jZShyPj44KTtpZihjKHMsYSk8byl7aWYoYTxzKXt2YXIgbD10KGUscixvKSxoPWMocyxuLnJlbGF0aXZlTHVtaW5hbmNlKGw+PjgpKTtpZihoPG8pe3ZhciB1PWkoZSxlLG8pO3JldHVybiBoPmMocyxuLnJlbGF0aXZlTHVtaW5hbmNlKHU+PjgpKT9sOnV9cmV0dXJuIGx9dmFyIGY9aShlLHIsbyksXz1jKHMsbi5yZWxhdGl2ZUx1bWluYW5jZShmPj44KSk7cmV0dXJuIF88bz8odT10KGUsZSxvKSxfPmMocyxuLnJlbGF0aXZlTHVtaW5hbmNlKHU+PjgpKT9mOnUpOmZ9fSxlLnJlZHVjZUx1bWluYW5jZT10LGUuaW5jcmVhc2VMdW1pbmFuY2U9aSxlLnRvQ2hhbm5lbHM9ZnVuY3Rpb24oZSl7cmV0dXJuW2U+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdfSxlLnRvQ29sb3I9ZnVuY3Rpb24oZSx0LGksbil7cmV0dXJue2NzczpyLnRvQ3NzKGUsdCxpLG4pLHJnYmE6ci50b1JnYmEoZSx0LGksbil9fX0obz10LnJnYmF8fCh0LnJnYmE9e30pKSx0LnRvUGFkZGVkSGV4PWEsdC5jb250cmFzdFJhdGlvPWN9LDg5Njk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG49dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pfSxpKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1pKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KTooci5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IHIpfSksbz10aGlzJiZ0aGlzLl9fdmFsdWVzfHxmdW5jdGlvbihlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixyPXQmJmVbdF0saT0wO2lmKHIpcmV0dXJuIHIuY2FsbChlKTtpZihlJiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSYmaT49ZS5sZW5ndGgmJihlPXZvaWQgMCkse3ZhbHVlOmUmJmVbaSsrXSxkb25lOiFlfX19O3Rocm93IG5ldyBUeXBlRXJyb3IodD9cIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCI6XCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvcmVUZXJtaW5hbD12b2lkIDA7dmFyIHM9cig4NDQpLGE9cigyNTg1KSxjPXIoNDM0OCksbD1yKDc4NjYpLGg9cig3NDQpLHU9cig3MzAyKSxmPXIoNjk3NSksXz1yKDg0NjApLGQ9cigxNzUzKSxwPXIoMzczMCksdj1yKDE0ODApLHk9cig3OTk0KSxnPXIoOTI4MiksbT1yKDU0MzUpLGI9cig1OTgxKSxTPSExLEM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0KXt2YXIgcj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuX29uQmluYXJ5PW5ldyBfLkV2ZW50RW1pdHRlcixyLl9vbkRhdGE9bmV3IF8uRXZlbnRFbWl0dGVyLHIuX29uTGluZUZlZWQ9bmV3IF8uRXZlbnRFbWl0dGVyLHIuX29uUmVzaXplPW5ldyBfLkV2ZW50RW1pdHRlcixyLl9vblNjcm9sbD1uZXcgXy5FdmVudEVtaXR0ZXIsci5fb25Xcml0ZVBhcnNlZD1uZXcgXy5FdmVudEVtaXR0ZXIsci5faW5zdGFudGlhdGlvblNlcnZpY2U9bmV3IGMuSW5zdGFudGlhdGlvblNlcnZpY2Usci5vcHRpb25zU2VydmljZT1uZXcgdS5PcHRpb25zU2VydmljZSh0KSxyLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKGEuSU9wdGlvbnNTZXJ2aWNlLHIub3B0aW9uc1NlcnZpY2UpLHIuX2J1ZmZlclNlcnZpY2U9ci5yZWdpc3RlcihyLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShoLkJ1ZmZlclNlcnZpY2UpKSxyLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKGEuSUJ1ZmZlclNlcnZpY2Usci5fYnVmZmVyU2VydmljZSksci5fbG9nU2VydmljZT1yLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShsLkxvZ1NlcnZpY2UpLHIuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2UoYS5JTG9nU2VydmljZSxyLl9sb2dTZXJ2aWNlKSxyLmNvcmVTZXJ2aWNlPXIucmVnaXN0ZXIoci5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoZi5Db3JlU2VydmljZSwoZnVuY3Rpb24oKXtyZXR1cm4gci5zY3JvbGxUb0JvdHRvbSgpfSkpKSxyLl9pbnN0YW50aWF0aW9uU2VydmljZS5zZXRTZXJ2aWNlKGEuSUNvcmVTZXJ2aWNlLHIuY29yZVNlcnZpY2UpLHIuY29yZU1vdXNlU2VydmljZT1yLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShkLkNvcmVNb3VzZVNlcnZpY2UpLHIuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2UoYS5JQ29yZU1vdXNlU2VydmljZSxyLmNvcmVNb3VzZVNlcnZpY2UpLHIuX2RpcnR5Um93U2VydmljZT1yLl9pbnN0YW50aWF0aW9uU2VydmljZS5jcmVhdGVJbnN0YW5jZShwLkRpcnR5Um93U2VydmljZSksci5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShhLklEaXJ0eVJvd1NlcnZpY2Usci5fZGlydHlSb3dTZXJ2aWNlKSxyLnVuaWNvZGVTZXJ2aWNlPXIuX2luc3RhbnRpYXRpb25TZXJ2aWNlLmNyZWF0ZUluc3RhbmNlKHYuVW5pY29kZVNlcnZpY2UpLHIuX2luc3RhbnRpYXRpb25TZXJ2aWNlLnNldFNlcnZpY2UoYS5JVW5pY29kZVNlcnZpY2Usci51bmljb2RlU2VydmljZSksci5fY2hhcnNldFNlcnZpY2U9ci5faW5zdGFudGlhdGlvblNlcnZpY2UuY3JlYXRlSW5zdGFuY2UoeS5DaGFyc2V0U2VydmljZSksci5faW5zdGFudGlhdGlvblNlcnZpY2Uuc2V0U2VydmljZShhLklDaGFyc2V0U2VydmljZSxyLl9jaGFyc2V0U2VydmljZSksci5faW5wdXRIYW5kbGVyPW5ldyBtLklucHV0SGFuZGxlcihyLl9idWZmZXJTZXJ2aWNlLHIuX2NoYXJzZXRTZXJ2aWNlLHIuY29yZVNlcnZpY2Usci5fZGlydHlSb3dTZXJ2aWNlLHIuX2xvZ1NlcnZpY2Usci5vcHRpb25zU2VydmljZSxyLmNvcmVNb3VzZVNlcnZpY2Usci51bmljb2RlU2VydmljZSksci5yZWdpc3RlcigoMCxfLmZvcndhcmRFdmVudCkoci5faW5wdXRIYW5kbGVyLm9uTGluZUZlZWQsci5fb25MaW5lRmVlZCkpLHIucmVnaXN0ZXIoci5faW5wdXRIYW5kbGVyKSxyLnJlZ2lzdGVyKCgwLF8uZm9yd2FyZEV2ZW50KShyLl9idWZmZXJTZXJ2aWNlLm9uUmVzaXplLHIuX29uUmVzaXplKSksci5yZWdpc3RlcigoMCxfLmZvcndhcmRFdmVudCkoci5jb3JlU2VydmljZS5vbkRhdGEsci5fb25EYXRhKSksci5yZWdpc3RlcigoMCxfLmZvcndhcmRFdmVudCkoci5jb3JlU2VydmljZS5vbkJpbmFyeSxyLl9vbkJpbmFyeSkpLHIucmVnaXN0ZXIoci5vcHRpb25zU2VydmljZS5vbk9wdGlvbkNoYW5nZSgoZnVuY3Rpb24oZSl7cmV0dXJuIHIuX3VwZGF0ZU9wdGlvbnMoZSl9KSkpLHIucmVnaXN0ZXIoci5fYnVmZmVyU2VydmljZS5vblNjcm9sbCgoZnVuY3Rpb24oZSl7ci5fb25TY3JvbGwuZmlyZSh7cG9zaXRpb246ci5fYnVmZmVyU2VydmljZS5idWZmZXIueWRpc3Asc291cmNlOjB9KSxyLl9kaXJ0eVJvd1NlcnZpY2UubWFya1JhbmdlRGlydHkoci5fYnVmZmVyU2VydmljZS5idWZmZXIuc2Nyb2xsVG9wLHIuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnNjcm9sbEJvdHRvbSl9KSkpLHIucmVnaXN0ZXIoci5faW5wdXRIYW5kbGVyLm9uU2Nyb2xsKChmdW5jdGlvbihlKXtyLl9vblNjcm9sbC5maXJlKHtwb3NpdGlvbjpyLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci55ZGlzcCxzb3VyY2U6MH0pLHIuX2RpcnR5Um93U2VydmljZS5tYXJrUmFuZ2VEaXJ0eShyLl9idWZmZXJTZXJ2aWNlLmJ1ZmZlci5zY3JvbGxUb3Asci5fYnVmZmVyU2VydmljZS5idWZmZXIuc2Nyb2xsQm90dG9tKX0pKSksci5fd3JpdGVCdWZmZXI9bmV3IGIuV3JpdGVCdWZmZXIoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuX2lucHV0SGFuZGxlci5wYXJzZShlLHQpfSkpLHIucmVnaXN0ZXIoKDAsXy5mb3J3YXJkRXZlbnQpKHIuX3dyaXRlQnVmZmVyLm9uV3JpdGVQYXJzZWQsci5fb25Xcml0ZVBhcnNlZCkpLHJ9cmV0dXJuIG4odCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvbkJpbmFyeVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25CaW5hcnkuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25EYXRhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkRhdGEuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25MaW5lRmVlZFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25MaW5lRmVlZC5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvblJlc2l6ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25SZXNpemUuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25Xcml0ZVBhcnNlZFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25Xcml0ZVBhcnNlZC5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvblNjcm9sbFwiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9vblNjcm9sbEFwaXx8KHRoaXMuX29uU2Nyb2xsQXBpPW5ldyBfLkV2ZW50RW1pdHRlcix0aGlzLnJlZ2lzdGVyKHRoaXMuX29uU2Nyb2xsLmV2ZW50KChmdW5jdGlvbih0KXt2YXIgcjtudWxsPT09KHI9ZS5fb25TY3JvbGxBcGkpfHx2b2lkIDA9PT1yfHxyLmZpcmUodC5wb3NpdGlvbil9KSkpKSx0aGlzLl9vblNjcm9sbEFwaS5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJjb2xzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwicm93c1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImJ1ZmZlcnNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvcHRpb25zXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnNTZXJ2aWNlLm9wdGlvbnN9LHNldDpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZSl0aGlzLm9wdGlvbnNTZXJ2aWNlLm9wdGlvbnNbdF09ZVt0XX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy5faXNEaXNwb3NlZHx8KGUucHJvdG90eXBlLmRpc3Bvc2UuY2FsbCh0aGlzKSxudWxsPT09KHQ9dGhpcy5fd2luZG93c01vZGUpfHx2b2lkIDA9PT10fHx0LmRpc3Bvc2UoKSx0aGlzLl93aW5kb3dzTW9kZT12b2lkIDApfSx0LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQpe3RoaXMuX3dyaXRlQnVmZmVyLndyaXRlKGUsdCl9LHQucHJvdG90eXBlLndyaXRlU3luYz1mdW5jdGlvbihlLHQpe3RoaXMuX2xvZ1NlcnZpY2UubG9nTGV2ZWw8PWEuTG9nTGV2ZWxFbnVtLldBUk4mJiFTJiYodGhpcy5fbG9nU2VydmljZS53YXJuKFwid3JpdGVTeW5jIGlzIHVucmVsaWFibGUgYW5kIHdpbGwgYmUgcmVtb3ZlZCBzb29uLlwiKSxTPSEwKSx0aGlzLl93cml0ZUJ1ZmZlci53cml0ZVN5bmMoZSx0KX0sdC5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKGUsdCl7aXNOYU4oZSl8fGlzTmFOKHQpfHwoZT1NYXRoLm1heChlLGguTUlOSU1VTV9DT0xTKSx0PU1hdGgubWF4KHQsaC5NSU5JTVVNX1JPV1MpLHRoaXMuX2J1ZmZlclNlcnZpY2UucmVzaXplKGUsdCkpfSx0LnByb3RvdHlwZS5zY3JvbGw9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0hMSksdGhpcy5fYnVmZmVyU2VydmljZS5zY3JvbGwoZSx0KX0sdC5wcm90b3R5cGUuc2Nyb2xsTGluZXM9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsTGluZXMoZSx0LHIpfSx0LnByb3RvdHlwZS5zY3JvbGxQYWdlcz1mdW5jdGlvbihlKXt0aGlzLl9idWZmZXJTZXJ2aWNlLnNjcm9sbFBhZ2VzKGUpfSx0LnByb3RvdHlwZS5zY3JvbGxUb1RvcD1mdW5jdGlvbigpe3RoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsVG9Ub3AoKX0sdC5wcm90b3R5cGUuc2Nyb2xsVG9Cb3R0b209ZnVuY3Rpb24oKXt0aGlzLl9idWZmZXJTZXJ2aWNlLnNjcm9sbFRvQm90dG9tKCl9LHQucHJvdG90eXBlLnNjcm9sbFRvTGluZT1mdW5jdGlvbihlKXt0aGlzLl9idWZmZXJTZXJ2aWNlLnNjcm9sbFRvTGluZShlKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJFc2NIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2lucHV0SGFuZGxlci5yZWdpc3RlckVzY0hhbmRsZXIoZSx0KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJEY3NIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2lucHV0SGFuZGxlci5yZWdpc3RlckRjc0hhbmRsZXIoZSx0KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJDc2lIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2lucHV0SGFuZGxlci5yZWdpc3RlckNzaUhhbmRsZXIoZSx0KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPc2NIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2lucHV0SGFuZGxlci5yZWdpc3Rlck9zY0hhbmRsZXIoZSx0KX0sdC5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd3NNb2RlJiZ0aGlzLl9lbmFibGVXaW5kb3dzTW9kZSgpfSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX2lucHV0SGFuZGxlci5yZXNldCgpLHRoaXMuX2J1ZmZlclNlcnZpY2UucmVzZXQoKSx0aGlzLl9jaGFyc2V0U2VydmljZS5yZXNldCgpLHRoaXMuY29yZVNlcnZpY2UucmVzZXQoKSx0aGlzLmNvcmVNb3VzZVNlcnZpY2UucmVzZXQoKX0sdC5wcm90b3R5cGUuX3VwZGF0ZU9wdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIHQ7c3dpdGNoKGUpe2Nhc2VcInNjcm9sbGJhY2tcIjp0aGlzLmJ1ZmZlcnMucmVzaXplKHRoaXMuY29scyx0aGlzLnJvd3MpO2JyZWFrO2Nhc2VcIndpbmRvd3NNb2RlXCI6dGhpcy5vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd3NNb2RlP3RoaXMuX2VuYWJsZVdpbmRvd3NNb2RlKCk6KG51bGw9PT0odD10aGlzLl93aW5kb3dzTW9kZSl8fHZvaWQgMD09PXR8fHQuZGlzcG9zZSgpLHRoaXMuX3dpbmRvd3NNb2RlPXZvaWQgMCl9fSx0LnByb3RvdHlwZS5fZW5hYmxlV2luZG93c01vZGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCF0aGlzLl93aW5kb3dzTW9kZSl7dmFyIHQ9W107dC5wdXNoKHRoaXMub25MaW5lRmVlZChnLnVwZGF0ZVdpbmRvd3NNb2RlV3JhcHBlZFN0YXRlLmJpbmQobnVsbCx0aGlzLl9idWZmZXJTZXJ2aWNlKSkpLHQucHVzaCh0aGlzLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJIXCJ9LChmdW5jdGlvbigpe3JldHVybigwLGcudXBkYXRlV2luZG93c01vZGVXcmFwcGVkU3RhdGUpKGUuX2J1ZmZlclNlcnZpY2UpLCExfSkpKSx0aGlzLl93aW5kb3dzTW9kZT17ZGlzcG9zZTpmdW5jdGlvbigpe3ZhciBlLHI7dHJ5e2Zvcih2YXIgaT1vKHQpLG49aS5uZXh0KCk7IW4uZG9uZTtuPWkubmV4dCgpKW4udmFsdWUuZGlzcG9zZSgpfWNhdGNoKHQpe2U9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e24mJiFuLmRvbmUmJihyPWkucmV0dXJuKSYmci5jYWxsKGkpfWZpbmFsbHl7aWYoZSl0aHJvdyBlLmVycm9yfX19fX19LHR9KHMuRGlzcG9zYWJsZSk7dC5Db3JlVGVybWluYWw9Q30sODQ2MDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZm9yd2FyZEV2ZW50PXQuRXZlbnRFbWl0dGVyPXZvaWQgMDt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLl9saXN0ZW5lcnM9W10sdGhpcy5fZGlzcG9zZWQ9ITF9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImV2ZW50XCIse2dldDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuX2V2ZW50fHwodGhpcy5fZXZlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xpc3RlbmVycy5wdXNoKHQpLHtkaXNwb3NlOmZ1bmN0aW9uKCl7aWYoIWUuX2Rpc3Bvc2VkKWZvcih2YXIgcj0wO3I8ZS5fbGlzdGVuZXJzLmxlbmd0aDtyKyspaWYoZS5fbGlzdGVuZXJzW3JdPT09dClyZXR1cm4gdm9pZCBlLl9saXN0ZW5lcnMuc3BsaWNlKHIsMSl9fX0pLHRoaXMuX2V2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmZpcmU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9W10saT0wO2k8dGhpcy5fbGlzdGVuZXJzLmxlbmd0aDtpKyspci5wdXNoKHRoaXMuX2xpc3RlbmVyc1tpXSk7Zm9yKGk9MDtpPHIubGVuZ3RoO2krKylyW2ldLmNhbGwodm9pZCAwLGUsdCl9LGUucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnMubGVuZ3RoPTApLHRoaXMuX2Rpc3Bvc2VkPSEwfSxlfSgpO3QuRXZlbnRFbWl0dGVyPXIsdC5mb3J3YXJkRXZlbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmlyZShlKX0pKX19LDU0MzU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG49dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pfSxpKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1pKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KTooci5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IHIpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JbnB1dEhhbmRsZXI9dC5XaW5kb3dzT3B0aW9uc1JlcG9ydFR5cGU9dm9pZCAwO3ZhciBvLHM9cigyNTg0KSxhPXIoNzExNiksYz1yKDIwMTUpLGw9cig4NDQpLGg9cig4MjczKSx1PXIoNDgyKSxmPXIoODQzNyksXz1yKDg0NjApLGQ9cig2NDMpLHA9cig1MTEpLHY9cigzNzM0KSx5PXIoMjU4NSksZz1yKDYyNDIpLG09cig2MzUxKSxiPXIoNTk0MSksUz17XCIoXCI6MCxcIilcIjoxLFwiKlwiOjIsXCIrXCI6MyxcIi1cIjoxLFwiLlwiOjJ9LEM9MTMxMDcyO2Z1bmN0aW9uIHcoZSx0KXtpZihlPjI0KXJldHVybiB0LnNldFdpbkxpbmVzfHwhMTtzd2l0Y2goZSl7Y2FzZSAxOnJldHVybiEhdC5yZXN0b3JlV2luO2Nhc2UgMjpyZXR1cm4hIXQubWluaW1pemVXaW47Y2FzZSAzOnJldHVybiEhdC5zZXRXaW5Qb3NpdGlvbjtjYXNlIDQ6cmV0dXJuISF0LnNldFdpblNpemVQaXhlbHM7Y2FzZSA1OnJldHVybiEhdC5yYWlzZVdpbjtjYXNlIDY6cmV0dXJuISF0Lmxvd2VyV2luO2Nhc2UgNzpyZXR1cm4hIXQucmVmcmVzaFdpbjtjYXNlIDg6cmV0dXJuISF0LnNldFdpblNpemVDaGFycztjYXNlIDk6cmV0dXJuISF0Lm1heGltaXplV2luO2Nhc2UgMTA6cmV0dXJuISF0LmZ1bGxzY3JlZW5XaW47Y2FzZSAxMTpyZXR1cm4hIXQuZ2V0V2luU3RhdGU7Y2FzZSAxMzpyZXR1cm4hIXQuZ2V0V2luUG9zaXRpb247Y2FzZSAxNDpyZXR1cm4hIXQuZ2V0V2luU2l6ZVBpeGVscztjYXNlIDE1OnJldHVybiEhdC5nZXRTY3JlZW5TaXplUGl4ZWxzO2Nhc2UgMTY6cmV0dXJuISF0LmdldENlbGxTaXplUGl4ZWxzO2Nhc2UgMTg6cmV0dXJuISF0LmdldFdpblNpemVDaGFycztjYXNlIDE5OnJldHVybiEhdC5nZXRTY3JlZW5TaXplQ2hhcnM7Y2FzZSAyMDpyZXR1cm4hIXQuZ2V0SWNvblRpdGxlO2Nhc2UgMjE6cmV0dXJuISF0LmdldFdpblRpdGxlO2Nhc2UgMjI6cmV0dXJuISF0LnB1c2hUaXRsZTtjYXNlIDIzOnJldHVybiEhdC5wb3BUaXRsZTtjYXNlIDI0OnJldHVybiEhdC5zZXRXaW5MaW5lc31yZXR1cm4hMX0hZnVuY3Rpb24oZSl7ZVtlLkdFVF9XSU5fU0laRV9QSVhFTFM9MF09XCJHRVRfV0lOX1NJWkVfUElYRUxTXCIsZVtlLkdFVF9DRUxMX1NJWkVfUElYRUxTPTFdPVwiR0VUX0NFTExfU0laRV9QSVhFTFNcIn0obz10LldpbmRvd3NPcHRpb25zUmVwb3J0VHlwZXx8KHQuV2luZG93c09wdGlvbnNSZXBvcnRUeXBlPXt9KSk7dmFyIEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyLGkpe3RoaXMuX2J1ZmZlclNlcnZpY2U9ZSx0aGlzLl9jb3JlU2VydmljZT10LHRoaXMuX2xvZ1NlcnZpY2U9cix0aGlzLl9vcHRpb25zU2VydmljZT1pLHRoaXMuX2RhdGE9bmV3IFVpbnQzMkFycmF5KDApfXJldHVybiBlLnByb3RvdHlwZS5ob29rPWZ1bmN0aW9uKGUpe3RoaXMuX2RhdGE9bmV3IFVpbnQzMkFycmF5KDApfSxlLnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX2RhdGE9KDAsaC5jb25jYXQpKHRoaXMuX2RhdGEsZS5zdWJhcnJheSh0LHIpKX0sZS5wcm90b3R5cGUudW5ob29rPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiB0aGlzLl9kYXRhPW5ldyBVaW50MzJBcnJheSgwKSwhMDt2YXIgdD0oMCx1LnV0ZjMyVG9TdHJpbmcpKHRoaXMuX2RhdGEpO3N3aXRjaCh0aGlzLl9kYXRhPW5ldyBVaW50MzJBcnJheSgwKSx0KXtjYXNlJ1wicSc6dGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChzLkMwLkVTQysnUDEkcjBcInEnK3MuQzAuRVNDK1wiXFxcXFwiKTticmVhaztjYXNlJ1wicCc6dGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChzLkMwLkVTQysnUDEkcjYxOzFcInAnK3MuQzAuRVNDK1wiXFxcXFwiKTticmVhaztjYXNlXCJyXCI6dmFyIHI9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIuc2Nyb2xsVG9wKzErXCI7XCIrKHRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLnNjcm9sbEJvdHRvbSsxKStcInJcIjt0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHMuQzAuRVNDK1wiUDEkclwiK3Ircy5DMC5FU0MrXCJcXFxcXCIpO2JyZWFrO2Nhc2VcIm1cIjp0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHMuQzAuRVNDK1wiUDEkcjBtXCIrcy5DMC5FU0MrXCJcXFxcXCIpO2JyZWFrO2Nhc2VcIiBxXCI6dmFyIGk9e2Jsb2NrOjIsdW5kZXJsaW5lOjQsYmFyOjZ9W3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuY3Vyc29yU3R5bGVdO2ktPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuY3Vyc29yQmxpbms/MTowLHRoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQocy5DMC5FU0MrXCJQMSRyXCIraStcIiBxXCIrcy5DMC5FU0MrXCJcXFxcXCIpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlVua25vd24gRENTICRxICVzXCIsdCksdGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChzLkMwLkVTQytcIlAwJHJcIitzLkMwLkVTQytcIlxcXFxcIil9cmV0dXJuITB9LGV9KCksRT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQscixpLG4sbyxsLGgsZCx2KXt2b2lkIDA9PT12JiYodj1uZXcgYy5Fc2NhcGVTZXF1ZW5jZVBhcnNlcik7dmFyIHk9ZS5jYWxsKHRoaXMpfHx0aGlzO3kuX2J1ZmZlclNlcnZpY2U9dCx5Ll9jaGFyc2V0U2VydmljZT1yLHkuX2NvcmVTZXJ2aWNlPWkseS5fZGlydHlSb3dTZXJ2aWNlPW4seS5fbG9nU2VydmljZT1vLHkuX29wdGlvbnNTZXJ2aWNlPWwseS5fY29yZU1vdXNlU2VydmljZT1oLHkuX3VuaWNvZGVTZXJ2aWNlPWQseS5fcGFyc2VyPXYseS5fcGFyc2VCdWZmZXI9bmV3IFVpbnQzMkFycmF5KDQwOTYpLHkuX3N0cmluZ0RlY29kZXI9bmV3IHUuU3RyaW5nVG9VdGYzMix5Ll91dGY4RGVjb2Rlcj1uZXcgdS5VdGY4VG9VdGYzMix5Ll93b3JrQ2VsbD1uZXcgcC5DZWxsRGF0YSx5Ll93aW5kb3dUaXRsZT1cIlwiLHkuX2ljb25OYW1lPVwiXCIseS5fd2luZG93VGl0bGVTdGFjaz1bXSx5Ll9pY29uTmFtZVN0YWNrPVtdLHkuX2N1ckF0dHJEYXRhPWYuREVGQVVMVF9BVFRSX0RBVEEuY2xvbmUoKSx5Ll9lcmFzZUF0dHJEYXRhSW50ZXJuYWw9Zi5ERUZBVUxUX0FUVFJfREFUQS5jbG9uZSgpLHkuX29uUmVxdWVzdEJlbGw9bmV3IF8uRXZlbnRFbWl0dGVyLHkuX29uUmVxdWVzdFJlZnJlc2hSb3dzPW5ldyBfLkV2ZW50RW1pdHRlcix5Ll9vblJlcXVlc3RSZXNldD1uZXcgXy5FdmVudEVtaXR0ZXIseS5fb25SZXF1ZXN0U2VuZEZvY3VzPW5ldyBfLkV2ZW50RW1pdHRlcix5Ll9vblJlcXVlc3RTeW5jU2Nyb2xsQmFyPW5ldyBfLkV2ZW50RW1pdHRlcix5Ll9vblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydD1uZXcgXy5FdmVudEVtaXR0ZXIseS5fb25BMTF5Q2hhcj1uZXcgXy5FdmVudEVtaXR0ZXIseS5fb25BMTF5VGFiPW5ldyBfLkV2ZW50RW1pdHRlcix5Ll9vbkN1cnNvck1vdmU9bmV3IF8uRXZlbnRFbWl0dGVyLHkuX29uTGluZUZlZWQ9bmV3IF8uRXZlbnRFbWl0dGVyLHkuX29uU2Nyb2xsPW5ldyBfLkV2ZW50RW1pdHRlcix5Ll9vblRpdGxlQ2hhbmdlPW5ldyBfLkV2ZW50RW1pdHRlcix5Ll9vbkNvbG9yPW5ldyBfLkV2ZW50RW1pdHRlcix5Ll9wYXJzZVN0YWNrPXtwYXVzZWQ6ITEsY3Vyc29yU3RhcnRYOjAsY3Vyc29yU3RhcnRZOjAsZGVjb2RlZExlbmd0aDowLHBvc2l0aW9uOjB9LHkuX3NwZWNpYWxDb2xvcnM9WzI1NiwyNTcsMjU4XSx5LnJlZ2lzdGVyKHkuX3BhcnNlcikseS5fYWN0aXZlQnVmZmVyPXkuX2J1ZmZlclNlcnZpY2UuYnVmZmVyLHkucmVnaXN0ZXIoeS5fYnVmZmVyU2VydmljZS5idWZmZXJzLm9uQnVmZmVyQWN0aXZhdGUoKGZ1bmN0aW9uKGUpe3JldHVybiB5Ll9hY3RpdmVCdWZmZXI9ZS5hY3RpdmVCdWZmZXJ9KSkpLHkuX3BhcnNlci5zZXRDc2lIYW5kbGVyRmFsbGJhY2soKGZ1bmN0aW9uKGUsdCl7eS5fbG9nU2VydmljZS5kZWJ1ZyhcIlVua25vd24gQ1NJIGNvZGU6IFwiLHtpZGVudGlmaWVyOnkuX3BhcnNlci5pZGVudFRvU3RyaW5nKGUpLHBhcmFtczp0LnRvQXJyYXkoKX0pfSkpLHkuX3BhcnNlci5zZXRFc2NIYW5kbGVyRmFsbGJhY2soKGZ1bmN0aW9uKGUpe3kuX2xvZ1NlcnZpY2UuZGVidWcoXCJVbmtub3duIEVTQyBjb2RlOiBcIix7aWRlbnRpZmllcjp5Ll9wYXJzZXIuaWRlbnRUb1N0cmluZyhlKX0pfSkpLHkuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlckZhbGxiYWNrKChmdW5jdGlvbihlKXt5Ll9sb2dTZXJ2aWNlLmRlYnVnKFwiVW5rbm93biBFWEVDVVRFIGNvZGU6IFwiLHtjb2RlOmV9KX0pKSx5Ll9wYXJzZXIuc2V0T3NjSGFuZGxlckZhbGxiYWNrKChmdW5jdGlvbihlLHQscil7eS5fbG9nU2VydmljZS5kZWJ1ZyhcIlVua25vd24gT1NDIGNvZGU6IFwiLHtpZGVudGlmaWVyOmUsYWN0aW9uOnQsZGF0YTpyfSl9KSkseS5fcGFyc2VyLnNldERjc0hhbmRsZXJGYWxsYmFjaygoZnVuY3Rpb24oZSx0LHIpe1wiSE9PS1wiPT09dCYmKHI9ci50b0FycmF5KCkpLHkuX2xvZ1NlcnZpY2UuZGVidWcoXCJVbmtub3duIERDUyBjb2RlOiBcIix7aWRlbnRpZmllcjp5Ll9wYXJzZXIuaWRlbnRUb1N0cmluZyhlKSxhY3Rpb246dCxwYXlsb2FkOnJ9KX0pKSx5Ll9wYXJzZXIuc2V0UHJpbnRIYW5kbGVyKChmdW5jdGlvbihlLHQscil7cmV0dXJuIHkucHJpbnQoZSx0LHIpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiQFwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuaW5zZXJ0Q2hhcnMoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiBcIixmaW5hbDpcIkBcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LnNjcm9sbExlZnQoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJBXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5jdXJzb3JVcChlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiIFwiLGZpbmFsOlwiQVwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuc2Nyb2xsUmlnaHQoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJCXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5jdXJzb3JEb3duKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiQ1wifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuY3Vyc29yRm9yd2FyZChlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIkRcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LmN1cnNvckJhY2t3YXJkKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiRVwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuY3Vyc29yTmV4dExpbmUoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJGXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5jdXJzb3JQcmVjZWRpbmdMaW5lKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiR1wifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuY3Vyc29yQ2hhckFic29sdXRlKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiSFwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuY3Vyc29yUG9zaXRpb24oZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJJXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5jdXJzb3JGb3J3YXJkVGFiKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiSlwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuZXJhc2VJbkRpc3BsYXkoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7cHJlZml4OlwiP1wiLGZpbmFsOlwiSlwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuZXJhc2VJbkRpc3BsYXkoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJLXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5lcmFzZUluTGluZShlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtwcmVmaXg6XCI/XCIsZmluYWw6XCJLXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5lcmFzZUluTGluZShlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIkxcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5Lmluc2VydExpbmVzKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiTVwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuZGVsZXRlTGluZXMoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJQXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5kZWxldGVDaGFycyhlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIlNcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LnNjcm9sbFVwKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiVFwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuc2Nyb2xsRG93bihlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIlhcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LmVyYXNlQ2hhcnMoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJaXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5jdXJzb3JCYWNrd2FyZFRhYihlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcImBcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LmNoYXJQb3NBYnNvbHV0ZShlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcImFcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LmhQb3NpdGlvblJlbGF0aXZlKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiYlwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkucmVwZWF0UHJlY2VkaW5nQ2hhcmFjdGVyKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiY1wifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuc2VuZERldmljZUF0dHJpYnV0ZXNQcmltYXJ5KGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe3ByZWZpeDpcIj5cIixmaW5hbDpcImNcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LnNlbmREZXZpY2VBdHRyaWJ1dGVzU2Vjb25kYXJ5KGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiZFwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkubGluZVBvc0Fic29sdXRlKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiZVwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkudlBvc2l0aW9uUmVsYXRpdmUoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJmXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5oVlBvc2l0aW9uKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiZ1wifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkudGFiQ2xlYXIoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJoXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5zZXRNb2RlKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe3ByZWZpeDpcIj9cIixmaW5hbDpcImhcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LnNldE1vZGVQcml2YXRlKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwibFwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkucmVzZXRNb2RlKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe3ByZWZpeDpcIj9cIixmaW5hbDpcImxcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LnJlc2V0TW9kZVByaXZhdGUoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJtXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5jaGFyQXR0cmlidXRlcyhlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcIm5cIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LmRldmljZVN0YXR1cyhlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtwcmVmaXg6XCI/XCIsZmluYWw6XCJuXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5kZXZpY2VTdGF0dXNQcml2YXRlKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIhXCIsZmluYWw6XCJwXCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5zb2Z0UmVzZXQoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiBcIixmaW5hbDpcInFcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LnNldEN1cnNvclN0eWxlKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwiclwifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuc2V0U2Nyb2xsUmVnaW9uKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ZpbmFsOlwic1wifSwoZnVuY3Rpb24oZSl7cmV0dXJuIHkuc2F2ZUN1cnNvcihlKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJDc2lIYW5kbGVyKHtmaW5hbDpcInRcIn0sKGZ1bmN0aW9uKGUpe3JldHVybiB5LndpbmRvd09wdGlvbnMoZSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcih7ZmluYWw6XCJ1XCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5yZXN0b3JlQ3Vyc29yKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCInXCIsZmluYWw6XCJ9XCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5pbnNlcnRDb2x1bW5zKGUpfSkpLHkuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCInXCIsZmluYWw6XCJ+XCJ9LChmdW5jdGlvbihlKXtyZXR1cm4geS5kZWxldGVDb2x1bW5zKGUpfSkpLHkuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihzLkMwLkJFTCwoZnVuY3Rpb24oKXtyZXR1cm4geS5iZWxsKCl9KSkseS5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKHMuQzAuTEYsKGZ1bmN0aW9uKCl7cmV0dXJuIHkubGluZUZlZWQoKX0pKSx5Ll9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIocy5DMC5WVCwoZnVuY3Rpb24oKXtyZXR1cm4geS5saW5lRmVlZCgpfSkpLHkuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihzLkMwLkZGLChmdW5jdGlvbigpe3JldHVybiB5LmxpbmVGZWVkKCl9KSkseS5fcGFyc2VyLnNldEV4ZWN1dGVIYW5kbGVyKHMuQzAuQ1IsKGZ1bmN0aW9uKCl7cmV0dXJuIHkuY2FycmlhZ2VSZXR1cm4oKX0pKSx5Ll9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIocy5DMC5CUywoZnVuY3Rpb24oKXtyZXR1cm4geS5iYWNrc3BhY2UoKX0pKSx5Ll9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIocy5DMC5IVCwoZnVuY3Rpb24oKXtyZXR1cm4geS50YWIoKX0pKSx5Ll9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIocy5DMC5TTywoZnVuY3Rpb24oKXtyZXR1cm4geS5zaGlmdE91dCgpfSkpLHkuX3BhcnNlci5zZXRFeGVjdXRlSGFuZGxlcihzLkMwLlNJLChmdW5jdGlvbigpe3JldHVybiB5LnNoaWZ0SW4oKX0pKSx5Ll9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIocy5DMS5JTkQsKGZ1bmN0aW9uKCl7cmV0dXJuIHkuaW5kZXgoKX0pKSx5Ll9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIocy5DMS5ORUwsKGZ1bmN0aW9uKCl7cmV0dXJuIHkubmV4dExpbmUoKX0pKSx5Ll9wYXJzZXIuc2V0RXhlY3V0ZUhhbmRsZXIocy5DMS5IVFMsKGZ1bmN0aW9uKCl7cmV0dXJuIHkudGFiU2V0KCl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcigwLG5ldyBnLk9zY0hhbmRsZXIoKGZ1bmN0aW9uKGUpe3JldHVybiB5LnNldFRpdGxlKGUpLHkuc2V0SWNvbk5hbWUoZSksITB9KSkpLHkuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoMSxuZXcgZy5Pc2NIYW5kbGVyKChmdW5jdGlvbihlKXtyZXR1cm4geS5zZXRJY29uTmFtZShlKX0pKSkseS5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcigyLG5ldyBnLk9zY0hhbmRsZXIoKGZ1bmN0aW9uKGUpe3JldHVybiB5LnNldFRpdGxlKGUpfSkpKSx5Ll9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDQsbmV3IGcuT3NjSGFuZGxlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHkuc2V0T3JSZXBvcnRJbmRleGVkQ29sb3IoZSl9KSkpLHkuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoMTAsbmV3IGcuT3NjSGFuZGxlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHkuc2V0T3JSZXBvcnRGZ0NvbG9yKGUpfSkpKSx5Ll9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDExLG5ldyBnLk9zY0hhbmRsZXIoKGZ1bmN0aW9uKGUpe3JldHVybiB5LnNldE9yUmVwb3J0QmdDb2xvcihlKX0pKSkseS5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcigxMixuZXcgZy5Pc2NIYW5kbGVyKChmdW5jdGlvbihlKXtyZXR1cm4geS5zZXRPclJlcG9ydEN1cnNvckNvbG9yKGUpfSkpKSx5Ll9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDEwNCxuZXcgZy5Pc2NIYW5kbGVyKChmdW5jdGlvbihlKXtyZXR1cm4geS5yZXN0b3JlSW5kZXhlZENvbG9yKGUpfSkpKSx5Ll9wYXJzZXIucmVnaXN0ZXJPc2NIYW5kbGVyKDExMCxuZXcgZy5Pc2NIYW5kbGVyKChmdW5jdGlvbihlKXtyZXR1cm4geS5yZXN0b3JlRmdDb2xvcihlKX0pKSkseS5fcGFyc2VyLnJlZ2lzdGVyT3NjSGFuZGxlcigxMTEsbmV3IGcuT3NjSGFuZGxlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHkucmVzdG9yZUJnQ29sb3IoZSl9KSkpLHkuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoMTEyLG5ldyBnLk9zY0hhbmRsZXIoKGZ1bmN0aW9uKGUpe3JldHVybiB5LnJlc3RvcmVDdXJzb3JDb2xvcihlKX0pKSkseS5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCI3XCJ9LChmdW5jdGlvbigpe3JldHVybiB5LnNhdmVDdXJzb3IoKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIjhcIn0sKGZ1bmN0aW9uKCl7cmV0dXJuIHkucmVzdG9yZUN1cnNvcigpfSkpLHkuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiRFwifSwoZnVuY3Rpb24oKXtyZXR1cm4geS5pbmRleCgpfSkpLHkuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiRVwifSwoZnVuY3Rpb24oKXtyZXR1cm4geS5uZXh0TGluZSgpfSkpLHkuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiSFwifSwoZnVuY3Rpb24oKXtyZXR1cm4geS50YWJTZXQoKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIk1cIn0sKGZ1bmN0aW9uKCl7cmV0dXJuIHkucmV2ZXJzZUluZGV4KCl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCI9XCJ9LChmdW5jdGlvbigpe3JldHVybiB5LmtleXBhZEFwcGxpY2F0aW9uTW9kZSgpfSkpLHkuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiPlwifSwoZnVuY3Rpb24oKXtyZXR1cm4geS5rZXlwYWROdW1lcmljTW9kZSgpfSkpLHkuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiY1wifSwoZnVuY3Rpb24oKXtyZXR1cm4geS5mdWxsUmVzZXQoKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIm5cIn0sKGZ1bmN0aW9uKCl7cmV0dXJuIHkuc2V0Z0xldmVsKDIpfSkpLHkuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwib1wifSwoZnVuY3Rpb24oKXtyZXR1cm4geS5zZXRnTGV2ZWwoMyl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7ZmluYWw6XCJ8XCJ9LChmdW5jdGlvbigpe3JldHVybiB5LnNldGdMZXZlbCgzKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtmaW5hbDpcIn1cIn0sKGZ1bmN0aW9uKCl7cmV0dXJuIHkuc2V0Z0xldmVsKDIpfSkpLHkuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiflwifSwoZnVuY3Rpb24oKXtyZXR1cm4geS5zZXRnTGV2ZWwoMSl9KSkseS5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiVcIixmaW5hbDpcIkBcIn0sKGZ1bmN0aW9uKCl7cmV0dXJuIHkuc2VsZWN0RGVmYXVsdENoYXJzZXQoKX0pKSx5Ll9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiJVwiLGZpbmFsOlwiR1wifSwoZnVuY3Rpb24oKXtyZXR1cm4geS5zZWxlY3REZWZhdWx0Q2hhcnNldCgpfSkpO3ZhciBtPWZ1bmN0aW9uKGUpe2IuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIoXCIsZmluYWw6ZX0sKGZ1bmN0aW9uKCl7cmV0dXJuIHkuc2VsZWN0Q2hhcnNldChcIihcIitlKX0pKSxiLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiKVwiLGZpbmFsOmV9LChmdW5jdGlvbigpe3JldHVybiB5LnNlbGVjdENoYXJzZXQoXCIpXCIrZSl9KSksYi5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIipcIixmaW5hbDplfSwoZnVuY3Rpb24oKXtyZXR1cm4geS5zZWxlY3RDaGFyc2V0KFwiKlwiK2UpfSkpLGIuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIrXCIsZmluYWw6ZX0sKGZ1bmN0aW9uKCl7cmV0dXJuIHkuc2VsZWN0Q2hhcnNldChcIitcIitlKX0pKSxiLl9wYXJzZXIucmVnaXN0ZXJFc2NIYW5kbGVyKHtpbnRlcm1lZGlhdGVzOlwiLVwiLGZpbmFsOmV9LChmdW5jdGlvbigpe3JldHVybiB5LnNlbGVjdENoYXJzZXQoXCItXCIrZSl9KSksYi5fcGFyc2VyLnJlZ2lzdGVyRXNjSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIi5cIixmaW5hbDplfSwoZnVuY3Rpb24oKXtyZXR1cm4geS5zZWxlY3RDaGFyc2V0KFwiLlwiK2UpfSkpLGIuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIvXCIsZmluYWw6ZX0sKGZ1bmN0aW9uKCl7cmV0dXJuIHkuc2VsZWN0Q2hhcnNldChcIi9cIitlKX0pKX0sYj10aGlzO2Zvcih2YXIgUyBpbiBhLkNIQVJTRVRTKW0oUyk7cmV0dXJuIHkuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoe2ludGVybWVkaWF0ZXM6XCIjXCIsZmluYWw6XCI4XCJ9LChmdW5jdGlvbigpe3JldHVybiB5LnNjcmVlbkFsaWdubWVudFBhdHRlcm4oKX0pKSx5Ll9wYXJzZXIuc2V0RXJyb3JIYW5kbGVyKChmdW5jdGlvbihlKXtyZXR1cm4geS5fbG9nU2VydmljZS5lcnJvcihcIlBhcnNpbmcgZXJyb3I6IFwiLGUpLGV9KSkseS5fcGFyc2VyLnJlZ2lzdGVyRGNzSGFuZGxlcih7aW50ZXJtZWRpYXRlczpcIiRcIixmaW5hbDpcInFcIn0sbmV3IEwoeS5fYnVmZmVyU2VydmljZSx5Ll9jb3JlU2VydmljZSx5Ll9sb2dTZXJ2aWNlLHkuX29wdGlvbnNTZXJ2aWNlKSkseX1yZXR1cm4gbih0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uUmVxdWVzdEJlbGxcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uUmVxdWVzdEJlbGwuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25SZXF1ZXN0UmVmcmVzaFJvd3NcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uUmVxdWVzdFJlZnJlc2hSb3dzLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uUmVxdWVzdFJlc2V0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblJlcXVlc3RSZXNldC5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvblJlcXVlc3RTZW5kRm9jdXNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uUmVxdWVzdFNlbmRGb2N1cy5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvblJlcXVlc3RTeW5jU2Nyb2xsQmFyXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblJlcXVlc3RTeW5jU2Nyb2xsQmFyLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uUmVxdWVzdFdpbmRvd3NPcHRpb25zUmVwb3J0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydC5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvbkExMXlDaGFyXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkExMXlDaGFyLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uQTExeVRhYlwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25BMTF5VGFiLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uQ3Vyc29yTW92ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25DdXJzb3JNb3ZlLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uTGluZUZlZWRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uTGluZUZlZWQuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25TY3JvbGxcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uU2Nyb2xsLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uVGl0bGVDaGFuZ2VcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uVGl0bGVDaGFuZ2UuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25Db2xvclwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25Db2xvci5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuZGlzcG9zZS5jYWxsKHRoaXMpfSx0LnByb3RvdHlwZS5fcHJlc2VydmVTdGFjaz1mdW5jdGlvbihlLHQscixpKXt0aGlzLl9wYXJzZVN0YWNrLnBhdXNlZD0hMCx0aGlzLl9wYXJzZVN0YWNrLmN1cnNvclN0YXJ0WD1lLHRoaXMuX3BhcnNlU3RhY2suY3Vyc29yU3RhcnRZPXQsdGhpcy5fcGFyc2VTdGFjay5kZWNvZGVkTGVuZ3RoPXIsdGhpcy5fcGFyc2VTdGFjay5wb3NpdGlvbj1pfSx0LnByb3RvdHlwZS5fbG9nU2xvd1Jlc29sdmluZ0FzeW5jPWZ1bmN0aW9uKGUpe3RoaXMuX2xvZ1NlcnZpY2UubG9nTGV2ZWw8PXkuTG9nTGV2ZWxFbnVtLldBUk4mJlByb21pc2UucmFjZShbZSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gdChcIiNTTE9XX1RJTUVPVVRcIil9KSw1ZTMpfSkpXSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKFwiI1NMT1dfVElNRU9VVFwiIT09ZSl0aHJvdyBlO2NvbnNvbGUud2FybihcImFzeW5jIHBhcnNlciBoYW5kbGVyIHRha2luZyBsb25nZXIgdGhhbiA1MDAwIG1zXCIpfSkpfSx0LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlLHQpe3ZhciByLGk9dGhpcy5fYWN0aXZlQnVmZmVyLngsbj10aGlzLl9hY3RpdmVCdWZmZXIueSxvPTAscz10aGlzLl9wYXJzZVN0YWNrLnBhdXNlZDtpZihzKXtpZihyPXRoaXMuX3BhcnNlci5wYXJzZSh0aGlzLl9wYXJzZUJ1ZmZlcix0aGlzLl9wYXJzZVN0YWNrLmRlY29kZWRMZW5ndGgsdCkpcmV0dXJuIHRoaXMuX2xvZ1Nsb3dSZXNvbHZpbmdBc3luYyhyKSxyO2k9dGhpcy5fcGFyc2VTdGFjay5jdXJzb3JTdGFydFgsbj10aGlzLl9wYXJzZVN0YWNrLmN1cnNvclN0YXJ0WSx0aGlzLl9wYXJzZVN0YWNrLnBhdXNlZD0hMSxlLmxlbmd0aD5DJiYobz10aGlzLl9wYXJzZVN0YWNrLnBvc2l0aW9uK0MpfWlmKHRoaXMuX2xvZ1NlcnZpY2UubG9nTGV2ZWw8PXkuTG9nTGV2ZWxFbnVtLkRFQlVHJiZ0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwicGFyc2luZyBkYXRhXCIrKFwic3RyaW5nXCI9PXR5cGVvZiBlPycgXCInK2UrJ1wiJzonIFwiJytBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSl9KSkuam9pbihcIlwiKSsnXCInKSxcInN0cmluZ1wiPT10eXBlb2YgZT9lLnNwbGl0KFwiXCIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckNvZGVBdCgwKX0pKTplKSx0aGlzLl9wYXJzZUJ1ZmZlci5sZW5ndGg8ZS5sZW5ndGgmJnRoaXMuX3BhcnNlQnVmZmVyLmxlbmd0aDxDJiYodGhpcy5fcGFyc2VCdWZmZXI9bmV3IFVpbnQzMkFycmF5KE1hdGgubWluKGUubGVuZ3RoLEMpKSksc3x8dGhpcy5fZGlydHlSb3dTZXJ2aWNlLmNsZWFyUmFuZ2UoKSxlLmxlbmd0aD5DKWZvcih2YXIgYT1vO2E8ZS5sZW5ndGg7YSs9Qyl7dmFyIGM9YStDPGUubGVuZ3RoP2ErQzplLmxlbmd0aCxsPVwic3RyaW5nXCI9PXR5cGVvZiBlP3RoaXMuX3N0cmluZ0RlY29kZXIuZGVjb2RlKGUuc3Vic3RyaW5nKGEsYyksdGhpcy5fcGFyc2VCdWZmZXIpOnRoaXMuX3V0ZjhEZWNvZGVyLmRlY29kZShlLnN1YmFycmF5KGEsYyksdGhpcy5fcGFyc2VCdWZmZXIpO2lmKHI9dGhpcy5fcGFyc2VyLnBhcnNlKHRoaXMuX3BhcnNlQnVmZmVyLGwpKXJldHVybiB0aGlzLl9wcmVzZXJ2ZVN0YWNrKGksbixsLGEpLHRoaXMuX2xvZ1Nsb3dSZXNvbHZpbmdBc3luYyhyKSxyfWVsc2UgaWYoIXMmJihsPVwic3RyaW5nXCI9PXR5cGVvZiBlP3RoaXMuX3N0cmluZ0RlY29kZXIuZGVjb2RlKGUsdGhpcy5fcGFyc2VCdWZmZXIpOnRoaXMuX3V0ZjhEZWNvZGVyLmRlY29kZShlLHRoaXMuX3BhcnNlQnVmZmVyKSxyPXRoaXMuX3BhcnNlci5wYXJzZSh0aGlzLl9wYXJzZUJ1ZmZlcixsKSkpcmV0dXJuIHRoaXMuX3ByZXNlcnZlU3RhY2soaSxuLGwsMCksdGhpcy5fbG9nU2xvd1Jlc29sdmluZ0FzeW5jKHIpLHI7dGhpcy5fYWN0aXZlQnVmZmVyLng9PT1pJiZ0aGlzLl9hY3RpdmVCdWZmZXIueT09PW58fHRoaXMuX29uQ3Vyc29yTW92ZS5maXJlKCksdGhpcy5fb25SZXF1ZXN0UmVmcmVzaFJvd3MuZmlyZSh0aGlzLl9kaXJ0eVJvd1NlcnZpY2Uuc3RhcnQsdGhpcy5fZGlydHlSb3dTZXJ2aWNlLmVuZCl9LHQucHJvdG90eXBlLnByaW50PWZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuLG89dGhpcy5fY2hhcnNldFNlcnZpY2UuY2hhcnNldCxzPXRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMuc2NyZWVuUmVhZGVyTW9kZSxhPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyxjPXRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy53cmFwYXJvdW5kLGw9dGhpcy5fY29yZVNlcnZpY2UubW9kZXMuaW5zZXJ0TW9kZSxoPXRoaXMuX2N1ckF0dHJEYXRhLGY9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpO3RoaXMuX2RpcnR5Um93U2VydmljZS5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpLHRoaXMuX2FjdGl2ZUJ1ZmZlci54JiZyLXQ+MCYmMj09PWYuZ2V0V2lkdGgodGhpcy5fYWN0aXZlQnVmZmVyLngtMSkmJmYuc2V0Q2VsbEZyb21Db2RlUG9pbnQodGhpcy5fYWN0aXZlQnVmZmVyLngtMSwwLDEsaC5mZyxoLmJnLGguZXh0ZW5kZWQpO2Zvcih2YXIgXz10O188cjsrK18pe2lmKGk9ZVtfXSxuPXRoaXMuX3VuaWNvZGVTZXJ2aWNlLndjd2lkdGgoaSksaTwxMjcmJm8pe3ZhciBwPW9bU3RyaW5nLmZyb21DaGFyQ29kZShpKV07cCYmKGk9cC5jaGFyQ29kZUF0KDApKX1pZihzJiZ0aGlzLl9vbkExMXlDaGFyLmZpcmUoKDAsdS5zdHJpbmdGcm9tQ29kZVBvaW50KShpKSksbnx8IXRoaXMuX2FjdGl2ZUJ1ZmZlci54KXtpZih0aGlzLl9hY3RpdmVCdWZmZXIueCtuLTE+PWEpaWYoYyl7Zm9yKDt0aGlzLl9hY3RpdmVCdWZmZXIueDxhOylmLnNldENlbGxGcm9tQ29kZVBvaW50KHRoaXMuX2FjdGl2ZUJ1ZmZlci54KyssMCwxLGguZmcsaC5iZyxoLmV4dGVuZGVkKTt0aGlzLl9hY3RpdmVCdWZmZXIueD0wLHRoaXMuX2FjdGl2ZUJ1ZmZlci55KyssdGhpcy5fYWN0aXZlQnVmZmVyLnk9PT10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKzE/KHRoaXMuX2FjdGl2ZUJ1ZmZlci55LS0sdGhpcy5fYnVmZmVyU2VydmljZS5zY3JvbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpLCEwKSk6KHRoaXMuX2FjdGl2ZUJ1ZmZlci55Pj10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MmJih0aGlzLl9hY3RpdmVCdWZmZXIueT10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSksdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpLmlzV3JhcHBlZD0hMCksZj10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSl9ZWxzZSBpZih0aGlzLl9hY3RpdmVCdWZmZXIueD1hLTEsMj09PW4pY29udGludWU7aWYobCYmKGYuaW5zZXJ0Q2VsbHModGhpcy5fYWN0aXZlQnVmZmVyLngsbix0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwoaCksaCksMj09PWYuZ2V0V2lkdGgoYS0xKSYmZi5zZXRDZWxsRnJvbUNvZGVQb2ludChhLTEsZC5OVUxMX0NFTExfQ09ERSxkLk5VTExfQ0VMTF9XSURUSCxoLmZnLGguYmcsaC5leHRlbmRlZCkpLGYuc2V0Q2VsbEZyb21Db2RlUG9pbnQodGhpcy5fYWN0aXZlQnVmZmVyLngrKyxpLG4saC5mZyxoLmJnLGguZXh0ZW5kZWQpLG4+MClmb3IoOy0tbjspZi5zZXRDZWxsRnJvbUNvZGVQb2ludCh0aGlzLl9hY3RpdmVCdWZmZXIueCsrLDAsMCxoLmZnLGguYmcsaC5leHRlbmRlZCl9ZWxzZSBmLmdldFdpZHRoKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LTEpP2YuYWRkQ29kZXBvaW50VG9DZWxsKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LTEsaSk6Zi5hZGRDb2RlcG9pbnRUb0NlbGwodGhpcy5fYWN0aXZlQnVmZmVyLngtMixpKX1yLXQ+MCYmKGYubG9hZENlbGwodGhpcy5fYWN0aXZlQnVmZmVyLngtMSx0aGlzLl93b3JrQ2VsbCksMj09PXRoaXMuX3dvcmtDZWxsLmdldFdpZHRoKCl8fHRoaXMuX3dvcmtDZWxsLmdldENvZGUoKT42NTUzNT90aGlzLl9wYXJzZXIucHJlY2VkaW5nQ29kZXBvaW50PTA6dGhpcy5fd29ya0NlbGwuaXNDb21iaW5lZCgpP3RoaXMuX3BhcnNlci5wcmVjZWRpbmdDb2RlcG9pbnQ9dGhpcy5fd29ya0NlbGwuZ2V0Q2hhcnMoKS5jaGFyQ29kZUF0KDApOnRoaXMuX3BhcnNlci5wcmVjZWRpbmdDb2RlcG9pbnQ9dGhpcy5fd29ya0NlbGwuY29udGVudCksdGhpcy5fYWN0aXZlQnVmZmVyLng8YSYmci10PjAmJjA9PT1mLmdldFdpZHRoKHRoaXMuX2FjdGl2ZUJ1ZmZlci54KSYmIWYuaGFzQ29udGVudCh0aGlzLl9hY3RpdmVCdWZmZXIueCkmJmYuc2V0Q2VsbEZyb21Db2RlUG9pbnQodGhpcy5fYWN0aXZlQnVmZmVyLngsMCwxLGguZmcsaC5iZyxoLmV4dGVuZGVkKSx0aGlzLl9kaXJ0eVJvd1NlcnZpY2UubWFya0RpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJDc2lIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcztyZXR1cm5cInRcIiE9PWUuZmluYWx8fGUucHJlZml4fHxlLmludGVybWVkaWF0ZXM/dGhpcy5fcGFyc2VyLnJlZ2lzdGVyQ3NpSGFuZGxlcihlLHQpOnRoaXMuX3BhcnNlci5yZWdpc3RlckNzaUhhbmRsZXIoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIXcoZS5wYXJhbXNbMF0sci5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy53aW5kb3dPcHRpb25zKXx8dChlKX0pKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJEY3NIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3BhcnNlci5yZWdpc3RlckRjc0hhbmRsZXIoZSxuZXcgbS5EY3NIYW5kbGVyKHQpKX0sdC5wcm90b3R5cGUucmVnaXN0ZXJFc2NIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3BhcnNlci5yZWdpc3RlckVzY0hhbmRsZXIoZSx0KX0sdC5wcm90b3R5cGUucmVnaXN0ZXJPc2NIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3BhcnNlci5yZWdpc3Rlck9zY0hhbmRsZXIoZSxuZXcgZy5Pc2NIYW5kbGVyKHQpKX0sdC5wcm90b3R5cGUuYmVsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblJlcXVlc3RCZWxsLmZpcmUoKSwhMH0sdC5wcm90b3R5cGUubGluZUZlZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlydHlSb3dTZXJ2aWNlLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSksdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5jb252ZXJ0RW9sJiYodGhpcy5fYWN0aXZlQnVmZmVyLng9MCksdGhpcy5fYWN0aXZlQnVmZmVyLnkrKyx0aGlzLl9hY3RpdmVCdWZmZXIueT09PXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20rMT8odGhpcy5fYWN0aXZlQnVmZmVyLnktLSx0aGlzLl9idWZmZXJTZXJ2aWNlLnNjcm9sbCh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpKTp0aGlzLl9hY3RpdmVCdWZmZXIueT49dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzJiYodGhpcy5fYWN0aXZlQnVmZmVyLnk9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTEpLHRoaXMuX2FjdGl2ZUJ1ZmZlci54Pj10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMmJnRoaXMuX2FjdGl2ZUJ1ZmZlci54LS0sdGhpcy5fZGlydHlSb3dTZXJ2aWNlLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSksdGhpcy5fb25MaW5lRmVlZC5maXJlKCksITB9LHQucHJvdG90eXBlLmNhcnJpYWdlUmV0dXJuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUJ1ZmZlci54PTAsITB9LHQucHJvdG90eXBlLmJhY2tzcGFjZT1mdW5jdGlvbigpe3ZhciBlO2lmKCF0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMucmV2ZXJzZVdyYXBhcm91bmQpcmV0dXJuIHRoaXMuX3Jlc3RyaWN0Q3Vyc29yKCksdGhpcy5fYWN0aXZlQnVmZmVyLng+MCYmdGhpcy5fYWN0aXZlQnVmZmVyLngtLSwhMDtpZih0aGlzLl9yZXN0cmljdEN1cnNvcih0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMpLHRoaXMuX2FjdGl2ZUJ1ZmZlci54PjApdGhpcy5fYWN0aXZlQnVmZmVyLngtLTtlbHNlIGlmKDA9PT10aGlzLl9hY3RpdmVCdWZmZXIueCYmdGhpcy5fYWN0aXZlQnVmZmVyLnk+dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCYmdGhpcy5fYWN0aXZlQnVmZmVyLnk8PXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20mJihudWxsPT09KGU9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5pc1dyYXBwZWQpKXt0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSkuaXNXcmFwcGVkPSExLHRoaXMuX2FjdGl2ZUJ1ZmZlci55LS0sdGhpcy5fYWN0aXZlQnVmZmVyLng9dGhpcy5fYnVmZmVyU2VydmljZS5jb2xzLTE7dmFyIHQ9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpO3QuaGFzV2lkdGgodGhpcy5fYWN0aXZlQnVmZmVyLngpJiYhdC5oYXNDb250ZW50KHRoaXMuX2FjdGl2ZUJ1ZmZlci54KSYmdGhpcy5fYWN0aXZlQnVmZmVyLngtLX1yZXR1cm4gdGhpcy5fcmVzdHJpY3RDdXJzb3IoKSwhMH0sdC5wcm90b3R5cGUudGFiPWZ1bmN0aW9uKCl7aWYodGhpcy5fYWN0aXZlQnVmZmVyLng+PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scylyZXR1cm4hMDt2YXIgZT10aGlzLl9hY3RpdmVCdWZmZXIueDtyZXR1cm4gdGhpcy5fYWN0aXZlQnVmZmVyLng9dGhpcy5fYWN0aXZlQnVmZmVyLm5leHRTdG9wKCksdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zY3JlZW5SZWFkZXJNb2RlJiZ0aGlzLl9vbkExMXlUYWIuZmlyZSh0aGlzLl9hY3RpdmVCdWZmZXIueC1lKSwhMH0sdC5wcm90b3R5cGUuc2hpZnRPdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0xldmVsKDEpLCEwfSx0LnByb3RvdHlwZS5zaGlmdEluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NoYXJzZXRTZXJ2aWNlLnNldGdMZXZlbCgwKSwhMH0sdC5wcm90b3R5cGUuX3Jlc3RyaWN0Q3Vyc29yPWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scy0xKSx0aGlzLl9hY3RpdmVCdWZmZXIueD1NYXRoLm1pbihlLE1hdGgubWF4KDAsdGhpcy5fYWN0aXZlQnVmZmVyLngpKSx0aGlzLl9hY3RpdmVCdWZmZXIueT10aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMub3JpZ2luP01hdGgubWluKHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20sTWF0aC5tYXgodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIueSkpOk1hdGgubWluKHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xLE1hdGgubWF4KDAsdGhpcy5fYWN0aXZlQnVmZmVyLnkpKSx0aGlzLl9kaXJ0eVJvd1NlcnZpY2UubWFya0RpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55KX0sdC5wcm90b3R5cGUuX3NldEN1cnNvcj1mdW5jdGlvbihlLHQpe3RoaXMuX2RpcnR5Um93U2VydmljZS5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpLHRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5vcmlnaW4/KHRoaXMuX2FjdGl2ZUJ1ZmZlci54PWUsdGhpcy5fYWN0aXZlQnVmZmVyLnk9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCt0KToodGhpcy5fYWN0aXZlQnVmZmVyLng9ZSx0aGlzLl9hY3RpdmVCdWZmZXIueT10KSx0aGlzLl9yZXN0cmljdEN1cnNvcigpLHRoaXMuX2RpcnR5Um93U2VydmljZS5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpfSx0LnByb3RvdHlwZS5fbW92ZUN1cnNvcj1mdW5jdGlvbihlLHQpe3RoaXMuX3Jlc3RyaWN0Q3Vyc29yKCksdGhpcy5fc2V0Q3Vyc29yKHRoaXMuX2FjdGl2ZUJ1ZmZlci54K2UsdGhpcy5fYWN0aXZlQnVmZmVyLnkrdCl9LHQucHJvdG90eXBlLmN1cnNvclVwPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2FjdGl2ZUJ1ZmZlci55LXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3A7cmV0dXJuIHQ+PTA/dGhpcy5fbW92ZUN1cnNvcigwLC1NYXRoLm1pbih0LGUucGFyYW1zWzBdfHwxKSk6dGhpcy5fbW92ZUN1cnNvcigwLC0oZS5wYXJhbXNbMF18fDEpKSwhMH0sdC5wcm90b3R5cGUuY3Vyc29yRG93bj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tLXRoaXMuX2FjdGl2ZUJ1ZmZlci55O3JldHVybiB0Pj0wP3RoaXMuX21vdmVDdXJzb3IoMCxNYXRoLm1pbih0LGUucGFyYW1zWzBdfHwxKSk6dGhpcy5fbW92ZUN1cnNvcigwLGUucGFyYW1zWzBdfHwxKSwhMH0sdC5wcm90b3R5cGUuY3Vyc29yRm9yd2FyZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbW92ZUN1cnNvcihlLnBhcmFtc1swXXx8MSwwKSwhMH0sdC5wcm90b3R5cGUuY3Vyc29yQmFja3dhcmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX21vdmVDdXJzb3IoLShlLnBhcmFtc1swXXx8MSksMCksITB9LHQucHJvdG90eXBlLmN1cnNvck5leHRMaW5lPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmN1cnNvckRvd24oZSksdGhpcy5fYWN0aXZlQnVmZmVyLng9MCwhMH0sdC5wcm90b3R5cGUuY3Vyc29yUHJlY2VkaW5nTGluZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jdXJzb3JVcChlKSx0aGlzLl9hY3RpdmVCdWZmZXIueD0wLCEwfSx0LnByb3RvdHlwZS5jdXJzb3JDaGFyQWJzb2x1dGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3NldEN1cnNvcigoZS5wYXJhbXNbMF18fDEpLTEsdGhpcy5fYWN0aXZlQnVmZmVyLnkpLCEwfSx0LnByb3RvdHlwZS5jdXJzb3JQb3NpdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2V0Q3Vyc29yKGUubGVuZ3RoPj0yPyhlLnBhcmFtc1sxXXx8MSktMTowLChlLnBhcmFtc1swXXx8MSktMSksITB9LHQucHJvdG90eXBlLmNoYXJQb3NBYnNvbHV0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2V0Q3Vyc29yKChlLnBhcmFtc1swXXx8MSktMSx0aGlzLl9hY3RpdmVCdWZmZXIueSksITB9LHQucHJvdG90eXBlLmhQb3NpdGlvblJlbGF0aXZlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tb3ZlQ3Vyc29yKGUucGFyYW1zWzBdfHwxLDApLCEwfSx0LnByb3RvdHlwZS5saW5lUG9zQWJzb2x1dGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3NldEN1cnNvcih0aGlzLl9hY3RpdmVCdWZmZXIueCwoZS5wYXJhbXNbMF18fDEpLTEpLCEwfSx0LnByb3RvdHlwZS52UG9zaXRpb25SZWxhdGl2ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbW92ZUN1cnNvcigwLGUucGFyYW1zWzBdfHwxKSwhMH0sdC5wcm90b3R5cGUuaFZQb3NpdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jdXJzb3JQb3NpdGlvbihlKSwhMH0sdC5wcm90b3R5cGUudGFiQ2xlYXI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJhbXNbMF07cmV0dXJuIDA9PT10P2RlbGV0ZSB0aGlzLl9hY3RpdmVCdWZmZXIudGFic1t0aGlzLl9hY3RpdmVCdWZmZXIueF06Mz09PXQmJih0aGlzLl9hY3RpdmVCdWZmZXIudGFicz17fSksITB9LHQucHJvdG90eXBlLmN1cnNvckZvcndhcmRUYWI9ZnVuY3Rpb24oZSl7aWYodGhpcy5fYWN0aXZlQnVmZmVyLng+PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scylyZXR1cm4hMDtmb3IodmFyIHQ9ZS5wYXJhbXNbMF18fDE7dC0tOyl0aGlzLl9hY3RpdmVCdWZmZXIueD10aGlzLl9hY3RpdmVCdWZmZXIubmV4dFN0b3AoKTtyZXR1cm4hMH0sdC5wcm90b3R5cGUuY3Vyc29yQmFja3dhcmRUYWI9ZnVuY3Rpb24oZSl7aWYodGhpcy5fYWN0aXZlQnVmZmVyLng+PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scylyZXR1cm4hMDtmb3IodmFyIHQ9ZS5wYXJhbXNbMF18fDE7dC0tOyl0aGlzLl9hY3RpdmVCdWZmZXIueD10aGlzLl9hY3RpdmVCdWZmZXIucHJldlN0b3AoKTtyZXR1cm4hMH0sdC5wcm90b3R5cGUuX2VyYXNlSW5CdWZmZXJMaW5lPWZ1bmN0aW9uKGUsdCxyLGkpe3ZvaWQgMD09PWkmJihpPSExKTt2YXIgbj10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZStlKTtuLnJlcGxhY2VDZWxscyh0LHIsdGhpcy5fYWN0aXZlQnVmZmVyLmdldE51bGxDZWxsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fZXJhc2VBdHRyRGF0YSgpKSxpJiYobi5pc1dyYXBwZWQ9ITEpfSx0LnByb3RvdHlwZS5fcmVzZXRCdWZmZXJMaW5lPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK2UpO3QuZmlsbCh0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSksdGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIuY2xlYXJNYXJrZXJzKHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZStlKSx0LmlzV3JhcHBlZD0hMX0sdC5wcm90b3R5cGUuZXJhc2VJbkRpc3BsYXk9ZnVuY3Rpb24oZSl7dmFyIHQ7c3dpdGNoKHRoaXMuX3Jlc3RyaWN0Q3Vyc29yKHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyksZS5wYXJhbXNbMF0pe2Nhc2UgMDpmb3IodD10aGlzLl9hY3RpdmVCdWZmZXIueSx0aGlzLl9kaXJ0eVJvd1NlcnZpY2UubWFya0RpcnR5KHQpLHRoaXMuX2VyYXNlSW5CdWZmZXJMaW5lKHQrKyx0aGlzLl9hY3RpdmVCdWZmZXIueCx0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsMD09PXRoaXMuX2FjdGl2ZUJ1ZmZlci54KTt0PHRoaXMuX2J1ZmZlclNlcnZpY2Uucm93czt0KyspdGhpcy5fcmVzZXRCdWZmZXJMaW5lKHQpO3RoaXMuX2RpcnR5Um93U2VydmljZS5tYXJrRGlydHkodCk7YnJlYWs7Y2FzZSAxOmZvcih0PXRoaXMuX2FjdGl2ZUJ1ZmZlci55LHRoaXMuX2RpcnR5Um93U2VydmljZS5tYXJrRGlydHkodCksdGhpcy5fZXJhc2VJbkJ1ZmZlckxpbmUodCwwLHRoaXMuX2FjdGl2ZUJ1ZmZlci54KzEsITApLHRoaXMuX2FjdGl2ZUJ1ZmZlci54KzE+PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29scyYmKHRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodCsxKS5pc1dyYXBwZWQ9ITEpO3QtLTspdGhpcy5fcmVzZXRCdWZmZXJMaW5lKHQpO3RoaXMuX2RpcnR5Um93U2VydmljZS5tYXJrRGlydHkoMCk7YnJlYWs7Y2FzZSAyOmZvcih0PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cyx0aGlzLl9kaXJ0eVJvd1NlcnZpY2UubWFya0RpcnR5KHQtMSk7dC0tOyl0aGlzLl9yZXNldEJ1ZmZlckxpbmUodCk7dGhpcy5fZGlydHlSb3dTZXJ2aWNlLm1hcmtEaXJ0eSgwKTticmVhaztjYXNlIDM6dmFyIHI9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmxlbmd0aC10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3M7cj4wJiYodGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnRyaW1TdGFydChyKSx0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2U9TWF0aC5tYXgodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlLXIsMCksdGhpcy5fYWN0aXZlQnVmZmVyLnlkaXNwPU1hdGgubWF4KHRoaXMuX2FjdGl2ZUJ1ZmZlci55ZGlzcC1yLDApLHRoaXMuX29uU2Nyb2xsLmZpcmUoMCkpfXJldHVybiEwfSx0LnByb3RvdHlwZS5lcmFzZUluTGluZT1mdW5jdGlvbihlKXtzd2l0Y2godGhpcy5fcmVzdHJpY3RDdXJzb3IodGhpcy5fYnVmZmVyU2VydmljZS5jb2xzKSxlLnBhcmFtc1swXSl7Y2FzZSAwOnRoaXMuX2VyYXNlSW5CdWZmZXJMaW5lKHRoaXMuX2FjdGl2ZUJ1ZmZlci55LHRoaXMuX2FjdGl2ZUJ1ZmZlci54LHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scywwPT09dGhpcy5fYWN0aXZlQnVmZmVyLngpO2JyZWFrO2Nhc2UgMTp0aGlzLl9lcmFzZUluQnVmZmVyTGluZSh0aGlzLl9hY3RpdmVCdWZmZXIueSwwLHRoaXMuX2FjdGl2ZUJ1ZmZlci54KzEsITEpO2JyZWFrO2Nhc2UgMjp0aGlzLl9lcmFzZUluQnVmZmVyTGluZSh0aGlzLl9hY3RpdmVCdWZmZXIueSwwLHRoaXMuX2J1ZmZlclNlcnZpY2UuY29scywhMCl9cmV0dXJuIHRoaXMuX2RpcnR5Um93U2VydmljZS5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpLCEwfSx0LnByb3RvdHlwZS5pbnNlcnRMaW5lcz1mdW5jdGlvbihlKXt0aGlzLl9yZXN0cmljdEN1cnNvcigpO3ZhciB0PWUucGFyYW1zWzBdfHwxO2lmKHRoaXMuX2FjdGl2ZUJ1ZmZlci55PnRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b218fHRoaXMuX2FjdGl2ZUJ1ZmZlci55PHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3ApcmV0dXJuITA7Zm9yKHZhciByPXRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSxpPXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xLXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20sbj10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSt0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UtaSsxO3QtLTspdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnNwbGljZShuLTEsMSksdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnNwbGljZShyLDAsdGhpcy5fYWN0aXZlQnVmZmVyLmdldEJsYW5rTGluZSh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpKTtyZXR1cm4gdGhpcy5fZGlydHlSb3dTZXJ2aWNlLm1hcmtSYW5nZURpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55LHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pLHRoaXMuX2FjdGl2ZUJ1ZmZlci54PTAsITB9LHQucHJvdG90eXBlLmRlbGV0ZUxpbmVzPWZ1bmN0aW9uKGUpe3RoaXMuX3Jlc3RyaWN0Q3Vyc29yKCk7dmFyIHQ9ZS5wYXJhbXNbMF18fDE7aWYodGhpcy5fYWN0aXZlQnVmZmVyLnk+dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbXx8dGhpcy5fYWN0aXZlQnVmZmVyLnk8dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcClyZXR1cm4hMDt2YXIgcixpPXRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueTtmb3Iocj10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMS10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tLHI9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTErdGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlLXI7dC0tOyl0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc3BsaWNlKGksMSksdGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLnNwbGljZShyLDAsdGhpcy5fYWN0aXZlQnVmZmVyLmdldEJsYW5rTGluZSh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpKTtyZXR1cm4gdGhpcy5fZGlydHlSb3dTZXJ2aWNlLm1hcmtSYW5nZURpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55LHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pLHRoaXMuX2FjdGl2ZUJ1ZmZlci54PTAsITB9LHQucHJvdG90eXBlLmluc2VydENoYXJzPWZ1bmN0aW9uKGUpe3RoaXMuX3Jlc3RyaWN0Q3Vyc29yKCk7dmFyIHQ9dGhpcy5fYWN0aXZlQnVmZmVyLmxpbmVzLmdldCh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkpO3JldHVybiB0JiYodC5pbnNlcnRDZWxscyh0aGlzLl9hY3RpdmVCdWZmZXIueCxlLnBhcmFtc1swXXx8MSx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLHRoaXMuX2RpcnR5Um93U2VydmljZS5tYXJrRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnkpKSwhMH0sdC5wcm90b3R5cGUuZGVsZXRlQ2hhcnM9ZnVuY3Rpb24oZSl7dGhpcy5fcmVzdHJpY3RDdXJzb3IoKTt2YXIgdD10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSk7cmV0dXJuIHQmJih0LmRlbGV0ZUNlbGxzKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LGUucGFyYW1zWzBdfHwxLHRoaXMuX2FjdGl2ZUJ1ZmZlci5nZXROdWxsQ2VsbCh0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fZGlydHlSb3dTZXJ2aWNlLm1hcmtEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIueSkpLCEwfSx0LnByb3RvdHlwZS5zY3JvbGxVcD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5wYXJhbXNbMF18fDE7dC0tOyl0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc3BsaWNlKHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wLDEpLHRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5zcGxpY2UodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20sMCx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0QmxhbmtMaW5lKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSkpO3JldHVybiB0aGlzLl9kaXJ0eVJvd1NlcnZpY2UubWFya1JhbmdlRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKSwhMH0sdC5wcm90b3R5cGUuc2Nyb2xsRG93bj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5wYXJhbXNbMF18fDE7dC0tOyl0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc3BsaWNlKHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tLDEpLHRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5zcGxpY2UodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3AsMCx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0QmxhbmtMaW5lKGYuREVGQVVMVF9BVFRSX0RBVEEpKTtyZXR1cm4gdGhpcy5fZGlydHlSb3dTZXJ2aWNlLm1hcmtSYW5nZURpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3AsdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSksITB9LHQucHJvdG90eXBlLnNjcm9sbExlZnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5fYWN0aXZlQnVmZmVyLnk+dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbXx8dGhpcy5fYWN0aXZlQnVmZmVyLnk8dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcClyZXR1cm4hMDtmb3IodmFyIHQ9ZS5wYXJhbXNbMF18fDEscj10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wO3I8PXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b207KytyKXt2YXIgaT10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZStyKTtpLmRlbGV0ZUNlbGxzKDAsdCx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLGkuaXNXcmFwcGVkPSExfXJldHVybiB0aGlzLl9kaXJ0eVJvd1NlcnZpY2UubWFya1JhbmdlRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKSwhMH0sdC5wcm90b3R5cGUuc2Nyb2xsUmlnaHQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5fYWN0aXZlQnVmZmVyLnk+dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbXx8dGhpcy5fYWN0aXZlQnVmZmVyLnk8dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcClyZXR1cm4hMDtmb3IodmFyIHQ9ZS5wYXJhbXNbMF18fDEscj10aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wO3I8PXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b207KytyKXt2YXIgaT10aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuZ2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZStyKTtpLmluc2VydENlbGxzKDAsdCx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLGkuaXNXcmFwcGVkPSExfXJldHVybiB0aGlzLl9kaXJ0eVJvd1NlcnZpY2UubWFya1JhbmdlRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKSwhMH0sdC5wcm90b3R5cGUuaW5zZXJ0Q29sdW1ucz1mdW5jdGlvbihlKXtpZih0aGlzLl9hY3RpdmVCdWZmZXIueT50aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tfHx0aGlzLl9hY3RpdmVCdWZmZXIueTx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wKXJldHVybiEwO2Zvcih2YXIgdD1lLnBhcmFtc1swXXx8MSxyPXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3A7cjw9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbTsrK3Ipe3ZhciBpPXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3IpO2kuaW5zZXJ0Q2VsbHModGhpcy5fYWN0aXZlQnVmZmVyLngsdCx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLGkuaXNXcmFwcGVkPSExfXJldHVybiB0aGlzLl9kaXJ0eVJvd1NlcnZpY2UubWFya1JhbmdlRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKSwhMH0sdC5wcm90b3R5cGUuZGVsZXRlQ29sdW1ucz1mdW5jdGlvbihlKXtpZih0aGlzLl9hY3RpdmVCdWZmZXIueT50aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tfHx0aGlzLl9hY3RpdmVCdWZmZXIueTx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wKXJldHVybiEwO2Zvcih2YXIgdD1lLnBhcmFtc1swXXx8MSxyPXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3A7cjw9dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbTsrK3Ipe3ZhciBpPXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3IpO2kuZGVsZXRlQ2VsbHModGhpcy5fYWN0aXZlQnVmZmVyLngsdCx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0TnVsbENlbGwodGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9lcmFzZUF0dHJEYXRhKCkpLGkuaXNXcmFwcGVkPSExfXJldHVybiB0aGlzLl9kaXJ0eVJvd1NlcnZpY2UubWFya1JhbmdlRGlydHkodGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcCx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tKSwhMH0sdC5wcm90b3R5cGUuZXJhc2VDaGFycz1mdW5jdGlvbihlKXt0aGlzLl9yZXN0cmljdEN1cnNvcigpO3ZhciB0PXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQodGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55KTtyZXR1cm4gdCYmKHQucmVwbGFjZUNlbGxzKHRoaXMuX2FjdGl2ZUJ1ZmZlci54LHRoaXMuX2FjdGl2ZUJ1ZmZlci54KyhlLnBhcmFtc1swXXx8MSksdGhpcy5fYWN0aXZlQnVmZmVyLmdldE51bGxDZWxsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fZXJhc2VBdHRyRGF0YSgpKSx0aGlzLl9kaXJ0eVJvd1NlcnZpY2UubWFya0RpcnR5KHRoaXMuX2FjdGl2ZUJ1ZmZlci55KSksITB9LHQucHJvdG90eXBlLnJlcGVhdFByZWNlZGluZ0NoYXJhY3Rlcj1mdW5jdGlvbihlKXtpZighdGhpcy5fcGFyc2VyLnByZWNlZGluZ0NvZGVwb2ludClyZXR1cm4hMDtmb3IodmFyIHQ9ZS5wYXJhbXNbMF18fDEscj1uZXcgVWludDMyQXJyYXkodCksaT0wO2k8dDsrK2kpcltpXT10aGlzLl9wYXJzZXIucHJlY2VkaW5nQ29kZXBvaW50O3JldHVybiB0aGlzLnByaW50KHIsMCxyLmxlbmd0aCksITB9LHQucHJvdG90eXBlLnNlbmREZXZpY2VBdHRyaWJ1dGVzUHJpbWFyeT1mdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJhbXNbMF0+MHx8KHRoaXMuX2lzKFwieHRlcm1cIil8fHRoaXMuX2lzKFwicnh2dC11bmljb2RlXCIpfHx0aGlzLl9pcyhcInNjcmVlblwiKT90aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHMuQzAuRVNDK1wiWz8xOzJjXCIpOnRoaXMuX2lzKFwibGludXhcIikmJnRoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQocy5DMC5FU0MrXCJbPzZjXCIpKSwhMH0sdC5wcm90b3R5cGUuc2VuZERldmljZUF0dHJpYnV0ZXNTZWNvbmRhcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyYW1zWzBdPjB8fCh0aGlzLl9pcyhcInh0ZXJtXCIpP3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQocy5DMC5FU0MrXCJbPjA7Mjc2OzBjXCIpOnRoaXMuX2lzKFwicnh2dC11bmljb2RlXCIpP3RoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQocy5DMC5FU0MrXCJbPjg1Ozk1OzBjXCIpOnRoaXMuX2lzKFwibGludXhcIik/dGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChlLnBhcmFtc1swXStcImNcIik6dGhpcy5faXMoXCJzY3JlZW5cIikmJnRoaXMuX2NvcmVTZXJ2aWNlLnRyaWdnZXJEYXRhRXZlbnQocy5DMC5FU0MrXCJbPjgzOzQwMDAzOzBjXCIpKSwhMH0sdC5wcm90b3R5cGUuX2lzPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09KHRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMudGVybU5hbWUrXCJcIikuaW5kZXhPZihlKX0sdC5wcm90b3R5cGUuc2V0TW9kZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyk0PT09ZS5wYXJhbXNbdF0mJih0aGlzLl9jb3JlU2VydmljZS5tb2Rlcy5pbnNlcnRNb2RlPSEwKTtyZXR1cm4hMH0sdC5wcm90b3R5cGUuc2V0TW9kZVByaXZhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspc3dpdGNoKGUucGFyYW1zW3RdKXtjYXNlIDE6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmFwcGxpY2F0aW9uQ3Vyc29yS2V5cz0hMDticmVhaztjYXNlIDI6dGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0NoYXJzZXQoMCxhLkRFRkFVTFRfQ0hBUlNFVCksdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0NoYXJzZXQoMSxhLkRFRkFVTFRfQ0hBUlNFVCksdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0NoYXJzZXQoMixhLkRFRkFVTFRfQ0hBUlNFVCksdGhpcy5fY2hhcnNldFNlcnZpY2Uuc2V0Z0NoYXJzZXQoMyxhLkRFRkFVTFRfQ0hBUlNFVCk7YnJlYWs7Y2FzZSAzOnRoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMud2luZG93T3B0aW9ucy5zZXRXaW5MaW5lcyYmKHRoaXMuX2J1ZmZlclNlcnZpY2UucmVzaXplKDEzMix0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MpLHRoaXMuX29uUmVxdWVzdFJlc2V0LmZpcmUoKSk7YnJlYWs7Y2FzZSA2OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5vcmlnaW49ITAsdGhpcy5fc2V0Q3Vyc29yKDAsMCk7YnJlYWs7Y2FzZSA3OnRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy53cmFwYXJvdW5kPSEwO2JyZWFrO2Nhc2UgMTI6YnJlYWs7Y2FzZSA0NTp0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMucmV2ZXJzZVdyYXBhcm91bmQ9ITA7YnJlYWs7Y2FzZSA2Njp0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiU2VyaWFsIHBvcnQgcmVxdWVzdGVkIGFwcGxpY2F0aW9uIGtleXBhZC5cIiksdGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmFwcGxpY2F0aW9uS2V5cGFkPSEwLHRoaXMuX29uUmVxdWVzdFN5bmNTY3JvbGxCYXIuZmlyZSgpO2JyZWFrO2Nhc2UgOTp0aGlzLl9jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZVByb3RvY29sPVwiWDEwXCI7YnJlYWs7Y2FzZSAxZTM6dGhpcy5fY29yZU1vdXNlU2VydmljZS5hY3RpdmVQcm90b2NvbD1cIlZUMjAwXCI7YnJlYWs7Y2FzZSAxMDAyOnRoaXMuX2NvcmVNb3VzZVNlcnZpY2UuYWN0aXZlUHJvdG9jb2w9XCJEUkFHXCI7YnJlYWs7Y2FzZSAxMDAzOnRoaXMuX2NvcmVNb3VzZVNlcnZpY2UuYWN0aXZlUHJvdG9jb2w9XCJBTllcIjticmVhaztjYXNlIDEwMDQ6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLnNlbmRGb2N1cz0hMCx0aGlzLl9vblJlcXVlc3RTZW5kRm9jdXMuZmlyZSgpO2JyZWFrO2Nhc2UgMTAwNTp0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiREVDU0VUIDEwMDUgbm90IHN1cHBvcnRlZCAoc2VlICMyNTA3KVwiKTticmVhaztjYXNlIDEwMDY6dGhpcy5fY29yZU1vdXNlU2VydmljZS5hY3RpdmVFbmNvZGluZz1cIlNHUlwiO2JyZWFrO2Nhc2UgMTAxNTp0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiREVDU0VUIDEwMTUgbm90IHN1cHBvcnRlZCAoc2VlICMyNTA3KVwiKTticmVhaztjYXNlIDI1OnRoaXMuX2NvcmVTZXJ2aWNlLmlzQ3Vyc29ySGlkZGVuPSExO2JyZWFrO2Nhc2UgMTA0ODp0aGlzLnNhdmVDdXJzb3IoKTticmVhaztjYXNlIDEwNDk6dGhpcy5zYXZlQ3Vyc29yKCk7Y2FzZSA0NzpjYXNlIDEwNDc6dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXJzLmFjdGl2YXRlQWx0QnVmZmVyKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSksdGhpcy5fY29yZVNlcnZpY2UuaXNDdXJzb3JJbml0aWFsaXplZD0hMCx0aGlzLl9vblJlcXVlc3RSZWZyZXNoUm93cy5maXJlKDAsdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTEpLHRoaXMuX29uUmVxdWVzdFN5bmNTY3JvbGxCYXIuZmlyZSgpO2JyZWFrO2Nhc2UgMjAwNDp0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYnJhY2tldGVkUGFzdGVNb2RlPSEwfXJldHVybiEwfSx0LnByb3RvdHlwZS5yZXNldE1vZGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspND09PWUucGFyYW1zW3RdJiYodGhpcy5fY29yZVNlcnZpY2UubW9kZXMuaW5zZXJ0TW9kZT0hMSk7cmV0dXJuITB9LHQucHJvdG90eXBlLnJlc2V0TW9kZVByaXZhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspc3dpdGNoKGUucGFyYW1zW3RdKXtjYXNlIDE6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLmFwcGxpY2F0aW9uQ3Vyc29yS2V5cz0hMTticmVhaztjYXNlIDM6dGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy53aW5kb3dPcHRpb25zLnNldFdpbkxpbmVzJiYodGhpcy5fYnVmZmVyU2VydmljZS5yZXNpemUoODAsdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKSx0aGlzLl9vblJlcXVlc3RSZXNldC5maXJlKCkpO2JyZWFrO2Nhc2UgNjp0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMub3JpZ2luPSExLHRoaXMuX3NldEN1cnNvcigwLDApO2JyZWFrO2Nhc2UgNzp0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMud3JhcGFyb3VuZD0hMTticmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgNDU6dGhpcy5fY29yZVNlcnZpY2UuZGVjUHJpdmF0ZU1vZGVzLnJldmVyc2VXcmFwYXJvdW5kPSExO2JyZWFrO2Nhc2UgNjY6dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlN3aXRjaGluZyBiYWNrIHRvIG5vcm1hbCBrZXlwYWQuXCIpLHRoaXMuX2NvcmVTZXJ2aWNlLmRlY1ByaXZhdGVNb2Rlcy5hcHBsaWNhdGlvbktleXBhZD0hMSx0aGlzLl9vblJlcXVlc3RTeW5jU2Nyb2xsQmFyLmZpcmUoKTticmVhaztjYXNlIDk6Y2FzZSAxZTM6Y2FzZSAxMDAyOmNhc2UgMTAwMzp0aGlzLl9jb3JlTW91c2VTZXJ2aWNlLmFjdGl2ZVByb3RvY29sPVwiTk9ORVwiO2JyZWFrO2Nhc2UgMTAwNDp0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuc2VuZEZvY3VzPSExO2JyZWFrO2Nhc2UgMTAwNTp0aGlzLl9sb2dTZXJ2aWNlLmRlYnVnKFwiREVDUlNUIDEwMDUgbm90IHN1cHBvcnRlZCAoc2VlICMyNTA3KVwiKTticmVhaztjYXNlIDEwMDY6dGhpcy5fY29yZU1vdXNlU2VydmljZS5hY3RpdmVFbmNvZGluZz1cIkRFRkFVTFRcIjticmVhaztjYXNlIDEwMTU6dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIkRFQ1JTVCAxMDE1IG5vdCBzdXBwb3J0ZWQgKHNlZSAjMjUwNylcIik7YnJlYWs7Y2FzZSAyNTp0aGlzLl9jb3JlU2VydmljZS5pc0N1cnNvckhpZGRlbj0hMDticmVhaztjYXNlIDEwNDg6dGhpcy5yZXN0b3JlQ3Vyc29yKCk7YnJlYWs7Y2FzZSAxMDQ5OmNhc2UgNDc6Y2FzZSAxMDQ3OnRoaXMuX2J1ZmZlclNlcnZpY2UuYnVmZmVycy5hY3RpdmF0ZU5vcm1hbEJ1ZmZlcigpLDEwNDk9PT1lLnBhcmFtc1t0XSYmdGhpcy5yZXN0b3JlQ3Vyc29yKCksdGhpcy5fY29yZVNlcnZpY2UuaXNDdXJzb3JJbml0aWFsaXplZD0hMCx0aGlzLl9vblJlcXVlc3RSZWZyZXNoUm93cy5maXJlKDAsdGhpcy5fYnVmZmVyU2VydmljZS5yb3dzLTEpLHRoaXMuX29uUmVxdWVzdFN5bmNTY3JvbGxCYXIuZmlyZSgpO2JyZWFrO2Nhc2UgMjAwNDp0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYnJhY2tldGVkUGFzdGVNb2RlPSExfXJldHVybiEwfSx0LnByb3RvdHlwZS5fdXBkYXRlQXR0ckNvbG9yPWZ1bmN0aW9uKGUsdCxyLGksbil7cmV0dXJuIDI9PT10PyhlfD01MDMzMTY0OCxlJj0tMTY3NzcyMTYsZXw9di5BdHRyaWJ1dGVEYXRhLmZyb21Db2xvclJHQihbcixpLG5dKSk6NT09PXQmJihlJj0tNTAzMzE5MDQsZXw9MzM1NTQ0MzJ8MjU1JnIpLGV9LHQucHJvdG90eXBlLl9leHRyYWN0Q29sb3I9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPVswLDAsLTEsMCwwLDBdLG49MCxvPTA7ZG97aWYoaVtvK25dPWUucGFyYW1zW3Qrb10sZS5oYXNTdWJQYXJhbXModCtvKSl7dmFyIHM9ZS5nZXRTdWJQYXJhbXModCtvKSxhPTA7ZG97NT09PWlbMV0mJihuPTEpLGlbbythKzErbl09c1thXX13aGlsZSgrK2E8cy5sZW5ndGgmJmErbysxK248aS5sZW5ndGgpO2JyZWFrfWlmKDU9PT1pWzFdJiZvK24+PTJ8fDI9PT1pWzFdJiZvK24+PTUpYnJlYWs7aVsxXSYmKG49MSl9d2hpbGUoKytvK3Q8ZS5sZW5ndGgmJm8rbjxpLmxlbmd0aCk7Zm9yKGE9MjthPGkubGVuZ3RoOysrYSktMT09PWlbYV0mJihpW2FdPTApO3N3aXRjaChpWzBdKXtjYXNlIDM4OnIuZmc9dGhpcy5fdXBkYXRlQXR0ckNvbG9yKHIuZmcsaVsxXSxpWzNdLGlbNF0saVs1XSk7YnJlYWs7Y2FzZSA0ODpyLmJnPXRoaXMuX3VwZGF0ZUF0dHJDb2xvcihyLmJnLGlbMV0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2UgNTg6ci5leHRlbmRlZD1yLmV4dGVuZGVkLmNsb25lKCksci5leHRlbmRlZC51bmRlcmxpbmVDb2xvcj10aGlzLl91cGRhdGVBdHRyQ29sb3Ioci5leHRlbmRlZC51bmRlcmxpbmVDb2xvcixpWzFdLGlbM10saVs0XSxpWzVdKX1yZXR1cm4gb30sdC5wcm90b3R5cGUuX3Byb2Nlc3NVbmRlcmxpbmU9ZnVuY3Rpb24oZSx0KXt0LmV4dGVuZGVkPXQuZXh0ZW5kZWQuY2xvbmUoKSwoIX5lfHxlPjUpJiYoZT0xKSx0LmV4dGVuZGVkLnVuZGVybGluZVN0eWxlPWUsdC5mZ3w9MjY4NDM1NDU2LDA9PT1lJiYodC5mZyY9LTI2ODQzNTQ1NyksdC51cGRhdGVFeHRlbmRlZCgpfSx0LnByb3RvdHlwZS5jaGFyQXR0cmlidXRlcz1mdW5jdGlvbihlKXtpZigxPT09ZS5sZW5ndGgmJjA9PT1lLnBhcmFtc1swXSlyZXR1cm4gdGhpcy5fY3VyQXR0ckRhdGEuZmc9Zi5ERUZBVUxUX0FUVFJfREFUQS5mZyx0aGlzLl9jdXJBdHRyRGF0YS5iZz1mLkRFRkFVTFRfQVRUUl9EQVRBLmJnLCEwO2Zvcih2YXIgdCxyPWUubGVuZ3RoLGk9dGhpcy5fY3VyQXR0ckRhdGEsbj0wO248cjtuKyspKHQ9ZS5wYXJhbXNbbl0pPj0zMCYmdDw9Mzc/KGkuZmcmPS01MDMzMTkwNCxpLmZnfD0xNjc3NzIxNnx0LTMwKTp0Pj00MCYmdDw9NDc/KGkuYmcmPS01MDMzMTkwNCxpLmJnfD0xNjc3NzIxNnx0LTQwKTp0Pj05MCYmdDw9OTc/KGkuZmcmPS01MDMzMTkwNCxpLmZnfD0xNjc3NzIyNHx0LTkwKTp0Pj0xMDAmJnQ8PTEwNz8oaS5iZyY9LTUwMzMxOTA0LGkuYmd8PTE2Nzc3MjI0fHQtMTAwKTowPT09dD8oaS5mZz1mLkRFRkFVTFRfQVRUUl9EQVRBLmZnLGkuYmc9Zi5ERUZBVUxUX0FUVFJfREFUQS5iZyk6MT09PXQ/aS5mZ3w9MTM0MjE3NzI4OjM9PT10P2kuYmd8PTY3MTA4ODY0OjQ9PT10PyhpLmZnfD0yNjg0MzU0NTYsdGhpcy5fcHJvY2Vzc1VuZGVybGluZShlLmhhc1N1YlBhcmFtcyhuKT9lLmdldFN1YlBhcmFtcyhuKVswXToxLGkpKTo1PT09dD9pLmZnfD01MzY4NzA5MTI6Nz09PXQ/aS5mZ3w9NjcxMDg4NjQ6OD09PXQ/aS5mZ3w9MTA3Mzc0MTgyNDo5PT09dD9pLmZnfD0yMTQ3NDgzNjQ4OjI9PT10P2kuYmd8PTEzNDIxNzcyODoyMT09PXQ/dGhpcy5fcHJvY2Vzc1VuZGVybGluZSgyLGkpOjIyPT09dD8oaS5mZyY9LTEzNDIxNzcyOSxpLmJnJj0tMTM0MjE3NzI5KToyMz09PXQ/aS5iZyY9LTY3MTA4ODY1OjI0PT09dD9pLmZnJj0tMjY4NDM1NDU3OjI1PT09dD9pLmZnJj0tNTM2ODcwOTEzOjI3PT09dD9pLmZnJj0tNjcxMDg4NjU6Mjg9PT10P2kuZmcmPS0xMDczNzQxODI1OjI5PT09dD9pLmZnJj0yMTQ3NDgzNjQ3OjM5PT09dD8oaS5mZyY9LTY3MTA4ODY0LGkuZmd8PTE2Nzc3MjE1JmYuREVGQVVMVF9BVFRSX0RBVEEuZmcpOjQ5PT09dD8oaS5iZyY9LTY3MTA4ODY0LGkuYmd8PTE2Nzc3MjE1JmYuREVGQVVMVF9BVFRSX0RBVEEuYmcpOjM4PT09dHx8NDg9PT10fHw1OD09PXQ/bis9dGhpcy5fZXh0cmFjdENvbG9yKGUsbixpKTo1OT09PXQ/KGkuZXh0ZW5kZWQ9aS5leHRlbmRlZC5jbG9uZSgpLGkuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I9LTEsaS51cGRhdGVFeHRlbmRlZCgpKToxMDA9PT10PyhpLmZnJj0tNjcxMDg4NjQsaS5mZ3w9MTY3NzcyMTUmZi5ERUZBVUxUX0FUVFJfREFUQS5mZyxpLmJnJj0tNjcxMDg4NjQsaS5iZ3w9MTY3NzcyMTUmZi5ERUZBVUxUX0FUVFJfREFUQS5iZyk6dGhpcy5fbG9nU2VydmljZS5kZWJ1ZyhcIlVua25vd24gU0dSIGF0dHJpYnV0ZTogJWQuXCIsdCk7cmV0dXJuITB9LHQucHJvdG90eXBlLmRldmljZVN0YXR1cz1mdW5jdGlvbihlKXtzd2l0Y2goZS5wYXJhbXNbMF0pe2Nhc2UgNTp0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHMuQzAuRVNDK1wiWzBuXCIpO2JyZWFrO2Nhc2UgNjp2YXIgdD10aGlzLl9hY3RpdmVCdWZmZXIueSsxLHI9dGhpcy5fYWN0aXZlQnVmZmVyLngrMTt0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHMuQzAuRVNDK1wiW1wiK3QrXCI7XCIrcitcIlJcIil9cmV0dXJuITB9LHQucHJvdG90eXBlLmRldmljZVN0YXR1c1ByaXZhdGU9ZnVuY3Rpb24oZSl7aWYoNj09PWUucGFyYW1zWzBdKXt2YXIgdD10aGlzLl9hY3RpdmVCdWZmZXIueSsxLHI9dGhpcy5fYWN0aXZlQnVmZmVyLngrMTt0aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyRGF0YUV2ZW50KHMuQzAuRVNDK1wiWz9cIit0K1wiO1wiK3IrXCJSXCIpfXJldHVybiEwfSx0LnByb3RvdHlwZS5zb2Z0UmVzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2NvcmVTZXJ2aWNlLmlzQ3Vyc29ySGlkZGVuPSExLHRoaXMuX29uUmVxdWVzdFN5bmNTY3JvbGxCYXIuZmlyZSgpLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3A9MCx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tPXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cy0xLHRoaXMuX2N1ckF0dHJEYXRhPWYuREVGQVVMVF9BVFRSX0RBVEEuY2xvbmUoKSx0aGlzLl9jb3JlU2VydmljZS5yZXNldCgpLHRoaXMuX2NoYXJzZXRTZXJ2aWNlLnJlc2V0KCksdGhpcy5fYWN0aXZlQnVmZmVyLnNhdmVkWD0wLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZFk9dGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZEN1ckF0dHJEYXRhLmZnPXRoaXMuX2N1ckF0dHJEYXRhLmZnLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZEN1ckF0dHJEYXRhLmJnPXRoaXMuX2N1ckF0dHJEYXRhLmJnLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZENoYXJzZXQ9dGhpcy5fY2hhcnNldFNlcnZpY2UuY2hhcnNldCx0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMub3JpZ2luPSExLCEwfSx0LnByb3RvdHlwZS5zZXRDdXJzb3JTdHlsZT1mdW5jdGlvbihlKXt2YXIgdD1lLnBhcmFtc1swXXx8MTtzd2l0Y2godCl7Y2FzZSAxOmNhc2UgMjp0aGlzLl9vcHRpb25zU2VydmljZS5vcHRpb25zLmN1cnNvclN0eWxlPVwiYmxvY2tcIjticmVhaztjYXNlIDM6Y2FzZSA0OnRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMuY3Vyc29yU3R5bGU9XCJ1bmRlcmxpbmVcIjticmVhaztjYXNlIDU6Y2FzZSA2OnRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMuY3Vyc29yU3R5bGU9XCJiYXJcIn12YXIgcj10JTI9PTE7cmV0dXJuIHRoaXMuX29wdGlvbnNTZXJ2aWNlLm9wdGlvbnMuY3Vyc29yQmxpbms9ciwhMH0sdC5wcm90b3R5cGUuc2V0U2Nyb2xsUmVnaW9uPWZ1bmN0aW9uKGUpe3ZhciB0LHI9ZS5wYXJhbXNbMF18fDE7cmV0dXJuKGUubGVuZ3RoPDJ8fCh0PWUucGFyYW1zWzFdKT50aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3N8fDA9PT10KSYmKHQ9dGhpcy5fYnVmZmVyU2VydmljZS5yb3dzKSx0PnImJih0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wPXItMSx0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsQm90dG9tPXQtMSx0aGlzLl9zZXRDdXJzb3IoMCwwKSksITB9LHQucHJvdG90eXBlLndpbmRvd09wdGlvbnM9ZnVuY3Rpb24oZSl7aWYoIXcoZS5wYXJhbXNbMF0sdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy53aW5kb3dPcHRpb25zKSlyZXR1cm4hMDt2YXIgdD1lLmxlbmd0aD4xP2UucGFyYW1zWzFdOjA7c3dpdGNoKGUucGFyYW1zWzBdKXtjYXNlIDE0OjIhPT10JiZ0aGlzLl9vblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydC5maXJlKG8uR0VUX1dJTl9TSVpFX1BJWEVMUyk7YnJlYWs7Y2FzZSAxNjp0aGlzLl9vblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydC5maXJlKG8uR0VUX0NFTExfU0laRV9QSVhFTFMpO2JyZWFrO2Nhc2UgMTg6dGhpcy5fYnVmZmVyU2VydmljZSYmdGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudChzLkMwLkVTQytcIls4O1wiK3RoaXMuX2J1ZmZlclNlcnZpY2Uucm93cytcIjtcIit0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMrXCJ0XCIpO2JyZWFrO2Nhc2UgMjI6MCE9PXQmJjIhPT10fHwodGhpcy5fd2luZG93VGl0bGVTdGFjay5wdXNoKHRoaXMuX3dpbmRvd1RpdGxlKSx0aGlzLl93aW5kb3dUaXRsZVN0YWNrLmxlbmd0aD4xMCYmdGhpcy5fd2luZG93VGl0bGVTdGFjay5zaGlmdCgpKSwwIT09dCYmMSE9PXR8fCh0aGlzLl9pY29uTmFtZVN0YWNrLnB1c2godGhpcy5faWNvbk5hbWUpLHRoaXMuX2ljb25OYW1lU3RhY2subGVuZ3RoPjEwJiZ0aGlzLl9pY29uTmFtZVN0YWNrLnNoaWZ0KCkpO2JyZWFrO2Nhc2UgMjM6MCE9PXQmJjIhPT10fHx0aGlzLl93aW5kb3dUaXRsZVN0YWNrLmxlbmd0aCYmdGhpcy5zZXRUaXRsZSh0aGlzLl93aW5kb3dUaXRsZVN0YWNrLnBvcCgpKSwwIT09dCYmMSE9PXR8fHRoaXMuX2ljb25OYW1lU3RhY2subGVuZ3RoJiZ0aGlzLnNldEljb25OYW1lKHRoaXMuX2ljb25OYW1lU3RhY2sucG9wKCkpfXJldHVybiEwfSx0LnByb3RvdHlwZS5zYXZlQ3Vyc29yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRYPXRoaXMuX2FjdGl2ZUJ1ZmZlci54LHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZFk9dGhpcy5fYWN0aXZlQnVmZmVyLnliYXNlK3RoaXMuX2FjdGl2ZUJ1ZmZlci55LHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZEN1ckF0dHJEYXRhLmZnPXRoaXMuX2N1ckF0dHJEYXRhLmZnLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZEN1ckF0dHJEYXRhLmJnPXRoaXMuX2N1ckF0dHJEYXRhLmJnLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zYXZlZENoYXJzZXQ9dGhpcy5fY2hhcnNldFNlcnZpY2UuY2hhcnNldCwhMH0sdC5wcm90b3R5cGUucmVzdG9yZUN1cnNvcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYWN0aXZlQnVmZmVyLng9dGhpcy5fYWN0aXZlQnVmZmVyLnNhdmVkWHx8MCx0aGlzLl9hY3RpdmVCdWZmZXIueT1NYXRoLm1heCh0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRZLXRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSwwKSx0aGlzLl9jdXJBdHRyRGF0YS5mZz10aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDdXJBdHRyRGF0YS5mZyx0aGlzLl9jdXJBdHRyRGF0YS5iZz10aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDdXJBdHRyRGF0YS5iZyx0aGlzLl9jaGFyc2V0U2VydmljZS5jaGFyc2V0PXRoaXMuX3NhdmVkQ2hhcnNldCx0aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDaGFyc2V0JiYodGhpcy5fY2hhcnNldFNlcnZpY2UuY2hhcnNldD10aGlzLl9hY3RpdmVCdWZmZXIuc2F2ZWRDaGFyc2V0KSx0aGlzLl9yZXN0cmljdEN1cnNvcigpLCEwfSx0LnByb3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fd2luZG93VGl0bGU9ZSx0aGlzLl9vblRpdGxlQ2hhbmdlLmZpcmUoZSksITB9LHQucHJvdG90eXBlLnNldEljb25OYW1lPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pY29uTmFtZT1lLCEwfSx0LnByb3RvdHlwZS5zZXRPclJlcG9ydEluZGV4ZWRDb2xvcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj1lLnNwbGl0KFwiO1wiKTtyLmxlbmd0aD4xOyl7dmFyIGk9ci5zaGlmdCgpLG49ci5zaGlmdCgpO2lmKC9eXFxkKyQvLmV4ZWMoaSkpe3ZhciBvPXBhcnNlSW50KGkpO2lmKDA8PW8mJm88MjU2KWlmKFwiP1wiPT09bil0LnB1c2goe3R5cGU6MCxpbmRleDpvfSk7ZWxzZXt2YXIgcz0oMCxiLnBhcnNlQ29sb3IpKG4pO3MmJnQucHVzaCh7dHlwZToxLGluZGV4Om8sY29sb3I6c30pfX19cmV0dXJuIHQubGVuZ3RoJiZ0aGlzLl9vbkNvbG9yLmZpcmUodCksITB9LHQucHJvdG90eXBlLl9zZXRPclJlcG9ydFNwZWNpYWxDb2xvcj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLnNwbGl0KFwiO1wiKSxpPTA7aTxyLmxlbmd0aCYmISh0Pj10aGlzLl9zcGVjaWFsQ29sb3JzLmxlbmd0aCk7KytpLCsrdClpZihcIj9cIj09PXJbaV0pdGhpcy5fb25Db2xvci5maXJlKFt7dHlwZTowLGluZGV4OnRoaXMuX3NwZWNpYWxDb2xvcnNbdF19XSk7ZWxzZXt2YXIgbj0oMCxiLnBhcnNlQ29sb3IpKHJbaV0pO24mJnRoaXMuX29uQ29sb3IuZmlyZShbe3R5cGU6MSxpbmRleDp0aGlzLl9zcGVjaWFsQ29sb3JzW3RdLGNvbG9yOm59XSl9cmV0dXJuITB9LHQucHJvdG90eXBlLnNldE9yUmVwb3J0RmdDb2xvcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2V0T3JSZXBvcnRTcGVjaWFsQ29sb3IoZSwwKX0sdC5wcm90b3R5cGUuc2V0T3JSZXBvcnRCZ0NvbG9yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9zZXRPclJlcG9ydFNwZWNpYWxDb2xvcihlLDEpfSx0LnByb3RvdHlwZS5zZXRPclJlcG9ydEN1cnNvckNvbG9yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9zZXRPclJlcG9ydFNwZWNpYWxDb2xvcihlLDIpfSx0LnByb3RvdHlwZS5yZXN0b3JlSW5kZXhlZENvbG9yPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiB0aGlzLl9vbkNvbG9yLmZpcmUoW3t0eXBlOjJ9XSksITA7Zm9yKHZhciB0PVtdLHI9ZS5zcGxpdChcIjtcIiksaT0wO2k8ci5sZW5ndGg7KytpKWlmKC9eXFxkKyQvLmV4ZWMocltpXSkpe3ZhciBuPXBhcnNlSW50KHJbaV0pOzA8PW4mJm48MjU2JiZ0LnB1c2goe3R5cGU6MixpbmRleDpufSl9cmV0dXJuIHQubGVuZ3RoJiZ0aGlzLl9vbkNvbG9yLmZpcmUodCksITB9LHQucHJvdG90eXBlLnJlc3RvcmVGZ0NvbG9yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9vbkNvbG9yLmZpcmUoW3t0eXBlOjIsaW5kZXg6MjU2fV0pLCEwfSx0LnByb3RvdHlwZS5yZXN0b3JlQmdDb2xvcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fb25Db2xvci5maXJlKFt7dHlwZToyLGluZGV4OjI1N31dKSwhMH0sdC5wcm90b3R5cGUucmVzdG9yZUN1cnNvckNvbG9yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9vbkNvbG9yLmZpcmUoW3t0eXBlOjIsaW5kZXg6MjU4fV0pLCEwfSx0LnByb3RvdHlwZS5uZXh0TGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmVCdWZmZXIueD0wLHRoaXMuaW5kZXgoKSwhMH0sdC5wcm90b3R5cGUua2V5cGFkQXBwbGljYXRpb25Nb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJTZXJpYWwgcG9ydCByZXF1ZXN0ZWQgYXBwbGljYXRpb24ga2V5cGFkLlwiKSx0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25LZXlwYWQ9ITAsdGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhci5maXJlKCksITB9LHQucHJvdG90eXBlLmtleXBhZE51bWVyaWNNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoXCJTd2l0Y2hpbmcgYmFjayB0byBub3JtYWwga2V5cGFkLlwiKSx0aGlzLl9jb3JlU2VydmljZS5kZWNQcml2YXRlTW9kZXMuYXBwbGljYXRpb25LZXlwYWQ9ITEsdGhpcy5fb25SZXF1ZXN0U3luY1Njcm9sbEJhci5maXJlKCksITB9LHQucHJvdG90eXBlLnNlbGVjdERlZmF1bHRDaGFyc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NoYXJzZXRTZXJ2aWNlLnNldGdMZXZlbCgwKSx0aGlzLl9jaGFyc2V0U2VydmljZS5zZXRnQ2hhcnNldCgwLGEuREVGQVVMVF9DSEFSU0VUKSwhMH0sdC5wcm90b3R5cGUuc2VsZWN0Q2hhcnNldD1mdW5jdGlvbihlKXtyZXR1cm4gMiE9PWUubGVuZ3RoPyh0aGlzLnNlbGVjdERlZmF1bHRDaGFyc2V0KCksITApOihcIi9cIj09PWVbMF18fHRoaXMuX2NoYXJzZXRTZXJ2aWNlLnNldGdDaGFyc2V0KFNbZVswXV0sYS5DSEFSU0VUU1tlWzFdXXx8YS5ERUZBVUxUX0NIQVJTRVQpLCEwKX0sdC5wcm90b3R5cGUuaW5kZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdHJpY3RDdXJzb3IoKSx0aGlzLl9hY3RpdmVCdWZmZXIueSsrLHRoaXMuX2FjdGl2ZUJ1ZmZlci55PT09dGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbEJvdHRvbSsxPyh0aGlzLl9hY3RpdmVCdWZmZXIueS0tLHRoaXMuX2J1ZmZlclNlcnZpY2Uuc2Nyb2xsKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSkpOnRoaXMuX2FjdGl2ZUJ1ZmZlci55Pj10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MmJih0aGlzLl9hY3RpdmVCdWZmZXIueT10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSksdGhpcy5fcmVzdHJpY3RDdXJzb3IoKSwhMH0sdC5wcm90b3R5cGUudGFiU2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUJ1ZmZlci50YWJzW3RoaXMuX2FjdGl2ZUJ1ZmZlci54XT0hMCwhMH0sdC5wcm90b3R5cGUucmV2ZXJzZUluZGV4PWZ1bmN0aW9uKCl7aWYodGhpcy5fcmVzdHJpY3RDdXJzb3IoKSx0aGlzLl9hY3RpdmVCdWZmZXIueT09PXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxUb3Ape3ZhciBlPXRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20tdGhpcy5fYWN0aXZlQnVmZmVyLnNjcm9sbFRvcDt0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc2hpZnRFbGVtZW50cyh0aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnksZSwxKSx0aGlzLl9hY3RpdmVCdWZmZXIubGluZXMuc2V0KHRoaXMuX2FjdGl2ZUJ1ZmZlci55YmFzZSt0aGlzLl9hY3RpdmVCdWZmZXIueSx0aGlzLl9hY3RpdmVCdWZmZXIuZ2V0QmxhbmtMaW5lKHRoaXMuX2VyYXNlQXR0ckRhdGEoKSkpLHRoaXMuX2RpcnR5Um93U2VydmljZS5tYXJrUmFuZ2VEaXJ0eSh0aGlzLl9hY3RpdmVCdWZmZXIuc2Nyb2xsVG9wLHRoaXMuX2FjdGl2ZUJ1ZmZlci5zY3JvbGxCb3R0b20pfWVsc2UgdGhpcy5fYWN0aXZlQnVmZmVyLnktLSx0aGlzLl9yZXN0cmljdEN1cnNvcigpO3JldHVybiEwfSx0LnByb3RvdHlwZS5mdWxsUmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VyLnJlc2V0KCksdGhpcy5fb25SZXF1ZXN0UmVzZXQuZmlyZSgpLCEwfSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX2N1ckF0dHJEYXRhPWYuREVGQVVMVF9BVFRSX0RBVEEuY2xvbmUoKSx0aGlzLl9lcmFzZUF0dHJEYXRhSW50ZXJuYWw9Zi5ERUZBVUxUX0FUVFJfREFUQS5jbG9uZSgpfSx0LnByb3RvdHlwZS5fZXJhc2VBdHRyRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lcmFzZUF0dHJEYXRhSW50ZXJuYWwuYmcmPS02NzEwODg2NCx0aGlzLl9lcmFzZUF0dHJEYXRhSW50ZXJuYWwuYmd8PTY3MTA4ODYzJnRoaXMuX2N1ckF0dHJEYXRhLmJnLHRoaXMuX2VyYXNlQXR0ckRhdGFJbnRlcm5hbH0sdC5wcm90b3R5cGUuc2V0Z0xldmVsPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jaGFyc2V0U2VydmljZS5zZXRnTGV2ZWwoZSksITB9LHQucHJvdG90eXBlLnNjcmVlbkFsaWdubWVudFBhdHRlcm49ZnVuY3Rpb24oKXt2YXIgZT1uZXcgcC5DZWxsRGF0YTtlLmNvbnRlbnQ9MTw8MjJ8XCJFXCIuY2hhckNvZGVBdCgwKSxlLmZnPXRoaXMuX2N1ckF0dHJEYXRhLmZnLGUuYmc9dGhpcy5fY3VyQXR0ckRhdGEuYmcsdGhpcy5fc2V0Q3Vyc29yKDAsMCk7Zm9yKHZhciB0PTA7dDx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3M7Kyt0KXt2YXIgcj10aGlzLl9hY3RpdmVCdWZmZXIueWJhc2UrdGhpcy5fYWN0aXZlQnVmZmVyLnkrdCxpPXRoaXMuX2FjdGl2ZUJ1ZmZlci5saW5lcy5nZXQocik7aSYmKGkuZmlsbChlKSxpLmlzV3JhcHBlZD0hMSl9cmV0dXJuIHRoaXMuX2RpcnR5Um93U2VydmljZS5tYXJrQWxsRGlydHkoKSx0aGlzLl9zZXRDdXJzb3IoMCwwKSwhMH0sdH0obC5EaXNwb3NhYmxlKTt0LklucHV0SGFuZGxlcj1FfSw4NDQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzJiZ0aGlzLl9fdmFsdWVzfHxmdW5jdGlvbihlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixyPXQmJmVbdF0saT0wO2lmKHIpcmV0dXJuIHIuY2FsbChlKTtpZihlJiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSYmaT49ZS5sZW5ndGgmJihlPXZvaWQgMCkse3ZhbHVlOmUmJmVbaSsrXSxkb25lOiFlfX19O3Rocm93IG5ldyBUeXBlRXJyb3IodD9cIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCI6XCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldERpc3Bvc2VBcnJheURpc3Bvc2FibGU9dC5kaXNwb3NlQXJyYXk9dC5EaXNwb3NhYmxlPXZvaWQgMDt2YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLl9kaXNwb3NhYmxlcz1bXSx0aGlzLl9pc0Rpc3Bvc2VkPSExfXJldHVybiBlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dmFyIGUsdDt0aGlzLl9pc0Rpc3Bvc2VkPSEwO3RyeXtmb3IodmFyIGk9cih0aGlzLl9kaXNwb3NhYmxlcyksbj1pLm5leHQoKTshbi5kb25lO249aS5uZXh0KCkpbi52YWx1ZS5kaXNwb3NlKCl9Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7biYmIW4uZG9uZSYmKHQ9aS5yZXR1cm4pJiZ0LmNhbGwoaSl9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fXRoaXMuX2Rpc3Bvc2FibGVzLmxlbmd0aD0wfSxlLnByb3RvdHlwZS5yZWdpc3Rlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fZGlzcG9zYWJsZXMucHVzaChlKSxlfSxlLnByb3RvdHlwZS51bnJlZ2lzdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2Rpc3Bvc2FibGVzLmluZGV4T2YoZSk7LTEhPT10JiZ0aGlzLl9kaXNwb3NhYmxlcy5zcGxpY2UodCwxKX0sZX0oKTtmdW5jdGlvbiBuKGUpe3ZhciB0LGk7dHJ5e2Zvcih2YXIgbj1yKGUpLG89bi5uZXh0KCk7IW8uZG9uZTtvPW4ubmV4dCgpKW8udmFsdWUuZGlzcG9zZSgpfWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihpPW4ucmV0dXJuKSYmaS5jYWxsKG4pfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX1lLmxlbmd0aD0wfXQuRGlzcG9zYWJsZT1pLHQuZGlzcG9zZUFycmF5PW4sdC5nZXREaXNwb3NlQXJyYXlEaXNwb3NhYmxlPWZ1bmN0aW9uKGUpe3JldHVybntkaXNwb3NlOmZ1bmN0aW9uKCl7cmV0dXJuIG4oZSl9fX19LDYxMTQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmlzTGludXg9dC5pc1dpbmRvd3M9dC5pc0lwaG9uZT10LmlzSXBhZD10LmlzTWFjPXQuaXNTYWZhcmk9dC5pc0xlZ2FjeUVkZ2U9dC5pc0ZpcmVmb3g9dm9pZCAwO3ZhciByPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBuYXZpZ2F0b3IsaT1yP1wibm9kZVwiOm5hdmlnYXRvci51c2VyQWdlbnQsbj1yP1wibm9kZVwiOm5hdmlnYXRvci5wbGF0Zm9ybTt0LmlzRmlyZWZveD1pLmluY2x1ZGVzKFwiRmlyZWZveFwiKSx0LmlzTGVnYWN5RWRnZT1pLmluY2x1ZGVzKFwiRWRnZVwiKSx0LmlzU2FmYXJpPS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QoaSksdC5pc01hYz1bXCJNYWNpbnRvc2hcIixcIk1hY0ludGVsXCIsXCJNYWNQUENcIixcIk1hYzY4S1wiXS5pbmNsdWRlcyhuKSx0LmlzSXBhZD1cImlQYWRcIj09PW4sdC5pc0lwaG9uZT1cImlQaG9uZVwiPT09bix0LmlzV2luZG93cz1bXCJXaW5kb3dzXCIsXCJXaW4xNlwiLFwiV2luMzJcIixcIldpbkNFXCJdLmluY2x1ZGVzKG4pLHQuaXNMaW51eD1uLmluZGV4T2YoXCJMaW51eFwiKT49MH0sNjEwNjpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGUsdCl7dmFyIHIsaSxuLG8scz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZuWzBdKXRocm93IG5bMV07cmV0dXJuIG5bMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDphKDApLHRocm93OmEoMSkscmV0dXJuOmEoMil9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKG9bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbztmdW5jdGlvbiBhKG8pe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24obyl7aWYocil0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO3M7KXRyeXtpZihyPTEsaSYmKG49MiZvWzBdP2kucmV0dXJuOm9bMF0/aS50aHJvd3x8KChuPWkucmV0dXJuKSYmbi5jYWxsKGkpLDApOmkubmV4dCkmJiEobj1uLmNhbGwoaSxvWzFdKSkuZG9uZSlyZXR1cm4gbjtzd2l0Y2goaT0wLG4mJihvPVsyJm9bMF0sbi52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6bj1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gcy5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTpzLmxhYmVsKyssaT1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPXMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKG49KG49cy50cnlzKS5sZW5ndGg+MCYmbltuLmxlbmd0aC0xXSl8fDYhPT1vWzBdJiYyIT09b1swXSkpe3M9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFufHxvWzFdPm5bMF0mJm9bMV08blszXSkpe3MubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmcy5sYWJlbDxuWzFdKXtzLmxhYmVsPW5bMV0sbj1vO2JyZWFrfWlmKG4mJnMubGFiZWw8blsyXSl7cy5sYWJlbD1uWzJdLHMub3BzLnB1c2gobyk7YnJlYWt9blsyXSYmcy5vcHMucG9wKCkscy50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUscyl9Y2F0Y2goZSl7bz1bNixlXSxpPTB9ZmluYWxseXtyPW49MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sYV0pfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU29ydGVkTGlzdD12b2lkIDA7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuX2dldEtleT1lLHRoaXMuX2FycmF5PVtdfXJldHVybiBlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX2FycmF5Lmxlbmd0aD0wfSxlLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24oZSl7aWYoMCE9PXRoaXMuX2FycmF5Lmxlbmd0aCl7dmFyIHQ9dGhpcy5fc2VhcmNoKHRoaXMuX2dldEtleShlKSwwLHRoaXMuX2FycmF5Lmxlbmd0aC0xKTt0aGlzLl9hcnJheS5zcGxpY2UodCwwLGUpfWVsc2UgdGhpcy5fYXJyYXkucHVzaChlKX0sZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe2lmKDA9PT10aGlzLl9hcnJheS5sZW5ndGgpcmV0dXJuITE7dmFyIHQ9dGhpcy5fZ2V0S2V5KGUpLHI9dGhpcy5fc2VhcmNoKHQsMCx0aGlzLl9hcnJheS5sZW5ndGgtMSk7aWYodGhpcy5fZ2V0S2V5KHRoaXMuX2FycmF5W3JdKSE9PXQpcmV0dXJuITE7ZG97aWYodGhpcy5fYXJyYXlbcl09PT1lKXJldHVybiB0aGlzLl9hcnJheS5zcGxpY2UociwxKSwhMH13aGlsZSgrK3I8dGhpcy5fYXJyYXkubGVuZ3RoJiZ0aGlzLl9nZXRLZXkodGhpcy5fYXJyYXlbcl0pPT09dCk7cmV0dXJuITF9LGUucHJvdG90eXBlLmdldEtleUl0ZXJhdG9yPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiByKHRoaXMsKGZ1bmN0aW9uKHIpe3N3aXRjaChyLmxhYmVsKXtjYXNlIDA6aWYoMD09PXRoaXMuX2FycmF5Lmxlbmd0aClyZXR1cm5bMl07aWYoKHQ9dGhpcy5fc2VhcmNoKGUsMCx0aGlzLl9hcnJheS5sZW5ndGgtMSkpPDB8fHQ+PXRoaXMuX2FycmF5Lmxlbmd0aClyZXR1cm5bMl07aWYodGhpcy5fZ2V0S2V5KHRoaXMuX2FycmF5W3RdKSE9PWUpcmV0dXJuWzJdO3IubGFiZWw9MTtjYXNlIDE6cmV0dXJuWzQsdGhpcy5fYXJyYXlbdF1dO2Nhc2UgMjpyLnNlbnQoKSxyLmxhYmVsPTM7Y2FzZSAzOmlmKCsrdDx0aGlzLl9hcnJheS5sZW5ndGgmJnRoaXMuX2dldEtleSh0aGlzLl9hcnJheVt0XSk9PT1lKXJldHVyblszLDFdO3IubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzJdfX0pKX0sZS5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5LnZhbHVlcygpfSxlLnByb3RvdHlwZS5fc2VhcmNoPWZ1bmN0aW9uKGUsdCxyKXtpZihyPHQpcmV0dXJuIHQ7dmFyIGk9TWF0aC5mbG9vcigodCtyKS8yKTtpZih0aGlzLl9nZXRLZXkodGhpcy5fYXJyYXlbaV0pPmUpcmV0dXJuIHRoaXMuX3NlYXJjaChlLHQsaS0xKTtpZih0aGlzLl9nZXRLZXkodGhpcy5fYXJyYXlbaV0pPGUpcmV0dXJuIHRoaXMuX3NlYXJjaChlLGkrMSxyKTtmb3IoO2k+MCYmdGhpcy5fZ2V0S2V5KHRoaXMuX2FycmF5W2ktMV0pPT09ZTspaS0tO3JldHVybiBpfSxlfSgpO3QuU29ydGVkTGlzdD1pfSw4MjczOihlLHQpPT57ZnVuY3Rpb24gcihlLHQscixpKXtpZih2b2lkIDA9PT1yJiYocj0wKSx2b2lkIDA9PT1pJiYoaT1lLmxlbmd0aCkscj49ZS5sZW5ndGgpcmV0dXJuIGU7cj0oZS5sZW5ndGgrciklZS5sZW5ndGgsaT1pPj1lLmxlbmd0aD9lLmxlbmd0aDooZS5sZW5ndGgraSklZS5sZW5ndGg7Zm9yKHZhciBuPXI7bjxpOysrbillW25dPXQ7cmV0dXJuIGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jb25jYXQ9dC5maWxsRmFsbGJhY2s9dC5maWxsPXZvaWQgMCx0LmZpbGw9ZnVuY3Rpb24oZSx0LGksbil7cmV0dXJuIGUuZmlsbD9lLmZpbGwodCxpLG4pOnIoZSx0LGksbil9LHQuZmlsbEZhbGxiYWNrPXIsdC5jb25jYXQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uZXcgZS5jb25zdHJ1Y3RvcihlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIHIuc2V0KGUpLHIuc2V0KHQsZS5sZW5ndGgpLHJ9fSw5MjgyOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnVwZGF0ZVdpbmRvd3NNb2RlV3JhcHBlZFN0YXRlPXZvaWQgMDt2YXIgaT1yKDY0Myk7dC51cGRhdGVXaW5kb3dzTW9kZVdyYXBwZWRTdGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1lLmJ1ZmZlci5saW5lcy5nZXQoZS5idWZmZXIueWJhc2UrZS5idWZmZXIueS0xKSxyPW51bGw9PXQ/dm9pZCAwOnQuZ2V0KGUuY29scy0xKSxuPWUuYnVmZmVyLmxpbmVzLmdldChlLmJ1ZmZlci55YmFzZStlLmJ1ZmZlci55KTtuJiZyJiYobi5pc1dyYXBwZWQ9cltpLkNIQVJfREFUQV9DT0RFX0lOREVYXSE9PWkuTlVMTF9DRUxMX0NPREUmJnJbaS5DSEFSX0RBVEFfQ09ERV9JTkRFWF0hPT1pLldISVRFU1BBQ0VfQ0VMTF9DT0RFKX19LDM3MzQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkV4dGVuZGVkQXR0cnM9dC5BdHRyaWJ1dGVEYXRhPXZvaWQgMDt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLmZnPTAsdGhpcy5iZz0wLHRoaXMuZXh0ZW5kZWQ9bmV3IGl9cmV0dXJuIGUudG9Db2xvclJHQj1mdW5jdGlvbihlKXtyZXR1cm5bZT4+PjE2JjI1NSxlPj4+OCYyNTUsMjU1JmVdfSxlLmZyb21Db2xvclJHQj1mdW5jdGlvbihlKXtyZXR1cm4oMjU1JmVbMF0pPDwxNnwoMjU1JmVbMV0pPDw4fDI1NSZlWzJdfSxlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBlO3JldHVybiB0LmZnPXRoaXMuZmcsdC5iZz10aGlzLmJnLHQuZXh0ZW5kZWQ9dGhpcy5leHRlbmRlZC5jbG9uZSgpLHR9LGUucHJvdG90eXBlLmlzSW52ZXJzZT1mdW5jdGlvbigpe3JldHVybiA2NzEwODg2NCZ0aGlzLmZnfSxlLnByb3RvdHlwZS5pc0JvbGQ9ZnVuY3Rpb24oKXtyZXR1cm4gMTM0MjE3NzI4JnRoaXMuZmd9LGUucHJvdG90eXBlLmlzVW5kZXJsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIDI2ODQzNTQ1NiZ0aGlzLmZnfSxlLnByb3RvdHlwZS5pc0JsaW5rPWZ1bmN0aW9uKCl7cmV0dXJuIDUzNjg3MDkxMiZ0aGlzLmZnfSxlLnByb3RvdHlwZS5pc0ludmlzaWJsZT1mdW5jdGlvbigpe3JldHVybiAxMDczNzQxODI0JnRoaXMuZmd9LGUucHJvdG90eXBlLmlzSXRhbGljPWZ1bmN0aW9uKCl7cmV0dXJuIDY3MTA4ODY0JnRoaXMuYmd9LGUucHJvdG90eXBlLmlzRGltPWZ1bmN0aW9uKCl7cmV0dXJuIDEzNDIxNzcyOCZ0aGlzLmJnfSxlLnByb3RvdHlwZS5pc1N0cmlrZXRocm91Z2g9ZnVuY3Rpb24oKXtyZXR1cm4gMjE0NzQ4MzY0OCZ0aGlzLmZnfSxlLnByb3RvdHlwZS5nZXRGZ0NvbG9yTW9kZT1mdW5jdGlvbigpe3JldHVybiA1MDMzMTY0OCZ0aGlzLmZnfSxlLnByb3RvdHlwZS5nZXRCZ0NvbG9yTW9kZT1mdW5jdGlvbigpe3JldHVybiA1MDMzMTY0OCZ0aGlzLmJnfSxlLnByb3RvdHlwZS5pc0ZnUkdCPWZ1bmN0aW9uKCl7cmV0dXJuIDUwMzMxNjQ4PT0oNTAzMzE2NDgmdGhpcy5mZyl9LGUucHJvdG90eXBlLmlzQmdSR0I9ZnVuY3Rpb24oKXtyZXR1cm4gNTAzMzE2NDg9PSg1MDMzMTY0OCZ0aGlzLmJnKX0sZS5wcm90b3R5cGUuaXNGZ1BhbGV0dGU9ZnVuY3Rpb24oKXtyZXR1cm4gMTY3NzcyMTY9PSg1MDMzMTY0OCZ0aGlzLmZnKXx8MzM1NTQ0MzI9PSg1MDMzMTY0OCZ0aGlzLmZnKX0sZS5wcm90b3R5cGUuaXNCZ1BhbGV0dGU9ZnVuY3Rpb24oKXtyZXR1cm4gMTY3NzcyMTY9PSg1MDMzMTY0OCZ0aGlzLmJnKXx8MzM1NTQ0MzI9PSg1MDMzMTY0OCZ0aGlzLmJnKX0sZS5wcm90b3R5cGUuaXNGZ0RlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gMD09KDUwMzMxNjQ4JnRoaXMuZmcpfSxlLnByb3RvdHlwZS5pc0JnRGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiAwPT0oNTAzMzE2NDgmdGhpcy5iZyl9LGUucHJvdG90eXBlLmlzQXR0cmlidXRlRGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5mZyYmMD09PXRoaXMuYmd9LGUucHJvdG90eXBlLmdldEZnQ29sb3I9ZnVuY3Rpb24oKXtzd2l0Y2goNTAzMzE2NDgmdGhpcy5mZyl7Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOnJldHVybiAyNTUmdGhpcy5mZztjYXNlIDUwMzMxNjQ4OnJldHVybiAxNjc3NzIxNSZ0aGlzLmZnO2RlZmF1bHQ6cmV0dXJuLTF9fSxlLnByb3RvdHlwZS5nZXRCZ0NvbG9yPWZ1bmN0aW9uKCl7c3dpdGNoKDUwMzMxNjQ4JnRoaXMuYmcpe2Nhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpyZXR1cm4gMjU1JnRoaXMuYmc7Y2FzZSA1MDMzMTY0ODpyZXR1cm4gMTY3NzcyMTUmdGhpcy5iZztkZWZhdWx0OnJldHVybi0xfX0sZS5wcm90b3R5cGUuaGFzRXh0ZW5kZWRBdHRycz1mdW5jdGlvbigpe3JldHVybiAyNjg0MzU0NTYmdGhpcy5iZ30sZS5wcm90b3R5cGUudXBkYXRlRXh0ZW5kZWQ9ZnVuY3Rpb24oKXt0aGlzLmV4dGVuZGVkLmlzRW1wdHkoKT90aGlzLmJnJj0tMjY4NDM1NDU3OnRoaXMuYmd8PTI2ODQzNTQ1Nn0sZS5wcm90b3R5cGUuZ2V0VW5kZXJsaW5lQ29sb3I9ZnVuY3Rpb24oKXtpZigyNjg0MzU0NTYmdGhpcy5iZyYmfnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3Ipc3dpdGNoKDUwMzMxNjQ4JnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3Ipe2Nhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpyZXR1cm4gMjU1JnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I7Y2FzZSA1MDMzMTY0ODpyZXR1cm4gMTY3NzcyMTUmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcjtkZWZhdWx0OnJldHVybiB0aGlzLmdldEZnQ29sb3IoKX1yZXR1cm4gdGhpcy5nZXRGZ0NvbG9yKCl9LGUucHJvdG90eXBlLmdldFVuZGVybGluZUNvbG9yTW9kZT1mdW5jdGlvbigpe3JldHVybiAyNjg0MzU0NTYmdGhpcy5iZyYmfnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3I/NTAzMzE2NDgmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcjp0aGlzLmdldEZnQ29sb3JNb2RlKCl9LGUucHJvdG90eXBlLmlzVW5kZXJsaW5lQ29sb3JSR0I9ZnVuY3Rpb24oKXtyZXR1cm4gMjY4NDM1NDU2JnRoaXMuYmcmJn50aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yPzUwMzMxNjQ4PT0oNTAzMzE2NDgmdGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcik6dGhpcy5pc0ZnUkdCKCl9LGUucHJvdG90eXBlLmlzVW5kZXJsaW5lQ29sb3JQYWxldHRlPWZ1bmN0aW9uKCl7cmV0dXJuIDI2ODQzNTQ1NiZ0aGlzLmJnJiZ+dGhpcy5leHRlbmRlZC51bmRlcmxpbmVDb2xvcj8xNjc3NzIxNj09KDUwMzMxNjQ4JnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3IpfHwzMzU1NDQzMj09KDUwMzMxNjQ4JnRoaXMuZXh0ZW5kZWQudW5kZXJsaW5lQ29sb3IpOnRoaXMuaXNGZ1BhbGV0dGUoKX0sZS5wcm90b3R5cGUuaXNVbmRlcmxpbmVDb2xvckRlZmF1bHQ9ZnVuY3Rpb24oKXtyZXR1cm4gMjY4NDM1NDU2JnRoaXMuYmcmJn50aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yPzA9PSg1MDMzMTY0OCZ0aGlzLmV4dGVuZGVkLnVuZGVybGluZUNvbG9yKTp0aGlzLmlzRmdEZWZhdWx0KCl9LGUucHJvdG90eXBlLmdldFVuZGVybGluZVN0eWxlPWZ1bmN0aW9uKCl7cmV0dXJuIDI2ODQzNTQ1NiZ0aGlzLmZnPzI2ODQzNTQ1NiZ0aGlzLmJnP3RoaXMuZXh0ZW5kZWQudW5kZXJsaW5lU3R5bGU6MTowfSxlfSgpO3QuQXR0cmlidXRlRGF0YT1yO3ZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PXQmJih0PS0xKSx0aGlzLnVuZGVybGluZVN0eWxlPWUsdGhpcy51bmRlcmxpbmVDb2xvcj10fXJldHVybiBlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgZSh0aGlzLnVuZGVybGluZVN0eWxlLHRoaXMudW5kZXJsaW5lQ29sb3IpfSxlLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnVuZGVybGluZVN0eWxlfSxlfSgpO3QuRXh0ZW5kZWRBdHRycz1pfSw5MDkyOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzJiZ0aGlzLl9fcmVhZHx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXTtpZighcilyZXR1cm4gZTt2YXIgaSxuLG89ci5jYWxsKGUpLHM9W107dHJ5e2Zvcig7KHZvaWQgMD09PXR8fHQtLSA+MCkmJiEoaT1vLm5leHQoKSkuZG9uZTspcy5wdXNoKGkudmFsdWUpfWNhdGNoKGUpe249e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2kmJiFpLmRvbmUmJihyPW8ucmV0dXJuKSYmci5jYWxsKG8pfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gc30sbj10aGlzJiZ0aGlzLl9fc3ByZWFkQXJyYXl8fGZ1bmN0aW9uKGUsdCxyKXtpZihyfHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIGksbj0wLG89dC5sZW5ndGg7bjxvO24rKykhaSYmbiBpbiB0fHwoaXx8KGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLG4pKSxpW25dPXRbbl0pO3JldHVybiBlLmNvbmNhdChpfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnVmZmVyU3RyaW5nSXRlcmF0b3I9dC5CdWZmZXI9dC5NQVhfQlVGRkVSX1NJWkU9dm9pZCAwO3ZhciBvPXIoNjM0OSkscz1yKDg0MzcpLGE9cig1MTEpLGM9cig2NDMpLGw9cig0NjM0KSxoPXIoNDg2MyksdT1yKDcxMTYpLGY9cigzNzM0KTt0Lk1BWF9CVUZGRVJfU0laRT00Mjk0OTY3Mjk1O3ZhciBfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscil7dGhpcy5faGFzU2Nyb2xsYmFjaz1lLHRoaXMuX29wdGlvbnNTZXJ2aWNlPXQsdGhpcy5fYnVmZmVyU2VydmljZT1yLHRoaXMueWRpc3A9MCx0aGlzLnliYXNlPTAsdGhpcy55PTAsdGhpcy54PTAsdGhpcy5zYXZlZFk9MCx0aGlzLnNhdmVkWD0wLHRoaXMuc2F2ZWRDdXJBdHRyRGF0YT1zLkRFRkFVTFRfQVRUUl9EQVRBLmNsb25lKCksdGhpcy5zYXZlZENoYXJzZXQ9dS5ERUZBVUxUX0NIQVJTRVQsdGhpcy5tYXJrZXJzPVtdLHRoaXMuX251bGxDZWxsPWEuQ2VsbERhdGEuZnJvbUNoYXJEYXRhKFswLGMuTlVMTF9DRUxMX0NIQVIsYy5OVUxMX0NFTExfV0lEVEgsYy5OVUxMX0NFTExfQ09ERV0pLHRoaXMuX3doaXRlc3BhY2VDZWxsPWEuQ2VsbERhdGEuZnJvbUNoYXJEYXRhKFswLGMuV0hJVEVTUEFDRV9DRUxMX0NIQVIsYy5XSElURVNQQUNFX0NFTExfV0lEVEgsYy5XSElURVNQQUNFX0NFTExfQ09ERV0pLHRoaXMuX2lzQ2xlYXJpbmc9ITEsdGhpcy5fY29scz10aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5fcm93cz10aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MsdGhpcy5saW5lcz1uZXcgby5DaXJjdWxhckxpc3QodGhpcy5fZ2V0Q29ycmVjdEJ1ZmZlckxlbmd0aCh0aGlzLl9yb3dzKSksdGhpcy5zY3JvbGxUb3A9MCx0aGlzLnNjcm9sbEJvdHRvbT10aGlzLl9yb3dzLTEsdGhpcy5zZXR1cFRhYlN0b3BzKCl9cmV0dXJuIGUucHJvdG90eXBlLmdldE51bGxDZWxsPWZ1bmN0aW9uKGUpe3JldHVybiBlPyh0aGlzLl9udWxsQ2VsbC5mZz1lLmZnLHRoaXMuX251bGxDZWxsLmJnPWUuYmcsdGhpcy5fbnVsbENlbGwuZXh0ZW5kZWQ9ZS5leHRlbmRlZCk6KHRoaXMuX251bGxDZWxsLmZnPTAsdGhpcy5fbnVsbENlbGwuYmc9MCx0aGlzLl9udWxsQ2VsbC5leHRlbmRlZD1uZXcgZi5FeHRlbmRlZEF0dHJzKSx0aGlzLl9udWxsQ2VsbH0sZS5wcm90b3R5cGUuZ2V0V2hpdGVzcGFjZUNlbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/KHRoaXMuX3doaXRlc3BhY2VDZWxsLmZnPWUuZmcsdGhpcy5fd2hpdGVzcGFjZUNlbGwuYmc9ZS5iZyx0aGlzLl93aGl0ZXNwYWNlQ2VsbC5leHRlbmRlZD1lLmV4dGVuZGVkKToodGhpcy5fd2hpdGVzcGFjZUNlbGwuZmc9MCx0aGlzLl93aGl0ZXNwYWNlQ2VsbC5iZz0wLHRoaXMuX3doaXRlc3BhY2VDZWxsLmV4dGVuZGVkPW5ldyBmLkV4dGVuZGVkQXR0cnMpLHRoaXMuX3doaXRlc3BhY2VDZWxsfSxlLnByb3RvdHlwZS5nZXRCbGFua0xpbmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHMuQnVmZmVyTGluZSh0aGlzLl9idWZmZXJTZXJ2aWNlLmNvbHMsdGhpcy5nZXROdWxsQ2VsbChlKSx0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiaGFzU2Nyb2xsYmFja1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGFzU2Nyb2xsYmFjayYmdGhpcy5saW5lcy5tYXhMZW5ndGg+dGhpcy5fcm93c30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJpc0N1cnNvckluVmlld3BvcnRcIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy55YmFzZSt0aGlzLnktdGhpcy55ZGlzcDtyZXR1cm4gZT49MCYmZTx0aGlzLl9yb3dzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLl9nZXRDb3JyZWN0QnVmZmVyTGVuZ3RoPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLl9oYXNTY3JvbGxiYWNrKXJldHVybiBlO3ZhciByPWUrdGhpcy5fb3B0aW9uc1NlcnZpY2UucmF3T3B0aW9ucy5zY3JvbGxiYWNrO3JldHVybiByPnQuTUFYX0JVRkZFUl9TSVpFP3QuTUFYX0JVRkZFUl9TSVpFOnJ9LGUucHJvdG90eXBlLmZpbGxWaWV3cG9ydFJvd3M9ZnVuY3Rpb24oZSl7aWYoMD09PXRoaXMubGluZXMubGVuZ3RoKXt2b2lkIDA9PT1lJiYoZT1zLkRFRkFVTFRfQVRUUl9EQVRBKTtmb3IodmFyIHQ9dGhpcy5fcm93czt0LS07KXRoaXMubGluZXMucHVzaCh0aGlzLmdldEJsYW5rTGluZShlKSl9fSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMueWRpc3A9MCx0aGlzLnliYXNlPTAsdGhpcy55PTAsdGhpcy54PTAsdGhpcy5saW5lcz1uZXcgby5DaXJjdWxhckxpc3QodGhpcy5fZ2V0Q29ycmVjdEJ1ZmZlckxlbmd0aCh0aGlzLl9yb3dzKSksdGhpcy5zY3JvbGxUb3A9MCx0aGlzLnNjcm9sbEJvdHRvbT10aGlzLl9yb3dzLTEsdGhpcy5zZXR1cFRhYlN0b3BzKCl9LGUucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuZ2V0TnVsbENlbGwocy5ERUZBVUxUX0FUVFJfREFUQSksaT10aGlzLl9nZXRDb3JyZWN0QnVmZmVyTGVuZ3RoKHQpO2lmKGk+dGhpcy5saW5lcy5tYXhMZW5ndGgmJih0aGlzLmxpbmVzLm1heExlbmd0aD1pKSx0aGlzLmxpbmVzLmxlbmd0aD4wKXtpZih0aGlzLl9jb2xzPGUpZm9yKHZhciBuPTA7bjx0aGlzLmxpbmVzLmxlbmd0aDtuKyspdGhpcy5saW5lcy5nZXQobikucmVzaXplKGUscik7dmFyIG89MDtpZih0aGlzLl9yb3dzPHQpZm9yKHZhciBhPXRoaXMuX3Jvd3M7YTx0O2ErKyl0aGlzLmxpbmVzLmxlbmd0aDx0K3RoaXMueWJhc2UmJih0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd3NNb2RlP3RoaXMubGluZXMucHVzaChuZXcgcy5CdWZmZXJMaW5lKGUscikpOnRoaXMueWJhc2U+MCYmdGhpcy5saW5lcy5sZW5ndGg8PXRoaXMueWJhc2UrdGhpcy55K28rMT8odGhpcy55YmFzZS0tLG8rKyx0aGlzLnlkaXNwPjAmJnRoaXMueWRpc3AtLSk6dGhpcy5saW5lcy5wdXNoKG5ldyBzLkJ1ZmZlckxpbmUoZSxyKSkpO2Vsc2UgZm9yKGE9dGhpcy5fcm93czthPnQ7YS0tKXRoaXMubGluZXMubGVuZ3RoPnQrdGhpcy55YmFzZSYmKHRoaXMubGluZXMubGVuZ3RoPnRoaXMueWJhc2UrdGhpcy55KzE/dGhpcy5saW5lcy5wb3AoKToodGhpcy55YmFzZSsrLHRoaXMueWRpc3ArKykpO2lmKGk8dGhpcy5saW5lcy5tYXhMZW5ndGgpe3ZhciBjPXRoaXMubGluZXMubGVuZ3RoLWk7Yz4wJiYodGhpcy5saW5lcy50cmltU3RhcnQoYyksdGhpcy55YmFzZT1NYXRoLm1heCh0aGlzLnliYXNlLWMsMCksdGhpcy55ZGlzcD1NYXRoLm1heCh0aGlzLnlkaXNwLWMsMCksdGhpcy5zYXZlZFk9TWF0aC5tYXgodGhpcy5zYXZlZFktYywwKSksdGhpcy5saW5lcy5tYXhMZW5ndGg9aX10aGlzLng9TWF0aC5taW4odGhpcy54LGUtMSksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LTEpLG8mJih0aGlzLnkrPW8pLHRoaXMuc2F2ZWRYPU1hdGgubWluKHRoaXMuc2F2ZWRYLGUtMSksdGhpcy5zY3JvbGxUb3A9MH1pZih0aGlzLnNjcm9sbEJvdHRvbT10LTEsdGhpcy5faXNSZWZsb3dFbmFibGVkJiYodGhpcy5fcmVmbG93KGUsdCksdGhpcy5fY29scz5lKSlmb3Iobj0wO248dGhpcy5saW5lcy5sZW5ndGg7bisrKXRoaXMubGluZXMuZ2V0KG4pLnJlc2l6ZShlLHIpO3RoaXMuX2NvbHM9ZSx0aGlzLl9yb3dzPXR9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIl9pc1JlZmxvd0VuYWJsZWRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc1Njcm9sbGJhY2smJiF0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLndpbmRvd3NNb2RlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLl9yZWZsb3c9ZnVuY3Rpb24oZSx0KXt0aGlzLl9jb2xzIT09ZSYmKGU+dGhpcy5fY29scz90aGlzLl9yZWZsb3dMYXJnZXIoZSx0KTp0aGlzLl9yZWZsb3dTbWFsbGVyKGUsdCkpfSxlLnByb3RvdHlwZS5fcmVmbG93TGFyZ2VyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9KDAsbC5yZWZsb3dMYXJnZXJHZXRMaW5lc1RvUmVtb3ZlKSh0aGlzLmxpbmVzLHRoaXMuX2NvbHMsZSx0aGlzLnliYXNlK3RoaXMueSx0aGlzLmdldE51bGxDZWxsKHMuREVGQVVMVF9BVFRSX0RBVEEpKTtpZihyLmxlbmd0aD4wKXt2YXIgaT0oMCxsLnJlZmxvd0xhcmdlckNyZWF0ZU5ld0xheW91dCkodGhpcy5saW5lcyxyKTsoMCxsLnJlZmxvd0xhcmdlckFwcGx5TmV3TGF5b3V0KSh0aGlzLmxpbmVzLGkubGF5b3V0KSx0aGlzLl9yZWZsb3dMYXJnZXJBZGp1c3RWaWV3cG9ydChlLHQsaS5jb3VudFJlbW92ZWQpfX0sZS5wcm90b3R5cGUuX3JlZmxvd0xhcmdlckFkanVzdFZpZXdwb3J0PWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9dGhpcy5nZXROdWxsQ2VsbChzLkRFRkFVTFRfQVRUUl9EQVRBKSxuPXI7bi0tID4wOykwPT09dGhpcy55YmFzZT8odGhpcy55PjAmJnRoaXMueS0tLHRoaXMubGluZXMubGVuZ3RoPHQmJnRoaXMubGluZXMucHVzaChuZXcgcy5CdWZmZXJMaW5lKGUsaSkpKToodGhpcy55ZGlzcD09PXRoaXMueWJhc2UmJnRoaXMueWRpc3AtLSx0aGlzLnliYXNlLS0pO3RoaXMuc2F2ZWRZPU1hdGgubWF4KHRoaXMuc2F2ZWRZLXIsMCl9LGUucHJvdG90eXBlLl9yZWZsb3dTbWFsbGVyPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMuZ2V0TnVsbENlbGwocy5ERUZBVUxUX0FUVFJfREFUQSksbz1bXSxhPTAsYz10aGlzLmxpbmVzLmxlbmd0aC0xO2M+PTA7Yy0tKXt2YXIgaD10aGlzLmxpbmVzLmdldChjKTtpZighKCFofHwhaC5pc1dyYXBwZWQmJmguZ2V0VHJpbW1lZExlbmd0aCgpPD1lKSl7Zm9yKHZhciB1PVtoXTtoLmlzV3JhcHBlZCYmYz4wOyloPXRoaXMubGluZXMuZ2V0KC0tYyksdS51bnNoaWZ0KGgpO3ZhciBmPXRoaXMueWJhc2UrdGhpcy55O2lmKCEoZj49YyYmZjxjK3UubGVuZ3RoKSl7dmFyIF8sZD11W3UubGVuZ3RoLTFdLmdldFRyaW1tZWRMZW5ndGgoKSxwPSgwLGwucmVmbG93U21hbGxlckdldE5ld0xpbmVMZW5ndGhzKSh1LHRoaXMuX2NvbHMsZSksdj1wLmxlbmd0aC11Lmxlbmd0aDtfPTA9PT10aGlzLnliYXNlJiZ0aGlzLnkhPT10aGlzLmxpbmVzLmxlbmd0aC0xP01hdGgubWF4KDAsdGhpcy55LXRoaXMubGluZXMubWF4TGVuZ3RoK3YpOk1hdGgubWF4KDAsdGhpcy5saW5lcy5sZW5ndGgtdGhpcy5saW5lcy5tYXhMZW5ndGgrdik7Zm9yKHZhciB5PVtdLGc9MDtnPHY7ZysrKXt2YXIgbT10aGlzLmdldEJsYW5rTGluZShzLkRFRkFVTFRfQVRUUl9EQVRBLCEwKTt5LnB1c2gobSl9eS5sZW5ndGg+MCYmKG8ucHVzaCh7c3RhcnQ6Yyt1Lmxlbmd0aCthLG5ld0xpbmVzOnl9KSxhKz15Lmxlbmd0aCksdS5wdXNoLmFwcGx5KHUsbihbXSxpKHkpLCExKSk7dmFyIGI9cC5sZW5ndGgtMSxTPXBbYl07MD09PVMmJihTPXBbLS1iXSk7Zm9yKHZhciBDPXUubGVuZ3RoLXYtMSx3PWQ7Qz49MDspe3ZhciBMPU1hdGgubWluKHcsUyk7aWYodm9pZCAwPT09dVtiXSlicmVhaztpZih1W2JdLmNvcHlDZWxsc0Zyb20odVtDXSx3LUwsUy1MLEwsITApLDA9PShTLT1MKSYmKFM9cFstLWJdKSwwPT0ody09TCkpe0MtLTt2YXIgRT1NYXRoLm1heChDLDApO3c9KDAsbC5nZXRXcmFwcGVkTGluZVRyaW1tZWRMZW5ndGgpKHUsRSx0aGlzLl9jb2xzKX19Zm9yKGc9MDtnPHUubGVuZ3RoO2crKylwW2ddPGUmJnVbZ10uc2V0Q2VsbChwW2ddLHIpO2Zvcih2YXIgeD12LV87eC0tID4wOykwPT09dGhpcy55YmFzZT90aGlzLnk8dC0xPyh0aGlzLnkrKyx0aGlzLmxpbmVzLnBvcCgpKToodGhpcy55YmFzZSsrLHRoaXMueWRpc3ArKyk6dGhpcy55YmFzZTxNYXRoLm1pbih0aGlzLmxpbmVzLm1heExlbmd0aCx0aGlzLmxpbmVzLmxlbmd0aCthKS10JiYodGhpcy55YmFzZT09PXRoaXMueWRpc3AmJnRoaXMueWRpc3ArKyx0aGlzLnliYXNlKyspO3RoaXMuc2F2ZWRZPU1hdGgubWluKHRoaXMuc2F2ZWRZK3YsdGhpcy55YmFzZSt0LTEpfX19aWYoby5sZW5ndGg+MCl7dmFyIFI9W10saz1bXTtmb3IoZz0wO2c8dGhpcy5saW5lcy5sZW5ndGg7ZysrKWsucHVzaCh0aGlzLmxpbmVzLmdldChnKSk7dmFyIE09dGhpcy5saW5lcy5sZW5ndGgsQT1NLTEsTz0wLEQ9b1tPXTt0aGlzLmxpbmVzLmxlbmd0aD1NYXRoLm1pbih0aGlzLmxpbmVzLm1heExlbmd0aCx0aGlzLmxpbmVzLmxlbmd0aCthKTt2YXIgVD0wO2ZvcihnPU1hdGgubWluKHRoaXMubGluZXMubWF4TGVuZ3RoLTEsTSthLTEpO2c+PTA7Zy0tKWlmKEQmJkQuc3RhcnQ+QStUKXtmb3IodmFyIEI9RC5uZXdMaW5lcy5sZW5ndGgtMTtCPj0wO0ItLSl0aGlzLmxpbmVzLnNldChnLS0sRC5uZXdMaW5lc1tCXSk7ZysrLFIucHVzaCh7aW5kZXg6QSsxLGFtb3VudDpELm5ld0xpbmVzLmxlbmd0aH0pLFQrPUQubmV3TGluZXMubGVuZ3RoLEQ9b1srK09dfWVsc2UgdGhpcy5saW5lcy5zZXQoZyxrW0EtLV0pO3ZhciBQPTA7Zm9yKGc9Ui5sZW5ndGgtMTtnPj0wO2ctLSlSW2ddLmluZGV4Kz1QLHRoaXMubGluZXMub25JbnNlcnRFbWl0dGVyLmZpcmUoUltnXSksUCs9UltnXS5hbW91bnQ7dmFyIEk9TWF0aC5tYXgoMCxNK2EtdGhpcy5saW5lcy5tYXhMZW5ndGgpO0k+MCYmdGhpcy5saW5lcy5vblRyaW1FbWl0dGVyLmZpcmUoSSl9fSxlLnByb3RvdHlwZS5zdHJpbmdJbmRleFRvQnVmZmVySW5kZXg9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2b2lkIDA9PT1yJiYocj0hMSk7dDspe3ZhciBpPXRoaXMubGluZXMuZ2V0KGUpO2lmKCFpKXJldHVyblstMSwtMV07Zm9yKHZhciBuPXI/aS5nZXRUcmltbWVkTGVuZ3RoKCk6aS5sZW5ndGgsbz0wO288bjsrK28paWYoaS5nZXQobylbYy5DSEFSX0RBVEFfV0lEVEhfSU5ERVhdJiYodC09aS5nZXQobylbYy5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0ubGVuZ3RofHwxKSx0PDApcmV0dXJuW2Usb107ZSsrfXJldHVybltlLDBdfSxlLnByb3RvdHlwZS50cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmc9ZnVuY3Rpb24oZSx0LHIsaSl7dm9pZCAwPT09ciYmKHI9MCk7dmFyIG49dGhpcy5saW5lcy5nZXQoZSk7cmV0dXJuIG4/bi50cmFuc2xhdGVUb1N0cmluZyh0LHIsaSk6XCJcIn0sZS5wcm90b3R5cGUuZ2V0V3JhcHBlZFJhbmdlRm9yTGluZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZSxyPWU7dD4wJiZ0aGlzLmxpbmVzLmdldCh0KS5pc1dyYXBwZWQ7KXQtLTtmb3IoO3IrMTx0aGlzLmxpbmVzLmxlbmd0aCYmdGhpcy5saW5lcy5nZXQocisxKS5pc1dyYXBwZWQ7KXIrKztyZXR1cm57Zmlyc3Q6dCxsYXN0OnJ9fSxlLnByb3RvdHlwZS5zZXR1cFRhYlN0b3BzPWZ1bmN0aW9uKGUpe2ZvcihudWxsIT1lP3RoaXMudGFic1tlXXx8KGU9dGhpcy5wcmV2U3RvcChlKSk6KHRoaXMudGFicz17fSxlPTApO2U8dGhpcy5fY29scztlKz10aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLnRhYlN0b3BXaWR0aCl0aGlzLnRhYnNbZV09ITB9LGUucHJvdG90eXBlLnByZXZTdG9wPWZ1bmN0aW9uKGUpe2ZvcihudWxsPT1lJiYoZT10aGlzLngpOyF0aGlzLnRhYnNbLS1lXSYmZT4wOyk7cmV0dXJuIGU+PXRoaXMuX2NvbHM/dGhpcy5fY29scy0xOmU8MD8wOmV9LGUucHJvdG90eXBlLm5leHRTdG9wPWZ1bmN0aW9uKGUpe2ZvcihudWxsPT1lJiYoZT10aGlzLngpOyF0aGlzLnRhYnNbKytlXSYmZTx0aGlzLl9jb2xzOyk7cmV0dXJuIGU+PXRoaXMuX2NvbHM/dGhpcy5fY29scy0xOmU8MD8wOmV9LGUucHJvdG90eXBlLmNsZWFyTWFya2Vycz1mdW5jdGlvbihlKXt0aGlzLl9pc0NsZWFyaW5nPSEwO2Zvcih2YXIgdD0wO3Q8dGhpcy5tYXJrZXJzLmxlbmd0aDt0KyspdGhpcy5tYXJrZXJzW3RdLmxpbmU9PT1lJiYodGhpcy5tYXJrZXJzW3RdLmRpc3Bvc2UoKSx0aGlzLm1hcmtlcnMuc3BsaWNlKHQtLSwxKSk7dGhpcy5faXNDbGVhcmluZz0hMX0sZS5wcm90b3R5cGUuY2xlYXJBbGxNYXJrZXJzPWZ1bmN0aW9uKCl7dGhpcy5faXNDbGVhcmluZz0hMDtmb3IodmFyIGU9MDtlPHRoaXMubWFya2Vycy5sZW5ndGg7ZSsrKXRoaXMubWFya2Vyc1tlXS5kaXNwb3NlKCksdGhpcy5tYXJrZXJzLnNwbGljZShlLS0sMSk7dGhpcy5faXNDbGVhcmluZz0hMX0sZS5wcm90b3R5cGUuYWRkTWFya2VyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1uZXcgaC5NYXJrZXIoZSk7cmV0dXJuIHRoaXMubWFya2Vycy5wdXNoKHIpLHIucmVnaXN0ZXIodGhpcy5saW5lcy5vblRyaW0oKGZ1bmN0aW9uKGUpe3IubGluZS09ZSxyLmxpbmU8MCYmci5kaXNwb3NlKCl9KSkpLHIucmVnaXN0ZXIodGhpcy5saW5lcy5vbkluc2VydCgoZnVuY3Rpb24oZSl7ci5saW5lPj1lLmluZGV4JiYoci5saW5lKz1lLmFtb3VudCl9KSkpLHIucmVnaXN0ZXIodGhpcy5saW5lcy5vbkRlbGV0ZSgoZnVuY3Rpb24oZSl7ci5saW5lPj1lLmluZGV4JiZyLmxpbmU8ZS5pbmRleCtlLmFtb3VudCYmci5kaXNwb3NlKCksci5saW5lPmUuaW5kZXgmJihyLmxpbmUtPWUuYW1vdW50KX0pKSksci5yZWdpc3RlcihyLm9uRGlzcG9zZSgoZnVuY3Rpb24oKXtyZXR1cm4gdC5fcmVtb3ZlTWFya2VyKHIpfSkpKSxyfSxlLnByb3RvdHlwZS5fcmVtb3ZlTWFya2VyPWZ1bmN0aW9uKGUpe3RoaXMuX2lzQ2xlYXJpbmd8fHRoaXMubWFya2Vycy5zcGxpY2UodGhpcy5tYXJrZXJzLmluZGV4T2YoZSksMSl9LGUucHJvdG90eXBlLml0ZXJhdG9yPWZ1bmN0aW9uKGUsdCxyLGksbil7cmV0dXJuIG5ldyBkKHRoaXMsZSx0LHIsaSxuKX0sZX0oKTt0LkJ1ZmZlcj1fO3ZhciBkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscixpLG4sbyl7dm9pZCAwPT09ciYmKHI9MCksdm9pZCAwPT09aSYmKGk9ZS5saW5lcy5sZW5ndGgpLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PW8mJihvPTApLHRoaXMuX2J1ZmZlcj1lLHRoaXMuX3RyaW1SaWdodD10LHRoaXMuX3N0YXJ0SW5kZXg9cix0aGlzLl9lbmRJbmRleD1pLHRoaXMuX3N0YXJ0T3ZlcnNjYW49bix0aGlzLl9lbmRPdmVyc2Nhbj1vLHRoaXMuX3N0YXJ0SW5kZXg8MCYmKHRoaXMuX3N0YXJ0SW5kZXg9MCksdGhpcy5fZW5kSW5kZXg+dGhpcy5fYnVmZmVyLmxpbmVzLmxlbmd0aCYmKHRoaXMuX2VuZEluZGV4PXRoaXMuX2J1ZmZlci5saW5lcy5sZW5ndGgpLHRoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhcnRJbmRleH1yZXR1cm4gZS5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50PHRoaXMuX2VuZEluZGV4fSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fYnVmZmVyLmdldFdyYXBwZWRSYW5nZUZvckxpbmUodGhpcy5fY3VycmVudCk7ZS5maXJzdDx0aGlzLl9zdGFydEluZGV4LXRoaXMuX3N0YXJ0T3ZlcnNjYW4mJihlLmZpcnN0PXRoaXMuX3N0YXJ0SW5kZXgtdGhpcy5fc3RhcnRPdmVyc2NhbiksZS5sYXN0PnRoaXMuX2VuZEluZGV4K3RoaXMuX2VuZE92ZXJzY2FuJiYoZS5sYXN0PXRoaXMuX2VuZEluZGV4K3RoaXMuX2VuZE92ZXJzY2FuKSxlLmZpcnN0PU1hdGgubWF4KGUuZmlyc3QsMCksZS5sYXN0PU1hdGgubWluKGUubGFzdCx0aGlzLl9idWZmZXIubGluZXMubGVuZ3RoKTtmb3IodmFyIHQ9XCJcIixyPWUuZmlyc3Q7cjw9ZS5sYXN0Oysrcil0Kz10aGlzLl9idWZmZXIudHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nKHIsdGhpcy5fdHJpbVJpZ2h0KTtyZXR1cm4gdGhpcy5fY3VycmVudD1lLmxhc3QrMSx7cmFuZ2U6ZSxjb250ZW50OnR9fSxlfSgpO3QuQnVmZmVyU3RyaW5nSXRlcmF0b3I9ZH0sODQzNzooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdWZmZXJMaW5lPXQuREVGQVVMVF9BVFRSX0RBVEE9dm9pZCAwO3ZhciBpPXIoNDgyKSxuPXIoNjQzKSxvPXIoNTExKSxzPXIoMzczNCk7dC5ERUZBVUxUX0FUVFJfREFUQT1PYmplY3QuZnJlZXplKG5ldyBzLkF0dHJpYnV0ZURhdGEpO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscil7dm9pZCAwPT09ciYmKHI9ITEpLHRoaXMuaXNXcmFwcGVkPXIsdGhpcy5fY29tYmluZWQ9e30sdGhpcy5fZXh0ZW5kZWRBdHRycz17fSx0aGlzLl9kYXRhPW5ldyBVaW50MzJBcnJheSgzKmUpO2Zvcih2YXIgaT10fHxvLkNlbGxEYXRhLmZyb21DaGFyRGF0YShbMCxuLk5VTExfQ0VMTF9DSEFSLG4uTlVMTF9DRUxMX1dJRFRILG4uTlVMTF9DRUxMX0NPREVdKSxzPTA7czxlOysrcyl0aGlzLnNldENlbGwocyxpKTt0aGlzLmxlbmd0aD1lfXJldHVybiBlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZGF0YVszKmUrMF0scj0yMDk3MTUxJnQ7cmV0dXJuW3RoaXMuX2RhdGFbMyplKzFdLDIwOTcxNTImdD90aGlzLl9jb21iaW5lZFtlXTpyPygwLGkuc3RyaW5nRnJvbUNvZGVQb2ludCkocik6XCJcIix0Pj4yMiwyMDk3MTUyJnQ/dGhpcy5fY29tYmluZWRbZV0uY2hhckNvZGVBdCh0aGlzLl9jb21iaW5lZFtlXS5sZW5ndGgtMSk6cl19LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3RoaXMuX2RhdGFbMyplKzFdPXRbbi5DSEFSX0RBVEFfQVRUUl9JTkRFWF0sdFtuLkNIQVJfREFUQV9DSEFSX0lOREVYXS5sZW5ndGg+MT8odGhpcy5fY29tYmluZWRbZV09dFsxXSx0aGlzLl9kYXRhWzMqZSswXT0yMDk3MTUyfGV8dFtuLkNIQVJfREFUQV9XSURUSF9JTkRFWF08PDIyKTp0aGlzLl9kYXRhWzMqZSswXT10W24uQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmNoYXJDb2RlQXQoMCl8dFtuLkNIQVJfREFUQV9XSURUSF9JTkRFWF08PDIyfSxlLnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fZGF0YVszKmUrMF0+PjIyfSxlLnByb3RvdHlwZS5oYXNXaWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gMTI1ODI5MTImdGhpcy5fZGF0YVszKmUrMF19LGUucHJvdG90eXBlLmdldEZnPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9kYXRhWzMqZSsxXX0sZS5wcm90b3R5cGUuZ2V0Qmc9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2RhdGFbMyplKzJdfSxlLnByb3RvdHlwZS5oYXNDb250ZW50PWZ1bmN0aW9uKGUpe3JldHVybiA0MTk0MzAzJnRoaXMuX2RhdGFbMyplKzBdfSxlLnByb3RvdHlwZS5nZXRDb2RlUG9pbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZGF0YVszKmUrMF07cmV0dXJuIDIwOTcxNTImdD90aGlzLl9jb21iaW5lZFtlXS5jaGFyQ29kZUF0KHRoaXMuX2NvbWJpbmVkW2VdLmxlbmd0aC0xKToyMDk3MTUxJnR9LGUucHJvdG90eXBlLmlzQ29tYmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIDIwOTcxNTImdGhpcy5fZGF0YVszKmUrMF19LGUucHJvdG90eXBlLmdldFN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9kYXRhWzMqZSswXTtyZXR1cm4gMjA5NzE1MiZ0P3RoaXMuX2NvbWJpbmVkW2VdOjIwOTcxNTEmdD8oMCxpLnN0cmluZ0Zyb21Db2RlUG9pbnQpKDIwOTcxNTEmdCk6XCJcIn0sZS5wcm90b3R5cGUubG9hZENlbGw9ZnVuY3Rpb24oZSx0KXt2YXIgcj0zKmU7cmV0dXJuIHQuY29udGVudD10aGlzLl9kYXRhW3IrMF0sdC5mZz10aGlzLl9kYXRhW3IrMV0sdC5iZz10aGlzLl9kYXRhW3IrMl0sMjA5NzE1MiZ0LmNvbnRlbnQmJih0LmNvbWJpbmVkRGF0YT10aGlzLl9jb21iaW5lZFtlXSksMjY4NDM1NDU2JnQuYmcmJih0LmV4dGVuZGVkPXRoaXMuX2V4dGVuZGVkQXR0cnNbZV0pLHR9LGUucHJvdG90eXBlLnNldENlbGw9ZnVuY3Rpb24oZSx0KXsyMDk3MTUyJnQuY29udGVudCYmKHRoaXMuX2NvbWJpbmVkW2VdPXQuY29tYmluZWREYXRhKSwyNjg0MzU0NTYmdC5iZyYmKHRoaXMuX2V4dGVuZGVkQXR0cnNbZV09dC5leHRlbmRlZCksdGhpcy5fZGF0YVszKmUrMF09dC5jb250ZW50LHRoaXMuX2RhdGFbMyplKzFdPXQuZmcsdGhpcy5fZGF0YVszKmUrMl09dC5iZ30sZS5wcm90b3R5cGUuc2V0Q2VsbEZyb21Db2RlUG9pbnQ9ZnVuY3Rpb24oZSx0LHIsaSxuLG8pezI2ODQzNTQ1NiZuJiYodGhpcy5fZXh0ZW5kZWRBdHRyc1tlXT1vKSx0aGlzLl9kYXRhWzMqZSswXT10fHI8PDIyLHRoaXMuX2RhdGFbMyplKzFdPWksdGhpcy5fZGF0YVszKmUrMl09bn0sZS5wcm90b3R5cGUuYWRkQ29kZXBvaW50VG9DZWxsPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fZGF0YVszKmUrMF07MjA5NzE1MiZyP3RoaXMuX2NvbWJpbmVkW2VdKz0oMCxpLnN0cmluZ0Zyb21Db2RlUG9pbnQpKHQpOigyMDk3MTUxJnI/KHRoaXMuX2NvbWJpbmVkW2VdPSgwLGkuc3RyaW5nRnJvbUNvZGVQb2ludCkoMjA5NzE1MSZyKSsoMCxpLnN0cmluZ0Zyb21Db2RlUG9pbnQpKHQpLHImPS0yMDk3MTUyLHJ8PTIwOTcxNTIpOnI9dHwxPDwyMix0aGlzLl9kYXRhWzMqZSswXT1yKX0sZS5wcm90b3R5cGUuaW5zZXJ0Q2VsbHM9ZnVuY3Rpb24oZSx0LHIsaSl7aWYoKGUlPXRoaXMubGVuZ3RoKSYmMj09PXRoaXMuZ2V0V2lkdGgoZS0xKSYmdGhpcy5zZXRDZWxsRnJvbUNvZGVQb2ludChlLTEsMCwxLChudWxsPT1pP3ZvaWQgMDppLmZnKXx8MCwobnVsbD09aT92b2lkIDA6aS5iZyl8fDAsKG51bGw9PWk/dm9pZCAwOmkuZXh0ZW5kZWQpfHxuZXcgcy5FeHRlbmRlZEF0dHJzKSx0PHRoaXMubGVuZ3RoLWUpe2Zvcih2YXIgbj1uZXcgby5DZWxsRGF0YSxhPXRoaXMubGVuZ3RoLWUtdC0xO2E+PTA7LS1hKXRoaXMuc2V0Q2VsbChlK3QrYSx0aGlzLmxvYWRDZWxsKGUrYSxuKSk7Zm9yKGE9MDthPHQ7KythKXRoaXMuc2V0Q2VsbChlK2Escil9ZWxzZSBmb3IoYT1lO2E8dGhpcy5sZW5ndGg7KythKXRoaXMuc2V0Q2VsbChhLHIpOzI9PT10aGlzLmdldFdpZHRoKHRoaXMubGVuZ3RoLTEpJiZ0aGlzLnNldENlbGxGcm9tQ29kZVBvaW50KHRoaXMubGVuZ3RoLTEsMCwxLChudWxsPT1pP3ZvaWQgMDppLmZnKXx8MCwobnVsbD09aT92b2lkIDA6aS5iZyl8fDAsKG51bGw9PWk/dm9pZCAwOmkuZXh0ZW5kZWQpfHxuZXcgcy5FeHRlbmRlZEF0dHJzKX0sZS5wcm90b3R5cGUuZGVsZXRlQ2VsbHM9ZnVuY3Rpb24oZSx0LHIsaSl7aWYoZSU9dGhpcy5sZW5ndGgsdDx0aGlzLmxlbmd0aC1lKXtmb3IodmFyIG49bmV3IG8uQ2VsbERhdGEsYT0wO2E8dGhpcy5sZW5ndGgtZS10OysrYSl0aGlzLnNldENlbGwoZSthLHRoaXMubG9hZENlbGwoZSt0K2EsbikpO2ZvcihhPXRoaXMubGVuZ3RoLXQ7YTx0aGlzLmxlbmd0aDsrK2EpdGhpcy5zZXRDZWxsKGEscil9ZWxzZSBmb3IoYT1lO2E8dGhpcy5sZW5ndGg7KythKXRoaXMuc2V0Q2VsbChhLHIpO2UmJjI9PT10aGlzLmdldFdpZHRoKGUtMSkmJnRoaXMuc2V0Q2VsbEZyb21Db2RlUG9pbnQoZS0xLDAsMSwobnVsbD09aT92b2lkIDA6aS5mZyl8fDAsKG51bGw9PWk/dm9pZCAwOmkuYmcpfHwwLChudWxsPT1pP3ZvaWQgMDppLmV4dGVuZGVkKXx8bmV3IHMuRXh0ZW5kZWRBdHRycyksMCE9PXRoaXMuZ2V0V2lkdGgoZSl8fHRoaXMuaGFzQ29udGVudChlKXx8dGhpcy5zZXRDZWxsRnJvbUNvZGVQb2ludChlLDAsMSwobnVsbD09aT92b2lkIDA6aS5mZyl8fDAsKG51bGw9PWk/dm9pZCAwOmkuYmcpfHwwLChudWxsPT1pP3ZvaWQgMDppLmV4dGVuZGVkKXx8bmV3IHMuRXh0ZW5kZWRBdHRycyl9LGUucHJvdG90eXBlLnJlcGxhY2VDZWxscz1mdW5jdGlvbihlLHQscixpKXtmb3IoZSYmMj09PXRoaXMuZ2V0V2lkdGgoZS0xKSYmdGhpcy5zZXRDZWxsRnJvbUNvZGVQb2ludChlLTEsMCwxLChudWxsPT1pP3ZvaWQgMDppLmZnKXx8MCwobnVsbD09aT92b2lkIDA6aS5iZyl8fDAsKG51bGw9PWk/dm9pZCAwOmkuZXh0ZW5kZWQpfHxuZXcgcy5FeHRlbmRlZEF0dHJzKSx0PHRoaXMubGVuZ3RoJiYyPT09dGhpcy5nZXRXaWR0aCh0LTEpJiZ0aGlzLnNldENlbGxGcm9tQ29kZVBvaW50KHQsMCwxLChudWxsPT1pP3ZvaWQgMDppLmZnKXx8MCwobnVsbD09aT92b2lkIDA6aS5iZyl8fDAsKG51bGw9PWk/dm9pZCAwOmkuZXh0ZW5kZWQpfHxuZXcgcy5FeHRlbmRlZEF0dHJzKTtlPHQmJmU8dGhpcy5sZW5ndGg7KXRoaXMuc2V0Q2VsbChlKysscil9LGUucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlLHQpe2lmKGUhPT10aGlzLmxlbmd0aCl7aWYoZT50aGlzLmxlbmd0aCl7dmFyIHI9bmV3IFVpbnQzMkFycmF5KDMqZSk7dGhpcy5sZW5ndGgmJigzKmU8dGhpcy5fZGF0YS5sZW5ndGg/ci5zZXQodGhpcy5fZGF0YS5zdWJhcnJheSgwLDMqZSkpOnIuc2V0KHRoaXMuX2RhdGEpKSx0aGlzLl9kYXRhPXI7Zm9yKHZhciBpPXRoaXMubGVuZ3RoO2k8ZTsrK2kpdGhpcy5zZXRDZWxsKGksdCl9ZWxzZSBpZihlKXsocj1uZXcgVWludDMyQXJyYXkoMyplKSkuc2V0KHRoaXMuX2RhdGEuc3ViYXJyYXkoMCwzKmUpKSx0aGlzLl9kYXRhPXI7dmFyIG49T2JqZWN0LmtleXModGhpcy5fY29tYmluZWQpO2ZvcihpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBvPXBhcnNlSW50KG5baV0sMTApO28+PWUmJmRlbGV0ZSB0aGlzLl9jb21iaW5lZFtvXX19ZWxzZSB0aGlzLl9kYXRhPW5ldyBVaW50MzJBcnJheSgwKSx0aGlzLl9jb21iaW5lZD17fTt0aGlzLmxlbmd0aD1lfX0sZS5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlKXt0aGlzLl9jb21iaW5lZD17fSx0aGlzLl9leHRlbmRlZEF0dHJzPXt9O2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGg7Kyt0KXRoaXMuc2V0Q2VsbCh0LGUpfSxlLnByb3RvdHlwZS5jb3B5RnJvbT1mdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gdGhpcy5sZW5ndGghPT1lLmxlbmd0aD90aGlzLl9kYXRhPW5ldyBVaW50MzJBcnJheShlLl9kYXRhKTp0aGlzLl9kYXRhLnNldChlLl9kYXRhKSx0aGlzLmxlbmd0aD1lLmxlbmd0aCx0aGlzLl9jb21iaW5lZD17fSxlLl9jb21iaW5lZCl0aGlzLl9jb21iaW5lZFt0XT1lLl9jb21iaW5lZFt0XTtmb3IodmFyIHQgaW4gdGhpcy5fZXh0ZW5kZWRBdHRycz17fSxlLl9leHRlbmRlZEF0dHJzKXRoaXMuX2V4dGVuZGVkQXR0cnNbdF09ZS5fZXh0ZW5kZWRBdHRyc1t0XTt0aGlzLmlzV3JhcHBlZD1lLmlzV3JhcHBlZH0sZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgZSgwKTtmb3IodmFyIHIgaW4gdC5fZGF0YT1uZXcgVWludDMyQXJyYXkodGhpcy5fZGF0YSksdC5sZW5ndGg9dGhpcy5sZW5ndGgsdGhpcy5fY29tYmluZWQpdC5fY29tYmluZWRbcl09dGhpcy5fY29tYmluZWRbcl07Zm9yKHZhciByIGluIHRoaXMuX2V4dGVuZGVkQXR0cnMpdC5fZXh0ZW5kZWRBdHRyc1tyXT10aGlzLl9leHRlbmRlZEF0dHJzW3JdO3JldHVybiB0LmlzV3JhcHBlZD10aGlzLmlzV3JhcHBlZCx0fSxlLnByb3RvdHlwZS5nZXRUcmltbWVkTGVuZ3RoPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMubGVuZ3RoLTE7ZT49MDstLWUpaWYoNDE5NDMwMyZ0aGlzLl9kYXRhWzMqZSswXSlyZXR1cm4gZSsodGhpcy5fZGF0YVszKmUrMF0+PjIyKTtyZXR1cm4gMH0sZS5wcm90b3R5cGUuY29weUNlbGxzRnJvbT1mdW5jdGlvbihlLHQscixpLG4pe3ZhciBvPWUuX2RhdGE7aWYobilmb3IodmFyIHM9aS0xO3M+PTA7cy0tKWZvcih2YXIgYT0wO2E8MzthKyspdGhpcy5fZGF0YVszKihyK3MpK2FdPW9bMyoodCtzKSthXTtlbHNlIGZvcihzPTA7czxpO3MrKylmb3IoYT0wO2E8MzthKyspdGhpcy5fZGF0YVszKihyK3MpK2FdPW9bMyoodCtzKSthXTt2YXIgYz1PYmplY3Qua2V5cyhlLl9jb21iaW5lZCk7Zm9yKGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGw9cGFyc2VJbnQoY1thXSwxMCk7bD49dCYmKHRoaXMuX2NvbWJpbmVkW2wtdCtyXT1lLl9jb21iaW5lZFtsXSl9fSxlLnByb3RvdHlwZS50cmFuc2xhdGVUb1N0cmluZz1mdW5jdGlvbihlLHQscil7dm9pZCAwPT09ZSYmKGU9ITEpLHZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PXImJihyPXRoaXMubGVuZ3RoKSxlJiYocj1NYXRoLm1pbihyLHRoaXMuZ2V0VHJpbW1lZExlbmd0aCgpKSk7Zm9yKHZhciBvPVwiXCI7dDxyOyl7dmFyIHM9dGhpcy5fZGF0YVszKnQrMF0sYT0yMDk3MTUxJnM7bys9MjA5NzE1MiZzP3RoaXMuX2NvbWJpbmVkW3RdOmE/KDAsaS5zdHJpbmdGcm9tQ29kZVBvaW50KShhKTpuLldISVRFU1BBQ0VfQ0VMTF9DSEFSLHQrPXM+PjIyfHwxfXJldHVybiBvfSxlfSgpO3QuQnVmZmVyTGluZT1hfSw0ODQxOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRSYW5nZUxlbmd0aD12b2lkIDAsdC5nZXRSYW5nZUxlbmd0aD1mdW5jdGlvbihlLHQpe2lmKGUuc3RhcnQueT5lLmVuZC55KXRocm93IG5ldyBFcnJvcihcIkJ1ZmZlciByYW5nZSBlbmQgKFwiK2UuZW5kLngrXCIsIFwiK2UuZW5kLnkrXCIpIGNhbm5vdCBiZSBiZWZvcmUgc3RhcnQgKFwiK2Uuc3RhcnQueCtcIiwgXCIrZS5zdGFydC55K1wiKVwiKTtyZXR1cm4gdCooZS5lbmQueS1lLnN0YXJ0LnkpKyhlLmVuZC54LWUuc3RhcnQueCsxKX19LDQ2MzQ6KGUsdCk9PntmdW5jdGlvbiByKGUsdCxyKXtpZih0PT09ZS5sZW5ndGgtMSlyZXR1cm4gZVt0XS5nZXRUcmltbWVkTGVuZ3RoKCk7dmFyIGk9IWVbdF0uaGFzQ29udGVudChyLTEpJiYxPT09ZVt0XS5nZXRXaWR0aChyLTEpLG49Mj09PWVbdCsxXS5nZXRXaWR0aCgwKTtyZXR1cm4gaSYmbj9yLTE6cn1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmdldFdyYXBwZWRMaW5lVHJpbW1lZExlbmd0aD10LnJlZmxvd1NtYWxsZXJHZXROZXdMaW5lTGVuZ3Rocz10LnJlZmxvd0xhcmdlckFwcGx5TmV3TGF5b3V0PXQucmVmbG93TGFyZ2VyQ3JlYXRlTmV3TGF5b3V0PXQucmVmbG93TGFyZ2VyR2V0TGluZXNUb1JlbW92ZT12b2lkIDAsdC5yZWZsb3dMYXJnZXJHZXRMaW5lc1RvUmVtb3ZlPWZ1bmN0aW9uKGUsdCxpLG4sbyl7Zm9yKHZhciBzPVtdLGE9MDthPGUubGVuZ3RoLTE7YSsrKXt2YXIgYz1hLGw9ZS5nZXQoKytjKTtpZihsLmlzV3JhcHBlZCl7Zm9yKHZhciBoPVtlLmdldChhKV07YzxlLmxlbmd0aCYmbC5pc1dyYXBwZWQ7KWgucHVzaChsKSxsPWUuZ2V0KCsrYyk7aWYobj49YSYmbjxjKWErPWgubGVuZ3RoLTE7ZWxzZXtmb3IodmFyIHU9MCxmPXIoaCx1LHQpLF89MSxkPTA7XzxoLmxlbmd0aDspe3ZhciBwPXIoaCxfLHQpLHY9cC1kLHk9aS1mLGc9TWF0aC5taW4odix5KTtoW3VdLmNvcHlDZWxsc0Zyb20oaFtfXSxkLGYsZywhMSksKGYrPWcpPT09aSYmKHUrKyxmPTApLChkKz1nKT09PXAmJihfKyssZD0wKSwwPT09ZiYmMCE9PXUmJjI9PT1oW3UtMV0uZ2V0V2lkdGgoaS0xKSYmKGhbdV0uY29weUNlbGxzRnJvbShoW3UtMV0saS0xLGYrKywxLCExKSxoW3UtMV0uc2V0Q2VsbChpLTEsbykpfWhbdV0ucmVwbGFjZUNlbGxzKGYsaSxvKTtmb3IodmFyIG09MCxiPWgubGVuZ3RoLTE7Yj4wJiYoYj51fHwwPT09aFtiXS5nZXRUcmltbWVkTGVuZ3RoKCkpO2ItLSltKys7bT4wJiYocy5wdXNoKGEraC5sZW5ndGgtbSkscy5wdXNoKG0pKSxhKz1oLmxlbmd0aC0xfX19cmV0dXJuIHN9LHQucmVmbG93TGFyZ2VyQ3JlYXRlTmV3TGF5b3V0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPVtdLGk9MCxuPXRbaV0sbz0wLHM9MDtzPGUubGVuZ3RoO3MrKylpZihuPT09cyl7dmFyIGE9dFsrK2ldO2Uub25EZWxldGVFbWl0dGVyLmZpcmUoe2luZGV4OnMtbyxhbW91bnQ6YX0pLHMrPWEtMSxvKz1hLG49dFsrK2ldfWVsc2Ugci5wdXNoKHMpO3JldHVybntsYXlvdXQ6cixjb3VudFJlbW92ZWQ6b319LHQucmVmbG93TGFyZ2VyQXBwbHlOZXdMYXlvdXQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9W10saT0wO2k8dC5sZW5ndGg7aSsrKXIucHVzaChlLmdldCh0W2ldKSk7Zm9yKGk9MDtpPHIubGVuZ3RoO2krKyllLnNldChpLHJbaV0pO2UubGVuZ3RoPXQubGVuZ3RofSx0LnJlZmxvd1NtYWxsZXJHZXROZXdMaW5lTGVuZ3Rocz1mdW5jdGlvbihlLHQsaSl7Zm9yKHZhciBuPVtdLG89ZS5tYXAoKGZ1bmN0aW9uKGksbil7cmV0dXJuIHIoZSxuLHQpfSkpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0fSkpLHM9MCxhPTAsYz0wO2M8bzspe2lmKG8tYzxpKXtuLnB1c2goby1jKTticmVha31zKz1pO3ZhciBsPXIoZSxhLHQpO3M+bCYmKHMtPWwsYSsrKTt2YXIgaD0yPT09ZVthXS5nZXRXaWR0aChzLTEpO2gmJnMtLTt2YXIgdT1oP2ktMTppO24ucHVzaCh1KSxjKz11fXJldHVybiBufSx0LmdldFdyYXBwZWRMaW5lVHJpbW1lZExlbmd0aD1yfSw1Mjk1OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnVmZmVyU2V0PXZvaWQgMDt2YXIgbz1yKDkwOTIpLHM9cig4NDYwKSxhPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxyKXt2YXIgaT1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX29wdGlvbnNTZXJ2aWNlPXQsaS5fYnVmZmVyU2VydmljZT1yLGkuX29uQnVmZmVyQWN0aXZhdGU9aS5yZWdpc3RlcihuZXcgcy5FdmVudEVtaXR0ZXIpLGkucmVzZXQoKSxpfXJldHVybiBuKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25CdWZmZXJBY3RpdmF0ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25CdWZmZXJBY3RpdmF0ZS5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX25vcm1hbD1uZXcgby5CdWZmZXIoITAsdGhpcy5fb3B0aW9uc1NlcnZpY2UsdGhpcy5fYnVmZmVyU2VydmljZSksdGhpcy5fbm9ybWFsLmZpbGxWaWV3cG9ydFJvd3MoKSx0aGlzLl9hbHQ9bmV3IG8uQnVmZmVyKCExLHRoaXMuX29wdGlvbnNTZXJ2aWNlLHRoaXMuX2J1ZmZlclNlcnZpY2UpLHRoaXMuX2FjdGl2ZUJ1ZmZlcj10aGlzLl9ub3JtYWwsdGhpcy5fb25CdWZmZXJBY3RpdmF0ZS5maXJlKHthY3RpdmVCdWZmZXI6dGhpcy5fbm9ybWFsLGluYWN0aXZlQnVmZmVyOnRoaXMuX2FsdH0pLHRoaXMuc2V0dXBUYWJTdG9wcygpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJhbHRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FsdH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJhY3RpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUJ1ZmZlcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJub3JtYWxcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25vcm1hbH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5hY3RpdmF0ZU5vcm1hbEJ1ZmZlcj1mdW5jdGlvbigpe3RoaXMuX2FjdGl2ZUJ1ZmZlciE9PXRoaXMuX25vcm1hbCYmKHRoaXMuX25vcm1hbC54PXRoaXMuX2FsdC54LHRoaXMuX25vcm1hbC55PXRoaXMuX2FsdC55LHRoaXMuX2FsdC5jbGVhcigpLHRoaXMuX2FjdGl2ZUJ1ZmZlcj10aGlzLl9ub3JtYWwsdGhpcy5fb25CdWZmZXJBY3RpdmF0ZS5maXJlKHthY3RpdmVCdWZmZXI6dGhpcy5fbm9ybWFsLGluYWN0aXZlQnVmZmVyOnRoaXMuX2FsdH0pKX0sdC5wcm90b3R5cGUuYWN0aXZhdGVBbHRCdWZmZXI9ZnVuY3Rpb24oZSl7dGhpcy5fYWN0aXZlQnVmZmVyIT09dGhpcy5fYWx0JiYodGhpcy5fYWx0LmZpbGxWaWV3cG9ydFJvd3MoZSksdGhpcy5fYWx0Lng9dGhpcy5fbm9ybWFsLngsdGhpcy5fYWx0Lnk9dGhpcy5fbm9ybWFsLnksdGhpcy5fYWN0aXZlQnVmZmVyPXRoaXMuX2FsdCx0aGlzLl9vbkJ1ZmZlckFjdGl2YXRlLmZpcmUoe2FjdGl2ZUJ1ZmZlcjp0aGlzLl9hbHQsaW5hY3RpdmVCdWZmZXI6dGhpcy5fbm9ybWFsfSkpfSx0LnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oZSx0KXt0aGlzLl9ub3JtYWwucmVzaXplKGUsdCksdGhpcy5fYWx0LnJlc2l6ZShlLHQpfSx0LnByb3RvdHlwZS5zZXR1cFRhYlN0b3BzPWZ1bmN0aW9uKGUpe3RoaXMuX25vcm1hbC5zZXR1cFRhYlN0b3BzKGUpLHRoaXMuX2FsdC5zZXR1cFRhYlN0b3BzKGUpfSx0fShyKDg0NCkuRGlzcG9zYWJsZSk7dC5CdWZmZXJTZXQ9YX0sNTExOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ2VsbERhdGE9dm9pZCAwO3ZhciBvPXIoNDgyKSxzPXIoNjQzKSxhPXIoMzczNCksYz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIHQ9bnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiB0LmNvbnRlbnQ9MCx0LmZnPTAsdC5iZz0wLHQuZXh0ZW5kZWQ9bmV3IGEuRXh0ZW5kZWRBdHRycyx0LmNvbWJpbmVkRGF0YT1cIlwiLHR9cmV0dXJuIG4odCxlKSx0LmZyb21DaGFyRGF0YT1mdW5jdGlvbihlKXt2YXIgcj1uZXcgdDtyZXR1cm4gci5zZXRGcm9tQ2hhckRhdGEoZSkscn0sdC5wcm90b3R5cGUuaXNDb21iaW5lZD1mdW5jdGlvbigpe3JldHVybiAyMDk3MTUyJnRoaXMuY29udGVudH0sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50Pj4yMn0sdC5wcm90b3R5cGUuZ2V0Q2hhcnM9ZnVuY3Rpb24oKXtyZXR1cm4gMjA5NzE1MiZ0aGlzLmNvbnRlbnQ/dGhpcy5jb21iaW5lZERhdGE6MjA5NzE1MSZ0aGlzLmNvbnRlbnQ/KDAsby5zdHJpbmdGcm9tQ29kZVBvaW50KSgyMDk3MTUxJnRoaXMuY29udGVudCk6XCJcIn0sdC5wcm90b3R5cGUuZ2V0Q29kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzQ29tYmluZWQoKT90aGlzLmNvbWJpbmVkRGF0YS5jaGFyQ29kZUF0KHRoaXMuY29tYmluZWREYXRhLmxlbmd0aC0xKToyMDk3MTUxJnRoaXMuY29udGVudH0sdC5wcm90b3R5cGUuc2V0RnJvbUNoYXJEYXRhPWZ1bmN0aW9uKGUpe3RoaXMuZmc9ZVtzLkNIQVJfREFUQV9BVFRSX0lOREVYXSx0aGlzLmJnPTA7dmFyIHQ9ITE7aWYoZVtzLkNIQVJfREFUQV9DSEFSX0lOREVYXS5sZW5ndGg+Mil0PSEwO2Vsc2UgaWYoMj09PWVbcy5DSEFSX0RBVEFfQ0hBUl9JTkRFWF0ubGVuZ3RoKXt2YXIgcj1lW3MuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmNoYXJDb2RlQXQoMCk7aWYoNTUyOTY8PXImJnI8PTU2MzE5KXt2YXIgaT1lW3MuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmNoYXJDb2RlQXQoMSk7NTYzMjA8PWkmJmk8PTU3MzQzP3RoaXMuY29udGVudD0xMDI0KihyLTU1Mjk2KStpLTU2MzIwKzY1NTM2fGVbcy5DSEFSX0RBVEFfV0lEVEhfSU5ERVhdPDwyMjp0PSEwfWVsc2UgdD0hMH1lbHNlIHRoaXMuY29udGVudD1lW3MuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLmNoYXJDb2RlQXQoMCl8ZVtzLkNIQVJfREFUQV9XSURUSF9JTkRFWF08PDIyO3QmJih0aGlzLmNvbWJpbmVkRGF0YT1lW3MuQ0hBUl9EQVRBX0NIQVJfSU5ERVhdLHRoaXMuY29udGVudD0yMDk3MTUyfGVbcy5DSEFSX0RBVEFfV0lEVEhfSU5ERVhdPDwyMil9LHQucHJvdG90eXBlLmdldEFzQ2hhckRhdGE9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5mZyx0aGlzLmdldENoYXJzKCksdGhpcy5nZXRXaWR0aCgpLHRoaXMuZ2V0Q29kZSgpXX0sdH0oYS5BdHRyaWJ1dGVEYXRhKTt0LkNlbGxEYXRhPWN9LDY0MzooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuV0hJVEVTUEFDRV9DRUxMX0NPREU9dC5XSElURVNQQUNFX0NFTExfV0lEVEg9dC5XSElURVNQQUNFX0NFTExfQ0hBUj10Lk5VTExfQ0VMTF9DT0RFPXQuTlVMTF9DRUxMX1dJRFRIPXQuTlVMTF9DRUxMX0NIQVI9dC5DSEFSX0RBVEFfQ09ERV9JTkRFWD10LkNIQVJfREFUQV9XSURUSF9JTkRFWD10LkNIQVJfREFUQV9DSEFSX0lOREVYPXQuQ0hBUl9EQVRBX0FUVFJfSU5ERVg9dC5ERUZBVUxUX0FUVFI9dC5ERUZBVUxUX0NPTE9SPXZvaWQgMCx0LkRFRkFVTFRfQ09MT1I9MjU2LHQuREVGQVVMVF9BVFRSPTI1Nnx0LkRFRkFVTFRfQ09MT1I8PDksdC5DSEFSX0RBVEFfQVRUUl9JTkRFWD0wLHQuQ0hBUl9EQVRBX0NIQVJfSU5ERVg9MSx0LkNIQVJfREFUQV9XSURUSF9JTkRFWD0yLHQuQ0hBUl9EQVRBX0NPREVfSU5ERVg9Myx0Lk5VTExfQ0VMTF9DSEFSPVwiXCIsdC5OVUxMX0NFTExfV0lEVEg9MSx0Lk5VTExfQ0VMTF9DT0RFPTAsdC5XSElURVNQQUNFX0NFTExfQ0hBUj1cIiBcIix0LldISVRFU1BBQ0VfQ0VMTF9XSURUSD0xLHQuV0hJVEVTUEFDRV9DRUxMX0NPREU9MzJ9LDQ4NjM6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG49dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pfSxpKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1pKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KTooci5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IHIpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5NYXJrZXI9dm9pZCAwO3ZhciBvPXIoODQ2MCkscz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3ZhciBpPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gaS5saW5lPXIsaS5faWQ9dC5fbmV4dElkKyssaS5pc0Rpc3Bvc2VkPSExLGkuX29uRGlzcG9zZT1uZXcgby5FdmVudEVtaXR0ZXIsaX1yZXR1cm4gbih0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImlkXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pZH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvbkRpc3Bvc2VcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uRGlzcG9zZS5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5pc0Rpc3Bvc2VkfHwodGhpcy5pc0Rpc3Bvc2VkPSEwLHRoaXMubGluZT0tMSx0aGlzLl9vbkRpc3Bvc2UuZmlyZSgpLGUucHJvdG90eXBlLmRpc3Bvc2UuY2FsbCh0aGlzKSl9LHQuX25leHRJZD0xLHR9KHIoODQ0KS5EaXNwb3NhYmxlKTt0Lk1hcmtlcj1zfSw3MTE2OihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5ERUZBVUxUX0NIQVJTRVQ9dC5DSEFSU0VUUz12b2lkIDAsdC5DSEFSU0VUUz17fSx0LkRFRkFVTFRfQ0hBUlNFVD10LkNIQVJTRVRTLkIsdC5DSEFSU0VUU1swXT17XCJgXCI6XCLil4ZcIixhOlwi4paSXCIsYjpcIuKQiVwiLGM6XCLikIxcIixkOlwi4pCNXCIsZTpcIuKQilwiLGY6XCLCsFwiLGc6XCLCsVwiLGg6XCLikKRcIixpOlwi4pCLXCIsajpcIuKUmFwiLGs6XCLilJBcIixsOlwi4pSMXCIsbTpcIuKUlFwiLG46XCLilLxcIixvOlwi4o66XCIscDpcIuKOu1wiLHE6XCLilIBcIixyOlwi4o68XCIsczpcIuKOvVwiLHQ6XCLilJxcIix1Olwi4pSkXCIsdjpcIuKUtFwiLHc6XCLilKxcIix4Olwi4pSCXCIseTpcIuKJpFwiLHo6XCLiiaVcIixcIntcIjpcIs+AXCIsXCJ8XCI6XCLiiaBcIixcIn1cIjpcIsKjXCIsXCJ+XCI6XCLCt1wifSx0LkNIQVJTRVRTLkE9e1wiI1wiOlwiwqNcIn0sdC5DSEFSU0VUUy5CPXZvaWQgMCx0LkNIQVJTRVRTWzRdPXtcIiNcIjpcIsKjXCIsXCJAXCI6XCLCvlwiLFwiW1wiOlwiaWpcIixcIlxcXFxcIjpcIsK9XCIsXCJdXCI6XCJ8XCIsXCJ7XCI6XCLCqFwiLFwifFwiOlwiZlwiLFwifVwiOlwiwrxcIixcIn5cIjpcIsK0XCJ9LHQuQ0hBUlNFVFMuQz10LkNIQVJTRVRTWzVdPXtcIltcIjpcIsOEXCIsXCJcXFxcXCI6XCLDllwiLFwiXVwiOlwiw4VcIixcIl5cIjpcIsOcXCIsXCJgXCI6XCLDqVwiLFwie1wiOlwiw6RcIixcInxcIjpcIsO2XCIsXCJ9XCI6XCLDpVwiLFwiflwiOlwiw7xcIn0sdC5DSEFSU0VUUy5SPXtcIiNcIjpcIsKjXCIsXCJAXCI6XCLDoFwiLFwiW1wiOlwiwrBcIixcIlxcXFxcIjpcIsOnXCIsXCJdXCI6XCLCp1wiLFwie1wiOlwiw6lcIixcInxcIjpcIsO5XCIsXCJ9XCI6XCLDqFwiLFwiflwiOlwiwqhcIn0sdC5DSEFSU0VUUy5RPXtcIkBcIjpcIsOgXCIsXCJbXCI6XCLDolwiLFwiXFxcXFwiOlwiw6dcIixcIl1cIjpcIsOqXCIsXCJeXCI6XCLDrlwiLFwiYFwiOlwiw7RcIixcIntcIjpcIsOpXCIsXCJ8XCI6XCLDuVwiLFwifVwiOlwiw6hcIixcIn5cIjpcIsO7XCJ9LHQuQ0hBUlNFVFMuSz17XCJAXCI6XCLCp1wiLFwiW1wiOlwiw4RcIixcIlxcXFxcIjpcIsOWXCIsXCJdXCI6XCLDnFwiLFwie1wiOlwiw6RcIixcInxcIjpcIsO2XCIsXCJ9XCI6XCLDvFwiLFwiflwiOlwiw59cIn0sdC5DSEFSU0VUUy5ZPXtcIiNcIjpcIsKjXCIsXCJAXCI6XCLCp1wiLFwiW1wiOlwiwrBcIixcIlxcXFxcIjpcIsOnXCIsXCJdXCI6XCLDqVwiLFwiYFwiOlwiw7lcIixcIntcIjpcIsOgXCIsXCJ8XCI6XCLDslwiLFwifVwiOlwiw6hcIixcIn5cIjpcIsOsXCJ9LHQuQ0hBUlNFVFMuRT10LkNIQVJTRVRTWzZdPXtcIkBcIjpcIsOEXCIsXCJbXCI6XCLDhlwiLFwiXFxcXFwiOlwiw5hcIixcIl1cIjpcIsOFXCIsXCJeXCI6XCLDnFwiLFwiYFwiOlwiw6RcIixcIntcIjpcIsOmXCIsXCJ8XCI6XCLDuFwiLFwifVwiOlwiw6VcIixcIn5cIjpcIsO8XCJ9LHQuQ0hBUlNFVFMuWj17XCIjXCI6XCLCo1wiLFwiQFwiOlwiwqdcIixcIltcIjpcIsKhXCIsXCJcXFxcXCI6XCLDkVwiLFwiXVwiOlwiwr9cIixcIntcIjpcIsKwXCIsXCJ8XCI6XCLDsVwiLFwifVwiOlwiw6dcIn0sdC5DSEFSU0VUUy5IPXQuQ0hBUlNFVFNbN109e1wiQFwiOlwiw4lcIixcIltcIjpcIsOEXCIsXCJcXFxcXCI6XCLDllwiLFwiXVwiOlwiw4VcIixcIl5cIjpcIsOcXCIsXCJgXCI6XCLDqVwiLFwie1wiOlwiw6RcIixcInxcIjpcIsO2XCIsXCJ9XCI6XCLDpVwiLFwiflwiOlwiw7xcIn0sdC5DSEFSU0VUU1tcIj1cIl09e1wiI1wiOlwiw7lcIixcIkBcIjpcIsOgXCIsXCJbXCI6XCLDqVwiLFwiXFxcXFwiOlwiw6dcIixcIl1cIjpcIsOqXCIsXCJeXCI6XCLDrlwiLF86XCLDqFwiLFwiYFwiOlwiw7RcIixcIntcIjpcIsOkXCIsXCJ8XCI6XCLDtlwiLFwifVwiOlwiw7xcIixcIn5cIjpcIsO7XCJ9fSwyNTg0OihlLHQpPT57dmFyIHIsaTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkMxX0VTQ0FQRUQ9dC5DMT10LkMwPXZvaWQgMCxmdW5jdGlvbihlKXtlLk5VTD1cIlxcMFwiLGUuU09IPVwiXHUwMDAxXCIsZS5TVFg9XCJcdTAwMDJcIixlLkVUWD1cIlx1MDAwM1wiLGUuRU9UPVwiXHUwMDA0XCIsZS5FTlE9XCJcdTAwMDVcIixlLkFDSz1cIlx1MDAwNlwiLGUuQkVMPVwiXHUwMDA3XCIsZS5CUz1cIlxcYlwiLGUuSFQ9XCJcXHRcIixlLkxGPVwiXFxuXCIsZS5WVD1cIlxcdlwiLGUuRkY9XCJcXGZcIixlLkNSPVwiXFxyXCIsZS5TTz1cIlx1MDAwZVwiLGUuU0k9XCJcdTAwMGZcIixlLkRMRT1cIlx1MDAxMFwiLGUuREMxPVwiXHUwMDExXCIsZS5EQzI9XCJcdTAwMTJcIixlLkRDMz1cIlx1MDAxM1wiLGUuREM0PVwiXHUwMDE0XCIsZS5OQUs9XCJcdTAwMTVcIixlLlNZTj1cIlx1MDAxNlwiLGUuRVRCPVwiXHUwMDE3XCIsZS5DQU49XCJcdTAwMThcIixlLkVNPVwiXHUwMDE5XCIsZS5TVUI9XCJcdTAwMWFcIixlLkVTQz1cIlx1MDAxYlwiLGUuRlM9XCJcdTAwMWNcIixlLkdTPVwiXHUwMDFkXCIsZS5SUz1cIlx1MDAxZVwiLGUuVVM9XCJcdTAwMWZcIixlLlNQPVwiIFwiLGUuREVMPVwif1wifShyPXQuQzB8fCh0LkMwPXt9KSksKGk9dC5DMXx8KHQuQzE9e30pKS5QQUQ9XCLCgFwiLGkuSE9QPVwiwoFcIixpLkJQSD1cIsKCXCIsaS5OQkg9XCLCg1wiLGkuSU5EPVwiwoRcIixpLk5FTD1cIsKFXCIsaS5TU0E9XCLChlwiLGkuRVNBPVwiwodcIixpLkhUUz1cIsKIXCIsaS5IVEo9XCLCiVwiLGkuVlRTPVwiwopcIixpLlBMRD1cIsKLXCIsaS5QTFU9XCLCjFwiLGkuUkk9XCLCjVwiLGkuU1MyPVwiwo5cIixpLlNTMz1cIsKPXCIsaS5EQ1M9XCLCkFwiLGkuUFUxPVwiwpFcIixpLlBVMj1cIsKSXCIsaS5TVFM9XCLCk1wiLGkuQ0NIPVwiwpRcIixpLk1XPVwiwpVcIixpLlNQQT1cIsKWXCIsaS5FUEE9XCLCl1wiLGkuU09TPVwiwphcIixpLlNHQ0k9XCLCmVwiLGkuU0NJPVwiwppcIixpLkNTST1cIsKbXCIsaS5TVD1cIsKcXCIsaS5PU0M9XCLCnVwiLGkuUE09XCLCnlwiLGkuQVBDPVwiwp9cIiwodC5DMV9FU0NBUEVEfHwodC5DMV9FU0NBUEVEPXt9KSkuU1Q9ci5FU0MrXCJcXFxcXCJ9LDczOTk6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZXZhbHVhdGVLZXlib2FyZEV2ZW50PXZvaWQgMDt2YXIgaT1yKDI1ODQpLG49ezQ4OltcIjBcIixcIilcIl0sNDk6W1wiMVwiLFwiIVwiXSw1MDpbXCIyXCIsXCJAXCJdLDUxOltcIjNcIixcIiNcIl0sNTI6W1wiNFwiLFwiJFwiXSw1MzpbXCI1XCIsXCIlXCJdLDU0OltcIjZcIixcIl5cIl0sNTU6W1wiN1wiLFwiJlwiXSw1NjpbXCI4XCIsXCIqXCJdLDU3OltcIjlcIixcIihcIl0sMTg2OltcIjtcIixcIjpcIl0sMTg3OltcIj1cIixcIitcIl0sMTg4OltcIixcIixcIjxcIl0sMTg5OltcIi1cIixcIl9cIl0sMTkwOltcIi5cIixcIj5cIl0sMTkxOltcIi9cIixcIj9cIl0sMTkyOltcImBcIixcIn5cIl0sMjE5OltcIltcIixcIntcIl0sMjIwOltcIlxcXFxcIixcInxcIl0sMjIxOltcIl1cIixcIn1cIl0sMjIyOltcIidcIiwnXCInXX07dC5ldmFsdWF0ZUtleWJvYXJkRXZlbnQ9ZnVuY3Rpb24oZSx0LHIsbyl7dmFyIHM9e3R5cGU6MCxjYW5jZWw6ITEsa2V5OnZvaWQgMH0sYT0oZS5zaGlmdEtleT8xOjApfChlLmFsdEtleT8yOjApfChlLmN0cmxLZXk/NDowKXwoZS5tZXRhS2V5Pzg6MCk7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSAwOlwiVUlLZXlJbnB1dFVwQXJyb3dcIj09PWUua2V5P3Mua2V5PXQ/aS5DMC5FU0MrXCJPQVwiOmkuQzAuRVNDK1wiW0FcIjpcIlVJS2V5SW5wdXRMZWZ0QXJyb3dcIj09PWUua2V5P3Mua2V5PXQ/aS5DMC5FU0MrXCJPRFwiOmkuQzAuRVNDK1wiW0RcIjpcIlVJS2V5SW5wdXRSaWdodEFycm93XCI9PT1lLmtleT9zLmtleT10P2kuQzAuRVNDK1wiT0NcIjppLkMwLkVTQytcIltDXCI6XCJVSUtleUlucHV0RG93bkFycm93XCI9PT1lLmtleSYmKHMua2V5PXQ/aS5DMC5FU0MrXCJPQlwiOmkuQzAuRVNDK1wiW0JcIik7YnJlYWs7Y2FzZSA4OmlmKGUuc2hpZnRLZXkpe3Mua2V5PWkuQzAuQlM7YnJlYWt9aWYoZS5hbHRLZXkpe3Mua2V5PWkuQzAuRVNDK2kuQzAuREVMO2JyZWFrfXMua2V5PWkuQzAuREVMO2JyZWFrO2Nhc2UgOTppZihlLnNoaWZ0S2V5KXtzLmtleT1pLkMwLkVTQytcIltaXCI7YnJlYWt9cy5rZXk9aS5DMC5IVCxzLmNhbmNlbD0hMDticmVhaztjYXNlIDEzOnMua2V5PWUuYWx0S2V5P2kuQzAuRVNDK2kuQzAuQ1I6aS5DMC5DUixzLmNhbmNlbD0hMDticmVhaztjYXNlIDI3OnMua2V5PWkuQzAuRVNDLGUuYWx0S2V5JiYocy5rZXk9aS5DMC5FU0MraS5DMC5FU0MpLHMuY2FuY2VsPSEwO2JyZWFrO2Nhc2UgMzc6aWYoZS5tZXRhS2V5KWJyZWFrO2E/KHMua2V5PWkuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJEXCIscy5rZXk9PT1pLkMwLkVTQytcIlsxOzNEXCImJihzLmtleT1pLkMwLkVTQysocj9cImJcIjpcIlsxOzVEXCIpKSk6cy5rZXk9dD9pLkMwLkVTQytcIk9EXCI6aS5DMC5FU0MrXCJbRFwiO2JyZWFrO2Nhc2UgMzk6aWYoZS5tZXRhS2V5KWJyZWFrO2E/KHMua2V5PWkuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJDXCIscy5rZXk9PT1pLkMwLkVTQytcIlsxOzNDXCImJihzLmtleT1pLkMwLkVTQysocj9cImZcIjpcIlsxOzVDXCIpKSk6cy5rZXk9dD9pLkMwLkVTQytcIk9DXCI6aS5DMC5FU0MrXCJbQ1wiO2JyZWFrO2Nhc2UgMzg6aWYoZS5tZXRhS2V5KWJyZWFrO2E/KHMua2V5PWkuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJBXCIscnx8cy5rZXkhPT1pLkMwLkVTQytcIlsxOzNBXCJ8fChzLmtleT1pLkMwLkVTQytcIlsxOzVBXCIpKTpzLmtleT10P2kuQzAuRVNDK1wiT0FcIjppLkMwLkVTQytcIltBXCI7YnJlYWs7Y2FzZSA0MDppZihlLm1ldGFLZXkpYnJlYWs7YT8ocy5rZXk9aS5DMC5FU0MrXCJbMTtcIisoYSsxKStcIkJcIixyfHxzLmtleSE9PWkuQzAuRVNDK1wiWzE7M0JcInx8KHMua2V5PWkuQzAuRVNDK1wiWzE7NUJcIikpOnMua2V5PXQ/aS5DMC5FU0MrXCJPQlwiOmkuQzAuRVNDK1wiW0JcIjticmVhaztjYXNlIDQ1OmUuc2hpZnRLZXl8fGUuY3RybEtleXx8KHMua2V5PWkuQzAuRVNDK1wiWzJ+XCIpO2JyZWFrO2Nhc2UgNDY6cy5rZXk9YT9pLkMwLkVTQytcIlszO1wiKyhhKzEpK1wiflwiOmkuQzAuRVNDK1wiWzN+XCI7YnJlYWs7Y2FzZSAzNjpzLmtleT1hP2kuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJIXCI6dD9pLkMwLkVTQytcIk9IXCI6aS5DMC5FU0MrXCJbSFwiO2JyZWFrO2Nhc2UgMzU6cy5rZXk9YT9pLkMwLkVTQytcIlsxO1wiKyhhKzEpK1wiRlwiOnQ/aS5DMC5FU0MrXCJPRlwiOmkuQzAuRVNDK1wiW0ZcIjticmVhaztjYXNlIDMzOmUuc2hpZnRLZXk/cy50eXBlPTI6ZS5jdHJsS2V5P3Mua2V5PWkuQzAuRVNDK1wiWzU7XCIrKGErMSkrXCJ+XCI6cy5rZXk9aS5DMC5FU0MrXCJbNX5cIjticmVhaztjYXNlIDM0OmUuc2hpZnRLZXk/cy50eXBlPTM6ZS5jdHJsS2V5P3Mua2V5PWkuQzAuRVNDK1wiWzY7XCIrKGErMSkrXCJ+XCI6cy5rZXk9aS5DMC5FU0MrXCJbNn5cIjticmVhaztjYXNlIDExMjpzLmtleT1hP2kuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJQXCI6aS5DMC5FU0MrXCJPUFwiO2JyZWFrO2Nhc2UgMTEzOnMua2V5PWE/aS5DMC5FU0MrXCJbMTtcIisoYSsxKStcIlFcIjppLkMwLkVTQytcIk9RXCI7YnJlYWs7Y2FzZSAxMTQ6cy5rZXk9YT9pLkMwLkVTQytcIlsxO1wiKyhhKzEpK1wiUlwiOmkuQzAuRVNDK1wiT1JcIjticmVhaztjYXNlIDExNTpzLmtleT1hP2kuQzAuRVNDK1wiWzE7XCIrKGErMSkrXCJTXCI6aS5DMC5FU0MrXCJPU1wiO2JyZWFrO2Nhc2UgMTE2OnMua2V5PWE/aS5DMC5FU0MrXCJbMTU7XCIrKGErMSkrXCJ+XCI6aS5DMC5FU0MrXCJbMTV+XCI7YnJlYWs7Y2FzZSAxMTc6cy5rZXk9YT9pLkMwLkVTQytcIlsxNztcIisoYSsxKStcIn5cIjppLkMwLkVTQytcIlsxN35cIjticmVhaztjYXNlIDExODpzLmtleT1hP2kuQzAuRVNDK1wiWzE4O1wiKyhhKzEpK1wiflwiOmkuQzAuRVNDK1wiWzE4flwiO2JyZWFrO2Nhc2UgMTE5OnMua2V5PWE/aS5DMC5FU0MrXCJbMTk7XCIrKGErMSkrXCJ+XCI6aS5DMC5FU0MrXCJbMTl+XCI7YnJlYWs7Y2FzZSAxMjA6cy5rZXk9YT9pLkMwLkVTQytcIlsyMDtcIisoYSsxKStcIn5cIjppLkMwLkVTQytcIlsyMH5cIjticmVhaztjYXNlIDEyMTpzLmtleT1hP2kuQzAuRVNDK1wiWzIxO1wiKyhhKzEpK1wiflwiOmkuQzAuRVNDK1wiWzIxflwiO2JyZWFrO2Nhc2UgMTIyOnMua2V5PWE/aS5DMC5FU0MrXCJbMjM7XCIrKGErMSkrXCJ+XCI6aS5DMC5FU0MrXCJbMjN+XCI7YnJlYWs7Y2FzZSAxMjM6cy5rZXk9YT9pLkMwLkVTQytcIlsyNDtcIisoYSsxKStcIn5cIjppLkMwLkVTQytcIlsyNH5cIjticmVhaztkZWZhdWx0OmlmKCFlLmN0cmxLZXl8fGUuc2hpZnRLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXkpaWYociYmIW98fCFlLmFsdEtleXx8ZS5tZXRhS2V5KSFyfHxlLmFsdEtleXx8ZS5jdHJsS2V5fHxlLnNoaWZ0S2V5fHwhZS5tZXRhS2V5P2Uua2V5JiYhZS5jdHJsS2V5JiYhZS5hbHRLZXkmJiFlLm1ldGFLZXkmJmUua2V5Q29kZT49NDgmJjE9PT1lLmtleS5sZW5ndGg/cy5rZXk9ZS5rZXk6ZS5rZXkmJmUuY3RybEtleSYmKFwiX1wiPT09ZS5rZXkmJihzLmtleT1pLkMwLlVTKSxcIkBcIj09PWUua2V5JiYocy5rZXk9aS5DMC5OVUwpKTo2NT09PWUua2V5Q29kZSYmKHMudHlwZT0xKTtlbHNle3ZhciBjPW5bZS5rZXlDb2RlXSxsPW51bGw9PWM/dm9pZCAwOmNbZS5zaGlmdEtleT8xOjBdO2lmKGwpcy5rZXk9aS5DMC5FU0MrbDtlbHNlIGlmKGUua2V5Q29kZT49NjUmJmUua2V5Q29kZTw9OTApe3ZhciBoPWUuY3RybEtleT9lLmtleUNvZGUtNjQ6ZS5rZXlDb2RlKzMyLHU9U3RyaW5nLmZyb21DaGFyQ29kZShoKTtlLnNoaWZ0S2V5JiYodT11LnRvVXBwZXJDYXNlKCkpLHMua2V5PWkuQzAuRVNDK3V9ZWxzZVwiRGVhZFwiPT09ZS5rZXkmJmUuY29kZS5zdGFydHNXaXRoKFwiS2V5XCIpJiYodT1lLmNvZGUuc2xpY2UoMyw0KSxlLnNoaWZ0S2V5fHwodT11LnRvTG93ZXJDYXNlKCkpLHMua2V5PWkuQzAuRVNDK3Uscy5jYW5jZWw9ITApfWVsc2UgZS5rZXlDb2RlPj02NSYmZS5rZXlDb2RlPD05MD9zLmtleT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZS02NCk6MzI9PT1lLmtleUNvZGU/cy5rZXk9aS5DMC5OVUw6ZS5rZXlDb2RlPj01MSYmZS5rZXlDb2RlPD01NT9zLmtleT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZS01MSsyNyk6NTY9PT1lLmtleUNvZGU/cy5rZXk9aS5DMC5ERUw6MjE5PT09ZS5rZXlDb2RlP3Mua2V5PWkuQzAuRVNDOjIyMD09PWUua2V5Q29kZT9zLmtleT1pLkMwLkZTOjIyMT09PWUua2V5Q29kZSYmKHMua2V5PWkuQzAuR1MpfXJldHVybiBzfX0sNDgyOihlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5VdGY4VG9VdGYzMj10LlN0cmluZ1RvVXRmMzI9dC51dGYzMlRvU3RyaW5nPXQuc3RyaW5nRnJvbUNvZGVQb2ludD12b2lkIDAsdC5zdHJpbmdGcm9tQ29kZVBvaW50PWZ1bmN0aW9uKGUpe3JldHVybiBlPjY1NTM1PyhlLT02NTUzNixTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2KyhlPj4xMCkpK1N0cmluZy5mcm9tQ2hhckNvZGUoZSUxMDI0KzU2MzIwKSk6U3RyaW5nLmZyb21DaGFyQ29kZShlKX0sdC51dGYzMlRvU3RyaW5nPWZ1bmN0aW9uKGUsdCxyKXt2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1yJiYocj1lLmxlbmd0aCk7Zm9yKHZhciBpPVwiXCIsbj10O248cjsrK24pe3ZhciBvPWVbbl07bz42NTUzNT8oby09NjU1MzYsaSs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5Nisobz4+MTApKStTdHJpbmcuZnJvbUNoYXJDb2RlKG8lMTAyNCs1NjMyMCkpOmkrPVN0cmluZy5mcm9tQ2hhckNvZGUobyl9cmV0dXJuIGl9O3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuX2ludGVyaW09MH1yZXR1cm4gZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9pbnRlcmltPTB9LGUucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihlLHQpe3ZhciByPWUubGVuZ3RoO2lmKCFyKXJldHVybiAwO3ZhciBpPTAsbj0wO3RoaXMuX2ludGVyaW0mJig1NjMyMDw9KGE9ZS5jaGFyQ29kZUF0KG4rKykpJiZhPD01NzM0Mz90W2krK109MTAyNCoodGhpcy5faW50ZXJpbS01NTI5NikrYS01NjMyMCs2NTUzNjoodFtpKytdPXRoaXMuX2ludGVyaW0sdFtpKytdPWEpLHRoaXMuX2ludGVyaW09MCk7Zm9yKHZhciBvPW47bzxyOysrbyl7dmFyIHM9ZS5jaGFyQ29kZUF0KG8pO2lmKDU1Mjk2PD1zJiZzPD01NjMxOSl7aWYoKytvPj1yKXJldHVybiB0aGlzLl9pbnRlcmltPXMsaTt2YXIgYTs1NjMyMDw9KGE9ZS5jaGFyQ29kZUF0KG8pKSYmYTw9NTczNDM/dFtpKytdPTEwMjQqKHMtNTUyOTYpK2EtNTYzMjArNjU1MzY6KHRbaSsrXT1zLHRbaSsrXT1hKX1lbHNlIDY1Mjc5IT09cyYmKHRbaSsrXT1zKX1yZXR1cm4gaX0sZX0oKTt0LlN0cmluZ1RvVXRmMzI9cjt2YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLmludGVyaW09bmV3IFVpbnQ4QXJyYXkoMyl9cmV0dXJuIGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5pbnRlcmltLmZpbGwoMCl9LGUucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihlLHQpe3ZhciByPWUubGVuZ3RoO2lmKCFyKXJldHVybiAwO3ZhciBpLG4sbyxzLGE9MCxjPTAsbD0wO2lmKHRoaXMuaW50ZXJpbVswXSl7dmFyIGg9ITEsdT10aGlzLmludGVyaW1bMF07dSY9MTkyPT0oMjI0JnUpPzMxOjIyND09KDI0MCZ1KT8xNTo3O2Zvcih2YXIgZj0wLF89dm9pZCAwOyhfPTYzJnRoaXMuaW50ZXJpbVsrK2ZdKSYmZjw0Oyl1PDw9Nix1fD1fO2Zvcih2YXIgZD0xOTI9PSgyMjQmdGhpcy5pbnRlcmltWzBdKT8yOjIyND09KDI0MCZ0aGlzLmludGVyaW1bMF0pPzM6NCxwPWQtZjtsPHA7KXtpZihsPj1yKXJldHVybiAwO2lmKDEyOCE9KDE5MiYoXz1lW2wrK10pKSl7bC0tLGg9ITA7YnJlYWt9dGhpcy5pbnRlcmltW2YrK109Xyx1PDw9Nix1fD02MyZffWh8fCgyPT09ZD91PDEyOD9sLS06dFthKytdPXU6Mz09PWQ/dTwyMDQ4fHx1Pj01NTI5NiYmdTw9NTczNDN8fDY1Mjc5PT09dXx8KHRbYSsrXT11KTp1PDY1NTM2fHx1PjExMTQxMTF8fCh0W2ErK109dSkpLHRoaXMuaW50ZXJpbS5maWxsKDApfWZvcih2YXIgdj1yLTQseT1sO3k8cjspe2Zvcig7ISghKHk8dil8fDEyOCYoaT1lW3ldKXx8MTI4JihuPWVbeSsxXSl8fDEyOCYobz1lW3krMl0pfHwxMjgmKHM9ZVt5KzNdKSk7KXRbYSsrXT1pLHRbYSsrXT1uLHRbYSsrXT1vLHRbYSsrXT1zLHkrPTQ7aWYoKGk9ZVt5KytdKTwxMjgpdFthKytdPWk7ZWxzZSBpZigxOTI9PSgyMjQmaSkpe2lmKHk+PXIpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1pLGE7aWYoMTI4IT0oMTkyJihuPWVbeSsrXSkpKXt5LS07Y29udGludWV9aWYoKGM9KDMxJmkpPDw2fDYzJm4pPDEyOCl7eS0tO2NvbnRpbnVlfXRbYSsrXT1jfWVsc2UgaWYoMjI0PT0oMjQwJmkpKXtpZih5Pj1yKXJldHVybiB0aGlzLmludGVyaW1bMF09aSxhO2lmKDEyOCE9KDE5MiYobj1lW3krK10pKSl7eS0tO2NvbnRpbnVlfWlmKHk+PXIpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1pLHRoaXMuaW50ZXJpbVsxXT1uLGE7aWYoMTI4IT0oMTkyJihvPWVbeSsrXSkpKXt5LS07Y29udGludWV9aWYoKGM9KDE1JmkpPDwxMnwoNjMmbik8PDZ8NjMmbyk8MjA0OHx8Yz49NTUyOTYmJmM8PTU3MzQzfHw2NTI3OT09PWMpY29udGludWU7dFthKytdPWN9ZWxzZSBpZigyNDA9PSgyNDgmaSkpe2lmKHk+PXIpcmV0dXJuIHRoaXMuaW50ZXJpbVswXT1pLGE7aWYoMTI4IT0oMTkyJihuPWVbeSsrXSkpKXt5LS07Y29udGludWV9aWYoeT49cilyZXR1cm4gdGhpcy5pbnRlcmltWzBdPWksdGhpcy5pbnRlcmltWzFdPW4sYTtpZigxMjghPSgxOTImKG89ZVt5KytdKSkpe3ktLTtjb250aW51ZX1pZih5Pj1yKXJldHVybiB0aGlzLmludGVyaW1bMF09aSx0aGlzLmludGVyaW1bMV09bix0aGlzLmludGVyaW1bMl09byxhO2lmKDEyOCE9KDE5MiYocz1lW3krK10pKSl7eS0tO2NvbnRpbnVlfWlmKChjPSg3JmkpPDwxOHwoNjMmbik8PDEyfCg2MyZvKTw8Nnw2MyZzKTw2NTUzNnx8Yz4xMTE0MTExKWNvbnRpbnVlO3RbYSsrXT1jfX1yZXR1cm4gYX0sZX0oKTt0LlV0ZjhUb1V0ZjMyPWl9LDIyNTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Vbmljb2RlVjY9dm9pZCAwO3ZhciBpLG49cig4MjczKSxvPVtbNzY4LDg3OV0sWzExNTUsMTE1OF0sWzExNjAsMTE2MV0sWzE0MjUsMTQ2OV0sWzE0NzEsMTQ3MV0sWzE0NzMsMTQ3NF0sWzE0NzYsMTQ3N10sWzE0NzksMTQ3OV0sWzE1MzYsMTUzOV0sWzE1NTIsMTU1N10sWzE2MTEsMTYzMF0sWzE2NDgsMTY0OF0sWzE3NTAsMTc2NF0sWzE3NjcsMTc2OF0sWzE3NzAsMTc3M10sWzE4MDcsMTgwN10sWzE4MDksMTgwOV0sWzE4NDAsMTg2Nl0sWzE5NTgsMTk2OF0sWzIwMjcsMjAzNV0sWzIzMDUsMjMwNl0sWzIzNjQsMjM2NF0sWzIzNjksMjM3Nl0sWzIzODEsMjM4MV0sWzIzODUsMjM4OF0sWzI0MDIsMjQwM10sWzI0MzMsMjQzM10sWzI0OTIsMjQ5Ml0sWzI0OTcsMjUwMF0sWzI1MDksMjUwOV0sWzI1MzAsMjUzMV0sWzI1NjEsMjU2Ml0sWzI2MjAsMjYyMF0sWzI2MjUsMjYyNl0sWzI2MzEsMjYzMl0sWzI2MzUsMjYzN10sWzI2NzIsMjY3M10sWzI2ODksMjY5MF0sWzI3NDgsMjc0OF0sWzI3NTMsMjc1N10sWzI3NTksMjc2MF0sWzI3NjUsMjc2NV0sWzI3ODYsMjc4N10sWzI4MTcsMjgxN10sWzI4NzYsMjg3Nl0sWzI4NzksMjg3OV0sWzI4ODEsMjg4M10sWzI4OTMsMjg5M10sWzI5MDIsMjkwMl0sWzI5NDYsMjk0Nl0sWzMwMDgsMzAwOF0sWzMwMjEsMzAyMV0sWzMxMzQsMzEzNl0sWzMxNDIsMzE0NF0sWzMxNDYsMzE0OV0sWzMxNTcsMzE1OF0sWzMyNjAsMzI2MF0sWzMyNjMsMzI2M10sWzMyNzAsMzI3MF0sWzMyNzYsMzI3N10sWzMyOTgsMzI5OV0sWzMzOTMsMzM5NV0sWzM0MDUsMzQwNV0sWzM1MzAsMzUzMF0sWzM1MzgsMzU0MF0sWzM1NDIsMzU0Ml0sWzM2MzMsMzYzM10sWzM2MzYsMzY0Ml0sWzM2NTUsMzY2Ml0sWzM3NjEsMzc2MV0sWzM3NjQsMzc2OV0sWzM3NzEsMzc3Ml0sWzM3ODQsMzc4OV0sWzM4NjQsMzg2NV0sWzM4OTMsMzg5M10sWzM4OTUsMzg5NV0sWzM4OTcsMzg5N10sWzM5NTMsMzk2Nl0sWzM5NjgsMzk3Ml0sWzM5NzQsMzk3NV0sWzM5ODQsMzk5MV0sWzM5OTMsNDAyOF0sWzQwMzgsNDAzOF0sWzQxNDEsNDE0NF0sWzQxNDYsNDE0Nl0sWzQxNTAsNDE1MV0sWzQxNTMsNDE1M10sWzQxODQsNDE4NV0sWzQ0NDgsNDYwN10sWzQ5NTksNDk1OV0sWzU5MDYsNTkwOF0sWzU5MzgsNTk0MF0sWzU5NzAsNTk3MV0sWzYwMDIsNjAwM10sWzYwNjgsNjA2OV0sWzYwNzEsNjA3N10sWzYwODYsNjA4Nl0sWzYwODksNjA5OV0sWzYxMDksNjEwOV0sWzYxNTUsNjE1N10sWzYzMTMsNjMxM10sWzY0MzIsNjQzNF0sWzY0MzksNjQ0MF0sWzY0NTAsNjQ1MF0sWzY0NTcsNjQ1OV0sWzY2NzksNjY4MF0sWzY5MTIsNjkxNV0sWzY5NjQsNjk2NF0sWzY5NjYsNjk3MF0sWzY5NzIsNjk3Ml0sWzY5NzgsNjk3OF0sWzcwMTksNzAyN10sWzc2MTYsNzYyNl0sWzc2NzgsNzY3OV0sWzgyMDMsODIwN10sWzgyMzQsODIzOF0sWzgyODgsODI5MV0sWzgyOTgsODMwM10sWzg0MDAsODQzMV0sWzEyMzMwLDEyMzM1XSxbMTI0NDEsMTI0NDJdLFs0MzAxNCw0MzAxNF0sWzQzMDE5LDQzMDE5XSxbNDMwNDUsNDMwNDZdLFs2NDI4Niw2NDI4Nl0sWzY1MDI0LDY1MDM5XSxbNjUwNTYsNjUwNTldLFs2NTI3OSw2NTI3OV0sWzY1NTI5LDY1NTMxXV0scz1bWzY4MDk3LDY4MDk5XSxbNjgxMDEsNjgxMDJdLFs2ODEwOCw2ODExMV0sWzY4MTUyLDY4MTU0XSxbNjgxNTksNjgxNTldLFsxMTkxNDMsMTE5MTQ1XSxbMTE5MTU1LDExOTE3MF0sWzExOTE3MywxMTkxNzldLFsxMTkyMTAsMTE5MjEzXSxbMTE5MzYyLDExOTM2NF0sWzkxNzUwNSw5MTc1MDVdLFs5MTc1MzYsOTE3NjMxXSxbOTE3NzYwLDkxNzk5OV1dLGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYodGhpcy52ZXJzaW9uPVwiNlwiLCFpKXtpPW5ldyBVaW50OEFycmF5KDY1NTM2KSwoMCxuLmZpbGwpKGksMSksaVswXT0wLCgwLG4uZmlsbCkoaSwwLDEsMzIpLCgwLG4uZmlsbCkoaSwwLDEyNywxNjApLCgwLG4uZmlsbCkoaSwyLDQzNTIsNDQ0OCksaVs5MDAxXT0yLGlbOTAwMl09MiwoMCxuLmZpbGwpKGksMiwxMTkwNCw0MjE5MiksaVsxMjM1MV09MSwoMCxuLmZpbGwpKGksMiw0NDAzMiw1NTIwNCksKDAsbi5maWxsKShpLDIsNjM3NDQsNjQyNTYpLCgwLG4uZmlsbCkoaSwyLDY1MDQwLDY1MDUwKSwoMCxuLmZpbGwpKGksMiw2NTA3Miw2NTEzNiksKDAsbi5maWxsKShpLDIsNjUyODAsNjUzNzcpLCgwLG4uZmlsbCkoaSwyLDY1NTA0LDY1NTExKTtmb3IodmFyIGU9MDtlPG8ubGVuZ3RoOysrZSkoMCxuLmZpbGwpKGksMCxvW2VdWzBdLG9bZV1bMV0rMSl9fXJldHVybiBlLnByb3RvdHlwZS53Y3dpZHRoPWZ1bmN0aW9uKGUpe3JldHVybiBlPDMyPzA6ZTwxMjc/MTplPDY1NTM2P2lbZV06ZnVuY3Rpb24oZSx0KXt2YXIgcixpPTAsbj10Lmxlbmd0aC0xO2lmKGU8dFswXVswXXx8ZT50W25dWzFdKXJldHVybiExO2Zvcig7bj49aTspaWYoZT50W3I9aStuPj4xXVsxXSlpPXIrMTtlbHNle2lmKCEoZTx0W3JdWzBdKSlyZXR1cm4hMDtuPXItMX1yZXR1cm4hMX0oZSxzKT8wOmU+PTEzMTA3MiYmZTw9MTk2NjA1fHxlPj0xOTY2MDgmJmU8PTI2MjE0MT8yOjF9LGV9KCk7dC5Vbmljb2RlVjY9YX0sNTk4MTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Xcml0ZUJ1ZmZlcj12b2lkIDA7dmFyIGk9cig4NDYwKSxuPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBxdWV1ZU1pY3JvdGFzaz9mdW5jdGlvbihlKXtQcm9taXNlLnJlc29sdmUoKS50aGVuKGUpfTpxdWV1ZU1pY3JvdGFzayxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLl9hY3Rpb249ZSx0aGlzLl93cml0ZUJ1ZmZlcj1bXSx0aGlzLl9jYWxsYmFja3M9W10sdGhpcy5fcGVuZGluZ0RhdGE9MCx0aGlzLl9idWZmZXJPZmZzZXQ9MCx0aGlzLl9pc1N5bmNXcml0aW5nPSExLHRoaXMuX3N5bmNDYWxscz0wLHRoaXMuX29uV3JpdGVQYXJzZWQ9bmV3IGkuRXZlbnRFbWl0dGVyfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJvbldyaXRlUGFyc2VkXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbldyaXRlUGFyc2VkLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLndyaXRlU3luYz1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMCE9PXQmJnRoaXMuX3N5bmNDYWxscz50KXRoaXMuX3N5bmNDYWxscz0wO2Vsc2UgaWYodGhpcy5fcGVuZGluZ0RhdGErPWUubGVuZ3RoLHRoaXMuX3dyaXRlQnVmZmVyLnB1c2goZSksdGhpcy5fY2FsbGJhY2tzLnB1c2godm9pZCAwKSx0aGlzLl9zeW5jQ2FsbHMrKywhdGhpcy5faXNTeW5jV3JpdGluZyl7dmFyIHI7Zm9yKHRoaXMuX2lzU3luY1dyaXRpbmc9ITA7cj10aGlzLl93cml0ZUJ1ZmZlci5zaGlmdCgpOyl7dGhpcy5fYWN0aW9uKHIpO3ZhciBpPXRoaXMuX2NhbGxiYWNrcy5zaGlmdCgpO2kmJmkoKX10aGlzLl9wZW5kaW5nRGF0YT0wLHRoaXMuX2J1ZmZlck9mZnNldD0yMTQ3NDgzNjQ3LHRoaXMuX2lzU3luY1dyaXRpbmc9ITEsdGhpcy5fc3luY0NhbGxzPTB9fSxlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7aWYodGhpcy5fcGVuZGluZ0RhdGE+NWU3KXRocm93IG5ldyBFcnJvcihcIndyaXRlIGRhdGEgZGlzY2FyZGVkLCB1c2UgZmxvdyBjb250cm9sIHRvIGF2b2lkIGxvc2luZyBkYXRhXCIpO3RoaXMuX3dyaXRlQnVmZmVyLmxlbmd0aHx8KHRoaXMuX2J1ZmZlck9mZnNldD0wLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIHIuX2lubmVyV3JpdGUoKX0pKSksdGhpcy5fcGVuZGluZ0RhdGErPWUubGVuZ3RoLHRoaXMuX3dyaXRlQnVmZmVyLnB1c2goZSksdGhpcy5fY2FsbGJhY2tzLnB1c2godCl9LGUucHJvdG90eXBlLl9pbm5lcldyaXRlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpczt2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT10JiYodD0hMCk7Zm9yKHZhciBpPWV8fERhdGUubm93KCk7dGhpcy5fd3JpdGVCdWZmZXIubGVuZ3RoPnRoaXMuX2J1ZmZlck9mZnNldDspe3ZhciBvPXRoaXMuX3dyaXRlQnVmZmVyW3RoaXMuX2J1ZmZlck9mZnNldF0scz10aGlzLl9hY3Rpb24obyx0KTtpZihzKXJldHVybiB2b2lkIHMuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBuKChmdW5jdGlvbigpe3Rocm93IGV9KSksUHJvbWlzZS5yZXNvbHZlKCExKX0pKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gRGF0ZS5ub3coKS1pPj0xMj9zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiByLl9pbm5lcldyaXRlKDAsZSl9KSk6ci5faW5uZXJXcml0ZShpLGUpfSkpO3ZhciBhPXRoaXMuX2NhbGxiYWNrc1t0aGlzLl9idWZmZXJPZmZzZXRdO2lmKGEmJmEoKSx0aGlzLl9idWZmZXJPZmZzZXQrKyx0aGlzLl9wZW5kaW5nRGF0YS09by5sZW5ndGgsRGF0ZS5ub3coKS1pPj0xMilicmVha310aGlzLl93cml0ZUJ1ZmZlci5sZW5ndGg+dGhpcy5fYnVmZmVyT2Zmc2V0Pyh0aGlzLl9idWZmZXJPZmZzZXQ+NTAmJih0aGlzLl93cml0ZUJ1ZmZlcj10aGlzLl93cml0ZUJ1ZmZlci5zbGljZSh0aGlzLl9idWZmZXJPZmZzZXQpLHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3Muc2xpY2UodGhpcy5fYnVmZmVyT2Zmc2V0KSx0aGlzLl9idWZmZXJPZmZzZXQ9MCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gci5faW5uZXJXcml0ZSgpfSkpKToodGhpcy5fd3JpdGVCdWZmZXIubGVuZ3RoPTAsdGhpcy5fY2FsbGJhY2tzLmxlbmd0aD0wLHRoaXMuX3BlbmRpbmdEYXRhPTAsdGhpcy5fYnVmZmVyT2Zmc2V0PTApLHRoaXMuX29uV3JpdGVQYXJzZWQuZmlyZSgpfSxlfSgpO3QuV3JpdGVCdWZmZXI9b30sNTk0MTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMmJnRoaXMuX19yZWFkfHxmdW5jdGlvbihlLHQpe3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdO2lmKCFyKXJldHVybiBlO3ZhciBpLG4sbz1yLmNhbGwoZSkscz1bXTt0cnl7Zm9yKDsodm9pZCAwPT09dHx8dC0tID4wKSYmIShpPW8ubmV4dCgpKS5kb25lOylzLnB1c2goaS52YWx1ZSl9Y2F0Y2goZSl7bj17ZXJyb3I6ZX19ZmluYWxseXt0cnl7aSYmIWkuZG9uZSYmKHI9by5yZXR1cm4pJiZyLmNhbGwobyl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiBzfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnRvUmdiU3RyaW5nPXQucGFyc2VDb2xvcj12b2lkIDA7dmFyIGk9L14oW1xcZGEtZl0pXFwvKFtcXGRhLWZdKVxcLyhbXFxkYS1mXSkkfF4oW1xcZGEtZl17Mn0pXFwvKFtcXGRhLWZdezJ9KVxcLyhbXFxkYS1mXXsyfSkkfF4oW1xcZGEtZl17M30pXFwvKFtcXGRhLWZdezN9KVxcLyhbXFxkYS1mXXszfSkkfF4oW1xcZGEtZl17NH0pXFwvKFtcXGRhLWZdezR9KVxcLyhbXFxkYS1mXXs0fSkkLyxuPS9eW1xcZGEtZl0rJC87ZnVuY3Rpb24gbyhlLHQpe3ZhciByPWUudG9TdHJpbmcoMTYpLGk9ci5sZW5ndGg8Mj9cIjBcIityOnI7c3dpdGNoKHQpe2Nhc2UgNDpyZXR1cm4gclswXTtjYXNlIDg6cmV0dXJuIGk7Y2FzZSAxMjpyZXR1cm4oaStpKS5zbGljZSgwLDMpO2RlZmF1bHQ6cmV0dXJuIGkraX19dC5wYXJzZUNvbG9yPWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PWUudG9Mb3dlckNhc2UoKTtpZigwPT09dC5pbmRleE9mKFwicmdiOlwiKSl7dD10LnNsaWNlKDQpO3ZhciByPWkuZXhlYyh0KTtpZihyKXt2YXIgbz1yWzFdPzE1OnJbNF0/MjU1OnJbN10/NDA5NTo2NTUzNTtyZXR1cm5bTWF0aC5yb3VuZChwYXJzZUludChyWzFdfHxyWzRdfHxyWzddfHxyWzEwXSwxNikvbyoyNTUpLE1hdGgucm91bmQocGFyc2VJbnQoclsyXXx8cls1XXx8cls4XXx8clsxMV0sMTYpL28qMjU1KSxNYXRoLnJvdW5kKHBhcnNlSW50KHJbM118fHJbNl18fHJbOV18fHJbMTJdLDE2KS9vKjI1NSldfX1lbHNlIGlmKDA9PT10LmluZGV4T2YoXCIjXCIpJiYodD10LnNsaWNlKDEpLG4uZXhlYyh0KSYmWzMsNiw5LDEyXS5pbmNsdWRlcyh0Lmxlbmd0aCkpKXtmb3IodmFyIHM9dC5sZW5ndGgvMyxhPVswLDAsMF0sYz0wO2M8MzsrK2Mpe3ZhciBsPXBhcnNlSW50KHQuc2xpY2UocypjLHMqYytzKSwxNik7YVtjXT0xPT09cz9sPDw0OjI9PT1zP2w6Mz09PXM/bD4+NDpsPj44fXJldHVybiBhfX19LHQudG9SZ2JTdHJpbmc9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD0xNik7dmFyIGk9cihlLDMpLG49aVswXSxzPWlbMV0sYT1pWzJdO3JldHVyblwicmdiOlwiK28obix0KStcIi9cIitvKHMsdCkrXCIvXCIrbyhhLHQpfX0sNTc3MDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUEFZTE9BRF9MSU1JVD12b2lkIDAsdC5QQVlMT0FEX0xJTUlUPTFlN30sNjM1MTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5EY3NIYW5kbGVyPXQuRGNzUGFyc2VyPXZvaWQgMDt2YXIgaT1yKDQ4Miksbj1yKDg3NDIpLG89cig1NzcwKSxzPVtdLGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5faGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9hY3RpdmU9cyx0aGlzLl9pZGVudD0wLHRoaXMuX2hhbmRsZXJGYj1mdW5jdGlvbigpe30sdGhpcy5fc3RhY2s9e3BhdXNlZDohMSxsb29wUG9zaXRpb246MCxmYWxsVGhyb3VnaDohMX19cmV0dXJuIGUucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9oYW5kbGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2hhbmRsZXJGYj1mdW5jdGlvbigpe30sdGhpcy5fYWN0aXZlPXN9LGUucHJvdG90eXBlLnJlZ2lzdGVySGFuZGxlcj1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXRoaXMuX2hhbmRsZXJzW2VdJiYodGhpcy5faGFuZGxlcnNbZV09W10pO3ZhciByPXRoaXMuX2hhbmRsZXJzW2VdO3JldHVybiByLnB1c2godCkse2Rpc3Bvc2U6ZnVuY3Rpb24oKXt2YXIgZT1yLmluZGV4T2YodCk7LTEhPT1lJiZyLnNwbGljZShlLDEpfX19LGUucHJvdG90eXBlLmNsZWFySGFuZGxlcj1mdW5jdGlvbihlKXt0aGlzLl9oYW5kbGVyc1tlXSYmZGVsZXRlIHRoaXMuX2hhbmRsZXJzW2VdfSxlLnByb3RvdHlwZS5zZXRIYW5kbGVyRmFsbGJhY2s9ZnVuY3Rpb24oZSl7dGhpcy5faGFuZGxlckZiPWV9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5fYWN0aXZlLmxlbmd0aClmb3IodmFyIGU9dGhpcy5fc3RhY2sucGF1c2VkP3RoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbi0xOnRoaXMuX2FjdGl2ZS5sZW5ndGgtMTtlPj0wOy0tZSl0aGlzLl9hY3RpdmVbZV0udW5ob29rKCExKTt0aGlzLl9zdGFjay5wYXVzZWQ9ITEsdGhpcy5fYWN0aXZlPXMsdGhpcy5faWRlbnQ9MH0sZS5wcm90b3R5cGUuaG9vaz1mdW5jdGlvbihlLHQpe2lmKHRoaXMucmVzZXQoKSx0aGlzLl9pZGVudD1lLHRoaXMuX2FjdGl2ZT10aGlzLl9oYW5kbGVyc1tlXXx8cyx0aGlzLl9hY3RpdmUubGVuZ3RoKWZvcih2YXIgcj10aGlzLl9hY3RpdmUubGVuZ3RoLTE7cj49MDtyLS0pdGhpcy5fYWN0aXZlW3JdLmhvb2sodCk7ZWxzZSB0aGlzLl9oYW5kbGVyRmIodGhpcy5faWRlbnQsXCJIT09LXCIsdCl9LGUucHJvdG90eXBlLnB1dD1mdW5jdGlvbihlLHQscil7aWYodGhpcy5fYWN0aXZlLmxlbmd0aClmb3IodmFyIG49dGhpcy5fYWN0aXZlLmxlbmd0aC0xO24+PTA7bi0tKXRoaXMuX2FjdGl2ZVtuXS5wdXQoZSx0LHIpO2Vsc2UgdGhpcy5faGFuZGxlckZiKHRoaXMuX2lkZW50LFwiUFVUXCIsKDAsaS51dGYzMlRvU3RyaW5nKShlLHQscikpfSxlLnByb3RvdHlwZS51bmhvb2s9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10JiYodD0hMCksdGhpcy5fYWN0aXZlLmxlbmd0aCl7dmFyIHI9ITEsaT10aGlzLl9hY3RpdmUubGVuZ3RoLTEsbj0hMTtpZih0aGlzLl9zdGFjay5wYXVzZWQmJihpPXRoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbi0xLHI9dCxuPXRoaXMuX3N0YWNrLmZhbGxUaHJvdWdoLHRoaXMuX3N0YWNrLnBhdXNlZD0hMSksIW4mJiExPT09cil7Zm9yKDtpPj0wJiYhMCE9PShyPXRoaXMuX2FjdGl2ZVtpXS51bmhvb2soZSkpO2ktLSlpZihyIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fc3RhY2sucGF1c2VkPSEwLHRoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbj1pLHRoaXMuX3N0YWNrLmZhbGxUaHJvdWdoPSExLHI7aS0tfWZvcig7aT49MDtpLS0paWYoKHI9dGhpcy5fYWN0aXZlW2ldLnVuaG9vayghMSkpaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiB0aGlzLl9zdGFjay5wYXVzZWQ9ITAsdGhpcy5fc3RhY2subG9vcFBvc2l0aW9uPWksdGhpcy5fc3RhY2suZmFsbFRocm91Z2g9ITAscn1lbHNlIHRoaXMuX2hhbmRsZXJGYih0aGlzLl9pZGVudCxcIlVOSE9PS1wiLGUpO3RoaXMuX2FjdGl2ZT1zLHRoaXMuX2lkZW50PTB9LGV9KCk7dC5EY3NQYXJzZXI9YTt2YXIgYz1uZXcgbi5QYXJhbXM7Yy5hZGRQYXJhbSgwKTt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5faGFuZGxlcj1lLHRoaXMuX2RhdGE9XCJcIix0aGlzLl9wYXJhbXM9Yyx0aGlzLl9oaXRMaW1pdD0hMX1yZXR1cm4gZS5wcm90b3R5cGUuaG9vaz1mdW5jdGlvbihlKXt0aGlzLl9wYXJhbXM9ZS5sZW5ndGg+MXx8ZS5wYXJhbXNbMF0/ZS5jbG9uZSgpOmMsdGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSExfSxlLnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX2hpdExpbWl0fHwodGhpcy5fZGF0YSs9KDAsaS51dGYzMlRvU3RyaW5nKShlLHQsciksdGhpcy5fZGF0YS5sZW5ndGg+by5QQVlMT0FEX0xJTUlUJiYodGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSEwKSl9LGUucHJvdG90eXBlLnVuaG9vaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9ITE7aWYodGhpcy5faGl0TGltaXQpcj0hMTtlbHNlIGlmKGUmJihyPXRoaXMuX2hhbmRsZXIodGhpcy5fZGF0YSx0aGlzLl9wYXJhbXMpKWluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gci50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fcGFyYW1zPWMsdC5fZGF0YT1cIlwiLHQuX2hpdExpbWl0PSExLGV9KSk7cmV0dXJuIHRoaXMuX3BhcmFtcz1jLHRoaXMuX2RhdGE9XCJcIix0aGlzLl9oaXRMaW1pdD0hMSxyfSxlfSgpO3QuRGNzSGFuZGxlcj1sfSwyMDE1OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuRXNjYXBlU2VxdWVuY2VQYXJzZXI9dC5WVDUwMF9UUkFOU0lUSU9OX1RBQkxFPXQuVHJhbnNpdGlvblRhYmxlPXZvaWQgMDt2YXIgbz1yKDg0NCkscz1yKDgyNzMpLGE9cig4NzQyKSxjPXIoNjI0MiksbD1yKDYzNTEpLGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMudGFibGU9bmV3IFVpbnQ4QXJyYXkoZSl9cmV0dXJuIGUucHJvdG90eXBlLnNldERlZmF1bHQ9ZnVuY3Rpb24oZSx0KXsoMCxzLmZpbGwpKHRoaXMudGFibGUsZTw8NHx0KX0sZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUsdCxyLGkpe3RoaXMudGFibGVbdDw8OHxlXT1yPDw0fGl9LGUucHJvdG90eXBlLmFkZE1hbnk9ZnVuY3Rpb24oZSx0LHIsaSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdGhpcy50YWJsZVt0PDw4fGVbbl1dPXI8PDR8aX0sZX0oKTt0LlRyYW5zaXRpb25UYWJsZT1oO3ZhciB1PTE2MDt0LlZUNTAwX1RSQU5TSVRJT05fVEFCTEU9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgaCg0MDk1KSx0PUFycmF5LmFwcGx5KG51bGwsQXJyYXkoMjU2KSkubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkpLHI9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5zbGljZShlLHIpfSxpPXIoMzIsMTI3KSxuPXIoMCwyNCk7bi5wdXNoKDI1KSxuLnB1c2guYXBwbHkobixyKDI4LDMyKSk7dmFyIG8scz1yKDAsMTQpO2ZvcihvIGluIGUuc2V0RGVmYXVsdCgxLDApLGUuYWRkTWFueShpLDAsMiwwKSxzKWUuYWRkTWFueShbMjQsMjYsMTUzLDE1NF0sbywzLDApLGUuYWRkTWFueShyKDEyOCwxNDQpLG8sMywwKSxlLmFkZE1hbnkocigxNDQsMTUyKSxvLDMsMCksZS5hZGQoMTU2LG8sMCwwKSxlLmFkZCgyNyxvLDExLDEpLGUuYWRkKDE1NyxvLDQsOCksZS5hZGRNYW55KFsxNTIsMTU4LDE1OV0sbywwLDcpLGUuYWRkKDE1NSxvLDExLDMpLGUuYWRkKDE0NCxvLDExLDkpO3JldHVybiBlLmFkZE1hbnkobiwwLDMsMCksZS5hZGRNYW55KG4sMSwzLDEpLGUuYWRkKDEyNywxLDAsMSksZS5hZGRNYW55KG4sOCwwLDgpLGUuYWRkTWFueShuLDMsMywzKSxlLmFkZCgxMjcsMywwLDMpLGUuYWRkTWFueShuLDQsMyw0KSxlLmFkZCgxMjcsNCwwLDQpLGUuYWRkTWFueShuLDYsMyw2KSxlLmFkZE1hbnkobiw1LDMsNSksZS5hZGQoMTI3LDUsMCw1KSxlLmFkZE1hbnkobiwyLDMsMiksZS5hZGQoMTI3LDIsMCwyKSxlLmFkZCg5MywxLDQsOCksZS5hZGRNYW55KGksOCw1LDgpLGUuYWRkKDEyNyw4LDUsOCksZS5hZGRNYW55KFsxNTYsMjcsMjQsMjYsN10sOCw2LDApLGUuYWRkTWFueShyKDI4LDMyKSw4LDAsOCksZS5hZGRNYW55KFs4OCw5NCw5NV0sMSwwLDcpLGUuYWRkTWFueShpLDcsMCw3KSxlLmFkZE1hbnkobiw3LDAsNyksZS5hZGQoMTU2LDcsMCwwKSxlLmFkZCgxMjcsNywwLDcpLGUuYWRkKDkxLDEsMTEsMyksZS5hZGRNYW55KHIoNjQsMTI3KSwzLDcsMCksZS5hZGRNYW55KHIoNDgsNjApLDMsOCw0KSxlLmFkZE1hbnkoWzYwLDYxLDYyLDYzXSwzLDksNCksZS5hZGRNYW55KHIoNDgsNjApLDQsOCw0KSxlLmFkZE1hbnkocig2NCwxMjcpLDQsNywwKSxlLmFkZE1hbnkoWzYwLDYxLDYyLDYzXSw0LDAsNiksZS5hZGRNYW55KHIoMzIsNjQpLDYsMCw2KSxlLmFkZCgxMjcsNiwwLDYpLGUuYWRkTWFueShyKDY0LDEyNyksNiwwLDApLGUuYWRkTWFueShyKDMyLDQ4KSwzLDksNSksZS5hZGRNYW55KHIoMzIsNDgpLDUsOSw1KSxlLmFkZE1hbnkocig0OCw2NCksNSwwLDYpLGUuYWRkTWFueShyKDY0LDEyNyksNSw3LDApLGUuYWRkTWFueShyKDMyLDQ4KSw0LDksNSksZS5hZGRNYW55KHIoMzIsNDgpLDEsOSwyKSxlLmFkZE1hbnkocigzMiw0OCksMiw5LDIpLGUuYWRkTWFueShyKDQ4LDEyNyksMiwxMCwwKSxlLmFkZE1hbnkocig0OCw4MCksMSwxMCwwKSxlLmFkZE1hbnkocig4MSw4OCksMSwxMCwwKSxlLmFkZE1hbnkoWzg5LDkwLDkyXSwxLDEwLDApLGUuYWRkTWFueShyKDk2LDEyNyksMSwxMCwwKSxlLmFkZCg4MCwxLDExLDkpLGUuYWRkTWFueShuLDksMCw5KSxlLmFkZCgxMjcsOSwwLDkpLGUuYWRkTWFueShyKDI4LDMyKSw5LDAsOSksZS5hZGRNYW55KHIoMzIsNDgpLDksOSwxMiksZS5hZGRNYW55KHIoNDgsNjApLDksOCwxMCksZS5hZGRNYW55KFs2MCw2MSw2Miw2M10sOSw5LDEwKSxlLmFkZE1hbnkobiwxMSwwLDExKSxlLmFkZE1hbnkocigzMiwxMjgpLDExLDAsMTEpLGUuYWRkTWFueShyKDI4LDMyKSwxMSwwLDExKSxlLmFkZE1hbnkobiwxMCwwLDEwKSxlLmFkZCgxMjcsMTAsMCwxMCksZS5hZGRNYW55KHIoMjgsMzIpLDEwLDAsMTApLGUuYWRkTWFueShyKDQ4LDYwKSwxMCw4LDEwKSxlLmFkZE1hbnkoWzYwLDYxLDYyLDYzXSwxMCwwLDExKSxlLmFkZE1hbnkocigzMiw0OCksMTAsOSwxMiksZS5hZGRNYW55KG4sMTIsMCwxMiksZS5hZGQoMTI3LDEyLDAsMTIpLGUuYWRkTWFueShyKDI4LDMyKSwxMiwwLDEyKSxlLmFkZE1hbnkocigzMiw0OCksMTIsOSwxMiksZS5hZGRNYW55KHIoNDgsNjQpLDEyLDAsMTEpLGUuYWRkTWFueShyKDY0LDEyNyksMTIsMTIsMTMpLGUuYWRkTWFueShyKDY0LDEyNyksMTAsMTIsMTMpLGUuYWRkTWFueShyKDY0LDEyNyksOSwxMiwxMyksZS5hZGRNYW55KG4sMTMsMTMsMTMpLGUuYWRkTWFueShpLDEzLDEzLDEzKSxlLmFkZCgxMjcsMTMsMCwxMyksZS5hZGRNYW55KFsyNywxNTYsMjQsMjZdLDEzLDE0LDApLGUuYWRkKHUsMCwyLDApLGUuYWRkKHUsOCw1LDgpLGUuYWRkKHUsNiwwLDYpLGUuYWRkKHUsMTEsMCwxMSksZS5hZGQodSwxMywxMywxMyksZX0oKTt2YXIgZj1mdW5jdGlvbihlKXtmdW5jdGlvbiByKHIpe3ZvaWQgMD09PXImJihyPXQuVlQ1MDBfVFJBTlNJVElPTl9UQUJMRSk7dmFyIGk9ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl90cmFuc2l0aW9ucz1yLGkuX3BhcnNlU3RhY2s9e3N0YXRlOjAsaGFuZGxlcnM6W10saGFuZGxlclBvczowLHRyYW5zaXRpb246MCxjaHVua1BvczowfSxpLmluaXRpYWxTdGF0ZT0wLGkuY3VycmVudFN0YXRlPWkuaW5pdGlhbFN0YXRlLGkuX3BhcmFtcz1uZXcgYS5QYXJhbXMsaS5fcGFyYW1zLmFkZFBhcmFtKDApLGkuX2NvbGxlY3Q9MCxpLnByZWNlZGluZ0NvZGVwb2ludD0wLGkuX3ByaW50SGFuZGxlckZiPWZ1bmN0aW9uKGUsdCxyKXt9LGkuX2V4ZWN1dGVIYW5kbGVyRmI9ZnVuY3Rpb24oZSl7fSxpLl9jc2lIYW5kbGVyRmI9ZnVuY3Rpb24oZSx0KXt9LGkuX2VzY0hhbmRsZXJGYj1mdW5jdGlvbihlKXt9LGkuX2Vycm9ySGFuZGxlckZiPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxpLl9wcmludEhhbmRsZXI9aS5fcHJpbnRIYW5kbGVyRmIsaS5fZXhlY3V0ZUhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksaS5fY3NpSGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSxpLl9lc2NIYW5kbGVycz1PYmplY3QuY3JlYXRlKG51bGwpLGkuX29zY1BhcnNlcj1uZXcgYy5Pc2NQYXJzZXIsaS5fZGNzUGFyc2VyPW5ldyBsLkRjc1BhcnNlcixpLl9lcnJvckhhbmRsZXI9aS5fZXJyb3JIYW5kbGVyRmIsaS5yZWdpc3RlckVzY0hhbmRsZXIoe2ZpbmFsOlwiXFxcXFwifSwoZnVuY3Rpb24oKXtyZXR1cm4hMH0pKSxpfXJldHVybiBuKHIsZSksci5wcm90b3R5cGUuX2lkZW50aWZpZXI9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD1bNjQsMTI2XSk7dmFyIHI9MDtpZihlLnByZWZpeCl7aWYoZS5wcmVmaXgubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKFwib25seSBvbmUgYnl0ZSBhcyBwcmVmaXggc3VwcG9ydGVkXCIpO2lmKChyPWUucHJlZml4LmNoYXJDb2RlQXQoMCkpJiY2MD5yfHxyPjYzKXRocm93IG5ldyBFcnJvcihcInByZWZpeCBtdXN0IGJlIGluIHJhbmdlIDB4M2MgLi4gMHgzZlwiKX1pZihlLmludGVybWVkaWF0ZXMpe2lmKGUuaW50ZXJtZWRpYXRlcy5sZW5ndGg+Mil0aHJvdyBuZXcgRXJyb3IoXCJvbmx5IHR3byBieXRlcyBhcyBpbnRlcm1lZGlhdGVzIGFyZSBzdXBwb3J0ZWRcIik7Zm9yKHZhciBpPTA7aTxlLmludGVybWVkaWF0ZXMubGVuZ3RoOysraSl7dmFyIG49ZS5pbnRlcm1lZGlhdGVzLmNoYXJDb2RlQXQoaSk7aWYoMzI+bnx8bj40Nyl0aHJvdyBuZXcgRXJyb3IoXCJpbnRlcm1lZGlhdGUgbXVzdCBiZSBpbiByYW5nZSAweDIwIC4uIDB4MmZcIik7cjw8PTgscnw9bn19aWYoMSE9PWUuZmluYWwubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcImZpbmFsIG11c3QgYmUgYSBzaW5nbGUgYnl0ZVwiKTt2YXIgbz1lLmZpbmFsLmNoYXJDb2RlQXQoMCk7aWYodFswXT5vfHxvPnRbMV0pdGhyb3cgbmV3IEVycm9yKFwiZmluYWwgbXVzdCBiZSBpbiByYW5nZSBcIit0WzBdK1wiIC4uIFwiK3RbMV0pO3JldHVybihyPDw9OCl8b30sci5wcm90b3R5cGUuaWRlbnRUb1N0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W107ZTspdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmUpKSxlPj49ODtyZXR1cm4gdC5yZXZlcnNlKCkuam9pbihcIlwiKX0sci5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuX2NzaUhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXhlY3V0ZUhhbmRsZXJzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXNjSGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9vc2NQYXJzZXIuZGlzcG9zZSgpLHRoaXMuX2Rjc1BhcnNlci5kaXNwb3NlKCl9LHIucHJvdG90eXBlLnNldFByaW50SGFuZGxlcj1mdW5jdGlvbihlKXt0aGlzLl9wcmludEhhbmRsZXI9ZX0sci5wcm90b3R5cGUuY2xlYXJQcmludEhhbmRsZXI9ZnVuY3Rpb24oKXt0aGlzLl9wcmludEhhbmRsZXI9dGhpcy5fcHJpbnRIYW5kbGVyRmJ9LHIucHJvdG90eXBlLnJlZ2lzdGVyRXNjSGFuZGxlcj1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX2lkZW50aWZpZXIoZSxbNDgsMTI2XSk7dm9pZCAwPT09dGhpcy5fZXNjSGFuZGxlcnNbcl0mJih0aGlzLl9lc2NIYW5kbGVyc1tyXT1bXSk7dmFyIGk9dGhpcy5fZXNjSGFuZGxlcnNbcl07cmV0dXJuIGkucHVzaCh0KSx7ZGlzcG9zZTpmdW5jdGlvbigpe3ZhciBlPWkuaW5kZXhPZih0KTstMSE9PWUmJmkuc3BsaWNlKGUsMSl9fX0sci5wcm90b3R5cGUuY2xlYXJFc2NIYW5kbGVyPWZ1bmN0aW9uKGUpe3RoaXMuX2VzY0hhbmRsZXJzW3RoaXMuX2lkZW50aWZpZXIoZSxbNDgsMTI2XSldJiZkZWxldGUgdGhpcy5fZXNjSGFuZGxlcnNbdGhpcy5faWRlbnRpZmllcihlLFs0OCwxMjZdKV19LHIucHJvdG90eXBlLnNldEVzY0hhbmRsZXJGYWxsYmFjaz1mdW5jdGlvbihlKXt0aGlzLl9lc2NIYW5kbGVyRmI9ZX0sci5wcm90b3R5cGUuc2V0RXhlY3V0ZUhhbmRsZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLl9leGVjdXRlSGFuZGxlcnNbZS5jaGFyQ29kZUF0KDApXT10fSxyLnByb3RvdHlwZS5jbGVhckV4ZWN1dGVIYW5kbGVyPWZ1bmN0aW9uKGUpe3RoaXMuX2V4ZWN1dGVIYW5kbGVyc1tlLmNoYXJDb2RlQXQoMCldJiZkZWxldGUgdGhpcy5fZXhlY3V0ZUhhbmRsZXJzW2UuY2hhckNvZGVBdCgwKV19LHIucHJvdG90eXBlLnNldEV4ZWN1dGVIYW5kbGVyRmFsbGJhY2s9ZnVuY3Rpb24oZSl7dGhpcy5fZXhlY3V0ZUhhbmRsZXJGYj1lfSxyLnByb3RvdHlwZS5yZWdpc3RlckNzaUhhbmRsZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9pZGVudGlmaWVyKGUpO3ZvaWQgMD09PXRoaXMuX2NzaUhhbmRsZXJzW3JdJiYodGhpcy5fY3NpSGFuZGxlcnNbcl09W10pO3ZhciBpPXRoaXMuX2NzaUhhbmRsZXJzW3JdO3JldHVybiBpLnB1c2godCkse2Rpc3Bvc2U6ZnVuY3Rpb24oKXt2YXIgZT1pLmluZGV4T2YodCk7LTEhPT1lJiZpLnNwbGljZShlLDEpfX19LHIucHJvdG90eXBlLmNsZWFyQ3NpSGFuZGxlcj1mdW5jdGlvbihlKXt0aGlzLl9jc2lIYW5kbGVyc1t0aGlzLl9pZGVudGlmaWVyKGUpXSYmZGVsZXRlIHRoaXMuX2NzaUhhbmRsZXJzW3RoaXMuX2lkZW50aWZpZXIoZSldfSxyLnByb3RvdHlwZS5zZXRDc2lIYW5kbGVyRmFsbGJhY2s9ZnVuY3Rpb24oZSl7dGhpcy5fY3NpSGFuZGxlckZiPWV9LHIucHJvdG90eXBlLnJlZ2lzdGVyRGNzSGFuZGxlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9kY3NQYXJzZXIucmVnaXN0ZXJIYW5kbGVyKHRoaXMuX2lkZW50aWZpZXIoZSksdCl9LHIucHJvdG90eXBlLmNsZWFyRGNzSGFuZGxlcj1mdW5jdGlvbihlKXt0aGlzLl9kY3NQYXJzZXIuY2xlYXJIYW5kbGVyKHRoaXMuX2lkZW50aWZpZXIoZSkpfSxyLnByb3RvdHlwZS5zZXREY3NIYW5kbGVyRmFsbGJhY2s9ZnVuY3Rpb24oZSl7dGhpcy5fZGNzUGFyc2VyLnNldEhhbmRsZXJGYWxsYmFjayhlKX0sci5wcm90b3R5cGUucmVnaXN0ZXJPc2NIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX29zY1BhcnNlci5yZWdpc3RlckhhbmRsZXIoZSx0KX0sci5wcm90b3R5cGUuY2xlYXJPc2NIYW5kbGVyPWZ1bmN0aW9uKGUpe3RoaXMuX29zY1BhcnNlci5jbGVhckhhbmRsZXIoZSl9LHIucHJvdG90eXBlLnNldE9zY0hhbmRsZXJGYWxsYmFjaz1mdW5jdGlvbihlKXt0aGlzLl9vc2NQYXJzZXIuc2V0SGFuZGxlckZhbGxiYWNrKGUpfSxyLnByb3RvdHlwZS5zZXRFcnJvckhhbmRsZXI9ZnVuY3Rpb24oZSl7dGhpcy5fZXJyb3JIYW5kbGVyPWV9LHIucHJvdG90eXBlLmNsZWFyRXJyb3JIYW5kbGVyPWZ1bmN0aW9uKCl7dGhpcy5fZXJyb3JIYW5kbGVyPXRoaXMuX2Vycm9ySGFuZGxlckZifSxyLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuY3VycmVudFN0YXRlPXRoaXMuaW5pdGlhbFN0YXRlLHRoaXMuX29zY1BhcnNlci5yZXNldCgpLHRoaXMuX2Rjc1BhcnNlci5yZXNldCgpLHRoaXMuX3BhcmFtcy5yZXNldCgpLHRoaXMuX3BhcmFtcy5hZGRQYXJhbSgwKSx0aGlzLl9jb2xsZWN0PTAsdGhpcy5wcmVjZWRpbmdDb2RlcG9pbnQ9MCwwIT09dGhpcy5fcGFyc2VTdGFjay5zdGF0ZSYmKHRoaXMuX3BhcnNlU3RhY2suc3RhdGU9Mix0aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJzPVtdKX0sci5wcm90b3R5cGUuX3ByZXNlcnZlU3RhY2s9ZnVuY3Rpb24oZSx0LHIsaSxuKXt0aGlzLl9wYXJzZVN0YWNrLnN0YXRlPWUsdGhpcy5fcGFyc2VTdGFjay5oYW5kbGVycz10LHRoaXMuX3BhcnNlU3RhY2suaGFuZGxlclBvcz1yLHRoaXMuX3BhcnNlU3RhY2sudHJhbnNpdGlvbj1pLHRoaXMuX3BhcnNlU3RhY2suY2h1bmtQb3M9bn0sci5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG49MCxvPTAscz0wO2lmKHRoaXMuX3BhcnNlU3RhY2suc3RhdGUpaWYoMj09PXRoaXMuX3BhcnNlU3RhY2suc3RhdGUpdGhpcy5fcGFyc2VTdGFjay5zdGF0ZT0wLHM9dGhpcy5fcGFyc2VTdGFjay5jaHVua1BvcysxO2Vsc2V7aWYodm9pZCAwPT09cnx8MT09PXRoaXMuX3BhcnNlU3RhY2suc3RhdGUpdGhyb3cgdGhpcy5fcGFyc2VTdGFjay5zdGF0ZT0xLG5ldyBFcnJvcihcImltcHJvcGVyIGNvbnRpbnVhdGlvbiBkdWUgdG8gcHJldmlvdXMgYXN5bmMgaGFuZGxlciwgZ2l2aW5nIHVwIHBhcnNpbmdcIik7dmFyIGE9dGhpcy5fcGFyc2VTdGFjay5oYW5kbGVycyxjPXRoaXMuX3BhcnNlU3RhY2suaGFuZGxlclBvcy0xO3N3aXRjaCh0aGlzLl9wYXJzZVN0YWNrLnN0YXRlKXtjYXNlIDM6aWYoITE9PT1yJiZjPi0xKWZvcig7Yz49MCYmITAhPT0oaT1hW2NdKHRoaXMuX3BhcmFtcykpO2MtLSlpZihpIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fcGFyc2VTdGFjay5oYW5kbGVyUG9zPWMsaTt0aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJzPVtdO2JyZWFrO2Nhc2UgNDppZighMT09PXImJmM+LTEpZm9yKDtjPj0wJiYhMCE9PShpPWFbY10oKSk7Yy0tKWlmKGkgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiB0aGlzLl9wYXJzZVN0YWNrLmhhbmRsZXJQb3M9YyxpO3RoaXMuX3BhcnNlU3RhY2suaGFuZGxlcnM9W107YnJlYWs7Y2FzZSA2OmlmKG49ZVt0aGlzLl9wYXJzZVN0YWNrLmNodW5rUG9zXSxpPXRoaXMuX2Rjc1BhcnNlci51bmhvb2soMjQhPT1uJiYyNiE9PW4scikpcmV0dXJuIGk7Mjc9PT1uJiYodGhpcy5fcGFyc2VTdGFjay50cmFuc2l0aW9ufD0xKSx0aGlzLl9wYXJhbXMucmVzZXQoKSx0aGlzLl9wYXJhbXMuYWRkUGFyYW0oMCksdGhpcy5fY29sbGVjdD0wO2JyZWFrO2Nhc2UgNTppZihuPWVbdGhpcy5fcGFyc2VTdGFjay5jaHVua1Bvc10saT10aGlzLl9vc2NQYXJzZXIuZW5kKDI0IT09biYmMjYhPT1uLHIpKXJldHVybiBpOzI3PT09biYmKHRoaXMuX3BhcnNlU3RhY2sudHJhbnNpdGlvbnw9MSksdGhpcy5fcGFyYW1zLnJlc2V0KCksdGhpcy5fcGFyYW1zLmFkZFBhcmFtKDApLHRoaXMuX2NvbGxlY3Q9MH10aGlzLl9wYXJzZVN0YWNrLnN0YXRlPTAscz10aGlzLl9wYXJzZVN0YWNrLmNodW5rUG9zKzEsdGhpcy5wcmVjZWRpbmdDb2RlcG9pbnQ9MCx0aGlzLmN1cnJlbnRTdGF0ZT0xNSZ0aGlzLl9wYXJzZVN0YWNrLnRyYW5zaXRpb259Zm9yKHZhciBsPXM7bDx0OysrbCl7c3dpdGNoKG49ZVtsXSwobz10aGlzLl90cmFuc2l0aW9ucy50YWJsZVt0aGlzLmN1cnJlbnRTdGF0ZTw8OHwobjwxNjA/bjp1KV0pPj40KXtjYXNlIDI6Zm9yKHZhciBoPWwrMTs7KytoKXtpZihoPj10fHwobj1lW2hdKTwzMnx8bj4xMjYmJm48dSl7dGhpcy5fcHJpbnRIYW5kbGVyKGUsbCxoKSxsPWgtMTticmVha31pZigrK2g+PXR8fChuPWVbaF0pPDMyfHxuPjEyNiYmbjx1KXt0aGlzLl9wcmludEhhbmRsZXIoZSxsLGgpLGw9aC0xO2JyZWFrfWlmKCsraD49dHx8KG49ZVtoXSk8MzJ8fG4+MTI2JiZuPHUpe3RoaXMuX3ByaW50SGFuZGxlcihlLGwsaCksbD1oLTE7YnJlYWt9aWYoKytoPj10fHwobj1lW2hdKTwzMnx8bj4xMjYmJm48dSl7dGhpcy5fcHJpbnRIYW5kbGVyKGUsbCxoKSxsPWgtMTticmVha319YnJlYWs7Y2FzZSAzOnRoaXMuX2V4ZWN1dGVIYW5kbGVyc1tuXT90aGlzLl9leGVjdXRlSGFuZGxlcnNbbl0oKTp0aGlzLl9leGVjdXRlSGFuZGxlckZiKG4pLHRoaXMucHJlY2VkaW5nQ29kZXBvaW50PTA7YnJlYWs7Y2FzZSAwOmJyZWFrO2Nhc2UgMTppZih0aGlzLl9lcnJvckhhbmRsZXIoe3Bvc2l0aW9uOmwsY29kZTpuLGN1cnJlbnRTdGF0ZTp0aGlzLmN1cnJlbnRTdGF0ZSxjb2xsZWN0OnRoaXMuX2NvbGxlY3QscGFyYW1zOnRoaXMuX3BhcmFtcyxhYm9ydDohMX0pLmFib3J0KXJldHVybjticmVhaztjYXNlIDc6Zm9yKHZhciBmPShhPXRoaXMuX2NzaUhhbmRsZXJzW3RoaXMuX2NvbGxlY3Q8PDh8bl0pP2EubGVuZ3RoLTE6LTE7Zj49MCYmITAhPT0oaT1hW2ZdKHRoaXMuX3BhcmFtcykpO2YtLSlpZihpIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fcHJlc2VydmVTdGFjaygzLGEsZixvLGwpLGk7ZjwwJiZ0aGlzLl9jc2lIYW5kbGVyRmIodGhpcy5fY29sbGVjdDw8OHxuLHRoaXMuX3BhcmFtcyksdGhpcy5wcmVjZWRpbmdDb2RlcG9pbnQ9MDticmVhaztjYXNlIDg6ZG97c3dpdGNoKG4pe2Nhc2UgNTk6dGhpcy5fcGFyYW1zLmFkZFBhcmFtKDApO2JyZWFrO2Nhc2UgNTg6dGhpcy5fcGFyYW1zLmFkZFN1YlBhcmFtKC0xKTticmVhaztkZWZhdWx0OnRoaXMuX3BhcmFtcy5hZGREaWdpdChuLTQ4KX19d2hpbGUoKytsPHQmJihuPWVbbF0pPjQ3JiZuPDYwKTtsLS07YnJlYWs7Y2FzZSA5OnRoaXMuX2NvbGxlY3Q8PD04LHRoaXMuX2NvbGxlY3R8PW47YnJlYWs7Y2FzZSAxMDpmb3IodmFyIF89dGhpcy5fZXNjSGFuZGxlcnNbdGhpcy5fY29sbGVjdDw8OHxuXSxkPV8/Xy5sZW5ndGgtMTotMTtkPj0wJiYhMCE9PShpPV9bZF0oKSk7ZC0tKWlmKGkgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiB0aGlzLl9wcmVzZXJ2ZVN0YWNrKDQsXyxkLG8sbCksaTtkPDAmJnRoaXMuX2VzY0hhbmRsZXJGYih0aGlzLl9jb2xsZWN0PDw4fG4pLHRoaXMucHJlY2VkaW5nQ29kZXBvaW50PTA7YnJlYWs7Y2FzZSAxMTp0aGlzLl9wYXJhbXMucmVzZXQoKSx0aGlzLl9wYXJhbXMuYWRkUGFyYW0oMCksdGhpcy5fY29sbGVjdD0wO2JyZWFrO2Nhc2UgMTI6dGhpcy5fZGNzUGFyc2VyLmhvb2sodGhpcy5fY29sbGVjdDw8OHxuLHRoaXMuX3BhcmFtcyk7YnJlYWs7Y2FzZSAxMzpmb3IodmFyIHA9bCsxOzsrK3ApaWYocD49dHx8MjQ9PT0obj1lW3BdKXx8MjY9PT1ufHwyNz09PW58fG4+MTI3JiZuPHUpe3RoaXMuX2Rjc1BhcnNlci5wdXQoZSxsLHApLGw9cC0xO2JyZWFrfWJyZWFrO2Nhc2UgMTQ6aWYoaT10aGlzLl9kY3NQYXJzZXIudW5ob29rKDI0IT09biYmMjYhPT1uKSlyZXR1cm4gdGhpcy5fcHJlc2VydmVTdGFjayg2LFtdLDAsbyxsKSxpOzI3PT09biYmKG98PTEpLHRoaXMuX3BhcmFtcy5yZXNldCgpLHRoaXMuX3BhcmFtcy5hZGRQYXJhbSgwKSx0aGlzLl9jb2xsZWN0PTAsdGhpcy5wcmVjZWRpbmdDb2RlcG9pbnQ9MDticmVhaztjYXNlIDQ6dGhpcy5fb3NjUGFyc2VyLnN0YXJ0KCk7YnJlYWs7Y2FzZSA1OmZvcih2YXIgdj1sKzE7O3YrKylpZih2Pj10fHwobj1lW3ZdKTwzMnx8bj4xMjcmJm48dSl7dGhpcy5fb3NjUGFyc2VyLnB1dChlLGwsdiksbD12LTE7YnJlYWt9YnJlYWs7Y2FzZSA2OmlmKGk9dGhpcy5fb3NjUGFyc2VyLmVuZCgyNCE9PW4mJjI2IT09bikpcmV0dXJuIHRoaXMuX3ByZXNlcnZlU3RhY2soNSxbXSwwLG8sbCksaTsyNz09PW4mJihvfD0xKSx0aGlzLl9wYXJhbXMucmVzZXQoKSx0aGlzLl9wYXJhbXMuYWRkUGFyYW0oMCksdGhpcy5fY29sbGVjdD0wLHRoaXMucHJlY2VkaW5nQ29kZXBvaW50PTB9dGhpcy5jdXJyZW50U3RhdGU9MTUmb319LHJ9KG8uRGlzcG9zYWJsZSk7dC5Fc2NhcGVTZXF1ZW5jZVBhcnNlcj1mfSw2MjQyOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9zY0hhbmRsZXI9dC5Pc2NQYXJzZXI9dm9pZCAwO3ZhciBpPXIoNTc3MCksbj1yKDQ4Miksbz1bXSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuX3N0YXRlPTAsdGhpcy5fYWN0aXZlPW8sdGhpcy5faWQ9LTEsdGhpcy5faGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9oYW5kbGVyRmI9ZnVuY3Rpb24oKXt9LHRoaXMuX3N0YWNrPXtwYXVzZWQ6ITEsbG9vcFBvc2l0aW9uOjAsZmFsbFRocm91Z2g6ITF9fXJldHVybiBlLnByb3RvdHlwZS5yZWdpc3RlckhhbmRsZXI9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10aGlzLl9oYW5kbGVyc1tlXSYmKHRoaXMuX2hhbmRsZXJzW2VdPVtdKTt2YXIgcj10aGlzLl9oYW5kbGVyc1tlXTtyZXR1cm4gci5wdXNoKHQpLHtkaXNwb3NlOmZ1bmN0aW9uKCl7dmFyIGU9ci5pbmRleE9mKHQpOy0xIT09ZSYmci5zcGxpY2UoZSwxKX19fSxlLnByb3RvdHlwZS5jbGVhckhhbmRsZXI9ZnVuY3Rpb24oZSl7dGhpcy5faGFuZGxlcnNbZV0mJmRlbGV0ZSB0aGlzLl9oYW5kbGVyc1tlXX0sZS5wcm90b3R5cGUuc2V0SGFuZGxlckZhbGxiYWNrPWZ1bmN0aW9uKGUpe3RoaXMuX2hhbmRsZXJGYj1lfSxlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5faGFuZGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9oYW5kbGVyRmI9ZnVuY3Rpb24oKXt9LHRoaXMuX2FjdGl2ZT1vfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe2lmKDI9PT10aGlzLl9zdGF0ZSlmb3IodmFyIGU9dGhpcy5fc3RhY2sucGF1c2VkP3RoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbi0xOnRoaXMuX2FjdGl2ZS5sZW5ndGgtMTtlPj0wOy0tZSl0aGlzLl9hY3RpdmVbZV0uZW5kKCExKTt0aGlzLl9zdGFjay5wYXVzZWQ9ITEsdGhpcy5fYWN0aXZlPW8sdGhpcy5faWQ9LTEsdGhpcy5fc3RhdGU9MH0sZS5wcm90b3R5cGUuX3N0YXJ0PWZ1bmN0aW9uKCl7aWYodGhpcy5fYWN0aXZlPXRoaXMuX2hhbmRsZXJzW3RoaXMuX2lkXXx8byx0aGlzLl9hY3RpdmUubGVuZ3RoKWZvcih2YXIgZT10aGlzLl9hY3RpdmUubGVuZ3RoLTE7ZT49MDtlLS0pdGhpcy5fYWN0aXZlW2VdLnN0YXJ0KCk7ZWxzZSB0aGlzLl9oYW5kbGVyRmIodGhpcy5faWQsXCJTVEFSVFwiKX0sZS5wcm90b3R5cGUuX3B1dD1mdW5jdGlvbihlLHQscil7aWYodGhpcy5fYWN0aXZlLmxlbmd0aClmb3IodmFyIGk9dGhpcy5fYWN0aXZlLmxlbmd0aC0xO2k+PTA7aS0tKXRoaXMuX2FjdGl2ZVtpXS5wdXQoZSx0LHIpO2Vsc2UgdGhpcy5faGFuZGxlckZiKHRoaXMuX2lkLFwiUFVUXCIsKDAsbi51dGYzMlRvU3RyaW5nKShlLHQscikpfSxlLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3RoaXMucmVzZXQoKSx0aGlzLl9zdGF0ZT0xfSxlLnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24oZSx0LHIpe2lmKDMhPT10aGlzLl9zdGF0ZSl7aWYoMT09PXRoaXMuX3N0YXRlKWZvcig7dDxyOyl7dmFyIGk9ZVt0KytdO2lmKDU5PT09aSl7dGhpcy5fc3RhdGU9Mix0aGlzLl9zdGFydCgpO2JyZWFrfWlmKGk8NDh8fDU3PGkpcmV0dXJuIHZvaWQodGhpcy5fc3RhdGU9Myk7LTE9PT10aGlzLl9pZCYmKHRoaXMuX2lkPTApLHRoaXMuX2lkPTEwKnRoaXMuX2lkK2ktNDh9Mj09PXRoaXMuX3N0YXRlJiZyLXQ+MCYmdGhpcy5fcHV0KGUsdCxyKX19LGUucHJvdG90eXBlLmVuZD1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PXQmJih0PSEwKSwwIT09dGhpcy5fc3RhdGUpe2lmKDMhPT10aGlzLl9zdGF0ZSlpZigxPT09dGhpcy5fc3RhdGUmJnRoaXMuX3N0YXJ0KCksdGhpcy5fYWN0aXZlLmxlbmd0aCl7dmFyIHI9ITEsaT10aGlzLl9hY3RpdmUubGVuZ3RoLTEsbj0hMTtpZih0aGlzLl9zdGFjay5wYXVzZWQmJihpPXRoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbi0xLHI9dCxuPXRoaXMuX3N0YWNrLmZhbGxUaHJvdWdoLHRoaXMuX3N0YWNrLnBhdXNlZD0hMSksIW4mJiExPT09cil7Zm9yKDtpPj0wJiYhMCE9PShyPXRoaXMuX2FjdGl2ZVtpXS5lbmQoZSkpO2ktLSlpZihyIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gdGhpcy5fc3RhY2sucGF1c2VkPSEwLHRoaXMuX3N0YWNrLmxvb3BQb3NpdGlvbj1pLHRoaXMuX3N0YWNrLmZhbGxUaHJvdWdoPSExLHI7aS0tfWZvcig7aT49MDtpLS0paWYoKHI9dGhpcy5fYWN0aXZlW2ldLmVuZCghMSkpaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiB0aGlzLl9zdGFjay5wYXVzZWQ9ITAsdGhpcy5fc3RhY2subG9vcFBvc2l0aW9uPWksdGhpcy5fc3RhY2suZmFsbFRocm91Z2g9ITAscn1lbHNlIHRoaXMuX2hhbmRsZXJGYih0aGlzLl9pZCxcIkVORFwiLGUpO3RoaXMuX2FjdGl2ZT1vLHRoaXMuX2lkPS0xLHRoaXMuX3N0YXRlPTB9fSxlfSgpO3QuT3NjUGFyc2VyPXM7dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuX2hhbmRsZXI9ZSx0aGlzLl9kYXRhPVwiXCIsdGhpcy5faGl0TGltaXQ9ITF9cmV0dXJuIGUucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSExfSxlLnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX2hpdExpbWl0fHwodGhpcy5fZGF0YSs9KDAsbi51dGYzMlRvU3RyaW5nKShlLHQsciksdGhpcy5fZGF0YS5sZW5ndGg+aS5QQVlMT0FEX0xJTUlUJiYodGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSEwKSl9LGUucHJvdG90eXBlLmVuZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLHI9ITE7aWYodGhpcy5faGl0TGltaXQpcj0hMTtlbHNlIGlmKGUmJihyPXRoaXMuX2hhbmRsZXIodGhpcy5fZGF0YSkpaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiByLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9kYXRhPVwiXCIsdC5faGl0TGltaXQ9ITEsZX0pKTtyZXR1cm4gdGhpcy5fZGF0YT1cIlwiLHRoaXMuX2hpdExpbWl0PSExLHJ9LGV9KCk7dC5Pc2NIYW5kbGVyPWF9LDg3NDI6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlBhcmFtcz12b2lkIDA7dmFyIHI9MjE0NzQ4MzY0NyxpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2lmKHZvaWQgMD09PWUmJihlPTMyKSx2b2lkIDA9PT10JiYodD0zMiksdGhpcy5tYXhMZW5ndGg9ZSx0aGlzLm1heFN1YlBhcmFtc0xlbmd0aD10LHQ+MjU2KXRocm93IG5ldyBFcnJvcihcIm1heFN1YlBhcmFtc0xlbmd0aCBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMjU2XCIpO3RoaXMucGFyYW1zPW5ldyBJbnQzMkFycmF5KGUpLHRoaXMubGVuZ3RoPTAsdGhpcy5fc3ViUGFyYW1zPW5ldyBJbnQzMkFycmF5KHQpLHRoaXMuX3N1YlBhcmFtc0xlbmd0aD0wLHRoaXMuX3N1YlBhcmFtc0lkeD1uZXcgVWludDE2QXJyYXkoZSksdGhpcy5fcmVqZWN0RGlnaXRzPSExLHRoaXMuX3JlamVjdFN1YkRpZ2l0cz0hMSx0aGlzLl9kaWdpdElzU3ViPSExfXJldHVybiBlLmZyb21BcnJheT1mdW5jdGlvbih0KXt2YXIgcj1uZXcgZTtpZighdC5sZW5ndGgpcmV0dXJuIHI7Zm9yKHZhciBpPUFycmF5LmlzQXJyYXkodFswXSk/MTowO2k8dC5sZW5ndGg7KytpKXt2YXIgbj10W2ldO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBvPTA7bzxuLmxlbmd0aDsrK28pci5hZGRTdWJQYXJhbShuW29dKTtlbHNlIHIuYWRkUGFyYW0obil9cmV0dXJuIHJ9LGUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IGUodGhpcy5tYXhMZW5ndGgsdGhpcy5tYXhTdWJQYXJhbXNMZW5ndGgpO3JldHVybiB0LnBhcmFtcy5zZXQodGhpcy5wYXJhbXMpLHQubGVuZ3RoPXRoaXMubGVuZ3RoLHQuX3N1YlBhcmFtcy5zZXQodGhpcy5fc3ViUGFyYW1zKSx0Ll9zdWJQYXJhbXNMZW5ndGg9dGhpcy5fc3ViUGFyYW1zTGVuZ3RoLHQuX3N1YlBhcmFtc0lkeC5zZXQodGhpcy5fc3ViUGFyYW1zSWR4KSx0Ll9yZWplY3REaWdpdHM9dGhpcy5fcmVqZWN0RGlnaXRzLHQuX3JlamVjdFN1YkRpZ2l0cz10aGlzLl9yZWplY3RTdWJEaWdpdHMsdC5fZGlnaXRJc1N1Yj10aGlzLl9kaWdpdElzU3ViLHR9LGUucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8dGhpcy5sZW5ndGg7Kyt0KXtlLnB1c2godGhpcy5wYXJhbXNbdF0pO3ZhciByPXRoaXMuX3N1YlBhcmFtc0lkeFt0XT4+OCxpPTI1NSZ0aGlzLl9zdWJQYXJhbXNJZHhbdF07aS1yPjAmJmUucHVzaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9zdWJQYXJhbXMscixpKSl9cmV0dXJuIGV9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5sZW5ndGg9MCx0aGlzLl9zdWJQYXJhbXNMZW5ndGg9MCx0aGlzLl9yZWplY3REaWdpdHM9ITEsdGhpcy5fcmVqZWN0U3ViRGlnaXRzPSExLHRoaXMuX2RpZ2l0SXNTdWI9ITF9LGUucHJvdG90eXBlLmFkZFBhcmFtPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2RpZ2l0SXNTdWI9ITEsdGhpcy5sZW5ndGg+PXRoaXMubWF4TGVuZ3RoKXRoaXMuX3JlamVjdERpZ2l0cz0hMDtlbHNle2lmKGU8LTEpdGhyb3cgbmV3IEVycm9yKFwidmFsdWVzIGxlc3NlciB0aGFuIC0xIGFyZSBub3QgYWxsb3dlZFwiKTt0aGlzLl9zdWJQYXJhbXNJZHhbdGhpcy5sZW5ndGhdPXRoaXMuX3N1YlBhcmFtc0xlbmd0aDw8OHx0aGlzLl9zdWJQYXJhbXNMZW5ndGgsdGhpcy5wYXJhbXNbdGhpcy5sZW5ndGgrK109ZT5yP3I6ZX19LGUucHJvdG90eXBlLmFkZFN1YlBhcmFtPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2RpZ2l0SXNTdWI9ITAsdGhpcy5sZW5ndGgpaWYodGhpcy5fcmVqZWN0RGlnaXRzfHx0aGlzLl9zdWJQYXJhbXNMZW5ndGg+PXRoaXMubWF4U3ViUGFyYW1zTGVuZ3RoKXRoaXMuX3JlamVjdFN1YkRpZ2l0cz0hMDtlbHNle2lmKGU8LTEpdGhyb3cgbmV3IEVycm9yKFwidmFsdWVzIGxlc3NlciB0aGFuIC0xIGFyZSBub3QgYWxsb3dlZFwiKTt0aGlzLl9zdWJQYXJhbXNbdGhpcy5fc3ViUGFyYW1zTGVuZ3RoKytdPWU+cj9yOmUsdGhpcy5fc3ViUGFyYW1zSWR4W3RoaXMubGVuZ3RoLTFdKyt9fSxlLnByb3RvdHlwZS5oYXNTdWJQYXJhbXM9ZnVuY3Rpb24oZSl7cmV0dXJuKDI1NSZ0aGlzLl9zdWJQYXJhbXNJZHhbZV0pLSh0aGlzLl9zdWJQYXJhbXNJZHhbZV0+PjgpPjB9LGUucHJvdG90eXBlLmdldFN1YlBhcmFtcz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9zdWJQYXJhbXNJZHhbZV0+Pjgscj0yNTUmdGhpcy5fc3ViUGFyYW1zSWR4W2VdO3JldHVybiByLXQ+MD90aGlzLl9zdWJQYXJhbXMuc3ViYXJyYXkodCxyKTpudWxsfSxlLnByb3RvdHlwZS5nZXRTdWJQYXJhbXNBbGw9ZnVuY3Rpb24oKXtmb3IodmFyIGU9e30sdD0wO3Q8dGhpcy5sZW5ndGg7Kyt0KXt2YXIgcj10aGlzLl9zdWJQYXJhbXNJZHhbdF0+PjgsaT0yNTUmdGhpcy5fc3ViUGFyYW1zSWR4W3RdO2ktcj4wJiYoZVt0XT10aGlzLl9zdWJQYXJhbXMuc2xpY2UocixpKSl9cmV0dXJuIGV9LGUucHJvdG90eXBlLmFkZERpZ2l0PWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCEodGhpcy5fcmVqZWN0RGlnaXRzfHwhKHQ9dGhpcy5fZGlnaXRJc1N1Yj90aGlzLl9zdWJQYXJhbXNMZW5ndGg6dGhpcy5sZW5ndGgpfHx0aGlzLl9kaWdpdElzU3ViJiZ0aGlzLl9yZWplY3RTdWJEaWdpdHMpKXt2YXIgaT10aGlzLl9kaWdpdElzU3ViP3RoaXMuX3N1YlBhcmFtczp0aGlzLnBhcmFtcyxuPWlbdC0xXTtpW3QtMV09fm4/TWF0aC5taW4oMTAqbitlLHIpOmV9fSxlfSgpO3QuUGFyYW1zPWl9LDU3NDE6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkFkZG9uTWFuYWdlcj12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5fYWRkb25zPVtdfXJldHVybiBlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuX2FkZG9ucy5sZW5ndGgtMTtlPj0wO2UtLSl0aGlzLl9hZGRvbnNbZV0uaW5zdGFuY2UuZGlzcG9zZSgpfSxlLnByb3RvdHlwZS5sb2FkQWRkb249ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLGk9e2luc3RhbmNlOnQsZGlzcG9zZTp0LmRpc3Bvc2UsaXNEaXNwb3NlZDohMX07dGhpcy5fYWRkb25zLnB1c2goaSksdC5kaXNwb3NlPWZ1bmN0aW9uKCl7cmV0dXJuIHIuX3dyYXBwZWRBZGRvbkRpc3Bvc2UoaSl9LHQuYWN0aXZhdGUoZSl9LGUucHJvdG90eXBlLl93cmFwcGVkQWRkb25EaXNwb3NlPWZ1bmN0aW9uKGUpe2lmKCFlLmlzRGlzcG9zZWQpe2Zvcih2YXIgdD0tMSxyPTA7cjx0aGlzLl9hZGRvbnMubGVuZ3RoO3IrKylpZih0aGlzLl9hZGRvbnNbcl09PT1lKXt0PXI7YnJlYWt9aWYoLTE9PT10KXRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBkaXNwb3NlIGFuIGFkZG9uIHRoYXQgaGFzIG5vdCBiZWVuIGxvYWRlZFwiKTtlLmlzRGlzcG9zZWQ9ITAsZS5kaXNwb3NlLmFwcGx5KGUuaW5zdGFuY2UpLHRoaXMuX2FkZG9ucy5zcGxpY2UodCwxKX19LGV9KCk7dC5BZGRvbk1hbmFnZXI9cn0sODc3MTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5CdWZmZXJBcGlWaWV3PXZvaWQgMDt2YXIgaT1yKDM3ODUpLG49cig1MTEpLG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5fYnVmZmVyPWUsdGhpcy50eXBlPXR9cmV0dXJuIGUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2J1ZmZlcj1lLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImN1cnNvcllcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1ZmZlci55fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImN1cnNvclhcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1ZmZlci54fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcInZpZXdwb3J0WVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnVmZmVyLnlkaXNwfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImJhc2VZXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXIueWJhc2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwibGVuZ3RoXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXIubGluZXMubGVuZ3RofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldExpbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fYnVmZmVyLmxpbmVzLmdldChlKTtpZih0KXJldHVybiBuZXcgaS5CdWZmZXJMaW5lQXBpVmlldyh0KX0sZS5wcm90b3R5cGUuZ2V0TnVsbENlbGw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4uQ2VsbERhdGF9LGV9KCk7dC5CdWZmZXJBcGlWaWV3PW99LDM3ODU6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQnVmZmVyTGluZUFwaVZpZXc9dm9pZCAwO3ZhciBpPXIoNTExKSxuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLl9saW5lPWV9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImlzV3JhcHBlZFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGluZS5pc1dyYXBwZWR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwibGVuZ3RoXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9saW5lLmxlbmd0aH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRDZWxsPWZ1bmN0aW9uKGUsdCl7aWYoIShlPDB8fGU+PXRoaXMuX2xpbmUubGVuZ3RoKSlyZXR1cm4gdD8odGhpcy5fbGluZS5sb2FkQ2VsbChlLHQpLHQpOnRoaXMuX2xpbmUubG9hZENlbGwoZSxuZXcgaS5DZWxsRGF0YSl9LGUucHJvdG90eXBlLnRyYW5zbGF0ZVRvU3RyaW5nPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5fbGluZS50cmFuc2xhdGVUb1N0cmluZyhlLHQscil9LGV9KCk7dC5CdWZmZXJMaW5lQXBpVmlldz1ufSw4Mjg1OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1ZmZlck5hbWVzcGFjZUFwaT12b2lkIDA7dmFyIGk9cig4NzcxKSxuPXIoODQ2MCksbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9dGhpczt0aGlzLl9jb3JlPWUsdGhpcy5fb25CdWZmZXJDaGFuZ2U9bmV3IG4uRXZlbnRFbWl0dGVyLHRoaXMuX25vcm1hbD1uZXcgaS5CdWZmZXJBcGlWaWV3KHRoaXMuX2NvcmUuYnVmZmVycy5ub3JtYWwsXCJub3JtYWxcIiksdGhpcy5fYWx0ZXJuYXRlPW5ldyBpLkJ1ZmZlckFwaVZpZXcodGhpcy5fY29yZS5idWZmZXJzLmFsdCxcImFsdGVybmF0ZVwiKSx0aGlzLl9jb3JlLmJ1ZmZlcnMub25CdWZmZXJBY3RpdmF0ZSgoZnVuY3Rpb24oKXtyZXR1cm4gdC5fb25CdWZmZXJDaGFuZ2UuZmlyZSh0LmFjdGl2ZSl9KSl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uQnVmZmVyQ2hhbmdlXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkJ1ZmZlckNoYW5nZS5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJhY3RpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5fY29yZS5idWZmZXJzLmFjdGl2ZT09PXRoaXMuX2NvcmUuYnVmZmVycy5ub3JtYWwpcmV0dXJuIHRoaXMubm9ybWFsO2lmKHRoaXMuX2NvcmUuYnVmZmVycy5hY3RpdmU9PT10aGlzLl9jb3JlLmJ1ZmZlcnMuYWx0KXJldHVybiB0aGlzLmFsdGVybmF0ZTt0aHJvdyBuZXcgRXJyb3IoXCJBY3RpdmUgYnVmZmVyIGlzIG5laXRoZXIgbm9ybWFsIG5vciBhbHRlcm5hdGVcIil9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwibm9ybWFsXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub3JtYWwuaW5pdCh0aGlzLl9jb3JlLmJ1ZmZlcnMubm9ybWFsKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJhbHRlcm5hdGVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FsdGVybmF0ZS5pbml0KHRoaXMuX2NvcmUuYnVmZmVycy5hbHQpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KCk7dC5CdWZmZXJOYW1lc3BhY2VBcGk9b30sNzk3NTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuUGFyc2VyQXBpPXZvaWQgMDt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fY29yZT1lfXJldHVybiBlLnByb3RvdHlwZS5yZWdpc3RlckNzaUhhbmRsZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fY29yZS5yZWdpc3RlckNzaUhhbmRsZXIoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZS50b0FycmF5KCkpfSkpfSxlLnByb3RvdHlwZS5hZGRDc2lIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmVnaXN0ZXJDc2lIYW5kbGVyKGUsdCl9LGUucHJvdG90eXBlLnJlZ2lzdGVyRGNzSGFuZGxlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9jb3JlLnJlZ2lzdGVyRGNzSGFuZGxlcihlLChmdW5jdGlvbihlLHIpe3JldHVybiB0KGUsci50b0FycmF5KCkpfSkpfSxlLnByb3RvdHlwZS5hZGREY3NIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmVnaXN0ZXJEY3NIYW5kbGVyKGUsdCl9LGUucHJvdG90eXBlLnJlZ2lzdGVyRXNjSGFuZGxlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9jb3JlLnJlZ2lzdGVyRXNjSGFuZGxlcihlLHQpfSxlLnByb3RvdHlwZS5hZGRFc2NIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmVnaXN0ZXJFc2NIYW5kbGVyKGUsdCl9LGUucHJvdG90eXBlLnJlZ2lzdGVyT3NjSGFuZGxlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9jb3JlLnJlZ2lzdGVyT3NjSGFuZGxlcihlLHQpfSxlLnByb3RvdHlwZS5hZGRPc2NIYW5kbGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmVnaXN0ZXJPc2NIYW5kbGVyKGUsdCl9LGV9KCk7dC5QYXJzZXJBcGk9cn0sNzA5MDooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVW5pY29kZUFwaT12b2lkIDA7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuX2NvcmU9ZX1yZXR1cm4gZS5wcm90b3R5cGUucmVnaXN0ZXI9ZnVuY3Rpb24oZSl7dGhpcy5fY29yZS51bmljb2RlU2VydmljZS5yZWdpc3RlcihlKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwidmVyc2lvbnNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvcmUudW5pY29kZVNlcnZpY2UudmVyc2lvbnN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiYWN0aXZlVmVyc2lvblwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29yZS51bmljb2RlU2VydmljZS5hY3RpdmVWZXJzaW9ufSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fY29yZS51bmljb2RlU2VydmljZS5hY3RpdmVWZXJzaW9uPWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oKTt0LlVuaWNvZGVBcGk9cn0sNzQ0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaSxuPXRoaXMmJnRoaXMuX19leHRlbmRzfHwoaT1mdW5jdGlvbihlLHQpe3JldHVybiBpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX0saShlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9aShlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pLG89dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQscixpKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTppO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixpKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShuPWVbYV0pJiYocz0obzwzP24ocyk6bz4zP24odCxyLHMpOm4odCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30scz10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dChyLGksZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkJ1ZmZlclNlcnZpY2U9dC5NSU5JTVVNX1JPV1M9dC5NSU5JTVVNX0NPTFM9dm9pZCAwO3ZhciBhPXIoMjU4NSksYz1yKDUyOTUpLGw9cig4NDYwKSxoPXIoODQ0KTt0Lk1JTklNVU1fQ09MUz0yLHQuTUlOSU1VTV9ST1dTPTE7dmFyIHU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihyKXt2YXIgaT1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX29wdGlvbnNTZXJ2aWNlPXIsaS5pc1VzZXJTY3JvbGxpbmc9ITEsaS5fb25SZXNpemU9bmV3IGwuRXZlbnRFbWl0dGVyLGkuX29uU2Nyb2xsPW5ldyBsLkV2ZW50RW1pdHRlcixpLmNvbHM9TWF0aC5tYXgoci5yYXdPcHRpb25zLmNvbHN8fDAsdC5NSU5JTVVNX0NPTFMpLGkucm93cz1NYXRoLm1heChyLnJhd09wdGlvbnMucm93c3x8MCx0Lk1JTklNVU1fUk9XUyksaS5idWZmZXJzPW5ldyBjLkJ1ZmZlclNldChyLGkpLGl9cmV0dXJuIG4ocixlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoci5wcm90b3R5cGUsXCJvblJlc2l6ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25SZXNpemUuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLFwib25TY3JvbGxcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uU2Nyb2xsLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLnByb3RvdHlwZSxcImJ1ZmZlclwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5idWZmZXJzLmFjdGl2ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxyLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuZGlzcG9zZS5jYWxsKHRoaXMpLHRoaXMuYnVmZmVycy5kaXNwb3NlKCl9LHIucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlLHQpe3RoaXMuY29scz1lLHRoaXMucm93cz10LHRoaXMuYnVmZmVycy5yZXNpemUoZSx0KSx0aGlzLmJ1ZmZlcnMuc2V0dXBUYWJTdG9wcyh0aGlzLmNvbHMpLHRoaXMuX29uUmVzaXplLmZpcmUoe2NvbHM6ZSxyb3dzOnR9KX0sci5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmJ1ZmZlcnMucmVzZXQoKSx0aGlzLmlzVXNlclNjcm9sbGluZz0hMX0sci5wcm90b3R5cGUuc2Nyb2xsPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciByLGk9dGhpcy5idWZmZXI7KHI9dGhpcy5fY2FjaGVkQmxhbmtMaW5lKSYmci5sZW5ndGg9PT10aGlzLmNvbHMmJnIuZ2V0RmcoMCk9PT1lLmZnJiZyLmdldEJnKDApPT09ZS5iZ3x8KHI9aS5nZXRCbGFua0xpbmUoZSx0KSx0aGlzLl9jYWNoZWRCbGFua0xpbmU9ciksci5pc1dyYXBwZWQ9dDt2YXIgbj1pLnliYXNlK2kuc2Nyb2xsVG9wLG89aS55YmFzZStpLnNjcm9sbEJvdHRvbTtpZigwPT09aS5zY3JvbGxUb3Ape3ZhciBzPWkubGluZXMuaXNGdWxsO289PT1pLmxpbmVzLmxlbmd0aC0xP3M/aS5saW5lcy5yZWN5Y2xlKCkuY29weUZyb20ocik6aS5saW5lcy5wdXNoKHIuY2xvbmUoKSk6aS5saW5lcy5zcGxpY2UobysxLDAsci5jbG9uZSgpKSxzP3RoaXMuaXNVc2VyU2Nyb2xsaW5nJiYoaS55ZGlzcD1NYXRoLm1heChpLnlkaXNwLTEsMCkpOihpLnliYXNlKyssdGhpcy5pc1VzZXJTY3JvbGxpbmd8fGkueWRpc3ArKyl9ZWxzZXt2YXIgYT1vLW4rMTtpLmxpbmVzLnNoaWZ0RWxlbWVudHMobisxLGEtMSwtMSksaS5saW5lcy5zZXQobyxyLmNsb25lKCkpfXRoaXMuaXNVc2VyU2Nyb2xsaW5nfHwoaS55ZGlzcD1pLnliYXNlKSx0aGlzLl9vblNjcm9sbC5maXJlKGkueWRpc3ApfSxyLnByb3RvdHlwZS5zY3JvbGxMaW5lcz1mdW5jdGlvbihlLHQscil7dmFyIGk9dGhpcy5idWZmZXI7aWYoZTwwKXtpZigwPT09aS55ZGlzcClyZXR1cm47dGhpcy5pc1VzZXJTY3JvbGxpbmc9ITB9ZWxzZSBlK2kueWRpc3A+PWkueWJhc2UmJih0aGlzLmlzVXNlclNjcm9sbGluZz0hMSk7dmFyIG49aS55ZGlzcDtpLnlkaXNwPU1hdGgubWF4KE1hdGgubWluKGkueWRpc3ArZSxpLnliYXNlKSwwKSxuIT09aS55ZGlzcCYmKHR8fHRoaXMuX29uU2Nyb2xsLmZpcmUoaS55ZGlzcCkpfSxyLnByb3RvdHlwZS5zY3JvbGxQYWdlcz1mdW5jdGlvbihlKXt0aGlzLnNjcm9sbExpbmVzKGUqKHRoaXMucm93cy0xKSl9LHIucHJvdG90eXBlLnNjcm9sbFRvVG9wPWZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxMaW5lcygtdGhpcy5idWZmZXIueWRpc3ApfSxyLnByb3RvdHlwZS5zY3JvbGxUb0JvdHRvbT1mdW5jdGlvbigpe3RoaXMuc2Nyb2xsTGluZXModGhpcy5idWZmZXIueWJhc2UtdGhpcy5idWZmZXIueWRpc3ApfSxyLnByb3RvdHlwZS5zY3JvbGxUb0xpbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS10aGlzLmJ1ZmZlci55ZGlzcDswIT09dCYmdGhpcy5zY3JvbGxMaW5lcyh0KX0sbyhbcygwLGEuSU9wdGlvbnNTZXJ2aWNlKV0scil9KGguRGlzcG9zYWJsZSk7dC5CdWZmZXJTZXJ2aWNlPXV9LDc5OTQ6KGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNoYXJzZXRTZXJ2aWNlPXZvaWQgMDt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLmdsZXZlbD0wLHRoaXMuX2NoYXJzZXRzPVtdfXJldHVybiBlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuY2hhcnNldD12b2lkIDAsdGhpcy5fY2hhcnNldHM9W10sdGhpcy5nbGV2ZWw9MH0sZS5wcm90b3R5cGUuc2V0Z0xldmVsPWZ1bmN0aW9uKGUpe3RoaXMuZ2xldmVsPWUsdGhpcy5jaGFyc2V0PXRoaXMuX2NoYXJzZXRzW2VdfSxlLnByb3RvdHlwZS5zZXRnQ2hhcnNldD1mdW5jdGlvbihlLHQpe3RoaXMuX2NoYXJzZXRzW2VdPXQsdGhpcy5nbGV2ZWw9PT1lJiYodGhpcy5jaGFyc2V0PXQpfSxlfSgpO3QuQ2hhcnNldFNlcnZpY2U9cn0sMTc1MzpmdW5jdGlvbihlLHQscil7dmFyIGk9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQscixpKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTppO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixpKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShuPWVbYV0pJiYocz0obzwzP24ocyk6bz4zP24odCxyLHMpOm4odCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30sbj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dChyLGksZSl9fSxvPXRoaXMmJnRoaXMuX192YWx1ZXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLHI9dCYmZVt0XSxpPTA7aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKGUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aClyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBlJiZpPj1lLmxlbmd0aCYmKGU9dm9pZCAwKSx7dmFsdWU6ZSYmZVtpKytdLGRvbmU6IWV9fX07dGhyb3cgbmV3IFR5cGVFcnJvcih0P1wiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIjpcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29yZU1vdXNlU2VydmljZT12b2lkIDA7dmFyIHM9cigyNTg1KSxhPXIoODQ2MCksYz17Tk9ORTp7ZXZlbnRzOjAscmVzdHJpY3Q6ZnVuY3Rpb24oKXtyZXR1cm4hMX19LFgxMDp7ZXZlbnRzOjEscmVzdHJpY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIDQhPT1lLmJ1dHRvbiYmMT09PWUuYWN0aW9uJiYoZS5jdHJsPSExLGUuYWx0PSExLGUuc2hpZnQ9ITEsITApfX0sVlQyMDA6e2V2ZW50czoxOSxyZXN0cmljdDpmdW5jdGlvbihlKXtyZXR1cm4gMzIhPT1lLmFjdGlvbn19LERSQUc6e2V2ZW50czoyMyxyZXN0cmljdDpmdW5jdGlvbihlKXtyZXR1cm4gMzIhPT1lLmFjdGlvbnx8MyE9PWUuYnV0dG9ufX0sQU5ZOntldmVudHM6MzEscmVzdHJpY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuITB9fX07ZnVuY3Rpb24gbChlLHQpe3ZhciByPShlLmN0cmw/MTY6MCl8KGUuc2hpZnQ/NDowKXwoZS5hbHQ/ODowKTtyZXR1cm4gND09PWUuYnV0dG9uPyhyfD02NCxyfD1lLmFjdGlvbik6KHJ8PTMmZS5idXR0b24sNCZlLmJ1dHRvbiYmKHJ8PTY0KSw4JmUuYnV0dG9uJiYocnw9MTI4KSwzMj09PWUuYWN0aW9uP3J8PTMyOjAhPT1lLmFjdGlvbnx8dHx8KHJ8PTMpKSxyfXZhciBoPVN0cmluZy5mcm9tQ2hhckNvZGUsdT17REVGQVVMVDpmdW5jdGlvbihlKXt2YXIgdD1bbChlLCExKSszMixlLmNvbCszMixlLnJvdyszMl07cmV0dXJuIHRbMF0+MjU1fHx0WzFdPjI1NXx8dFsyXT4yNTU/XCJcIjpcIlx1MDAxYltNXCIraCh0WzBdKStoKHRbMV0pK2godFsyXSl9LFNHUjpmdW5jdGlvbihlKXt2YXIgdD0wPT09ZS5hY3Rpb24mJjQhPT1lLmJ1dHRvbj9cIm1cIjpcIk1cIjtyZXR1cm5cIlx1MDAxYls8XCIrbChlLCEwKStcIjtcIitlLmNvbCtcIjtcIitlLnJvdyt0fX0sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgcixpLG4sczt0aGlzLl9idWZmZXJTZXJ2aWNlPWUsdGhpcy5fY29yZVNlcnZpY2U9dCx0aGlzLl9wcm90b2NvbHM9e30sdGhpcy5fZW5jb2RpbmdzPXt9LHRoaXMuX2FjdGl2ZVByb3RvY29sPVwiXCIsdGhpcy5fYWN0aXZlRW5jb2Rpbmc9XCJcIix0aGlzLl9vblByb3RvY29sQ2hhbmdlPW5ldyBhLkV2ZW50RW1pdHRlcix0aGlzLl9sYXN0RXZlbnQ9bnVsbDt0cnl7Zm9yKHZhciBsPW8oT2JqZWN0LmtleXMoYykpLGg9bC5uZXh0KCk7IWguZG9uZTtoPWwubmV4dCgpKXt2YXIgZj1oLnZhbHVlO3RoaXMuYWRkUHJvdG9jb2woZixjW2ZdKX19Y2F0Y2goZSl7cj17ZXJyb3I6ZX19ZmluYWxseXt0cnl7aCYmIWguZG9uZSYmKGk9bC5yZXR1cm4pJiZpLmNhbGwobCl9ZmluYWxseXtpZihyKXRocm93IHIuZXJyb3J9fXRyeXtmb3IodmFyIF89byhPYmplY3Qua2V5cyh1KSksZD1fLm5leHQoKTshZC5kb25lO2Q9Xy5uZXh0KCkpe3ZhciBwPWQudmFsdWU7dGhpcy5hZGRFbmNvZGluZyhwLHVbcF0pfX1jYXRjaChlKXtuPXtlcnJvcjplfX1maW5hbGx5e3RyeXtkJiYhZC5kb25lJiYocz1fLnJldHVybikmJnMuY2FsbChfKX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19dGhpcy5yZXNldCgpfXJldHVybiBlLnByb3RvdHlwZS5hZGRQcm90b2NvbD1mdW5jdGlvbihlLHQpe3RoaXMuX3Byb3RvY29sc1tlXT10fSxlLnByb3RvdHlwZS5hZGRFbmNvZGluZz1mdW5jdGlvbihlLHQpe3RoaXMuX2VuY29kaW5nc1tlXT10fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJhY3RpdmVQcm90b2NvbFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWN0aXZlUHJvdG9jb2x9LHNldDpmdW5jdGlvbihlKXtpZighdGhpcy5fcHJvdG9jb2xzW2VdKXRocm93IG5ldyBFcnJvcigndW5rbm93biBwcm90b2NvbCBcIicrZSsnXCInKTt0aGlzLl9hY3RpdmVQcm90b2NvbD1lLHRoaXMuX29uUHJvdG9jb2xDaGFuZ2UuZmlyZSh0aGlzLl9wcm90b2NvbHNbZV0uZXZlbnRzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJhcmVNb3VzZUV2ZW50c0FjdGl2ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMuX3Byb3RvY29sc1t0aGlzLl9hY3RpdmVQcm90b2NvbF0uZXZlbnRzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImFjdGl2ZUVuY29kaW5nXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmVFbmNvZGluZ30sc2V0OmZ1bmN0aW9uKGUpe2lmKCF0aGlzLl9lbmNvZGluZ3NbZV0pdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGVuY29kaW5nIFwiJytlKydcIicpO3RoaXMuX2FjdGl2ZUVuY29kaW5nPWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZVByb3RvY29sPVwiTk9ORVwiLHRoaXMuYWN0aXZlRW5jb2Rpbmc9XCJERUZBVUxUXCIsdGhpcy5fbGFzdEV2ZW50PW51bGx9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIm9uUHJvdG9jb2xDaGFuZ2VcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uUHJvdG9jb2xDaGFuZ2UuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUudHJpZ2dlck1vdXNlRXZlbnQ9ZnVuY3Rpb24oZSl7aWYoZS5jb2w8MHx8ZS5jb2w+PXRoaXMuX2J1ZmZlclNlcnZpY2UuY29sc3x8ZS5yb3c8MHx8ZS5yb3c+PXRoaXMuX2J1ZmZlclNlcnZpY2Uucm93cylyZXR1cm4hMTtpZig0PT09ZS5idXR0b24mJjMyPT09ZS5hY3Rpb24pcmV0dXJuITE7aWYoMz09PWUuYnV0dG9uJiYzMiE9PWUuYWN0aW9uKXJldHVybiExO2lmKDQhPT1lLmJ1dHRvbiYmKDI9PT1lLmFjdGlvbnx8Mz09PWUuYWN0aW9uKSlyZXR1cm4hMTtpZihlLmNvbCsrLGUucm93KyssMzI9PT1lLmFjdGlvbiYmdGhpcy5fbGFzdEV2ZW50JiZ0aGlzLl9jb21wYXJlRXZlbnRzKHRoaXMuX2xhc3RFdmVudCxlKSlyZXR1cm4hMTtpZighdGhpcy5fcHJvdG9jb2xzW3RoaXMuX2FjdGl2ZVByb3RvY29sXS5yZXN0cmljdChlKSlyZXR1cm4hMTt2YXIgdD10aGlzLl9lbmNvZGluZ3NbdGhpcy5fYWN0aXZlRW5jb2RpbmddKGUpO3JldHVybiB0JiYoXCJERUZBVUxUXCI9PT10aGlzLl9hY3RpdmVFbmNvZGluZz90aGlzLl9jb3JlU2VydmljZS50cmlnZ2VyQmluYXJ5RXZlbnQodCk6dGhpcy5fY29yZVNlcnZpY2UudHJpZ2dlckRhdGFFdmVudCh0LCEwKSksdGhpcy5fbGFzdEV2ZW50PWUsITB9LGUucHJvdG90eXBlLmV4cGxhaW5FdmVudHM9ZnVuY3Rpb24oZSl7cmV0dXJue2Rvd246ISEoMSZlKSx1cDohISgyJmUpLGRyYWc6ISEoNCZlKSxtb3ZlOiEhKDgmZSksd2hlZWw6ISEoMTYmZSl9fSxlLnByb3RvdHlwZS5fY29tcGFyZUV2ZW50cz1mdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbD09PXQuY29sJiZlLnJvdz09PXQucm93JiZlLmJ1dHRvbj09PXQuYnV0dG9uJiZlLmFjdGlvbj09PXQuYWN0aW9uJiZlLmN0cmw9PT10LmN0cmwmJmUuYWx0PT09dC5hbHQmJmUuc2hpZnQ9PT10LnNoaWZ0fSxpKFtuKDAscy5JQnVmZmVyU2VydmljZSksbigxLHMuSUNvcmVTZXJ2aWNlKV0sZSl9KCk7dC5Db3JlTW91c2VTZXJ2aWNlPWZ9LDY5NzU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG49dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGk9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pfSxpKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1pKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KTooci5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IHIpfSksbz10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBuLG89YXJndW1lbnRzLmxlbmd0aCxzPW88Mz90Om51bGw9PT1pP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpOmk7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxyLGkpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKG49ZVthXSkmJihzPShvPDM/bihzKTpvPjM/bih0LHIscyk6bih0LHIpKXx8cyk7cmV0dXJuIG8+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixzKSxzfSxzPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocixpKXt0KHIsaSxlKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29yZVNlcnZpY2U9dm9pZCAwO3ZhciBhPXIoMjU4NSksYz1yKDg0NjApLGw9cigxNDM5KSxoPXIoODQ0KSx1PU9iamVjdC5mcmVlemUoe2luc2VydE1vZGU6ITF9KSxmPU9iamVjdC5mcmVlemUoe2FwcGxpY2F0aW9uQ3Vyc29yS2V5czohMSxhcHBsaWNhdGlvbktleXBhZDohMSxicmFja2V0ZWRQYXN0ZU1vZGU6ITEsb3JpZ2luOiExLHJldmVyc2VXcmFwYXJvdW5kOiExLHNlbmRGb2N1czohMSx3cmFwYXJvdW5kOiEwfSksXz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQscixpLG4pe3ZhciBvPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5fYnVmZmVyU2VydmljZT1yLG8uX2xvZ1NlcnZpY2U9aSxvLl9vcHRpb25zU2VydmljZT1uLG8uaXNDdXJzb3JJbml0aWFsaXplZD0hMSxvLmlzQ3Vyc29ySGlkZGVuPSExLG8uX29uRGF0YT1vLnJlZ2lzdGVyKG5ldyBjLkV2ZW50RW1pdHRlciksby5fb25Vc2VySW5wdXQ9by5yZWdpc3RlcihuZXcgYy5FdmVudEVtaXR0ZXIpLG8uX29uQmluYXJ5PW8ucmVnaXN0ZXIobmV3IGMuRXZlbnRFbWl0dGVyKSxvLl9zY3JvbGxUb0JvdHRvbT10LG8ucmVnaXN0ZXIoe2Rpc3Bvc2U6ZnVuY3Rpb24oKXtyZXR1cm4gby5fc2Nyb2xsVG9Cb3R0b209dm9pZCAwfX0pLG8ubW9kZXM9KDAsbC5jbG9uZSkodSksby5kZWNQcml2YXRlTW9kZXM9KDAsbC5jbG9uZSkoZiksb31yZXR1cm4gbih0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uRGF0YVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25EYXRhLmV2ZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uVXNlcklucHV0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblVzZXJJbnB1dC5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJvbkJpbmFyeVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25CaW5hcnkuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLm1vZGVzPSgwLGwuY2xvbmUpKHUpLHRoaXMuZGVjUHJpdmF0ZU1vZGVzPSgwLGwuY2xvbmUpKGYpfSx0LnByb3RvdHlwZS50cmlnZ2VyRGF0YUV2ZW50PWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9ITEpLCF0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmRpc2FibGVTdGRpbil7dmFyIHI9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXI7ci55YmFzZSE9PXIueWRpc3AmJnRoaXMuX3Njcm9sbFRvQm90dG9tKCksdCYmdGhpcy5fb25Vc2VySW5wdXQuZmlyZSgpLHRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoJ3NlbmRpbmcgZGF0YSBcIicrZSsnXCInLChmdW5jdGlvbigpe3JldHVybiBlLnNwbGl0KFwiXCIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckNvZGVBdCgwKX0pKX0pKSx0aGlzLl9vbkRhdGEuZmlyZShlKX19LHQucHJvdG90eXBlLnRyaWdnZXJCaW5hcnlFdmVudD1mdW5jdGlvbihlKXt0aGlzLl9vcHRpb25zU2VydmljZS5yYXdPcHRpb25zLmRpc2FibGVTdGRpbnx8KHRoaXMuX2xvZ1NlcnZpY2UuZGVidWcoJ3NlbmRpbmcgYmluYXJ5IFwiJytlKydcIicsKGZ1bmN0aW9uKCl7cmV0dXJuIGUuc3BsaXQoXCJcIikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGFyQ29kZUF0KDApfSkpfSkpLHRoaXMuX29uQmluYXJ5LmZpcmUoZSkpfSxvKFtzKDEsYS5JQnVmZmVyU2VydmljZSkscygyLGEuSUxvZ1NlcnZpY2UpLHMoMyxhLklPcHRpb25zU2VydmljZSldLHQpfShoLkRpc3Bvc2FibGUpO3QuQ29yZVNlcnZpY2U9X30sOTA3NDpmdW5jdGlvbihlLHQscil7dmFyIGksbj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9LGkoZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWkoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KSxvPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGUsdCl7dmFyIHIsaSxuLG8scz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZuWzBdKXRocm93IG5bMV07cmV0dXJuIG5bMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDphKDApLHRocm93OmEoMSkscmV0dXJuOmEoMil9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKG9bU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbztmdW5jdGlvbiBhKG8pe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24obyl7aWYocil0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO3M7KXRyeXtpZihyPTEsaSYmKG49MiZvWzBdP2kucmV0dXJuOm9bMF0/aS50aHJvd3x8KChuPWkucmV0dXJuKSYmbi5jYWxsKGkpLDApOmkubmV4dCkmJiEobj1uLmNhbGwoaSxvWzFdKSkuZG9uZSlyZXR1cm4gbjtzd2l0Y2goaT0wLG4mJihvPVsyJm9bMF0sbi52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6bj1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gcy5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTpzLmxhYmVsKyssaT1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPXMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKG49KG49cy50cnlzKS5sZW5ndGg+MCYmbltuLmxlbmd0aC0xXSl8fDYhPT1vWzBdJiYyIT09b1swXSkpe3M9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFufHxvWzFdPm5bMF0mJm9bMV08blszXSkpe3MubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmcy5sYWJlbDxuWzFdKXtzLmxhYmVsPW5bMV0sbj1vO2JyZWFrfWlmKG4mJnMubGFiZWw8blsyXSl7cy5sYWJlbD1uWzJdLHMub3BzLnB1c2gobyk7YnJlYWt9blsyXSYmcy5vcHMucG9wKCkscy50cnlzLnBvcCgpO2NvbnRpbnVlfW89dC5jYWxsKGUscyl9Y2F0Y2goZSl7bz1bNixlXSxpPTB9ZmluYWxseXtyPW49MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0oW28sYV0pfX19LHM9dGhpcyYmdGhpcy5fX3ZhbHVlc3x8ZnVuY3Rpb24oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Iscj10JiZlW3RdLGk9MDtpZihyKXJldHVybiByLmNhbGwoZSk7aWYoZSYmXCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUmJmk+PWUubGVuZ3RoJiYoZT12b2lkIDApLHt2YWx1ZTplJiZlW2krK10sZG9uZTohZX19fTt0aHJvdyBuZXcgVHlwZUVycm9yKHQ/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5EZWNvcmF0aW9uU2VydmljZT12b2lkIDA7dmFyIGE9cig4MDU1KSxjPXIoODQ2MCksbD1yKDg0NCksaD1yKDYxMDYpLHU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciB0PWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gdC5fZGVjb3JhdGlvbnM9bmV3IGguU29ydGVkTGlzdCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFya2VyLmxpbmV9KSksdC5fb25EZWNvcmF0aW9uUmVnaXN0ZXJlZD10LnJlZ2lzdGVyKG5ldyBjLkV2ZW50RW1pdHRlciksdC5fb25EZWNvcmF0aW9uUmVtb3ZlZD10LnJlZ2lzdGVyKG5ldyBjLkV2ZW50RW1pdHRlciksdH1yZXR1cm4gbih0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcIm9uRGVjb3JhdGlvblJlZ2lzdGVyZWRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uRGVjb3JhdGlvblJlZ2lzdGVyZWQuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFwib25EZWNvcmF0aW9uUmVtb3ZlZFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25EZWNvcmF0aW9uUmVtb3ZlZC5ldmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJkZWNvcmF0aW9uc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVjb3JhdGlvbnMudmFsdWVzKCl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUucmVnaXN0ZXJEZWNvcmF0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoIWUubWFya2VyLmlzRGlzcG9zZWQpe3ZhciByPW5ldyBmKGUpO2lmKHIpe3ZhciBpPXIubWFya2VyLm9uRGlzcG9zZSgoZnVuY3Rpb24oKXtyZXR1cm4gci5kaXNwb3NlKCl9KSk7ci5vbkRpc3Bvc2UoKGZ1bmN0aW9uKCl7ciYmKHQuX2RlY29yYXRpb25zLmRlbGV0ZShyKSYmdC5fb25EZWNvcmF0aW9uUmVtb3ZlZC5maXJlKHIpLGkuZGlzcG9zZSgpKX0pKSx0aGlzLl9kZWNvcmF0aW9ucy5pbnNlcnQociksdGhpcy5fb25EZWNvcmF0aW9uUmVnaXN0ZXJlZC5maXJlKHIpfXJldHVybiByfX0sdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt2YXIgZSx0O3RyeXtmb3IodmFyIHI9cyh0aGlzLl9kZWNvcmF0aW9ucy52YWx1ZXMoKSksaT1yLm5leHQoKTshaS5kb25lO2k9ci5uZXh0KCkpaS52YWx1ZS5kaXNwb3NlKCl9Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7aSYmIWkuZG9uZSYmKHQ9ci5yZXR1cm4pJiZ0LmNhbGwocil9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fXRoaXMuX2RlY29yYXRpb25zLmNsZWFyKCl9LHQucHJvdG90eXBlLmdldERlY29yYXRpb25zQXRMaW5lPWZ1bmN0aW9uKGUpe3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKHQpe3JldHVyblsyLHRoaXMuX2RlY29yYXRpb25zLmdldEtleUl0ZXJhdG9yKGUpXX0pKX0sdC5wcm90b3R5cGUuZ2V0RGVjb3JhdGlvbnNBdENlbGw9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG4sYSxjLGwsaCx1LGYsXyxkLHA7cmV0dXJuIG8odGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDppPTAsbj0wLG8ubGFiZWw9MTtjYXNlIDE6by50cnlzLnB1c2goWzEsNiw3LDhdKSxhPXModGhpcy5fZGVjb3JhdGlvbnMuZ2V0S2V5SXRlcmF0b3IodCkpLGM9YS5uZXh0KCksby5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gYy5kb25lP1szLDVdOihsPWMudmFsdWUsaT1udWxsIT09KF89bC5vcHRpb25zLngpJiZ2b2lkIDAhPT1fP186MCxuPWkrKG51bGwhPT0oZD1sLm9wdGlvbnMud2lkdGgpJiZ2b2lkIDAhPT1kP2Q6MSksIShlPj1pJiZlPG4pfHxyJiYobnVsbCE9PShwPWwub3B0aW9ucy5sYXllcikmJnZvaWQgMCE9PXA/cDpcImJvdHRvbVwiKSE9PXI/WzMsNF06WzQsbF0pO2Nhc2UgMzpvLnNlbnQoKSxvLmxhYmVsPTQ7Y2FzZSA0OnJldHVybiBjPWEubmV4dCgpLFszLDJdO2Nhc2UgNTpyZXR1cm5bMyw4XTtjYXNlIDY6cmV0dXJuIGg9by5zZW50KCksdT17ZXJyb3I6aH0sWzMsOF07Y2FzZSA3OnRyeXtjJiYhYy5kb25lJiYoZj1hLnJldHVybikmJmYuY2FsbChhKX1maW5hbGx5e2lmKHUpdGhyb3cgdS5lcnJvcn1yZXR1cm5bN107Y2FzZSA4OnJldHVyblsyXX19KSl9LHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt2YXIgZSx0O3RyeXtmb3IodmFyIHI9cyh0aGlzLl9kZWNvcmF0aW9ucy52YWx1ZXMoKSksaT1yLm5leHQoKTshaS5kb25lO2k9ci5uZXh0KCkpe3ZhciBuPWkudmFsdWU7dGhpcy5fb25EZWNvcmF0aW9uUmVtb3ZlZC5maXJlKG4pfX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYodD1yLnJldHVybikmJnQuY2FsbChyKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19dGhpcy5yZXNldCgpfSx0fShsLkRpc3Bvc2FibGUpO3QuRGVjb3JhdGlvblNlcnZpY2U9dTt2YXIgZj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5vcHRpb25zPXQsci5pc0Rpc3Bvc2VkPSExLHIub25SZW5kZXJFbWl0dGVyPXIucmVnaXN0ZXIobmV3IGMuRXZlbnRFbWl0dGVyKSxyLm9uUmVuZGVyPXIub25SZW5kZXJFbWl0dGVyLmV2ZW50LHIuX29uRGlzcG9zZT1yLnJlZ2lzdGVyKG5ldyBjLkV2ZW50RW1pdHRlciksci5vbkRpc3Bvc2U9ci5fb25EaXNwb3NlLmV2ZW50LHIuX2NhY2hlZEJnPW51bGwsci5fY2FjaGVkRmc9bnVsbCxyLm1hcmtlcj10Lm1hcmtlcixyLm9wdGlvbnMub3ZlcnZpZXdSdWxlck9wdGlvbnMmJiFyLm9wdGlvbnMub3ZlcnZpZXdSdWxlck9wdGlvbnMucG9zaXRpb24mJihyLm9wdGlvbnMub3ZlcnZpZXdSdWxlck9wdGlvbnMucG9zaXRpb249XCJmdWxsXCIpLHJ9cmV0dXJuIG4odCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJiYWNrZ3JvdW5kQ29sb3JSR0JcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT10aGlzLl9jYWNoZWRCZyYmKHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3I/dGhpcy5fY2FjaGVkQmc9YS5jc3MudG9Db2xvcih0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yKTp0aGlzLl9jYWNoZWRCZz12b2lkIDApLHRoaXMuX2NhY2hlZEJnfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImZvcmVncm91bmRDb2xvclJHQlwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09PXRoaXMuX2NhY2hlZEZnJiYodGhpcy5vcHRpb25zLmZvcmVncm91bmRDb2xvcj90aGlzLl9jYWNoZWRGZz1hLmNzcy50b0NvbG9yKHRoaXMub3B0aW9ucy5mb3JlZ3JvdW5kQ29sb3IpOnRoaXMuX2NhY2hlZEZnPXZvaWQgMCksdGhpcy5fY2FjaGVkRmd9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuX2lzRGlzcG9zZWR8fCh0aGlzLl9pc0Rpc3Bvc2VkPSEwLHRoaXMuX29uRGlzcG9zZS5maXJlKCksZS5wcm90b3R5cGUuZGlzcG9zZS5jYWxsKHRoaXMpKX0sdH0obC5EaXNwb3NhYmxlKX0sMzczMDpmdW5jdGlvbihlLHQscil7dmFyIGk9dGhpcyYmdGhpcy5fX2RlY29yYXRlfHxmdW5jdGlvbihlLHQscixpKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTppO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixpKTtlbHNlIGZvcih2YXIgYT1lLmxlbmd0aC0xO2E+PTA7YS0tKShuPWVbYV0pJiYocz0obzwzP24ocyk6bz4zP24odCxyLHMpOm4odCxyKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30sbj10aGlzJiZ0aGlzLl9fcGFyYW18fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7dChyLGksZSl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkRpcnR5Um93U2VydmljZT12b2lkIDA7dmFyIG89cigyNTg1KSxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLl9idWZmZXJTZXJ2aWNlPWUsdGhpcy5jbGVhclJhbmdlKCl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcInN0YXJ0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGFydH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJlbmRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuZH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jbGVhclJhbmdlPWZ1bmN0aW9uKCl7dGhpcy5fc3RhcnQ9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueSx0aGlzLl9lbmQ9dGhpcy5fYnVmZmVyU2VydmljZS5idWZmZXIueX0sZS5wcm90b3R5cGUubWFya0RpcnR5PWZ1bmN0aW9uKGUpe2U8dGhpcy5fc3RhcnQ/dGhpcy5fc3RhcnQ9ZTplPnRoaXMuX2VuZCYmKHRoaXMuX2VuZD1lKX0sZS5wcm90b3R5cGUubWFya1JhbmdlRGlydHk9ZnVuY3Rpb24oZSx0KXtpZihlPnQpe3ZhciByPWU7ZT10LHQ9cn1lPHRoaXMuX3N0YXJ0JiYodGhpcy5fc3RhcnQ9ZSksdD50aGlzLl9lbmQmJih0aGlzLl9lbmQ9dCl9LGUucHJvdG90eXBlLm1hcmtBbGxEaXJ0eT1mdW5jdGlvbigpe3RoaXMubWFya1JhbmdlRGlydHkoMCx0aGlzLl9idWZmZXJTZXJ2aWNlLnJvd3MtMSl9LGkoW24oMCxvLklCdWZmZXJTZXJ2aWNlKV0sZSl9KCk7dC5EaXJ0eVJvd1NlcnZpY2U9c30sNDM0ODpmdW5jdGlvbihlLHQscil7dmFyIGk9dGhpcyYmdGhpcy5fX3ZhbHVlc3x8ZnVuY3Rpb24oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Iscj10JiZlW3RdLGk9MDtpZihyKXJldHVybiByLmNhbGwoZSk7aWYoZSYmXCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUmJmk+PWUubGVuZ3RoJiYoZT12b2lkIDApLHt2YWx1ZTplJiZlW2krK10sZG9uZTohZX19fTt0aHJvdyBuZXcgVHlwZUVycm9yKHQ/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX0sbj10aGlzJiZ0aGlzLl9fcmVhZHx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXTtpZighcilyZXR1cm4gZTt2YXIgaSxuLG89ci5jYWxsKGUpLHM9W107dHJ5e2Zvcig7KHZvaWQgMD09PXR8fHQtLSA+MCkmJiEoaT1vLm5leHQoKSkuZG9uZTspcy5wdXNoKGkudmFsdWUpfWNhdGNoKGUpe249e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2kmJiFpLmRvbmUmJihyPW8ucmV0dXJuKSYmci5jYWxsKG8pfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gc30sbz10aGlzJiZ0aGlzLl9fc3ByZWFkQXJyYXl8fGZ1bmN0aW9uKGUsdCxyKXtpZihyfHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIGksbj0wLG89dC5sZW5ndGg7bjxvO24rKykhaSYmbiBpbiB0fHwoaXx8KGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLG4pKSxpW25dPXRbbl0pO3JldHVybiBlLmNvbmNhdChpfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSW5zdGFudGlhdGlvblNlcnZpY2U9dC5TZXJ2aWNlQ29sbGVjdGlvbj12b2lkIDA7dmFyIHM9cigyNTg1KSxhPXIoODM0MyksYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtmb3IodmFyIGUsdCxyPVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXJbb109YXJndW1lbnRzW29dO3RoaXMuX2VudHJpZXM9bmV3IE1hcDt0cnl7Zm9yKHZhciBzPWkociksYT1zLm5leHQoKTshYS5kb25lO2E9cy5uZXh0KCkpe3ZhciBjPW4oYS52YWx1ZSwyKSxsPWNbMF0saD1jWzFdO3RoaXMuc2V0KGwsaCl9fWNhdGNoKHQpe2U9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2EmJiFhLmRvbmUmJih0PXMucmV0dXJuKSYmdC5jYWxsKHMpfWZpbmFsbHl7aWYoZSl0aHJvdyBlLmVycm9yfX19cmV0dXJuIGUucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX2VudHJpZXMuZ2V0KGUpO3JldHVybiB0aGlzLl9lbnRyaWVzLnNldChlLHQpLHJ9LGUucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7dGhpcy5fZW50cmllcy5mb3JFYWNoKChmdW5jdGlvbih0LHIpe3JldHVybiBlKHIsdCl9KSl9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fZW50cmllcy5oYXMoZSl9LGUucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fZW50cmllcy5nZXQoZSl9LGV9KCk7dC5TZXJ2aWNlQ29sbGVjdGlvbj1jO3ZhciBsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuX3NlcnZpY2VzPW5ldyBjLHRoaXMuX3NlcnZpY2VzLnNldChzLklJbnN0YW50aWF0aW9uU2VydmljZSx0aGlzKX1yZXR1cm4gZS5wcm90b3R5cGUuc2V0U2VydmljZT1mdW5jdGlvbihlLHQpe3RoaXMuX3NlcnZpY2VzLnNldChlLHQpfSxlLnByb3RvdHlwZS5nZXRTZXJ2aWNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9zZXJ2aWNlcy5nZXQoZSl9LGUucHJvdG90eXBlLmNyZWF0ZUluc3RhbmNlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyLHM9W10sYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspc1tjLTFdPWFyZ3VtZW50c1tjXTt2YXIgbD0oMCxhLmdldFNlcnZpY2VEZXBlbmRlbmNpZXMpKGUpLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaW5kZXgtdC5pbmRleH0pKSxoPVtdO3RyeXtmb3IodmFyIHU9aShsKSxmPXUubmV4dCgpOyFmLmRvbmU7Zj11Lm5leHQoKSl7dmFyIF89Zi52YWx1ZSxkPXRoaXMuX3NlcnZpY2VzLmdldChfLmlkKTtpZighZCl0aHJvdyBuZXcgRXJyb3IoXCJbY3JlYXRlSW5zdGFuY2VdIFwiK2UubmFtZStcIiBkZXBlbmRzIG9uIFVOS05PV04gc2VydmljZSBcIitfLmlkK1wiLlwiKTtoLnB1c2goZCl9fWNhdGNoKGUpe3Q9e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e2YmJiFmLmRvbmUmJihyPXUucmV0dXJuKSYmci5jYWxsKHUpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX12YXIgcD1sLmxlbmd0aD4wP2xbMF0uaW5kZXg6cy5sZW5ndGg7aWYocy5sZW5ndGghPT1wKXRocm93IG5ldyBFcnJvcihcIltjcmVhdGVJbnN0YW5jZV0gRmlyc3Qgc2VydmljZSBkZXBlbmRlbmN5IG9mIFwiK2UubmFtZStcIiBhdCBwb3NpdGlvbiBcIisocCsxKStcIiBjb25mbGljdHMgd2l0aCBcIitzLmxlbmd0aCtcIiBzdGF0aWMgYXJndW1lbnRzXCIpO3JldHVybiBuZXcoZS5iaW5kLmFwcGx5KGUsbyhbdm9pZCAwXSxuKG8obyhbXSxuKHMpLCExKSxuKGgpLCExKSksITEpKSl9LGV9KCk7dC5JbnN0YW50aWF0aW9uU2VydmljZT1sfSw3ODY2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzJiZ0aGlzLl9fZGVjb3JhdGV8fGZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBuLG89YXJndW1lbnRzLmxlbmd0aCxzPW88Mz90Om51bGw9PT1pP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpOmk7aWYoXCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3QmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxyLGkpO2Vsc2UgZm9yKHZhciBhPWUubGVuZ3RoLTE7YT49MDthLS0pKG49ZVthXSkmJihzPShvPDM/bihzKTpvPjM/bih0LHIscyk6bih0LHIpKXx8cyk7cmV0dXJuIG8+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixzKSxzfSxuPXRoaXMmJnRoaXMuX19wYXJhbXx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocixpKXt0KHIsaSxlKX19LG89dGhpcyYmdGhpcy5fX3JlYWR8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl07aWYoIXIpcmV0dXJuIGU7dmFyIGksbixvPXIuY2FsbChlKSxzPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT10fHx0LS0gPjApJiYhKGk9by5uZXh0KCkpLmRvbmU7KXMucHVzaChpLnZhbHVlKX1jYXRjaChlKXtuPXtlcnJvcjplfX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYocj1vLnJldHVybikmJnIuY2FsbChvKX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19cmV0dXJuIHN9LHM9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihlLHQscil7aWYocnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBpLG49MCxvPXQubGVuZ3RoO248bztuKyspIWkmJm4gaW4gdHx8KGl8fChpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCxuKSksaVtuXT10W25dKTtyZXR1cm4gZS5jb25jYXQoaXx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkxvZ1NlcnZpY2U9dm9pZCAwO3ZhciBhPXIoMjU4NSksYz17ZGVidWc6YS5Mb2dMZXZlbEVudW0uREVCVUcsaW5mbzphLkxvZ0xldmVsRW51bS5JTkZPLHdhcm46YS5Mb2dMZXZlbEVudW0uV0FSTixlcnJvcjphLkxvZ0xldmVsRW51bS5FUlJPUixvZmY6YS5Mb2dMZXZlbEVudW0uT0ZGfSxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdD10aGlzO3RoaXMuX29wdGlvbnNTZXJ2aWNlPWUsdGhpcy5sb2dMZXZlbD1hLkxvZ0xldmVsRW51bS5PRkYsdGhpcy5fdXBkYXRlTG9nTGV2ZWwoKSx0aGlzLl9vcHRpb25zU2VydmljZS5vbk9wdGlvbkNoYW5nZSgoZnVuY3Rpb24oZSl7XCJsb2dMZXZlbFwiPT09ZSYmdC5fdXBkYXRlTG9nTGV2ZWwoKX0pKX1yZXR1cm4gZS5wcm90b3R5cGUuX3VwZGF0ZUxvZ0xldmVsPWZ1bmN0aW9uKCl7dGhpcy5sb2dMZXZlbD1jW3RoaXMuX29wdGlvbnNTZXJ2aWNlLnJhd09wdGlvbnMubG9nTGV2ZWxdfSxlLnByb3RvdHlwZS5fZXZhbExhenlPcHRpb25hbFBhcmFtcz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylcImZ1bmN0aW9uXCI9PXR5cGVvZiBlW3RdJiYoZVt0XT1lW3RdKCkpfSxlLnByb3RvdHlwZS5fbG9nPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9ldmFsTGF6eU9wdGlvbmFsUGFyYW1zKHIpLGUuY2FsbC5hcHBseShlLHMoW2NvbnNvbGUsXCJ4dGVybS5qczogXCIrdF0sbyhyKSwhMSkpfSxlLnByb3RvdHlwZS5kZWJ1Zz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTt0aGlzLmxvZ0xldmVsPD1hLkxvZ0xldmVsRW51bS5ERUJVRyYmdGhpcy5fbG9nKGNvbnNvbGUubG9nLGUsdCl9LGUucHJvdG90eXBlLmluZm89ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0xXT1hcmd1bWVudHNbcl07dGhpcy5sb2dMZXZlbDw9YS5Mb2dMZXZlbEVudW0uSU5GTyYmdGhpcy5fbG9nKGNvbnNvbGUuaW5mbyxlLHQpfSxlLnByb3RvdHlwZS53YXJuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO3RoaXMubG9nTGV2ZWw8PWEuTG9nTGV2ZWxFbnVtLldBUk4mJnRoaXMuX2xvZyhjb25zb2xlLndhcm4sZSx0KX0sZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0xXT1hcmd1bWVudHNbcl07dGhpcy5sb2dMZXZlbDw9YS5Mb2dMZXZlbEVudW0uRVJST1ImJnRoaXMuX2xvZyhjb25zb2xlLmVycm9yLGUsdCl9LGkoW24oMCxhLklPcHRpb25zU2VydmljZSldLGUpfSgpO3QuTG9nU2VydmljZT1sfSw3MzAyOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybiBpPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTEsaT1hcmd1bWVudHMubGVuZ3RoO3I8aTtyKyspZm9yKHZhciBuIGluIHQ9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZX0saS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT3B0aW9uc1NlcnZpY2U9dC5ERUZBVUxUX09QVElPTlM9dC5ERUZBVUxUX0JFTExfU09VTkQ9dm9pZCAwO3ZhciBuPXIoODQ2MCksbz1yKDYxMTQpO3QuREVGQVVMVF9CRUxMX1NPVU5EPVwiZGF0YTphdWRpby9tcDM7YmFzZTY0LFNVUXpCQUFBQUFBQUkxUlRVMFVBQUFBUEFBQURUR0YyWmpVNExqTXlMakV3TkFBQUFBQUFBQUFBQUFBQS8vdFF4QUFEQjhBaFNteGhJSUVWQ1NpSnJEQ1FCVGN1M1VyQUl3VWRrUmdRYkZBWkMxQ1FFd1RKOW1qUnZCQTRVT0xEOG5LVk9XZmgrVWxLM3ovMTc3T1hyZk9kS2w3cHluM1hmLy9XcmV5VFJVb0FXZ0Jna09BR2JaSEJnRzFPRjZ6TTgyRFdiWmFVbU1CcHRnUWhHanN5WXFjOWFlOVhGejI4MDk0OE5NQldJbmxqeXpzTlJGTFBXZG5aR1dyZGREc2pLMXVudVNyVk45akpzSzhLdVF0UUN0TUJqQ0V0SW1JU2ROS0pPb3BJcEJGcE5TTWJJSENTUnBSUjVpYWtqVGl5ekxoY2hVVUJ3Q2d5S2l3ZUJ2LzdVc1FiZzhpc1ZOb01QTWpBQUFBMGdBQUFCRVZGR21ncUsvLy8vOWJQLzZYQ3lreEJUVVV6TGpFd01LcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFcIix0LkRFRkFVTFRfT1BUSU9OUz17Y29sczo4MCxyb3dzOjI0LGN1cnNvckJsaW5rOiExLGN1cnNvclN0eWxlOlwiYmxvY2tcIixjdXJzb3JXaWR0aDoxLGN1c3RvbUdseXBoczohMCxiZWxsU291bmQ6dC5ERUZBVUxUX0JFTExfU09VTkQsYmVsbFN0eWxlOlwibm9uZVwiLGRyYXdCb2xkVGV4dEluQnJpZ2h0Q29sb3JzOiEwLGZhc3RTY3JvbGxNb2RpZmllcjpcImFsdFwiLGZhc3RTY3JvbGxTZW5zaXRpdml0eTo1LGZvbnRGYW1pbHk6XCJjb3VyaWVyLW5ldywgY291cmllciwgbW9ub3NwYWNlXCIsZm9udFNpemU6MTUsZm9udFdlaWdodDpcIm5vcm1hbFwiLGZvbnRXZWlnaHRCb2xkOlwiYm9sZFwiLGxpbmVIZWlnaHQ6MSxsaW5rVG9vbHRpcEhvdmVyRHVyYXRpb246NTAwLGxldHRlclNwYWNpbmc6MCxsb2dMZXZlbDpcImluZm9cIixzY3JvbGxiYWNrOjFlMyxzY3JvbGxTZW5zaXRpdml0eToxLHNjcmVlblJlYWRlck1vZGU6ITEsbWFjT3B0aW9uSXNNZXRhOiExLG1hY09wdGlvbkNsaWNrRm9yY2VzU2VsZWN0aW9uOiExLG1pbmltdW1Db250cmFzdFJhdGlvOjEsZGlzYWJsZVN0ZGluOiExLGFsbG93UHJvcG9zZWRBcGk6ITAsYWxsb3dUcmFuc3BhcmVuY3k6ITEsdGFiU3RvcFdpZHRoOjgsdGhlbWU6e30scmlnaHRDbGlja1NlbGVjdHNXb3JkOm8uaXNNYWMscmVuZGVyZXJUeXBlOlwiY2FudmFzXCIsd2luZG93T3B0aW9uczp7fSx3aW5kb3dzTW9kZTohMSx3b3JkU2VwYXJhdG9yOlwiICgpW117fScsXFxcImBcIixhbHRDbGlja01vdmVzQ3Vyc29yOiEwLGNvbnZlcnRFb2w6ITEsdGVybU5hbWU6XCJ4dGVybVwiLGNhbmNlbEV2ZW50czohMSxvdmVydmlld1J1bGVyV2lkdGg6dm9pZCAwfTt2YXIgcz1bXCJub3JtYWxcIixcImJvbGRcIixcIjEwMFwiLFwiMjAwXCIsXCIzMDBcIixcIjQwMFwiLFwiNTAwXCIsXCI2MDBcIixcIjcwMFwiLFwiODAwXCIsXCI5MDBcIl0sYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fb25PcHRpb25DaGFuZ2U9bmV3IG4uRXZlbnRFbWl0dGVyO3ZhciByPWkoe30sdC5ERUZBVUxUX09QVElPTlMpO2Zvcih2YXIgbyBpbiBlKWlmKG8gaW4gcil0cnl7dmFyIHM9ZVtvXTtyW29dPXRoaXMuX3Nhbml0aXplQW5kVmFsaWRhdGVPcHRpb24obyxzKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfXRoaXMucmF3T3B0aW9ucz1yLHRoaXMub3B0aW9ucz1pKHt9LHIpLHRoaXMuX3NldHVwT3B0aW9ucygpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJvbk9wdGlvbkNoYW5nZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25PcHRpb25DaGFuZ2UuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX3NldHVwT3B0aW9ucz1mdW5jdGlvbigpe3ZhciBlPXRoaXMscj1mdW5jdGlvbihyKXtpZighKHIgaW4gdC5ERUZBVUxUX09QVElPTlMpKXRocm93IG5ldyBFcnJvcignTm8gb3B0aW9uIHdpdGgga2V5IFwiJytyKydcIicpO3JldHVybiBlLnJhd09wdGlvbnNbcl19LGk9ZnVuY3Rpb24ocixpKXtpZighKHIgaW4gdC5ERUZBVUxUX09QVElPTlMpKXRocm93IG5ldyBFcnJvcignTm8gb3B0aW9uIHdpdGgga2V5IFwiJytyKydcIicpO2k9ZS5fc2FuaXRpemVBbmRWYWxpZGF0ZU9wdGlvbihyLGkpLGUucmF3T3B0aW9uc1tyXSE9PWkmJihlLnJhd09wdGlvbnNbcl09aSxlLl9vbk9wdGlvbkNoYW5nZS5maXJlKHIpKX07Zm9yKHZhciBuIGluIHRoaXMucmF3T3B0aW9ucyl7dmFyIG89e2dldDpyLmJpbmQodGhpcyxuKSxzZXQ6aS5iaW5kKHRoaXMsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLm9wdGlvbnMsbixvKX19LGUucHJvdG90eXBlLnNldE9wdGlvbj1mdW5jdGlvbihlLHQpe3RoaXMub3B0aW9uc1tlXT10fSxlLnByb3RvdHlwZS5fc2FuaXRpemVBbmRWYWxpZGF0ZU9wdGlvbj1mdW5jdGlvbihlLHIpe3N3aXRjaChlKXtjYXNlXCJiZWxsU3R5bGVcIjpjYXNlXCJjdXJzb3JTdHlsZVwiOmNhc2VcInJlbmRlcmVyVHlwZVwiOmNhc2VcIndvcmRTZXBhcmF0b3JcIjpyfHwocj10LkRFRkFVTFRfT1BUSU9OU1tlXSk7YnJlYWs7Y2FzZVwiZm9udFdlaWdodFwiOmNhc2VcImZvbnRXZWlnaHRCb2xkXCI6aWYoXCJudW1iZXJcIj09dHlwZW9mIHImJjE8PXImJnI8PTFlMylicmVhaztyPXMuaW5jbHVkZXMocik/cjp0LkRFRkFVTFRfT1BUSU9OU1tlXTticmVhaztjYXNlXCJjdXJzb3JXaWR0aFwiOnI9TWF0aC5mbG9vcihyKTtjYXNlXCJsaW5lSGVpZ2h0XCI6Y2FzZVwidGFiU3RvcFdpZHRoXCI6aWYocjwxKXRocm93IG5ldyBFcnJvcihlK1wiIGNhbm5vdCBiZSBsZXNzIHRoYW4gMSwgdmFsdWU6IFwiK3IpO2JyZWFrO2Nhc2VcIm1pbmltdW1Db250cmFzdFJhdGlvXCI6cj1NYXRoLm1heCgxLE1hdGgubWluKDIxLE1hdGgucm91bmQoMTAqcikvMTApKTticmVhaztjYXNlXCJzY3JvbGxiYWNrXCI6aWYoKHI9TWF0aC5taW4ociw0Mjk0OTY3Mjk1KSk8MCl0aHJvdyBuZXcgRXJyb3IoZStcIiBjYW5ub3QgYmUgbGVzcyB0aGFuIDAsIHZhbHVlOiBcIityKTticmVhaztjYXNlXCJmYXN0U2Nyb2xsU2Vuc2l0aXZpdHlcIjpjYXNlXCJzY3JvbGxTZW5zaXRpdml0eVwiOmlmKHI8PTApdGhyb3cgbmV3IEVycm9yKGUrXCIgY2Fubm90IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAwLCB2YWx1ZTogXCIrcik7Y2FzZVwicm93c1wiOmNhc2VcImNvbHNcIjppZighciYmMCE9PXIpdGhyb3cgbmV3IEVycm9yKGUrXCIgbXVzdCBiZSBudW1lcmljLCB2YWx1ZTogXCIrcil9cmV0dXJuIHJ9LGUucHJvdG90eXBlLmdldE9wdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcHRpb25zW2VdfSxlfSgpO3QuT3B0aW9uc1NlcnZpY2U9YX0sODM0MzooZSx0KT0+e2Z1bmN0aW9uIHIoZSx0LHIpe3QuZGkkdGFyZ2V0PT09dD90LmRpJGRlcGVuZGVuY2llcy5wdXNoKHtpZDplLGluZGV4OnJ9KToodC5kaSRkZXBlbmRlbmNpZXM9W3tpZDplLGluZGV4OnJ9XSx0LmRpJHRhcmdldD10KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNyZWF0ZURlY29yYXRvcj10LmdldFNlcnZpY2VEZXBlbmRlbmNpZXM9dC5zZXJ2aWNlUmVnaXN0cnk9dm9pZCAwLHQuc2VydmljZVJlZ2lzdHJ5PW5ldyBNYXAsdC5nZXRTZXJ2aWNlRGVwZW5kZW5jaWVzPWZ1bmN0aW9uKGUpe3JldHVybiBlLmRpJGRlcGVuZGVuY2llc3x8W119LHQuY3JlYXRlRGVjb3JhdG9yPWZ1bmN0aW9uKGUpe2lmKHQuc2VydmljZVJlZ2lzdHJ5LmhhcyhlKSlyZXR1cm4gdC5zZXJ2aWNlUmVnaXN0cnkuZ2V0KGUpO3ZhciBpPWZ1bmN0aW9uKGUsdCxuKXtpZigzIT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJASVNlcnZpY2VOYW1lLWRlY29yYXRvciBjYW4gb25seSBiZSB1c2VkIHRvIGRlY29yYXRlIGEgcGFyYW1ldGVyXCIpO3IoaSxlLG4pfTtyZXR1cm4gaS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBlfSx0LnNlcnZpY2VSZWdpc3RyeS5zZXQoZSxpKSxpfX0sMjU4NTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JRGVjb3JhdGlvblNlcnZpY2U9dC5JVW5pY29kZVNlcnZpY2U9dC5JT3B0aW9uc1NlcnZpY2U9dC5JTG9nU2VydmljZT10LkxvZ0xldmVsRW51bT10LklJbnN0YW50aWF0aW9uU2VydmljZT10LklEaXJ0eVJvd1NlcnZpY2U9dC5JQ2hhcnNldFNlcnZpY2U9dC5JQ29yZVNlcnZpY2U9dC5JQ29yZU1vdXNlU2VydmljZT10LklCdWZmZXJTZXJ2aWNlPXZvaWQgMDt2YXIgaSxuPXIoODM0Myk7dC5JQnVmZmVyU2VydmljZT0oMCxuLmNyZWF0ZURlY29yYXRvcikoXCJCdWZmZXJTZXJ2aWNlXCIpLHQuSUNvcmVNb3VzZVNlcnZpY2U9KDAsbi5jcmVhdGVEZWNvcmF0b3IpKFwiQ29yZU1vdXNlU2VydmljZVwiKSx0LklDb3JlU2VydmljZT0oMCxuLmNyZWF0ZURlY29yYXRvcikoXCJDb3JlU2VydmljZVwiKSx0LklDaGFyc2V0U2VydmljZT0oMCxuLmNyZWF0ZURlY29yYXRvcikoXCJDaGFyc2V0U2VydmljZVwiKSx0LklEaXJ0eVJvd1NlcnZpY2U9KDAsbi5jcmVhdGVEZWNvcmF0b3IpKFwiRGlydHlSb3dTZXJ2aWNlXCIpLHQuSUluc3RhbnRpYXRpb25TZXJ2aWNlPSgwLG4uY3JlYXRlRGVjb3JhdG9yKShcIkluc3RhbnRpYXRpb25TZXJ2aWNlXCIpLChpPXQuTG9nTGV2ZWxFbnVtfHwodC5Mb2dMZXZlbEVudW09e30pKVtpLkRFQlVHPTBdPVwiREVCVUdcIixpW2kuSU5GTz0xXT1cIklORk9cIixpW2kuV0FSTj0yXT1cIldBUk5cIixpW2kuRVJST1I9M109XCJFUlJPUlwiLGlbaS5PRkY9NF09XCJPRkZcIix0LklMb2dTZXJ2aWNlPSgwLG4uY3JlYXRlRGVjb3JhdG9yKShcIkxvZ1NlcnZpY2VcIiksdC5JT3B0aW9uc1NlcnZpY2U9KDAsbi5jcmVhdGVEZWNvcmF0b3IpKFwiT3B0aW9uc1NlcnZpY2VcIiksdC5JVW5pY29kZVNlcnZpY2U9KDAsbi5jcmVhdGVEZWNvcmF0b3IpKFwiVW5pY29kZVNlcnZpY2VcIiksdC5JRGVjb3JhdGlvblNlcnZpY2U9KDAsbi5jcmVhdGVEZWNvcmF0b3IpKFwiRGVjb3JhdGlvblNlcnZpY2VcIil9LDE0ODA6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuVW5pY29kZVNlcnZpY2U9dm9pZCAwO3ZhciBpPXIoODQ2MCksbj1yKDIyNSksbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLl9wcm92aWRlcnM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9hY3RpdmU9XCJcIix0aGlzLl9vbkNoYW5nZT1uZXcgaS5FdmVudEVtaXR0ZXI7dmFyIGU9bmV3IG4uVW5pY29kZVY2O3RoaXMucmVnaXN0ZXIoZSksdGhpcy5fYWN0aXZlPWUudmVyc2lvbix0aGlzLl9hY3RpdmVQcm92aWRlcj1lfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJvbkNoYW5nZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25DaGFuZ2UuZXZlbnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwidmVyc2lvbnNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3Byb3ZpZGVycyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiYWN0aXZlVmVyc2lvblwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWN0aXZlfSxzZXQ6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuX3Byb3ZpZGVyc1tlXSl0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gVW5pY29kZSB2ZXJzaW9uIFwiJytlKydcIicpO3RoaXMuX2FjdGl2ZT1lLHRoaXMuX2FjdGl2ZVByb3ZpZGVyPXRoaXMuX3Byb3ZpZGVyc1tlXSx0aGlzLl9vbkNoYW5nZS5maXJlKGUpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnJlZ2lzdGVyPWZ1bmN0aW9uKGUpe3RoaXMuX3Byb3ZpZGVyc1tlLnZlcnNpb25dPWV9LGUucHJvdG90eXBlLndjd2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2FjdGl2ZVByb3ZpZGVyLndjd2lkdGgoZSl9LGUucHJvdG90eXBlLmdldFN0cmluZ0NlbGxXaWR0aD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPWUubGVuZ3RoLGk9MDtpPHI7KytpKXt2YXIgbj1lLmNoYXJDb2RlQXQoaSk7aWYoNTUyOTY8PW4mJm48PTU2MzE5KXtpZigrK2k+PXIpcmV0dXJuIHQrdGhpcy53Y3dpZHRoKG4pO3ZhciBvPWUuY2hhckNvZGVBdChpKTs1NjMyMDw9byYmbzw9NTczNDM/bj0xMDI0KihuLTU1Mjk2KStvLTU2MzIwKzY1NTM2OnQrPXRoaXMud2N3aWR0aChvKX10Kz10aGlzLndjd2lkdGgobil9cmV0dXJuIHR9LGV9KCk7dC5Vbmljb2RlU2VydmljZT1vfX0sdD17fTtyZXR1cm4gZnVuY3Rpb24gcihpKXt2YXIgbj10W2ldO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG4uZXhwb3J0czt2YXIgbz10W2ldPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtpXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxyKSxvLmV4cG9ydHN9KDQzODkpfSkoKX0pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXh0ZXJtLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgWm1vZGVtID0gbW9kdWxlLmV4cG9ydHM7XG5cbmNvbnN0IEhFWF9ESUdJVFMgPSBbIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyIF07XG5cbmNvbnN0IEhFWF9PQ1RFVF9WQUxVRSA9IHt9O1xuZm9yICh2YXIgaGQ9MDsgaGQ8SEVYX0RJR0lUUy5sZW5ndGg7IGhkKyspIHtcbiAgICBIRVhfT0NURVRfVkFMVUVbIEhFWF9ESUdJVFNbaGRdIF0gPSBoZDtcbn1cblxuLyoqXG4gKiBHZW5lcmFsLCBub24tWk1PREVNLXNwZWNpZmljIGVuY29kaW5nIGxvZ2ljLlxuICpcbiAqIEBleHBvcnRzIEVOQ09ERUxJQlxuICovXG5abW9kZW0uRU5DT0RFTElCID0ge1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIGdpdmVuIG51bWJlciBhcyAyIGJpZy1lbmRpYW4gYnl0ZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIC0gVGhlIG51bWJlciB0byBlbmNvZGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyW119IFRoZSBvY3RldCB2YWx1ZXMuXG4gICAgICovXG4gICAgcGFja191MTZfYmU6IGZ1bmN0aW9uIHBhY2tfdTE2X2JlKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyID4gMHhmZmZmKSB0aHJvdyggXCJOdW1iZXIgY2Fubm90IGV4Y2VlZCAxNiBiaXRzOiBcIiArIG51bWJlciApXG5cbiAgICAgICAgcmV0dXJuIFsgbnVtYmVyID4+IDgsIG51bWJlciAmIDB4ZmYgXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIGdpdmVuIG51bWJlciBhcyA0IGxpdHRsZS1lbmRpYW4gYnl0ZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIC0gVGhlIG51bWJlciB0byBlbmNvZGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyW119IFRoZSBvY3RldCB2YWx1ZXMuXG4gICAgICovXG4gICAgcGFja191MzJfbGU6IGZ1bmN0aW9uIHBhY2tfdTMyX2xlKG51bWJlcikge1xuICAgICAgICAvL0NhbuKAmXQgYml0LXNoaWZ0IGJlY2F1c2UgdGhhdCBydW5zIGludG8gSlPigJlzIGJpdC1zaGlmdCBwcm9ibGVtLlxuICAgICAgICAvLyhTZWUgX3VwZGNyYzMyKCkgZm9yIGFuIGV4YW1wbGUuKVxuICAgICAgICB2YXIgaGlnaF9ieXRlcyA9IG51bWJlciAvIDY1NTM2OyAgIC8vZnJhY3Rpb24gaXMgb2tcblxuICAgICAgICAvL2EgbGl0dGxlLWVuZGlhbiA0LWJ5dGUgc2VxdWVuY2VcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG51bWJlciAmIDB4ZmYsXG4gICAgICAgICAgICAobnVtYmVyICYgNjU1MzUpID4+IDgsXG4gICAgICAgICAgICBoaWdoX2J5dGVzICYgMHhmZixcbiAgICAgICAgICAgIGhpZ2hfYnl0ZXMgPj4gOCxcbiAgICAgICAgXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVGhlIGludmVyc2Ugb2YgcGFja191MTZfYmUoKSAtIGkuZS4sIHRha2UgaW4gMiBvY3RldCB2YWx1ZXNcbiAgICAgKiBhbmQgcGFyc2UgdGhlbSBhcyBhbiB1bnNpZ25lZCwgMi1ieXRlIGJpZy1lbmRpYW4gbnVtYmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gb2N0ZXRzIC0gVGhlIG9jdGV0IHZhbHVlcyAoMiBvZiB0aGVtKS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBkZWNvZGVkIG51bWJlci5cbiAgICAgKi9cbiAgICB1bnBhY2tfdTE2X2JlOiBmdW5jdGlvbiB1bnBhY2tfdTE2X2JlKGJ5dGVzX2Fycikge1xuICAgICAgICByZXR1cm4gKGJ5dGVzX2FyclswXSA8PCA4KSArIGJ5dGVzX2FyclsxXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVGhlIGludmVyc2Ugb2YgcGFja191MzJfbGUoKSAtIGkuZS4sIHRha2UgaW4gYSA0LWJ5dGUgc2VxdWVuY2VcbiAgICAgKiBhbmQgcGFyc2UgaXQgYXMgYW4gdW5zaWduZWQsIDQtYnl0ZSBsaXR0bGUtZW5kaWFuIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IG9jdGV0cyAtIFRoZSBvY3RldCB2YWx1ZXMgKDQgb2YgdGhlbSkuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgZGVjb2RlZCBudW1iZXIuXG4gICAgICovXG4gICAgdW5wYWNrX3UzMl9sZTogZnVuY3Rpb24gdW5wYWNrX3UzMl9sZShvY3RldHMpIHtcbiAgICAgICAgLy88c2lnaD4g4oCmICgyNTQgPDwgMjQgaXMgLTMzNTU0NDMyLCBhY2NvcmRpbmcgdG8gSmF2YVNjcmlwdClcbiAgICAgICAgcmV0dXJuIG9jdGV0c1swXSArIChvY3RldHNbMV0gPDwgOCkgKyAob2N0ZXRzWzJdIDw8IDE2KSArIChvY3RldHNbM10gKiAxNjc3NzIxNik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEVuY29kZSBhIHNlcmllcyBvZiBvY3RldCB2YWx1ZXMgdG8gYmUgdGhlIG9jdGV0IHZhbHVlcyB0aGF0XG4gICAgICogY29ycmVzcG9uZCB0byB0aGUgQVNDSUkgaGV4IGNoYXJhY3RlcnMgZm9yIGVhY2ggb2N0ZXQuIFRoZVxuICAgICAqIHJldHVybmVkIGFycmF5IGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgYmluYXJ5IGRhdGEuXG4gICAgICpcbiAgICAgKiBGb3IgZXhhbXBsZTpcbiAgICAgKlxuICAgICAqICAgICAgT3JpZ2luYWwgICAgSGV4ICAgICBSZXR1cm5lZFxuICAgICAqICAgICAgMjU0ICAgICAgICAgZmUgICAgICAxMDIsIDEwMVxuICAgICAqICAgICAgIDEyICAgICAgICAgMGMgICAgICA0OCwgOTlcbiAgICAgKiAgICAgIDEyOSAgICAgICAgIDgxICAgICAgNTYsIDQ5XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBvY3RldHMgLSBUaGUgb3JpZ2luYWwgb2N0ZXQgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHJldHVybnMge251bWJlcltdfSBUaGUgb2N0ZXQgdmFsdWVzIHRoYXQgY29ycmVzcG9uZCB0byBhbiBBU0NJSVxuICAgICAqICByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gb2N0ZXRzLlxuICAgICAqL1xuICAgIG9jdGV0c190b19oZXg6IGZ1bmN0aW9uIG9jdGV0c190b19oZXgob2N0ZXRzKSB7XG4gICAgICAgIHZhciBoZXggPSBbXTtcbiAgICAgICAgZm9yICh2YXIgbz0wOyBvPG9jdGV0cy5sZW5ndGg7IG8rKykge1xuICAgICAgICAgICAgaGV4LnB1c2goXG4gICAgICAgICAgICAgICAgSEVYX0RJR0lUU1sgb2N0ZXRzW29dID4+IDQgXSxcbiAgICAgICAgICAgICAgICBIRVhfRElHSVRTWyBvY3RldHNbb10gJiAweDBmIF1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaGV4O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW52ZXJzZSBvZiBvY3RldHNfdG9faGV4KCk6IHRha2VzIGFuIGFycmF5XG4gICAgICogb2YgaGV4IG9jdGV0IHBhaXJzIGFuZCByZXR1cm5zIHRoZWlyIG9jdGV0IHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IGhleF9vY3RldHMgLSBUaGUgaGV4IG9jdGV0IHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIHBhcnNlZCBvY3RldCB2YWx1ZXMuXG4gICAgICovXG4gICAgcGFyc2VfaGV4X29jdGV0czogZnVuY3Rpb24gcGFyc2VfaGV4X29jdGV0cyhoZXhfb2N0ZXRzKSB7XG4gICAgICAgIHZhciBvY3RldHMgPSBuZXcgQXJyYXkoaGV4X29jdGV0cy5sZW5ndGggLyAyKTtcblxuICAgICAgICBmb3IgKHZhciBpPTA7IGk8b2N0ZXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvY3RldHNbaV0gPSAoSEVYX09DVEVUX1ZBTFVFWyBoZXhfb2N0ZXRzWzIgKiBpXSBdIDw8IDQpICsgSEVYX09DVEVUX1ZBTFVFWyBoZXhfb2N0ZXRzWzEgKyAyICogaV0gXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvY3RldHM7XG4gICAgfSxcbn07XG4iLCJjbGFzcyBfbXlfVGV4dEVuY29kZXIge1xuICAgIGVuY29kZSh0ZXh0KSB7XG4gICAgICAgIHRleHQgPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodGV4dCkpO1xuXG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBBcnJheSggdGV4dC5sZW5ndGggKTtcblxuICAgICAgICBmb3IgKHZhciBiID0gMDsgYiA8IHRleHQubGVuZ3RoOyBiKyspIHtcbiAgICAgICAgICAgIGJ5dGVzW2JdID0gdGV4dC5jaGFyQ29kZUF0KGIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGJ5dGVzKTtcbiAgICB9XG59XG5cbmNsYXNzIF9teV9UZXh0RGVjb2RlciB7XG4gICAgZGVjb2RlKGJ5dGVzKSB7XG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoIGVzY2FwZSggU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGJ5dGVzKSApICk7XG4gICAgfVxufVxuXG52YXIgWm1vZGVtID0gbW9kdWxlLmV4cG9ydHM7XG5cbi8qKlxuICogQSBsaW1pdGVkLXVzZSBjb21wYXRpYmlsaXR5IHNoaW0gZm9yIFRleHRFbmNvZGVyIGFuZCBUZXh0RGVjb2Rlci5cbiAqIFVzZWZ1bCBiZWNhdXNlIGJvdGggRWRnZSBhbmQgbm9kZS5qcyBzdGlsbCBsYWNrIHN1cHBvcnQgZm9yIHRoZXNlXG4gKiBhcyBvZiBPY3RvYmVyIDIwMTcuXG4gKlxuICogQGV4cG9ydHMgVGV4dFxuICovXG5abW9kZW0uVGV4dCA9IHtcbiAgICBFbmNvZGVyOiAodHlwZW9mIFRleHRFbmNvZGVyICE9PSBcInVuZGVmaW5lZFwiKSA/IFRleHRFbmNvZGVyIDogX215X1RleHRFbmNvZGVyLFxuICAgIERlY29kZXI6ICh0eXBlb2YgVGV4dERlY29kZXIgIT09IFwidW5kZWZpbmVkXCIpID8gVGV4dERlY29kZXIgOiBfbXlfVGV4dERlY29kZXIsXG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmNvbnN0IENSQzMyX01PRCA9IHJlcXVpcmUoJ2NyYy0zMicpO1xuXG52YXIgWm1vZGVtID0gbW9kdWxlLmV4cG9ydHM7XG5cbk9iamVjdC5hc3NpZ24oXG4gICAgWm1vZGVtLFxuICAgIHJlcXVpcmUoXCIuL3plcnJvclwiKSxcbiAgICByZXF1aXJlKFwiLi9lbmNvZGVcIilcbik7XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQkVHSU4gYWRhcHRlZCBmcm9tIGNyYy1qcyBieSBKb2hhbm5lcyBSdWRvbHBoXG5cbnZhciBfY3JjdGFiO1xuXG5jb25zdFxuICAgIGNyY193aWR0aCA9IDE2LFxuICAgIGNyY19wb2x5bm9taWFsID0gMHgxMDIxLFxuICAgIGNyY19jYXN0bWFzayA9IDB4ZmZmZixcbiAgICBjcmNfbXNibWFzayA9IDEgPDwgKGNyY193aWR0aCAtIDEpXG47XG5cbmZ1bmN0aW9uIF9jb21wdXRlX2NyY3RhYigpIHtcbiAgICBfY3JjdGFiID0gbmV3IEFycmF5KDI1Nik7XG5cbiAgICB2YXIgZGl2aWRlbnRfc2hpZnQgPSBjcmNfd2lkdGggLSA4O1xuXG4gICAgZm9yICh2YXIgZGl2aWRlbnQgPSAwOyBkaXZpZGVudCA8IDI1NjsgZGl2aWRlbnQrKykge1xuICAgICAgICB2YXIgY3VyckJ5dGUgPSAoZGl2aWRlbnQgPDwgZGl2aWRlbnRfc2hpZnQpICYgY3JjX2Nhc3RtYXNrO1xuXG4gICAgICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IDg7IGJpdCsrKSB7XG5cbiAgICAgICAgICAgIGlmICgoY3VyckJ5dGUgJiBjcmNfbXNibWFzaykgIT09IDApIHtcbiAgICAgICAgICAgICAgICBjdXJyQnl0ZSA8PD0gMTtcbiAgICAgICAgICAgICAgICBjdXJyQnl0ZSBePSBjcmNfcG9seW5vbWlhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJCeXRlIDw8PSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgX2NyY3RhYltkaXZpZGVudF0gPSAoY3VyckJ5dGUgJiBjcmNfY2FzdG1hc2spO1xuICAgIH1cbn1cblxuLy8gRU5EIGFkYXB0ZWQgZnJvbSBjcmMtanMgYnkgSm9oYW5uZXMgUnVkb2xwaFxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIF91cGRjcmMoY3AsIGNyYykge1xuICAgIGlmICghX2NyY3RhYikgX2NvbXB1dGVfY3JjdGFiKCk7XG5cbiAgICByZXR1cm4oXG4gICAgICAgIF9jcmN0YWJbKChjcmMgPj4gOCkgJiAyNTUpXVxuICAgICAgICBeICgoMjU1ICYgY3JjKSA8PCA4KVxuICAgICAgICBeIGNwXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gX192ZXJpZnkoZXhwZWN0LCBnb3QpIHtcbiAgICB2YXIgZXJyO1xuXG4gICAgaWYgKCBleHBlY3Quam9pbigpICE9PSBnb3Quam9pbigpICkge1xuICAgICAgICB0aHJvdyBuZXcgWm1vZGVtLkVycm9yKFwiY3JjXCIsIGdvdCwgZXhwZWN0KTtcbiAgICB9XG59XG5cbi8vVE9ETzogdXNlIGV4dGVybmFsIGltcGxlbWVudGF0aW9uKHMpXG5abW9kZW0uQ1JDID0ge1xuXG4gICAgLy9odHRwczovL3d3dy5sYW1tZXJ0Ymllcy5ubC9jb21tL2luZm8vY3JjLWNhbGN1bGF0aW9uLmh0bWxcbiAgICAvL0NSQy1DQ0lUVCAoWE1vZGVtKVxuXG4gICAgLyoqXG4gICAgICogRGVkdWNlIGEgZ2l2ZW4gc2V0IG9mIG9jdGV0IHZhbHVlc+KAmSBDUkMxNiwgYXMgcGVyIHRoZSBDUkMxNlxuICAgICAqIHZhcmlhbnQgdGhhdCBaTU9ERU0gdXNlcyAoQ1JDLUNDSVRUL1hNb2RlbSkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBvY3RldHMgLSBUaGUgYXJyYXkgb2Ygb2N0ZXQgdmFsdWVzLlxuICAgICAqICAgICAgRWFjaCBhcnJheSBtZW1iZXIgc2hvdWxkIGJlIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgKDAtMjU1KS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gY3JjIC0gVGhlIENSQywgZXhwcmVzc2VkIGFzIGFuIGFycmF5IG9mIG9jdGV0IHZhbHVlcy5cbiAgICAgKi9cbiAgICBjcmMxNjogZnVuY3Rpb24gY3JjMTYob2N0ZXRfbnVtcykge1xuICAgICAgICB2YXIgY3JjID0gb2N0ZXRfbnVtc1swXTtcbiAgICAgICAgZm9yICh2YXIgYj0xOyBiPG9jdGV0X251bXMubGVuZ3RoOyBiKyspIHtcbiAgICAgICAgICAgIGNyYyA9IF91cGRjcmMoIG9jdGV0X251bXNbYl0sIGNyYyApO1xuICAgICAgICB9XG5cbiAgICAgICAgY3JjID0gX3VwZGNyYyggMCwgX3VwZGNyYygwLCBjcmMpICk7XG5cbiAgICAgICAgLy9hIGJpZy1lbmRpYW4gMi1ieXRlIHNlcXVlbmNlXG4gICAgICAgIHJldHVybiBabW9kZW0uRU5DT0RFTElCLnBhY2tfdTE2X2JlKGNyYyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIERlZHVjZSBhIGdpdmVuIHNldCBvZiBvY3RldCB2YWx1ZXPigJkgQ1JDMzIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBvY3RldHMgLSBUaGUgYXJyYXkgb2Ygb2N0ZXQgdmFsdWVzLlxuICAgICAqICAgICAgRWFjaCBhcnJheSBtZW1iZXIgc2hvdWxkIGJlIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgKDAtMjU1KS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gY3JjIC0gVGhlIENSQywgZXhwcmVzc2VkIGFzIGFuIGFycmF5IG9mIG9jdGV0IHZhbHVlcy5cbiAgICAgKi9cbiAgICBjcmMzMjogZnVuY3Rpb24gY3JjMzIob2N0ZXRfbnVtcykge1xuICAgICAgICByZXR1cm4gWm1vZGVtLkVOQ09ERUxJQi5wYWNrX3UzMl9sZShcbiAgICAgICAgICAgIENSQzMyX01PRC5idWYob2N0ZXRfbnVtcykgPj4+IDAgICAgIC8vYml0LXNoaWZ0IHRvIGdldCB1bnNpZ25lZFxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBWZXJpZnkgYSBnaXZlbiBzZXQgb2Ygb2N0ZXQgdmFsdWVz4oCZIENSQzE2LlxuICAgICAqIEFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gb24gZmFpbHVyZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGJ5dGVzX2FyciAtIFRoZSBhcnJheSBvZiBvY3RldCB2YWx1ZXMuXG4gICAgICogICAgICBFYWNoIGFycmF5IG1lbWJlciBzaG91bGQgYmUgYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlciAoMC0yNTUpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcnJheX0gY3JjIC0gVGhlIENSQyB0byBjaGVjayBhZ2FpbnN0LCBleHByZXNzZWQgYXNcbiAgICAgKiAgICAgIGFuIGFycmF5IG9mIG9jdGV0IHZhbHVlcy5cbiAgICAgKi9cbiAgICB2ZXJpZnkxNjogZnVuY3Rpb24gdmVyaWZ5MTYoYnl0ZXNfYXJyLCBnb3QpIHtcbiAgICAgICAgcmV0dXJuIF9fdmVyaWZ5KCB0aGlzLmNyYzE2KGJ5dGVzX2FyciksIGdvdCApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBWZXJpZnkgYSBnaXZlbiBzZXQgb2Ygb2N0ZXQgdmFsdWVz4oCZIENSQzMyLlxuICAgICAqIEFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gb24gZmFpbHVyZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGJ5dGVzX2FyciAtIFRoZSBhcnJheSBvZiBvY3RldCB2YWx1ZXMuXG4gICAgICogICAgICBFYWNoIGFycmF5IG1lbWJlciBzaG91bGQgYmUgYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlciAoMC0yNTUpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcnJheX0gY3JjIC0gVGhlIENSQyB0byBjaGVjayBhZ2FpbnN0LCBleHByZXNzZWQgYXNcbiAgICAgKiAgICAgIGFuIGFycmF5IG9mIG9jdGV0IHZhbHVlcy5cbiAgICAgKi9cbiAgICB2ZXJpZnkzMjogZnVuY3Rpb24gdmVyaWZ5MzIoYnl0ZXNfYXJyLCBjcmMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIF9fdmVyaWZ5KCB0aGlzLmNyYzMyKGJ5dGVzX2FyciksIGNyYyApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoKGVycikge1xuICAgICAgICAgICAgZXJyLmlucHV0ID0gYnl0ZXNfYXJyLnNsaWNlKDApO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG4gICAgfSxcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIFptb2RlbSA9IG1vZHVsZS5leHBvcnRzO1xuXG5PYmplY3QuYXNzaWduKFxuICAgIFptb2RlbSxcbiAgICByZXF1aXJlKFwiLi96bWxpYlwiKVxuKTtcblxuLy9lbmNvZGUoKSB2YXJpYWJsZXMgLSBkZWNsYXJlIHRoZW0gaGVyZSBzbyB3ZSBkb27igJl0XG4vL2NyZWF0ZSB0aGVtIGluIHRoZSBmdW5jdGlvbi5cbnZhciBlbmNvZGVfY3VyLCBlbmNvZGVfdG9kbztcblxuY29uc3QgWkRMRSA9IFptb2RlbS5aTUxJQi5aRExFO1xuXG4vKipcbiAqIENsYXNzIHRoYXQgaGFuZGxlcyBaRExFIGVuY29kaW5nIGFuZCBkZWNvZGluZy5cbiAqIEVuY29kaW5nIGlzIHN1YmplY3QgdG8gYSBnaXZlbiBjb25maWd1cmF0aW9uLS1zcGVjaWZpY2FsbHksIHdoZXRoZXJcbiAqIHdlIHdhbnQgdG8gZXNjYXBlIGFsbCBjb250cm9sIGNoYXJhY3RlcnMuIERlY29kaW5nIGlzIHN0YXRpYzsgaG93ZXZlclxuICogYSBnaXZlbiBzdHJpbmcgaXMgZW5jb2RlZCB3ZSBjYW4gYWx3YXlzIGRlY29kZSBpdC5cbiAqL1xuWm1vZGVtLlpETEUgPSBjbGFzcyBabW9kZW1aRExFIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBaRExFIGVuY29kZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW2NvbmZpZ10gLSBUaGUgaW5pdGlhbCBjb25maWd1cmF0aW9uLlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcuZXNjYXBlX2N0cmxfY2hhcnMgLSBXaGV0aGVyIHRoZSBaRExFIGVuY29kZXJcbiAgICAgKiAgc2hvdWxkIGVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IHt9O1xuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLnNldF9lc2NhcGVfY3RybF9jaGFycyghIWNvbmZpZy5lc2NhcGVfY3RybF9jaGFycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBjb250cm9sLWNoYXJhY3RlciBlc2NhcGluZy5cbiAgICAgKiBZb3Ugc2hvdWxkIHByb2JhYmx5IGVuYWJsZSB0aGlzIGZvciBzZW5kZXIgc2Vzc2lvbnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZhbHVlIC0gV2hldGhlciB0byBlbmFibGUgKHRydWUpIG9yIGRpc2FibGUgKGZhbHNlKS5cbiAgICAgKi9cbiAgICBzZXRfZXNjYXBlX2N0cmxfY2hhcnModmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJib29sZWFuXCIpIHRocm93IFwibmVlZCBib29sZWFuIVwiO1xuXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fY29uZmlnLmVzY2FwZV9jdHJsX2NoYXJzKSB7XG4gICAgICAgICAgICB0aGlzLl9jb25maWcuZXNjYXBlX2N0cmxfY2hhcnMgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwX3pkbGVfdGFibGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IGNvbnRyb2wtY2hhcmFjdGVyIGVzY2FwaW5nIGlzIGVuYWJsZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHRoZSBlc2NhcGluZyBpcyBvbiAodHJ1ZSkgb3Igb2ZmIChmYWxzZSkuXG4gICAgICovXG4gICAgZXNjYXBlc19jdHJsX2NoYXJzKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9jb25maWcuZXNjYXBlX2N0cmxfY2hhcnM7XG4gICAgfVxuXG4gICAgLy9JIGRvbuKAmXQga25vdyBvZiBhbnkgWm1vZGVtIGltcGxlbWVudGF0aW9ucyB0aGF0IHVzZSBaRVNDOFxuICAgIC8vKOKAnGVzY2FwZV84dGhfYml04oCdKT8/XG5cbiAgICAvKlxuICAgIFpNT0RFTSBzb2Z0d2FyZSBlc2NhcGVzIFpETEUsIDAyMCwgMDIyMCwgMDIxLCAwMjIxLCAwMjMsIGFuZCAwMjIzLiAgSWZcbiAgICBwcmVjZWRlZCBieSAwMTAwIG9yIDAzMDAgKEApLCAwMTUgYW5kIDAyMTUgYXJlIGFsc28gZXNjYXBlZCB0byBwcm90ZWN0IHRoZVxuICAgIFRlbGVuZXQgY29tbWFuZCBlc2NhcGUgQ1ItQC1DUi5cbiAgICAqL1xuXG4gICAgLyoqXG4gICAgICogRW5jb2RlIGFuIGFycmF5IG9mIG9jdGV0IHZhbHVlcyBhbmQgcmV0dXJuIGl0LlxuICAgICAqIFRoaXMgd2lsbCBtdXRhdGUgdGhlIGdpdmVuIGFycmF5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gb2N0ZXRzIC0gVGhlIG9jdGV0IHZhbHVlcyB0byB0cmFuc2Zvcm0uXG4gICAgICogICAgICBFYWNoIGFycmF5IG1lbWJlciBzaG91bGQgYmUgYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlciAoMC0yNTUpLlxuICAgICAqICAgICAgVGhpcyBvYmplY3QgaXMgbXV0YXRlZCBpbiB0aGUgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyW119IFRoZSBwYXNzZWQtaW4gYXJyYXksIHRyYW5zZm9ybWVkLiBUaGlzIGlzIHRoZVxuICAgICAqICBzYW1lIG9iamVjdCB0aGF0IGlzIHBhc3NlZCBpbi5cbiAgICAgKi9cbiAgICBlbmNvZGUob2N0ZXRzKSB7XG4gICAgICAgIC8vTkI6IFBlcmZvcm1hbmNlIG1hdHRlcnMgaGVyZSFcblxuICAgICAgICBpZiAoIXRoaXMuX3pkbGVfdGFibGUpIHRocm93IFwiTm8gWkRMRSBlbmNvZGUgdGFibGUgY29uZmlndXJlZCFcIjtcblxuICAgICAgICB2YXIgemRsZV90YWJsZSA9IHRoaXMuX3pkbGVfdGFibGU7XG5cbiAgICAgICAgdmFyIGxhc3RfY29kZSA9IHRoaXMuX2xhc3Rjb2RlO1xuXG4gICAgICAgIHZhciBhcnJidWYgPSBuZXcgQXJyYXlCdWZmZXIoIDIgKiBvY3RldHMubGVuZ3RoICk7XG4gICAgICAgIHZhciBhcnJidWZfdWludDggPSBuZXcgVWludDhBcnJheShhcnJidWYpO1xuXG4gICAgICAgIHZhciBlc2NjdGxfeW4gPSB0aGlzLl9jb25maWcuZXNjYXBlX2N0cmxfY2hhcnM7XG5cbiAgICAgICAgdmFyIGFycmJ1Zl9pID0gMDtcblxuICAgICAgICBmb3IgKGVuY29kZV9jdXI9MDsgZW5jb2RlX2N1cjxvY3RldHMubGVuZ3RoOyBlbmNvZGVfY3VyKyspIHtcblxuICAgICAgICAgICAgZW5jb2RlX3RvZG8gPSB6ZGxlX3RhYmxlW29jdGV0c1tlbmNvZGVfY3VyXV07XG4gICAgICAgICAgICBpZiAoIWVuY29kZV90b2RvKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS50cmFjZSgpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJiYWQgZW5jb2RlKCkgY2FsbDpcIiwgSlNPTi5zdHJpbmdpZnkob2N0ZXRzKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdGNvZGUgPSBsYXN0X2NvZGU7XG4gICAgICAgICAgICAgICAgdGhyb3coIFwiSW52YWxpZCBvY3RldDogXCIgKyBvY3RldHNbZW5jb2RlX2N1cl0gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFzdF9jb2RlID0gb2N0ZXRzW2VuY29kZV9jdXJdO1xuXG4gICAgICAgICAgICBpZiAoZW5jb2RlX3RvZG8gPT09IDEpIHtcbiAgICAgICAgICAgICAgICAvL0RvIG5vdGhpbmc7IHdlIGFwcGVuZCBsYXN0X2NvZGUgYmVsb3cuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vMHg0MCA9ICdAJzsgaS5lLiwgb25seSBlc2NhcGUgaWYgdGhlIGxhc3RcbiAgICAgICAgICAgIC8vb2N0ZXQgd2FzICdAJy5cbiAgICAgICAgICAgIGVsc2UgaWYgKGVzY2N0bF95biB8fCAoZW5jb2RlX3RvZG8gPT09IDIpIHx8ICgobGFzdF9jb2RlICYgMHg3ZikgPT09IDB4NDApKSB7XG4gICAgICAgICAgICAgICAgYXJyYnVmX3VpbnQ4W2FycmJ1Zl9pXSA9IFpETEU7XG4gICAgICAgICAgICAgICAgYXJyYnVmX2krKztcblxuICAgICAgICAgICAgICAgIGxhc3RfY29kZSBePSAweDQwOyAgIC8vMDEwMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhcnJidWZfdWludDhbYXJyYnVmX2ldID0gbGFzdF9jb2RlO1xuXG4gICAgICAgICAgICBhcnJidWZfaSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbGFzdGNvZGUgPSBsYXN0X2NvZGU7XG5cbiAgICAgICAgb2N0ZXRzLnNwbGljZSgwKTtcbiAgICAgICAgb2N0ZXRzLnB1c2guYXBwbHkob2N0ZXRzLCBuZXcgVWludDhBcnJheSggYXJyYnVmLCAwLCBhcnJidWZfaSApKTtcblxuICAgICAgICByZXR1cm4gb2N0ZXRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlY29kZSBhbiBhcnJheSBvZiBvY3RldCB2YWx1ZXMgYW5kIHJldHVybiBpdC5cbiAgICAgKiBUaGlzIHdpbGwgbXV0YXRlIHRoZSBnaXZlbiBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IG9jdGV0cyAtIFRoZSBvY3RldCB2YWx1ZXMgdG8gdHJhbnNmb3JtLlxuICAgICAqICAgICAgRWFjaCBhcnJheSBtZW1iZXIgc2hvdWxkIGJlIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgKDAtMjU1KS5cbiAgICAgKiAgICAgIFRoaXMgb2JqZWN0IGlzIG11dGF0ZWQgaW4gdGhlIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMge251bWJlcltdfSBUaGUgcGFzc2VkLWluIGFycmF5LlxuICAgICAqICBUaGlzIGlzIHRoZSBzYW1lIG9iamVjdCB0aGF0IGlzIHBhc3NlZCBpbi5cbiAgICAgKi9cbiAgICBzdGF0aWMgZGVjb2RlKG9jdGV0cykge1xuICAgICAgICBmb3IgKHZhciBvPW9jdGV0cy5sZW5ndGgtMTsgbz49MDsgby0tKSB7XG4gICAgICAgICAgICBpZiAob2N0ZXRzW29dID09PSBaRExFKSB7XG4gICAgICAgICAgICAgICAgb2N0ZXRzLnNwbGljZSggbywgMiwgb2N0ZXRzW28rMV0gLSA2NCApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9jdGV0cztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUsIFpETEUtZGVjb2RlLCBhbmQgcmV0dXJuIGJ5dGVzIGZyb20gdGhlIHBhc3NlZC1pbiBhcnJheS5cbiAgICAgKiBJZiB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBaRExFLWVuY29kZWQgYnl0ZXMgaXNu4oCZdCBhdmFpbGFibGUsXG4gICAgICogdGhlbiB0aGUgcGFzc2VkLWluIGFycmF5IGlzIHVubW9kaWZpZWQgKGFuZCB0aGUgcmV0dXJuIGlzIHVuZGVmaW5lZCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBvY3RldHMgLSBUaGUgb2N0ZXQgdmFsdWVzIHRvIHRyYW5zZm9ybS5cbiAgICAgKiAgICAgIEVhY2ggYXJyYXkgbWVtYmVyIHNob3VsZCBiZSBhbiA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyICgwLTI1NSkuXG4gICAgICogICAgICBUaGlzIG9iamVjdCBpcyBtdXRhdGVkIGluIHRoZSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgbnVtYmVyIG9mICh1bmRlY29kZWQpIGJ5dGVzIHRvIHNraXBcbiAgICAgKiAgICAgIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIOKAnG9jdGV0c+KAnSBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCAtIFRoZSBudW1iZXIgb2YgYnl0ZXMgKG9jdGV0IHZhbHVlcykgdG8gcmV0dXJuLlxuICAgICAqXG4gICAgICogQHJldHVybnMge251bWJlcltdfHVuZGVmaW5lZH0gQW4gYXJyYXkgd2l0aCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZlxuICAgICAqICAgICAgZGVjb2RlZCBvY3RldCB2YWx1ZXMsIG9yIHVuZGVmaW5lZCBpZiB0aGF0IG51bWJlciBvZiBkZWNvZGVkXG4gICAgICogICAgICBvY3RldHMgaXNu4oCZdCBhdmFpbGFibGUgKGdpdmVuIHRoZSBwYXNzZWQtaW4gb2Zmc2V0KS5cbiAgICAgKi9cbiAgICBzdGF0aWMgc3BsaWNlKG9jdGV0cywgb2Zmc2V0LCBjb3VudCkge1xuICAgICAgICB2YXIgc29fZmFyID0gMDtcblxuICAgICAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMDtcblxuICAgICAgICBmb3IgKHZhciBpID0gb2Zmc2V0OyBpPG9jdGV0cy5sZW5ndGggJiYgc29fZmFyPGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHNvX2ZhcisrO1xuXG4gICAgICAgICAgICBpZiAob2N0ZXRzW2ldID09PSBaRExFKSBpKys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc29fZmFyID09PSBjb3VudCkge1xuXG4gICAgICAgICAgICAvL0RvbuKAmXQgYWNjZXB0IHRyYWlsaW5nIFpETEUuIFRoaXMgY2hlY2sgd29ya3NcbiAgICAgICAgICAgIC8vYmVjYXVzZSBvZiB0aGUgaSsrIGxvZ2ljIGFib3ZlLlxuICAgICAgICAgICAgaWYgKG9jdGV0cy5sZW5ndGggPT09IChpIC0gMSkpIHJldHVybjtcblxuICAgICAgICAgICAgb2N0ZXRzLnNwbGljZSgwLCBvZmZzZXQpO1xuICAgICAgICAgICAgcmV0dXJuIFptb2RlbVpETEUuZGVjb2RlKCBvY3RldHMuc3BsaWNlKDAsIGkgLSBvZmZzZXQpICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgX3NldHVwX3pkbGVfdGFibGUoKSB7XG4gICAgICAgIHZhciB6c2VuZGxpbmVfdGFiID0gbmV3IEFycmF5KDI1Nik7XG4gICAgICAgIGZvciAodmFyIGk9MDsgaTx6c2VuZGxpbmVfdGFiLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIC8vMSA9IG5ldmVyIGVzY2FwZVxuICAgICAgICAgICAgLy8yID0gYWx3YXlzIGVzY2FwZVxuICAgICAgICAgICAgLy8zID0gZXNjYXBlIG9ubHkgaWYgdGhlIHByZXZpb3VzIGJ5dGUgd2FzICdAJ1xuXG4gICAgICAgICAgICAvL05ldmVyIGVzY2FwZSBjaGFyYWN0ZXJzIGZyb20gMHgyMCAoMzIpIHRvIDB4N2YgKDEyNykuXG4gICAgICAgICAgICAvL1RoaXMgaXMgdGhlIHJhbmdlIG9mIHByaW50YWJsZSBjaGFyYWN0ZXJzLCBwbHVzIERFTC5cbiAgICAgICAgICAgIC8vSSBndWVzcyBaTU9ERU0gZG9lc27igJl0IGNvbnNpZGVyIERFTCB0byBiZSBhIGNvbnRyb2wgY2hhcmFjdGVyP1xuICAgICAgICAgICAgaWYgKCBpICYgMHg2MCApIHtcbiAgICAgICAgICAgICAgICB6c2VuZGxpbmVfdGFiW2ldID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHN3aXRjaChpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgWkRMRTogIC8vTkI6IG5vIChaRExFIHwgMHg4MClcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBabW9kZW0uWk1MSUIuWE9GRjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBabW9kZW0uWk1MSUIuWE9OOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIChabW9kZW0uWk1MSUIuWE9GRiB8IDB4ODApOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIChabW9kZW0uWk1MSUIuWE9OIHwgMHg4MCk6XG4gICAgICAgICAgICAgICAgICAgICAgICB6c2VuZGxpbmVfdGFiW2ldID0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMHgxMDogIC8vIDAyMFxuICAgICAgICAgICAgICAgICAgICBjYXNlIDB4OTA6ICAvLyAwMjIwXG4gICAgICAgICAgICAgICAgICAgICAgICB6c2VuZGxpbmVfdGFiW2ldID0gdGhpcy5fY29uZmlnLnR1cmJvX2VzY2FwZSA/IDEgOiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAweDBkOiAgLy8gMDE1XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMHg4ZDogIC8vIDAyMTVcbiAgICAgICAgICAgICAgICAgICAgICAgIHpzZW5kbGluZV90YWJbaV0gPSB0aGlzLl9jb25maWcuZXNjYXBlX2N0cmxfY2hhcnMgPyAyIDogIXRoaXMuX2NvbmZpZy50dXJib19lc2NhcGUgPyAzIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB6c2VuZGxpbmVfdGFiW2ldID0gdGhpcy5fY29uZmlnLmVzY2FwZV9jdHJsX2NoYXJzID8gMiA6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5femRsZV90YWJsZSA9IHpzZW5kbGluZV90YWI7XG4gICAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBabW9kZW0gPSBtb2R1bGUuZXhwb3J0cztcblxuZnVuY3Rpb24gX2NyY19tZXNzYWdlKGdvdCwgZXhwZWN0ZWQpIHtcbiAgICB0aGlzLmdvdCA9IGdvdC5zbGljZSgwKTtcbiAgICB0aGlzLmV4cGVjdGVkID0gZXhwZWN0ZWQuc2xpY2UoMCk7XG4gICAgcmV0dXJuIFwiQ1JDIGNoZWNrIGZhaWxlZCEgKGdvdDogXCIgKyBnb3Quam9pbigpICsgXCI7IGV4cGVjdGVkOiBcIiArIGV4cGVjdGVkLmpvaW4oKSArIFwiKVwiO1xufVxuXG5mdW5jdGlvbiBfcGFzcyh2YWwpIHsgcmV0dXJuIHZhbCB9XG5cbmNvbnN0IFRZUEVfTUVTU0FHRSA9IHtcbiAgICBhYm9ydGVkOiBcIlNlc3Npb24gYWJvcnRlZFwiLFxuICAgIHBlZXJfYWJvcnRlZDogXCJQZWVyIGFib3J0ZWQgc2Vzc2lvblwiLFxuICAgIGFscmVhZHlfYWJvcnRlZDogXCJTZXNzaW9uIGFscmVhZHkgYWJvcnRlZFwiLFxuICAgIGNyYzogX2NyY19tZXNzYWdlLFxuICAgIHZhbGlkYXRpb246IF9wYXNzLFxufTtcblxuZnVuY3Rpb24gX2dlbmVyYXRlX21lc3NhZ2UodHlwZSkge1xuICAgIGNvbnN0IG1zZyA9IFRZUEVfTUVTU0FHRVt0eXBlXTtcbiAgICBzd2l0Y2ggKHR5cGVvZiBtc2cpIHtcbiAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgcmV0dXJuIG1zZztcbiAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICB2YXIgYXJnc19hZnRlcl90eXBlID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpLnNsaWNlKDEpO1xuICAgICAgICAgICAgcmV0dXJuIG1zZy5hcHBseSh0aGlzLCBhcmdzX2FmdGVyX3R5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xufVxuXG5abW9kZW0uRXJyb3IgPSBjbGFzcyBabW9kZW1FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcihtc2dfb3JfdHlwZSkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHZhciBnZW5lcmF0ZWQgPSBfZ2VuZXJhdGVfbWVzc2FnZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICBpZiAoZ2VuZXJhdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSBtc2dfb3JfdHlwZTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IGdlbmVyYXRlZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IG1zZ19vcl90eXBlO1xuICAgICAgICB9XG4gICAgfVxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgWm1vZGVtID0gbW9kdWxlLmV4cG9ydHM7XG5cbk9iamVjdC5hc3NpZ24oXG4gICAgWm1vZGVtLFxuICAgIHJlcXVpcmUoXCIuL2VuY29kZVwiKSxcbiAgICByZXF1aXJlKFwiLi96ZGxlXCIpLFxuICAgIHJlcXVpcmUoXCIuL3ptbGliXCIpLFxuICAgIHJlcXVpcmUoXCIuL3pjcmNcIiksXG4gICAgcmVxdWlyZShcIi4vemVycm9yXCIpXG4pO1xuXG5jb25zdCBaUEFEID0gJyonLmNoYXJDb2RlQXQoMCksXG4gICAgWkJJTiA9ICdBJy5jaGFyQ29kZUF0KDApLFxuICAgIFpIRVggPSAnQicuY2hhckNvZGVBdCgwKSxcbiAgICBaQklOMzIgPSAnQycuY2hhckNvZGVBdCgwKVxuO1xuXG4vL05COiBscnpzeiB1c2VzIFxceDhhIHJhdGhlciB0aGFuIFxceDBhIHdoZXJlIHRoZSBzcGVjc1xuLy9zYXkgdG8gdXNlIExGLiBGb3Igc2ltcGxpY2l0eSwgd2UgYXZvaWQgdGhhdCBhbmQganVzdCB1c2Vcbi8vdGhlIDctYml0IExGIGNoYXJhY3Rlci5cbmNvbnN0IEhFWF9IRUFERVJfQ1JMRiA9IFsgMHgwZCwgMHgwYSBdO1xuY29uc3QgSEVYX0hFQURFUl9DUkxGX1hPTiA9IEhFWF9IRUFERVJfQ1JMRi5zbGljZSgwKS5jb25jYXQoIFtabW9kZW0uWk1MSUIuWE9OXSApO1xuXG4vL1RoZXNlIGFyZSBtb3JlIG9yIGxlc3MgZHVwbGljYXRlZCBieSB0aGUgbG9naWMgaW4gdHJpbV9sZWFkaW5nX2dhcmJhZ2UoKS5cbi8vXG4vL1wiKipcIiArIFpETEVfQ0hBUiArIFwiQlwiXG5jb25zdCBIRVhfSEVBREVSX1BSRUZJWCA9IFsgWlBBRCwgWlBBRCwgWm1vZGVtLlpNTElCLlpETEUsIFpIRVggXTtcbmNvbnN0IEJJTkFSWTE2X0hFQURFUl9QUkVGSVggPSBbIFpQQUQsIFptb2RlbS5aTUxJQi5aRExFLCBaQklOIF07XG5jb25zdCBCSU5BUlkzMl9IRUFERVJfUFJFRklYID0gWyBaUEFELCBabW9kZW0uWk1MSUIuWkRMRSwgWkJJTjMyIF07XG5cbi8qKiBDbGFzcyB0aGF0IHJlcHJlc2VudHMgYSBaTU9ERU0gaGVhZGVyLiAqL1xuWm1vZGVtLkhlYWRlciA9IGNsYXNzIFptb2RlbUhlYWRlciB7XG5cbiAgICAvL2xyenN64oCZcyDigJxzeuKAnSBjb21tYW5kIHNlbmRzIGEgcmFuZG9tICg/KSBDUi8weDBkIGJ5dGVcbiAgICAvL2FmdGVyIFpFT0YuIExldOKAmXMgYWNjb21tb2RhdGUgMHgwYSwgMHgwZCwgMHg4YSwgYW5kIDB4OGQuXG4gICAgLy9cbiAgICAvL0Fsc28sIHdoZW4geW91IHNraXAgYSBmaWxlLCBzeiBvdXRwdXRzIGEgbWVzc2FnZSBhYm91dCBpdC5cbiAgICAvL1xuICAgIC8vSXQgYXBwZWFycyB0aGF0IHdl4oCZcmUgc3VwcG9zZWQgdG8gaWdub3JlIGFueXRoaW5nIHVudGlsXG4gICAgLy9bIFpQQUQsIFpETEUgXSB3aGVuIHdl4oCZcmUgbG9va2luZyBmb3IgYSBoZWFkZXIuXG5cbiAgICAvKipcbiAgICAgKiBXZWVkIG91dCB0aGUgbGVhZGluZyBieXRlcyB0aGF0IGFyZW7igJl0IHZhbGlkIHRvIHN0YXJ0IGEgWk1PREVNIGhlYWRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IGlidWZmZXIgLSBUaGUgb2N0ZXQgdmFsdWVzIHRvIHBhcnNlLlxuICAgICAqICAgICAgRWFjaCBhcnJheSBtZW1iZXIgc2hvdWxkIGJlIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgKDAtMjU1KS5cbiAgICAgKiAgICAgIFRoaXMgb2JqZWN0IGlzIG11dGF0ZWQgaW4gdGhlIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMge251bWJlcltdfSBUaGUgb2N0ZXQgdmFsdWVzIHRoYXQgd2VyZSByZW1vdmVkIGZyb20gdGhlIHN0YXJ0XG4gICAgICogICAgICBvZiDigJxpYnVmZmVy4oCdLiBPcmRlciBpcyBwcmVzZXJ2ZWQuXG4gICAgICovXG4gICAgc3RhdGljIHRyaW1fbGVhZGluZ19nYXJiYWdlKGlidWZmZXIpIHtcbiAgICAgICAgLy9TaW5jZSB0aGVyZeKAmXMgbm8gZXNjYXBpbmcgb2YgdGhlIG91dHB1dCBpdOKAmXMgcG9zc2libGVcbiAgICAgICAgLy90aGF0IHRoZSBnYXJiYWdlIGNvdWxkIHRyaXAgdXMgdXAsIGUuZy4sIGJ5IGhhdmluZyBhIGZpbGVuYW1lXG4gICAgICAgIC8vYmUgYSBsZWdpdCBaTU9ERU0gaGVhZGVyLiBCdXQgdGhhdOKAmXMgcHJldHR5IHVubGlrZWx5LlxuXG4gICAgICAgIC8vRXZlcnl0aGluZyB1cCB0byB0aGUgZmlyc3QgWlBBRDogZ2FyYmFnZVxuICAgICAgICAvL0lmIGZpcnN0IFpQQUQgaGFzIGFzdGVyaXNrICsgWkRMRVxuXG4gICAgICAgIHZhciBnYXJiYWdlID0gW107XG5cbiAgICAgICAgdmFyIGRpc2NhcmRfYWxsLCBwYXJzZXIsIG5leHRfWlBBRF9hdF9sZWFzdCA9IDA7XG5cbiAgICAgIFRSSU1fTE9PUDpcbiAgICAgICAgd2hpbGUgKGlidWZmZXIubGVuZ3RoICYmICFwYXJzZXIpIHtcbiAgICAgICAgICAgIHZhciBmaXJzdF9aUEFEID0gaWJ1ZmZlci5pbmRleE9mKFpQQUQpO1xuXG4gICAgICAgICAgICAvL05vIFpQQUQ/IFRoZW4gd2UgcHVyZ2UgdGhlIGlucHV0IGJ1ZmZlciBjdXogaXTigJlzIGFsbCBnYXJiYWdlLlxuICAgICAgICAgICAgaWYgKGZpcnN0X1pQQUQgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgZGlzY2FyZF9hbGwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrIFRSSU1fTE9PUDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdhcmJhZ2UucHVzaC5hcHBseSggZ2FyYmFnZSwgaWJ1ZmZlci5zcGxpY2UoMCwgZmlyc3RfWlBBRCkgKTtcblxuICAgICAgICAgICAgICAgIC8vYnVmZmVyIGhhcyBvbmx5IGFuIGFzdGVyaXNrIOKApiBnb3R0YSBzZWUgYWJvdXQgbW9yZVxuICAgICAgICAgICAgICAgIGlmIChpYnVmZmVyLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgVFJJTV9MT09QO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpYnVmZmVyWzFdID09PSBaUEFEKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vVHdvIGxlYWRpbmcgWlBBRHMgc2hvdWxkIGJlIGEgaGV4IGhlYWRlci5cblxuICAgICAgICAgICAgICAgICAgICAvL1dl4oCZcmUgYXNzdW1pbmcgdGhlIGxlbmd0aCBvZiB0aGUgaGVhZGVyIGlzIDQgaW5cbiAgICAgICAgICAgICAgICAgICAgLy90aGlzIGxvZ2ljIOKApiBidXQgWk1PREVNIGlzbuKAmXQgbGlrZWx5IHRvIGNoYW5nZSwgc28uXG4gICAgICAgICAgICAgICAgICAgIGlmIChpYnVmZmVyLmxlbmd0aCA8IEhFWF9IRUFERVJfUFJFRklYLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlidWZmZXIuam9pbigpID09PSBIRVhfSEVBREVSX1BSRUZJWC5zbGljZSgwLCBpYnVmZmVyLmxlbmd0aCkuam9pbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9XZSBoYXZlIGFuIGluY29tcGxldGUgZnJhZ21lbnQgdGhhdCBtYXRjaGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9IRVhfSEVBREVSX1BSRUZJWC4gU28gZG9u4oCZdCB0cmltIGFueSBtb3JlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFRSSU1fTE9PUDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy9PdGhlcndpc2UsIHdl4oCZbGwgZGlzY2FyZCBvbmUuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKGlidWZmZXJbMl0gPT09IEhFWF9IRUFERVJfUFJFRklYWzJdKSAmJiAoaWJ1ZmZlclszXSA9PT0gSEVYX0hFQURFUl9QUkVGSVhbM10pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIgPSBfcGFyc2VfaGV4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlidWZmZXJbMV0gPT09IFptb2RlbS5aTUxJQi5aRExFKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vWlBBRCArIFpETEUgc2hvdWxkIGJlIGEgYmluYXJ5IGhlYWRlci5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlidWZmZXIubGVuZ3RoIDwgQklOQVJZMTZfSEVBREVSX1BSRUZJWC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFRSSU1fTE9PUDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpYnVmZmVyWzJdID09PSBCSU5BUlkxNl9IRUFERVJfUFJFRklYWzJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIgPSBfcGFyc2VfYmluYXJ5MTY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaWJ1ZmZlclsyXSA9PT0gQklOQVJZMzJfSEVBREVSX1BSRUZJWFsyXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyID0gX3BhcnNlX2JpbmFyeTMyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFwYXJzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2FyYmFnZS5wdXNoKCBpYnVmZmVyLnNoaWZ0KCkgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlzY2FyZF9hbGwpIHtcbiAgICAgICAgICAgIGdhcmJhZ2UucHVzaC5hcHBseSggZ2FyYmFnZSwgaWJ1ZmZlci5zcGxpY2UoMCkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vRm9yIG5vdyB3ZeKAmWxsIHRocm93IGF3YXkgdGhlIHBhcnNlci5cbiAgICAgICAgLy9JdOKAmXMgbm90IGhhcmQgZm9yIHBhcnNlKCkgdG8gZGlzY2VybiBhbnl3YXkuXG5cbiAgICAgICAgcmV0dXJuIGdhcmJhZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2Ugb3V0IGEgSGVhZGVyIG9iamVjdCBmcm9tIGEgZ2l2ZW4gYXJyYXkgb2Ygb2N0ZXQgdmFsdWVzLlxuICAgICAqXG4gICAgICogQW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiB0aGUgZ2l2ZW4gYnl0ZXMgYXJlIGRlZmluaXRpdmVseSBpbnZhbGlkXG4gICAgICogYXMgaGVhZGVyIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IG9jdGV0cyAtIFRoZSBvY3RldCB2YWx1ZXMgdG8gcGFyc2UuXG4gICAgICogICAgICBFYWNoIGFycmF5IG1lbWJlciBzaG91bGQgYmUgYW4gOC1iaXQgdW5zaWduZWQgaW50ZWdlciAoMC0yNTUpLlxuICAgICAqICAgICAgVGhpcyBvYmplY3QgaXMgbXV0YXRlZCBpbiB0aGUgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7SGVhZGVyfHVuZGVmaW5lZH0gQW4gaW5zdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIEhlYWRlclxuICAgICAqICAgICAgc3ViY2xhc3MsIG9yIHVuZGVmaW5lZCBpZiBub3QgZW5vdWdoIG9jdGV0IHZhbHVlcyBhcmUgZ2l2ZW5cbiAgICAgKiAgICAgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZXJlIGlzIGEgdmFsaWQgaGVhZGVyIGhlcmUgb3Igbm90LlxuICAgICAqL1xuICAgIHN0YXRpYyBwYXJzZShvY3RldHMpIHtcbiAgICAgICAgdmFyIGhkcjtcbiAgICAgICAgaWYgKG9jdGV0c1sxXSA9PT0gWlBBRCkge1xuICAgICAgICAgICAgaGRyID0gX3BhcnNlX2hleChvY3RldHMpO1xuICAgICAgICAgICAgcmV0dXJuIGhkciAmJiBbIGhkciwgMTYgXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsc2UgaWYgKG9jdGV0c1syXSA9PT0gWkJJTikge1xuICAgICAgICAgICAgaGRyID0gX3BhcnNlX2JpbmFyeTE2KG9jdGV0cywgMyk7XG4gICAgICAgICAgICByZXR1cm4gaGRyICYmIFsgaGRyLCAxNiBdO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxzZSBpZiAob2N0ZXRzWzJdID09PSBaQklOMzIpIHtcbiAgICAgICAgICAgIGhkciA9IF9wYXJzZV9iaW5hcnkzMihvY3RldHMpO1xuICAgICAgICAgICAgcmV0dXJuIGhkciAmJiBbIGhkciwgMzIgXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvY3RldHMubGVuZ3RoIDwgMykgcmV0dXJuO1xuXG4gICAgICAgIHRocm93KCBcIlVucmVjb2duaXplZC91bnN1cHBvcnRlZCBvY3RldHM6IFwiICsgb2N0ZXRzLmpvaW4oKSApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkIGEgSGVhZGVyIHN1YmNsYXNzIGdpdmVuIGEgbmFtZSBhbmQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgaGVhZGVyIHR5cGUgbmFtZSwgZS5nLiwg4oCcWlJJTklU4oCdLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsuLi4qfSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBhcHByb3ByaWF0ZVxuICAgICAqICAgICAgc3ViY2xhc3MgY29uc3RydWN0b3IuIFRoZXNlIGFyZW7igJl0IGRvY3VtZW50ZWQgY3VycmVudGx5XG4gICAgICogICAgICBidXQgYXJlIHByZXR0eSBlYXN5IHRvIGdsZWFuIGZyb20gdGhlIGNvZGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7SGVhZGVyfSBBbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgSGVhZGVyIHN1YmNsYXNzLlxuICAgICAqL1xuICAgIHN0YXRpYyBidWlsZChuYW1lIC8qLCBhcmdzICovKSB7XG4gICAgICAgIHZhciBhcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBbYXJndW1lbnRzWzBdXSA6IEFycmF5LmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuXG4gICAgICAgIC8vVE9ETzogbWFrZSB0aGlzIGJldHRlclxuICAgICAgICB2YXIgQ3RyID0gRlJBTUVfTkFNRV9DUkVBVE9SW25hbWVdO1xuICAgICAgICBpZiAoIUN0cikgdGhyb3coXCJObyBmcmFtZSBjbGFzcyDigJxcIiArIG5hbWUgKyBcIuKAnSBpcyBkZWZpbmVkIVwiKTtcblxuICAgICAgICBhcmdzLnNoaWZ0KCk7XG5cbiAgICAgICAgLy9QbGVnaCFcbiAgICAgICAgLy9odHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMzE5MzMxMC9jb25zdHItYXBwbHl0aGlzLWFyZ3MtaW4tZXM2LWNsYXNzZXNcbiAgICAgICAgdmFyIGhkciA9IG5ldyAoQ3RyLmJpbmQuYXBwbHkoQ3RyLCBbbnVsbF0uY29uY2F0KGFyZ3MpKSk7XG5cbiAgICAgICAgcmV0dXJuIGhkcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIG9jdGV0IHZhbHVlcyBhcnJheSB0aGF0IHJlcHJlc2VudHMgdGhlIG9iamVjdFxuICAgICAqIGluIFpNT0RFTSBoZXggZW5jb2RpbmcuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyW119IEFuIGFycmF5IG9mIG9jdGV0IHZhbHVlcyBzdWl0YWJsZSBmb3Igc2VuZGluZ1xuICAgICAqICAgICAgYXMgYmluYXJ5IGRhdGEuXG4gICAgICovXG4gICAgdG9faGV4KCkge1xuICAgICAgICB2YXIgdG9fY3JjID0gdGhpcy5fY3JjX2J5dGVzKCk7XG5cbiAgICAgICAgcmV0dXJuIEhFWF9IRUFERVJfUFJFRklYLmNvbmNhdChcbiAgICAgICAgICAgIFptb2RlbS5FTkNPREVMSUIub2N0ZXRzX3RvX2hleCggdG9fY3JjLmNvbmNhdCggWm1vZGVtLkNSQy5jcmMxNih0b19jcmMpICkgKSxcbiAgICAgICAgICAgIHRoaXMuX2hleF9oZWFkZXJfZW5kaW5nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBvY3RldCB2YWx1ZXMgYXJyYXkgdGhhdCByZXByZXNlbnRzIHRoZSBvYmplY3RcbiAgICAgKiBpbiBaTU9ERU0gYmluYXJ5IGVuY29kaW5nIHdpdGggYSAxNi1iaXQgQ1JDLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtaRExFfSB6ZW5jb2RlciAtIEEgWkRMRSBpbnN0YW5jZSB0byB1c2UgZm9yXG4gICAgICogICAgICBaRExFIGVuY29kaW5nLlxuICAgICAqXG4gICAgICogQHJldHVybnMge251bWJlcltdfSBBbiBhcnJheSBvZiBvY3RldCB2YWx1ZXMgc3VpdGFibGUgZm9yIHNlbmRpbmdcbiAgICAgKiAgICAgIGFzIGJpbmFyeSBkYXRhLlxuICAgICAqL1xuICAgIHRvX2JpbmFyeTE2KHplbmNvZGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b19iaW5hcnkoemVuY29kZXIsIEJJTkFSWTE2X0hFQURFUl9QUkVGSVgsIFptb2RlbS5DUkMuY3JjMTYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgb2N0ZXQgdmFsdWVzIGFycmF5IHRoYXQgcmVwcmVzZW50cyB0aGUgb2JqZWN0XG4gICAgICogaW4gWk1PREVNIGJpbmFyeSBlbmNvZGluZyB3aXRoIGEgMzItYml0IENSQy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7WkRMRX0gemVuY29kZXIgLSBBIFpETEUgaW5zdGFuY2UgdG8gdXNlIGZvclxuICAgICAqICAgICAgWkRMRSBlbmNvZGluZy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJbXX0gQW4gYXJyYXkgb2Ygb2N0ZXQgdmFsdWVzIHN1aXRhYmxlIGZvciBzZW5kaW5nXG4gICAgICogICAgICBhcyBiaW5hcnkgZGF0YS5cbiAgICAgKi9cbiAgICB0b19iaW5hcnkzMih6ZW5jb2Rlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9fYmluYXJ5KHplbmNvZGVyLCBCSU5BUlkzMl9IRUFERVJfUFJFRklYLCBabW9kZW0uQ1JDLmNyYzMyKTtcbiAgICB9XG5cbiAgICAvL1RoaXMgaXMgbmV2ZXIgY2FsbGVkIGRpcmVjdGx5LCBidXQgb25seSBhcyBzdXBlcigpLlxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2J5dGVzNCkge1xuICAgICAgICAgICAgdGhpcy5fYnl0ZXM0ID0gWzAsIDAsIDAsIDBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3RvX2JpbmFyeSh6ZW5jb2RlciwgcHJlZml4LCBjcmNfZnVuYykge1xuICAgICAgICB2YXIgdG9fY3JjID0gdGhpcy5fY3JjX2J5dGVzKCk7XG5cbiAgICAgICAgLy9Cb3RoIHRoZSA0LWJ5dGUgcGF5bG9hZCBhbmQgdGhlIENSQyBieXRlcyBhcmUgWkRMRS1lbmNvZGVkLlxuICAgICAgICB2YXIgb2N0ZXRzID0gcHJlZml4LmNvbmNhdChcbiAgICAgICAgICAgIHplbmNvZGVyLmVuY29kZSggdG9fY3JjLmNvbmNhdCggY3JjX2Z1bmModG9fY3JjKSApIClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gb2N0ZXRzO1xuICAgIH1cblxuICAgIF9jcmNfYnl0ZXMoKSB7XG4gICAgICAgIHJldHVybiBbIHRoaXMuVFlQRU5VTSBdLmNvbmNhdCh0aGlzLl9ieXRlczQpO1xuICAgIH1cbn1cblptb2RlbS5IZWFkZXIucHJvdG90eXBlLl9oZXhfaGVhZGVyX2VuZGluZyA9IEhFWF9IRUFERVJfQ1JMRl9YT047XG5cbmNsYXNzIFpSUUlOSVRfSEVBREVSIGV4dGVuZHMgWm1vZGVtLkhlYWRlciB7fTtcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmNvbnN0IFpSSU5JVF9GTEFHID0ge1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQml0IE1hc2tzIGZvciBaUklOSVQgZmxhZ3MgYnl0ZSBaRjBcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDQU5GRFg6IDB4MDEsICAvLyBSeCBjYW4gc2VuZCBhbmQgcmVjZWl2ZSB0cnVlIEZEWFxuICAgIENBTk9WSU86IDB4MDIsIC8vIFJ4IGNhbiByZWNlaXZlIGRhdGEgZHVyaW5nIGRpc2sgSS9PXG4gICAgQ0FOQlJLOiAweDA0LCAgLy8gUnggY2FuIHNlbmQgYSBicmVhayBzaWduYWxcbiAgICBDQU5DUlk6IDB4MDgsICAvLyBSZWNlaXZlciBjYW4gZGVjcnlwdCAtLSBub3RoaW5nIGRvZXMgdGhpc1xuICAgIENBTkxaVzogMHgxMCwgIC8vIFJlY2VpdmVyIGNhbiB1bmNvbXByZXNzIC0tIG5vdGhpbmcgZG9lcyB0aGlzXG4gICAgQ0FORkMzMjogMHgyMCwgLy8gUmVjZWl2ZXIgY2FuIHVzZSAzMiBiaXQgRnJhbWUgQ2hlY2tcbiAgICBFU0NDVEw6IDB4NDAsICAvLyBSZWNlaXZlciBleHBlY3RzIGN0bCBjaGFycyB0byBiZSBlc2NhcGVkXG4gICAgRVNDODogMHg4MCwgICAgLy8gUmVjZWl2ZXIgZXhwZWN0cyA4dGggYml0IHRvIGJlIGVzY2FwZWRcbn07XG5cbmZ1bmN0aW9uIF9nZXRfWlJJTklUX2ZsYWdfbnVtKGZsKSB7XG4gICAgaWYgKCFaUklOSVRfRkxBR1tmbF0pIHtcbiAgICAgICAgdGhyb3cgbmV3IFptb2RlbS5FcnJvcihcIkludmFsaWQgWlJJTklUIGZsYWc6IFwiICsgZmwpO1xuICAgIH1cbiAgICByZXR1cm4gWlJJTklUX0ZMQUdbZmxdO1xufVxuXG5jbGFzcyBaUklOSVRfSEVBREVSIGV4dGVuZHMgWm1vZGVtLkhlYWRlciB7XG4gICAgY29uc3RydWN0b3IoZmxhZ3NfYXJyLCBidWZzaXplKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHZhciBmbGFnc19udW0gPSAwO1xuICAgICAgICBpZiAoIWJ1ZnNpemUpIGJ1ZnNpemUgPSAwO1xuXG4gICAgICAgIGZsYWdzX2Fyci5mb3JFYWNoKCBmdW5jdGlvbihmbCkge1xuICAgICAgICAgICAgZmxhZ3NfbnVtIHw9IF9nZXRfWlJJTklUX2ZsYWdfbnVtKGZsKTtcbiAgICAgICAgfSApO1xuXG4gICAgICAgIHRoaXMuX2J5dGVzNCA9IFtcbiAgICAgICAgICAgIGJ1ZnNpemUgJiAweGZmLFxuICAgICAgICAgICAgYnVmc2l6ZSA+PiA4LFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGZsYWdzX251bSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvL3VuZGVmaW5lZCBpZiBub25zdG9wIEkvTyBpcyBhbGxvd2VkXG4gICAgZ2V0X2J1ZmZlcl9zaXplKCkge1xuICAgICAgICByZXR1cm4gWm1vZGVtLkVOQ09ERUxJQi51bnBhY2tfdTE2X2JlKCB0aGlzLl9ieXRlczQuc2xpY2UoMCwgMikgKSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy9VbmltcGxlbWVudGVkOlxuICAgIC8vICBjYW5fZGVjcnlwdFxuICAgIC8vICBjYW5fZGVjb21wcmVzc1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9mdW5jdGlvbiBuYW1lcyB0YWtlbiBmcm9tIEphY3F1ZXMgTWF0dGhlaWrigJlzIGltcGxlbWVudGF0aW9uLFxuICAgIC8vYXMgdXNlZCBpbiBzeW5jdGVybS5cblxuICAgIGNhbl9mdWxsX2R1cGxleCgpIHtcbiAgICAgICAgcmV0dXJuICEhKCB0aGlzLl9ieXRlczRbM10gJiBaUklOSVRfRkxBRy5DQU5GRFggKTtcbiAgICB9XG5cbiAgICBjYW5fb3ZlcmxhcF9pbygpIHtcbiAgICAgICAgcmV0dXJuICEhKCB0aGlzLl9ieXRlczRbM10gJiBaUklOSVRfRkxBRy5DQU5PVklPICk7XG4gICAgfVxuXG4gICAgY2FuX2JyZWFrKCkge1xuICAgICAgICByZXR1cm4gISEoIHRoaXMuX2J5dGVzNFszXSAmIFpSSU5JVF9GTEFHLkNBTkJSSyApO1xuICAgIH1cblxuICAgIGNhbl9mY3NfMzIoKSB7XG4gICAgICAgIHJldHVybiAhISggdGhpcy5fYnl0ZXM0WzNdICYgWlJJTklUX0ZMQUcuQ0FORkMzMiApO1xuICAgIH1cblxuICAgIGVzY2FwZV9jdHJsX2NoYXJzKCkge1xuICAgICAgICByZXR1cm4gISEoIHRoaXMuX2J5dGVzNFszXSAmIFpSSU5JVF9GTEFHLkVTQ0NUTCApO1xuICAgIH1cblxuICAgIC8vSXMgdGhpcyB1c2VkPyBJIGRvbuKAmXQgc2VlIGl0IHVzZWQgaW4gbHJ6c3ogb3Igc3luY3Rlcm1cbiAgICAvL0xvb2tzIGxpa2UgaXQgd2FzIGEg4oCcZm9yZXNlZW7igJ0gZmVhdHVyZSB0aGF0IEZvcnNiZXJnXG4gICAgLy9uZXZlciBpbXBsZW1lbnRlZC4gKFRoZSBuZWVkIGZvciBpdCB3ZW50IGF3YXksIG1heWJlPylcbiAgICBlc2NhcGVfOHRoX2JpdCgpIHtcbiAgICAgICAgcmV0dXJuICEhKCB0aGlzLl9ieXRlczRbM10gJiBaUklOSVRfRkxBRy5FU0M4ICk7XG4gICAgfVxufTtcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vU2luY2UgY29udGV4dCBtYWtlcyBjbGVhciB3aGF04oCZcyBnb2luZyBvbiwgd2UgdXNlIHRoZXNlXG4vL3JhdGhlciB0aGFuIHRoZSBULXByZWZpeGVkIGNvbnN0YW50cyBpbiB0aGUgc3BlY2lmaWNhdGlvbi5cbmNvbnN0IFpTSU5JVF9GTEFHID0ge1xuICAgIEVTQ0NUTDogMHg0MCwgIC8vIFRyYW5zbWl0dGVyIHdpbGwgZXNjYXBlIGN0bCBjaGFyc1xuICAgIEVTQzg6IDB4ODAsICAgIC8vIFRyYW5zbWl0dGVyIHdpbGwgZXNjYXBlIDh0aCBiaXRcbn07XG5cbmZ1bmN0aW9uIF9nZXRfWlNJTklUX2ZsYWdfbnVtKGZsKSB7XG4gICAgaWYgKCFaU0lOSVRfRkxBR1tmbF0pIHtcbiAgICAgICAgdGhyb3coXCJJbnZhbGlkIFpTSU5JVCBmbGFnOiBcIiArIGZsKTtcbiAgICB9XG4gICAgcmV0dXJuIFpTSU5JVF9GTEFHW2ZsXTtcbn1cblxuY2xhc3MgWlNJTklUX0hFQURFUiBleHRlbmRzIFptb2RlbS5IZWFkZXIge1xuICAgIGNvbnN0cnVjdG9yKCBmbGFnc19hcnIsIGF0dG5fc2VxX2FyciApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdmFyIGZsYWdzX251bSA9IDA7XG5cbiAgICAgICAgZmxhZ3NfYXJyLmZvckVhY2goIGZ1bmN0aW9uKGZsKSB7XG4gICAgICAgICAgICBmbGFnc19udW0gfD0gX2dldF9aU0lOSVRfZmxhZ19udW0oZmwpO1xuICAgICAgICB9ICk7XG5cbiAgICAgICAgdGhpcy5fYnl0ZXM0ID0gWyAwLCAwLCAwLCBmbGFnc19udW0gXTtcblxuICAgICAgICBpZiAoYXR0bl9zZXFfYXJyKSB7XG4gICAgICAgICAgICBpZiAoYXR0bl9zZXFfYXJyLmxlbmd0aCA+IDMxKSB7XG4gICAgICAgICAgICAgICAgdGhyb3coXCJBdHRuIHNlcXVlbmNlIG11c3QgYmUgPD0gMzEgYnl0ZXNcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYXR0bl9zZXFfYXJyLnNvbWUoIGZ1bmN0aW9uKG51bSkgeyByZXR1cm4gbnVtID4gMjU1IH0gKSkge1xuICAgICAgICAgICAgICAgIHRocm93KFwiQXR0biBzZXF1ZW5jZSAoXCIgKyBhdHRuX3NlcV9hcnIgKyBcIikgbXVzdCBiZSA8MjU2XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fZGF0YSA9IGF0dG5fc2VxX2Fyci5jb25jYXQoWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVzY2FwZV9jdHJsX2NoYXJzKCkge1xuICAgICAgICByZXR1cm4gISEoIHRoaXMuX2J5dGVzNFszXSAmIFpTSU5JVF9GTEFHLkVTQ0NUTCApO1xuICAgIH1cblxuICAgIC8vSXMgdGhpcyB1c2VkPyBJIGRvbuKAmXQgc2VlIGl0IHVzZWQgaW4gbHJ6c3ogb3Igc3luY3Rlcm1cbiAgICBlc2NhcGVfOHRoX2JpdCgpIHtcbiAgICAgICAgcmV0dXJuICEhKCB0aGlzLl9ieXRlczRbM10gJiBaU0lOSVRfRkxBRy5FU0M4ICk7XG4gICAgfVxufVxuXG4vL1RodXMgZmFyIGl0IGRvZXNu4oCZdCBzZWVtIHdlIHJlYWxseSBuZWVkIHRoaXMgaGVhZGVyIGV4Y2VwdCB0byByZXNwb25kXG4vL3RvIFpTSU5JVCwgd2hpY2ggZG9lc27igJl0IHJlcXVpcmUgYSBwYXlsb2FkLlxuY2xhc3MgWkFDS19IRUFERVIgZXh0ZW5kcyBabW9kZW0uSGVhZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkNCkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIGlmIChwYXlsb2FkNCkge1xuICAgICAgICAgICAgdGhpcy5fYnl0ZXM0ID0gcGF5bG9hZDQuc2xpY2UoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblpBQ0tfSEVBREVSLnByb3RvdHlwZS5faGV4X2hlYWRlcl9lbmRpbmcgPSBIRVhfSEVBREVSX0NSTEY7XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBaRklMRV9WQUxVRVMgPSB7XG5cbiAgICAvL1pGMyAoaS5lLiwgZmlyc3QgYnl0ZSlcbiAgICBleHRlbmRlZDoge1xuICAgICAgICBzcGFyc2U6IDB4NDAsICAgLy9aWFNQQVJTXG4gICAgfSxcblxuICAgIC8vWkYyXG4gICAgdHJhbnNwb3J0OiBbXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgXCJjb21wcmVzc1wiLCAgICAgICAgIC8vWlRMWldcbiAgICAgICAgXCJlbmNyeXB0XCIsICAgICAgICAgIC8vWlRDUllQVFxuICAgICAgICBcInJsZVwiLCAgICAgICAgICAgICAgLy9aVFJMRVxuICAgIF0sXG5cbiAgICAvL1pGMVxuICAgIG1hbmFnZW1lbnQ6IFtcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBcIm5ld2VyX29yX2xvbmdlclwiLCAgLy9aRjFfWk1ORVdMXG4gICAgICAgIFwiY3JjXCIsICAgICAgICAgICAgICAvL1pGMV9aTUNSQ1xuICAgICAgICBcImFwcGVuZFwiLCAgICAgICAgICAgLy9aRjFfWk1BUE5EXG4gICAgICAgIFwiY2xvYmJlclwiLCAgICAgICAgICAvL1pGMV9aTUNMT0JcbiAgICAgICAgXCJuZXdlclwiLCAgICAgICAgICAgIC8vWkYxX1pNTkVXXG4gICAgICAgIFwibXRpbWVfb3JfbGVuZ3RoXCIsICAvL1pGMV9aTU5FV1xuICAgICAgICBcInByb3RlY3RcIiwgICAgICAgICAgLy9aRjFfWk1QUk9UXG4gICAgICAgIFwicmVuYW1lXCIsICAgICAgICAgICAvL1pGMV9aTVBST1RcbiAgICBdLFxuXG4gICAgLy9aRjAgKGkuZS4sIGxhc3QgYnl0ZSlcbiAgICBjb252ZXJzaW9uOiBbXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgXCJiaW5hcnlcIiwgICAgICAgICAgIC8vWkNCSU5cbiAgICAgICAgXCJ0ZXh0XCIsICAgICAgICAgICAgIC8vWkNOTFxuICAgICAgICBcInJlc3VtZVwiLCAgICAgICAgICAgLy9aQ1JFU1VNXG4gICAgXSxcbn07XG5cbmNvbnN0IFpGSUxFX09SREVSID0gW1wiZXh0ZW5kZWRcIiwgXCJ0cmFuc3BvcnRcIiwgXCJtYW5hZ2VtZW50XCIsIFwiY29udmVyc2lvblwiXTtcblxuY29uc3QgWk1TS05PTE9DID0gMHg4MCxcbiAgICBNQU5BR0VNRU5UX01BU0sgPSAweDFmLFxuICAgIFpYU1BBUlMgPSAweDQwXG47XG5cbmNsYXNzIFpGSUxFX0hFQURFUiBleHRlbmRzIFptb2RlbS5IZWFkZXIge1xuXG4gICAgLy9UT0RPOiBhbGxvdyBvcHRpb25zIG9uIGluc3RhbnRpYXRpb25cbiAgICBnZXRfb3B0aW9ucygpIHtcbiAgICAgICAgdmFyIG9wdHMgPSB7XG4gICAgICAgICAgICBzcGFyc2U6ICEhKHRoaXMuX2J5dGVzNFswXSAmIFpYU1BBUlMpLFxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBieXRlc19jb3B5ID0gdGhpcy5fYnl0ZXM0LnNsaWNlKDApO1xuXG4gICAgICAgIFpGSUxFX09SREVSLmZvckVhY2goIGZ1bmN0aW9uKGtleSwgaSkge1xuICAgICAgICAgICAgaWYgKFpGSUxFX1ZBTFVFU1trZXldIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBcIm1hbmFnZW1lbnRcIikge1xuICAgICAgICAgICAgICAgICAgICBvcHRzLnNraXBfaWZfYWJzZW50ID0gISEoYnl0ZXNfY29weVtpXSAmIFpNU0tOT0xPQyk7XG4gICAgICAgICAgICAgICAgICAgIGJ5dGVzX2NvcHlbaV0gJj0gTUFOQUdFTUVOVF9NQVNLO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9wdHNba2V5XSA9IFpGSUxFX1ZBTFVFU1trZXldWyBieXRlc19jb3B5W2ldIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBleHRrZXkgaW4gWkZJTEVfVkFMVUVTW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0c1tleHRrZXldID0gISEoYnl0ZXNfY29weVtpXSAmIFpGSUxFX1ZBTFVFU1trZXldW2V4dGtleV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0c1tleHRrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBieXRlc19jb3B5W2ldIF49IFpGSUxFX1ZBTFVFU1trZXldW2V4dGtleV1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFvcHRzW2tleV0gJiYgYnl0ZXNfY29weVtpXSkge1xuICAgICAgICAgICAgICAgIG9wdHNba2V5XSA9IFwidW5rbm93bjpcIiArIGJ5dGVzX2NvcHlbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gKTtcblxuICAgICAgICByZXR1cm4gb3B0cztcbiAgICB9XG59XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vL0VtcHR5IGhlYWRlcnMgLSBpbiBhZGRpdGlvbiB0byBaUlFJTklUXG5jbGFzcyBaU0tJUF9IRUFERVIgZXh0ZW5kcyBabW9kZW0uSGVhZGVyIHt9XG4vL05vIG5lZWQgZm9yIFpOQUtcbmNsYXNzIFpBQk9SVF9IRUFERVIgZXh0ZW5kcyBabW9kZW0uSGVhZGVyIHt9XG5jbGFzcyBaRklOX0hFQURFUiBleHRlbmRzIFptb2RlbS5IZWFkZXIge31cbmNsYXNzIFpGRVJSX0hFQURFUiBleHRlbmRzIFptb2RlbS5IZWFkZXIge31cblxuWkZJTl9IRUFERVIucHJvdG90eXBlLl9oZXhfaGVhZGVyX2VuZGluZyA9IEhFWF9IRUFERVJfQ1JMRjtcblxuY2xhc3MgWk9mZnNldEhlYWRlciBleHRlbmRzIFptb2RlbS5IZWFkZXIge1xuICAgIGNvbnN0cnVjdG9yKG9mZnNldCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9ieXRlczQgPSBabW9kZW0uRU5DT0RFTElCLnBhY2tfdTMyX2xlKG9mZnNldCk7XG4gICAgfVxuXG4gICAgZ2V0X29mZnNldCgpIHtcbiAgICAgICAgcmV0dXJuIFptb2RlbS5FTkNPREVMSUIudW5wYWNrX3UzMl9sZSh0aGlzLl9ieXRlczQpO1xuICAgIH1cbn1cblxuY2xhc3MgWlJQT1NfSEVBREVSIGV4dGVuZHMgWk9mZnNldEhlYWRlciB7fTtcbmNsYXNzIFpEQVRBX0hFQURFUiBleHRlbmRzIFpPZmZzZXRIZWFkZXIge307XG5jbGFzcyBaRU9GX0hFQURFUiBleHRlbmRzIFpPZmZzZXRIZWFkZXIge307XG5cbi8vQXMgcmVxdWVzdCwgcmVjZWl2ZXIgY3JlYXRlcy5cbi8qIFVOSU1QTEVNRU5URUQgRk9SIE5PV1xuY2xhc3MgWkNSQ19IRUFERVIgZXh0ZW5kcyBaSGVhZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihjcmNfbGVfYnl0ZXMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgaWYgKGNyY19sZV9ieXRlcykgeyAgLy9yZXNwb25zZSwgc2VuZGVyIGNyZWF0ZXNcbiAgICAgICAgICAgIHRoaXMuX2J5dGVzNCA9IGNyY19sZV9ieXRlcztcbiAgICAgICAgfVxuICAgIH1cbn1cbiovXG5cbi8vTm8gWkNIQUxMRU5HRSBpbXBsZW1lbnRhdGlvblxuXG4vL2NsYXNzIFpDT01QTF9IRUFERVIgZXh0ZW5kcyBaSGVhZGVyIHt9XG4vL2NsYXNzIFpDQU5fSEVBREVSIGV4dGVuZHMgWm1vZGVtLkhlYWRlciB7fVxuXG4vL0FzIGRlc2NyaWJlZCwgdGhpcyBoZWFkZXIgcmVwcmVzZW50cyBhbiBpbmZvcm1hdGlvbiBkaXNjbG9zdXJlLlxuLy9JdCBjb3VsZCBiZSBpbnRlcnByZXRlZCwgSSBzdXBwb3NlLCBtZXJlbHkgYXMg4oCcdGhpcyBpcyBob3cgbXVjaCBzcGFjZVxuLy9JIGhhdmUgRk9SIFlPVS7igJ1cbi8vVE9ETzogaW1wbGVtZW50IGlmIG5lZWRlZC9yZXF1ZXN0ZWRcbi8vY2xhc3MgWkZSRUVDTlRfSEVBREVSIGV4dGVuZHMgWm1vZGVtSGVhZGVyIHt9XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBGUkFNRV9DTEFTU19UWVBFUyA9IFtcbiAgICBbIFpSUUlOSVRfSEVBREVSLCBcIlpSUUlOSVRcIiBdLFxuICAgIFsgWlJJTklUX0hFQURFUiwgXCJaUklOSVRcIiBdLFxuICAgIFsgWlNJTklUX0hFQURFUiwgXCJaU0lOSVRcIiBdLFxuICAgIFsgWkFDS19IRUFERVIsIFwiWkFDS1wiIF0sXG4gICAgWyBaRklMRV9IRUFERVIsIFwiWkZJTEVcIiBdLFxuICAgIFsgWlNLSVBfSEVBREVSLCBcIlpTS0lQXCIgXSxcbiAgICB1bmRlZmluZWQsIC8vIFsgWk5BS19IRUFERVIsIFwiWk5BS1wiIF0sXG4gICAgWyBaQUJPUlRfSEVBREVSLCBcIlpBQk9SVFwiIF0sXG4gICAgWyBaRklOX0hFQURFUiwgXCJaRklOXCIgXSxcbiAgICBbIFpSUE9TX0hFQURFUiwgXCJaUlBPU1wiIF0sXG4gICAgWyBaREFUQV9IRUFERVIsIFwiWkRBVEFcIiBdLFxuICAgIFsgWkVPRl9IRUFERVIsIFwiWkVPRlwiIF0sXG4gICAgWyBaRkVSUl9IRUFERVIsIFwiWkZFUlJcIiBdLCAgLy9zZWUgbm90ZVxuICAgIHVuZGVmaW5lZCwgLy9bIFpDUkNfSEVBREVSLCBcIlpDUkNcIiBdLFxuICAgIHVuZGVmaW5lZCwgLy9bIFpDSEFMTEVOR0VfSEVBREVSLCBcIlpDSEFMTEVOR0VcIiBdLFxuICAgIHVuZGVmaW5lZCwgLy9bIFpDT01QTF9IRUFERVIsIFwiWkNPTVBMXCIgXSxcbiAgICB1bmRlZmluZWQsIC8vWyBaQ0FOX0hFQURFUiwgXCJaQ0FOXCIgXSxcbiAgICB1bmRlZmluZWQsIC8vWyBaRlJFRUNOVF9IRUFERVIsIFwiWkZSRUVDTlRcIiBdLFxuICAgIHVuZGVmaW5lZCwgLy9bIFpDT01NQU5EX0hFQURFUiwgXCJaQ09NTUFORFwiIF0sXG4gICAgdW5kZWZpbmVkLCAvL1sgWlNUREVSUl9IRUFERVIsIFwiWlNUREVSUlwiIF0sXG5dO1xuXG4vKlxuWkZFUlIgaXMgZGVzY3JpYmVkIGFzIOKAnGVycm9yIGluIHJlYWRpbmcgb3Igd3JpdGluZyBmaWxl4oCdLiBJdOKAmXMgcmVhbGx5XG5ub3QgYSBnb29kIGlkZWEgZnJvbSBhIHNlY3VyaXR5IGFuZ2xlIGZvciB0aGUgZW5kcG9pbnQgdG8gZXhwb3NlIHRoaXNcbmluZm9ybWF0aW9uLiBXZSBzaG91bGQgcGFyc2UgdGhpcyBhbmQgaGFuZGxlIGl0IGFzIFpBQk9SVCBidXQgbmV2ZXIgc2VuZCBpdC5cblxuTGlrZXdpc2Ugd2l0aCBaRlJFRUNOVDogdGhlIHNlbmRlciBzaG91bGRu4oCZdCBhc2sgaG93IG11Y2ggc3BhY2UgaXMgbGVmdFxub24gdGhlIG90aGVyIGJveDsgcmF0aGVyLCB0aGUgcmVjZWl2ZXIgc2hvdWxkIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlXG5maWxlIHNpemUgYXMgdGhlIHNlbmRlciByZXBvcnRzIGl0LlxuKi9cblxudmFyIEZSQU1FX05BTUVfQ1JFQVRPUiA9IHt9O1xuXG5mb3IgKHZhciBmYz0wOyBmYzxGUkFNRV9DTEFTU19UWVBFUy5sZW5ndGg7IGZjKyspIHtcbiAgICBpZiAoIUZSQU1FX0NMQVNTX1RZUEVTW2ZjXSkgY29udGludWU7XG5cbiAgICBGUkFNRV9OQU1FX0NSRUFUT1JbIEZSQU1FX0NMQVNTX1RZUEVTW2ZjXVsxXSBdID0gRlJBTUVfQ0xBU1NfVFlQRVNbZmNdWzBdO1xuXG4gICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgRlJBTUVfQ0xBU1NfVFlQRVNbZmNdWzBdLnByb3RvdHlwZSxcbiAgICAgICAge1xuICAgICAgICAgICAgVFlQRU5VTTogZmMsXG4gICAgICAgICAgICBOQU1FOiBGUkFNRV9DTEFTU19UWVBFU1tmY11bMV0sXG4gICAgICAgIH1cbiAgICApO1xufVxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY29uc3QgQ1JFQVRPUlMgPSBbXG4gICAgWlJRSU5JVF9IRUFERVIsXG4gICAgWlJJTklUX0hFQURFUixcbiAgICBaU0lOSVRfSEVBREVSLFxuICAgIFpBQ0tfSEVBREVSLFxuICAgIFpGSUxFX0hFQURFUixcbiAgICBaU0tJUF9IRUFERVIsXG4gICAgJ1pOQUsnLFxuICAgIFpBQk9SVF9IRUFERVIsXG4gICAgWkZJTl9IRUFERVIsXG4gICAgWlJQT1NfSEVBREVSLFxuICAgIFpEQVRBX0hFQURFUixcbiAgICBaRU9GX0hFQURFUixcbiAgICBaRkVSUl9IRUFERVIsXG4gICAgJ1pDUkMnLCAvL1pDUkNfSEVBREVSLCAtLSBsZWF2aW5nIHVuaW1wbGVtZW50ZWQ/XG4gICAgJ1pDSEFMTEVOR0UnLFxuICAgICdaQ09NUEwnLFxuICAgICdaQ0FOJyxcbiAgICAnWkZSRUVDTlQnLCAvLyBaRlJFRUNOVF9IRUFERVIsXG4gICAgJ1pDT01NQU5EJyxcbiAgICAnWlNUREVSUicsXG5dO1xuXG5mdW5jdGlvbiBfZ2V0X2JsYW5rX2hlYWRlcih0eXBlbnVtKSB7XG4gICAgdmFyIGNyZWF0b3IgPSBDUkVBVE9SU1t0eXBlbnVtXTtcbiAgICBpZiAodHlwZW9mKGNyZWF0b3IpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93KCBcIlJlY2VpdmVkIHVuc3VwcG9ydGVkIGhlYWRlcjogXCIgKyBjcmVhdG9yICk7XG4gICAgfVxuXG4gICAgLypcbiAgICBpZiAoY3JlYXRvciA9PT0gWkNSQ19IRUFERVIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBjcmVhdG9yKFswLCAwLCAwLCAwXSk7XG4gICAgfVxuICAgICovXG5cbiAgICByZXR1cm4gX2dldF9ibGFua19oZWFkZXJfZnJvbV9jb25zdHJ1Y3RvcihjcmVhdG9yKTtcbn1cblxuLy9yZWZlcmVuY2VkIG91dHNpZGUgVE9ET1xuZnVuY3Rpb24gX2dldF9ibGFua19oZWFkZXJfZnJvbV9jb25zdHJ1Y3RvcihjcmVhdG9yKSB7XG4gICAgaWYgKGNyZWF0b3IucHJvdG90eXBlIGluc3RhbmNlb2YgWk9mZnNldEhlYWRlcikge1xuICAgICAgICByZXR1cm4gbmV3IGNyZWF0b3IoMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBjcmVhdG9yKFtdKTtcbn1cblxuZnVuY3Rpb24gX3BhcnNlX2JpbmFyeTE2KGJ5dGVzX2Fycikge1xuXG4gICAgLy9UaGUgbWF4IGxlbmd0aCBvZiBhIFpETEUtZW5jb2RlZCBiaW5hcnkgaGVhZGVyIHcvIDE2LWJpdCBDUkMgaXM6XG4gICAgLy8gIDMgaW5pdGlhbCBieXRlcywgTk9UIFpETEUtZW5jb2RlZFxuICAgIC8vICAyIHR5cGVudW0gYnl0ZXMgICAgICgxIGRlY29kZWQpXG4gICAgLy8gIDggZGF0YSBieXRlcyAgICAgICAgKDQgZGVjb2RlZClcbiAgICAvLyAgNCBDUkMgYnl0ZXMgICAgICAgICAoMiBkZWNvZGVkKVxuXG4gICAgLy9BIDE2LWJpdCBwYXlsb2FkIGhhcyA3IFpETEUtZW5jb2RlZCBvY3RldHMuXG4gICAgLy9UaGUgWkRMRS1lbmNvZGVkIG9jdGV0cyBmb2xsb3cgdGhlIGluaXRpYWwgcHJlZml4LlxuICAgIHZhciB6ZGxlX2RlY29kZWQgPSBabW9kZW0uWkRMRS5zcGxpY2UoIGJ5dGVzX2FyciwgQklOQVJZMTZfSEVBREVSX1BSRUZJWC5sZW5ndGgsIDcgKTtcblxuICAgIHJldHVybiB6ZGxlX2RlY29kZWQgJiYgX3BhcnNlX25vbl96ZGxlX2JpbmFyeTE2KHpkbGVfZGVjb2RlZCk7XG59XG5cbmZ1bmN0aW9uIF9wYXJzZV9ub25femRsZV9iaW5hcnkxNihkZWNvZGVkKSB7XG4gICAgWm1vZGVtLkNSQy52ZXJpZnkxNihcbiAgICAgICAgZGVjb2RlZC5zbGljZSgwLCA1KSxcbiAgICAgICAgZGVjb2RlZC5zbGljZSg1KVxuICAgICk7XG5cbiAgICB2YXIgdHlwZW51bSA9IGRlY29kZWRbMF07XG4gICAgdmFyIGhkciA9IF9nZXRfYmxhbmtfaGVhZGVyKHR5cGVudW0pO1xuICAgIGhkci5fYnl0ZXM0ID0gZGVjb2RlZC5zbGljZSggMSwgNSApO1xuXG4gICAgcmV0dXJuIGhkcjtcbn1cblxuZnVuY3Rpb24gX3BhcnNlX2JpbmFyeTMyKGJ5dGVzX2Fycikge1xuXG4gICAgLy9TYW1lIGRlYWwgYXMgd2l0aCAxNi1iaXQgQ1JDIGV4Y2VwdCB0aGVyZSBhcmUgdHdvIG1vcmVcbiAgICAvL3BvdGVudGlhbGx5IFpETEUtZW5jb2RlZCBieXRlcywgZm9yIGEgdG90YWwgb2YgOS5cbiAgICB2YXIgemRsZV9kZWNvZGVkID0gWm1vZGVtLlpETEUuc3BsaWNlKFxuICAgICAgICBieXRlc19hcnIsICAgICAvL29taXQgdGhlIGxlYWRpbmcgXCIqXCIsIFpETEUsIGFuZCBcIkNcIlxuICAgICAgICBCSU5BUlkzMl9IRUFERVJfUFJFRklYLmxlbmd0aCxcbiAgICAgICAgOVxuICAgICk7XG5cbiAgICBpZiAoIXpkbGVfZGVjb2RlZCkgcmV0dXJuO1xuXG4gICAgWm1vZGVtLkNSQy52ZXJpZnkzMihcbiAgICAgICAgemRsZV9kZWNvZGVkLnNsaWNlKDAsIDUpLFxuICAgICAgICB6ZGxlX2RlY29kZWQuc2xpY2UoNSlcbiAgICApO1xuXG4gICAgdmFyIHR5cGVudW0gPSB6ZGxlX2RlY29kZWRbMF07XG4gICAgdmFyIGhkciA9IF9nZXRfYmxhbmtfaGVhZGVyKHR5cGVudW0pO1xuICAgIGhkci5fYnl0ZXM0ID0gemRsZV9kZWNvZGVkLnNsaWNlKCAxLCA1ICk7XG5cbiAgICByZXR1cm4gaGRyO1xufVxuXG5mdW5jdGlvbiBfcGFyc2VfaGV4KGJ5dGVzX2Fycikge1xuXG4gICAgLy9BIGhleCBoZWFkZXIgYWx3YXlzIGhhczpcbiAgICAvLyAgNCBieXRlcyBmb3IgdGhlICoqIC4gWkRMRSAuICdCJ1xuICAgIC8vICAyIGhleCBieXRlcyBmb3IgdGhlIGhlYWRlciB0eXBlXG4gICAgLy8gIDggaGV4IGJ5dGVzIGZvciB0aGUgaGVhZGVyIGNvbnRlbnRcbiAgICAvLyAgNCBoZXggYnl0ZXMgZm9yIHRoZSBDUkNcbiAgICAvLyAgMS0yIGJ5dGVzIGZvciAoQ1IvKUxGXG4gICAgLy8gICguLi5hbmQgYXQgdGhpcyBwb2ludCB0aGUgdHJhaWxpbmcgWE9OIGlzIGFscmVhZHkgc3RyaXBwZWQpXG4gICAgLy9cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL0EgY2FycmlhZ2UgcmV0dXJuIGFuZCBsaW5lIGZlZWQgYXJlIHNlbnQgd2l0aCBIRVggaGVhZGVycy4gIFRoZVxuICAgIC8vcmVjZWl2ZSByb3V0aW5lIGV4cGVjdHMgdG8gc2VlIGF0IGxlYXN0IG9uZSBvZiB0aGVzZSBjaGFyYWN0ZXJzLCB0d29cbiAgICAvL2lmIHRoZSBmaXJzdCBpcyBDUi5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXl4gSSBndWVzcyBpdCBjYW4gYmUgZWl0aGVyIENSL0xGIG9yIGp1c3QgTEYg4oCmIHRob3VnaCB0aG9zZSB0d29cbiAgICAvL3NlbnRlbmNlcyBhcHBlYXIgdG8gYmUgc2F5aW5nIGNvbnRyYWRpY3RvcnkgdGhpbmdzLlxuXG4gICAgdmFyIGxmX3BvcyA9IGJ5dGVzX2Fyci5pbmRleE9mKCAweDhhICk7ICAgICAvL2xyenN6IHNlbmRzIHRoaXNcblxuICAgIGlmICgtMSA9PT0gbGZfcG9zKSB7XG4gICAgICAgIGxmX3BvcyA9IGJ5dGVzX2Fyci5pbmRleE9mKCAweDBhICk7XG4gICAgfVxuXG4gICAgdmFyIGhkcl9lcnIsIGhleF9ieXRlcztcblxuICAgIGlmICgtMSA9PT0gbGZfcG9zKSB7XG4gICAgICAgIGlmIChieXRlc19hcnIubGVuZ3RoID4gMTEpIHtcbiAgICAgICAgICAgIGhkcl9lcnIgPSBcIkludmFsaWQgaGV4IGhlYWRlciAtIG5vIExGIGRldGVjdGVkIHdpdGhpbiAxMiBieXRlcyFcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vaW5jb21wbGV0ZSBoZWFkZXJcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaGV4X2J5dGVzID0gYnl0ZXNfYXJyLnNwbGljZSggMCwgbGZfcG9zICk7XG5cbiAgICAgICAgLy9UcmltIG9mZiB0aGUgTEZcbiAgICAgICAgYnl0ZXNfYXJyLnNoaWZ0KCk7XG5cbiAgICAgICAgaWYgKCBoZXhfYnl0ZXMubGVuZ3RoID09PSAxOSApIHtcblxuICAgICAgICAgICAgLy9OQjogVGhlIHNwZWMgc2F5cyBDUiBidXQgc2VlbXMgdG8gdHJlYXQgaGlnaC1iaXQgdmFyaWFudHNcbiAgICAgICAgICAgIC8vb2YgY29udHJvbCBjaGFyYWN0ZXJzIHRoZSBzYW1lIGFzIHRoZSByZWd1bGFyczsgc2hvdWxkIHdlXG4gICAgICAgICAgICAvL2Fsc28gYWxsb3cgMHg4ZD9cbiAgICAgICAgICAgIHZhciBwcmVjZWRpbmcgPSBoZXhfYnl0ZXMucG9wKCk7XG4gICAgICAgICAgICBpZiAoIHByZWNlZGluZyAhPT0gMHgwZCAmJiBwcmVjZWRpbmcgIT09IDB4OGQgKSB7XG4gICAgICAgICAgICAgICAgaGRyX2VyciA9IFwiSW52YWxpZCBoZXggaGVhZGVyOiAoQ1IvKUxGIGRvZXNu4oCZdCBoYXZlIENSIVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCBoZXhfYnl0ZXMubGVuZ3RoICE9PSAxOCApIHtcbiAgICAgICAgICAgIGhkcl9lcnIgPSBcIkludmFsaWQgaGV4IGhlYWRlcjogaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgYmVmb3JlIExGIVwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhkcl9lcnIpIHtcbiAgICAgICAgaGRyX2VyciArPSBcIiAoXCIgKyBoZXhfYnl0ZXMubGVuZ3RoICsgXCIgYnl0ZXM6IFwiICsgaGV4X2J5dGVzLmpvaW4oKSArIFwiKVwiO1xuICAgICAgICB0aHJvdyBoZHJfZXJyO1xuICAgIH1cblxuICAgIGhleF9ieXRlcy5zcGxpY2UoMCwgNCk7XG5cbiAgICAvL1Nob3VsZCBiZSA3IGJ5dGVzIHVsdGltYXRlbHk6XG4gICAgLy8gIDEgZm9yIHR5cGVudW1cbiAgICAvLyAgNCBmb3IgaGVhZGVyIGRhdGFcbiAgICAvLyAgMiBmb3IgQ1JDXG4gICAgdmFyIG9jdGV0cyA9IFptb2RlbS5FTkNPREVMSUIucGFyc2VfaGV4X29jdGV0cyhoZXhfYnl0ZXMpO1xuXG4gICAgcmV0dXJuIF9wYXJzZV9ub25femRsZV9iaW5hcnkxNihvY3RldHMpO1xufVxuXG5abW9kZW0uSGVhZGVyLnBhcnNlX2hleCA9IF9wYXJzZV9oZXg7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIFptb2RlbSA9IG1vZHVsZS5leHBvcnRzO1xuXG5jb25zdFxuICAgIFpETEUgPSAweDE4LFxuICAgIFhPTiA9IDB4MTEsXG4gICAgWE9GRiA9IDB4MTMsXG4gICAgWE9OX0hJR0ggPSAweDgwIHwgWE9OLFxuICAgIFhPRkZfSElHSCA9IDB4ODAgfCBYT0ZGLFxuICAgIENBTiA9IDB4MTggICAgIC8vTkI6IHNhbWUgY2hhcmFjdGVyIGFzIFpETEVcbjtcblxuLyoqXG4gKiBUb29scyBhbmQgY29uc3RhbnRzIHRoYXQgYXJlIHVzZWZ1bCBmb3IgWk1PREVNLlxuICpcbiAqIEBleHBvcnRzIFpNTElCXG4gKi9cblptb2RlbS5aTUxJQiA9IHtcblxuICAgIC8qKlxuICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBUaGUgWkRMRSBjb25zdGFudCwgd2hpY2ggWk1PREVNIHVzZXMgZm9yIGVzY2FwaW5nXG4gICAgICovXG4gICAgWkRMRTogWkRMRSxcblxuICAgIC8qKlxuICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBYT04gLSBBU0NJSSBYT05cbiAgICAgKi9cbiAgICBYT046IFhPTixcblxuICAgIC8qKlxuICAgICAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBYT0ZGIC0gQVNDSUkgWE9GRlxuICAgICAqL1xuICAgIFhPRkY6IFhPRkYsXG5cbiAgICAvKipcbiAgICAgKiBAcHJvcGVydHkge251bWJlcltdfSBBQk9SVF9TRVFVRU5DRSAtIFpNT0RFTeKAmXMgYWJvcnQgc2VxdWVuY2VcbiAgICAgKi9cbiAgICBBQk9SVF9TRVFVRU5DRTogWyBDQU4sIENBTiwgQ0FOLCBDQU4sIENBTiBdLFxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIG9jdGV0IHZhbHVlcyBmcm9tIHRoZSBnaXZlbiBhcnJheSB0aGF0IFpNT0RFTSBhbHdheXMgaWdub3Jlcy5cbiAgICAgKiBUaGlzIHdpbGwgbXV0YXRlIHRoZSBnaXZlbiBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IG9jdGV0cyAtIFRoZSBvY3RldCB2YWx1ZXMgdG8gdHJhbnNmb3JtLlxuICAgICAqICAgICAgRWFjaCBhcnJheSBtZW1iZXIgc2hvdWxkIGJlIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgKDAtMjU1KS5cbiAgICAgKiAgICAgIFRoaXMgb2JqZWN0IGlzIG11dGF0ZWQgaW4gdGhlIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMge251bWJlcltdfSBUaGUgcGFzc2VkLWluIGFycmF5LiBUaGlzIGlzIHRoZSBzYW1lIG9iamVjdCB0aGF0IGlzXG4gICAgICogICAgICBwYXNzZWQgaW4uXG4gICAgICovXG4gICAgc3RyaXBfaWdub3JlZF9ieXRlczogZnVuY3Rpb24gc3RyaXBfaWdub3JlZF9ieXRlcyhvY3RldHMpIHtcbiAgICAgICAgZm9yICh2YXIgbz1vY3RldHMubGVuZ3RoLTE7IG8+PTA7IG8tLSkge1xuICAgICAgICAgICAgc3dpdGNoIChvY3RldHNbb10pIHtcbiAgICAgICAgICAgICAgICBjYXNlIFhPTjpcbiAgICAgICAgICAgICAgICBjYXNlIFhPTl9ISUdIOlxuICAgICAgICAgICAgICAgIGNhc2UgWE9GRjpcbiAgICAgICAgICAgICAgICBjYXNlIFhPRkZfSElHSDpcbiAgICAgICAgICAgICAgICAgICAgb2N0ZXRzLnNwbGljZShvLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2N0ZXRzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBMaWtlIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLCBidXQgc2VhcmNoZXMgZm9yIGEgc3ViYXJyYXlcbiAgICAgKiByYXRoZXIgdGhhbiBqdXN0IGEgcGFydGljdWxhciB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGhheXN0YWNrIC0gVGhlIGFycmF5IHRvIHNlYXJjaCwgaS5lLiwgdGhlIGJpZ2dlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG5lZWRsZSAtIFRoZSBhcnJheSB3aG9zZSB2YWx1ZXMgdG8gZmluZCxcbiAgICAgKiAgICAgIGkuZS4sIHRoZSBzbWFsbGVyLlxuICAgICAqXG4gICAgICogQHJldHVybnMge251bWJlcn0gVGhlIHBvc2l0aW9uIGluIOKAnGhheXN0YWNr4oCdIHdoZXJlIOKAnG5lZWRsZeKAnVxuICAgICAqICAgICAgZmlyc3QgYXBwZWFyc+KAlG9yLCAtMSBpZiDigJxuZWVkbGXigJ0gZG9lc27igJl0IGFwcGVhciBhbnl3aGVyZVxuICAgICAqICAgICAgaW4g4oCcaGF5c3RhY2vigJ0uXG4gICAgICovXG4gICAgZmluZF9zdWJhcnJheTogZnVuY3Rpb24gZmluZF9zdWJhcnJheShoYXlzdGFjaywgbmVlZGxlKSB7XG4gICAgICAgIHZhciBoPTAsIG47XG5cbiAgICAgICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICBIQVlTVEFDSzpcbiAgICAgICAgd2hpbGUgKGggIT09IC0xKSB7XG4gICAgICAgICAgICBoID0gaGF5c3RhY2suaW5kZXhPZiggbmVlZGxlWzBdLCBoICk7XG4gICAgICAgICAgICBpZiAoaCA9PT0gLTEpIGJyZWFrIEhBWVNUQUNLO1xuXG4gICAgICAgICAgICBmb3IgKG49MTsgbjxuZWVkbGUubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaGF5c3RhY2tbaCArIG5dICE9PSBuZWVkbGVbbl0pIHtcbiAgICAgICAgICAgICAgICAgICAgaCsrO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBIQVlTVEFDSztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH0sXG59O1xuIiwiT2JqZWN0LmFzc2lnbihcbiAgICBtb2R1bGUuZXhwb3J0cyxcbiAgICByZXF1aXJlKFwiLi96c2VudHJ5XCIpLFxuKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgWm1vZGVtID0gbW9kdWxlLmV4cG9ydHM7XG5cbi8vVE9ETzogTWFrZSB0aGlzIHVzYWJsZSB3aXRob3V0IHJlcXVpcmUuanMgb3Igd2hhdCBub3QuXG53aW5kb3cuWm1vZGVtID0gWm1vZGVtO1xuXG5PYmplY3QuYXNzaWduKFxuICAgIFptb2RlbSxcbiAgICByZXF1aXJlKFwiLi96bW9kZW1cIilcbik7XG5cbmZ1bmN0aW9uIF9jaGVja19hYm9ydGVkKHNlc3Npb24pIHtcbiAgICBpZiAoc2Vzc2lvbi5hYm9ydGVkKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFptb2RlbS5FcnJvcihcImFib3J0ZWRcIik7XG4gICAgfVxufVxuXG4vKiogQnJvd3Nlci1zcGVjaWZpYyB0b29sc1xuICpcbiAqIEBleHBvcnRzIEJyb3dzZXJcbiAqL1xuWm1vZGVtLkJyb3dzZXIgPSB7XG5cbiAgICAvKipcbiAgICAgKiBTZW5kIGEgYmF0Y2ggb2YgZmlsZXMgaW4gc2VxdWVuY2UuIFRoZSBzZXNzaW9uIGlzIGxlZnQgb3BlblxuICAgICAqIGFmdGVyd2FyZCwgd2hpY2ggYWxsb3dzIGZvciBtb3JlIGZpbGVzIHRvIGJlIHNlbnQgaWYgZGVzaXJlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Wm1vZGVtLlNlc3Npb259IHNlc3Npb24gLSBUaGUgc2VuZCBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0ZpbGVMaXN0fEFycmF5fSBmaWxlcyAtIEEgbGlzdCBvZiBGaWxlIG9iamVjdHNcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5vbl9vZmZlcl9yZXNwb25zZV0gLSBDYWxsZWQgd2hlbiBhblxuICAgICAqIG9mZmVyIHJlc3BvbnNlIGFycml2ZXMuIEFyZ3VtZW50cyBhcmU6XG4gICAgICpcbiAgICAgKiAtIChGaWxlKSAtIFRoZSBGaWxlIG9iamVjdCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBvZmZlci5cbiAgICAgKiAtIChUcmFuc2Zlcnx1bmRlZmluZWQpIC0gSWYgdGhlIHJlY2VpdmVyIGFjY2VwdHMgdGhlIG9mZmVyLCB0aGVuXG4gICAgICogdGhpcyBpcyBhIFRyYW5zZmVyIG9iamVjdDsgb3RoZXJ3aXNlIGl04oCZcyB1bmRlZmluZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5vbl9wcm9ncmVzc10gLSBDYWxsZWQgaW1tZWRpYXRlbHlcbiAgICAgKiBhZnRlciBhIGNodW5rIG9mIGEgZmlsZSBpcyBzZW50LiBBcmd1bWVudHMgYXJlOlxuICAgICAqXG4gICAgICogLSAoRmlsZSkgLSBUaGUgRmlsZSBvYmplY3QgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgZmlsZS5cbiAgICAgKiAtIChUcmFuc2ZlcikgLSBUaGUgVHJhbnNmZXIgb2JqZWN0IGZvciB0aGUgY3VycmVudCB0cmFuc2Zlci5cbiAgICAgKiAtIChVaW50OEFycmF5KSAtIFRoZSBjaHVuayBvZiBkYXRhIHRoYXQgd2FzIGp1c3QgbG9hZGVkIGZyb20gZGlza1xuICAgICAqIGFuZCBzZW50IHRvIHRoZSByZWNlaXZlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLm9uX2ZpbGVfY29tcGxldGVdIC0gQ2FsbGVkIGltbWVkaWF0ZWx5XG4gICAgICogYWZ0ZXIgdGhlIGxhc3QgZmlsZSBwYWNrZXQgaXMgc2VudC4gQXJndW1lbnRzIGFyZTpcbiAgICAgKlxuICAgICAqIC0gKEZpbGUpIC0gVGhlIEZpbGUgb2JqZWN0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGZpbGUuXG4gICAgICogLSAoVHJhbnNmZXIpIC0gVGhlIFRyYW5zZmVyIG9iamVjdCBmb3IgdGhlIG5vdy1jb21wbGV0ZWQgdHJhbnNmZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBBIFByb21pc2UgdGhhdCBmdWxmaWxscyB3aGVuIHRoZSBiYXRjaCBpcyBkb25lLlxuICAgICAqICAgICAgTm90ZSB0aGF0IHNraXBwZWQgZmlsZXMgYXJlIG5vdCBjb25zaWRlcmVkIGFuIGVycm9yIGNvbmRpdGlvbi5cbiAgICAgKi9cbiAgICBzZW5kX2ZpbGVzOiBmdW5jdGlvbiBzZW5kX2ZpbGVzKHNlc3Npb24sIGZpbGVzLCBvcHRpb25zKSB7XG4gICAgICAgIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuXG4gICAgICAgIC8vUG9wdWxhdGUgdGhlIGJhdGNoIGluIHJldmVyc2Ugb3JkZXIgdG8gc2ltcGxpZnkgc2VuZGluZ1xuICAgICAgICAvL3RoZSByZW1haW5pbmcgZmlsZXMvYnl0ZXMgY29tcG9uZW50cy5cbiAgICAgICAgdmFyIGJhdGNoID0gW107XG4gICAgICAgIHZhciB0b3RhbF9zaXplID0gMDtcbiAgICAgICAgZm9yICh2YXIgZj1maWxlcy5sZW5ndGggLSAxOyBmPj0wOyBmLS0pIHtcbiAgICAgICAgICAgIHZhciBmb2JqID0gZmlsZXNbZl07XG4gICAgICAgICAgICB0b3RhbF9zaXplICs9IGZvYmouc2l6ZTtcbiAgICAgICAgICAgIGJhdGNoW2ZdID0ge1xuICAgICAgICAgICAgICAgIG9iajogZm9iaixcbiAgICAgICAgICAgICAgICBuYW1lOiBmb2JqLm5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogZm9iai5zaXplLFxuICAgICAgICAgICAgICAgIG10aW1lOiBuZXcgRGF0ZShmb2JqLmxhc3RNb2RpZmllZCksXG4gICAgICAgICAgICAgICAgZmlsZXNfcmVtYWluaW5nOiBmaWxlcy5sZW5ndGggLSBmLFxuICAgICAgICAgICAgICAgIGJ5dGVzX3JlbWFpbmluZzogdG90YWxfc2l6ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZmlsZV9pZHggPSAwO1xuICAgICAgICBmdW5jdGlvbiBwcm9taXNlX2NhbGxiYWNrKCkge1xuICAgICAgICAgICAgdmFyIGN1cl9iID0gYmF0Y2hbZmlsZV9pZHhdO1xuXG4gICAgICAgICAgICBpZiAoIWN1cl9iKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyAvL2JhdGNoIGRvbmUhXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZpbGVfaWR4Kys7XG5cbiAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLnNlbmRfb2ZmZXIoY3VyX2IpLnRoZW4oIGZ1bmN0aW9uIGFmdGVyX3NlbmRfb2ZmZXIoeGZlcikge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm9uX29mZmVyX3Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMub25fb2ZmZXJfcmVzcG9uc2UoY3VyX2Iub2JqLCB4ZmVyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoeGZlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlX2NhbGxiYWNrKCk7ICAgLy9za2lwcGVkXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCBmdW5jdGlvbihyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy9UaGlzIHJlYWxseSBzaG91bGRu4oCZdCBoYXBwZW4g4oCmIHNvIGxldOKAmXNcbiAgICAgICAgICAgICAgICAgICAgLy9ibG93IHVwIGlmIGl0IGRvZXMuXG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24gcmVhZGVyX29uZXJyb3IoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcImZpbGUgcmVhZCBlcnJvclwiLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93KFwiRmlsZSByZWFkIGVycm9yOiBcIiArIGUpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBwaWVjZTtcbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiByZWFkZXJfb25wcm9ncmVzcyhlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vU29tZSBicm93c2VycyAoZS5nLiwgQ2hyb21lKSBnaXZlIHBhcnRpYWwgcmV0dXJucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vd2hpbGUgb3RoZXJzIChlLmcuLCBGaXJlZm94KSBkb27igJl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LnJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZWNlID0gbmV3IFVpbnQ4QXJyYXkoZS50YXJnZXQucmVzdWx0LCB4ZmVyLmdldF9vZmZzZXQoKSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jaGVja19hYm9ydGVkKHNlc3Npb24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeGZlci5zZW5kKHBpZWNlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm9uX3Byb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMub25fcHJvZ3Jlc3MoY3VyX2Iub2JqLCB4ZmVyLCBwaWVjZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiByZWFkZXJfb25sb2FkKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpZWNlID0gbmV3IFVpbnQ4QXJyYXkoZS50YXJnZXQucmVzdWx0LCB4ZmVyLCBwaWVjZSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgX2NoZWNrX2Fib3J0ZWQoc2Vzc2lvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHhmZXIuZW5kKHBpZWNlKS50aGVuKCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5vbl9wcm9ncmVzcyAmJiBwaWVjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vbl9wcm9ncmVzcyhjdXJfYi5vYmosIHhmZXIsIHBpZWNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5vbl9maWxlX2NvbXBsZXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMub25fZmlsZV9jb21wbGV0ZShjdXJfYi5vYmosIHhmZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vUmVzb2x2ZSB0aGUgY3VycmVudCBmaWxlLXNlbmQgcHJvbWlzZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9hbm90aGVyIHByb21pc2UuIFRoYXQgcHJvbWlzZSByZXNvbHZlcyBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgd2XigJlyZSBkb25lLCBvciB3aXRoIGFub3RoZXIgZmlsZS1zZW5kIHByb21pc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIHRoZXJl4oCZcyBtb3JlIHRvIHNlbmQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzKCBwcm9taXNlX2NhbGxiYWNrKCkgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoY3VyX2Iub2JqKTtcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvbWlzZV9jYWxsYmFjaygpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBQcm9tcHQgYSB1c2VyIHRvIHNhdmUgdGhlIGdpdmVuIHBhY2tldHMgYXMgYSBmaWxlIGJ5IGluamVjdGluZyBhblxuICAgICAqIGA8YT5gIGVsZW1lbnQgKHdpdGggYGRpc3BsYXk6IG5vbmVgIHN0eWxpbmcpIGludG8gdGhlIHBhZ2UgYW5kXG4gICAgICogY2FsbGluZyB0aGUgZWxlbWVudOKAmXMgYGNsaWNrKClgXG4gICAgICogbWV0aG9kLiBUaGUgZWxlbWVudCBpcyByZW1vdmVkIGltbWVkaWF0ZWx5IGFmdGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFja2V0cyAtIFNhbWUgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIFtCbG9i4oCZcyBjb25zdHJ1Y3Rvcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0Jsb2IpLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgdG8gZ2l2ZSB0aGUgZmlsZS5cbiAgICAgKi9cbiAgICBzYXZlX3RvX2Rpc2s6IGZ1bmN0aW9uIHNhdmVfdG9fZGlzayhwYWNrZXRzLCBuYW1lKSB7XG4gICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IocGFja2V0cyk7XG4gICAgICAgIHZhciB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG4gICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgICAgIGVsLmhyZWYgPSB1cmw7XG4gICAgICAgIGVsLmRvd25sb2FkID0gbmFtZTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbCk7XG5cbiAgICAgICAgLy9JdCBzZWVtcyBsaWtlIGEgc2VjdXJpdHkgcHJvYmxlbSB0aGF0IHRoaXMgYWN0dWFsbHkgd29ya3M7XG4gICAgICAgIC8vSeKAmWQgdGhpbmsgdGhlcmUgd291bGQgbmVlZCB0byBiZSBzb21lIGNvbmZpcm1hdGlvbiBiZWZvcmVcbiAgICAgICAgLy9hIGJyb3dzZXIgY291bGQgc2F2ZSBhcmJpdHJhcmlseSBtYW55IGJ5dGVzIG9udG8gdGhlIGRpc2suXG4gICAgICAgIC8vQnV0LCBoZXkuXG4gICAgICAgIGVsLmNsaWNrKCk7XG5cbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbCk7XG4gICAgfSxcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIFptb2RlbSA9IG1vZHVsZS5leHBvcnRzO1xuXG5PYmplY3QuYXNzaWduKFxuICAgIFptb2RlbSxcbiAgICByZXF1aXJlKFwiLi96bWxpYlwiKSxcbiAgICByZXF1aXJlKFwiLi96c2Vzc2lvblwiKVxuKTtcblxuY29uc3RcbiAgICBNSU5fWk1fSEVYX1NUQVJUX0xFTkdUSCA9IDIwLFxuICAgIE1BWF9aTV9IRVhfU1RBUlRfTEVOR1RIID0gMjEsXG5cbiAgICAvLyAqKiwgWkRMRSwgJ0IwJ1xuICAgIC8vWlJRSU5JVOKAmXMgbmV4dCBieXRlIHdpbGwgYmUgJzAnOyBaUklOSVTigJlzIHdpbGwgYmUgJzEnLlxuICAgIENPTU1PTl9aTV9IRVhfU1RBUlQgPSBbIDQyLCA0MiwgMjQsIDY2LCA0OCBdLFxuXG4gICAgU0VOVFJZX0NPTlNUUlVDVE9SX1JFUVVJUkVEX0FSR1MgPSBbXG4gICAgICAgIFwidG9fdGVybWluYWxcIixcbiAgICAgICAgXCJvbl9kZXRlY3RcIixcbiAgICAgICAgXCJvbl9yZXRyYWN0XCIsXG4gICAgICAgIFwic2VuZGVyXCIsXG4gICAgXSxcblxuICAgIEFTVEVSSVNLID0gNDJcbjtcblxuLyoqXG4gKiBBbiBpbnN0YW5jZSBvZiB0aGlzIG9iamVjdCBpcyBwYXNzZWQgdG8gdGhlIFNlbnRyeeKAmXMgb25fZGV0ZWN0XG4gKiBjYWxsYmFjayBlYWNoIHRpbWUgdGhlIFNlbnRyeSBvYmplY3Qgc2VlcyB3aGF0IGxvb2tzIGxpa2UgdGhlXG4gKiBzdGFydCBvZiBhIFpNT0RFTSBzZXNzaW9uLlxuICpcbiAqIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgYSBkZXRlY3Rpb24gdG8gYmUg4oCccmV0cmFjdGVk4oCdXG4gKiBpZiB0aGUgU2VudHJ5IGNvbnN1bWVzIGJ5dGVzIGFmdGVyd2FyZCB0aGF0IGFyZSBub3QgWk1PREVNLlxuICogV2hlbiB0aGlzIGhhcHBlbnMsIHRoZSBTZW50cnnigJlzIGByZXRyYWN0YCBldmVudCB3aWxsIGZpcmUsXG4gKiBhZnRlciB3aGljaCB0aGUgRGV0ZWN0aW9uIG9iamVjdCBpcyBubyBsb25nZXIgdXNhYmxlLlxuICovXG5jbGFzcyBEZXRlY3Rpb24ge1xuXG4gICAgLyoqXG4gICAgICogTm90IGNhbGxlZCBkaXJlY3RseS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihzZXNzaW9uX3R5cGUsIGFjY2VwdGVyLCBkZW5pZXIsIGNoZWNrZXIpIHtcblxuICAgICAgICAvL2NvbmZpcm0oKSAtIHVzZXIgY29uZmlybXMgdGhhdCBaTU9ERU0gaXMgZGVzaXJlZFxuICAgICAgICB0aGlzLl9jb25maXJtZXIgPSBhY2NlcHRlcjtcblxuICAgICAgICAvL2RlbnkoKSAtIHVzZXIgZGVjbGluZXMgWk1PREVNOyBzZW5kIGFib3J0IHNlcXVlbmNlXG4gICAgICAgIC8vXG4gICAgICAgIC8vVE9ETzogSXQgbWlnaHQgYmUgaWRlYWwgdG8gZm9yZ28gdGhlIHNlc3Npb24g4oCccGVhY2VhYmx54oCdLFxuICAgICAgICAvL2kuZS4sIHN1Y2ggdGhhdCB0aGUgcGVlciBkb2VzbuKAmXQgZW5kIGluIGVycm9yLiBUaGF04oCZc1xuICAgICAgICAvL3Bvc3NpYmxlIGlmIHdl4oCZcmUgdGhlIHNlbmRlciwgd2UgYWNjZXB0IHRoZSBzZXNzaW9uLFxuICAgICAgICAvL3RoZW4gd2UganVzdCBzZW5kIGEgY2xvc2UoKSwgYnV0IGl0IGRvZXNu4oCZdCBzZWVtIHRvIGJlXG4gICAgICAgIC8vcG9zc2libGUgZm9yIGEgcmVjZWl2ZXIuIFRodXMsIGxldOKAmXMganVzdCBsZWF2ZSBpdCBzb1xuICAgICAgICAvL2l04oCZcyBhdCBsZWFzdCBjb25zaXN0ZW50IChhbmQgc2ltcGxlciwgdG9vKS5cbiAgICAgICAgdGhpcy5fZGVuaWVyID0gZGVuaWVyO1xuXG4gICAgICAgIHRoaXMuX2lzX3ZhbGlkID0gY2hlY2tlcjtcblxuICAgICAgICB0aGlzLl9zZXNzaW9uX3R5cGUgPSBzZXNzaW9uX3R5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uZmlybSB0aGF0IHRoZSBkZXRlY3RlZCBaTU9ERU0gc2VxdWVuY2UgaW5kaWNhdGVzIHRoZVxuICAgICAqIHN0YXJ0IG9mIGEgWk1PREVNIHNlc3Npb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTZXNzaW9ufSBUaGUgWk1PREVNIFNlc3Npb24gb2JqZWN0IChpLmUuLCBlaXRoZXIgYVxuICAgICAqICBTZW5kIG9yIFJlY2VpdmUgaW5zdGFuY2UpLlxuICAgICAqL1xuICAgIGNvbmZpcm0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maXJtZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZWxsIHRoZSBTZW50cnkgdGhhdCB0aGUgZGV0ZWN0ZWQgYnl0ZXMgc2VxdWVuY2UgaXNcbiAgICAgKiAqKk5PVCoqIGludGVuZGVkIHRvIGJlIHRoZSBzdGFydCBvZiBhIFpNT0RFTSBzZXNzaW9uLlxuICAgICAqL1xuICAgIGRlbnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZW5pZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZWxscyB3aGV0aGVyIHRoZSBEZXRlY3Rpb24gaXMgc3RpbGwgdmFsaWQ7IGkuZS4sIHdoZXRoZXJcbiAgICAgKiB0aGUgU2VudHJ5IGhhcyBgY29uc3VtZSgpYGQgYnl0ZXMgdGhhdCBpbnZhbGlkYXRlIHRoZVxuICAgICAqIERldGVjdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSBEZXRlY3Rpb24gaXMgdmFsaWQuXG4gICAgICovXG4gICAgaXNfdmFsaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc192YWxpZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVzIHRoZSBzZXNzaW9u4oCZcyByb2xlLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3N0cmluZ30gT25lIG9mOlxuICAgICAqIC0gYHJlY2VpdmVgXG4gICAgICogLSBgc2VuZGBcbiAgICAgKi9cbiAgICBnZXRfc2Vzc2lvbl9yb2xlKCkgeyByZXR1cm4gdGhpcy5fc2Vzc2lvbl90eXBlIH1cbn1cblxuLyoqXG4gKiBDbGFzcyB0aGF0IHBhcnNlcyBhbiBpbnB1dCBzdHJlYW0gZm9yIHRoZSBiZWdpbm5pbmcgb2YgYVxuICogWk1PREVNIHNlc3Npb24uIFdlIGxvb2sgZm9yIHRoZSB0ZWxsLXRhbGUgc2lnbnNcbiAqIG9mIGEgWk1PREVNIHRyYW5zZmVyIGFuZCBhbGxvdyB0aGUgY2xpZW50IHRvIGRldGVybWluZSB3aGV0aGVyXG4gKiBpdOKAmXMgcmVhbGx5IFpNT0RFTSBvciBub3QuXG4gKlxuICogVGhpcyBpcyB0aGUg4oCcbW90aGVy4oCdIGNsYXNzIGZvciB6bW9kZW0uanM7XG4gKiBhbGwgb3RoZXIgY2xhc3MgaW5zdGFuY2VzIGFyZSBjcmVhdGVkLCBkaXJlY3RseSBvciBpbmRpcmVjdGx5LFxuICogYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy5cbiAqXG4gKiBUaGlzIGxvZ2ljIGlzIG5vdCB1bmxpa2VseSB0byBuZWVkIHR3ZWFraW5nLCBhbmQgaXQgY2FuIG5ldmVyXG4gKiBiZSBmdWxseSBidWxsZXRwcm9vZjsgaWYgaXQgY291bGQgYmUgYnVsbGV0cHJvb2YgaXQgd291bGQgYmVcbiAqIHNpbXBsZXIgc2luY2UgdGhlcmUgd291bGRu4oCZdCBuZWVkIHRvIGJlIHRoZSAuY29uZmlybSgpLy5kZW55KClcbiAqIHN0ZXAuXG4gKlxuICogT25lIHRoaW5nIHlvdSBjb3VsZCBkbyB0byBtYWtlIHRoaW5ncyBhIGJpdCBzaW1wbGVyICppcyoganVzdFxuICogdG8gbWFrZSB0aGF0IGFzc3VtcHRpb24gZm9yIHlvdXIgdXNlcnMtLWkuZS4sIHRvIC5jb25maXJtKClcbiAqIERldGVjdGlvbiBvYmplY3RzIGF1dG9tYXRpY2FsbHkuIFRoYXTigJlsbCBiZSBvbmUgbGVzcyBzdGVwXG4gKiBmb3IgdGhlIHVzZXIsIGJ1dCBhbiB1bmFjY3VzdG9tZWQgdXNlciBtaWdodCBmaW5kIHRoYXQgYSBiaXRcbiAqIGNvbmZ1c2luZy4gSXTigJlzIGFsc28gdGhlbiBwb3NzaWJsZSB0byBoYXZlIGEg4oCcZmFsc2UgcG9zaXRpdmXigJ06XG4gKiBhIHRleHQgc3RyZWFtIHRoYXQgY29udGFpbnMgYSBaTU9ERU0gaW5pdGlhbGl6YXRpb24gc3RyaW5nIGJ1dFxuICogaXNu4oCZdCwgaW4gZmFjdCwgbWVhbnQgdG8gc3RhcnQgYSBaTU9ERU0gc2Vzc2lvbi5cbiAqXG4gKiBXb3JrZmxvdzpcbiAqICAtIHBhcnNlIGFsbCBpbnB1dCB3aXRoIC5jb25zdW1lKCkuIEFzIGxvbmcgYXMgbm90aGluZyBsb29rc1xuICogICAgICBsaWtlIFpNT0RFTSwgYWxsIHRoZSB0cmFmZmljIHdpbGwgZ28gdG8gdG9fdGVybWluYWwoKS5cbiAqXG4gKiAgLSB3aGVuIGEg4oCcdGVsbC10YWxl4oCdIHNlcXVlbmNlIG9mIGJ5dGVzIGFycml2ZXMsIHdlIGNyZWF0ZSBhXG4gKiAgICAgIERldGVjdGlvbiBvYmplY3QgYW5kIHBhc3MgaXQgdG8gdGhlIOKAnG9uX2RldGVjdOKAnSBoYW5kbGVyLlxuICpcbiAqICAtIEVpdGhlciAuY29uZmlybSgpIG9yIC5kZW55KCkgd2l0aCB0aGUgRGV0ZWN0aW9uIG9iamVjdC5cbiAqICAgICAgVGhpcyBpcyB0aGUgdXNlcuKAmXMgY2hhbmNlIHRvIHNheSwg4oCceWVhaCwgSSBrbm93IHRob3NlXG4gKiAgICAgIGJ5dGVzIGxvb2sgbGlrZSBaTU9ERU0sIGJ1dCB0aGV54oCZcmUgbm90LiBTbyBiYWNrIG9mZiHigJ1cbiAqXG4gKiAgICAgIElmIHlvdSAuY29uZmlybSgpLCB0aGUgU2Vzc2lvbiBvYmplY3QgaXMgcmV0dXJuZWQsIGFuZFxuICogICAgICBmdXJ0aGVyIGlucHV0IHRoYXQgZ29lcyB0byB0aGUgU2VudHJ54oCZcyAuY29uc3VtZSgpIHdpbGxcbiAqICAgICAgZ28gdG8gdGhlIChub3ctYWN0aXZlKSBTZXNzaW9uIG9iamVjdC5cbiAqXG4gKiAgLSBTb21ldGltZXMgYWRkaXRpb25hbCB0cmFmZmljIGFycml2ZXMgdGhhdCBtYWtlcyBpdCBhcHBhcmVudFxuICogICAgICB0aGF0IG5vIFpNT0RFTSBzZXNzaW9uIGlzIGludGVuZGVkIHRvIHN0YXJ0OyBpbiB0aGlzIGNhc2UsXG4gKiAgICAgIHRoZSBTZW50cnkgbWFya3MgdGhlIERldGVjdGlvbiBhcyDigJxzdGFsZeKAnSBhbmQgY2FsbHMgdGhlXG4gKiAgICAgIGBvbl9yZXRyYWN0YCBoYW5kbGVyLiBBbnkgYXR0ZW1wdCBmcm9tIGhlcmUgdG8gLmNvbmZpcm0oKVxuICogICAgICBvbiB0aGUgRGV0ZWN0aW9uIG9iamVjdCB3aWxsIHByb21wdCBhbiBleGNlcHRpb24uXG4gKlxuICogICAgICAoVGhpcyDigJxyZXRyYWN0aW9u4oCdIGJlaGF2aW9yIHdpbGwgb25seSBoYXBwZW4gcHJpb3IgdG9cbiAqICAgICAgLmNvbmZpcm0oKSBvciAuZGVueSgpIGJlaW5nIGNhbGxlZCBvbiB0aGUgRGV0ZWN0aW9uIG9iamVjdC5cbiAqICAgICAgQmV5b25kIHRoYXQgcG9pbnQsIGVpdGhlciB0aGUgU2Vzc2lvbiBoYXMgdG8gZGVhbCB3aXRoIHRoZVxuICogICAgICDigJxnYXJiYWdl4oCdLCBvciBpdOKAmXMgYmFjayB0byB0aGUgdGVybWluYWwgYW55d2F5LlxuICpcbiAqICAtIE9uY2UgdGhlIFNlc3Npb24gb2JqZWN0IGlzIGRvbmUsIHRoZSBTZW50cnkgd2lsbCBhZ2FpbiBzZW5kXG4gKiAgICAgIGFsbCB0cmFmZmljIHRvIHRvX3Rlcm1pbmFsKCkuXG4gKi9cblptb2RlbS5TZW50cnkgPSBjbGFzcyBabW9kZW1TZW50cnkge1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCBkaXJlY3RseS4gQ3JlYXRlcyBhIG5ldyBTZW50cnkgdGhhdCBpbnNwZWN0cyBhbGxcbiAgICAgKiB0cmFmZmljIGJlZm9yZSBpdCBnb2VzIHRvIHRoZSB0ZXJtaW5hbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gVGhlIFNlbnRyeSBwYXJhbWV0ZXJzXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnRvX3Rlcm1pbmFsIC0gSGFuZGxlciB0aGF0IHNlbmRzXG4gICAgICogdHJhZmZpYyB0byB0aGUgdGVybWluYWwgb2JqZWN0LiBSZWNlaXZlcyBhbiBpdGVyYWJsZSBvYmplY3RcbiAgICAgKiAoZS5nLiwgYW4gQXJyYXkpIHRoYXQgY29udGFpbnMgb2N0ZXQgbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMub25fZGV0ZWN0IC0gSGFuZGxlciBmb3IgbmV3XG4gICAgICogZGV0ZWN0aW9uIGV2ZW50cy4gUmVjZWl2ZXMgYSBuZXcgRGV0ZWN0aW9uIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMub25fcmV0cmFjdCAtIEhhbmRsZXIgZm9yIHJldHJhY3Rpb25cbiAgICAgKiBldmVudHMuIFJlY2VpdmVzIG5vIGlucHV0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5zZW5kZXIgLSBIYW5kbGVyIHRoYXQgc2VuZHMgdHJhZmZpYyB0b1xuICAgICAqIHRoZSBwZWVyLiBJZiwgZm9yIGV4YW1wbGUsIHlvdXIgYXBwbGljYXRpb24gdXNlcyBXZWJTb2NrZXQgdG8gdGFsa1xuICAgICAqIHRvIHRoZSBwZWVyLCB1c2UgdGhpcyB0byBzZW5kIGRhdGEgdG8gdGhlIFdlYlNvY2tldCBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIGlmICghb3B0aW9ucykgdGhyb3cgXCJOZWVkIG9wdGlvbnMhXCI7XG5cbiAgICAgICAgdmFyIHNlbnRyeSA9IHRoaXM7XG4gICAgICAgIFNFTlRSWV9DT05TVFJVQ1RPUl9SRVFVSVJFRF9BUkdTLmZvckVhY2goIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zW2FyZ10pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBcIk5lZWQg4oCcXCIgKyBhcmcgKyBcIuKAnSFcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbnRyeVtcIl9cIiArIGFyZ10gPSBvcHRpb25zW2FyZ107XG4gICAgICAgIH0gKTtcblxuICAgICAgICB0aGlzLl9jYWNoZSA9IFtdO1xuICAgIH1cblxuICAgIF9hZnRlcl9zZXNzaW9uX2VuZCgpIHtcbiAgICAgICAgdGhpcy5fenNlc3Npb24gPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOKAnENvbnN1bWVz4oCdIGEgcGllY2Ugb2YgaW5wdXQ6XG4gICAgICpcbiAgICAgKiAgLSBJZiB0aGVyZSBpcyBubyBhY3RpdmUgb3IgcGVuZGluZyBaTU9ERU0gc2Vzc2lvbiwgdGhlIHRleHQgaXNcbiAgICAgKiAgICAgIGFsbCBvdXRwdXQuIChUaGlzIGlzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZeKAmXZlIGdvdCBhIG5ld1xuICAgICAqICAgICAgRGV0ZWN0aW9uLilcbiAgICAgKlxuICAgICAqICAtIElmIHRoZXJlIGlzIG5vIGFjdGl2ZSBaTU9ERU0gc2Vzc2lvbiBhbmQgdGhlIGlucHV0ICoqZW5kcyoqIHdpdGhcbiAgICAgKiAgICAgIGEgWlJJTklUIG9yIFpSUUlOSVQsIHRoZW4gYSBuZXcgRGV0ZWN0aW9uIG9iamVjdCBpcyBjcmVhdGVkLFxuICAgICAqICAgICAgYW5kIGl0IGlzIHBhc3NlZCB0byB0aGUg4oCcb25fZGV0ZWN04oCdIGZ1bmN0aW9uLlxuICAgICAqICAgICAgSWYgdGhlcmUgd2FzIGFub3RoZXIgcGVuZGluZyBEZXRlY3Rpb24gb2JqZWN0LCBpdCBpcyByZXRyYWN0ZWQuXG4gICAgICpcbiAgICAgKiAgLSBJZiB0aGVyZSBpcyBubyBhY3RpdmUgWk1PREVNIHNlc3Npb24gYW5kIHRoZSBpbnB1dCBkb2VzIE5PVCBlbmRcbiAgICAgKiAgICAgIHdpdGggYSBaUklOSVQgb3IgWlJRSU5JVCwgdGhlbiBhbnkgcGVuZGluZyBEZXRlY3Rpb24gb2JqZWN0IGlzXG4gICAgICogICAgICByZXRyYWN0ZWQuXG4gICAgICpcbiAgICAgKiAgLSBJZiB0aGVyZSBpcyBhbiBhY3RpdmUgWk1PREVNIHNlc3Npb24sIHRoZSBpbnB1dCBpcyBwYXNzZWQgdG8gaXQuXG4gICAgICogICAgICBBbnkgbm9uLVpNT0RFTSBkYXRhIChpLmUuLCDigJxnYXJiYWdl4oCdKSBwYXJzZWQgZnJvbSB0aGUgaW5wdXRcbiAgICAgKiAgICAgIGlzIHNlbnQgdG8gb3V0cHV0LlxuICAgICAqICAgICAgSWYgdGhlIFpNT0RFTSBzZXNzaW9uIGVuZHMsIGFueSBwb3N0LVpNT0RFTSBwYXJ0IG9mIHRoZSBpbnB1dFxuICAgICAqICAgICAgaXMgc2VudCB0byBvdXRwdXQuXG4gICAgICpcbiAgICAgKiAgQHBhcmFtIHtudW1iZXJbXSB8IEFycmF5QnVmZmVyfSBpbnB1dCAtIE9jdGV0cyB0byBwYXJzZSBhcyBpbnB1dC5cbiAgICAgKi9cbiAgICBjb25zdW1lKGlucHV0KSB7XG4gICAgICAgIGlmICghKGlucHV0IGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICAgICAgICBpbnB1dCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKCBuZXcgVWludDhBcnJheShpbnB1dCkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl96c2Vzc2lvbikge1xuICAgICAgICAgICAgdmFyIHNlc3Npb25fYmVmb3JlX2NvbnN1bWUgPSB0aGlzLl96c2Vzc2lvbjtcblxuICAgICAgICAgICAgc2Vzc2lvbl9iZWZvcmVfY29uc3VtZS5jb25zdW1lKGlucHV0KTtcblxuICAgICAgICAgICAgaWYgKHNlc3Npb25fYmVmb3JlX2NvbnN1bWUuaGFzX2VuZGVkKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbl9iZWZvcmVfY29uc3VtZS50eXBlID09PSBcInJlY2VpdmVcIikge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IHNlc3Npb25fYmVmb3JlX2NvbnN1bWUuZ2V0X3RyYWlsaW5nX2J5dGVzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5ld19zZXNzaW9uID0gdGhpcy5fcGFyc2UoaW5wdXQpO1xuICAgICAgICB2YXIgdG9fdGVybWluYWwgPSBpbnB1dDtcblxuICAgICAgICBpZiAobmV3X3Nlc3Npb24pIHtcbiAgICAgICAgICAgIGxldCByZXBsYWNlbWVudF9kZXRlY3QgPSAhIXRoaXMuX3BhcnNlZF9zZXNzaW9uO1xuXG4gICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRfZGV0ZWN0KSB7XG4gICAgICAgICAgICAgICAgLy9ubyB0ZXJtaW5hbCBvdXRwdXQgaWYgdGhlIG5ldyBzZXNzaW9uIGlzIG9mIHRoZVxuICAgICAgICAgICAgICAgIC8vc2FtZSB0eXBlIGFzIHRoZSBvbGRcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGFyc2VkX3Nlc3Npb24udHlwZSA9PT0gbmV3X3Nlc3Npb24udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICB0b190ZXJtaW5hbCA9IFtdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX29uX3JldHJhY3QoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcGFyc2VkX3Nlc3Npb24gPSBuZXdfc2Vzc2lvbjtcblxuICAgICAgICAgICAgdmFyIHNlbnRyeSA9IHRoaXM7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbnRyeS5fcGFyc2VkX3Nlc3Npb24gPT09IG5ld19zZXNzaW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL1RoaXMgcnVucyB3aXRoIHRoZSBTZW50cnkgb2JqZWN0IGFzIHRoZSBjb250ZXh0LlxuICAgICAgICAgICAgZnVuY3Rpb24gYWNjZXB0ZXIoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzX3ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgXCJTdGFsZSBaTU9ERU0gc2Vzc2lvbiFcIjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXdfc2Vzc2lvbi5vbihcImdhcmJhZ2VcIiwgc2VudHJ5Ll90b190ZXJtaW5hbCk7XG5cbiAgICAgICAgICAgICAgICBuZXdfc2Vzc2lvbi5vbihcbiAgICAgICAgICAgICAgICAgICAgXCJzZXNzaW9uX2VuZFwiLFxuICAgICAgICAgICAgICAgICAgICBzZW50cnkuX2FmdGVyX3Nlc3Npb25fZW5kLmJpbmQoc2VudHJ5KVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBuZXdfc2Vzc2lvbi5zZXRfc2VuZGVyKHNlbnRyeS5fc2VuZGVyKTtcblxuICAgICAgICAgICAgICAgIGRlbGV0ZSBzZW50cnkuX3BhcnNlZF9zZXNzaW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbnRyeS5fenNlc3Npb24gPSBuZXdfc2Vzc2lvbjtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGRlbmllcigpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNfdmFsaWQoKSkgcmV0dXJuO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5fb25fZGV0ZWN0KCBuZXcgRGV0ZWN0aW9uKFxuICAgICAgICAgICAgICAgIG5ld19zZXNzaW9uLnR5cGUsXG4gICAgICAgICAgICAgICAgYWNjZXB0ZXIsXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VuZF9hYm9ydC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIGNoZWNrZXJcbiAgICAgICAgICAgICkgKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICBpZiAodGhpcy5fcGFyc2VkX3Nlc3Npb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uX3N0YWxlX2JlY2F1c2UgPSAnTm9uLVpNT0RFTSBvdXRwdXQgcmVjZWl2ZWQgYWZ0ZXIgWk1PREVNIGluaXRpYWxpemF0aW9uLic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICB2YXIgZXhwaXJlZF9zZXNzaW9uID0gdGhpcy5fcGFyc2VkX3Nlc3Npb247XG5cbiAgICAgICAgICAgIHRoaXMuX3BhcnNlZF9zZXNzaW9uID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKGV4cGlyZWRfc2Vzc2lvbikge1xuXG4gICAgICAgICAgICAgICAgLy9JZiB3ZSBnb3QgYSBzaW5nbGUg4oCcQ+KAnSBhZnRlciBwYXJzaW5nIGEgc2Vzc2lvbixcbiAgICAgICAgICAgICAgICAvL3RoYXQgbWVhbnMgb3VyIHBlZXIgaXMgdHJ5aW5nIHRvIGRvd25ncmFkZSB0byBZTU9ERU0uXG4gICAgICAgICAgICAgICAgLy9UaGF0IHdvbuKAmXQgd29yaywgc28gd2UganVzdCBzZW5kIHRoZSBBQk9SVF9TRVFVRU5DRVxuICAgICAgICAgICAgICAgIC8vcmlnaHQgYXdheS5cbiAgICAgICAgICAgICAgICBpZiAodG9fdGVybWluYWwubGVuZ3RoID09PSAxICYmIHRvX3Rlcm1pbmFsWzBdID09PSA2Nykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZW5kX2Fib3J0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fb25fcmV0cmFjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdG9fdGVybWluYWwodG9fdGVybWluYWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge1Nlc3Npb258bnVsbH0gVGhlIHNlbnRyeeKAmXMgY3VycmVudCBTZXNzaW9uIG9iamVjdCwgb3JcbiAgICAgKiAgICAgIG51bGwgaWYgdGhlcmUgaXMgbm9uZS5cbiAgICAgKi9cbiAgICBnZXRfY29uZmlybWVkX3Nlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl96c2Vzc2lvbiB8fCBudWxsO1xuICAgIH1cblxuICAgIF9zZW5kX2Fib3J0KCkge1xuICAgICAgICB0aGlzLl9zZW5kZXIoIFptb2RlbS5aTUxJQi5BQk9SVF9TRVFVRU5DRSApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlIGFuIGlucHV0IHN0cmVhbSBhbmQgZGVjaWRlIGhvdyBtdWNoIG9mIGl0IGdvZXMgdG8gdGhlXG4gICAgICogdGVybWluYWwgb3IgdG8gYSBuZXcgU2Vzc2lvbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBUaGlzIHdpbGwgYWNjb21tb2RhdGUgaW5wdXQgc3RyaW5ncyB0aGF0IGFyZSBmcmFnbWVudGVkXG4gICAgICogYWNyb3NzIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb247IGUuZy4sIGlmIHlvdSBzZW5kIHRoZSBmaXJzdFxuICAgICAqIHR3byBieXRlcyBhdCB0aGUgZW5kIG9mIG9uZSBwYXJzZSgpIGNhbGwgdGhlbiBzZW5kIHRoZSByZXN0XG4gICAgICogYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCwgcGFyc2UoKSB3aWxsIHJlY29nbml6ZSBpdCBhc1xuICAgICAqIHRoZSBiZWdpbm5pbmcgb2YgYSBaTU9ERU0gc2Vzc2lvbi5cbiAgICAgKlxuICAgICAqIEluIG9yZGVyIHRvIGtlZXAgZnJvbSBibG9ja2luZyBhbnkgYWN0dWFsIHVzZWZ1bCBkYXRhIHRvIHRoZVxuICAgICAqIHRlcm1pbmFsIGluIHJlYWwtdGltZSwgdGhpcyB3aWxsIHNlbmQgb24gdGhlIGluaXRpYWxcbiAgICAgKiBaUklOSVQvWlJRSU5JVCBieXRlcyB0byB0aGUgdGVybWluYWwuIFRoZXnigJlyZSBtZWFudCB0byBnbyB0byB0aGVcbiAgICAgKiB0ZXJtaW5hbCBhbnl3YXksIHNvIHRoYXQgc2hvdWxkIGJlIGZpbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcnJheXxVaW50OEFycmF5fSBhcnJheV9saWtlIC0gVGhlIGlucHV0IGJ5dGVzLlxuICAgICAqICAgICAgRWFjaCBtZW1iZXIgc2hvdWxkIGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMjU1IChpbmNsdXNpdmUpLlxuICAgICAqXG4gICAgICogQHJldHVybiB7QXJyYXl9IEEgdHdvLW1lbWJlciBsaXN0OlxuICAgICAqICAgICAgMCkgdGhlIGJ5dGVzIHRoYXQgc2hvdWxkIGJlIHByaW50ZWQgb24gdGhlIHRlcm1pbmFsXG4gICAgICogICAgICAxKSB0aGUgY3JlYXRlZCBTZXNzaW9uIG9iamVjdCAoaWYgYW55KVxuICAgICAqL1xuICAgIF9wYXJzZShhcnJheV9saWtlKSB7XG4gICAgICAgIHZhciBjYWNoZSA9IHRoaXMuX2NhY2hlO1xuXG4gICAgICAgIGNhY2hlLnB1c2guYXBwbHkoIGNhY2hlLCBhcnJheV9saWtlICk7XG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGxldCBjb21tb25faGV4X2F0ID0gWm1vZGVtLlpNTElCLmZpbmRfc3ViYXJyYXkoIGNhY2hlLCBDT01NT05fWk1fSEVYX1NUQVJUICk7XG4gICAgICAgICAgICBpZiAoLTEgPT09IGNvbW1vbl9oZXhfYXQpIGJyZWFrO1xuXG4gICAgICAgICAgICBsZXQgYmVmb3JlX2NvbW1vbl9oZXggPSBjYWNoZS5zcGxpY2UoMCwgY29tbW9uX2hleF9hdCk7XG4gICAgICAgICAgICBsZXQgenNlc3Npb247XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHpzZXNzaW9uID0gWm1vZGVtLlNlc3Npb24ucGFyc2UoY2FjaGUpO1xuICAgICAgICAgICAgfSBjYXRjaChlcnIpIHsgICAgIC8vaWdub3JlIGVycm9yc1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF6c2Vzc2lvbikgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vRG9u4oCZdCBuZWVkIHRvIHBhcnNlIHRoZSB0cmFpbGluZyBYT04uXG4gICAgICAgICAgICBpZiAoKGNhY2hlLmxlbmd0aCA9PT0gMSkgJiYgKGNhY2hlWzBdID09PSBabW9kZW0uWk1MSUIuWE9OKSkge1xuICAgICAgICAgICAgICAgIGNhY2hlLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vSWYgdGhlcmUgYXJlIHN0aWxsIGJ5dGVzIGluIHRoZSBjYWNoZSxcbiAgICAgICAgICAgIC8vdGhlbiB3ZSBkb27igJl0IGhhdmUgYSBaTU9ERU0gc2Vzc2lvbi4gVGhpcyBsb2dpYyBkZXBlbmRzXG4gICAgICAgICAgICAvL29uIHRoZSBzZW5kZXIgb25seSBzZW5kaW5nIG9uZSBpbml0aWFsIGhlYWRlci5cbiAgICAgICAgICAgIHJldHVybiBjYWNoZS5sZW5ndGggPyBudWxsIDogenNlc3Npb247XG4gICAgICAgIH1cblxuICAgICAgICBjYWNoZS5zcGxpY2UoIE1BWF9aTV9IRVhfU1RBUlRfTEVOR1RIICk7XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBabW9kZW0gPSBtb2R1bGUuZXhwb3J0cztcblxuLyoqXG4gKiBUaGlzIGlzIHdoZXJlIHRoZSBwcm90b2NvbC1sZXZlbCBsb2dpYyBsaXZlczogdGhlIGludGVyYWN0aW9uIG9mIFpNT0RFTVxuICogaGVhZGVycyBhbmQgc3VicGFja2V0cy4gVGhlIGxvZ2ljIGhlcmUgaXMgbm90IHVubGlrZWx5IHRvIG5lZWQgdHdlYWtpbmdcbiAqIGFzIGxpdHRsZSBlZGdlIGNhc2VzIGNyb3AgdXAuXG4gKi9cblxuWm1vZGVtLkRFQlVHID0gZmFsc2U7XG5cbk9iamVjdC5hc3NpZ24oXG4gICAgWm1vZGVtLFxuICAgIHJlcXVpcmUoXCIuL2VuY29kZVwiKSxcbiAgICByZXF1aXJlKFwiLi90ZXh0XCIpLFxuICAgIHJlcXVpcmUoXCIuL3pkbGVcIiksXG4gICAgcmVxdWlyZShcIi4vem1saWJcIiksXG4gICAgcmVxdWlyZShcIi4vemhlYWRlclwiKSxcbiAgICByZXF1aXJlKFwiLi96c3VicGFja2V0XCIpLFxuICAgIHJlcXVpcmUoXCIuL3p2YWxpZGF0aW9uXCIpLFxuICAgIHJlcXVpcmUoXCIuL3plcnJvclwiKVxuKTtcblxuY29uc3RcbiAgICAvL3BlcnRpbmVudCB0byB0aGlzIG1vZHVsZVxuICAgIEtFRVBBTElWRV9JTlRFUlZBTCA9IDUwMDAsXG5cbiAgICAvL1dlIG91cnNlbHZlcyBkb27igJl0IG5lZWQgRVNDQ1RMLCBzbyB3ZSBkb27igJl0IHNlbmQgaXQ7XG4gICAgLy9ob3dldmVyLCB3ZSBhbHdheXMgZXhwZWN0IHRvIHJlY2VpdmUgaXQgaW4gWlJJTklULlxuICAgIC8vU2VlIF9lbnN1cmVfcmVjZWl2ZXJfZXNjYXBlc19jdHJsX2NoYXJzKCkgZm9yIG1vcmUgZGV0YWlscy5cbiAgICBaUklOSVRfRkxBR1MgPSBbXG4gICAgICAgIFwiQ0FORkRYXCIsICAgLy9mdWxsIGR1cGxleFxuICAgICAgICBcIkNBTk9WSU9cIiwgIC8vb3ZlcmxhcCBJL09cblxuICAgICAgICAvL2xzeiBoYXMgYSBidWZmZXIgb3ZlcmZsb3cgYnVnIHRoYXQgc2hvd3MgaXRzZWxmIHdoZW46XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAtIDE2LWJpdCBDUkMgaXMgdXNlZCwgYW5kXG4gICAgICAgIC8vICAtIGxzeiByZWNlaXZlcyB0aGUgYWJvcnQgc2VxdWVuY2Ugd2hpbGUgc2VuZGluZyBhIGZpbGVcbiAgICAgICAgLy9cbiAgICAgICAgLy9UbyBhdm9pZCB0aGlzLCB3ZSBqdXN0IHRlbGwgbHN6IHRvIHVzZSAzMi1iaXQgQ1JDXG4gICAgICAgIC8vZXZlbiB0aG91Z2ggdGhlcmUgaXMgb3RoZXJ3aXNlIG5vIHJlYXNvbi4gVGhpcyBlbnN1cmVzIHRoYXRcbiAgICAgICAgLy91bmZpeGVkIGxzeiB2ZXJzaW9ucyB3aWxsIGF2b2lkIHRoZSBidWZmZXIgb3ZlcmZsb3cuXG4gICAgICAgIFwiQ0FORkMzMlwiLFxuICAgIF0sXG5cbiAgICAvL1dlIGRvIHRoaXMgYmVjYXVzZSBzb21lIFdlYlNvY2tldCBzaGVsbCBzZXJ2ZXJzXG4gICAgLy8oZS5nLiwgeHRlcm0uanPigJlzIGRlbW8gc2VydmVyKSBlbmFibGUgdGhlIElFWFRFTiB0ZXJtaW9zIGZsYWcsXG4gICAgLy93aGljaCBiYXJzIDB4MGYgYW5kIDB4MTYgZnJvbSByZWFjaGluZyB0aGUgc2hlbGwgcHJvY2VzcyxcbiAgICAvL3doaWNoIHJlc3VsdHMgaW4gdHJhbnNtaXNzaW9uIGVycm9ycy5cbiAgICBGT1JDRV9FU0NBUEVfQ1RSTF9DSEFSUyA9IHRydWUsXG5cbiAgICBERUZBVUxUX1JFQ0VJVkVfSU5QVVRfTU9ERSA9IFwic3Bvb2xfdWludDhhcnJheVwiLFxuXG4gICAgLy9wZXJ0aW5lbnQgdG8gWk1PREVNXG4gICAgTUFYX0NIVU5LX0xFTkdUSCA9IDgxOTIsICAgIC8vMSBLaUIgb2ZmaWNpYWxseSwgYnV0IGxyenN6IGFsbG93cyA4MTkyXG4gICAgQlMgPSAweDgsXG4gICAgT1ZFUl9BTkRfT1VUID0gWyA3OSwgNzkgXSxcbiAgICBBQk9SVF9TRVFVRU5DRSA9IFptb2RlbS5aTUxJQi5BQk9SVF9TRVFVRU5DRVxuO1xuXG4vKipcbiAqIEEgYmFzZSBjbGFzcyBmb3Igb2JqZWN0cyB0aGF0IGhhdmUgZXZlbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIF9FdmVudGVyIHtcblxuICAgIC8qKlxuICAgICAqIE5vdCBjYWxsZWQgZGlyZWN0bHkuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX29uX2V2dCA9IHt9O1xuICAgICAgICB0aGlzLl9ldnRfb25jZV9pbmRleCA9IHt9O1xuICAgIH1cblxuICAgIF9BZGRfZXZlbnQoZXZ0X25hbWUpIHtcbiAgICAgICAgdGhpcy5fb25fZXZ0W2V2dF9uYW1lXSA9IFtdO1xuICAgICAgICB0aGlzLl9ldnRfb25jZV9pbmRleFtldnRfbmFtZV0gPSBbXTtcbiAgICB9XG5cbiAgICBfZ2V0X2V2dF9xdWV1ZShldnRfbmFtZSkge1xuICAgICAgICBpZiAoIXRoaXMuX29uX2V2dFtldnRfbmFtZV0pIHtcbiAgICAgICAgICAgIHRocm93KCBcIkJhZCBldmVudDogXCIgKyBldnRfbmFtZSApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX29uX2V2dFtldnRfbmFtZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgYSBjYWxsYmFjayBmb3IgYSBnaXZlbiBldmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldnRfbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHRvZG8gLSBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSB3aGVuIHRoZSBldmVudCBoYXBwZW5zLlxuICAgICAqL1xuICAgIG9uKGV2dF9uYW1lLCB0b2RvKSB7XG4gICAgICAgIHZhciBxdWV1ZSA9IHRoaXMuX2dldF9ldnRfcXVldWUoZXZ0X25hbWUpO1xuXG4gICAgICAgIHF1ZXVlLnB1c2godG9kbyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW5yZWdpc3RlciBhIGNhbGxiYWNrIGZvciBhIGdpdmVuIGV2ZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV2dF9uYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3RvZG9dIC0gVGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgd2hlbiB0aGUgZXZlbnRcbiAgICAgKiAgaGFwcGVucy4gSWYgbm90IGdpdmVuLCB0aGUgbGFzdCBldmVudCByZWdpc3RlcmVkIGZvciB0aGUgZXZlbnRcbiAgICAgKiAgaXMgdW5yZWdpc3RlcmVkLlxuICAgICAqL1xuICAgIG9mZihldnRfbmFtZSwgdG9kbykge1xuICAgICAgICB2YXIgcXVldWUgPSB0aGlzLl9nZXRfZXZ0X3F1ZXVlKGV2dF9uYW1lKTtcblxuICAgICAgICBpZiAodG9kbykge1xuICAgICAgICAgICAgdmFyIGF0ID0gcXVldWUuaW5kZXhPZih0b2RvKTtcbiAgICAgICAgICAgIGlmIChhdCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyhcIuKAnFwiICsgdG9kbyArIFwi4oCdIGlzIG5vdCBpbiB0aGUg4oCcXCIgKyBldnRfbmFtZSArIFwi4oCdIHF1ZXVlLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHF1ZXVlLnNwbGljZShhdCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBxdWV1ZS5wb3AoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIF9IYXBwZW4oZXZ0X25hbWUgLyosIGFyZzAsIGFyZzEsIC4uICovKSB7XG4gICAgICAgIHZhciBxdWV1ZSA9IHRoaXMuX2dldF9ldnRfcXVldWUoZXZ0X25hbWUpOyAgIC8vbWlnaHQgYXMgd2VsbCB2YWxpZGF0ZVxuXG4gICAgICAgIC8vY29uc29sZS5pbmZvKFwiRVZFTlRcIiwgdGhpcywgYXJndW1lbnRzKTtcblxuICAgICAgICB2YXIgYXJncyA9IEFycmF5LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgIGFyZ3Muc2hpZnQoKTtcblxuICAgICAgICB2YXIgc2VzcyA9IHRoaXM7XG5cbiAgICAgICAgcXVldWUuZm9yRWFjaCggZnVuY3Rpb24oY2IpIHsgY2IuYXBwbHkoc2VzcywgYXJncykgfSApO1xuXG4gICAgICAgIHJldHVybiBxdWV1ZS5sZW5ndGg7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBTZXNzaW9uIGNsYXNzZXMgaGFuZGxlIHRoZSBwcm90b2NvbC1sZXZlbCBsb2dpYy5cbiAqIFRoZXNlIHNoaWVsZCB0aGUgdXNlciBmcm9tIGRlYWxpbmcgd2l0aCBoZWFkZXJzIGFuZCBzdWJwYWNrZXRzLlxuICogVGhpcyBpcyBhIGJhc2UgY2xhc3Mgd2l0aCBmdW5jdGlvbmFsaXR5IGNvbW1vbiB0byBib3RoIFJlY2VpdmVcbiAqIGFuZCBTZW5kIHN1YmNsYXNzZXMuXG4gKlxuICogQGV4dGVuZHMgX0V2ZW50ZXJcbiovXG5abW9kZW0uU2Vzc2lvbiA9IGNsYXNzIFptb2RlbVNlc3Npb24gZXh0ZW5kcyBfRXZlbnRlciB7XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZSBvdXQgYSBoZXggaGVhZGVyIGZyb20gdGhlIGdpdmVuIGFycmF5LlxuICAgICAqIElmIHRoZXJl4oCZcyBhIFpSUUlOSVQgb3IgWlJJTklUIGF0IHRoZSBiZWdpbm5pbmcsXG4gICAgICogd2XigJlsbCByZXR1cm4gaXQuIElmIHRoZSBpbnB1dCBpc27igJl0IGEgaGVhZGVyLFxuICAgICAqIGZvciB3aGF0ZXZlciByZWFzb24sIHdlIHJldHVybiB1bmRlZmluZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBvY3RldHMgLSBUaGUgYnl0ZXMgdG8gcGFyc2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTZXNzaW9ufHVuZGVmaW5lZH0gQSBTZXNzaW9uIG9iamVjdCBpZiB0aGUgYmVnaW5uaW5nXG4gICAgICogICAgICBvZiBhIHNlc3Npb24gd2FzIHBhcnNhYmxlIGluIOKAnG9jdGV0c+KAnTsgb3RoZXJ3aXNlIHVuZGVmaW5lZC5cbiAgICAgKi9cbiAgICBzdGF0aWMgcGFyc2UoIG9jdGV0cyApIHtcblxuICAgICAgICAvL1dpbGwgbmVlZCB0byB0cmFwIGVycm9ycy5cbiAgICAgICAgdmFyIGhkcjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGhkciA9IFptb2RlbS5IZWFkZXIucGFyc2VfaGV4KG9jdGV0cyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2goZSkgeyAgICAgLy9Eb27igJl0IHJlcG9ydCBzaW5jZSB3ZSBhcmVu4oCZdCBpbiBzZXNzaW9uXG5cbiAgICAgICAgICAgIC8vZGVidWdcbiAgICAgICAgICAgIC8vY29uc29sZS53YXJuKFwiTm8gaGV4IGhlYWRlcjogXCIsIGUpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhkcikgcmV0dXJuO1xuXG4gICAgICAgIHN3aXRjaCAoaGRyLk5BTUUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJaUlFJTklUXCI6XG4gICAgICAgICAgICAgICAgLy90aHJvdyBpZiBaQ09NTUFORFxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgWm1vZGVtLlNlc3Npb24uUmVjZWl2ZSgpO1xuICAgICAgICAgICAgY2FzZSBcIlpSSU5JVFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgWm1vZGVtLlNlc3Npb24uU2VuZChoZHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9jb25zb2xlLndhcm4oXCJJbnZhbGlkIGZpcnN0IFptb2RlbSBoZWFkZXJcIiwgaGRyKTtcbiAgICB9XG5cbiAgICBhbGxvd19taXNzaW5nX09PKGZsYWcpIHtcbiAgICAgICAgdGhpcy5fYWxsb3dfbWlzc2luZ19PTyA9ICEhZmxhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzZW5kZXIgZnVuY3Rpb24gdGhhdCBhIFNlc3Npb24gb2JqZWN0IHdpbGwgdXNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2VuZGVyX2Z1bmMgLSBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgKiAgICAgIEl0IHdpbGwgcmVjZWl2ZSBhbiBBcnJheSB3aXRoIHRoZSByZWxldmFudCBvY3RldHMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTZXNzaW9ufSBUaGUgc2Vzc2lvbiBvYmplY3QgKGZvciBjaGFpbmluZykuXG4gICAgICovXG4gICAgc2V0X3NlbmRlcihzZW5kZXJfZnVuYykge1xuICAgICAgICB0aGlzLl9zZW5kZXIgPSBzZW5kZXJfZnVuYztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgY3VycmVudCBTZXNzaW9uIGhhcyBlbmRlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUaGUgZW5kZWQgc3RhdGUuXG4gICAgICovXG4gICAgaGFzX2VuZGVkKCkgeyByZXR1cm4gdGhpcy5faGFzX2VuZGVkKCkgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3VtZXMgYW4gYXJyYXkgb2Ygb2N0ZXRzIGFzIFpNT0RFTSBzZXNzaW9uIGlucHV0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gb2N0ZXRzIC0gVGhlIGlucHV0IG9jdGV0cy5cbiAgICAgKi9cbiAgICBjb25zdW1lKG9jdGV0cykge1xuICAgICAgICB0aGlzLl9iZWZvcmVfY29uc3VtZShvY3RldHMpO1xuXG4gICAgICAgIGlmICh0aGlzLl9hYm9ydGVkKSB0aHJvdyBuZXcgWm1vZGVtLkVycm9yKCdhbHJlYWR5X2Fib3J0ZWQnKTtcblxuICAgICAgICBpZiAoIW9jdGV0cy5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICB0aGlzLl9zdHJpcF9hbmRfZW5xdWV1ZV9pbnB1dChvY3RldHMpO1xuXG4gICAgICAgIGlmICghdGhpcy5fY2hlY2tfZm9yX2Fib3J0X3NlcXVlbmNlKG9jdGV0cykpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnN1bWVfZmlyc3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IFNlc3Npb24gaGFzIGJlZW4gYGFib3J0KClgZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVGhlIGFib3J0ZWQgc3RhdGUuXG4gICAgICovXG4gICAgYWJvcnRlZCgpIHsgcmV0dXJuICEhdGhpcy5fYWJvcnRlZCB9XG5cbiAgICAvKipcbiAgICAgKiBOb3QgY2FsbGVkIGRpcmVjdGx5LlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvL2lmICghc2VuZGVyX2Z1bmMpIHRocm93IFwiTmVlZCBzZW5kZXIhXCI7XG5cbiAgICAgICAgLy90aGlzLl9maXJzdF9oZWFkZXIgPSBmaXJzdF9oZWFkZXI7XG4gICAgICAgIC8vdGhpcy5fc2VuZGVyID0gc2VuZGVyX2Z1bmM7XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IHt9O1xuXG4gICAgICAgIC8vdGhpcy5faW5wdXQgPSBuZXcgWklucHV0KCk7XG5cbiAgICAgICAgdGhpcy5faW5wdXRfYnVmZmVyID0gW107XG5cbiAgICAgICAgLy9UaGlzIGlzIG1vc3RseSBmb3IgZGVidWdnaW5nLlxuICAgICAgICB0aGlzLl9BZGRfZXZlbnQoXCJyZWNlaXZlXCIpO1xuICAgICAgICB0aGlzLl9BZGRfZXZlbnQoXCJnYXJiYWdlXCIpO1xuICAgICAgICB0aGlzLl9BZGRfZXZlbnQoXCJzZXNzaW9uX2VuZFwiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBTZXNzaW9uIG9iamVjdOKAmXMgcm9sZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IE9uZSBvZjpcbiAgICAgKiAtIGByZWNlaXZlYFxuICAgICAqIC0gYHNlbmRgXG4gICAgICovXG4gICAgZ2V0X3JvbGUoKSB7IHJldHVybiB0aGlzLnR5cGUgfVxuXG4gICAgX3RyaW1fbGVhZGluZ19nYXJiYWdlX3VudGlsX2hlYWRlcigpIHtcbiAgICAgICAgdmFyIGdhcmJhZ2UgPSBabW9kZW0uSGVhZGVyLnRyaW1fbGVhZGluZ19nYXJiYWdlKHRoaXMuX2lucHV0X2J1ZmZlcik7XG5cbiAgICAgICAgaWYgKGdhcmJhZ2UubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fSGFwcGVuKFwiZ2FyYmFnZVwiLCBnYXJiYWdlKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICAgICAgICAgICAgICAgIFwiR2FyYmFnZTogXCIsXG4gICAgICAgICAgICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBnYXJiYWdlKSxcbiAgICAgICAgICAgICAgICAgICAgZ2FyYmFnZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfcGFyc2VfYW5kX2NvbnN1bWVfaGVhZGVyKCkge1xuICAgICAgICB0aGlzLl90cmltX2xlYWRpbmdfZ2FyYmFnZV91bnRpbF9oZWFkZXIoKTtcblxuICAgICAgICB2YXIgbmV3X2hlYWRlcl9hbmRfY3JjID0gWm1vZGVtLkhlYWRlci5wYXJzZSh0aGlzLl9pbnB1dF9idWZmZXIpO1xuICAgICAgICBpZiAoIW5ld19oZWFkZXJfYW5kX2NyYykgcmV0dXJuO1xuXG4gICAgICAgIGlmIChabW9kZW0uREVCVUcpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ19oZWFkZXIoIFwiUkVDRUlWRUQgSEVBREVSXCIsIG5ld19oZWFkZXJfYW5kX2NyY1swXSApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY29uc3VtZV9oZWFkZXIobmV3X2hlYWRlcl9hbmRfY3JjWzBdKTtcblxuICAgICAgICB0aGlzLl9sYXN0X2hlYWRlcl9uYW1lID0gbmV3X2hlYWRlcl9hbmRfY3JjWzBdLk5BTUU7XG4gICAgICAgIHRoaXMuX2xhc3RfaGVhZGVyX2NyYyA9IG5ld19oZWFkZXJfYW5kX2NyY1sxXTtcblxuICAgICAgICByZXR1cm4gbmV3X2hlYWRlcl9hbmRfY3JjWzBdO1xuICAgIH1cblxuICAgIF9sb2dfaGVhZGVyKGxhYmVsLCBoZWFkZXIpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1Zyh0aGlzLnR5cGUsIGxhYmVsLCBoZWFkZXIuTkFNRSwgaGVhZGVyLl9ieXRlczQuam9pbigpKTtcbiAgICB9XG5cbiAgICBfY29uc3VtZV9oZWFkZXIobmV3X2hlYWRlcikge1xuICAgICAgICB0aGlzLl9vbl9yZWNlaXZlKG5ld19oZWFkZXIpO1xuXG4gICAgICAgIHZhciBoYW5kbGVyID0gdGhpcy5fbmV4dF9oZWFkZXJfaGFuZGxlciAmJiB0aGlzLl9uZXh0X2hlYWRlcl9oYW5kbGVyWyBuZXdfaGVhZGVyLk5BTUUgXTtcbiAgICAgICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVW5oYW5kbGVkIGhlYWRlciFcIiwgbmV3X2hlYWRlciwgdGhpcy5fbmV4dF9oZWFkZXJfaGFuZGxlcik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgWm1vZGVtLkVycm9yKCBcIlVuaGFuZGxlZCBoZWFkZXI6IFwiICsgbmV3X2hlYWRlci5OQU1FICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9uZXh0X2hlYWRlcl9oYW5kbGVyID0gbnVsbDtcblxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgbmV3X2hlYWRlcik7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBzdHJpcCBvdXQgdGhlIGFib3J0IHNlcXVlbmNlXG4gICAgX2NoZWNrX2Zvcl9hYm9ydF9zZXF1ZW5jZSgpIHtcbiAgICAgICAgdmFyIGFib3J0X2F0ID0gWm1vZGVtLlpNTElCLmZpbmRfc3ViYXJyYXkoIHRoaXMuX2lucHV0X2J1ZmZlciwgQUJPUlRfU0VRVUVOQ0UgKTtcblxuICAgICAgICBpZiAoYWJvcnRfYXQgIT09IC0xKSB7XG5cbiAgICAgICAgICAgIC8vVE9ETzogZXhwb3NlIHRoaXMgdG8gY2FsbGVyXG4gICAgICAgICAgICB0aGlzLl9pbnB1dF9idWZmZXIuc3BsaWNlKCAwLCBhYm9ydF9hdCArIEFCT1JUX1NFUVVFTkNFLmxlbmd0aCApO1xuXG4gICAgICAgICAgICB0aGlzLl9hYm9ydGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgLy9UT0RPIGNvbXBhcmUgcmVzcG9uc2UgaGVyZSB0byBscnpzei5cbiAgICAgICAgICAgIHRoaXMuX29uX3Nlc3Npb25fZW5kKCk7XG5cbiAgICAgICAgICAgIC8vV2Ugc2hvdWxkbuKAmXQgZXZlciBleHBlY3QgdG8gcmVjZWl2ZSBhbiBhYm9ydC4gRXZlbiBpZiB3ZVxuICAgICAgICAgICAgLy9oYXZlIHNlbnQgYW4gYWJvcnQgb3Vyc2VsdmVzLCB0aGUgU2VudHJ5IHNob3VsZCBoYXZlIHN0b3BwZWRcbiAgICAgICAgICAgIC8vZGlyZWN0aW5nIGlucHV0IHRvIHRoaXMgU2Vzc2lvbiBvYmplY3QuXG4gICAgICAgICAgICAvL2lmICh0aGlzLl9leHBlY3RfYWJvcnQpIHtcbiAgICAgICAgICAgIC8vICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgLy99XG5cbiAgICAgICAgICAgIHRocm93IG5ldyBabW9kZW0uRXJyb3IoXCJwZWVyX2Fib3J0ZWRcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfc2VuZF9oZWFkZXIobmFtZSAvKiwgYXJncyAqLykge1xuICAgICAgICBpZiAoIXRoaXMuX3NlbmRlcikgdGhyb3cgXCJOZWVkIHNlbmRlciFcIjtcblxuICAgICAgICB2YXIgYXJncyA9IEFycmF5LmFwcGx5KCBudWxsLCBhcmd1bWVudHMgKTtcblxuICAgICAgICB2YXIgYnl0ZXNfaGRyID0gdGhpcy5fY3JlYXRlX2hlYWRlcl9ieXRlcyhhcmdzKTtcblxuICAgICAgICBpZiAoWm1vZGVtLkRFQlVHKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dfaGVhZGVyKCBcIlNFTkRJTkcgSEVBREVSXCIsIGJ5dGVzX2hkclsxXSApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2VuZGVyKGJ5dGVzX2hkclswXSk7XG5cbiAgICAgICAgdGhpcy5fbGFzdF9zZW50X2hlYWRlciA9IGJ5dGVzX2hkclsxXTtcbiAgICB9XG5cbiAgICBfY3JlYXRlX2hlYWRlcl9ieXRlcyhuYW1lX2FuZF9hcmdzKSB7XG5cbiAgICAgICAgdmFyIGhkciA9IFptb2RlbS5IZWFkZXIuYnVpbGQuYXBwbHkoIFptb2RlbS5IZWFkZXIsIG5hbWVfYW5kX2FyZ3MgKTtcblxuICAgICAgICB2YXIgZm9ybWF0dGVyID0gdGhpcy5fZ2V0X2hlYWRlcl9mb3JtYXR0ZXIobmFtZV9hbmRfYXJnc1swXSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIGhkcltmb3JtYXR0ZXJdKHRoaXMuX3plbmNvZGVyKSxcbiAgICAgICAgICAgIGhkclxuICAgICAgICBdO1xuICAgIH1cblxuICAgIF9zdHJpcF9hbmRfZW5xdWV1ZV9pbnB1dChpbnB1dCkge1xuICAgICAgICBabW9kZW0uWk1MSUIuc3RyaXBfaWdub3JlZF9ieXRlcyhpbnB1dCk7XG5cbiAgICAgICAgLy9JdOKAmXMgcG9zc2libGUgdGhhdCDigJxpbnB1dOKAnSBpcyBlbXB0eSBhdCB0aGlzIHBvaW50LlxuICAgICAgICAvL0l0IGRvZXNu4oCZdCBzZWVtIHRvIGh1cnQgYW55dGhpbmcgdG8ga2VlcCBwcm9jZXNzaW5nLCB0aG91Z2guXG5cbiAgICAgICAgdGhpcy5faW5wdXRfYnVmZmVyLnB1c2guYXBwbHkoIHRoaXMuX2lucHV0X2J1ZmZlciwgaW5wdXQgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAqKlNUT1AhKiogWW91IHByb2JhYmx5IHdhbnQgdG8gYHNraXAoKWAgYW4gT2ZmZXIgcmF0aGVyIHRoYW5cbiAgICAgKiBgYWJvcnQoKWAuIFNlZSBiZWxvdy5cbiAgICAgKlxuICAgICAqIEFib3J0IHRoZSBjdXJyZW50IHNlc3Npb24gYnkgc2VuZGluZyB0aGUgWk1PREVNIGFib3J0IHNlcXVlbmNlLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBjYXVzZSB0aGUgU2Vzc2lvbiBvYmplY3QgdG8gcmVmdXNlIHRvIHNlbmRcbiAgICAgKiBhbnkgZnVydGhlciBkYXRhLlxuICAgICAqXG4gICAgICogWm1vZGVtLlNlbnRyeSBpcyBjb25maWd1cmVkIHRvIHNlbmQgYWxsIG91dHB1dCB0byB0aGUgdGVybWluYWxcbiAgICAgKiBhZnRlciBhIHNlc3Npb27igJlzIGBhYm9ydCgpYC4gVGhhdCBjb3VsZCByZXN1bHQgaW4gbG90cyBvZlxuICAgICAqIFpNT0RFTSBnYXJibGUgYmVpbmcgc2VudCB0byB0aGUgSmF2YVNjcmlwdCB0ZXJtaW5hbCwgd2hpY2ggeW91XG4gICAgICogcHJvYmFibHkgZG9u4oCZdCB3YW50LlxuICAgICAqXG4gICAgICogYHNraXAoKWAgb24gYW4gT2ZmZXIgaXMgYmV0dGVyIGJlY2F1c2UgU2Vzc2lvbiB3aWxsIGNvbnRpbnVlIHRvXG4gICAgICogZGlzY2FyZCBkYXRhIHVudGlsIHdlIHJlYWNoIGVpdGhlciBhbm90aGVyIGZpbGUgb3IgdGhlXG4gICAgICogc2VuZGVyLWluaXRpYXRlZCBlbmQgb2YgdGhlIFpNT0RFTSBzZXNzaW9uLiBTbyBubyBaTU9ERU0gZ2FyYmxlLFxuICAgICAqIGFuZCB0aGUgc2Vzc2lvbiB3aWxsIGVuZCBzdWNjZXNzZnVsbHkuXG4gICAgICpcbiAgICAgKiBUaGUgYmVoYXZpb3Igb2YgYGFib3J0KClgIGlzIHN1YmplY3QgdG8gY2hhbmdlIHNpbmNlIGl04oCZcyBub3RcbiAgICAgKiB2ZXJ5IHVzZWZ1bCBhcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQuXG4gICAgICovXG4gICAgYWJvcnQoKSB7XG5cbiAgICAgICAgLy90aGlzLl9leHBlY3RfYWJvcnQgPSB0cnVlO1xuXG4gICAgICAgIC8vRnJvbSBGb3JzYmVyZzpcbiAgICAgICAgLy9cbiAgICAgICAgLy9UaGUgQ2FuY2VsIHNlcXVlbmNlIGNvbnNpc3RzIG9mIGVpZ2h0IENBTiBjaGFyYWN0ZXJzXG4gICAgICAgIC8vYW5kIHRlbiBiYWNrc3BhY2UgY2hhcmFjdGVycy4gWk1PREVNIG9ubHkgcmVxdWlyZXMgZml2ZVxuICAgICAgICAvL0NhbmNlbCBjaGFyYWN0ZXJzOyB0aGUgb3RoZXIgdGhyZWUgYXJlIFwiaW5zdXJhbmNlXCIuXG4gICAgICAgIC8vVGhlIHRyYWlsaW5nIGJhY2tzcGFjZSBjaGFyYWN0ZXJzIGF0dGVtcHQgdG8gZXJhc2VcbiAgICAgICAgLy90aGUgZWZmZWN0cyBvZiB0aGUgQ0FOIGNoYXJhY3RlcnMgaWYgdGhleSBhcmVcbiAgICAgICAgLy9yZWNlaXZlZCBieSBhIGNvbW1hbmQgaW50ZXJwcmV0ZXIuXG4gICAgICAgIC8vXG4gICAgICAgIC8vRkc6IFNpbmNlIHdlIGFzc3VtZSBvdXIgY29ubmVjdGlvbiBpcyByZWxpYWJsZSwgdGhlcmXigJlzXG4gICAgICAgIC8vbm8gcmVhc29uIHRvIHNlbmQgbW9yZSB0aGFuIDUgQ0FOcy5cbiAgICAgICAgdGhpcy5fc2VuZGVyKFxuICAgICAgICAgICAgQUJPUlRfU0VRVUVOQ0UuY29uY2F0KFsgQlMsIEJTLCBCUywgQlMsIEJTIF0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fYWJvcnRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3NlbmRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFptb2RlbS5FcnJvcignYWxyZWFkeV9hYm9ydGVkJyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fb25fc2Vzc2lvbl9lbmQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX29uX3Nlc3Npb25fZW5kKCkge1xuICAgICAgICB0aGlzLl9IYXBwZW4oXCJzZXNzaW9uX2VuZFwiKTtcbiAgICB9XG5cbiAgICBfb25fcmVjZWl2ZShoZHJfb3JfcGt0KSB7XG4gICAgICAgIHRoaXMuX0hhcHBlbihcInJlY2VpdmVcIiwgaGRyX29yX3BrdCk7XG4gICAgfVxuXG4gICAgX2JlZm9yZV9jb25zdW1lKCkge31cbn1cblxuZnVuY3Rpb24gX3RyaW1fT08oYXJyYXkpIHtcbiAgICBpZiAoMCA9PT0gWm1vZGVtLlpNTElCLmZpbmRfc3ViYXJyYXkoYXJyYXksIE9WRVJfQU5EX09VVCkpIHtcbiAgICAgICAgYXJyYXkuc3BsaWNlKDAsIE9WRVJfQU5EX09VVC5sZW5ndGgpO1xuICAgIH1cblxuICAgIC8vVE9ETzogVGhpcyBhc3N1bWVzIE9WRVJfQU5EX09VVCBpcyAyIGJ5dGVzIGxvbmcuIE5vIGJpZ2dpZSwgYnV0LlxuICAgIGVsc2UgaWYgKCBhcnJheVswXSA9PT0gT1ZFUl9BTkRfT1VUWyBPVkVSX0FORF9PVVQubGVuZ3RoIC0gMSBdICkge1xuICAgICAgICBhcnJheS5zcGxpY2UoMCwgMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycmF5O1xufVxuXG4vKiogQSBjbGFzcyBmb3IgWk1PREVNIHJlY2VpdmUgc2Vzc2lvbnMuXG4gKlxuICogQGV4dGVuZHMgU2Vzc2lvblxuICovXG5abW9kZW0uU2Vzc2lvbi5SZWNlaXZlID0gY2xhc3MgWm1vZGVtUmVjZWl2ZVNlc3Npb24gZXh0ZW5kcyBabW9kZW0uU2Vzc2lvbiB7XG4gICAgLy9XZSBvbmx5IGdldCAxIGZpbGUgYXQgYSB0aW1lLCBzbyBvbiBlYWNoIGNvbnN1bWUoKSBlaXRoZXJcbiAgICAvL2NvbnRpbnVlIHN0YXRlIGZvciB0aGUgY3VycmVudCBmaWxlIG9yIHN0YXJ0IGEgbmV3IG9uZS5cblxuICAgIC8qKlxuICAgICAqIE5vdCBjYWxsZWQgZGlyZWN0bHkuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5fQWRkX2V2ZW50KFwib2ZmZXJcIik7XG4gICAgICAgIHRoaXMuX0FkZF9ldmVudChcImRhdGFfaW5cIik7XG4gICAgICAgIHRoaXMuX0FkZF9ldmVudChcImZpbGVfZW5kXCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN1bWUgaW5wdXQgYnl0ZXMgZnJvbSB0aGUgc2VuZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBvY3RldHMgLSBUaGUgYnl0ZXMgdG8gY29uc3VtZS5cbiAgICAgKi9cbiAgICBfYmVmb3JlX2NvbnN1bWUob2N0ZXRzKSB7XG4gICAgICAgIGlmICh0aGlzLl9ieXRlc19hZnRlcl9PTykge1xuICAgICAgICAgICAgdGhyb3cgXCJQUk9UT0NPTDogU2Vzc2lvbiBpcyBjb21wbGV0ZWQhXCI7XG4gICAgICAgIH1cblxuICAgICAgICAvL1B1dCB0aGlzIGhlcmUgc28gdGhhdCBvdXIgbG9naWMgbGF0ZXIgb24gaGFzIGFjY2VzcyB0byB0aGVcbiAgICAgICAgLy9pbnB1dCBzdHJpbmcgYW5kIGNhbiBwb3B1bGF0ZSBfYnl0ZXNfYWZ0ZXJfT08gd2hlbiB0aGVcbiAgICAgICAgLy9zZXNzaW9uIGVuZHMuXG4gICAgICAgIHRoaXMuX2J5dGVzX2JlaW5nX2NvbnN1bWVkID0gb2N0ZXRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBhbnkgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gYGNvbnN1bWUoKWBkIGJ1dFxuICAgICAqIGNhbWUgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgWk1PREVNIHNlc3Npb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyW119IFRoZSB0cmFpbGluZyBieXRlcy5cbiAgICAgKi9cbiAgICBnZXRfdHJhaWxpbmdfYnl0ZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLl9hYm9ydGVkKSByZXR1cm4gW107XG5cbiAgICAgICAgaWYgKCF0aGlzLl9ieXRlc19hZnRlcl9PTykge1xuICAgICAgICAgICAgdGhyb3cgXCJQUk9UT0NPTDogU2Vzc2lvbiBpcyBub3QgY29tcGxldGVkIVwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J5dGVzX2FmdGVyX09PLnNsaWNlKDApO1xuICAgIH1cblxuICAgIF9oYXNfZW5kZWQoKSB7IHJldHVybiB0aGlzLmFib3J0ZWQoKSB8fCAhIXRoaXMuX2J5dGVzX2FmdGVyX09PIH1cblxuICAgIC8vUmVjZWl2ZXIgYWx3YXlzIHNlbmRzIGhleCBoZWFkZXJzLlxuICAgIF9nZXRfaGVhZGVyX2Zvcm1hdHRlcigpIHsgcmV0dXJuIFwidG9faGV4XCIgfVxuXG4gICAgX3BhcnNlX2FuZF9jb25zdW1lX3N1YnBhY2tldCgpIHtcbiAgICAgICAgdmFyIHBhcnNlX2Z1bmM7XG4gICAgICAgIGlmICh0aGlzLl9sYXN0X2hlYWRlcl9jcmMgPT09IDE2KSB7XG4gICAgICAgICAgICBwYXJzZV9mdW5jID0gXCJwYXJzZTE2XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwYXJzZV9mdW5jID0gXCJwYXJzZTMyXCI7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3VicGFja2V0ID0gWm1vZGVtLlN1YnBhY2tldFtwYXJzZV9mdW5jXSh0aGlzLl9pbnB1dF9idWZmZXIpO1xuXG4gICAgICAgIGlmIChzdWJwYWNrZXQpIHtcbiAgICAgICAgICAgIGlmIChabW9kZW0uREVCVUcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKHRoaXMudHlwZSwgXCJSRUNFSVZFRCBTVUJQQUNLRVRcIiwgc3VicGFja2V0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY29uc3VtZV9kYXRhKHN1YnBhY2tldCk7XG5cbiAgICAgICAgICAgIC8vV2hhdCBzdGF0ZSBhcmUgd2UgaW4gaWYgdGhlIHN1YnBhY2tldCBpbmRpY2F0ZXMgZnJhbWUgZW5kXG4gICAgICAgICAgICAvL2J1dCB3ZSBoYXZlbuKAmXQgZ290dGVuIFpFT0YgeWV0PyBDYW4gYW55dGhpbmcgb3RoZXIgdGhhbiBaRU9GXG4gICAgICAgICAgICAvL2ZvbGxvdyBhZnRlciBhIFpEQVRBP1xuICAgICAgICAgICAgaWYgKHN1YnBhY2tldC5mcmFtZV9lbmQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX25leHRfc3VicGFja2V0X2hhbmRsZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1YnBhY2tldDtcbiAgICB9XG5cbiAgICBfY29uc3VtZV9maXJzdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2dvdF9aRklOKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faW5wdXRfYnVmZmVyLmxlbmd0aCA8IDIpIHJldHVybjtcblxuICAgICAgICAgICAgLy9pZiBpdOKAmXMgT08sIHRoZW4gc2V0IHRoaXMuX2J5dGVzX2FmdGVyX09PXG4gICAgICAgICAgICBpZiAodGhpcy5fYWxsb3dfbWlzc2luZ19PTyB8fCBabW9kZW0uWk1MSUIuZmluZF9zdWJhcnJheSh0aGlzLl9pbnB1dF9idWZmZXIsIE9WRVJfQU5EX09VVCkgPT09IDApIHtcblxuICAgICAgICAgICAgICAgIC8vVGhpcyBkb3VibGVzIGFzIGFuIGluZGljYXRpb24gdGhhdCB0aGUgc2Vzc2lvbiBoYXMgZW5kZWQuXG4gICAgICAgICAgICAgICAgLy9XZSBuZWVkIHRvIHNldCB0aGlzIHJpZ2h0IGF3YXkgc28gdGhhdCBoYW5kbGVycyBsaWtlXG4gICAgICAgICAgICAgICAgLy9cInNlc3Npb25fZW5kXCIgd2lsbCBoYXZlIGFjY2VzcyB0byBpdC5cbiAgICAgICAgICAgICAgICB0aGlzLl9ieXRlc19hZnRlcl9PTyA9IF90cmltX09PKHRoaXMuX2J5dGVzX2JlaW5nX2NvbnN1bWVkLnNsaWNlKDApKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9vbl9zZXNzaW9uX2VuZCgpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3coIFwiUFJPVE9DT0w6IE9ubHkgdGhpbmcgYWZ0ZXIgWkZJTiBzaG91bGQgYmUg4oCcT0/igJ0gKDc5LDc5KSwgbm90OiBcIiArIHRoaXMuX2lucHV0X2J1ZmZlci5qb2luKCkgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwYXJzZWQ7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9uZXh0X3N1YnBhY2tldF9oYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkID0gdGhpcy5fcGFyc2VfYW5kX2NvbnN1bWVfc3VicGFja2V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJzZWQgPSB0aGlzLl9wYXJzZV9hbmRfY29uc3VtZV9oZWFkZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAocGFyc2VkICYmIHRoaXMuX2lucHV0X2J1ZmZlci5sZW5ndGgpO1xuICAgIH1cblxuICAgIF9jb25zdW1lX2RhdGEoc3VicGFja2V0KSB7XG4gICAgICAgIHRoaXMuX29uX3JlY2VpdmUoc3VicGFja2V0KTtcblxuICAgICAgICBpZiAoIXRoaXMuX25leHRfc3VicGFja2V0X2hhbmRsZXIpIHtcbiAgICAgICAgICAgIHRocm93KCBcIlBST1RPQ09MOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGRhdGEgcGFja2V0IGFmdGVyIFwiICsgdGhpcy5fbGFzdF9oZWFkZXJfbmFtZSArIFwiIGhlYWRlcjogXCIgKyBzdWJwYWNrZXQuZ2V0X3BheWxvYWQoKS5qb2luKCkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX25leHRfc3VicGFja2V0X2hhbmRsZXIuY2FsbCh0aGlzLCBzdWJwYWNrZXQpO1xuICAgIH1cblxuICAgIF9vY3RldHNfdG9fc3RyaW5nKG9jdGV0cykge1xuICAgICAgICBpZiAoIXRoaXMuX3RleHRkZWNvZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl90ZXh0ZGVjb2RlciA9IG5ldyBabW9kZW0uVGV4dC5EZWNvZGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dGRlY29kZXIuZGVjb2RlKCBuZXcgVWludDhBcnJheShvY3RldHMpICk7XG4gICAgfVxuXG4gICAgX2NvbnN1bWVfWkZJTEVfZGF0YShoZHIsIHN1YnBhY2tldCkge1xuICAgICAgICBpZiAodGhpcy5fZmlsZV9pbmZvKSB7XG4gICAgICAgICAgICB0aHJvdyBcIlBST1RPQ09MOiBzZWNvbmQgWkZJTEUgZGF0YSBzdWJwYWNrZXQgcmVjZWl2ZWRcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwYWNrZXRfcGF5bG9hZCA9IHN1YnBhY2tldC5nZXRfcGF5bG9hZCgpO1xuICAgICAgICB2YXIgbnVsX2F0ID0gcGFja2V0X3BheWxvYWQuaW5kZXhPZigwKTtcblxuICAgICAgICAvL1xuICAgICAgICB2YXIgZm5hbWUgPSB0aGlzLl9vY3RldHNfdG9fc3RyaW5nKCBwYWNrZXRfcGF5bG9hZC5zbGljZSgwLCBudWxfYXQpICk7XG4gICAgICAgIHZhciB0aGVfcmVzdCA9IHRoaXMuX29jdGV0c190b19zdHJpbmcoIHBhY2tldF9wYXlsb2FkLnNsaWNlKCAxICsgbnVsX2F0ICkgKS5zcGxpdChcIiBcIik7XG5cbiAgICAgICAgdmFyIG10aW1lID0gdGhlX3Jlc3RbMV0gJiYgcGFyc2VJbnQoIHRoZV9yZXN0WzFdLCA4ICkgfHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAobXRpbWUpIHtcbiAgICAgICAgICAgIG10aW1lID0gbmV3IERhdGUobXRpbWUgKiAxMDAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZpbGVfaW5mbyA9IHtcbiAgICAgICAgICAgIG5hbWU6IGZuYW1lLFxuICAgICAgICAgICAgc2l6ZTogdGhlX3Jlc3RbMF0gPyBwYXJzZUludCggdGhlX3Jlc3RbMF0sIDEwICkgOiBudWxsLFxuICAgICAgICAgICAgbXRpbWU6IG10aW1lIHx8IG51bGwsXG4gICAgICAgICAgICBtb2RlOiB0aGVfcmVzdFsyXSAmJiBwYXJzZUludCggdGhlX3Jlc3RbMl0sIDggKSB8fCBudWxsLFxuICAgICAgICAgICAgc2VyaWFsOiB0aGVfcmVzdFszXSAmJiBwYXJzZUludCggdGhlX3Jlc3RbM10sIDEwICkgfHwgbnVsbCxcblxuICAgICAgICAgICAgZmlsZXNfcmVtYWluaW5nOiB0aGVfcmVzdFs0XSA/IHBhcnNlSW50KCB0aGVfcmVzdFs0XSwgMTAgKSA6IG51bGwsXG4gICAgICAgICAgICBieXRlc19yZW1haW5pbmc6IHRoZV9yZXN0WzVdID8gcGFyc2VJbnQoIHRoZV9yZXN0WzVdLCAxMCApIDogbnVsbCxcbiAgICAgICAgfTtcblxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiWkZJTEVcIiwgaGRyKTtcblxuICAgICAgICB2YXIgeGZlciA9IG5ldyBPZmZlcihcbiAgICAgICAgICAgIGhkci5nZXRfb3B0aW9ucygpLFxuICAgICAgICAgICAgdGhpcy5fZmlsZV9pbmZvLFxuICAgICAgICAgICAgdGhpcy5fYWNjZXB0LmJpbmQodGhpcyksXG4gICAgICAgICAgICB0aGlzLl9za2lwLmJpbmQodGhpcylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fY3VycmVudF90cmFuc2ZlciA9IHhmZXI7XG5cbiAgICAgICAgLy90aGlzLl9IYXBwZW4oXCJvZmZlclwiLCB4ZmVyKTtcbiAgICB9XG5cbiAgICBfY29uc3VtZV9aREFUQV9kYXRhKHN1YnBhY2tldCkge1xuICAgICAgICBpZiAoIXRoaXMuX2FjY2VwdGVkX29mZmVyKSB7XG4gICAgICAgICAgICB0aHJvdyBcIlBST1RPQ09MOiBSZWNlaXZlZCBkYXRhIHdpdGhvdXQgYWNjZXB0aW5nIVwiO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9UT0RPOiBQcm9iYWJseSBzaG91bGQgaW5jbHVkZSBzb21lIHNvcnQgb2YgcHJldmVudGl2ZSBhZ2FpbnN0XG4gICAgICAgIC8vaW5maW5pdGUgbG9vcCBoZXJlOiBpZiB0aGUgcGVlciBoYXNu4oCZdCBzZW50IHVzIHdoYXQgd2Ugd2FudCBhZnRlcixcbiAgICAgICAgLy9zYXksIDEwIFpSUE9TIGhlYWRlcnMgdGhlbiB3ZSBzaG91bGQgc2VuZCBaQUJPUlQgYW5kIGp1c3QgZW5kLlxuICAgICAgICBpZiAoIXRoaXMuX29mZnNldF9vaykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwib2Zmc2V0IG5vdCBvayFcIik7XG4gICAgICAgICAgICBfc2VuZF9aUlBPUygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZmlsZV9vZmZzZXQgKz0gc3VicGFja2V0LmdldF9wYXlsb2FkKCkubGVuZ3RoO1xuICAgICAgICB0aGlzLl9vbl9kYXRhX2luKHN1YnBhY2tldCk7XG5cbiAgICAgICAgLypcbiAgICAgICAgY29uc29sZS53YXJuKFwicmVjZWl2ZWQgZXJyb3IgZnJvbSBkYXRhX2luIGNhbGxiYWNrOyByZXRyeWluZ1wiLCBlKTtcbiAgICAgICAgdGhyb3cgXCJ1bmltcGxlbWVudGVkXCI7XG4gICAgICAgICovXG5cbiAgICAgICAgaWYgKHN1YnBhY2tldC5hY2tfZXhwZWN0ZWQoKSAmJiAhc3VicGFja2V0LmZyYW1lX2VuZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9zZW5kX2hlYWRlciggXCJaQUNLXCIsIFptb2RlbS5FTkNPREVMSUIucGFja191MzJfbGUodGhpcy5fZmlsZV9vZmZzZXQpICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfbWFrZV9wcm9taXNlX2Zvcl9iZXR3ZWVuX2ZpbGVzKCkge1xuICAgICAgICB2YXIgc2VzcyA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCBmdW5jdGlvbihyZXMpIHtcbiAgICAgICAgICAgIHZhciBiZXR3ZWVuX2ZpbGVzX2hhbmRsZXIgPSB7XG4gICAgICAgICAgICAgICAgWkZJTEU6IGZ1bmN0aW9uKGhkcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXh0X3N1YnBhY2tldF9oYW5kbGVyID0gZnVuY3Rpb24oc3VicGFja2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXh0X3N1YnBhY2tldF9oYW5kbGVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbnN1bWVfWkZJTEVfZGF0YShoZHIsIHN1YnBhY2tldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9IYXBwZW4oXCJvZmZlclwiLCB0aGlzLl9jdXJyZW50X3RyYW5zZmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyh0aGlzLl9jdXJyZW50X3RyYW5zZmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgLy9XZSB1c2UgdGhpcyBhcyBhIGtlZXAtYWxpdmUuIE1heWJlIG90aGVyXG4gICAgICAgICAgICAgICAgLy9pbXBsZW1lbnRhdGlvbnMgZG8sIHRvbz9cbiAgICAgICAgICAgICAgICBaU0lOSVQ6IGZ1bmN0aW9uKGhkcikge1xuICAgICAgICAgICAgICAgICAgICAvL1RoZSBjb250ZW50IG9mIHRoaXMgaGVhZGVyIGRvZXNu4oCZdCBhZmZlY3QgdXNcbiAgICAgICAgICAgICAgICAgICAgLy9zaW5jZSBhbGwgaXQgZG9lcyBpcyB0ZWxsIHVzIGRldGFpbHMgb2YgaG93XG4gICAgICAgICAgICAgICAgICAgIC8vdGhlIHNlbmRlciB3aWxsIFpETEUtZW5jb2RlIGJpbmFyeSBkYXRhLiBPdXJcbiAgICAgICAgICAgICAgICAgICAgLy9aRExFIHBhcnNlciBkb2VzbuKAmXQgbmVlZCB0byBrbm93IGluIGFkdmFuY2UuXG5cbiAgICAgICAgICAgICAgICAgICAgc2Vzcy5fbmV4dF9zdWJwYWNrZXRfaGFuZGxlciA9IGZ1bmN0aW9uKHNwa3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3MuX25leHRfc3VicGFja2V0X2hhbmRsZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Vzcy5fY29uc3VtZV9aU0lOSVRfZGF0YShzcGt0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3MuX3NlbmRfaGVhZGVyKCdaQUNLJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXNzLl9uZXh0X2hlYWRlcl9oYW5kbGVyID0gYmV0d2Vlbl9maWxlc19oYW5kbGVyO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBaRklOOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZV9aRklOKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlcygpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXNzLl9uZXh0X2hlYWRlcl9oYW5kbGVyID0gYmV0d2Vlbl9maWxlc19oYW5kbGVyO1xuICAgICAgICB9ICk7XG4gICAgfVxuXG4gICAgX2NvbnN1bWVfWlNJTklUX2RhdGEoc3BrdCkge1xuXG4gICAgICAgIC8vVE9ETzogU2hvdWxkIHRoaXMgYmUgdXNlZCB3aGVuIHdlIHNpZ25hbCBhIGNhbmNlbGxhdGlvbj9cbiAgICAgICAgdGhpcy5fYXR0biA9IHNwa3QuZ2V0X3BheWxvYWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdGFydCB0aGUgWk1PREVNIHNlc3Npb24gYnkgc2lnbmFsaW5nIHRvIHRoZSBzZW5kZXIgdGhhdFxuICAgICAqIHdlIGFyZSByZWFkeSBmb3IgdGhlIGZpcnN0IGZpbGUgb2ZmZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBPZmZlciBvYmplY3RcbiAgICAgKiBvciwgaWYgdGhlIHNlbmRlciBjbG9zZXMgdGhlIHNlc3Npb24gaW1tZWRpYXRlbHkgd2l0aG91dCBvZmZlcmluZ1xuICAgICAqIGFueXRoaW5nLCBub3RoaW5nLlxuICAgICAqL1xuICAgIHN0YXJ0KCkge1xuICAgICAgICBpZiAodGhpcy5fc3RhcnRlZCkgdGhyb3cgXCJBbHJlYWR5IHN0YXJ0ZWQhXCI7XG4gICAgICAgIHRoaXMuX3N0YXJ0ZWQgPSB0cnVlO1xuXG4gICAgICAgIHZhciByZXQgPSB0aGlzLl9tYWtlX3Byb21pc2VfZm9yX2JldHdlZW5fZmlsZXMoKTtcblxuICAgICAgICB0aGlzLl9zZW5kX1pSSU5JVCgpO1xuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgLy9SZXR1cm5zIGEgcHJvbWlzZSB0aGF04oCZcyBmdWxmaWxsZWQgd2hlbiB0aGUgZmlsZVxuICAgIC8vdHJhbnNmZXIgaXMgZG9uZS5cbiAgICAvL1xuICAgIC8vICBUaGF0IFpFT0YgcHJvbWlzZSByZXR1cm4gaXMgYW5vdGhlciBwcm9taXNlIHRoYXTigJlzXG4gICAgLy8gIGZ1bGZpbGxlZCB3aGVuIHdlIGdldCBlaXRoZXIgWkZJTiBvciBhbm90aGVyIFpGSUxFLlxuICAgIF9hY2NlcHQob2Zmc2V0KSB7XG4gICAgICAgIHRoaXMuX2FjY2VwdGVkX29mZmVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZmlsZV9vZmZzZXQgPSBvZmZzZXQgfHwgMDtcblxuICAgICAgICB2YXIgc2VzcyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIHJldCA9IG5ldyBQcm9taXNlKCBmdW5jdGlvbihyZXNvbHZlX2FjY2VwdCkge1xuICAgICAgICAgICAgdmFyIGxhc3RfWkRBVEE7XG5cbiAgICAgICAgICAgIHNlc3MuX25leHRfaGVhZGVyX2hhbmRsZXIgPSB7XG4gICAgICAgICAgICAgICAgWkRBVEE6IGZ1bmN0aW9uIG9uX1pEQVRBKGhkcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb25zdW1lX1pEQVRBKGhkcik7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dF9zdWJwYWNrZXRfaGFuZGxlciA9IHRoaXMuX2NvbnN1bWVfWkRBVEFfZGF0YTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXh0X2hlYWRlcl9oYW5kbGVyID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgWkVPRjogZnVuY3Rpb24gb25fWkVPRihoZHIpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIHRoaXMgZmlyc3QgdG8gdmVyaWZ5IHRoZSBaRU9GLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYWxzbyBmaXJlcyB0aGUg4oCcZmlsZV9lbmTigJ0gZXZlbnQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZV9aRU9GKGhkcik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXh0X3N1YnBhY2tldF9oYW5kbGVyID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbuKAmXQgY2FyZSBhYm91dCB0aGlzIHByb21pc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJpb3IgdG8gdjAuMS44IHdlIGRpZCBiZWNhdXNlIHdlIGNhbGxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc29sdmVfYWNjZXB0KCkgYXQgdGhlIHJlc29sdXRpb24gb2YgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb21pc2UsIGJ1dCB0aGF0IHdhcyBhIGJhZCBpZGVhIGFuZCB3YXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXZlciBkb2N1bWVudGVkLCBzbyAwLjEuOCBjaGFuZ2VkIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21ha2VfcHJvbWlzZV9mb3JfYmV0d2Vlbl9maWxlcygpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZV9hY2NlcHQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbmRfWlJJTklUKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9ICk7XG5cbiAgICAgICAgdGhpcy5fc2VuZF9aUlBPUygpO1xuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgX3NraXAoKSB7XG4gICAgICAgIHZhciByZXQgPSB0aGlzLl9tYWtlX3Byb21pc2VfZm9yX2JldHdlZW5fZmlsZXMoKTtcblxuICAgICAgICBpZiAodGhpcy5fYWNjZXB0ZWRfb2ZmZXIpIHtcbiAgICAgICAgICAgIC8vIFRoZXJl4oCZcyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIHdlIG1pZ2h0IGF0dGVtcHQgdG9cbiAgICAgICAgICAgIC8vIHNraXAoKSBhbiBpbi1wcm9ncmVzcyB0cmFuc2ZlciBuZWFyIGl0cyBlbmQgYnV0IGFjdHVhbGx5XG4gICAgICAgICAgICAvLyB0aGUgc2tpcCgpIHdpbGwgZmlyZSBhZnRlciB0aGUgdHJhbnNmZXIgaXMgY29tcGxldGUuXG4gICAgICAgICAgICAvLyBXaGlsZSB0aGVyZSBtaWdodCBiZSB3YXlzIHRvIHByZXZlbnQgdGhpcywgdGhleSBsaWtlbHlcbiAgICAgICAgICAgIC8vIHdvdWxkIHJlcXVpcmUgZXh0cmEgd29yayBvbiB0aGUgcGFydCBvZiBpbXBsZW1lbnRhdGlvbnMuXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gSXQgc2VlbXMgZmFyIHNpbXBsZXIganVzdCB0byBtYWtlIHRoaXMgZnVuY3Rpb24gYSBuby1vcFxuICAgICAgICAgICAgLy8gaW4gdGhlc2UgY2FzZXMuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRfdHJhbnNmZXIpIHJldHVybjtcblxuICAgICAgICAgICAgLy9Gb3IgY2FuY2VsIG9mIGFuIGluLXByb2dyZXNzIHRyYW5zZmVyIGZyb20gbHN6LFxuICAgICAgICAgICAgLy9pdOKAmXMgbmVjZXNzYXJ5IHRvIGF2b2lkIHRoaXMgYnVmZmVyIG92ZXJmbG93IGJ1ZzpcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyAgaHR0cHM6Ly9naXRodWIuY29tL2dvb3NlbGludXgvbHJ6c3ovYmxvYi9tYXN0ZXIvbHJ6c3otMC4xMi4yMC5wYXRjaFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8v4oCmIHdoaWNoIHdlIGRvIGJ5IGFza2luZyBmb3IgQ1JDMzIgZnJvbSBsc3ouXG5cbiAgICAgICAgICAgIC8vV2UgbWlnaHQgb3IgbWlnaHQgbm90IGhhdmUgY29uc3VtZWQgWkRBVEEuXG4gICAgICAgICAgICAvL1RoZSBzZW5kZXIgYWxzbyBtaWdodCBvciBtaWdodCBub3Qgc2VuZCBhIFpFT0YgYmVmb3JlIGl0XG4gICAgICAgICAgICAvL3BhcnNlcyB0aGUgWlNLSVAuIFRodXMsIHdlIHdhbnQgdG8gaWdub3JlIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gIC0gWkRBVEFcbiAgICAgICAgICAgIC8vICAtIFpEQVRBIHRoZW4gWkVPRlxuICAgICAgICAgICAgLy8gIC0gWkVPRlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8v4oCmIGFuZCBqdXN0IGxvb2sgZm9yIHRoZSBuZXh0IGJldHdlZW4tZmlsZSBoZWFkZXIuXG5cbiAgICAgICAgICAgIHZhciBib3VuZF9tYWtlX3Byb21pc2VfZm9yX2JldHdlZW5fZmlsZXMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIC8vT25jZSB0aGlzIGhhcHBlbnMgd2UgZmFpbCBvbiBhbnkgcmVjZWl2ZWQgZGF0YSBwYWNrZXQuXG4gICAgICAgICAgICAgICAgLy9TbyBpdCBuZWVkcyBub3QgdG8gaGFwcGVuIHVudGlsIHdl4oCZdmUgcmVjZWl2ZWQgYSBoZWFkZXIuXG4gICAgICAgICAgICAgICAgdGhpcy5fYWNjZXB0ZWRfb2ZmZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9uZXh0X3N1YnBhY2tldF9oYW5kbGVyID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHRoaXMuX21ha2VfcHJvbWlzZV9mb3JfYmV0d2Vlbl9maWxlcygpO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpO1xuXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgIHRoaXMuX25leHRfaGVhZGVyX2hhbmRsZXIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBaRU9GOiBib3VuZF9tYWtlX3Byb21pc2VfZm9yX2JldHdlZW5fZmlsZXMsXG4gICAgICAgICAgICAgICAgICAgIFpEQVRBOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kX21ha2VfcHJvbWlzZV9mb3JfYmV0d2Vlbl9maWxlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dF9oZWFkZXJfaGFuZGxlci5aRU9GID0gYm91bmRfbWFrZV9wcm9taXNlX2Zvcl9iZXR3ZWVuX2ZpbGVzO1xuICAgICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vdGhpcy5fYWNjZXB0ZWRfb2ZmZXIgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLl9maWxlX2luZm8gPSBudWxsO1xuXG4gICAgICAgIHRoaXMuX3NlbmRfaGVhZGVyKCBcIlpTS0lQXCIgKTtcblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIF9zZW5kX1pSSU5JVCgpIHtcbiAgICAgICAgdGhpcy5fc2VuZF9oZWFkZXIoIFwiWlJJTklUXCIsIFpSSU5JVF9GTEFHUyApO1xuICAgIH1cblxuICAgIF9jb25zdW1lX1pGSU4oKSB7XG4gICAgICAgIHRoaXMuX2dvdF9aRklOID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fc2VuZF9oZWFkZXIoIFwiWkZJTlwiICk7XG4gICAgfVxuXG4gICAgX2NvbnN1bWVfWkVPRihoZWFkZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuX2ZpbGVfb2Zmc2V0ICE9PSBoZWFkZXIuZ2V0X29mZnNldCgpKSB7XG4gICAgICAgICAgICB0aHJvdyggXCJaRU9GIG9mZnNldCBtaXNtYXRjaDsgdW5pbXBsZW1lbnRlZCAobG9jYWw6IFwiICsgdGhpcy5fZmlsZV9vZmZzZXQgKyBcIjsgWkVPRjogXCIgKyBoZWFkZXIuZ2V0X29mZnNldCgpICsgXCIpXCIgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29uX2ZpbGVfZW5kKCk7XG5cbiAgICAgICAgLy9QcmVzZXJ2ZSB0aGVzZSB0d28gc28gdGhhdCBmaWxlX2VuZCBjYWxsYmFja3NcbiAgICAgICAgLy93aWxsIGhhdmUgdGhlIHJpZ2h0IGluZm9ybWF0aW9uLlxuICAgICAgICB0aGlzLl9maWxlX2luZm8gPSBudWxsO1xuICAgICAgICB0aGlzLl9jdXJyZW50X3RyYW5zZmVyID0gbnVsbDtcbiAgICB9XG5cbiAgICBfY29uc3VtZV9aREFUQShoZWFkZXIpIHtcbiAgICAgICAgaWYgKCB0aGlzLl9maWxlX29mZnNldCA9PT0gaGVhZGVyLmdldF9vZmZzZXQoKSApIHtcbiAgICAgICAgICAgIHRoaXMuX29mZnNldF9vayA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBcIkVycm9yIGNvcnJlY3Rpb24gaXMgdW5pbXBsZW1lbnRlZC5cIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9zZW5kX1pSUE9TKCkge1xuICAgICAgICB0aGlzLl9zZW5kX2hlYWRlciggXCJaUlBPU1wiLCB0aGlzLl9maWxlX29mZnNldCApO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vZXZlbnRzXG5cbiAgICBfb25fZmlsZV9lbmQoKSB7XG4gICAgICAgIHRoaXMuX0hhcHBlbihcImZpbGVfZW5kXCIpO1xuXG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50X3RyYW5zZmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50X3RyYW5zZmVyLl9IYXBwZW4oXCJjb21wbGV0ZVwiKTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRfdHJhbnNmZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX29uX2RhdGFfaW4oc3VicGFja2V0KSB7XG4gICAgICAgIHRoaXMuX0hhcHBlbihcImRhdGFfaW5cIiwgc3VicGFja2V0KTtcblxuICAgICAgICBpZiAodGhpcy5fY3VycmVudF90cmFuc2Zlcikge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudF90cmFuc2Zlci5fSGFwcGVuKFwiaW5wdXRcIiwgc3VicGFja2V0LmdldF9wYXlsb2FkKCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5PYmplY3QuYXNzaWduKFxuICAgIFptb2RlbS5TZXNzaW9uLlJlY2VpdmUucHJvdG90eXBlLFxuICAgIHtcbiAgICAgICAgdHlwZTogXCJyZWNlaXZlXCIsXG4gICAgfVxuKTtcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRmlsZURldGFpbHNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmaWxlLlxuICpcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbc2l6ZV0gLSBUaGUgZmlsZSBzaXplLCBpbiBieXRlcy5cbiAqXG4gKiBAcHJvcGVydHkge251bWJlcn0gW21vZGVdIC0gVGhlIGZpbGUgbW9kZSAoZS5nLiwgMDEwMDY0NCkuXG4gKlxuICogQHByb3BlcnR5IHtEYXRlfG51bWJlcn0gW210aW1lXSAtIFRoZSBmaWxl4oCZcyBtb2RpZmljYXRpb24gdGltZS5cbiAqICBXaGVuIGV4cHJlc3NlZCBhcyBhIG51bWJlciwgdGhlIHVuaXQgaXMgZXBvY2ggc2Vjb25kcy5cbiAqXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2ZpbGVzX3JlbWFpbmluZ10gLSBJbmNsdXNpdmUgb2YgdGhlIGN1cnJlbnQgZmlsZSxcbiAqICBzbyB0aGlzIHZhbHVlIGlzIG5ldmVyIGxlc3MgdGhhbiAxLlxuICpcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbYnl0ZXNfcmVtYWluaW5nXSAtIEluY2x1c2l2ZSBvZiB0aGUgY3VycmVudCBmaWxlLlxuICovXG5cbi8qKlxuICogQ29tbW9uIG1ldGhvZHMgZm9yIFRyYW5zZmVyIGFuZCBPZmZlciBvYmplY3RzLlxuICpcbiAqIEBtaXhpblxuICovXG52YXIgVHJhbnNmZXJfT2ZmZXJfTWl4aW4gPSB7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZmlsZSBkZXRhaWxzIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RmlsZURldGFpbHN9IGBtdGltZWAgaXMgYSBEYXRlLlxuICAgICAqL1xuICAgIGdldF9kZXRhaWxzOiBmdW5jdGlvbiBnZXRfZGV0YWlscygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oIHt9LCB0aGlzLl9maWxlX2luZm8gKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHBhcnNlIG9mIHRoZSBaRklMRSBoZWFkZXLigJlzIHBheWxvYWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBNZW1iZXJzIGFyZTpcbiAgICAgKlxuICAgICAqIC0gYGNvbnZlcnNpb25gIChzdHJpbmcgfCB1bmRlZmluZWQpXG4gICAgICogLSBgbWFuYWdlbWVudGAgKHN0cmluZyB8IHVuZGVmaW5lZClcbiAgICAgKiAtIGB0cmFuc2ZlcmAgKHN0cmluZyB8IHVuZGVmaW5lZClcbiAgICAgKiAtIGBzcGFyc2VgIChib29sZWFuKVxuICAgICAqL1xuICAgIGdldF9vcHRpb25zOiBmdW5jdGlvbiBnZXRfb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oIHt9LCB0aGlzLl96ZmlsZV9vcHRzICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG9mZnNldCBiYXNlZCBvbiB0aGUgbGFzdCB0cmFuc2ZlcnJlZCBjaHVuay5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgZmlsZSBvZmZzZXQgKGkuZS4sIG51bWJlciBvZiBieXRlcyBhZnRlclxuICAgICAqICB0aGUgc3RhcnQgb2YgdGhlIGZpbGUpLlxuICAgICAqL1xuICAgIGdldF9vZmZzZXQ6IGZ1bmN0aW9uIGdldF9vZmZzZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlX29mZnNldDtcbiAgICB9LFxufTtcblxuLyoqXG4gKiBBIGNsYXNzIHRvIHJlcHJlc2VudCBhIHNlbmRlcuKAmXMgaW50ZXJhY3Rpb24gd2l0aCBhIHNpbmdsZSBmaWxlXG4gKiB0cmFuc2ZlciB3aXRoaW4gYSBiYXRjaC4gV2hlbiBhIHJlY2VpdmVyIGFjY2VwdHMgYW4gb2ZmZXIsIHRoZVxuICogU2Vzc2lvbiBpbnN0YW50aWF0ZXMgdGhpcyBjbGFzcyBhbmQgcGFzc2VzIHRoZSBpbnN0YW5jZSBhcyB0aGVcbiAqIHByb21pc2UgcmVzb2x1dGlvbiBmcm9tIHNlbmRfb2ZmZXIoKS5cbiAqXG4gKiBAbWl4ZXMgVHJhbnNmZXJfT2ZmZXJfTWl4aW5cbiAqL1xuY2xhc3MgVHJhbnNmZXIge1xuXG4gICAgLyoqXG4gICAgICogTm90IGNhbGxlZCBkaXJlY3RseS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihmaWxlX2luZm8sIG9mZnNldCwgc2VuZF9mdW5jLCBlbmRfZnVuYykge1xuICAgICAgICB0aGlzLl9maWxlX2luZm8gPSBmaWxlX2luZm87XG4gICAgICAgIHRoaXMuX2ZpbGVfb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG5cbiAgICAgICAgdGhpcy5fc2VuZCA9IHNlbmRfZnVuYztcbiAgICAgICAgdGhpcy5fZW5kID0gZW5kX2Z1bmM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VuZCBhIChub24tdGVybWluYWwpIHBpZWNlIG9mIHRoZSBmaWxlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsgbnVtYmVyW10gfCBVaW50OEFycmF5IH0gYXJyYXlfbGlrZSAtIFRoZSBieXRlcyB0byBzZW5kLlxuICAgICAqL1xuICAgIHNlbmQoYXJyYXlfbGlrZSkge1xuICAgICAgICB0aGlzLl9zZW5kKGFycmF5X2xpa2UpO1xuICAgICAgICB0aGlzLl9maWxlX29mZnNldCArPSBhcnJheV9saWtlLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZSB0aGUgZmlsZSB0cmFuc2Zlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7IG51bWJlcltdIHwgVWludDhBcnJheSB9IFthcnJheV9saWtlXSAtIFRoZSBsYXN0IGJ5dGVzIHRvIHNlbmQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHsgUHJvbWlzZSB9IFJlc29sdmVzIHdoZW4gdGhlIHJlY2VpdmVyIGhhcyBpbmRpY2F0ZWRcbiAgICAgKiAgICAgIGFjY2VwdGFuY2Ugb2YgdGhlIGVuZCBvZiB0aGUgZmlsZSB0cmFuc2Zlci5cbiAgICAgKi9cbiAgICBlbmQoYXJyYXlfbGlrZSkge1xuICAgICAgICB2YXIgcmV0ID0gdGhpcy5fZW5kKGFycmF5X2xpa2UgfHwgW10pO1xuICAgICAgICBpZiAoYXJyYXlfbGlrZSkgdGhpcy5fZmlsZV9vZmZzZXQgKz0gYXJyYXlfbGlrZS5sZW5ndGg7XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxufVxuT2JqZWN0LmFzc2lnbiggVHJhbnNmZXIucHJvdG90eXBlLCBUcmFuc2Zlcl9PZmZlcl9NaXhpbiApO1xuXG4vKipcbiAqIEEgY2xhc3MgdG8gcmVwcmVzZW50IGEgcmVjZWl2ZXLigJlzIGludGVyYWN0aW9uIHdpdGggYSBzaW5nbGUgZmlsZVxuICogdHJhbnNmZXIgb2ZmZXIgd2l0aGluIGEgYmF0Y2guIFRoZXJlIGlzIGZ1bmN0aW9uYWxpdHkgaGVyZSB0b1xuICogc2tpcCBvciBhY2NlcHQgb2ZmZXJlZCBmaWxlcyBhbmQgZWl0aGVyIHRvIHNwb29sIHRoZSBwYWNrZXRcbiAqIHBheWxvYWRzIG9yIHRvIGhhbmRsZSB0aGVtIHlvdXJzZWxmLlxuICpcbiAqIEBtaXhlcyBUcmFuc2Zlcl9PZmZlcl9NaXhpblxuICovXG5jbGFzcyBPZmZlciBleHRlbmRzIF9FdmVudGVyIHtcblxuICAgIC8qKlxuICAgICAqIE5vdCBjYWxsZWQgZGlyZWN0bHkuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoemZpbGVfb3B0cywgZmlsZV9pbmZvLCBhY2NlcHRfZnVuYywgc2tpcF9mdW5jKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5femZpbGVfb3B0cyA9IHpmaWxlX29wdHM7XG4gICAgICAgIHRoaXMuX2ZpbGVfaW5mbyA9IGZpbGVfaW5mbztcblxuICAgICAgICB0aGlzLl9hY2NlcHRfZnVuYyA9IGFjY2VwdF9mdW5jO1xuICAgICAgICB0aGlzLl9za2lwX2Z1bmMgPSBza2lwX2Z1bmM7XG5cbiAgICAgICAgdGhpcy5fQWRkX2V2ZW50KFwiaW5wdXRcIik7XG4gICAgICAgIHRoaXMuX0FkZF9ldmVudChcImNvbXBsZXRlXCIpO1xuXG4gICAgICAgIC8vUmVnaXN0ZXIgdGhpcyBmaXJzdCBzbyB0aGF0IGFwcGxpY2F0aW9uIGhhbmRsZXJzIHJlY2VpdmVcbiAgICAgICAgLy90aGUgdXBkYXRlZCBvZmZzZXQuXG4gICAgICAgIHRoaXMub24oXCJpbnB1dFwiLCB0aGlzLl9pbnB1dF9oYW5kbGVyKTtcbiAgICB9XG5cbiAgICBfdmVyaWZ5X25vdF9za2lwcGVkKCkge1xuICAgICAgICBpZiAodGhpcy5fc2tpcHBlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFptb2RlbS5FcnJvcihcIkFscmVhZHkgc2tpcHBlZCFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZWxsIHRoZSBzZW5kZXIgdGhhdCB5b3UgZG9u4oCZdCB3YW50IHRoZSBvZmZlcmVkIGZpbGUuXG4gICAgICpcbiAgICAgKiBZb3UgY2FuIHNlbmQgdGhpcyBpbiBsaWV1IG9mIGBhY2NlcHQoKWAgb3IgYWZ0ZXIgaXQsIGUuZy4sXG4gICAgICogaWYgeW91IGZpbmQgdGhhdCB0aGUgdHJhbnNmZXIgaXMgdGFraW5nIHRvbyBsb25nLiBOb3RlIHRoYXQsXG4gICAgICogaWYgeW91IGBza2lwKClgIGFmdGVyIHlvdSBgYWNjZXB0KClgLCB5b3XigJlsbCBsaWtlbHkgaGF2ZSB0b1xuICAgICAqIHdhaXQgZm9yIGJ1ZmZlcnMgdG8gY2xlYXIgb3V0LlxuICAgICAqXG4gICAgICovXG4gICAgc2tpcCgpIHtcbiAgICAgICAgdGhpcy5fdmVyaWZ5X25vdF9za2lwcGVkKCk7XG4gICAgICAgIHRoaXMuX3NraXBwZWQgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9za2lwX2Z1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZWxsIHRoZSBzZW5kZXIgdG8gc2VuZCB0aGUgb2ZmZXJlZCBmaWxlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIENhbiBiZTpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub25pbnB1dD1zcG9vbF91aW50OGFycmF5XSAtIENhbiBiZTpcbiAgICAgKlxuICAgICAqIC0gYHNwb29sX3VpbnQ4YXJyYXlgOiBTdG9yZXMgdGhlIFpNT0RFTVxuICAgICAqICAgICBwYWNrZXQgcGF5bG9hZHMgYXMgVWludDhBcnJheSBpbnN0YW5jZXMuXG4gICAgICogICAgIFRoaXMgbWFrZXMgZm9yIGFuIGVhc3kgdHJhbnNpdGlvbiB0byBhIEJsb2IsXG4gICAgICogICAgIHdoaWNoIEphdmFTY3JpcHQgY2FuIHVzZSB0byBzYXZlIHRoZSBmaWxlIHRvIGRpc2suXG4gICAgICpcbiAgICAgKiAtIGBzcG9vbF9hcnJheWA6IFN0b3JlcyB0aGUgWk1PREVNIHBhY2tldCBwYXlsb2Fkc1xuICAgICAqICAgICBhcyBBcnJheSBpbnN0YW5jZXMuIEVhY2ggdmFsdWUgaXMgYW4gb2N0ZXQgdmFsdWUuXG4gICAgICpcbiAgICAgKiAtIChmdW5jdGlvbik6IEEgaGFuZGxlciB0aGF0IHJlY2VpdmVzIGVhY2ggcGF5bG9hZFxuICAgICAqICAgICBhcyBpdCBhcnJpdmVzLiBUaGUgT2ZmZXIgb2JqZWN0IGRvZXMgbm90IHN0b3JlXG4gICAgICogICAgIHRoZSBwYXlsb2FkcyBpbnRlcm5hbGx5IHdoZW4gdGh1cyBjb25maWd1cmVkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7IFByb21pc2UgfSBSZXNvbHZlcyB3aGVuIHRoZSBmaWxlIGlzIGZ1bGx5IHJlY2VpdmVkLlxuICAgICAqICAgICAgSWYgdGhlIE9mZmVyIGhhcyBiZWVuIHNwb29saW5nXG4gICAgICogICAgICB0aGUgcGFja2V0IHBheWxvYWRzLCB0aGUgcHJvbWlzZSByZXNvbHZlcyB3aXRoIGFuIEFycmF5XG4gICAgICogICAgICB0aGF0IGNvbnRhaW5zIHRob3NlIHBheWxvYWRzLlxuICAgICAqL1xuICAgIGFjY2VwdChvcHRzKSB7XG4gICAgICAgIHRoaXMuX3ZlcmlmeV9ub3Rfc2tpcHBlZCgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9hY2NlcHRlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFptb2RlbS5FcnJvcihcIkFscmVhZHkgYWNjZXB0ZWQhXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FjY2VwdGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAoIW9wdHMpIG9wdHMgPSB7fTtcblxuICAgICAgICB0aGlzLl9maWxlX29mZnNldCA9IG9wdHMub2Zmc2V0IHx8IDA7XG5cbiAgICAgICAgc3dpdGNoIChvcHRzLm9uX2lucHV0KSB7XG4gICAgICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgIGNhc2UgXCJzcG9vbF9hcnJheVwiOlxuICAgICAgICAgICAgY2FzZSBERUZBVUxUX1JFQ0VJVkVfSU5QVVRfTU9ERTogICAgLy9kZWZhdWx0XG4gICAgICAgICAgICAgICAgdGhpcy5fc3Bvb2wgPSBbXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRzLm9uX2lucHV0ICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgXCJJbnZhbGlkIOKAnG9uX2lucHV04oCdOiBcIiArIG9wdHMub25faW5wdXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5wdXRfaGFuZGxlcl9tb2RlID0gb3B0cy5vbl9pbnB1dCB8fCBERUZBVUxUX1JFQ0VJVkVfSU5QVVRfTU9ERTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fYWNjZXB0X2Z1bmModGhpcy5fZmlsZV9vZmZzZXQpLnRoZW4oIHRoaXMuX2dldF9zcG9vbC5iaW5kKHRoaXMpICk7XG4gICAgfVxuXG4gICAgX2lucHV0X2hhbmRsZXIocGF5bG9hZCkge1xuICAgICAgICB0aGlzLl9maWxlX29mZnNldCArPSBwYXlsb2FkLmxlbmd0aDtcblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2lucHV0X2hhbmRsZXJfbW9kZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dF9oYW5kbGVyX21vZGUocGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faW5wdXRfaGFuZGxlcl9tb2RlID09PSBERUZBVUxUX1JFQ0VJVkVfSU5QVVRfTU9ERSkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQgPSBuZXcgVWludDhBcnJheShwYXlsb2FkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9zYW5pdHlcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2lucHV0X2hhbmRsZXJfbW9kZSAhPT0gXCJzcG9vbF9hcnJheVwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFptb2RlbS5FcnJvcihcIldURj8/IF9pbnB1dF9oYW5kbGVyX21vZGUgPSBcIiArIHRoaXMuX2lucHV0X2hhbmRsZXJfbW9kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3Nwb29sLnB1c2gocGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfZ2V0X3Nwb29sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3Bvb2w7XG4gICAgfVxufVxuT2JqZWN0LmFzc2lnbiggT2ZmZXIucHJvdG90eXBlLCBUcmFuc2Zlcl9PZmZlcl9NaXhpbiApO1xuXG4vL0N1cmlvdXMgdGhhdCBaU0lOSVQgaXNu4oCZdCBoZXJlIOKApiBidXQsIGxzeiBzZW5kcyBpdCBhcyBoZXguXG5jb25zdCBTRU5ERVJfQklOQVJZX0hFQURFUiA9IHtcbiAgICBaRklMRTogdHJ1ZSxcbiAgICBaREFUQTogdHJ1ZSxcbn07XG5cbi8qKlxuICogQSBjbGFzcyB0aGF0IGVuY2Fwc3VsYXRlcyBiZWhhdmlvciBmb3IgYSBaTU9ERU0gc2VuZGVyLlxuICpcbiAqIEBleHRlbmRzIFNlc3Npb25cbiAqL1xuWm1vZGVtLlNlc3Npb24uU2VuZCA9IGNsYXNzIFptb2RlbVNlbmRTZXNzaW9uIGV4dGVuZHMgWm1vZGVtLlNlc3Npb24ge1xuXG4gICAgLyoqXG4gICAgICogTm90IGNhbGxlZCBkaXJlY3RseS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih6cmluaXRfaGRyKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgaWYgKCF6cmluaXRfaGRyKSB7XG4gICAgICAgICAgICB0aHJvdyBcIk5lZWQgZmlyc3QgaGVhZGVyIVwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHpyaW5pdF9oZHIuTkFNRSAhPT0gXCJaUklOSVRcIikge1xuICAgICAgICAgICAgdGhyb3coXCJGaXJzdCBoZWFkZXIgc2hvdWxkIGJlIFpSSU5JVCwgbm90IFwiICsgenJpbml0X2hkci5OQU1FKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xhc3RfaGVhZGVyX25hbWUgPSAnWlJJTklUJztcblxuICAgICAgICAvL1dlIGRvbuKAmXQgbmVlZCB0byBzZW5kIGNyYzMyLiBFdmVuIGlmIHRoZSBvdGhlciBzaWRlIGNhbiBncm9rIGl0LFxuICAgICAgICAvL3RoZXJl4oCZcyBubyBwb2ludCB0byBzZW5kaW5nIGl0IHNpbmNlLCBmb3Igbm93LCB3ZSBhc3N1bWUgd2XigJlyZVxuICAgICAgICAvL29uIGEgcmVsaWFibGUgY29ubmVjdGlvbiwgZS5nLiwgVENQLiBJZGVhbGx5IHdl4oCZZCBqdXN0IGZvcmdvXG4gICAgICAgIC8vQ1JDIGNoZWNrcyBjb21wbGV0ZWx5LCBidXQgWk1PREVNIGRvZXNu4oCZdCBhbGxvdyB0aGF0LlxuICAgICAgICAvL1xuICAgICAgICAvL0lmIHdlICp3ZXJlKiB0byBzdGFydCB1c2luZyBjcmMzMiwgd2XigJlkIHVwZGF0ZSB0aGlzIGV2ZXJ5IHRpbWVcbiAgICAgICAgLy93ZSBzZW5kIGEgaGVhZGVyLlxuICAgICAgICB0aGlzLl9zdWJwYWNrZXRfZW5jb2RlX2Z1bmMgPSAnZW5jb2RlMTYnO1xuXG4gICAgICAgIHRoaXMuX3plbmNvZGVyID0gbmV3IFptb2RlbS5aRExFKCk7XG5cbiAgICAgICAgdGhpcy5fY29uc3VtZV9aUklOSVQoenJpbml0X2hkcik7XG5cbiAgICAgICAgdGhpcy5fZmlsZV9vZmZzZXQgPSAwO1xuXG4gICAgICAgIHZhciB6cnFpbml0X2NvdW50ID0gMDtcblxuICAgICAgICB0aGlzLl9zdGFydF9rZWVwYWxpdmVfb25fc2V0X3NlbmRlciA9IHRydWU7XG5cbiAgICAgICAgLy9scnpzeiB3aWxsIHNlbmQgWlJJTklUIHVudGlsIGl0IGdldHMgYW4gb2ZmZXIuIChrZWVwLWFsaXZlPylcbiAgICAgICAgLy9JdCBzZW5kcyA0IGFkZGl0aW9uYWwgb25lcyBhZnRlciB0aGUgaW5pdGlhbCBaUklOSVQgYW5kLCBpZlxuICAgICAgICAvL25vIHJlc3BvbnNlIGlzIHJlY2VpdmVkLCBzdGFydHMgc2VuZGluZyDigJxD4oCdICgweDQzLCA2NykgYXMgaWYgdG9cbiAgICAgICAgLy90cnkgdG8gZG93bmdyYWRlIHRvIFhNT0RFTSBvciBZTU9ERU0uXG4gICAgICAgIC8vdmFyIHNlc3MgPSB0aGlzO1xuICAgICAgICAvL3RoaXMuX3ByZXBhcmVfdG9fcmVjZWl2ZV9aUklOSVQoIGZ1bmN0aW9uIGtlZXBfYWxpdmUoKSB7XG4gICAgICAgIC8vICAgIHNlc3MuX3ByZXBhcmVfdG9fcmVjZWl2ZV9aUklOSVQoa2VlcF9hbGl2ZSk7XG4gICAgICAgIC8vfSApO1xuXG4gICAgICAgIC8vcXVldWUgdXAgdGhlIFpTSU5JVCBmbGFnIHRvIHNlbmQgLS0gYnV0IHNlZW1zIHVzZWxlc3M/P1xuXG4gICAgICAgIC8qXG4gICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB0aGlzLl9vbl9ldnQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmlsZV9yZWNlaXZlZDogW10sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHNlbmRlciBmdW5jdGlvbi4gVGhlIGZpcnN0IHRpbWUgdGhpcyBpcyBjYWxsZWQsXG4gICAgICogaXQgd2lsbCBhbHNvIGluaXRpYXRlIGEga2VlcGFsaXZlIHVzaW5nIFpTSU5JVCB1bnRpbCB0aGVcbiAgICAgKiBmaXJzdCBmaWxlIGlzIHNlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICogIEl0IHdpbGwgcmVjZWl2ZSBhbiBBcnJheSB3aXRoIHRoZSByZWxldmFudCBvY3RldHMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTZXNzaW9ufSBUaGUgc2Vzc2lvbiBvYmplY3QgKGZvciBjaGFpbmluZykuXG4gICAgICovXG4gICAgc2V0X3NlbmRlcihmdW5jKSB7XG4gICAgICAgIHN1cGVyLnNldF9zZW5kZXIoZnVuYyk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3N0YXJ0X2tlZXBhbGl2ZV9vbl9zZXRfc2VuZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGFydF9rZWVwYWxpdmVfb25fc2V0X3NlbmRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fc3RhcnRfa2VlcGFsaXZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLzcuMy4zIC4uIFRoZSBzZW5kZXIgYWxzbyB1c2VzIGhleCBoZWFkZXJzIHdoZW4gdGhleSBhcmVcbiAgICAvL25vdCBmb2xsb3dlZCBieSBiaW5hcnkgZGF0YSBzdWJwYWNrZXRzLlxuICAgIC8vXG4gICAgLy9GRzog4oCmIG9yIHdoZW4gdGhlIGhlYWRlciBpcyBaU0lOSVQ/IFRoYXTigJlzIHdoYXQgbHJ6c3ogZG9lcywgYW55d2F5LlxuICAgIC8vVGhlbiBpdCBzZW5kcyBhIHNpbmdsZSBOVUwgYnl0ZSBhcyB0aGUgcGF5bG9hZCB0byBhbiBlbmRfYWNrIHN1YnBhY2tldC5cbiAgICBfZ2V0X2hlYWRlcl9mb3JtYXR0ZXIobmFtZSkge1xuICAgICAgICByZXR1cm4gU0VOREVSX0JJTkFSWV9IRUFERVJbbmFtZV0gPyBcInRvX2JpbmFyeTE2XCIgOiBcInRvX2hleFwiO1xuICAgIH1cblxuICAgIC8vSW4gb3JkZXIgdG8ga2VlcCBscnpzeiBmcm9tIHRpbWluZyBvdXQsIHdlIHNlbmQgWlNJTklUIGV2ZXJ5IDUgc2Vjb25kcy5cbiAgICAvL01heWJlIG1ha2UgdGhpcyBjb25maWd1cmFibGU/XG4gICAgX3N0YXJ0X2tlZXBhbGl2ZSgpIHtcbiAgICAgICAgLy9pZiAodGhpcy5fa2VlcGFsaXZlX3Byb21pc2UpIHRocm93IFwiS2VlcC1hbGl2ZSBhbHJlYWR5IHN0YXJ0ZWQhXCI7XG4gICAgICAgIGlmICghdGhpcy5fa2VlcGFsaXZlX3Byb21pc2UpIHtcbiAgICAgICAgICAgIHZhciBzZXNzID0gdGhpcztcblxuICAgICAgICAgICAgdGhpcy5fa2VlcGFsaXZlX3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlNFVFRJTkcgS0VFUEFMSVZFIFRJTUVPVVRcIik7XG4gICAgICAgICAgICAgICAgc2Vzcy5fa2VlcGFsaXZlX3RpbWVvdXQgPSBzZXRUaW1lb3V0KHJlc29sdmUsIEtFRVBBTElWRV9JTlRFUlZBTCk7XG4gICAgICAgICAgICB9KS50aGVuKCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBzZXNzLl9uZXh0X2hlYWRlcl9oYW5kbGVyID0ge1xuICAgICAgICAgICAgICAgICAgICBaQUNLOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy9XZeKAmXJlIGdvaW5nIHRvIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3JlY2VpdmVyIGlzIHJlYWR5IGZvciBhbGwgY29udHJvbCBjaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RvIGJlIGVzY2FwZWQuIElmIHdl4oCZdmUgYWxyZWFkeSBzZW50IGEgWlNJTklUXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2FuZCBnb3R0ZW4gYSByZXNwb25zZSwgdGhlbiB3ZSBrbm93IHRoYXQgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgLy93b3JrIGlzIGFscmVhZHkgZG9uZSBsYXRlciBvbiB3aGVuIHdlIGFjdHVhbGx5XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3NlbmQgYW4gb2ZmZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXNzLl9nb3RfWlNJTklUX1pBQ0sgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc2Vzcy5fc2VuZF9aU0lOSVQoKTtcblxuICAgICAgICAgICAgICAgIHNlc3MuX2tlZXBhbGl2ZV9wcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBzZXNzLl9zdGFydF9rZWVwYWxpdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3N0b3Bfa2VlcGFsaXZlKCkge1xuICAgICAgICBpZiAodGhpcy5fa2VlcGFsaXZlX3Byb21pc2UpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJTVE9QUElORyBLRUVQQUxJVkVcIik7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fa2VlcGFsaXZlX3RpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy5fa2VlcF9hbGl2ZV9wcm9taXNlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9zZW5kX1pTSU5JVCgpIHtcbiAgICAgICAgLy9TZWUgbm90ZSBhdCBfZW5zdXJlX3JlY2VpdmVyX2VzY2FwZXNfY3RybF9jaGFycygpXG4gICAgICAgIC8vZm9yIHdoeSB3ZSBoYXZlIHRvIHBhc3MgRVNDQ1RMLlxuXG4gICAgICAgIHZhciB6c2luaXRfZmxhZ3MgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuX3plbmNvZGVyLmVzY2FwZXNfY3RybF9jaGFycygpKSB7XG4gICAgICAgICAgICB6c2luaXRfZmxhZ3MucHVzaChcIkVTQ0NUTFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbmRfaGVhZGVyX2FuZF9kYXRhKFxuICAgICAgICAgICAgW1wiWlNJTklUXCIsIHpzaW5pdF9mbGFnc10sXG4gICAgICAgICAgICBbMF0sXG4gICAgICAgICAgICBcImVuZF9hY2tcIlxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9jb25zdW1lX1pSSU5JVChoZHIpIHtcbiAgICAgICAgdGhpcy5fbGFzdF9aUklOSVQgPSBoZHI7XG5cbiAgICAgICAgaWYgKGhkci5nZXRfYnVmZmVyX3NpemUoKSkge1xuICAgICAgICAgICAgdGhyb3coIFwiQnVmZmVyIHNpemUgKFwiICsgaGRyLmdldF9idWZmZXJfc2l6ZSgpICsgXCIpIGlzIHVuc3VwcG9ydGVkIVwiICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhkci5jYW5fZnVsbF9kdXBsZXgoKSkge1xuICAgICAgICAgICAgdGhyb3coIFwiSGFsZi1kdXBsZXggSS9PIGlzIHVuc3VwcG9ydGVkIVwiICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhkci5jYW5fb3ZlcmxhcF9pbygpKSB7XG4gICAgICAgICAgICB0aHJvdyggXCJOb24tb3ZlcmxhcCBJL08gaXMgdW5zdXBwb3J0ZWQhXCIgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoZHIuZXNjYXBlXzh0aF9iaXQoKSkge1xuICAgICAgICAgICAgdGhyb3coIFwiOC1iaXQgZXNjYXBpbmcgaXMgdW5zdXBwb3J0ZWQhXCIgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChGT1JDRV9FU0NBUEVfQ1RSTF9DSEFSUykge1xuICAgICAgICAgICAgdGhpcy5femVuY29kZXIuc2V0X2VzY2FwZV9jdHJsX2NoYXJzKHRydWUpO1xuICAgICAgICAgICAgaWYgKCFoZHIuZXNjYXBlX2N0cmxfY2hhcnMoKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoXCJQZWVyIGRpZG7igJl0IHJlcXVlc3QgZXNjYXBlIG9mIGFsbCBjb250cm9sIGNoYXJhY3RlcnMuIFdpbGwgc2VuZCBaU0lOSVQgdG8gZm9yY2UgcmVjb2duaXRpb24gb2YgZXNjYXBlZCBjb250cm9sIGNoYXJhY3RlcnMuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5femVuY29kZXIuc2V0X2VzY2FwZV9jdHJsX2NoYXJzKGhkci5lc2NhcGVfY3RybF9jaGFycygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjMxNTU5MzkvbWlzc2luZy0weGYtYW5kLTB4MTYtd2hlbi1iaW5hcnktZGF0YS10aHJvdWdoLXZpcnR1YWwtc2VyaWFsLXBvcnQtcGFpci1jcmVhdGVkLWJcbiAgICAvL15eIEJlY2F1c2Ugb2YgdGhhdCwgd2UgYWx3YXlzIGVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMuXG4gICAgLy9UaGUgYWx0ZXJuYXRpdmUgd291bGQgYmUgdGhhdCBscnogd291bGQgbmV2ZXIgcmVjZWl2ZSB0aG9zZVxuICAgIC8vdHdvIGJ5dGVzIGZyb20gem1vZGVtLmpzLlxuICAgIF9lbnN1cmVfcmVjZWl2ZXJfZXNjYXBlc19jdHJsX2NoYXJzKCkge1xuICAgICAgICB2YXIgcHJvbWlzZTtcblxuICAgICAgICB2YXIgbmVlZHNfWlNJTklUID0gIXRoaXMuX2xhc3RfWlJJTklULmVzY2FwZV9jdHJsX2NoYXJzKCkgJiYgIXRoaXMuX2dvdF9aU0lOSVRfWkFDSztcblxuICAgICAgICBpZiAobmVlZHNfWlNJTklUKSB7XG4gICAgICAgICAgICB2YXIgc2VzcyA9IHRoaXM7XG4gICAgICAgICAgICBwcm9taXNlID0gbmV3IFByb21pc2UoIGZ1bmN0aW9uKHJlcykge1xuICAgICAgICAgICAgICAgIHNlc3MuX25leHRfaGVhZGVyX2hhbmRsZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgIFpBQ0s6IChoZHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcygpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc2Vzcy5fc2VuZF9aU0lOSVQoKTtcbiAgICAgICAgICAgIH0gKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIF9jb252ZXJ0X3BhcmFtc190b19vZmZlcl9wYXlsb2FkX2FycmF5KHBhcmFtcykge1xuICAgICAgICBwYXJhbXMgPSBabW9kZW0uVmFsaWRhdGlvbi5vZmZlcl9wYXJhbWV0ZXJzKHBhcmFtcyk7XG5cbiAgICAgICAgdmFyIHN1YnBhY2tldF9wYXlsb2FkID0gcGFyYW1zLm5hbWUgKyBcIlxceDAwXCI7XG5cbiAgICAgICAgdmFyIHN1YnBhY2tldF9zcGFjZV9waWVjZXMgPSBbXG4gICAgICAgICAgICAocGFyYW1zLnNpemUgfHwgMCkudG9TdHJpbmcoMTApLFxuICAgICAgICAgICAgcGFyYW1zLm10aW1lID8gcGFyYW1zLm10aW1lLnRvU3RyaW5nKDgpIDogXCIwXCIsXG4gICAgICAgICAgICBwYXJhbXMubW9kZSA/ICgweDgwMDAgfCBwYXJhbXMubW9kZSkudG9TdHJpbmcoOCkgOiBcIjBcIixcbiAgICAgICAgICAgIFwiMFwiLCAgICAvL3NlcmlhbFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChwYXJhbXMuZmlsZXNfcmVtYWluaW5nKSB7XG4gICAgICAgICAgICBzdWJwYWNrZXRfc3BhY2VfcGllY2VzLnB1c2goIHBhcmFtcy5maWxlc19yZW1haW5pbmcgKTtcblxuICAgICAgICAgICAgaWYgKHBhcmFtcy5ieXRlc19yZW1haW5pbmcpIHtcbiAgICAgICAgICAgICAgICBzdWJwYWNrZXRfc3BhY2VfcGllY2VzLnB1c2goIHBhcmFtcy5ieXRlc19yZW1haW5pbmcgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN1YnBhY2tldF9wYXlsb2FkICs9IHN1YnBhY2tldF9zcGFjZV9waWVjZXMuam9pbihcIiBcIik7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJpbmdfdG9fb2N0ZXRzKHN1YnBhY2tldF9wYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZW5kIGFuIG9mZmVyIHRvIHRoZSByZWNlaXZlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RmlsZURldGFpbHN9IHBhcmFtcyAtIEFsbCBhYm91dCB0aGUgZmlsZSB5b3Ugd2FudCB0byB0cmFuc2Zlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBJZiB0aGUgcmVjZWl2ZXIgYWNjZXB0cyB0aGUgb2ZmZXIsIHRoZW4gdGhlXG4gICAgICogcmVzb2x1dGlvbiBpcyBhIFRyYW5zZmVyIG9iamVjdDsgb3RoZXJ3aXNlIHRoZSByZXNvbHV0aW9uIGlzXG4gICAgICogdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIHNlbmRfb2ZmZXIocGFyYW1zKSB7XG4gICAgICAgIGlmIChabW9kZW0uREVCVUcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoXCJTRU5ESU5HIE9GRkVSXCIsIHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBhcmFtcykgdGhyb3cgXCJuZWVkIGZpbGUgcGFyYW1zIVwiO1xuXG4gICAgICAgIGlmICh0aGlzLl9zZW5kaW5nX2ZpbGUpIHRocm93IFwiQWxyZWFkeSBzZW5kaW5nIGZpbGUhXCI7XG5cbiAgICAgICAgdmFyIHBheWxvYWRfYXJyYXkgPSB0aGlzLl9jb252ZXJ0X3BhcmFtc190b19vZmZlcl9wYXlsb2FkX2FycmF5KHBhcmFtcyk7XG5cbiAgICAgICAgdGhpcy5fc3RvcF9rZWVwYWxpdmUoKTtcblxuICAgICAgICB2YXIgc2VzcyA9IHRoaXM7XG5cbiAgICAgICAgZnVuY3Rpb24genJwb3NfaGFuZGxlcl9zZXR0ZXJfZnVuYygpIHtcbiAgICAgICAgICAgIHNlc3MuX25leHRfaGVhZGVyX2hhbmRsZXIgPSB7XG5cbiAgICAgICAgICAgICAgICAvLyBUaGUgcmVjZWl2ZXIgbWF5IHNlbmQgWlJQT1MgaW4gYXQgbGVhc3QgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gMSkgQSBtYWxmb3JtZWQgc3VicGFja2V0IGFycml2ZWQsIHNvIHdlIG5lZWQgdG9cbiAgICAgICAgICAgICAgICAvLyDigJxyZXdpbmTigJ0gYSBiaXQgYW5kIGNvbnRpbnVlIGZyb20gdGhlIHJlY2VpdmVy4oCZc1xuICAgICAgICAgICAgICAgIC8vIGxhc3Qtc3VjY2Vzc2Z1bCBsb2NhdGlvbiBpbiB0aGUgZmlsZS5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIDIpIFRoZSByZWNlaXZlciBoYXNu4oCZdCBnb3R0ZW4gYW55IGRhdGEgZm9yIGEgYml0LFxuICAgICAgICAgICAgICAgIC8vIHNvIGl0IHNlbmRzIFpSUE9TIGFzIGEg4oCccGluZ+KAnS5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIENhc2UgIzEgc2hvdWxkbuKAmXQgaGFwcGVuIHNpbmNlIHptb2RlbS5qcyByZXF1aXJlcyBhXG4gICAgICAgICAgICAgICAgLy8gcmVsaWFibGUgdHJhbnNwb3J0LiBDYXNlICMyLCB0aG91Z2gsIGNhbiBoYXBwZW4gZHVlXG4gICAgICAgICAgICAgICAgLy8gdG8gZWl0aGVyIG5vcm1hbCBuZXR3b3JrIGNvbmdlc3Rpb24gb3IgZXJyb3JzIGluXG4gICAgICAgICAgICAgICAgLy8gaW1wbGVtZW50YXRpb24uIEluIGVpdGhlciBjYXNlLCB0aGVyZeKAmXMgbm90aGluZyBmb3JcbiAgICAgICAgICAgICAgICAvLyB1cyB0byBkbyBidXQgdG8gaWdub3JlIHRoZSBaUlBPUywgd2l0aCBhbiBvcHRpb25hbFxuICAgICAgICAgICAgICAgIC8vIHdhcm5pbmcuXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICBaUlBPUzogZnVuY3Rpb24oaGRyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChabW9kZW0uREVCVUcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIk1pZC10cmFuc2ZlciBaUlBPUyDigKYgaW1wbGVtZW50YXRpb24gZXJyb3I/XCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgenJwb3NfaGFuZGxlcl9zZXR0ZXJfZnVuYygpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBkb2VyX2Z1bmMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgLy9yZXR1cm4gUHJvbWlzZSBvYmplY3QgdGhhdCBpcyBmdWxmaWxsZWQgd2hlbiB0aGUgWlJQT1Mgb3IgWlNLSVAgYXJyaXZlcy5cbiAgICAgICAgICAgIC8vVGhlIHByb21pc2UgdmFsdWUgaXMgdGhlIGJ5dGUgb2Zmc2V0LCBvciB1bmRlZmluZWQgZm9yIFpTS0lQLlxuICAgICAgICAgICAgLy9JZiBaUlBPUyBhcnJpdmVzLCB0aGVuIHNlbmQgWkRBVEEoMCkgYW5kIHNldCB0aGlzLl9zZW5kaW5nX2ZpbGUuXG4gICAgICAgICAgICB2YXIgaGFuZGxlcl9zZXR0ZXJfcHJvbWlzZSA9IG5ldyBQcm9taXNlKCBmdW5jdGlvbihyZXMpIHtcbiAgICAgICAgICAgICAgICBzZXNzLl9uZXh0X2hlYWRlcl9oYW5kbGVyID0ge1xuICAgICAgICAgICAgICAgICAgICBaU0tJUDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXNzLl9zdGFydF9rZWVwYWxpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcygpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBaUlBPUzogZnVuY3Rpb24oaGRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXNzLl9zZW5kaW5nX2ZpbGUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB6cnBvc19oYW5kbGVyX3NldHRlcl9mdW5jKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVHJhbnNmZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGRyLmdldF9vZmZzZXQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzcy5fc2VuZF9pbnRlcmltX2ZpbGVfcGllY2UuYmluZChzZXNzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzcy5fZW5kX2ZpbGUuYmluZChzZXNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gKTtcblxuICAgICAgICAgICAgc2Vzcy5fc2VuZF9oZWFkZXJfYW5kX2RhdGEoIFtcIlpGSUxFXCJdLCBwYXlsb2FkX2FycmF5LCBcImVuZF9hY2tcIiApO1xuXG4gICAgICAgICAgICBkZWxldGUgc2Vzcy5fc2VudF9aREFUQTtcblxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXJfc2V0dGVyX3Byb21pc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKEZPUkNFX0VTQ0FQRV9DVFJMX0NIQVJTKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZW5zdXJlX3JlY2VpdmVyX2VzY2FwZXNfY3RybF9jaGFycygpLnRoZW4oZG9lcl9mdW5jKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkb2VyX2Z1bmMoKTtcbiAgICB9XG5cbiAgICBfc2VuZF9oZWFkZXJfYW5kX2RhdGEoIGhkcl9uYW1lX2FuZF9hcmdzLCBkYXRhX2FyciwgZnJhbWVlbmQgKSB7XG4gICAgICAgIHZhciBieXRlc19oZHIgPSB0aGlzLl9jcmVhdGVfaGVhZGVyX2J5dGVzKGhkcl9uYW1lX2FuZF9hcmdzKTtcblxuICAgICAgICB2YXIgZGF0YV9ieXRlcyA9IHRoaXMuX2J1aWxkX3N1YnBhY2tldF9ieXRlcyhkYXRhX2FyciwgZnJhbWVlbmQpO1xuXG4gICAgICAgIGJ5dGVzX2hkclswXS5wdXNoLmFwcGx5KCBieXRlc19oZHJbMF0sIGRhdGFfYnl0ZXMgKTtcblxuICAgICAgICBpZiAoWm1vZGVtLkRFQlVHKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dfaGVhZGVyKCBcIlNFTkRJTkcgSEVBREVSXCIsIGJ5dGVzX2hkclsxXSApO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyggdGhpcy50eXBlLCBcIi0tIEhFQURFUiBQQVlMT0FEOlwiLCBmcmFtZWVuZCwgZGF0YV9ieXRlcy5sZW5ndGggKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbmRlciggYnl0ZXNfaGRyWzBdICk7XG5cbiAgICAgICAgdGhpcy5fbGFzdF9zZW50X2hlYWRlciA9IGJ5dGVzX2hkclsxXTtcbiAgICB9XG5cbiAgICBfYnVpbGRfc3VicGFja2V0X2J5dGVzKCBieXRlc19hcnIsIGZyYW1lZW5kICkge1xuICAgICAgICB2YXIgc3VicGFja2V0ID0gWm1vZGVtLlN1YnBhY2tldC5idWlsZChieXRlc19hcnIsIGZyYW1lZW5kKTtcblxuICAgICAgICByZXR1cm4gc3VicGFja2V0W3RoaXMuX3N1YnBhY2tldF9lbmNvZGVfZnVuY10oIHRoaXMuX3plbmNvZGVyICk7XG4gICAgfVxuXG4gICAgX2J1aWxkX2FuZF9zZW5kX3N1YnBhY2tldCggYnl0ZXNfYXJyLCBmcmFtZWVuZCApIHtcbiAgICAgICAgdGhpcy5fc2VuZGVyKCB0aGlzLl9idWlsZF9zdWJwYWNrZXRfYnl0ZXMoYnl0ZXNfYXJyLCBmcmFtZWVuZCkgKTtcbiAgICB9XG5cbiAgICBfc3RyaW5nX3RvX29jdGV0cyhzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLl90ZXh0ZW5jb2Rlcikge1xuICAgICAgICAgICAgdGhpcy5fdGV4dGVuY29kZXIgPSBuZXcgWm1vZGVtLlRleHQuRW5jb2RlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHVpbnQ4YXJyID0gdGhpcy5fdGV4dGVuY29kZXIuZW5jb2RlKHN0cmluZyk7XG4gICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh1aW50OGFycik7XG4gICAgfVxuXG4gICAgLypcbiAgICBQb3RlbnRpYWwgZnV0dXJlIHN1cHBvcnQgZm9yIHJlc3BvbmRpbmcgdG8gWlJQT1M6XG4gICAgc2VuZF9maWxlX29mZnNldChvZmZzZXQpIHtcbiAgICB9XG4gICAgKi9cblxuICAgIC8qXG4gICAgICAgIFNlbmRpbmcgbG9naWMgd29ya3MgdGh1czpcbiAgICAgICAgICAgIC0gQVNTVU1FIHRoZSByZWNlaXZlciBjYW4gb3ZlcmxhcCBJL08gKENBTk9WSU8pXG4gICAgICAgICAgICAgICAgKHNvIGZhaWwgaWYgIUNBTkZEWCB8fCAhQ0FOT1ZJTylcbiAgICAgICAgICAgIC0gU2VuZGVyIG9wZW5zIHRoZSBmaXJlaG9zZSDigKYgYWxsIFpDUkNHICghZW5kLyFhY2spXG4gICAgICAgICAgICAgICAgdW50aWwgdGhlIGVuZCwgd2hlbiB3ZSBzZW5kIGEgWkNSQ0UgKGVuZC8hYWNrKVxuICAgICAgICAgICAgICAgIE5COiB0cnkgOGsvMzJrLzY0ayBjaHVuayBzaXplcz8gTG9va3MgbGlrZSB0aGVyZeKAmXNcbiAgICAgICAgICAgICAgICBubyBuZWVkIHRvIGNoYW5nZSB0aGUgcGFja2V0IG90aGVyd2lzZS5cbiAgICAqL1xuICAgIC8vVE9ETzogUHV0IHRoaXMgb24gYSBUcmFuc2ZlciBvYmplY3Qgc2ltaWxhciB0byB3aGF0IFJlY2VpdmUgdXNlcz9cbiAgICBfc2VuZF9pbnRlcmltX2ZpbGVfcGllY2UoYnl0ZXNfb2JqKSB7XG5cbiAgICAgICAgLy9XZSBkb27igJl0IGFzayB0aGUgcmVjZWl2ZXIgdG8gY29uZmlybSBiZWNhdXNlIHRoZXJl4oCZcyBubyBuZWVkLlxuICAgICAgICB0aGlzLl9zZW5kX2ZpbGVfcGFydChieXRlc19vYmosIFwibm9fZW5kX25vX2Fja1wiKTtcblxuICAgICAgICAvL1RoaXMgcGF0dGVybiB3aWxsIGFsbG93XG4gICAgICAgIC8vZXJyb3ItY29ycmVjdGlvbiB3aXRob3V0IGJ1ZmZlcmluZyB0aGUgZW50aXJlIHN0cmVhbSBpbiBKUy5cbiAgICAgICAgLy9Gb3Igbm93IHRoZSBwcm9taXNlIGlzIGFsd2F5cyByZXNvbHZlZCwgYnV0IGluIHRoZSBmdXR1cmUgd2VcbiAgICAgICAgLy9jYW4gbWFrZSBpdCBvbmx5IHJlc29sdmUgb25jZSB3ZeKAmXZlIGdvdHRlbiBhY2tub3dsZWRnZW1lbnQuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBfZW5zdXJlX3dlX2FyZV9zZW5kaW5nKCkge1xuICAgICAgICBpZiAoIXRoaXMuX3NlbmRpbmdfZmlsZSkgdGhyb3cgXCJOb3Qgc2VuZGluZyBhIGZpbGUgY3VycmVudGx5IVwiO1xuICAgIH1cblxuICAgIC8vVGhpcyByZXNvbHZlcyBvbmNlIHdlIHJlY2VpdmUgWkVPRi5cbiAgICBfZW5kX2ZpbGUoYnl0ZXNfb2JqKSB7XG4gICAgICAgIHRoaXMuX2Vuc3VyZV93ZV9hcmVfc2VuZGluZygpO1xuXG4gICAgICAgIC8vSXMgdGhlIGZyYW1lLWVuZC1uZXNzIG9mIHRoaXMgbGFzdCBwYWNrZXQgcmVkdW5kYW50XG4gICAgICAgIC8vd2l0aCB0aGUgWkVPRiBwYWNrZXQ/PyAtIE5vLiBJdCBzaWduYWxzIHRoZSByZWNlaXZlciB0aGF0XG4gICAgICAgIC8vdGhlIG5leHQgdGhpbmcgdG8gZXhwZWN0IGlzIGEgaGVhZGVyLCBub3QgYSBwYWNrZXQuXG5cbiAgICAgICAgLy9uby1hY2ssIGZvbGxvd2luZyBscnpzeuKAmXMgZXhhbXBsZVxuICAgICAgICB0aGlzLl9zZW5kX2ZpbGVfcGFydChieXRlc19vYmosIFwiZW5kX25vX2Fja1wiKTtcblxuICAgICAgICB2YXIgc2VzcyA9IHRoaXM7XG5cbiAgICAgICAgLy9SZWdpc3RlciB0aGlzIGJlZm9yZSB3ZSBzZW5kIFpFT0YgaW4gY2FzZSBvZiBsb2NhbCByb3VuZC10cmlwLlxuICAgICAgICAvLyhCYXNpY2FsbHkganVzdCBmb3Igc3luY2hyb25vdXMgdGVzdGluZywgYnV0LilcbiAgICAgICAgdmFyIHJldCA9IG5ldyBQcm9taXNlKCBmdW5jdGlvbihyZXMpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJVTlNFVFRJTkcgU0VORElORyBGTEFHXCIpO1xuICAgICAgICAgICAgc2Vzcy5fc2VuZGluZ19maWxlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXNzLl9wcmVwYXJlX3RvX3JlY2VpdmVfWlJJTklUKHJlcyk7XG4gICAgICAgIH0gKTtcblxuICAgICAgICB0aGlzLl9zZW5kX2hlYWRlciggXCJaRU9GXCIsIHRoaXMuX2ZpbGVfb2Zmc2V0ICk7XG5cbiAgICAgICAgdGhpcy5fZmlsZV9vZmZzZXQgPSAwO1xuXG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgLy9DYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBvdXIgc2Vzc2lvblxuICAgIC8vYW5kIGFsc28gd2hlbiB3ZeKAmXJlIGRvbmUgc2VuZGluZyBhIGZpbGUuXG4gICAgX3ByZXBhcmVfdG9fcmVjZWl2ZV9aUklOSVQoYWZ0ZXJfY29uc3VtZSkge1xuICAgICAgICB0aGlzLl9uZXh0X2hlYWRlcl9oYW5kbGVyID0ge1xuICAgICAgICAgICAgWlJJTklUOiBmdW5jdGlvbihoZHIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb25zdW1lX1pSSU5JVChoZHIpO1xuICAgICAgICAgICAgICAgIGlmIChhZnRlcl9jb25zdW1lKSBhZnRlcl9jb25zdW1lKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNpZ25hbCB0byB0aGUgcmVjZWl2ZXIgdGhhdCB0aGUgWk1PREVNIHNlc3Npb24gaXMgd3JhcHBpbmcgdXAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUmVzb2x2ZXMgd2hlbiB0aGUgcmVjZWl2ZXIgaGFzIHJlc3BvbmRlZCB0b1xuICAgICAqIG91ciBzaWduYWwgdGhhdCB0aGUgc2Vzc2lvbiBpcyBvdmVyLlxuICAgICAqL1xuICAgIGNsb3NlKCkge1xuICAgICAgICB2YXIgb2tfdG9fY2xvc2UgPSAodGhpcy5fbGFzdF9oZWFkZXJfbmFtZSA9PT0gXCJaUklOSVRcIilcbiAgICAgICAgaWYgKCFva190b19jbG9zZSkge1xuICAgICAgICAgICAgb2tfdG9fY2xvc2UgPSAodGhpcy5fbGFzdF9oZWFkZXJfbmFtZSA9PT0gXCJaU0tJUFwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9rX3RvX2Nsb3NlKSB7XG4gICAgICAgICAgICBva190b19jbG9zZSA9ICh0aGlzLl9sYXN0X3NlbnRfaGVhZGVyLm5hbWUgPT09IFwiWlNJTklUXCIpICYmICAodGhpcy5fbGFzdF9oZWFkZXJfbmFtZSA9PT0gXCJaQUNLXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFva190b19jbG9zZSkge1xuICAgICAgICAgICAgdGhyb3coIFwiQ2Fu4oCZdCBjbG9zZTsgbGFzdCByZWNlaXZlZCBoZWFkZXIgd2FzIOKAnFwiICsgdGhpcy5fbGFzdF9oZWFkZXJfbmFtZSArIFwi4oCdXCIgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzZXNzID0gdGhpcztcblxuICAgICAgICB2YXIgcmV0ID0gbmV3IFByb21pc2UoIGZ1bmN0aW9uKHJlcywgcmVqKSB7XG4gICAgICAgICAgICBzZXNzLl9uZXh0X2hlYWRlcl9oYW5kbGVyID0ge1xuICAgICAgICAgICAgICAgIFpGSU46IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBzZXNzLl9zZW5kZXIoIE9WRVJfQU5EX09VVCApO1xuICAgICAgICAgICAgICAgICAgICBzZXNzLl9zZW50X09PID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc2Vzcy5fb25fc2Vzc2lvbl9lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gKTtcblxuICAgICAgICB0aGlzLl9zZW5kX2hlYWRlcihcIlpGSU5cIik7XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBfaGFzX2VuZGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hYm9ydGVkKCkgfHwgISF0aGlzLl9zZW50X09PO1xuICAgIH1cblxuICAgIF9zZW5kX2ZpbGVfcGFydChieXRlc19vYmosIGZpbmFsX3BhY2tldGVuZCkge1xuICAgICAgICBpZiAoIXRoaXMuX3NlbnRfWkRBVEEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbmRfaGVhZGVyKCBcIlpEQVRBXCIsIHRoaXMuX2ZpbGVfb2Zmc2V0ICk7XG4gICAgICAgICAgICB0aGlzLl9zZW50X1pEQVRBID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvYmpfb2Zmc2V0ID0gMDtcblxuICAgICAgICB2YXIgYnl0ZXNfY291bnQgPSBieXRlc19vYmoubGVuZ3RoO1xuXG4gICAgICAgIC8vV2UgaGF2ZSB0byBnbyB0aHJvdWdoIGF0IGxlYXN0IG9uY2UgaW4gZXZlbnQgb2YgYW5cbiAgICAgICAgLy9lbXB0eSBidWZmZXIsIGUuZy4sIGFuIGVtcHR5IGVuZF9maWxlLlxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgdmFyIGNodW5rX3NpemUgPSBNYXRoLm1pbihvYmpfb2Zmc2V0ICsgTUFYX0NIVU5LX0xFTkdUSCwgYnl0ZXNfY291bnQpIC0gb2JqX29mZnNldDtcblxuICAgICAgICAgICAgdmFyIGF0X2VuZCA9IChjaHVua19zaXplICsgb2JqX29mZnNldCkgPj0gYnl0ZXNfY291bnQ7XG5cbiAgICAgICAgICAgIHZhciBjaHVuayA9IGJ5dGVzX29iai5zbGljZSggb2JqX29mZnNldCwgb2JqX29mZnNldCArIGNodW5rX3NpemUgKTtcbiAgICAgICAgICAgIGlmICghKGNodW5rIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgY2h1bmsgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjaHVuayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2J1aWxkX2FuZF9zZW5kX3N1YnBhY2tldChcbiAgICAgICAgICAgICAgICBjaHVuayxcbiAgICAgICAgICAgICAgICBhdF9lbmQgPyBmaW5hbF9wYWNrZXRlbmQgOiBcIm5vX2VuZF9ub19hY2tcIlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5fZmlsZV9vZmZzZXQgKz0gY2h1bmtfc2l6ZTtcbiAgICAgICAgICAgIG9ial9vZmZzZXQgKz0gY2h1bmtfc2l6ZTtcblxuICAgICAgICAgICAgaWYgKG9ial9vZmZzZXQgPj0gYnl0ZXNfY291bnQpIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2NvbnN1bWVfZmlyc3QoKSB7XG4gICAgICAgIGlmICghdGhpcy5fcGFyc2VfYW5kX2NvbnN1bWVfaGVhZGVyKCkpIHtcblxuICAgICAgICAgICAgLy9XaGVuIHRoZSBaTU9ERU0gcmVjZWl2ZSBwcm9ncmFtIHN0YXJ0cywgaXQgaW1tZWRpYXRlbHkgc2VuZHNcbiAgICAgICAgICAgIC8vYSBaUklOSVQgaGVhZGVyIHRvIGluaXRpYXRlIFpNT0RFTSBmaWxlIHRyYW5zZmVycywgb3IgYVxuICAgICAgICAgICAgLy9aQ0hBTExFTkdFIGhlYWRlciB0byB2ZXJpZnkgdGhlIHNlbmRpbmcgcHJvZ3JhbS4gVGhlIHJlY2VpdmVcbiAgICAgICAgICAgIC8vcHJvZ3JhbSByZXNlbmRzIGl0cyBoZWFkZXIgYXQgcmVzcG9uc2UgdGltZSAoZGVmYXVsdCAxMCBzZWNvbmQpXG4gICAgICAgICAgICAvL2ludGVydmFscyBmb3IgYSBzdWl0YWJsZSBwZXJpb2Qgb2YgdGltZSAoNDAgc2Vjb25kcyB0b3RhbClcbiAgICAgICAgICAgIC8vYmVmb3JlIGZhbGxpbmcgYmFjayB0byBZTU9ERU0gcHJvdG9jb2wuXG4gICAgICAgICAgICBpZiAodGhpcy5faW5wdXRfYnVmZmVyLmpvaW4oKSA9PT0gXCI2N1wiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgXCJSZWNlaXZlciBoYXMgZmFsbGVuIGJhY2sgdG8gWU1PREVNLlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgX29uX3Nlc3Npb25fZW5kKCkge1xuICAgICAgICB0aGlzLl9zdG9wX2tlZXBhbGl2ZSgpO1xuICAgICAgICBzdXBlci5fb25fc2Vzc2lvbl9lbmQoKTtcbiAgICB9XG59XG5cbk9iamVjdC5hc3NpZ24oXG4gICAgWm1vZGVtLlNlc3Npb24uU2VuZC5wcm90b3R5cGUsXG4gICAge1xuICAgICAgICB0eXBlOiBcInNlbmRcIixcbiAgICB9XG4pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBabW9kZW0gPSBtb2R1bGUuZXhwb3J0cztcblxuT2JqZWN0LmFzc2lnbihcbiAgICBabW9kZW0sXG4gICAgcmVxdWlyZShcIi4vemNyY1wiKSxcbiAgICByZXF1aXJlKFwiLi96ZGxlXCIpLFxuICAgIHJlcXVpcmUoXCIuL3ptbGliXCIpLFxuICAgIHJlcXVpcmUoXCIuL3plcnJvclwiKVxuKTtcblxuY29uc3RcbiAgICBaQ1JDRSA9IDB4NjgsICAgIC8vICdoJywgMTA0LCBmcmFtZSBlbmRzLCBoZWFkZXIgcGFja2V0IGZvbGxvd3NcbiAgICBaQ1JDRyA9IDB4NjksICAgIC8vICdpJywgMTA1LCBmcmFtZSBjb250aW51ZXMgbm9uc3RvcFxuICAgIFpDUkNRID0gMHg2YSwgICAgLy8gJ2onLCAxMDYsIGZyYW1lIGNvbnRpbnVlcywgWkFDSyBleHBlY3RlZFxuICAgIFpDUkNXID0gMHg2YiAgICAgLy8gJ2snLCAxMDcsIGZyYW1lIGVuZHMsIFpBQ0sgZXhwZWN0ZWRcbjtcblxudmFyIFNVQlBBQ0tFVF9CVUlMREVSO1xuXG4vKiogQ2xhc3MgdGhhdCByZXByZXNlbnRzIGEgWk1PREVNIGRhdGEgc3VicGFja2V0LiAqL1xuWm1vZGVtLlN1YnBhY2tldCA9IGNsYXNzIFptb2RlbVN1YnBhY2tldCB7XG5cbiAgICAvKipcbiAgICAgKiBCdWlsZCBhIFN1YnBhY2tldCBzdWJjbGFzcyBnaXZlbiBhIHBheWxvYWQgYW5kIGZyYW1lIGVuZCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBvY3RldHMgLSBUaGUgb2N0ZXQgdmFsdWVzIHRvIHBhcnNlLlxuICAgICAqICAgICAgRWFjaCBhcnJheSBtZW1iZXIgc2hvdWxkIGJlIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgKDAtMjU1KS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZWVuZCAtIE9uZSBvZjpcbiAgICAgKiAtIGBub19lbmRfbm9fYWNrYFxuICAgICAqIC0gYGVuZF9ub19hY2tgXG4gICAgICogLSBgbm9fZW5kX2Fja2AgKHVudXNlZCBjdXJyZW50bHkpXG4gICAgICogLSBgZW5kX2Fja2BcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtTdWJwYWNrZXR9IEFuIGluc3RhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBTdWJwYWNrZXQgc3ViY2xhc3MuXG4gICAgICovXG4gICAgc3RhdGljIGJ1aWxkKG9jdGV0cywgZnJhbWVlbmQpIHtcblxuICAgICAgICAvL1RPRE86IG1ha2UgdGhpcyBiZXR0ZXJcbiAgICAgICAgdmFyIEN0ciA9IFNVQlBBQ0tFVF9CVUlMREVSW2ZyYW1lZW5kXTtcbiAgICAgICAgaWYgKCFDdHIpIHtcbiAgICAgICAgICAgIHRocm93KFwiTm8gc3VicGFja2V0IHR5cGUg4oCcXCIgKyBmcmFtZWVuZCArIFwi4oCdIGlzIGRlZmluZWQhIFRyeSBvbmUgb2Y6IFwiICsgT2JqZWN0LmtleXMoU1VCUEFDS0VUX0JVSUxERVIpLmpvaW4oXCIsIFwiKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IEN0cihvY3RldHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgb2N0ZXQgdmFsdWVzIGFycmF5IHRoYXQgcmVwcmVzZW50cyB0aGUgb2JqZWN0XG4gICAgICogZW5jb2RlZCB3aXRoIGEgMTYtYml0IENSQy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7WkRMRX0gemVuY29kZXIgLSBBIFpETEUgaW5zdGFuY2UgdG8gdXNlIGZvciBaRExFIGVuY29kaW5nLlxuICAgICAqXG4gICAgICogQHJldHVybnMge251bWJlcltdfSBBbiBhcnJheSBvZiBvY3RldCB2YWx1ZXMgc3VpdGFibGUgZm9yIHNlbmRpbmdcbiAgICAgKiAgICAgIGFzIGJpbmFyeSBkYXRhLlxuICAgICAqL1xuICAgIGVuY29kZTE2KHplbmNvZGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmNvZGUoIHplbmNvZGVyLCBabW9kZW0uQ1JDLmNyYzE2ICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBvY3RldCB2YWx1ZXMgYXJyYXkgdGhhdCByZXByZXNlbnRzIHRoZSBvYmplY3RcbiAgICAgKiBlbmNvZGVkIHdpdGggYSAzMi1iaXQgQ1JDLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtaRExFfSB6ZW5jb2RlciAtIEEgWkRMRSBpbnN0YW5jZSB0byB1c2UgZm9yIFpETEUgZW5jb2RpbmcuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyW119IEFuIGFycmF5IG9mIG9jdGV0IHZhbHVlcyBzdWl0YWJsZSBmb3Igc2VuZGluZ1xuICAgICAqICAgICAgYXMgYmluYXJ5IGRhdGEuXG4gICAgICovXG4gICAgZW5jb2RlMzIoemVuY29kZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuY29kZSggemVuY29kZXIsIFptb2RlbS5DUkMuY3JjMzIgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIHN1YnBhY2tldCBwYXlsb2Fk4oCZcyBvY3RldCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBOT1RFOiBGb3Igc3BlZWQsIHRoaXMgcmV0dXJucyB0aGUgYWN0dWFsIGRhdGEgaW4gdGhlIHN1YnBhY2tldDtcbiAgICAgKiBpZiB5b3UgbXV0YXRlIHRoaXMgcmV0dXJuIHZhbHVlLCB5b3UgYWx0ZXIgdGhlIFN1YnBhY2tldCBvYmplY3RcbiAgICAgKiBpbnRlcm5hbHMuIFRoaXMgaXMgT0sgaWYgeW91IHdvbuKAmXQgbmVlZCB0aGUgU3VicGFja2V0IGFueW1vcmUsIGJ1dFxuICAgICAqIGp1c3QgYmUgY2FyZWZ1bC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIHN1YnBhY2tldOKAmXMgcGF5bG9hZCwgcmVwcmVzZW50ZWQgYXMgYW5cbiAgICAgKiBhcnJheSBvZiBvY3RldCB2YWx1ZXMuICoqRE8gTk9UIEFMVEVSIFRISVMgQVJSQVkqKiB1bmxlc3MgeW91XG4gICAgICogbm8gbG9uZ2VyIG5lZWQgdGhlIFN1YnBhY2tldC5cbiAgICAgKi9cbiAgICBnZXRfcGF5bG9hZCgpIHsgcmV0dXJuIHRoaXMuX3BheWxvYWQgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2Ugb3V0IGEgU3VicGFja2V0IG9iamVjdCBmcm9tIGEgZ2l2ZW4gYXJyYXkgb2Ygb2N0ZXQgdmFsdWVzLFxuICAgICAqIGFzc3VtaW5nIGEgMTYtYml0IENSQy5cbiAgICAgKlxuICAgICAqIEFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhlIGdpdmVuIGJ5dGVzIGFyZSBkZWZpbml0aXZlbHkgaW52YWxpZFxuICAgICAqIGFzIHN1YnBhY2tldCB2YWx1ZXMgd2l0aCAxNi1iaXQgQ1JDLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gb2N0ZXRzIC0gVGhlIG9jdGV0IHZhbHVlcyB0byBwYXJzZS5cbiAgICAgKiAgICAgIEVhY2ggYXJyYXkgbWVtYmVyIHNob3VsZCBiZSBhbiA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyICgwLTI1NSkuXG4gICAgICogICAgICBUaGlzIG9iamVjdCBpcyBtdXRhdGVkIGluIHRoZSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtTdWJwYWNrZXR8dW5kZWZpbmVkfSBBbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUgU3VicGFja2V0XG4gICAgICogICAgICBzdWJjbGFzcywgb3IgdW5kZWZpbmVkIGlmIG5vdCBlbm91Z2ggb2N0ZXQgdmFsdWVzIGFyZSBnaXZlblxuICAgICAqICAgICAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlcmUgaXMgYSB2YWxpZCBzdWJwYWNrZXQgaGVyZSBvciBub3QuXG4gICAgICovXG4gICAgc3RhdGljIHBhcnNlMTYob2N0ZXRzKSB7XG4gICAgICAgIHJldHVybiBabW9kZW1TdWJwYWNrZXQuX3BhcnNlKG9jdGV0cywgMik7XG4gICAgfVxuXG4gICAgLy9wYXJzZTMyIHRlc3Q6XG4gICAgLy9bMTAyLCAxMDUsIDEwOCwgMTAxLCAxMTAsIDk3LCAxMDksIDEwMSwgMTE5LCAxMDUsIDExNiwgMTA0LCAxMTUsIDExMiwgOTcsIDk5LCAxMDEsIDExNSwgMCwgNDksIDU1LCA0OSwgNTEsIDQ5LCA1MiwgNTAsIDUyLCA1MSwgNTAsIDQ5LCA1NSwgNTAsIDQ5LCA0OCwgNDgsIDU0LCA1MiwgNTIsIDQ4LCA0OSwgNDksIDU1LCAwLCA0MywgOCwgNjMsIDExNSwgMjMsIDE3XVxuXG4gICAgLyoqXG4gICAgICogU2FtZSBhcyBwYXJzZTE2KCksIGJ1dCBhc3N1bWluZyBhIDMyLWJpdCBDUkMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBvY3RldHMgLSBUaGUgb2N0ZXQgdmFsdWVzIHRvIHBhcnNlLlxuICAgICAqICAgICAgRWFjaCBhcnJheSBtZW1iZXIgc2hvdWxkIGJlIGFuIDgtYml0IHVuc2lnbmVkIGludGVnZXIgKDAtMjU1KS5cbiAgICAgKiAgICAgIFRoaXMgb2JqZWN0IGlzIG11dGF0ZWQgaW4gdGhlIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1N1YnBhY2tldHx1bmRlZmluZWR9IEFuIGluc3RhbmNlIG9mIHRoZSBhcHByb3ByaWF0ZSBTdWJwYWNrZXRcbiAgICAgKiAgICAgIHN1YmNsYXNzLCBvciB1bmRlZmluZWQgaWYgbm90IGVub3VnaCBvY3RldCB2YWx1ZXMgYXJlIGdpdmVuXG4gICAgICogICAgICB0byBkZXRlcm1pbmUgd2hldGhlciB0aGVyZSBpcyBhIHZhbGlkIHN1YnBhY2tldCBoZXJlIG9yIG5vdC5cbiAgICAgKi9cbiAgICBzdGF0aWMgcGFyc2UzMihvY3RldHMpIHtcbiAgICAgICAgcmV0dXJuIFptb2RlbVN1YnBhY2tldC5fcGFyc2Uob2N0ZXRzLCA0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOb3QgdXNlZCBkaXJlY3RseS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIHRoaXMuX3BheWxvYWQgPSBwYXlsb2FkO1xuICAgIH1cblxuICAgIF9lbmNvZGUoemVuY29kZXIsIGNyY19mdW5jKSB7XG4gICAgICAgIHJldHVybiB6ZW5jb2Rlci5lbmNvZGUoIHRoaXMuX3BheWxvYWQuc2xpY2UoMCkgKS5jb25jYXQoXG4gICAgICAgICAgICBbIFptb2RlbS5aTUxJQi5aRExFLCB0aGlzLl9mcmFtZWVuZF9udW0gXSxcbiAgICAgICAgICAgIHplbmNvZGVyLmVuY29kZSggY3JjX2Z1bmMoIHRoaXMuX3BheWxvYWQuY29uY2F0KHRoaXMuX2ZyYW1lZW5kX251bSkgKSApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy9CZWNhdXNlIG9mIFpETEUgZW5jb2RpbmcsIHdl4oCZbGwgbmV2ZXIgc2VlIGFueSBvZiB0aGUgZnJhbWUtZW5kIG9jdGV0c1xuICAgIC8vaW4gYSBzdHJlYW0gZXhjZXB0IGFzIHRoZSBlbmRzIG9mIGRhdGEgcGF5bG9hZHMuXG4gICAgc3RhdGljIF9wYXJzZShieXRlc19hcnIsIGNyY19sZW4pIHtcblxuICAgICAgICB2YXIgZW5kX2F0O1xuICAgICAgICB2YXIgY3JlYXRvcjtcblxuICAgICAgICAvL1RoZXNlIGhhdmUgdG8gYmUgd3JpdHRlbiBpbiBkZWNpbWFsIHNpbmNlIHRoZXnigJlyZSBsb29rdXAga2V5cy5cbiAgICAgICAgdmFyIF9mcmFtZV9lbmRzX2xvb2t1cCA9IHtcbiAgICAgICAgICAgIDEwNDogWkVuZE5vQWNrU3VicGFja2V0LFxuICAgICAgICAgICAgMTA1OiBaTm9FbmROb0Fja1N1YnBhY2tldCxcbiAgICAgICAgICAgIDEwNjogWk5vRW5kQWNrU3VicGFja2V0LFxuICAgICAgICAgICAgMTA3OiBaRW5kQWNrU3VicGFja2V0LFxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciB6ZGxlX2F0ID0gMDtcbiAgICAgICAgd2hpbGUgKHpkbGVfYXQgPCBieXRlc19hcnIubGVuZ3RoKSB7XG4gICAgICAgICAgICB6ZGxlX2F0ID0gYnl0ZXNfYXJyLmluZGV4T2YoIFptb2RlbS5aTUxJQi5aRExFLCB6ZGxlX2F0ICk7XG4gICAgICAgICAgICBpZiAoemRsZV9hdCA9PT0gLTEpIHJldHVybjtcblxuICAgICAgICAgICAgdmFyIGFmdGVyX3pkbGUgPSBieXRlc19hcnJbIHpkbGVfYXQgKyAxIF07XG4gICAgICAgICAgICBjcmVhdG9yID0gX2ZyYW1lX2VuZHNfbG9va3VwWyBhZnRlcl96ZGxlIF07XG4gICAgICAgICAgICBpZiAoY3JlYXRvcikge1xuICAgICAgICAgICAgICAgIGVuZF9hdCA9IHpkbGVfYXQgKyAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB6ZGxlX2F0Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNyZWF0b3IpIHJldHVybjtcblxuICAgICAgICB2YXIgZnJhbWVlbmRfbnVtID0gYnl0ZXNfYXJyW2VuZF9hdF07XG5cbiAgICAgICAgLy9zYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKGJ5dGVzX2FycltlbmRfYXQgLSAxXSAhPT0gWm1vZGVtLlpNTElCLlpETEUpIHtcbiAgICAgICAgICAgIHRocm93KCBcIkJ5dGUgYmVmb3JlIGZyYW1lIGVuZCBzaG91bGQgYmUgWkRMRSwgbm90IFwiICsgYnl0ZXNfYXJyW2VuZF9hdCAtIDFdICk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgemRsZV9lbmNvZGVkX3BheWxvYWQgPSBieXRlc19hcnIuc3BsaWNlKCAwLCBlbmRfYXQgLSAxICk7XG5cbiAgICAgICAgdmFyIGdvdF9jcmMgPSBabW9kZW0uWkRMRS5zcGxpY2UoIGJ5dGVzX2FyciwgMiwgY3JjX2xlbiApO1xuICAgICAgICBpZiAoIWdvdF9jcmMpIHtcbiAgICAgICAgICAgIC8vZ290IHBheWxvYWQgYnV0IG5vIENSQyB5ZXQgLi4gc2hvdWxkIGJlIHJhcmUhXG5cbiAgICAgICAgICAgIC8vV2UgaGF2ZSB0byBwdXQgdGhlIFpETEUtZW5jb2RlZCBwYXlsb2FkIGJhY2sgYmVmb3JlIHJldHVybmluZy5cbiAgICAgICAgICAgIGJ5dGVzX2Fyci51bnNoaWZ0LmFwcGx5KGJ5dGVzX2FyciwgemRsZV9lbmNvZGVkX3BheWxvYWQpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGF5bG9hZCA9IFptb2RlbS5aRExFLmRlY29kZSh6ZGxlX2VuY29kZWRfcGF5bG9hZCk7XG5cbiAgICAgICAgLy9XZSByZWFsbHkgc2hvdWxkbuKAmXQgbmVlZCB0byBkbyB0aGlzLCBidXQganVzdCBmb3IgZ29vZCBtZWFzdXJlLlxuICAgICAgICAvL0kgc3VwcG9zZSBpdOKAmXMgY29uY2VpdmFibGUgdGhpcyBtYXkgcnVuIG92ZXIgVURQIG9yIHNvbWV0aGluZz9cbiAgICAgICAgWm1vZGVtLkNSQ1sgKGNyY19sZW4gPT09IDIpID8gXCJ2ZXJpZnkxNlwiIDogXCJ2ZXJpZnkzMlwiIF0oXG4gICAgICAgICAgICBwYXlsb2FkLmNvbmNhdCggW2ZyYW1lZW5kX251bV0gKSxcbiAgICAgICAgICAgIGdvdF9jcmNcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gbmV3IGNyZWF0b3IocGF5bG9hZCwgZ290X2NyYyk7XG4gICAgfVxufVxuXG5jbGFzcyBaRW5kU3VicGFja2V0QmFzZSBleHRlbmRzIFptb2RlbS5TdWJwYWNrZXQge1xuICAgIGZyYW1lX2VuZCgpIHsgcmV0dXJuIHRydWUgfVxufVxuY2xhc3MgWk5vRW5kU3VicGFja2V0QmFzZSBleHRlbmRzIFptb2RlbS5TdWJwYWNrZXQge1xuICAgIGZyYW1lX2VuZCgpIHsgcmV0dXJuIGZhbHNlIH1cbn1cblxuLy9Vc2VkIGZvciBlbmQtb2YtZmlsZS5cbmNsYXNzIFpFbmROb0Fja1N1YnBhY2tldCBleHRlbmRzIFpFbmRTdWJwYWNrZXRCYXNlIHtcbiAgICBhY2tfZXhwZWN0ZWQoKSB7IHJldHVybiBmYWxzZSB9XG59XG5aRW5kTm9BY2tTdWJwYWNrZXQucHJvdG90eXBlLl9mcmFtZWVuZF9udW0gPSBaQ1JDRTtcblxuLy9Vc2VkIGZvciBaRklMRSBhbmQgWlNJTklUIHBheWxvYWRzLlxuY2xhc3MgWkVuZEFja1N1YnBhY2tldCBleHRlbmRzIFpFbmRTdWJwYWNrZXRCYXNlIHtcbiAgICBhY2tfZXhwZWN0ZWQoKSB7IHJldHVybiB0cnVlIH1cbn1cblpFbmRBY2tTdWJwYWNrZXQucHJvdG90eXBlLl9mcmFtZWVuZF9udW0gPSBaQ1JDVztcblxuLy9Vc2VkIGZvciBaREFUQSwgcHJpb3IgdG8gZW5kLW9mLWZpbGUuXG5jbGFzcyBaTm9FbmROb0Fja1N1YnBhY2tldCBleHRlbmRzIFpOb0VuZFN1YnBhY2tldEJhc2Uge1xuICAgIGFja19leHBlY3RlZCgpIHsgcmV0dXJuIGZhbHNlIH1cbn1cblpOb0VuZE5vQWNrU3VicGFja2V0LnByb3RvdHlwZS5fZnJhbWVlbmRfbnVtID0gWkNSQ0c7XG5cbi8vb25seSB1c2VkIGlmIHJlY2VpdmVyIGNhbiBmdWxsLWR1cGxleFxuY2xhc3MgWk5vRW5kQWNrU3VicGFja2V0IGV4dGVuZHMgWk5vRW5kU3VicGFja2V0QmFzZSB7XG4gICAgYWNrX2V4cGVjdGVkKCkgeyByZXR1cm4gdHJ1ZSB9XG59XG5aTm9FbmRBY2tTdWJwYWNrZXQucHJvdG90eXBlLl9mcmFtZWVuZF9udW0gPSBaQ1JDUTtcblxuU1VCUEFDS0VUX0JVSUxERVIgPSB7XG4gICAgZW5kX25vX2FjazogWkVuZE5vQWNrU3VicGFja2V0LFxuICAgIGVuZF9hY2s6IFpFbmRBY2tTdWJwYWNrZXQsXG4gICAgbm9fZW5kX25vX2FjazogWk5vRW5kTm9BY2tTdWJwYWNrZXQsXG4gICAgbm9fZW5kX2FjazogWk5vRW5kQWNrU3VicGFja2V0LFxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgWm1vZGVtID0gbW9kdWxlLmV4cG9ydHM7XG5cbk9iamVjdC5hc3NpZ24oXG4gICAgWm1vZGVtLFxuICAgIHJlcXVpcmUoXCIuL3plcnJvclwiKVxuKTtcblxuY29uc3QgTE9PS1NfTElLRV9aTU9ERU1fSEVBREVSID0gL1xcKlxceDE4W0FDXXxcXCpcXCpcXHgxOEIvO1xuXG5mdW5jdGlvbiBfdmFsaWRhdGVfbnVtYmVyKGtleSwgdmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgIHRocm93IG5ldyBabW9kZW0uRXJyb3IoXCJ2YWxpZGF0aW9uXCIsIFwi4oCcXCIgKyBrZXkgKyBcIuKAnSAoXCIgKyB2YWx1ZSArIFwiKSBtdXN0IGJlIG5vbm5lZ2F0aXZlLlwiKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgIT09IE1hdGguZmxvb3IodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBabW9kZW0uRXJyb3IoXCJ2YWxpZGF0aW9uXCIsIFwi4oCcXCIgKyBrZXkgKyBcIuKAnSAoXCIgKyB2YWx1ZSArIFwiKSBtdXN0IGJlIGFuIGludGVnZXIuXCIpO1xuICAgIH1cbn1cblxuLyoqIFZhbGlkYXRpb24gbG9naWMgZm9yIHptb2RlbS5qc1xuICpcbiAqIEBleHBvcnRzIFZhbGlkYXRpb25cbiAqL1xuWm1vZGVtLlZhbGlkYXRpb24gPSB7XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZXMgYW5kIG5vcm1hbGl6ZXMgYSBzZXQgb2YgcGFyYW1ldGVycyBmb3IgYW4gb2ZmZXIgdG8gc2VuZC5cbiAgICAgKiBOT1RFOiBUaGlzIHJldHVybnMg4oCcbXRpbWXigJ0gYXMgZXBvY2ggc2Vjb25kcywgbm90IGEgRGF0ZS4gVGhpcyBpc1xuICAgICAqIGluY29uc2lzdGVudCB3aXRoIHRoZSBnZXRfZGV0YWlscygpIG1ldGhvZCBpbiBTZXNzaW9uLCBidXQgaXTigJlzXG4gICAgICogbW9yZSB1c2VmdWwgZm9yIHNlbmRpbmcgb3ZlciB0aGUgd2lyZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RmlsZURldGFpbHN9IHBhcmFtcyAtIFRoZSBmaWxlIGRldGFpbHMuIFNvbWUgZmFpcmx5IHRyaXZpYWxcbiAgICAgKiB2YXJpYW5jZXMgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbiBhcmUgYWxsb3dlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0ZpbGVEZXRhaWxzfSBUaGUgcGFyYW1ldGVycyB0aGF0IHNob3VsZCBiZSBzZW50LiBgbXRpbWVgXG4gICAgICogd2lsbCBiZSBhIERhdGUgcmF0aGVyIHRoYW4gYSBudW1iZXIuXG4gICAgICovXG4gICAgb2ZmZXJfcGFyYW1ldGVyczogZnVuY3Rpb24gb2ZmZXJfcGFyYW1ldGVycyhwYXJhbXMpIHtcbiAgICAgICAgaWYgKCFwYXJhbXMubmFtZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFptb2RlbS5FcnJvcihcInZhbGlkYXRpb25cIiwgXCJOZWVkIOKAnG5hbWXigJ0hXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXJhbXMubmFtZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFptb2RlbS5FcnJvcihcInZhbGlkYXRpb25cIiwgXCLigJxuYW1l4oCdIChcIiArIHBhcmFtcy5uYW1lICsgXCIpIG11c3QgYmUgYSBzdHJpbmchXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9TbyB0aGF0IHdlIGNhbiBvdmVycmlkZSB2YWx1ZXMgYXMgaXMgdXNlZnVsXG4gICAgICAgIC8vd2l0aG91dCBhZmZlY3RpbmcgdGhlIHBhc3NlZC1pbiBvYmplY3QuXG4gICAgICAgIHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHBhcmFtcyk7XG5cbiAgICAgICAgaWYgKExPT0tTX0xJS0VfWk1PREVNX0hFQURFUi50ZXN0KHBhcmFtcy5uYW1lKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVGhlIGZpbGVuYW1lIFwiICsgSlNPTi5zdHJpbmdpZnkobmFtZSkgKyBcIiBjb250YWlucyBjaGFyYWN0ZXJzIHRoYXQgbG9vayBsaWtlIGEgWk1PREVNIGhlYWRlci4gVGhpcyBjb3VsZCBjb3JydXB0IHRoZSBaTU9ERU0gc2Vzc2lvbjsgY29uc2lkZXIgcmVuYW1pbmcgaXQgc28gdGhhdCB0aGUgZmlsZW5hbWUgZG9lc27igJl0IGNvbnRhaW4gY29udHJvbCBjaGFyYWN0ZXJzLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMuc2VyaWFsICE9PSBudWxsICYmIHBhcmFtcy5zZXJpYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFptb2RlbS5FcnJvcihcInZhbGlkYXRpb25cIiwgXCLigJxzZXJpYWzigJ0gaXMgbWVhbmluZ2xlc3MuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyYW1zLnNlcmlhbCA9IG51bGw7XG5cbiAgICAgICAgW1wic2l6ZVwiLCBcIm1vZGVcIiwgXCJmaWxlc19yZW1haW5pbmdcIiwgXCJieXRlc19yZW1haW5pbmdcIl0uZm9yRWFjaChcbiAgICAgICAgICAgIGZ1bmN0aW9uKGspIHtcbiAgICAgICAgICAgICAgICB2YXIgb2s7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgcGFyYW1zW2tdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gKHBhcmFtc1trXSA9PT0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2tdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdmFsaWRhdGVfbnVtYmVyKGssIHBhcmFtc1trXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFptb2RlbS5FcnJvcihcInZhbGlkYXRpb25cIiwgXCLigJxcIiArIGsgKyBcIuKAnSAoXCIgKyBwYXJhbXNba10gKyBcIikgbXVzdCBiZSBudWxsLCB1bmRlZmluZWQsIG9yIGEgbnVtYmVyLlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXJhbXMubW9kZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcGFyYW1zLm1vZGUgfD0gMHg4MDAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcmFtcy5maWxlc19yZW1haW5pbmcgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBabW9kZW0uRXJyb3IoXCJ2YWxpZGF0aW9uXCIsIFwi4oCcZmlsZXNfcmVtYWluaW5n4oCdLCBpZiBnaXZlbiwgbXVzdCBiZSBwb3NpdGl2ZS5cIik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbXRpbWVfb2s7XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIHBhcmFtcy5tdGltZSkge1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIG10aW1lX29rID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChwYXJhbXMubXRpbWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGVfb2JqID0gcGFyYW1zLm10aW1lO1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMubXRpbWUgPSBNYXRoLmZsb29yKCBkYXRlX29iai5nZXRUaW1lKCkgLyAxMDAwICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMubXRpbWUgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgWm1vZGVtLkVycm9yKFwidmFsaWRhdGlvblwiLCBcIuKAnG10aW1l4oCdIChcIiArIGRhdGVfb2JqICsgXCIpIG11c3Qgbm90IGJlIGVhcmxpZXIgdGhhbiAxOTcwLlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXJhbXMubXRpbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbXRpbWVfb2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgICAgICAgICAgIHBhcmFtcy5tdGltZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgbXRpbWVfb2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgICAgIF92YWxpZGF0ZV9udW1iZXIoXCJtdGltZVwiLCBwYXJhbXMubXRpbWUpO1xuICAgICAgICAgICAgICAgIG10aW1lX29rID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbXRpbWVfb2spIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBabW9kZW0uRXJyb3IoXCJ2YWxpZGF0aW9uXCIsIFwi4oCcbXRpbWXigJ0gKFwiICsgcGFyYW1zLm10aW1lICsgXCIpIG11c3QgYmUgbnVsbCwgdW5kZWZpbmVkLCBhIERhdGUsIG9yIGEgbnVtYmVyLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfSxcbn07XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5uYyA9IHVuZGVmaW5lZDsiLCJpbXBvcnQgeyBPdXJYdGVybSB9IGZyb20gXCIuL3h0ZXJtXCI7XG5pbXBvcnQgeyBUZXJtaW5hbCwgV2ViVFRZLCBwcm90b2NvbHMgfSBmcm9tIFwiLi93ZWJ0dHlcIjtcbmltcG9ydCB7IENvbm5lY3Rpb25GYWN0b3J5IH0gZnJvbSBcIi4vd2Vic29ja2V0XCI7XG5cbi8vIEBUT0RPIHJlbW92ZSB0aGVzZVxuZGVjbGFyZSB2YXIgZ290dHlfYXV0aF90b2tlbjogc3RyaW5nO1xuZGVjbGFyZSB2YXIgZ290dHlfdGVybTogc3RyaW5nO1xuXG5jb25zdCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0ZXJtaW5hbFwiKVxuXG5pZiAoZWxlbSAhPT0gbnVsbCkge1xuICAgIHZhciB0ZXJtOiBUZXJtaW5hbDtcbiAgICB0ZXJtID0gbmV3IE91clh0ZXJtKGVsZW0pO1xuXG4gICAgY29uc3QgaHR0cHNFbmFibGVkID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09IFwiaHR0cHM6XCI7XG4gICAgY29uc3QgdXJsID0gKGh0dHBzRW5hYmxlZCA/ICd3c3M6Ly8nIDogJ3dzOi8vJykgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArICd3cyc7XG4gICAgY29uc3QgYXJncyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgY29uc3QgZmFjdG9yeSA9IG5ldyBDb25uZWN0aW9uRmFjdG9yeSh1cmwsIHByb3RvY29scyk7XG4gICAgY29uc3Qgd3QgPSBuZXcgV2ViVFRZKHRlcm0sIGZhY3RvcnksIGFyZ3MsIGdvdHR5X2F1dGhfdG9rZW4pO1xuICAgIGNvbnN0IGNsb3NlciA9IHd0Lm9wZW4oKTtcblxuICAgIC8vIEFjY29yZGluZyB0byBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2luZG93L3VubG9hZF9ldmVudFxuICAgIC8vIHRoaXMgZXZlbnQgaXMgdW5yZWxpYWJsZSBhbmQgaW4gc29tZSBjYXNlcyAoRmlyZWZveCBpcyBtZW50aW9uZWQpLCBoYXZpbmcgYW5cbiAgICAvLyBcInVubG9hZFwiIGV2ZW50IGhhbmRsZXIgY2FuIGhhdmUgdW53YW50ZWQgc2lkZSBlZmZlY3RzLiBDb25zaWRlciBjb21tZW50aW5nIGl0IG91dC5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInVubG9hZFwiLCAoKSA9PiB7XG4gICAgICAgIGNsb3NlcigpO1xuICAgICAgICB0ZXJtLmNsb3NlKCk7XG4gICAgfSk7XG59O1xuIl0sIm5hbWVzIjpbImJvdHRvbSIsInJpZ2h0IiwibGVmdCIsImF1dG8iLCJiYXNlUGxhY2VtZW50cyIsInN0YXJ0IiwiZW5kIiwiY2xpcHBpbmdQYXJlbnRzIiwidmlld3BvcnQiLCJwb3BwZXIiLCJyZWZlcmVuY2UiLCJ2YXJpYXRpb25QbGFjZW1lbnRzIiwicmVkdWNlIiwiYWNjIiwicGxhY2VtZW50IiwiY29uY2F0IiwiYmVmb3JlUmVhZCIsInJlYWQiLCJhZnRlclJlYWQiLCJiZWZvcmVNYWluIiwibWFpbiIsImFmdGVyTWFpbiIsImJlZm9yZVdyaXRlIiwid3JpdGUiLCJhZnRlcldyaXRlIiwibW9kaWZpZXJQaGFzZXMiLCJnZXROb2RlTmFtZSIsImVsZW1lbnQiLCJub2RlTmFtZSIsInRvTG93ZXJDYXNlIiwiZ2V0V2luZG93Iiwibm9kZSIsIndpbmRvdyIsInRvU3RyaW5nIiwib3duZXJEb2N1bWVudCIsImRlZmF1bHRWaWV3IiwiaXNFbGVtZW50IiwiRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsIlNoYWRvd1Jvb3QiLCJuYW1lIiwiZW5hYmxlZCIsInBoYXNlIiwiZm4iLCJfcmVmIiwic3RhdGUiLCJPYmplY3QiLCJrZXlzIiwiZWxlbWVudHMiLCJmb3JFYWNoIiwic3R5bGUiLCJzdHlsZXMiLCJhdHRyaWJ1dGVzIiwiYXNzaWduIiwidmFsdWUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJlZmZlY3QiLCJfcmVmMiIsImluaXRpYWxTdHlsZXMiLCJwb3NpdGlvbiIsIm9wdGlvbnMiLCJzdHJhdGVneSIsInRvcCIsIm1hcmdpbiIsImFycm93IiwiaGFzT3duUHJvcGVydHkiLCJwcm9wZXJ0eSIsImF0dHJpYnV0ZSIsInJlcXVpcmVzIiwiZ2V0QmFzZVBsYWNlbWVudCIsInNwbGl0IiwiTWF0aCIsIm1heCIsIm1pbiIsInJvdW5kIiwiZ2V0VUFTdHJpbmciLCJ1YURhdGEiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnREYXRhIiwiYnJhbmRzIiwibWFwIiwiaXRlbSIsImJyYW5kIiwidmVyc2lvbiIsImpvaW4iLCJ1c2VyQWdlbnQiLCJpc0xheW91dFZpZXdwb3J0IiwidGVzdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZVgiLCJzY2FsZVkiLCJvZmZzZXRXaWR0aCIsIndpZHRoIiwib2Zmc2V0SGVpZ2h0IiwiaGVpZ2h0IiwidmlzdWFsVmlld3BvcnQiLCJhZGRWaXN1YWxPZmZzZXRzIiwieCIsIm9mZnNldExlZnQiLCJ5Iiwib2Zmc2V0VG9wIiwiZ2V0TGF5b3V0UmVjdCIsImFicyIsImNvbnRhaW5zIiwicGFyZW50IiwiY2hpbGQiLCJyb290Tm9kZSIsImdldFJvb3ROb2RlIiwibmV4dCIsImlzU2FtZU5vZGUiLCJwYXJlbnROb2RlIiwiaG9zdCIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImluZGV4T2YiLCJnZXREb2N1bWVudEVsZW1lbnQiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImdldFBhcmVudE5vZGUiLCJhc3NpZ25lZFNsb3QiLCJnZXRUcnVlT2Zmc2V0UGFyZW50Iiwib2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50IiwiaXNGaXJlZm94IiwiY3VycmVudE5vZGUiLCJjc3MiLCJ0cmFuc2Zvcm0iLCJwZXJzcGVjdGl2ZSIsImNvbnRhaW4iLCJ3aWxsQ2hhbmdlIiwiZmlsdGVyIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50Iiwid2l0aGluIiwibWVyZ2VQYWRkaW5nT2JqZWN0IiwicGFkZGluZ09iamVjdCIsImV4cGFuZFRvSGFzaE1hcCIsImhhc2hNYXAiLCJrZXkiLCJfc3RhdGUkbW9kaWZpZXJzRGF0YSQiLCJhcnJvd0VsZW1lbnQiLCJwb3BwZXJPZmZzZXRzIiwibW9kaWZpZXJzRGF0YSIsImJhc2VQbGFjZW1lbnQiLCJheGlzIiwibGVuIiwicGFkZGluZyIsInJlY3RzIiwidG9QYWRkaW5nT2JqZWN0IiwiYXJyb3dSZWN0IiwibWluUHJvcCIsIm1heFByb3AiLCJlbmREaWZmIiwic3RhcnREaWZmIiwiYXJyb3dPZmZzZXRQYXJlbnQiLCJjbGllbnRTaXplIiwiY2xpZW50SGVpZ2h0IiwiY2xpZW50V2lkdGgiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImNlbnRlciIsIm9mZnNldCIsImF4aXNQcm9wIiwiY2VudGVyT2Zmc2V0IiwiX29wdGlvbnMkZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJyZXF1aXJlc0lmRXhpc3RzIiwiZ2V0VmFyaWF0aW9uIiwidW5zZXRTaWRlcyIsIm1hcFRvU3R5bGVzIiwiX09iamVjdCRhc3NpZ24yIiwicG9wcGVyUmVjdCIsInZhcmlhdGlvbiIsIm9mZnNldHMiLCJncHVBY2NlbGVyYXRpb24iLCJhZGFwdGl2ZSIsInJvdW5kT2Zmc2V0cyIsImlzRml4ZWQiLCJfb2Zmc2V0cyR4IiwiX29mZnNldHMkeSIsIl9yZWYzIiwiaGFzWCIsImhhc1kiLCJzaWRlWCIsInNpZGVZIiwid2luIiwiaGVpZ2h0UHJvcCIsIndpZHRoUHJvcCIsIl9PYmplY3QkYXNzaWduIiwiY29tbW9uU3R5bGVzIiwiX3JlZjQiLCJkcHIiLCJkZXZpY2VQaXhlbFJhdGlvIiwicm91bmRPZmZzZXRzQnlEUFIiLCJfcmVmNSIsIl9vcHRpb25zJGdwdUFjY2VsZXJhdCIsIl9vcHRpb25zJGFkYXB0aXZlIiwiX29wdGlvbnMkcm91bmRPZmZzZXRzIiwiZGF0YSIsInBhc3NpdmUiLCJpbnN0YW5jZSIsIl9vcHRpb25zJHNjcm9sbCIsInNjcm9sbCIsIl9vcHRpb25zJHJlc2l6ZSIsInJlc2l6ZSIsInNjcm9sbFBhcmVudHMiLCJzY3JvbGxQYXJlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwidXBkYXRlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhc2giLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsInJlcGxhY2UiLCJtYXRjaGVkIiwiZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQiLCJnZXRXaW5kb3dTY3JvbGwiLCJzY3JvbGxMZWZ0IiwicGFnZVhPZmZzZXQiLCJzY3JvbGxUb3AiLCJwYWdlWU9mZnNldCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJpc1Njcm9sbFBhcmVudCIsIl9nZXRDb21wdXRlZFN0eWxlIiwib3ZlcmZsb3ciLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJnZXRTY3JvbGxQYXJlbnQiLCJib2R5IiwibGlzdFNjcm9sbFBhcmVudHMiLCJsaXN0IiwiX2VsZW1lbnQkb3duZXJEb2N1bWVuIiwiaXNCb2R5IiwidGFyZ2V0IiwidXBkYXRlZExpc3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwiY2xpcHBpbmdQYXJlbnQiLCJodG1sIiwibGF5b3V0Vmlld3BvcnQiLCJnZXRWaWV3cG9ydFJlY3QiLCJjbGllbnRUb3AiLCJjbGllbnRMZWZ0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aW5TY3JvbGwiLCJzY3JvbGxXaWR0aCIsInNjcm9sbEhlaWdodCIsImRpcmVjdGlvbiIsImdldERvY3VtZW50UmVjdCIsImdldENsaXBwaW5nUmVjdCIsImJvdW5kYXJ5Iiwicm9vdEJvdW5kYXJ5IiwibWFpbkNsaXBwaW5nUGFyZW50cyIsImNsaXBwZXJFbGVtZW50IiwiZ2V0Q2xpcHBpbmdQYXJlbnRzIiwiZmlyc3RDbGlwcGluZ1BhcmVudCIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJjb21wdXRlT2Zmc2V0cyIsImNvbW1vblgiLCJjb21tb25ZIiwibWFpbkF4aXMiLCJkZXRlY3RPdmVyZmxvdyIsIl9vcHRpb25zIiwiX29wdGlvbnMkcGxhY2VtZW50IiwiX29wdGlvbnMkc3RyYXRlZ3kiLCJfb3B0aW9ucyRib3VuZGFyeSIsIl9vcHRpb25zJHJvb3RCb3VuZGFyeSIsIl9vcHRpb25zJGVsZW1lbnRDb250ZSIsImVsZW1lbnRDb250ZXh0IiwiX29wdGlvbnMkYWx0Qm91bmRhcnkiLCJhbHRCb3VuZGFyeSIsIl9vcHRpb25zJHBhZGRpbmciLCJhbHRDb250ZXh0IiwiY2xpcHBpbmdDbGllbnRSZWN0IiwiY29udGV4dEVsZW1lbnQiLCJyZWZlcmVuY2VDbGllbnRSZWN0IiwicG9wcGVyQ2xpZW50UmVjdCIsImVsZW1lbnRDbGllbnRSZWN0Iiwib3ZlcmZsb3dPZmZzZXRzIiwib2Zmc2V0RGF0YSIsIm11bHRpcGx5IiwiX3NraXAiLCJfb3B0aW9ucyRtYWluQXhpcyIsImNoZWNrTWFpbkF4aXMiLCJfb3B0aW9ucyRhbHRBeGlzIiwiYWx0QXhpcyIsImNoZWNrQWx0QXhpcyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrUGxhY2VtZW50cyIsIl9vcHRpb25zJGZsaXBWYXJpYXRpbyIsImZsaXBWYXJpYXRpb25zIiwiYWxsb3dlZEF1dG9QbGFjZW1lbnRzIiwicHJlZmVycmVkUGxhY2VtZW50Iiwib3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyIsInBsYWNlbWVudHMiLCJfb3B0aW9ucyRhbGxvd2VkQXV0b1AiLCJhbGxvd2VkUGxhY2VtZW50cyIsImxlbmd0aCIsIm92ZXJmbG93cyIsInNvcnQiLCJhIiwiYiIsImNvbXB1dGVBdXRvUGxhY2VtZW50IiwicmVmZXJlbmNlUmVjdCIsImNoZWNrc01hcCIsIk1hcCIsIm1ha2VGYWxsYmFja0NoZWNrcyIsImZpcnN0Rml0dGluZ1BsYWNlbWVudCIsImkiLCJfYmFzZVBsYWNlbWVudCIsImlzU3RhcnRWYXJpYXRpb24iLCJpc1ZlcnRpY2FsIiwibWFpblZhcmlhdGlvblNpZGUiLCJhbHRWYXJpYXRpb25TaWRlIiwiY2hlY2tzIiwicHVzaCIsImV2ZXJ5IiwiY2hlY2siLCJzZXQiLCJfbG9vcCIsIl9pIiwiZml0dGluZ1BsYWNlbWVudCIsImZpbmQiLCJnZXQiLCJzbGljZSIsInJlc2V0IiwiZ2V0U2lkZU9mZnNldHMiLCJwcmV2ZW50ZWRPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwic29tZSIsInNpZGUiLCJwcmV2ZW50T3ZlcmZsb3ciLCJyZWZlcmVuY2VPdmVyZmxvdyIsInBvcHBlckFsdE92ZXJmbG93IiwicmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzIiwicG9wcGVyRXNjYXBlT2Zmc2V0cyIsImlzUmVmZXJlbmNlSGlkZGVuIiwiaGFzUG9wcGVyRXNjYXBlZCIsIl9vcHRpb25zJG9mZnNldCIsImludmVydERpc3RhbmNlIiwic2tpZGRpbmciLCJkaXN0YW5jZSIsImRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZIiwiX2RhdGEkc3RhdGUkcGxhY2VtZW50IiwiX29wdGlvbnMkdGV0aGVyIiwidGV0aGVyIiwiX29wdGlvbnMkdGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0IiwiaXNCYXNlUGxhY2VtZW50IiwidGV0aGVyT2Zmc2V0VmFsdWUiLCJub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUiLCJvZmZzZXRNb2RpZmllclN0YXRlIiwiX29mZnNldE1vZGlmaWVyU3RhdGUkIiwibWFpblNpZGUiLCJhbHRTaWRlIiwiYWRkaXRpdmUiLCJtaW5MZW4iLCJtYXhMZW4iLCJhcnJvd1BhZGRpbmdPYmplY3QiLCJhcnJvd1BhZGRpbmdNaW4iLCJhcnJvd1BhZGRpbmdNYXgiLCJhcnJvd0xlbiIsIm1pbk9mZnNldCIsIm1heE9mZnNldCIsImNsaWVudE9mZnNldCIsIm9mZnNldE1vZGlmaWVyVmFsdWUiLCJ0ZXRoZXJNYXgiLCJwcmV2ZW50ZWRPZmZzZXQiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIiwiX21haW5TaWRlIiwiX2FsdFNpZGUiLCJfb2Zmc2V0IiwiX2xlbiIsIl9taW4iLCJfbWF4IiwiaXNPcmlnaW5TaWRlIiwiX29mZnNldE1vZGlmaWVyVmFsdWUiLCJfdGV0aGVyTWluIiwiX3RldGhlck1heCIsIl9wcmV2ZW50ZWRPZmZzZXQiLCJ2Iiwid2l0aGluTWF4Q2xhbXAiLCJnZXRDb21wb3NpdGVSZWN0IiwiZWxlbWVudE9yVmlydHVhbEVsZW1lbnQiLCJpc09mZnNldFBhcmVudEFuRWxlbWVudCIsIm9mZnNldFBhcmVudElzU2NhbGVkIiwiaXNFbGVtZW50U2NhbGVkIiwib3JkZXIiLCJtb2RpZmllcnMiLCJ2aXNpdGVkIiwiU2V0IiwicmVzdWx0IiwibW9kaWZpZXIiLCJhZGQiLCJkZXAiLCJoYXMiLCJkZXBNb2RpZmllciIsIkRFRkFVTFRfT1BUSU9OUyIsImFyZVZhbGlkRWxlbWVudHMiLCJhcmd1bWVudHMiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwicG9wcGVyR2VuZXJhdG9yIiwiZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmIiwiZGVmYXVsdE1vZGlmaWVycyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZjIiLCJkZWZhdWx0T3B0aW9ucyIsInBlbmRpbmciLCJvcmRlcmVkTW9kaWZpZXJzIiwiZWZmZWN0Q2xlYW51cEZucyIsImlzRGVzdHJveWVkIiwic2V0T3B0aW9ucyIsInNldE9wdGlvbnNBY3Rpb24iLCJjbGVhbnVwTW9kaWZpZXJFZmZlY3RzIiwib3JkZXJNb2RpZmllcnMiLCJtZXJnZWQiLCJjdXJyZW50IiwiZXhpc3RpbmciLCJtZXJnZUJ5TmFtZSIsIm0iLCJfcmVmMyRvcHRpb25zIiwiY2xlYW51cEZuIiwibm9vcEZuIiwiZm9yY2VVcGRhdGUiLCJfc3RhdGUkZWxlbWVudHMiLCJpbmRleCIsIl9zdGF0ZSRvcmRlcmVkTW9kaWZpZSIsIl9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJ1bmRlZmluZWQiLCJkZXN0cm95Iiwib25GaXJzdFVwZGF0ZSIsImNyZWF0ZVBvcHBlciIsImV2ZW50TGlzdGVuZXJzIiwiVFJBTlNJVElPTl9FTkQiLCJnZXRTZWxlY3RvciIsInNlbGVjdG9yIiwiZ2V0QXR0cmlidXRlIiwiaHJlZkF0dHJpYnV0ZSIsImluY2x1ZGVzIiwic3RhcnRzV2l0aCIsInRyaW0iLCJnZXRTZWxlY3RvckZyb21FbGVtZW50IiwiZ2V0RWxlbWVudEZyb21TZWxlY3RvciIsInRyaWdnZXJUcmFuc2l0aW9uRW5kIiwiZGlzcGF0Y2hFdmVudCIsIkV2ZW50Iiwib2JqZWN0IiwianF1ZXJ5Iiwibm9kZVR5cGUiLCJnZXRFbGVtZW50IiwiaXNWaXNpYmxlIiwiZ2V0Q2xpZW50UmVjdHMiLCJlbGVtZW50SXNWaXNpYmxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImNsb3NlZERldGFpbHMiLCJjbG9zZXN0Iiwic3VtbWFyeSIsImlzRGlzYWJsZWQiLCJOb2RlIiwiRUxFTUVOVF9OT0RFIiwiY2xhc3NMaXN0IiwiZGlzYWJsZWQiLCJoYXNBdHRyaWJ1dGUiLCJmaW5kU2hhZG93Um9vdCIsImF0dGFjaFNoYWRvdyIsInJvb3QiLCJub29wIiwicmVmbG93IiwiZ2V0alF1ZXJ5IiwialF1ZXJ5IiwiRE9NQ29udGVudExvYWRlZENhbGxiYWNrcyIsImlzUlRMIiwiZGlyIiwiZGVmaW5lSlF1ZXJ5UGx1Z2luIiwicGx1Z2luIiwiY2FsbGJhY2siLCIkIiwiTkFNRSIsIkpRVUVSWV9OT19DT05GTElDVCIsImpRdWVyeUludGVyZmFjZSIsIkNvbnN0cnVjdG9yIiwibm9Db25mbGljdCIsInJlYWR5U3RhdGUiLCJleGVjdXRlIiwiZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbiIsInRyYW5zaXRpb25FbGVtZW50Iiwid2FpdEZvclRyYW5zaXRpb24iLCJlbXVsYXRlZER1cmF0aW9uIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwidHJhbnNpdGlvbkRlbGF5IiwiZmxvYXRUcmFuc2l0aW9uRHVyYXRpb24iLCJOdW1iZXIiLCJwYXJzZUZsb2F0IiwiZmxvYXRUcmFuc2l0aW9uRGVsYXkiLCJnZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCIsImNhbGxlZCIsImhhbmRsZXIiLCJzZXRUaW1lb3V0IiwiZ2V0TmV4dEFjdGl2ZUVsZW1lbnQiLCJhY3RpdmVFbGVtZW50Iiwic2hvdWxkR2V0TmV4dCIsImlzQ3ljbGVBbGxvd2VkIiwibGlzdExlbmd0aCIsIm5hbWVzcGFjZVJlZ2V4Iiwic3RyaXBOYW1lUmVnZXgiLCJzdHJpcFVpZFJlZ2V4IiwiZXZlbnRSZWdpc3RyeSIsInVpZEV2ZW50IiwiY3VzdG9tRXZlbnRzIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJuYXRpdmVFdmVudHMiLCJtYWtlRXZlbnRVaWQiLCJ1aWQiLCJnZXRFbGVtZW50RXZlbnRzIiwiZmluZEhhbmRsZXIiLCJldmVudHMiLCJjYWxsYWJsZSIsImRlbGVnYXRpb25TZWxlY3RvciIsInZhbHVlcyIsImV2ZW50Iiwibm9ybWFsaXplUGFyYW1ldGVycyIsIm9yaWdpbmFsVHlwZUV2ZW50IiwiZGVsZWdhdGlvbkZ1bmN0aW9uIiwiaXNEZWxlZ2F0ZWQiLCJ0eXBlRXZlbnQiLCJnZXRUeXBlRXZlbnQiLCJhZGRIYW5kbGVyIiwib25lT2ZmIiwid3JhcEZ1bmN0aW9uIiwicmVsYXRlZFRhcmdldCIsImRlbGVnYXRlVGFyZ2V0IiwiY2FsbCIsInRoaXMiLCJoYW5kbGVycyIsInByZXZpb3VzRnVuY3Rpb24iLCJkb21FbGVtZW50cyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJkb21FbGVtZW50IiwiaHlkcmF0ZU9iaiIsIkV2ZW50SGFuZGxlciIsIm9mZiIsInR5cGUiLCJhcHBseSIsImJvb3RzdHJhcERlbGVnYXRpb25IYW5kbGVyIiwiYm9vdHN0cmFwSGFuZGxlciIsInJlbW92ZUhhbmRsZXIiLCJCb29sZWFuIiwicmVtb3ZlTmFtZXNwYWNlZEhhbmRsZXJzIiwibmFtZXNwYWNlIiwic3RvcmVFbGVtZW50RXZlbnQiLCJoYW5kbGVyS2V5Iiwib24iLCJvbmUiLCJpbk5hbWVzcGFjZSIsImlzTmFtZXNwYWNlIiwiZWxlbWVudEV2ZW50Iiwia2V5SGFuZGxlcnMiLCJ0cmlnZ2VyIiwialF1ZXJ5RXZlbnQiLCJidWJibGVzIiwibmF0aXZlRGlzcGF0Y2giLCJkZWZhdWx0UHJldmVudGVkIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCIsImlzRGVmYXVsdFByZXZlbnRlZCIsImV2dCIsImNhbmNlbGFibGUiLCJwcmV2ZW50RGVmYXVsdCIsIm9iaiIsIm1ldGEiLCJlbnRyaWVzIiwiX3VudXNlZCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZWxlbWVudE1hcCIsIkRhdGEiLCJpbnN0YW5jZU1hcCIsInNpemUiLCJjb25zb2xlIiwiZXJyb3IiLCJmcm9tIiwicmVtb3ZlIiwiZGVsZXRlIiwibm9ybWFsaXplRGF0YSIsIkpTT04iLCJwYXJzZSIsImRlY29kZVVSSUNvbXBvbmVudCIsIm5vcm1hbGl6ZURhdGFLZXkiLCJjaHIiLCJNYW5pcHVsYXRvciIsInNldERhdGFBdHRyaWJ1dGUiLCJyZW1vdmVEYXRhQXR0cmlidXRlIiwiZ2V0RGF0YUF0dHJpYnV0ZXMiLCJic0tleXMiLCJkYXRhc2V0IiwicHVyZUtleSIsImNoYXJBdCIsImdldERhdGFBdHRyaWJ1dGUiLCJDb25maWciLCJEZWZhdWx0IiwiRGVmYXVsdFR5cGUiLCJFcnJvciIsIl9nZXRDb25maWciLCJjb25maWciLCJfbWVyZ2VDb25maWdPYmoiLCJfY29uZmlnQWZ0ZXJNZXJnZSIsIl90eXBlQ2hlY2tDb25maWciLCJqc29uQ29uZmlnIiwiY29uc3RydWN0b3IiLCJjb25maWdUeXBlcyIsImV4cGVjdGVkVHlwZXMiLCJ2YWx1ZVR5cGUiLCJwcm90b3R5cGUiLCJtYXRjaCIsIlJlZ0V4cCIsIlR5cGVFcnJvciIsInRvVXBwZXJDYXNlIiwiQmFzZUNvbXBvbmVudCIsInN1cGVyIiwiX2VsZW1lbnQiLCJfY29uZmlnIiwiREFUQV9LRVkiLCJkaXNwb3NlIiwiRVZFTlRfS0VZIiwicHJvcGVydHlOYW1lIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsIl9xdWV1ZUNhbGxiYWNrIiwiaXNBbmltYXRlZCIsInN0YXRpYyIsImdldEluc3RhbmNlIiwiVkVSU0lPTiIsImVuYWJsZURpc21pc3NUcmlnZ2VyIiwiY29tcG9uZW50IiwibWV0aG9kIiwiY2xpY2tFdmVudCIsInRhZ05hbWUiLCJnZXRPckNyZWF0ZUluc3RhbmNlIiwiQWxlcnQiLCJjbG9zZSIsIl9kZXN0cm95RWxlbWVudCIsImVhY2giLCJTRUxFQ1RPUl9EQVRBX1RPR0dMRSQ1IiwiQnV0dG9uIiwidG9nZ2xlIiwiYnV0dG9uIiwiU2VsZWN0b3JFbmdpbmUiLCJmaW5kT25lIiwiY2hpbGRyZW4iLCJtYXRjaGVzIiwicGFyZW50cyIsImFuY2VzdG9yIiwicHJldiIsInByZXZpb3VzIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsIm5leHRFbGVtZW50U2libGluZyIsImZvY3VzYWJsZUNoaWxkcmVuIiwiZm9jdXNhYmxlcyIsImVsIiwiRVZFTlRfS0VZJDkiLCJEZWZhdWx0JGMiLCJlbmRDYWxsYmFjayIsImxlZnRDYWxsYmFjayIsInJpZ2h0Q2FsbGJhY2siLCJEZWZhdWx0VHlwZSRjIiwiU3dpcGUiLCJpc1N1cHBvcnRlZCIsIl9kZWx0YVgiLCJfc3VwcG9ydFBvaW50ZXJFdmVudHMiLCJQb2ludGVyRXZlbnQiLCJfaW5pdEV2ZW50cyIsIl9zdGFydCIsIl9ldmVudElzUG9pbnRlclBlblRvdWNoIiwiY2xpZW50WCIsInRvdWNoZXMiLCJfZW5kIiwiX2hhbmRsZVN3aXBlIiwiX21vdmUiLCJhYnNEZWx0YVgiLCJwb2ludGVyVHlwZSIsIm1heFRvdWNoUG9pbnRzIiwiT1JERVJfTkVYVCIsIk9SREVSX1BSRVYiLCJESVJFQ1RJT05fTEVGVCIsIkRJUkVDVElPTl9SSUdIVCIsIkVWRU5UX1NMSUQiLCJDTEFTU19OQU1FX0NBUk9VU0VMIiwiQ0xBU1NfTkFNRV9BQ1RJVkUkMiIsIlNFTEVDVE9SX0FDVElWRSIsIlNFTEVDVE9SX0lURU0iLCJLRVlfVE9fRElSRUNUSU9OIiwiRGVmYXVsdCRiIiwiaW50ZXJ2YWwiLCJrZXlib2FyZCIsInBhdXNlIiwicmlkZSIsInRvdWNoIiwid3JhcCIsIkRlZmF1bHRUeXBlJGIiLCJDYXJvdXNlbCIsIl9pbnRlcnZhbCIsIl9hY3RpdmVFbGVtZW50IiwiX2lzU2xpZGluZyIsInRvdWNoVGltZW91dCIsIl9zd2lwZUhlbHBlciIsIl9pbmRpY2F0b3JzRWxlbWVudCIsIl9hZGRFdmVudExpc3RlbmVycyIsImN5Y2xlIiwiX3NsaWRlIiwibmV4dFdoZW5WaXNpYmxlIiwiaGlkZGVuIiwiX2NsZWFySW50ZXJ2YWwiLCJfdXBkYXRlSW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsIl9tYXliZUVuYWJsZUN5Y2xlIiwidG8iLCJpdGVtcyIsIl9nZXRJdGVtcyIsImFjdGl2ZUluZGV4IiwiX2dldEl0ZW1JbmRleCIsIl9nZXRBY3RpdmUiLCJkZWZhdWx0SW50ZXJ2YWwiLCJfa2V5ZG93biIsIl9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzIiwiaW1nIiwic3dpcGVDb25maWciLCJfZGlyZWN0aW9uVG9PcmRlciIsImNsZWFyVGltZW91dCIsIl9zZXRBY3RpdmVJbmRpY2F0b3JFbGVtZW50IiwiYWN0aXZlSW5kaWNhdG9yIiwibmV3QWN0aXZlSW5kaWNhdG9yIiwiZWxlbWVudEludGVydmFsIiwicGFyc2VJbnQiLCJpc05leHQiLCJuZXh0RWxlbWVudCIsIm5leHRFbGVtZW50SW5kZXgiLCJ0cmlnZ2VyRXZlbnQiLCJldmVudE5hbWUiLCJfb3JkZXJUb0RpcmVjdGlvbiIsImlzQ3ljbGluZyIsImRpcmVjdGlvbmFsQ2xhc3NOYW1lIiwib3JkZXJDbGFzc05hbWUiLCJfaXNBbmltYXRlZCIsImNsZWFySW50ZXJ2YWwiLCJjYXJvdXNlbCIsInNsaWRlSW5kZXgiLCJjYXJvdXNlbHMiLCJDTEFTU19OQU1FX1NIT1ckNyIsIkNMQVNTX05BTUVfQ09MTEFQU0UiLCJDTEFTU19OQU1FX0NPTExBUFNJTkciLCJTRUxFQ1RPUl9EQVRBX1RPR0dMRSQ0IiwiRGVmYXVsdCRhIiwiRGVmYXVsdFR5cGUkYSIsIkNvbGxhcHNlIiwiX2lzVHJhbnNpdGlvbmluZyIsIl90cmlnZ2VyQXJyYXkiLCJ0b2dnbGVMaXN0IiwiZWxlbSIsImZpbHRlckVsZW1lbnQiLCJmb3VuZEVsZW1lbnQiLCJfaW5pdGlhbGl6ZUNoaWxkcmVuIiwiX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyIsIl9pc1Nob3duIiwiaGlkZSIsInNob3ciLCJhY3RpdmVDaGlsZHJlbiIsIl9nZXRGaXJzdExldmVsQ2hpbGRyZW4iLCJhY3RpdmVJbnN0YW5jZSIsImRpbWVuc2lvbiIsIl9nZXREaW1lbnNpb24iLCJzY3JvbGxTaXplIiwic2VsZWN0ZWQiLCJ0cmlnZ2VyQXJyYXkiLCJpc09wZW4iLCJzZWxlY3RvckVsZW1lbnRzIiwiTkFNRSRhIiwiQVJST1dfVVBfS0VZJDEiLCJBUlJPV19ET1dOX0tFWSQxIiwiRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMyIsIkVWRU5UX0tFWURPV05fREFUQV9BUEkiLCJDTEFTU19OQU1FX1NIT1ckNiIsIlNFTEVDVE9SX0RBVEFfVE9HR0xFJDMiLCJTRUxFQ1RPUl9EQVRBX1RPR0dMRV9TSE9XTiIsIlNFTEVDVE9SX01FTlUiLCJQTEFDRU1FTlRfVE9QIiwiUExBQ0VNRU5UX1RPUEVORCIsIlBMQUNFTUVOVF9CT1RUT00iLCJQTEFDRU1FTlRfQk9UVE9NRU5EIiwiUExBQ0VNRU5UX1JJR0hUIiwiUExBQ0VNRU5UX0xFRlQiLCJEZWZhdWx0JDkiLCJhdXRvQ2xvc2UiLCJkaXNwbGF5IiwicG9wcGVyQ29uZmlnIiwiRGVmYXVsdFR5cGUkOSIsIkRyb3Bkb3duIiwiX3BvcHBlciIsIl9wYXJlbnQiLCJfbWVudSIsIl9pbk5hdmJhciIsIl9kZXRlY3ROYXZiYXIiLCJfY3JlYXRlUG9wcGVyIiwiZm9jdXMiLCJfY29tcGxldGVIaWRlIiwicmVmZXJlbmNlRWxlbWVudCIsIl9nZXRQb3BwZXJDb25maWciLCJfZ2V0UGxhY2VtZW50IiwicGFyZW50RHJvcGRvd24iLCJpc0VuZCIsIl9nZXRPZmZzZXQiLCJwb3BwZXJEYXRhIiwiZGVmYXVsdEJzUG9wcGVyQ29uZmlnIiwiX3NlbGVjdE1lbnVJdGVtIiwib3BlblRvZ2dsZXMiLCJjb250ZXh0IiwiY29tcG9zZWRQYXRoIiwiaXNNZW51VGFyZ2V0IiwiaXNJbnB1dCIsImlzRXNjYXBlRXZlbnQiLCJpc1VwT3JEb3duRXZlbnQiLCJnZXRUb2dnbGVCdXR0b24iLCJzdG9wUHJvcGFnYXRpb24iLCJkYXRhQXBpS2V5ZG93bkhhbmRsZXIiLCJjbGVhck1lbnVzIiwiU0VMRUNUT1JfRklYRURfQ09OVEVOVCIsIlNFTEVDVE9SX1NUSUNLWV9DT05URU5UIiwiUFJPUEVSVFlfUEFERElORyIsIlBST1BFUlRZX01BUkdJTiIsIlNjcm9sbEJhckhlbHBlciIsImdldFdpZHRoIiwiZG9jdW1lbnRXaWR0aCIsImlubmVyV2lkdGgiLCJfZGlzYWJsZU92ZXJGbG93IiwiX3NldEVsZW1lbnRBdHRyaWJ1dGVzIiwiY2FsY3VsYXRlZFZhbHVlIiwiX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXMiLCJpc092ZXJmbG93aW5nIiwiX3NhdmVJbml0aWFsQXR0cmlidXRlIiwic3R5bGVQcm9wZXJ0eSIsInNjcm9sbGJhcldpZHRoIiwiX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2siLCJzZXRQcm9wZXJ0eSIsImFjdHVhbFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJjYWxsQmFjayIsInNlbCIsIk5BTUUkOSIsIkNMQVNTX05BTUVfU0hPVyQ1IiwiRVZFTlRfTU9VU0VET1dOIiwiRGVmYXVsdCQ4IiwiY2xhc3NOYW1lIiwiY2xpY2tDYWxsYmFjayIsInJvb3RFbGVtZW50IiwiRGVmYXVsdFR5cGUkOCIsIkJhY2tkcm9wIiwiX2lzQXBwZW5kZWQiLCJfYXBwZW5kIiwiX2dldEVsZW1lbnQiLCJfZW11bGF0ZUFuaW1hdGlvbiIsImJhY2tkcm9wIiwiY3JlYXRlRWxlbWVudCIsImFwcGVuZCIsIkVWRU5UX0tFWSQ1IiwiVEFCX05BVl9CQUNLV0FSRCIsIkRlZmF1bHQkNyIsImF1dG9mb2N1cyIsInRyYXBFbGVtZW50IiwiRGVmYXVsdFR5cGUkNyIsIkZvY3VzVHJhcCIsIl9pc0FjdGl2ZSIsIl9sYXN0VGFiTmF2RGlyZWN0aW9uIiwiYWN0aXZhdGUiLCJfaGFuZGxlRm9jdXNpbiIsIl9oYW5kbGVLZXlkb3duIiwiZGVhY3RpdmF0ZSIsInNoaWZ0S2V5IiwiRVZFTlRfS0VZJDQiLCJFVkVOVF9ISURERU4kNCIsIkVWRU5UX1NIT1ckNCIsIkNMQVNTX05BTUVfT1BFTiIsIkNMQVNTX05BTUVfU0hPVyQ0IiwiQ0xBU1NfTkFNRV9TVEFUSUMiLCJEZWZhdWx0JDYiLCJEZWZhdWx0VHlwZSQ2IiwiTW9kYWwiLCJfZGlhbG9nIiwiX2JhY2tkcm9wIiwiX2luaXRpYWxpemVCYWNrRHJvcCIsIl9mb2N1c3RyYXAiLCJfaW5pdGlhbGl6ZUZvY3VzVHJhcCIsIl9zY3JvbGxCYXIiLCJfYWRqdXN0RGlhbG9nIiwiX3Nob3dFbGVtZW50IiwiX2hpZGVNb2RhbCIsImh0bWxFbGVtZW50IiwiaGFuZGxlVXBkYXRlIiwibW9kYWxCb2R5IiwiX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24iLCJjdXJyZW50VGFyZ2V0IiwiX3Jlc2V0QWRqdXN0bWVudHMiLCJpc01vZGFsT3ZlcmZsb3dpbmciLCJpbml0aWFsT3ZlcmZsb3dZIiwiaXNCb2R5T3ZlcmZsb3dpbmciLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsInNob3dFdmVudCIsImFscmVhZHlPcGVuIiwiQ0xBU1NfTkFNRV9TSE9XJDMiLCJDTEFTU19OQU1FX1NIT1dJTkckMSIsIkNMQVNTX05BTUVfSElESU5HIiwiT1BFTl9TRUxFQ1RPUiIsIkVWRU5UX0hJREVfUFJFVkVOVEVEIiwiRVZFTlRfSElEREVOJDMiLCJEZWZhdWx0JDUiLCJEZWZhdWx0VHlwZSQ1IiwiT2ZmY2FudmFzIiwiYmx1ciIsInVyaUF0dHJpYnV0ZXMiLCJTQUZFX1VSTF9QQVRURVJOIiwiREFUQV9VUkxfUEFUVEVSTiIsImFsbG93ZWRBdHRyaWJ1dGUiLCJhbGxvd2VkQXR0cmlidXRlTGlzdCIsImF0dHJpYnV0ZU5hbWUiLCJub2RlVmFsdWUiLCJhdHRyaWJ1dGVSZWdleCIsInJlZ2V4IiwiRGVmYXVsdEFsbG93bGlzdCIsImFyZWEiLCJiciIsImNvbCIsImNvZGUiLCJkaXYiLCJlbSIsImhyIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwibGkiLCJvbCIsInAiLCJwcmUiLCJzIiwic21hbGwiLCJzcGFuIiwic3ViIiwic3VwIiwic3Ryb25nIiwidSIsInVsIiwiRGVmYXVsdCQ0IiwiYWxsb3dMaXN0IiwiY29udGVudCIsImV4dHJhQ2xhc3MiLCJzYW5pdGl6ZSIsInNhbml0aXplRm4iLCJ0ZW1wbGF0ZSIsIkRlZmF1bHRUeXBlJDQiLCJEZWZhdWx0Q29udGVudFR5cGUiLCJlbnRyeSIsIlRlbXBsYXRlRmFjdG9yeSIsImdldENvbnRlbnQiLCJfcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24iLCJoYXNDb250ZW50IiwiY2hhbmdlQ29udGVudCIsIl9jaGVja0NvbnRlbnQiLCJ0b0h0bWwiLCJ0ZW1wbGF0ZVdyYXBwZXIiLCJpbm5lckhUTUwiLCJfbWF5YmVTYW5pdGl6ZSIsInRleHQiLCJfc2V0Q29udGVudCIsImFyZyIsInRlbXBsYXRlRWxlbWVudCIsIl9wdXRFbGVtZW50SW5UZW1wbGF0ZSIsInRleHRDb250ZW50IiwidW5zYWZlSHRtbCIsInNhbml0aXplRnVuY3Rpb24iLCJjcmVhdGVkRG9jdW1lbnQiLCJET01QYXJzZXIiLCJwYXJzZUZyb21TdHJpbmciLCJlbGVtZW50TmFtZSIsImF0dHJpYnV0ZUxpc3QiLCJhbGxvd2VkQXR0cmlidXRlcyIsInNhbml0aXplSHRtbCIsIkRJU0FMTE9XRURfQVRUUklCVVRFUyIsIkNMQVNTX05BTUVfRkFERSQyIiwiQ0xBU1NfTkFNRV9TSE9XJDIiLCJTRUxFQ1RPUl9NT0RBTCIsIkVWRU5UX01PREFMX0hJREUiLCJUUklHR0VSX0hPVkVSIiwiVFJJR0dFUl9GT0NVUyIsIkF0dGFjaG1lbnRNYXAiLCJBVVRPIiwiVE9QIiwiUklHSFQiLCJCT1RUT00iLCJMRUZUIiwiRGVmYXVsdCQzIiwiYW5pbWF0aW9uIiwiY29udGFpbmVyIiwiY3VzdG9tQ2xhc3MiLCJkZWxheSIsInRpdGxlIiwiRGVmYXVsdFR5cGUkMyIsIlRvb2x0aXAiLCJfaXNFbmFibGVkIiwiX3RpbWVvdXQiLCJfaXNIb3ZlcmVkIiwiX2FjdGl2ZVRyaWdnZXIiLCJfdGVtcGxhdGVGYWN0b3J5IiwiX25ld0NvbnRlbnQiLCJ0aXAiLCJfc2V0TGlzdGVuZXJzIiwiZW5hYmxlIiwiZGlzYWJsZSIsInRvZ2dsZUVuYWJsZWQiLCJfaW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0IiwiY2xpY2siLCJfaXNXaXRoQWN0aXZlVHJpZ2dlciIsIl9lbnRlciIsIl9sZWF2ZSIsIl9oaWRlTW9kYWxIYW5kbGVyIiwiX2Rpc3Bvc2VQb3BwZXIiLCJfaXNXaXRoQ29udGVudCIsImlzSW5UaGVEb20iLCJfZ2V0VGlwRWxlbWVudCIsInByZXZpb3VzSG92ZXJTdGF0ZSIsIl9nZXRUaXRsZSIsIl9jcmVhdGVUaXBFbGVtZW50IiwiX2dldENvbnRlbnRGb3JUZW1wbGF0ZSIsIl9nZXRUZW1wbGF0ZUZhY3RvcnkiLCJ0aXBJZCIsInByZWZpeCIsImZsb29yIiwicmFuZG9tIiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRVSUQiLCJzZXRDb250ZW50Iiwib3JpZ2luYWxUaXRsZSIsIl9nZXREZWxlZ2F0ZUNvbmZpZyIsImF0dGFjaG1lbnQiLCJ0cmlnZ2VycyIsImV2ZW50SW4iLCJldmVudE91dCIsIl9maXhUaXRsZSIsIl9zZXRUaW1lb3V0IiwidGltZW91dCIsImRhdGFBdHRyaWJ1dGVzIiwiZGF0YUF0dHJpYnV0ZSIsIkRlZmF1bHQkMiIsIkRlZmF1bHRUeXBlJDIiLCJQb3BvdmVyIiwiX2dldENvbnRlbnQiLCJFVkVOVF9DTElDSyIsIkNMQVNTX05BTUVfQUNUSVZFJDEiLCJTRUxFQ1RPUl9UQVJHRVRfTElOS1MiLCJEZWZhdWx0JDEiLCJyb290TWFyZ2luIiwic21vb3RoU2Nyb2xsIiwiRGVmYXVsdFR5cGUkMSIsIlNjcm9sbFNweSIsIl90YXJnZXRMaW5rcyIsIl9vYnNlcnZhYmxlU2VjdGlvbnMiLCJfcm9vdEVsZW1lbnQiLCJfYWN0aXZlVGFyZ2V0IiwiX29ic2VydmVyIiwiX3ByZXZpb3VzU2Nyb2xsRGF0YSIsInZpc2libGVFbnRyeVRvcCIsInBhcmVudFNjcm9sbFRvcCIsInJlZnJlc2giLCJfaW5pdGlhbGl6ZVRhcmdldHNBbmRPYnNlcnZhYmxlcyIsIl9tYXliZUVuYWJsZVNtb290aFNjcm9sbCIsImRpc2Nvbm5lY3QiLCJfZ2V0TmV3T2JzZXJ2ZXIiLCJzZWN0aW9uIiwib2JzZXJ2ZSIsIm9ic2VydmFibGVTZWN0aW9uIiwic2Nyb2xsVG8iLCJiZWhhdmlvciIsInRocmVzaG9sZCIsIl9nZXRSb290TWFyZ2luIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJfb2JzZXJ2ZXJDYWxsYmFjayIsInRhcmdldEVsZW1lbnQiLCJpZCIsIl9wcm9jZXNzIiwidXNlclNjcm9sbHNEb3duIiwiaXNJbnRlcnNlY3RpbmciLCJfY2xlYXJBY3RpdmVDbGFzcyIsImVudHJ5SXNMb3dlclRoYW5QcmV2aW91cyIsInRhcmdldExpbmtzIiwiYW5jaG9yIiwiX2FjdGl2YXRlUGFyZW50cyIsImxpc3RHcm91cCIsImFjdGl2ZU5vZGVzIiwic3B5IiwiQVJST1dfTEVGVF9LRVkiLCJBUlJPV19SSUdIVF9LRVkiLCJBUlJPV19VUF9LRVkiLCJBUlJPV19ET1dOX0tFWSIsIkNMQVNTX05BTUVfQUNUSVZFIiwiQ0xBU1NfTkFNRV9GQURFJDEiLCJDTEFTU19OQU1FX1NIT1ckMSIsIlNFTEVDVE9SX0RBVEFfVE9HR0xFIiwiU0VMRUNUT1JfSU5ORVJfRUxFTSIsIlRhYiIsIl9zZXRJbml0aWFsQXR0cmlidXRlcyIsIl9nZXRDaGlsZHJlbiIsImlubmVyRWxlbSIsIl9lbGVtSXNBY3RpdmUiLCJhY3RpdmUiLCJfZ2V0QWN0aXZlRWxlbSIsImhpZGVFdmVudCIsIl9kZWFjdGl2YXRlIiwiX2FjdGl2YXRlIiwicmVsYXRlZEVsZW0iLCJfdG9nZ2xlRHJvcERvd24iLCJuZXh0QWN0aXZlRWxlbWVudCIsIl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyIsIl9zZXRJbml0aWFsQXR0cmlidXRlc09uQ2hpbGQiLCJfZ2V0SW5uZXJFbGVtZW50IiwiaXNBY3RpdmUiLCJvdXRlckVsZW0iLCJfZ2V0T3V0ZXJFbGVtZW50IiwiX3NldEluaXRpYWxBdHRyaWJ1dGVzT25UYXJnZXRQYW5lbCIsIm9wZW4iLCJDTEFTU19OQU1FX0hJREUiLCJDTEFTU19OQU1FX1NIT1ciLCJDTEFTU19OQU1FX1NIT1dJTkciLCJhdXRvaGlkZSIsIlRvYXN0IiwiX2hhc01vdXNlSW50ZXJhY3Rpb24iLCJfaGFzS2V5Ym9hcmRJbnRlcmFjdGlvbiIsIl9jbGVhclRpbWVvdXQiLCJfbWF5YmVTY2hlZHVsZUhpZGUiLCJpc1Nob3duIiwiX29uSW50ZXJhY3Rpb24iLCJpc0ludGVyYWN0aW5nIiwiZmFjdG9yeSIsIkNSQzMyIiwiVDAiLCJjIiwidGFibGUiLCJuIiwiSW50MzJBcnJheSIsInNpZ25lZF9jcmNfdGFibGUiLCJUVCIsIlQiLCJvdXQiLCJzdWJhcnJheSIsInNsaWNlX2J5XzE2X3RhYmxlcyIsIlQxIiwiVDIiLCJUMyIsIlQ0IiwiVDUiLCJUNiIsIlQ3IiwiVDgiLCJUOSIsIlRhIiwiVGIiLCJUYyIsIlRkIiwiVGUiLCJUZiIsImJzdHIiLCJzZWVkIiwiQyIsIkwiLCJjaGFyQ29kZUF0IiwiYnVmIiwiQiIsInN0ciIsImQiLCJET19OT1RfRVhQT1JUX0NSQyIsImV4cG9ydHMiLCJfX19DU1NfTE9BREVSX0VYUE9SVF9fXyIsIm1vZHVsZSIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJtb2R1bGVzIiwibWVkaWFRdWVyeSIsImRlZHVwZSIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsImlzQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJTeW1ib2wiLCJpdGVyYXRvciIsIl9zIiwiX2UiLCJfYXJyIiwiX24iLCJfZCIsImRvbmUiLCJlcnIiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJvIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiYXJyMiIsIl9pdGVtIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInN0cmluZ2lmeSIsInNvdXJjZU1hcHBpbmciLCJzb3VyY2VVUkxzIiwic291cmNlcyIsInNvdXJjZSIsInNvdXJjZVJvb3QiLCJsIiwidCIsInIiLCJmIiwiZSIsInJlbW92ZUNoaWxkIiwiaCIsImRlZmF1bHRQcm9wcyIsInByb3BzIiwicmVmIiwiX19rIiwiX18iLCJfX2IiLCJfX2UiLCJfX2QiLCJfX2MiLCJfX2giLCJfX3YiLCJ2bm9kZSIsIl8iLCJrIiwiYmFzZSIsImciLCJfX3IiLCJkZWJvdW5jZVJlbmRlcmluZyIsIl9fUCIsImoiLCJfX24iLCJvd25lclNWR0VsZW1lbnQiLCJ6IiwidyIsIkEiLCJOIiwiTSIsImFwcGVuZENoaWxkIiwibmV4dFNpYmxpbmciLCJpbnNlcnRCZWZvcmUiLCJIIiwiY3NzVGV4dCIsIkkiLCJjb250ZXh0VHlwZSIsIl9fRSIsInJlbmRlciIsIk8iLCJfX3MiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJjb21wb25lbnRXaWxsTW91bnQiLCJjb21wb25lbnREaWRNb3VudCIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJzaG91bGRDb21wb25lbnRVcGRhdGUiLCJjb21wb25lbnRXaWxsVXBkYXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiZ2V0Q2hpbGRDb250ZXh0IiwiZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUiLCJkaWZmZWQiLCJsb2NhbE5hbWUiLCJjcmVhdGVUZXh0Tm9kZSIsImNyZWF0ZUVsZW1lbnROUyIsImlzIiwiY2hpbGROb2RlcyIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiY2hlY2tlZCIsInVubW91bnQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIlAiLCJmaXJzdENoaWxkIiwiUyIsInEiLCJDb25zdW1lciIsIlByb3ZpZGVyIiwic3BsaWNlIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRDYXRjaCIsIl9fc291cmNlIiwiX19zZWxmIiwibWVtbyIsImlzT2xkSUUiLCJhbGwiLCJhdG9iIiwiZ2V0VGFyZ2V0Iiwic3R5bGVUYXJnZXQiLCJIVE1MSUZyYW1lRWxlbWVudCIsImNvbnRlbnREb2N1bWVudCIsImhlYWQiLCJzdHlsZXNJbkRvbSIsImdldEluZGV4QnlJZGVudGlmaWVyIiwiaWRlbnRpZmllciIsIm1vZHVsZXNUb0RvbSIsImlkQ291bnRNYXAiLCJpZGVudGlmaWVycyIsImNvdW50IiwibWVkaWEiLCJzb3VyY2VNYXAiLCJyZWZlcmVuY2VzIiwidXBkYXRlciIsImFkZFN0eWxlIiwiaW5zZXJ0U3R5bGVFbGVtZW50Iiwibm9uY2UiLCJpbnNlcnQiLCJ0ZXh0U3RvcmUiLCJyZXBsYWNlVGV4dCIsInJlcGxhY2VtZW50IiwiYXBwbHlUb1NpbmdsZXRvblRhZyIsInN0eWxlU2hlZXQiLCJjc3NOb2RlIiwiYXBwbHlUb1RhZyIsInNpbmdsZXRvbiIsInNpbmdsZXRvbkNvdW50ZXIiLCJzdHlsZUluZGV4IiwiYmluZCIsInJlbW92ZVN0eWxlRWxlbWVudCIsIm5ld09iaiIsImxhc3RJZGVudGlmaWVycyIsIm5ld0xpc3QiLCJuZXdMYXN0SWRlbnRpZmllcnMiLCJfaW5kZXgiLCJNeU1vZGFsIiwiQ29tcG9uZW50IiwiY3JlYXRlUmVmIiwiZGlzbWlzc0hhbmRsZXIiLCJjbGFzcyIsInRhYkluZGV4IiwiYnV0dG9ucyIsImNsYXNzZXMiLCJwcmlvcml0eSIsIm9uQ2xpY2siLCJjbGlja0hhbmRsZXIiLCJ1cmwiLCJwcm90b2NvbHMiLCJjcmVhdGUiLCJDb25uZWN0aW9uIiwiYmFyZSIsIldlYlNvY2tldCIsInNlbmQiLCJDT05ORUNUSU5HIiwiT1BFTiIsIm9uT3BlbiIsIm9ub3BlbiIsIm9uUmVjZWl2ZSIsIm9ubWVzc2FnZSIsIm9uQ2xvc2UiLCJvbmNsb3NlIiwibXNnSW5wdXRVbmtub3duIiwibXNnSW5wdXQiLCJtc2dQaW5nIiwibXNnUmVzaXplVGVybWluYWwiLCJtc2dTZXRFbmNvZGluZyIsIm1zZ1Vua25vd25PdXRwdXQiLCJtc2dPdXRwdXQiLCJtc2dQb25nIiwibXNnU2V0V2luZG93VGl0bGUiLCJtc2dTZXRQcmVmZXJlbmNlcyIsIm1zZ1NldFJlY29ubmVjdCIsIm1zZ1NldEJ1ZmZlclNpemUiLCJ0ZXJtIiwiY29ubmVjdGlvbkZhY3RvcnkiLCJjb25uZWN0aW9uIiwiYXV0aFRva2VuIiwicmVjb25uZWN0IiwiYnVmU2l6ZSIsInBpbmdUaW1lciIsInJlY29ubmVjdFRpbWVvdXQiLCJzZXR1cCIsInRlcm1JbmZvIiwiaW5mbyIsImluaXRpYWxpemVDb25uZWN0aW9uIiwib25SZXNpemUiLCJjb2x1bW5zIiwicm93cyIsInNlbmRSZXNpemVUZXJtaW5hbCIsInNlbmRTZXRFbmNvZGluZyIsIm9uSW5wdXQiLCJpbnB1dCIsInNlbmRJbnB1dCIsInNlbmRQaW5nIiwicGF5bG9hZCIsIm91dHB1dCIsIlVpbnQ4QXJyYXkiLCJzZXRXaW5kb3dUaXRsZSIsInByZWZlcmVuY2VzIiwic2V0UHJlZmVyZW5jZXMiLCJhdXRvUmVjb25uZWN0IiwibG9nIiwic2hvd01lc3NhZ2UiLCJBcmd1bWVudHMiLCJBdXRoVG9rZW4iLCJkYXRhU3RyaW5nIiwiZWZmZWN0aXZlQnVmZmVyU2l6ZSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIm1heENodW5rU2l6ZSIsImNlaWwiLCJpbnB1dENodW5rIiwic3Vic3RyaW5nIiwiY29sbXVucyIsImVuY29kaW5nIiwicmVzaXplTGlzdGVuZXIiLCJtZXNzYWdlIiwibWVzc2FnZVRpbWVvdXQiLCJtZXNzYWdlVGltZXIiLCJvblJlc2l6ZUhhbmRsZXIiLCJvbkRhdGFIYW5kbGVyIiwiZml0QWRkT24iLCJ6bW9kZW1BZGRvbiIsInRvU2VydmVyIiwiZW5jb2RlciIsIlRlcm1pbmFsIiwiRml0QWRkb24iLCJaTW9kZW1BZGRvbiIsInRvVGVybWluYWwiLCJsb2FkQWRkb24iLCJXZWJMaW5rc0FkZG9uIiwiZml0Iiwic2Nyb2xsVG9Cb3R0b20iLCJjb2xzIiwiY29uc3VtZSIsImdldE1lc3NhZ2UiLCJzaG93TWVzc2FnZUVsZW0iLCJyZW1vdmVNZXNzYWdlIiwiV2ViZ2xBZGRvbiIsInNldE9wdGlvbiIsIlRleHRFbmNvZGVyIiwib25EYXRhIiwiZW5jb2RlIiwiY2xlYXIiLCJkaXNhYmxlU3RkaW4iLCJlbmFibGVTdGRpbiIsIlByb2dyZXNzIiwibm93IiwicGVyY2VudGFnZSIsInRvRml4ZWQiLCJyb2xlIiwic2VudHJ5IiwiaW5pdCIsInByZXBlbmQiLCJ0ZXJtaW5hbCIsIlNlbnRyeSIsImRldGVjdGlvbiIsIm9uRGV0ZWN0IiwienNlc3Npb24iLCJjb25maXJtIiwieGZlciIsIm9uT2ZmZXIiLCJTZW5kRmlsZU1vZGFsIiwic2Vzc2lvbiIsIlJlY2VpdmVGaWxlTW9kYWwiLCJvbkZpbmlzaCIsImFjY2VwdCIsInRpbWVySUQiLCJwYXlsb2FkcyIsIkJyb3dzZXIiLCJzYXZlX3RvX2Rpc2siLCJnZXRfZGV0YWlscyIsImZpbmlzaCIsInByb2dyZXNzIiwiZ2V0X29mZnNldCIsInNraXAiLCJ0b0xvY2FsZVN0cmluZyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZpbGVQaWNrZXJSZWYiLCJzZW5kX2ZpbGVzIiwiZmlsZXMiLCJvbl9vZmZlcl9yZXNwb25zZSIsImNhdGNoIiwiZm9yIiwibXVsdGlwbGUiLCJzZWxmIiwiX3Rlcm1pbmFsIiwicHJvcG9zZURpbWVuc2lvbnMiLCJfY29yZSIsIl9yZW5kZXJTZXJ2aWNlIiwicGFyZW50RWxlbWVudCIsImRpbWVuc2lvbnMiLCJhY3R1YWxDZWxsV2lkdGgiLCJhY3R1YWxDZWxsSGVpZ2h0Iiwic2Nyb2xsQmFyV2lkdGgiLCJlbnVtZXJhYmxlIiwidG9TdHJpbmdUYWciLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm9wZW5lciIsImxvY2F0aW9uIiwiaHJlZiIsIndhcm4iLCJfaGFuZGxlciIsIl91c2VMaW5rUHJvdmlkZXIiLCJtYXRjaEluZGV4IiwiX2xpbmtQcm92aWRlciIsInJlZ2lzdGVyTGlua1Byb3ZpZGVyIiwiV2ViTGlua1Byb3ZpZGVyIiwiX2xpbmtNYXRjaGVySWQiLCJyZWdpc3RlckxpbmtNYXRjaGVyIiwiZGVyZWdpc3RlckxpbmtNYXRjaGVyIiwiTGlua0NvbXB1dGVyIiwiX3JlZ2V4IiwicHJvdmlkZUxpbmtzIiwiY29tcHV0ZUxpbmsiLCJmbGFncyIsIl90cmFuc2xhdGVCdWZmZXJMaW5lVG9TdHJpbmdXaXRoV3JhcCIsImV4ZWMiLCJsYXN0SW5kZXgiLCJyYW5nZSIsImJ1ZmZlciIsImdldExpbmUiLCJpc1dyYXBwZWQiLCJ0cmFuc2xhdGVUb1N0cmluZyIsIkdseXBoUmVuZGVyZXIiLCJGbG9hdDMyQXJyYXkiLCJCWVRFU19QRVJfRUxFTUVOVCIsIl9jb2xvcnMiLCJfZ2wiLCJfZGltZW5zaW9ucyIsIl9hY3RpdmVCdWZmZXIiLCJfdmVydGljZXMiLCJhdHRyaWJ1dGVzQnVmZmVycyIsInNlbGVjdGlvbkF0dHJpYnV0ZXMiLCJ0aHJvd0lmRmFsc3kiLCJjcmVhdGVQcm9ncmFtIiwiX3Byb2dyYW0iLCJfcHJvamVjdGlvbkxvY2F0aW9uIiwiZ2V0VW5pZm9ybUxvY2F0aW9uIiwiX3Jlc29sdXRpb25Mb2NhdGlvbiIsIl90ZXh0dXJlTG9jYXRpb24iLCJfdmVydGV4QXJyYXlPYmplY3QiLCJjcmVhdGVWZXJ0ZXhBcnJheSIsImJpbmRWZXJ0ZXhBcnJheSIsImNyZWF0ZUJ1ZmZlciIsImJpbmRCdWZmZXIiLCJBUlJBWV9CVUZGRVIiLCJidWZmZXJEYXRhIiwiU1RBVElDX0RSQVciLCJlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSIsInZlcnRleEF0dHJpYlBvaW50ZXIiLCJGTE9BVCIsIkVMRU1FTlRfQVJSQVlfQlVGRkVSIiwiX2F0dHJpYnV0ZXNCdWZmZXIiLCJ2ZXJ0ZXhBdHRyaWJEaXZpc29yIiwiX2F0bGFzVGV4dHVyZSIsImNyZWF0ZVRleHR1cmUiLCJiaW5kVGV4dHVyZSIsIlRFWFRVUkVfMkQiLCJ0ZXhJbWFnZTJEIiwiUkdCQSIsIlVOU0lHTkVEX0JZVEUiLCJ0ZXhQYXJhbWV0ZXJpIiwiVEVYVFVSRV9XUkFQX1MiLCJDTEFNUF9UT19FREdFIiwiVEVYVFVSRV9XUkFQX1QiLCJCTEVORCIsImJsZW5kRnVuYyIsIlNSQ19BTFBIQSIsIk9ORV9NSU5VU19TUkNfQUxQSEEiLCJiZWdpbkZyYW1lIiwiX2F0bGFzIiwidXBkYXRlQ2VsbCIsIl91cGRhdGVDZWxsIiwiTlVMTF9DRUxMX0NPREUiLCJXSElURVNQQUNFX0NFTExfQ09ERSIsImdldFJhc3Rlcml6ZWRHbHlwaENvbWJpbmVkQ2hhciIsImdldFJhc3Rlcml6ZWRHbHlwaCIsInNjYWxlZENoYXJMZWZ0Iiwic2NhbGVkQ2hhclRvcCIsInNjYWxlZENhbnZhc1dpZHRoIiwic2NhbGVkQ2FudmFzSGVpZ2h0IiwidGV4dHVyZVBvc2l0aW9uQ2xpcFNwYWNlIiwic2l6ZUNsaXBTcGFjZSIsImZpbGwiLCJ1cGRhdGVTZWxlY3Rpb24iLCJzZWxlY3Rpb25PcGFxdWUiLCJyZ2JhIiwic2VsZWN0aW9uIiwiY29sdW1uU2VsZWN0TW9kZSIsInN0YXJ0Q29sIiwiZW5kQ29sIiwidmlld3BvcnRDYXBwZWRFbmRSb3ciLCJ2aWV3cG9ydENhcHBlZFN0YXJ0Um93IiwiX3VwZGF0ZVNlbGVjdGlvblJhbmdlIiwidmlld3BvcnRTdGFydFJvdyIsInZpZXdwb3J0RW5kUm93Iiwidmlld3BvcnRZIiwiUkVOREVSX01PREVMX0lORElDSUVTX1BFUl9DRUxMIiwiY2VsbHMiLCJSRU5ERVJfTU9ERUxfRkdfT0ZGU0VUIiwiQXR0cmlidXRlRGF0YSIsImZnIiwiYmciLCJSRU5ERVJfTU9ERUxfQkdfT0ZGU0VUIiwiZ2V0QmdDb2xvck1vZGUiLCJfZ2V0Q29sb3JGcm9tQW5zaUluZGV4IiwiZ2V0QmdDb2xvciIsInRvQ29sb3JSR0IiLCJiYWNrZ3JvdW5kIiwiQ09NQklORURfQ0hBUl9CSVRfTUFTSyIsImdldENlbGwiLCJnZXRDaGFycyIsImFuc2kiLCJjYW52YXMiLCJzZXRDb2xvcnMiLCJ1c2VQcm9ncmFtIiwibGluZUxlbmd0aHMiLCJTVFJFQU1fRFJBVyIsImhhc0NhbnZhc0NoYW5nZWQiLCJ1bmlmb3JtMWkiLCJhY3RpdmVUZXh0dXJlIiwiVEVYVFVSRTAiLCJjYWNoZUNhbnZhcyIsImdlbmVyYXRlTWlwbWFwIiwidW5pZm9ybU1hdHJpeDRmdiIsIlBST0pFQ1RJT05fTUFUUklYIiwidW5pZm9ybTJmIiwiZHJhd0VsZW1lbnRzSW5zdGFuY2VkIiwiVFJJQU5HTEVTIiwic2V0QXRsYXMiLCJzZXREaW1lbnNpb25zIiwiUmVjdGFuZ2xlUmVuZGVyZXIiLCJfdXBkYXRlQ2FjaGVkQ29sb3JzIiwiRFlOQU1JQ19EUkFXIiwiX3VwZGF0ZVZpZXdwb3J0UmVjdGFuZ2xlIiwiX2JnRmxvYXQiLCJfY29sb3JUb0Zsb2F0MzJBcnJheSIsIl9zZWxlY3Rpb25GbG9hdCIsIl9hZGRSZWN0YW5nbGVGbG9hdCIsInNjYWxlZENlbGxXaWR0aCIsInNjYWxlZENlbGxIZWlnaHQiLCJoYXNTZWxlY3Rpb24iLCJ1cGRhdGVCYWNrZ3JvdW5kcyIsIl91cGRhdGVSZWN0YW5nbGUiLCJmb3JlZ3JvdW5kIiwiZXhwYW5kRmxvYXQzMkFycmF5IiwiX2FkZFJlY3RhbmdsZSIsIlJlbmRlck1vZGVsIiwiVWludDMyQXJyYXkiLCJjbGVhclNlbGVjdGlvbiIsInNsaWNlRmFsbGJhY2siLCJfcHJlc2VydmVEcmF3aW5nQnVmZmVyIiwiX2NvbG9yTWFuYWdlciIsImNvbG9ycyIsIl9yZW5kZXJlciIsIldlYmdsUmVuZGVyZXIiLCJzZXRSZW5kZXJlciIsIl9jcmVhdGVSZW5kZXJlciIsInRleHR1cmVBdGxhcyIsImNsZWFyVGV4dHVyZUF0bGFzIiwiY2xlYXJDaGFyQXRsYXMiLCJfX2V4dGVuZHMiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9tb2RlbCIsIl93b3JrQ2VsbCIsIkNlbGxEYXRhIiwiX29uUmVxdWVzdFJlZHJhdyIsIkV2ZW50RW1pdHRlciIsIl9yZW5kZXJMYXllcnMiLCJMaW5rUmVuZGVyTGF5ZXIiLCJzY3JlZW5FbGVtZW50IiwiQ3Vyc29yUmVuZGVyTGF5ZXIiLCJzY2FsZWRDaGFyV2lkdGgiLCJzY2FsZWRDaGFySGVpZ2h0IiwiY2FudmFzV2lkdGgiLCJjYW52YXNIZWlnaHQiLCJfZGV2aWNlUGl4ZWxSYXRpbyIsIl91cGRhdGVEaW1lbnNpb25zIiwiX2NhbnZhcyIsImFudGlhbGlhcyIsImRlcHRoIiwicHJlc2VydmVEcmF3aW5nQnVmZmVyIiwiZ2V0Q29udGV4dCIsIl9yZWN0YW5nbGVSZW5kZXJlciIsIl9nbHlwaFJlbmRlcmVyIiwib25DaGFyU2l6ZUNoYW5nZWQiLCJfaXNBdHRhY2hlZCIsIl9jaGFyQXRsYXMiLCJfcmVmcmVzaENoYXJBdGxhcyIsIm9uRGV2aWNlUGl4ZWxSYXRpb0NoYW5nZSIsIm9uQmx1ciIsIm9uRm9jdXMiLCJvblNlbGVjdGlvbkNoYW5nZWQiLCJfdXBkYXRlU2VsZWN0aW9uTW9kZWwiLCJmaXJlIiwib25DdXJzb3JNb3ZlIiwib25PcHRpb25zQ2hhbmdlZCIsImFjcXVpcmVDaGFyQXRsYXMiLCJ3YXJtVXAiLCJjbGVhclRleHR1cmUiLCJfdXBkYXRlTW9kZWwiLCJyZWdpc3RlckNoYXJhY3RlckpvaW5lciIsImRlcmVnaXN0ZXJDaGFyYWN0ZXJKb2luZXIiLCJyZW5kZXJSb3dzIiwiX2NoYXJTaXplU2VydmljZSIsIm9uR3JpZENoYW5nZWQiLCJ5ZGlzcCIsImxpbmVzIiwibG9hZENlbGwiLCJnZXRDb2RlIiwiZ2V0T3B0aW9uIiwiRGlzcG9zYWJsZSIsImNyZWF0ZVNoYWRlciIsInNoYWRlclNvdXJjZSIsImNvbXBpbGVTaGFkZXIiLCJnZXRTaGFkZXJQYXJhbWV0ZXIiLCJDT01QSUxFX1NUQVRVUyIsImdldFNoYWRlckluZm9Mb2ciLCJkZWxldGVTaGFkZXIiLCJhdHRhY2hTaGFkZXIiLCJWRVJURVhfU0hBREVSIiwiRlJBR01FTlRfU0hBREVSIiwibGlua1Byb2dyYW0iLCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwiTElOS19TVEFUVVMiLCJnZXRQcm9ncmFtSW5mb0xvZyIsImRlbGV0ZVByb2dyYW0iLCJyZW1vdmVUZXJtaW5hbEZyb21DYWNoZSIsImdlbmVyYXRlQ29uZmlnIiwib3duZWRCeSIsImNvbmZpZ0VxdWFscyIsImF0bGFzIiwiV2ViZ2xDaGFyQXRsYXMiLCJpczI1NkNvbG9yIiwiY3Vyc29yIiwiY3Vyc29yQWNjZW50Iiwic2VsZWN0aW9uVHJhbnNwYXJlbnQiLCJjb250cmFzdENhY2hlIiwiZm9udEZhbWlseSIsImZvbnRTaXplIiwiZm9udFdlaWdodCIsImZvbnRXZWlnaHRCb2xkIiwiYWxsb3dUcmFuc3BhcmVuY3kiLCJkcmF3Qm9sZFRleHRJbkJyaWdodENvbG9ycyIsIm1pbmltdW1Db250cmFzdFJhdGlvIiwidGV4dHVyZVBvc2l0aW9uIiwiX2RpZFdhcm1VcCIsIl9jYWNoZU1hcCIsIl9jYWNoZU1hcENvbWJpbmVkIiwiX2N1cnJlbnRSb3dZIiwiX2N1cnJlbnRSb3dYIiwiX2N1cnJlbnRSb3dIZWlnaHQiLCJfd29ya0JvdW5kaW5nQm94IiwiX3dvcmtBdHRyaWJ1dGVEYXRhIiwiX2NhY2hlQ3R4IiwiYWxwaGEiLCJfdG1wQ2FudmFzIiwiX3RtcEN0eCIsIl9kb1dhcm1VcCIsIl9kcmF3VG9DYWNoZSIsIkRFRkFVTFRfQ09MT1IiLCJjbGVhclJlY3QiLCJfZ2V0QmFja2dyb3VuZENvbG9yIiwiX2dldEZvcmVncm91bmRDc3MiLCJfZ2V0TWluaW11bUNvbnRyYXN0Q3NzIiwiY2hhbm5lbHMiLCJ0b0NzcyIsInN1YnN0ciIsIl9yZXNvbHZlQmFja2dyb3VuZFJnYmEiLCJfcmVzb2x2ZUZvcmVncm91bmRSZ2JhIiwiZ2V0Q3NzIiwiZW5zdXJlQ29udHJhc3RSYXRpbyIsInNldENzcyIsInNhdmUiLCJpc0ludmlzaWJsZSIsImlzQm9sZCIsImlzSW52ZXJzZSIsImlzRGltIiwiaXNJdGFsaWMiLCJnZXRGZ0NvbG9yIiwiZ2V0RmdDb2xvck1vZGUiLCJnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24iLCJmaWxsU3R5bGUiLCJmaWxsUmVjdCIsImZvbnQiLCJ0ZXh0QmFzZWxpbmUiLCJnbG9iYWxBbHBoYSIsIkRJTV9PUEFDSVRZIiwiZmlsbFRleHQiLCJyZXN0b3JlIiwiUiIsImdldEltYWdlRGF0YSIsIl9maW5kR2x5cGhCb3VuZGluZ0JveCIsIl9jbGlwSW1hZ2VEYXRhIiwicHV0SW1hZ2VEYXRhIiwiVWludDhDbGFtcGVkQXJyYXkiLCJJbWFnZURhdGEiLCJCYXNlUmVuZGVyTGF5ZXIiLCJfY29udGFpbmVyIiwiX2FscGhhIiwiX3NjYWxlZENoYXJXaWR0aCIsIl9zY2FsZWRDaGFySGVpZ2h0IiwiX3NjYWxlZENlbGxXaWR0aCIsIl9zY2FsZWRDZWxsSGVpZ2h0IiwiX3NjYWxlZENoYXJMZWZ0IiwiX3NjYWxlZENoYXJUb3AiLCJ6SW5kZXgiLCJfaW5pdENhbnZhcyIsIl9jdHgiLCJfY2xlYXJBbGwiLCJfc2V0VHJhbnNwYXJlbmN5IiwiY2xvbmVOb2RlIiwicmVwbGFjZUNoaWxkIiwiX2ZpbGxDZWxscyIsIl9maWxsQm90dG9tTGluZUF0Q2VsbHMiLCJfZmlsbExlZnRMaW5lQXRDZWxsIiwiX3N0cm9rZVJlY3RBdENlbGwiLCJsaW5lV2lkdGgiLCJzdHJva2VSZWN0IiwiX2NsZWFyQ2VsbHMiLCJfZmlsbENoYXJUcnVlQ29sb3IiLCJfZ2V0Rm9udCIsIl9jbGlwUm93IiwiYmVnaW5QYXRoIiwiY2xpcCIsIl9vblJlcXVlc3RSZWZyZXNoUm93c0V2ZW50IiwiX2NlbGwiLCJfc3RhdGUiLCJpc0ZvY3VzZWQiLCJfY3Vyc29yUmVuZGVyZXJzIiwiYmFyIiwiX3JlbmRlckJhckN1cnNvciIsImJsb2NrIiwiX3JlbmRlckJsb2NrQ3Vyc29yIiwidW5kZXJsaW5lIiwiX3JlbmRlclVuZGVybGluZUN1cnNvciIsIl9jbGVhckN1cnNvciIsIl9jdXJzb3JCbGlua1N0YXRlTWFuYWdlciIsImN1cnNvclkiLCJyZXN1bWUiLCJfcmVuZGVyIiwicmVzdGFydEJsaW5rQW5pbWF0aW9uIiwiaXNQYXVzZWQiLCJfY29yZVNlcnZpY2UiLCJpc0N1cnNvckluaXRpYWxpemVkIiwiaXNDdXJzb3JIaWRkZW4iLCJiYXNlWSIsImN1cnNvclgiLCJfcmVuZGVyQmx1ckN1cnNvciIsImlzQ3Vyc29yVmlzaWJsZSIsInN0cm9rZVN0eWxlIiwiX3JlbmRlckNhbGxiYWNrIiwiX3Jlc3RhcnRJbnRlcnZhbCIsIl9ibGlua1N0YXJ0VGltZW91dCIsIl9ibGlua0ludGVydmFsIiwiX2FuaW1hdGlvbkZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJfYW5pbWF0aW9uVGltZVJlc3RhcnRlZCIsIkRhdGUiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ0ZXh0YXJlYSIsImhhc0ZvY3VzIiwibGlua2lmaWVyIiwib25TaG93TGlua1VuZGVybGluZSIsIl9vblNob3dMaW5rVW5kZXJsaW5lIiwib25IaWRlTGlua1VuZGVybGluZSIsIl9vbkhpZGVMaW5rVW5kZXJsaW5lIiwibGlua2lmaWVyMiIsIl9jbGVhckN1cnJlbnRMaW5rIiwieDEiLCJ5MSIsInkyIiwieDIiLCJJTlZFUlRFRF9ERUZBVUxUX0NPTE9SIiwiY29udHJhc3RSYXRpbyIsInRvUGFkZGVkSGV4IiwicmdiIiwiY29sb3IiLCJ0b1JnYmEiLCJibGVuZCIsImlzT3BhcXVlIiwidG9Db2xvciIsIm9wYXF1ZSIsInRvQ2hhbm5lbHMiLCJvcGFjaXR5IiwicG93IiwicmVsYXRpdmVMdW1pbmFuY2UiLCJyZWxhdGl2ZUx1bWluYW5jZTIiLCJyZWR1Y2VMdW1pbmFuY2UiLCJpbmNyZWFzZUx1bWluYW5jZSIsIkNIQVJfQVRMQVNfQ0VMTF9TUEFDSU5HIiwiZm9yd2FyZEV2ZW50IiwiX2xpc3RlbmVycyIsIl9kaXNwb3NlZCIsIl9ldmVudCIsImdldERpc3Bvc2VBcnJheURpc3Bvc2FibGUiLCJkaXNwb3NlQXJyYXkiLCJfZGlzcG9zYWJsZXMiLCJfaXNEaXNwb3NlZCIsInJlZ2lzdGVyIiwidW5yZWdpc3RlciIsImZpbGxGYWxsYmFjayIsIkV4dGVuZGVkQXR0cnMiLCJleHRlbmRlZCIsImZyb21Db2xvclJHQiIsImNsb25lIiwiaXNVbmRlcmxpbmUiLCJpc0JsaW5rIiwiaXNGZ1JHQiIsImlzQmdSR0IiLCJpc0ZnUGFsZXR0ZSIsImlzQmdQYWxldHRlIiwiaXNGZ0RlZmF1bHQiLCJpc0JnRGVmYXVsdCIsImlzQXR0cmlidXRlRGVmYXVsdCIsImhhc0V4dGVuZGVkQXR0cnMiLCJ1cGRhdGVFeHRlbmRlZCIsImlzRW1wdHkiLCJnZXRVbmRlcmxpbmVDb2xvciIsInVuZGVybGluZUNvbG9yIiwiZ2V0VW5kZXJsaW5lQ29sb3JNb2RlIiwiaXNVbmRlcmxpbmVDb2xvclJHQiIsImlzVW5kZXJsaW5lQ29sb3JQYWxldHRlIiwiaXNVbmRlcmxpbmVDb2xvckRlZmF1bHQiLCJnZXRVbmRlcmxpbmVTdHlsZSIsInVuZGVybGluZVN0eWxlIiwiY29tYmluZWREYXRhIiwiZnJvbUNoYXJEYXRhIiwic2V0RnJvbUNoYXJEYXRhIiwiaXNDb21iaW5lZCIsInN0cmluZ0Zyb21Db2RlUG9pbnQiLCJDSEFSX0RBVEFfQVRUUl9JTkRFWCIsIkNIQVJfREFUQV9DSEFSX0lOREVYIiwiQ0hBUl9EQVRBX1dJRFRIX0lOREVYIiwiZ2V0QXNDaGFyRGF0YSIsIldISVRFU1BBQ0VfQ0VMTF9XSURUSCIsIldISVRFU1BBQ0VfQ0VMTF9DSEFSIiwiTlVMTF9DRUxMX1dJRFRIIiwiTlVMTF9DRUxMX0NIQVIiLCJDSEFSX0RBVEFfQ09ERV9JTkRFWCIsIkRFRkFVTFRfQVRUUiIsIlV0ZjhUb1V0ZjMyIiwiU3RyaW5nVG9VdGYzMiIsInV0ZjMyVG9TdHJpbmciLCJfaW50ZXJpbSIsImRlY29kZSIsImludGVyaW0iLCJBY2Nlc3NpYmlsaXR5TWFuYWdlciIsIl9saXZlUmVnaW9uTGluZUNvdW50IiwiX2NoYXJzVG9Db25zdW1lIiwiX2NoYXJzVG9Bbm5vdW5jZSIsIl9hY2Nlc3NpYmlsaXR5VHJlZVJvb3QiLCJfcm93Q29udGFpbmVyIiwiX3Jvd0VsZW1lbnRzIiwiX2NyZWF0ZUFjY2Vzc2liaWxpdHlUcmVlTm9kZSIsIl90b3BCb3VuZGFyeUZvY3VzTGlzdGVuZXIiLCJfb25Cb3VuZGFyeUZvY3VzIiwiX2JvdHRvbUJvdW5kYXJ5Rm9jdXNMaXN0ZW5lciIsIl9yZWZyZXNoUm93c0RpbWVuc2lvbnMiLCJfcmVuZGVyUm93c0RlYm91bmNlciIsIlRpbWVCYXNlZERlYm91bmNlciIsIl9yZW5kZXJSb3dzIiwiX3JlZnJlc2hSb3dzIiwiX2xpdmVSZWdpb24iLCJpbnNlcnRBZGphY2VudEVsZW1lbnQiLCJfb25SZXNpemUiLCJvblJlbmRlciIsIm9uU2Nyb2xsIiwib25BMTF5Q2hhciIsIl9vbkNoYXIiLCJvbkxpbmVGZWVkIiwib25BMTF5VGFiIiwiX29uVGFiIiwib25LZXkiLCJfb25LZXkiLCJfY2xlYXJMaXZlUmVnaW9uIiwib25EaW1lbnNpb25zQ2hhbmdlIiwiX3NjcmVlbkRwck1vbml0b3IiLCJTY3JlZW5EcHJNb25pdG9yIiwic2V0TGlzdGVuZXIiLCJhZGREaXNwb3NhYmxlRG9tTGlzdGVuZXIiLCJyZW1vdmVFbGVtZW50RnJvbVBhcmVudCIsInBvcCIsInNoaWZ0IiwidW5zaGlmdCIsInNjcm9sbExpbmVzIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwiX3JlZnJlc2hSb3dEaW1lbnNpb25zIiwidG9vTXVjaE91dHB1dCIsImlzTWFjIiwidHJhbnNsYXRlQnVmZmVyTGluZVRvU3RyaW5nIiwiaW5uZXJUZXh0IiwiX2Fubm91bmNlQ2hhcmFjdGVycyIsImRlY1ByaXZhdGVNb2RlcyIsImJyYWNrZXRlZFBhc3RlTW9kZSIsInRyaWdnZXJEYXRhRXZlbnQiLCJjbGllbnRZIiwicmlnaHRDbGlja0hhbmRsZXIiLCJtb3ZlVGV4dEFyZWFVbmRlck1vdXNlQ3Vyc29yIiwicGFzdGUiLCJoYW5kbGVQYXN0ZUV2ZW50IiwiY29weUhhbmRsZXIiLCJicmFja2V0VGV4dEZvclBhc3RlIiwicHJlcGFyZVRleHRGb3JUZXJtaW5hbCIsImNsaXBib2FyZERhdGEiLCJzZXREYXRhIiwic2VsZWN0aW9uVGV4dCIsImdldERhdGEiLCJyaWdodENsaWNrU2VsZWN0Iiwic2VsZWN0IiwiQ29sb3JDb250cmFzdENhY2hlIiwiX2NvbG9yIiwiX3JnYmEiLCJzZXRDb2xvciIsImdldENvbG9yIiwiX19yZWFkIiwicmV0dXJuIiwiQ29sb3JNYW5hZ2VyIiwiREVGQVVMVF9BTlNJX0NPTE9SUyIsImZyZWV6ZSIsIl9saXRtdXNDb2xvciIsImNyZWF0ZUxpbmVhckdyYWRpZW50IiwiX2NvbnRyYXN0Q2FjaGUiLCJzZWxlY3Rpb25Gb3JlZ3JvdW5kIiwiX3VwZGF0ZVJlc3RvcmVDb2xvcnMiLCJvbk9wdGlvbnNDaGFuZ2UiLCJzZXRUaGVtZSIsIl9wYXJzZUNvbG9yIiwiYmxhY2siLCJyZWQiLCJncmVlbiIsInllbGxvdyIsImJsdWUiLCJtYWdlbnRhIiwiY3lhbiIsIndoaXRlIiwiYnJpZ2h0QmxhY2siLCJicmlnaHRSZWQiLCJicmlnaHRHcmVlbiIsImJyaWdodFllbGxvdyIsImJyaWdodEJsdWUiLCJicmlnaHRNYWdlbnRhIiwiYnJpZ2h0Q3lhbiIsImJyaWdodFdoaXRlIiwicmVzdG9yZUNvbG9yIiwiX3Jlc3RvcmVDb2xvcnMiLCJfX3ZhbHVlcyIsIl9fZGVjb3JhdGUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJSZWZsZWN0IiwiZGVjb3JhdGUiLCJfX3BhcmFtIiwiTW91c2Vab25lIiwiTGlua2lmaWVyIiwiX2J1ZmZlclNlcnZpY2UiLCJfbG9nU2VydmljZSIsIl91bmljb2RlU2VydmljZSIsIl9saW5rTWF0Y2hlcnMiLCJfbmV4dExpbmtNYXRjaGVySWQiLCJfb25MaW5rVG9vbHRpcCIsIl9yb3dzVG9MaW5raWZ5IiwiYXR0YWNoVG9Eb20iLCJfbW91c2Vab25lTWFuYWdlciIsImxpbmtpZnlSb3dzIiwiY2xlYXJBbGwiLCJfcm93c1RpbWVvdXRJZCIsIl9saW5raWZ5Um93cyIsIl90aW1lQmVmb3JlTGF0ZW5jeSIsImhhc05leHQiLCJfZG9MaW5raWZ5Um93IiwiZmlyc3QiLCJkZWJ1ZyIsInZhbGlkYXRpb25DYWxsYmFjayIsImhvdmVyVG9vbHRpcENhbGxiYWNrIiwidG9vbHRpcENhbGxiYWNrIiwiaG92ZXJMZWF2ZUNhbGxiYWNrIiwibGVhdmVDYWxsYmFjayIsIndpbGxMaW5rQWN0aXZhdGUiLCJfYWRkTGlua01hdGNoZXJUb0xpc3QiLCJzdHJpbmdJbmRleFRvQnVmZmVySW5kZXgiLCJnZXRGZyIsIl9hZGRMaW5rIiwiZ2V0U3RyaW5nQ2VsbFdpZHRoIiwiX2NyZWF0ZUxpbmtIb3ZlckV2ZW50IiwiSUJ1ZmZlclNlcnZpY2UiLCJJTG9nU2VydmljZSIsIklVbmljb2RlU2VydmljZSIsImhvdmVyQ2FsbGJhY2siLCJMaW5raWZpZXIyIiwiX2xpbmtQcm92aWRlcnMiLCJfbGlua0NhY2hlRGlzcG9zYWJsZXMiLCJfaXNNb3VzZU91dCIsIl9hY3RpdmVMaW5lIiwiX2N1cnJlbnRMaW5rIiwiX21vdXNlU2VydmljZSIsIl9vbk1vdXNlTW92ZSIsIl9oYW5kbGVNb3VzZURvd24iLCJfaGFuZGxlTW91c2VVcCIsIl9sYXN0TW91c2VFdmVudCIsIl9wb3NpdGlvbkZyb21Nb3VzZUV2ZW50IiwiX2xhc3RCdWZmZXJDZWxsIiwiX29uSG92ZXIiLCJfYXNrRm9yTGluayIsIl9saW5rQXRQb3NpdGlvbiIsImxpbmsiLCJfYWN0aXZlUHJvdmlkZXJSZXBsaWVzIiwiX2NoZWNrTGlua1Byb3ZpZGVyUmVzdWx0IiwiX3JlbW92ZUludGVyc2VjdGluZ0xpbmtzIiwiX2hhbmRsZU5ld0xpbmsiLCJfbW91c2VEb3duTGluayIsIl9saW5rTGVhdmUiLCJkZWNvcmF0aW9ucyIsInBvaW50ZXJDdXJzb3IiLCJpc0hvdmVyZWQiLCJfbGlua0hvdmVyIiwiZGVmaW5lUHJvcGVydGllcyIsIl9maXJlVW5kZXJsaW5lRXZlbnQiLCJvblJlbmRlcmVkVmlld3BvcnRDaGFuZ2UiLCJob3ZlciIsIl9jcmVhdGVMaW5rVW5kZXJsaW5lRXZlbnQiLCJsZWF2ZSIsImdldENvb3JkcyIsInByb21wdExhYmVsIiwiTW91c2Vab25lTWFuYWdlciIsIl9zY3JlZW5FbGVtZW50IiwiX3NlbGVjdGlvblNlcnZpY2UiLCJfb3B0aW9uc1NlcnZpY2UiLCJfem9uZXMiLCJfYXJlWm9uZXNBY3RpdmUiLCJfbGFzdEhvdmVyQ29vcmRzIiwiX2luaXRpYWxTZWxlY3Rpb25MZW5ndGgiLCJfb25Nb3VzZURvd24iLCJfbW91c2VNb3ZlTGlzdGVuZXIiLCJfbW91c2VMZWF2ZUxpc3RlbmVyIiwiX29uTW91c2VMZWF2ZSIsIl9jbGlja0xpc3RlbmVyIiwiX29uQ2xpY2siLCJfY3VycmVudFpvbmUiLCJwYWdlWCIsInBhZ2VZIiwiX2ZpbmRab25lRXZlbnRBdCIsIl90b29sdGlwVGltZW91dCIsIl9vblRvb2x0aXAiLCJyYXdPcHRpb25zIiwibGlua1Rvb2x0aXBIb3ZlckR1cmF0aW9uIiwiX2dldFNlbGVjdGlvbkxlbmd0aCIsIklNb3VzZVNlcnZpY2UiLCJJU2VsZWN0aW9uU2VydmljZSIsIklPcHRpb25zU2VydmljZSIsIlJlbmRlckRlYm91bmNlciIsIl9yZWZyZXNoQ2FsbGJhY2tzIiwiYWRkUmVmcmVzaENhbGxiYWNrIiwiX2lubmVyUmVmcmVzaCIsIl9yb3dDb3VudCIsIl9yb3dTdGFydCIsIl9yb3dFbmQiLCJfcnVuUmVmcmVzaENhbGxiYWNrcyIsIl9jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbyIsIl9saXN0ZW5lciIsImNsZWFyTGlzdGVuZXIiLCJfb3V0ZXJMaXN0ZW5lciIsIl91cGRhdGVEcHIiLCJfcmVzb2x1dGlvbk1lZGlhTWF0Y2hMaXN0IiwicmVtb3ZlTGlzdGVuZXIiLCJtYXRjaE1lZGlhIiwiYWRkTGlzdGVuZXIiLCJfX3NwcmVhZEFycmF5IiwiRSIsIkQiLCJGIiwiVyIsIlUiLCJicm93c2VyIiwiX2tleURvd25IYW5kbGVkIiwiX2tleURvd25TZWVuIiwiX2tleVByZXNzSGFuZGxlZCIsIl91bnByb2Nlc3NlZERlYWRLZXkiLCJfb25DdXJzb3JNb3ZlIiwiX29uUmVuZGVyIiwiX29uU2VsZWN0aW9uQ2hhbmdlIiwiX29uVGl0bGVDaGFuZ2UiLCJfb25CZWxsIiwiX29uRm9jdXMiLCJfb25CbHVyIiwiX29uQTExeUNoYXJFbWl0dGVyIiwiX29uQTExeVRhYkVtaXR0ZXIiLCJfc2V0dXAiLCJfaW5zdGFudGlhdGlvblNlcnZpY2UiLCJjcmVhdGVJbnN0YW5jZSIsIl9kZWNvcmF0aW9uU2VydmljZSIsIkRlY29yYXRpb25TZXJ2aWNlIiwic2V0U2VydmljZSIsIklEZWNvcmF0aW9uU2VydmljZSIsIl9pbnB1dEhhbmRsZXIiLCJvblJlcXVlc3RCZWxsIiwiYmVsbCIsIm9uUmVxdWVzdFJlZnJlc2hSb3dzIiwib25SZXF1ZXN0U2VuZEZvY3VzIiwiX3JlcG9ydEZvY3VzIiwib25SZXF1ZXN0UmVzZXQiLCJvblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydCIsIl9yZXBvcnRXaW5kb3dzT3B0aW9ucyIsIm9uQ29sb3IiLCJfaGFuZGxlQ29sb3JFdmVudCIsIm9uVGl0bGVDaGFuZ2UiLCJfYWZ0ZXJSZXNpemUiLCJjb3JlU2VydmljZSIsIkMwIiwiRVNDIiwidG9SZ2JTdHJpbmciLCJDMV9FU0NBUEVEIiwiU1QiLCJvblRoZW1lQ2hhbmdlIiwiX2N1c3RvbUtleUV2ZW50SGFuZGxlciIsImJ1ZmZlcnMiLCJwcmV2ZW50U2Nyb2xsIiwiX3VwZGF0ZU9wdGlvbnMiLCJtZWFzdXJlIiwic3luY1Njcm9sbEFyZWEiLCJvcHRpb25zU2VydmljZSIsInNjcmVlblJlYWRlck1vZGUiLCJfYWNjZXNzaWJpbGl0eU1hbmFnZXIiLCJzZXR1cFRhYlN0b3BzIiwiX3NldFRoZW1lIiwidGhlbWUiLCJfb25UZXh0QXJlYUZvY3VzIiwic2VuZEZvY3VzIiwidXBkYXRlQ3Vyc29yU3R5bGUiLCJfc2hvd0N1cnNvciIsIl9vblRleHRBcmVhQmx1ciIsIl9zeW5jVGV4dEFyZWEiLCJpc0N1cnNvckluVmlld3BvcnQiLCJfY29tcG9zaXRpb25IZWxwZXIiLCJpc0NvbXBvc2luZyIsInliYXNlIiwibGluZUhlaWdodCIsIl9pbml0R2xvYmFsIiwiX2JpbmRLZXlzIiwicmlnaHRDbGlja1NlbGVjdHNXb3JkIiwiaXNMaW51eCIsIl9rZXlVcCIsIl9rZXlEb3duIiwiX2tleVByZXNzIiwiY29tcG9zaXRpb25zdGFydCIsImNvbXBvc2l0aW9udXBkYXRlIiwiY29tcG9zaXRpb25lbmQiLCJfaW5wdXRFdmVudCIsInVwZGF0ZUNvbXBvc2l0aW9uRWxlbWVudHMiLCJfcXVldWVMaW5raWZpY2F0aW9uIiwiaXNDb25uZWN0ZWQiLCJfZG9jdW1lbnQiLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwiX3ZpZXdwb3J0RWxlbWVudCIsIl92aWV3cG9ydFNjcm9sbEFyZWEiLCJfaGVscGVyQ29udGFpbmVyIiwiQ29yZUJyb3dzZXJTZXJ2aWNlIiwiSUNvcmVCcm93c2VyU2VydmljZSIsIkNoYXJTaXplU2VydmljZSIsIklDaGFyU2l6ZVNlcnZpY2UiLCJfdGhlbWUiLCJvbk9wdGlvbkNoYW5nZSIsIl9jaGFyYWN0ZXJKb2luZXJTZXJ2aWNlIiwiQ2hhcmFjdGVySm9pbmVyU2VydmljZSIsIklDaGFyYWN0ZXJKb2luZXJTZXJ2aWNlIiwiUmVuZGVyU2VydmljZSIsIklSZW5kZXJTZXJ2aWNlIiwiX2NvbXBvc2l0aW9uVmlldyIsIkNvbXBvc2l0aW9uSGVscGVyIiwiX3NvdW5kU2VydmljZSIsIlNvdW5kU2VydmljZSIsIklTb3VuZFNlcnZpY2UiLCJNb3VzZVNlcnZpY2UiLCJWaWV3cG9ydCIsIm9uUmVxdWVzdFN5bmNTY3JvbGxCYXIiLCJTZWxlY3Rpb25TZXJ2aWNlIiwib25SZXF1ZXN0U2Nyb2xsTGluZXMiLCJhbW91bnQiLCJzdXBwcmVzc1Njcm9sbEV2ZW50Iiwib25TZWxlY3Rpb25DaGFuZ2UiLCJvblJlcXVlc3RSZWRyYXciLCJvbkxpbnV4TW91c2VTZWxlY3Rpb24iLCJfb25TY3JvbGwiLCJCdWZmZXJEZWNvcmF0aW9uUmVuZGVyZXIiLCJvbk1vdXNlRG93biIsImNvcmVNb3VzZVNlcnZpY2UiLCJhcmVNb3VzZUV2ZW50c0FjdGl2ZSIsIm92ZXJ2aWV3UnVsZXJXaWR0aCIsIl9vdmVydmlld1J1bGVyUmVuZGVyZXIiLCJPdmVydmlld1J1bGVyUmVuZGVyZXIiLCJiaW5kTW91c2UiLCJyZW5kZXJlclR5cGUiLCJSZW5kZXJlciIsIkRvbVJlbmRlcmVyIiwiZ2V0UmF3Qnl0ZUNvb3JkcyIsIm92ZXJyaWRlVHlwZSIsImdldExpbmVzU2Nyb2xsZWQiLCJkZWx0YVkiLCJ0cmlnZ2VyTW91c2VFdmVudCIsInJvdyIsImFjdGlvbiIsImN0cmwiLCJjdHJsS2V5IiwiYWx0IiwiYWx0S2V5IiwibW91c2V1cCIsIndoZWVsIiwibW91c2VkcmFnIiwibW91c2Vtb3ZlIiwiY2FuY2VsIiwib25Qcm90b2NvbENoYW5nZSIsImxvZ0xldmVsIiwiZXhwbGFpbkV2ZW50cyIsImFjdGl2ZVByb3RvY29sIiwic2hvdWxkRm9yY2VTZWxlY3Rpb24iLCJoYXNTY3JvbGxiYWNrIiwiYXBwbGljYXRpb25DdXJzb3JLZXlzIiwib25XaGVlbCIsIm9uVG91Y2hTdGFydCIsIm9uVG91Y2hNb3ZlIiwicmVmcmVzaFJvd3MiLCJzaG91bGRDb2x1bW5TZWxlY3QiLCJhdHRhY2hDdXN0b21LZXlFdmVudEhhbmRsZXIiLCJkZXJlZ2lzdGVyIiwibWFya2VycyIsImFkZE1hcmtlciIsIm5vcm1hbCIsInJlZ2lzdGVyRGVjb3JhdGlvbiIsInNldFNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsImdldFNlbGVjdGlvblBvc2l0aW9uIiwic3RhcnRDb2x1bW4iLCJzZWxlY3Rpb25TdGFydCIsInN0YXJ0Um93IiwiZW5kQ29sdW1uIiwic2VsZWN0aW9uRW5kIiwiZW5kUm93Iiwic2VsZWN0QWxsIiwic2VsZWN0TGluZXMiLCJtYWNPcHRpb25Jc01ldGEiLCJrZXlkb3duIiwiZXZhbHVhdGVLZXlib2FyZEV2ZW50IiwiX2lzVGhpcmRMZXZlbFNoaWZ0IiwibWV0YUtleSIsIkVUWCIsIkNSIiwiZG9tRXZlbnQiLCJpc1dpbmRvd3MiLCJnZXRNb2RpZmllclN0YXRlIiwia2V5Q29kZSIsImNoYXJDb2RlIiwid2hpY2giLCJpbnB1dFR5cGUiLCJjb21wb3NlZCIsIl9zb3VuZEJlbGwiLCJwbGF5QmVsbFNvdW5kIiwiaGFzVmFsaWRTaXplIiwiY2xlYXJBbGxNYXJrZXJzIiwiZ2V0QmxhbmtMaW5lIiwiREVGQVVMVF9BVFRSX0RBVEEiLCJXaW5kb3dzT3B0aW9uc1JlcG9ydFR5cGUiLCJHRVRfV0lOX1NJWkVfUElYRUxTIiwiR0VUX0NFTExfU0laRV9QSVhFTFMiLCJjYW5jZWxFdmVudHMiLCJfdmlzdWFsQmVsbCIsImJlbGxTdHlsZSIsIkNvcmVUZXJtaW5hbCIsIl9kZWJvdW5jZVRocmVzaG9sZE1TIiwiX2xhc3RSZWZyZXNoTXMiLCJfYWRkaXRpb25hbFJlZnJlc2hSZXF1ZXN0ZWQiLCJfcmVmcmVzaFRpbWVvdXRJRCIsIl9zY3JvbGxMaW5lcyIsIl9zY3JvbGxBcmVhIiwiX2N1cnJlbnRTY2FsZWRDZWxsSGVpZ2h0IiwiX2xhc3RSZWNvcmRlZEJ1ZmZlckxlbmd0aCIsIl9sYXN0UmVjb3JkZWRWaWV3cG9ydEhlaWdodCIsIl9sYXN0UmVjb3JkZWRCdWZmZXJIZWlnaHQiLCJfbGFzdFRvdWNoWSIsIl9sYXN0U2Nyb2xsVG9wIiwiX3doZWVsUGFydGlhbFNjcm9sbCIsIl9yZWZyZXNoQW5pbWF0aW9uRnJhbWUiLCJfaWdub3JlTmV4dFNjcm9sbEV2ZW50Iiwib25CdWZmZXJBY3RpdmF0ZSIsImFjdGl2ZUJ1ZmZlciIsIl9yZW5kZXJEaW1lbnNpb25zIiwiYmFja2dyb3VuZENvbG9yIiwiX3JlZnJlc2giLCJfYnViYmxlU2Nyb2xsIiwiX2dldFBpeGVsc1Njcm9sbGVkIiwiX2FwcGx5U2Nyb2xsTW9kaWZpZXIiLCJkZWx0YU1vZGUiLCJXaGVlbEV2ZW50IiwiRE9NX0RFTFRBX0xJTkUiLCJET01fREVMVEFfUEFHRSIsIkRPTV9ERUxUQV9QSVhFTCIsImZhc3RTY3JvbGxNb2RpZmllciIsImZhc3RTY3JvbGxTZW5zaXRpdml0eSIsInNjcm9sbFNlbnNpdGl2aXR5IiwiX2RlY29yYXRpb25FbGVtZW50cyIsIl9hbHRCdWZmZXJJc0FjdGl2ZSIsIl9kaW1lbnNpb25zQ2hhbmdlZCIsIl9xdWV1ZVJlZnJlc2giLCJvbkRlY29yYXRpb25SZWdpc3RlcmVkIiwib25EZWNvcmF0aW9uUmVtb3ZlZCIsIl9yZW1vdmVEZWNvcmF0aW9uIiwicmVmcmVzaERlY29yYXRpb25zIiwiX3JlbmRlckRlY29yYXRpb24iLCJfcmVmcmVzaFN0eWxlIiwiX3JlZnJlc2hYUG9zaXRpb24iLCJfY3JlYXRlRWxlbWVudCIsIm1hcmtlciIsImxpbmUiLCJvblJlbmRlckVtaXR0ZXIiLCJvbkRpc3Bvc2UiLCJDb2xvclpvbmVTdG9yZSIsIl96b25lUG9vbCIsIl96b25lUG9vbEluZGV4IiwiX2xpbmVQYWRkaW5nIiwiZnVsbCIsImFkZERlY29yYXRpb24iLCJvdmVydmlld1J1bGVyT3B0aW9ucyIsIl9saW5lSW50ZXJzZWN0c1pvbmUiLCJfbGluZUFkamFjZW50VG9ab25lIiwiX2FkZExpbmVUb1pvbmUiLCJzdGFydEJ1ZmZlckxpbmUiLCJlbmRCdWZmZXJMaW5lIiwic2V0UGFkZGluZyIsIl9jb2xvclpvbmVTdG9yZSIsIl9zaG91bGRVcGRhdGVEaW1lbnNpb25zIiwiX3Nob3VsZFVwZGF0ZUFuY2hvciIsIl9sYXN0S25vd25CdWZmZXJMZW5ndGgiLCJfcmVmcmVzaENhbnZhc0RpbWVuc2lvbnMiLCJfcmVnaXN0ZXJEZWNvcmF0aW9uTGlzdGVuZXJzIiwiX3JlZ2lzdGVyQnVmZmVyQ2hhbmdlTGlzdGVuZXJzIiwiX3JlZ2lzdGVyRGltZW5zaW9uQ2hhbmdlTGlzdGVuZXJzIiwiX3JlZnJlc2hEcmF3SGVpZ2h0Q29uc3RhbnRzIiwiX3JlZnJlc2hDb2xvclpvbmVQYWRkaW5nIiwiX2NvbnRhaW5lckhlaWdodCIsIl9yZWZyZXNoRHJhd0NvbnN0YW50cyIsIl93aWR0aCIsIl9yZWZyZXNoRGVjb3JhdGlvbnMiLCJ6b25lcyIsIl9yZW5kZXJDb2xvclpvbmUiLCJfdGV4dGFyZWEiLCJfaXNDb21wb3NpbmciLCJfaXNTZW5kaW5nQ29tcG9zaXRpb24iLCJfY29tcG9zaXRpb25Qb3NpdGlvbiIsIl9kYXRhQWxyZWFkeVNlbnQiLCJfZmluYWxpemVDb21wb3NpdGlvbiIsIl9oYW5kbGVBbnlUZXh0YXJlYUNoYW5nZXMiLCJJQ29yZVNlcnZpY2UiLCJnZXRDb29yZHNSZWxhdGl2ZVRvRWxlbWVudCIsIm1vdmVUb0NlbGxTZXF1ZW5jZSIsIl9fYXNzaWduIiwiX2FkZG9uTWFuYWdlciIsIkFkZG9uTWFuYWdlciIsIl9wdWJsaWNPcHRpb25zIiwiX2NoZWNrUmVhZG9ubHlPcHRpb25zIiwiX2NoZWNrUHJvcG9zZWRBcGkiLCJhbGxvd1Byb3Bvc2VkQXBpIiwib25CZWxsIiwib25CaW5hcnkiLCJvbldyaXRlUGFyc2VkIiwiX3BhcnNlciIsIlBhcnNlckFwaSIsIlVuaWNvZGVBcGkiLCJfYnVmZmVyIiwiQnVmZmVyTmFtZXNwYWNlQXBpIiwiYXBwbGljYXRpb25DdXJzb3JLZXlzTW9kZSIsImFwcGxpY2F0aW9uS2V5cGFkTW9kZSIsImFwcGxpY2F0aW9uS2V5cGFkIiwiaW5zZXJ0TW9kZSIsIm1vZGVzIiwibW91c2VUcmFja2luZ01vZGUiLCJvcmlnaW5Nb2RlIiwib3JpZ2luIiwicmV2ZXJzZVdyYXBhcm91bmRNb2RlIiwicmV2ZXJzZVdyYXBhcm91bmQiLCJzZW5kRm9jdXNNb2RlIiwid3JhcGFyb3VuZE1vZGUiLCJ3cmFwYXJvdW5kIiwiX3ZlcmlmeUludGVnZXJzIiwicmVnaXN0ZXJNYXJrZXIiLCJfdmVyaWZ5UG9zaXRpdmVJbnRlZ2VycyIsInNjcm9sbFBhZ2VzIiwic2Nyb2xsVG9Ub3AiLCJzY3JvbGxUb0xpbmUiLCJ3cml0ZVV0ZjgiLCJ3cml0ZWxuIiwiaXNOYU4iLCJfcmVuZGVyZXJJZCIsIl9jb2x1bW5TZWxlY3RNb2RlIiwiX2N1cnJlbnRHbHlwaElkZW50aWZpZXIiLCJjaGFycyIsImJvbGQiLCJkaW0iLCJpdGFsaWMiLCJfc2VsZWN0aW9uU3RhcnQiLCJfc2VsZWN0aW9uRW5kIiwiX2ZpbGxNaWRkbGVMaW5lQXRDZWxscyIsIlRFWFRfQkFTRUxJTkUiLCJjdXN0b21HbHlwaHMiLCJ0cnlEcmF3Q3VzdG9tQ2hhciIsIl9kcmF3Q2hhcnMiLCJfZ2V0Q29udHJhc3RDb2xvciIsIl9kcmF3VW5jYWNoZWRDaGFycyIsImdldERlY29yYXRpb25zQXRDZWxsIiwiYmFja2dyb3VuZENvbG9yUkdCIiwiZm9yZWdyb3VuZENvbG9yUkdCIiwiZHJhdyIsImxheWVyIiwiX2lzQ2VsbEluU2VsZWN0aW9uIiwiZXhjbHVkZUZyb21Db250cmFzdFJhdGlvRGVtYW5kcyIsIl9jb3JlQnJvd3NlclNlcnZpY2UiLCJjdXJzb3JCbGluayIsImN1cnNvclN0eWxlIiwiY3Vyc29yV2lkdGgiLCJLIiwiRyIsIlYiLCJYIiwiWiIsIlkiLCJKIiwiUSIsImVlIiwidGUiLCJyZSIsImllIiwibmUiLCJvZSIsInNlIiwiYWUiLCJjZSIsImxlIiwiaGUiLCJ1ZSIsImZlIiwiZGUiLCJwZSIsInZlIiwieWUiLCJnZSIsIm1lIiwiYmUiLCJTZSIsIkNlIiwid2UiLCJMZSIsIkVlIiwieGUiLCJSZSIsImtlIiwiTWUiLCJBZSIsIk9lIiwiRGUiLCJCZSIsIlBlIiwiSWUiLCJIZSIsImplIiwiRmUiLCJXZSIsIlVlIiwicWUiLCJOZSIsInplIiwiS2UiLCJHZSIsIlZlIiwiWGUiLCJaZSIsIlllIiwiSmUiLCIkZSIsIlFlIiwiZXQiLCJ0dCIsInJ0IiwiaXQiLCJudCIsIm90Iiwic3QiLCJhdCIsImN0IiwibHQiLCJodCIsInV0IiwiZnQiLCJfdCIsImR0IiwicHQiLCJ2dCIsInl0IiwiZ3QiLCJtdCIsImJ0IiwiU3QiLCJDdCIsInd0IiwiTHQiLCJwb3dlcmxpbmVEZWZpbml0aW9ucyIsImJveERyYXdpbmdEZWZpbml0aW9ucyIsImJsb2NrRWxlbWVudERlZmluaXRpb25zIiwiRXQiLCJ4dCIsImhvcml6b250YWxQYWRkaW5nIiwiUnQiLCJjcmVhdGVQYXR0ZXJuIiwiTXQiLCJBdCIsInN0cm9rZSIsImNsb3NlUGF0aCIsImt0IiwiYmV6aWVyQ3VydmVUbyIsImxpbmVUbyIsIm1vdmVUbyIsIkdyaWRDYWNoZSIsImNhY2hlIiwiX2lkIiwiVGV4dFJlbmRlckxheWVyIiwiU2VsZWN0aW9uUmVuZGVyTGF5ZXIiLCJfcnVuT3BlcmF0aW9uIiwibGV0dGVyU3BhY2luZyIsIklJbnN0YW50aWF0aW9uU2VydmljZSIsImlzUG93ZXJsaW5lR2x5cGgiLCJfY2xlYXJTdGF0ZSIsIl9kaWRTdGF0ZUNoYW5nZSIsIl9hcmVDb29yZGluYXRlc0VxdWFsIiwiX2NoYXJhY3RlcldpZHRoIiwiX2NoYXJhY3RlckZvbnQiLCJfY2hhcmFjdGVyT3ZlcmxhcENhY2hlIiwiX2ZvckVhY2hDZWxsIiwiZ2V0Sm9pbmVkQ2hhcmFjdGVycyIsIkpvaW5lZENlbGxEYXRhIiwiX2lzT3ZlcmxhcHBpbmciLCJnZXRDb2RlUG9pbnQiLCJfZHJhd0JhY2tncm91bmQiLCJfZHJhd0ZvcmVncm91bmQiLCJpc1N0cmlrZXRocm91Z2giLCJtZWFzdXJlVGV4dCIsIkJhc2VDaGFyQXRsYXMiLCJEeW5hbWljQ2hhckF0bGFzIiwiaXNMZWdhY3lFZGdlIiwiTm9uZUNoYXJBdGxhcyIsImdldEdseXBoQ2FjaGVLZXkiLCJfZHJhd1RvQ2FjaGVDb3VudCIsIl9nbHlwaHNXYWl0aW5nT25CaXRtYXAiLCJfYml0bWFwQ29tbWl0VGltZW91dCIsIl9iaXRtYXAiLCJfY2FjaGVDYW52YXMiLCJfaGVpZ2h0IiwiTFJVTWFwIiwicHJlYWxsb2MiLCJfY2FuQ2FjaGUiLCJfZHJhd0Zyb21DYWNoZSIsImNhcGFjaXR5IiwicGVlayIsIl90b0Nvb3JkaW5hdGVYIiwiX3RvQ29vcmRpbmF0ZVkiLCJkcmF3SW1hZ2UiLCJpbkJpdG1hcCIsIl9nZXRGb3JlZ3JvdW5kQ29sb3IiLCJfYWRkR2x5cGhUb0JpdG1hcCIsImlzU2FmYXJpIiwiX2dlbmVyYXRlQml0bWFwIiwiY3JlYXRlSW1hZ2VCaXRtYXAiLCJfbWFwIiwiX2hlYWQiLCJfdGFpbCIsIl9ub2RlUG9vbCIsIl91bmxpbmtOb2RlIiwiX2FwcGVuZE5vZGUiLCJwZWVrVmFsdWUiLCJfbGlua2lmaWVyIiwiX2xpbmtpZmllcjIiLCJfdGVybWluYWxDbGFzcyIsIl9yZWZyZXNoUm93RWxlbWVudHMiLCJfc2VsZWN0aW9uQ29udGFpbmVyIiwiX2luamVjdENzcyIsIl9yb3dGYWN0b3J5IiwiRG9tUmVuZGVyZXJSb3dGYWN0b3J5IiwiX29uTGlua0hvdmVyIiwiX29uTGlua0xlYXZlIiwiX3RoZW1lU3R5bGVFbGVtZW50IiwiX2RpbWVuc2lvbnNTdHlsZUVsZW1lbnQiLCJfdGVybWluYWxTZWxlY3RvciIsIkJPTERfQ0xBU1MiLCJJVEFMSUNfQ0xBU1MiLCJDVVJTT1JfQ0xBU1MiLCJDVVJTT1JfU1RZTEVfQkxPQ0tfQ0xBU1MiLCJDVVJTT1JfQkxJTktfQ0xBU1MiLCJDVVJTT1JfU1RZTEVfQkFSX0NMQVNTIiwiQ1VSU09SX1NUWUxFX1VOREVSTElORV9DTEFTUyIsIl9jcmVhdGVTZWxlY3Rpb25FbGVtZW50IiwiY3JlYXRlUm93IiwiX3NldENlbGxVbmRlcmxpbmUiLCJ0ZXh0RGVjb3JhdGlvbiIsIlNUUklLRVRIUk9VR0hfQ0xBU1MiLCJVTkRFUkxJTkVfQ0xBU1MiLCJESU1fQ0xBU1MiLCJfYWRkU3R5bGUiLCJfYXBwbHlNaW5pbXVtQ29udHJhc3QiLCJTZWxlY3Rpb25Nb2RlbCIsImlzU2VsZWN0QWxsQWN0aXZlIiwic2VsZWN0aW9uU3RhcnRMZW5ndGgiLCJhcmVTZWxlY3Rpb25WYWx1ZXNSZXZlcnNlZCIsIm9uVHJpbSIsIl9vbkNoYXJTaXplQ2hhbmdlIiwiX21lYXN1cmVTdHJhdGVneSIsIl9wYXJlbnRFbGVtZW50IiwiX3Jlc3VsdCIsIl9tZWFzdXJlRWxlbWVudCIsIl9jaGFyYWN0ZXJKb2luZXJzIiwiX25leHRDaGFyYWN0ZXJKb2luZXJJZCIsImdldEJnIiwiZ2V0VHJpbW1lZExlbmd0aCIsIl9nZXRKb2luZWRSYW5nZXMiLCJfbWVyZ2VSYW5nZXMiLCJfc3RyaW5nUmFuZ2VzVG9DZWxsUmFuZ2VzIiwiZ2V0U3RyaW5nIiwiX2lzUGF1c2VkIiwiX25lZWRzRnVsbFJlZnJlc2giLCJfaXNOZXh0UmVuZGVyUmVkcmF3T25seSIsIl9uZWVkc1NlbGVjdGlvblJlZnJlc2giLCJfY2FudmFzV2lkdGgiLCJfY2FudmFzSGVpZ2h0IiwiX3NlbGVjdGlvblN0YXRlIiwiX29uRGltZW5zaW9uc0NoYW5nZSIsIl9vblJlbmRlcmVkVmlld3BvcnRDaGFuZ2UiLCJfb25SZWZyZXNoUmVxdWVzdCIsIl9yZW5kZXJEZWJvdW5jZXIiLCJfZnVsbFJlZnJlc2giLCJfaGFuZGxlT3B0aW9uc0NoYW5nZWQiLCJvbkNoYXJTaXplQ2hhbmdlIiwiX29uSW50ZXJzZWN0aW9uQ2hhbmdlIiwiaW50ZXJzZWN0aW9uUmF0aW8iLCJfZmlyZU9uQ2FudmFzUmVzaXplIiwiX2RyYWdTY3JvbGxBbW91bnQiLCJfZW5hYmxlZCIsIl9tb3VzZURvd25UaW1lU3RhbXAiLCJfb2xkSGFzU2VsZWN0aW9uIiwiX29sZFNlbGVjdGlvblN0YXJ0IiwiX29sZFNlbGVjdGlvbkVuZCIsIl9vbkxpbnV4TW91c2VTZWxlY3Rpb24iLCJfb25SZWRyYXdSZXF1ZXN0IiwiX29uUmVxdWVzdFNjcm9sbExpbmVzIiwiX21vdXNlVXBMaXN0ZW5lciIsIl9vbk1vdXNlVXAiLCJvblVzZXJJbnB1dCIsIl90cmltTGlzdGVuZXIiLCJfb25UcmltIiwiX29uQnVmZmVyQWN0aXZhdGUiLCJfYWN0aXZlU2VsZWN0aW9uTW9kZSIsIl9yZW1vdmVNb3VzZURvd25MaXN0ZW5lcnMiLCJmaW5hbFNlbGVjdGlvblN0YXJ0IiwiZmluYWxTZWxlY3Rpb25FbmQiLCJfaXNDbGlja0luU2VsZWN0aW9uIiwiX2dldE1vdXNlQnVmZmVyQ29vcmRzIiwiX2FyZUNvb3Jkc0luU2VsZWN0aW9uIiwiaXNDZWxsSW5TZWxlY3Rpb24iLCJfc2VsZWN0V29yZEF0Q3Vyc29yIiwiY3VycmVudExpbmsiLCJnZXRSYW5nZUxlbmd0aCIsIl9zZWxlY3RXb3JkQXQiLCJfZ2V0TW91c2VFdmVudFNjcm9sbEFtb3VudCIsIm1hY09wdGlvbkNsaWNrRm9yY2VzU2VsZWN0aW9uIiwidGltZVN0YW1wIiwiX29uSW5jcmVtZW50YWxDbGljayIsImRldGFpbCIsIl9vblNpbmdsZUNsaWNrIiwiX29uRG91YmxlQ2xpY2siLCJfb25UcmlwbGVDbGljayIsIl9hZGRNb3VzZURvd25MaXN0ZW5lcnMiLCJfZHJhZ1Njcm9sbEludGVydmFsVGltZXIiLCJfZHJhZ1Njcm9sbCIsImhhc1dpZHRoIiwiX3NlbGVjdExpbmVBdCIsIl9zZWxlY3RUb1dvcmRBdCIsIl9maXJlRXZlbnRJZlNlbGVjdGlvbkNoYW5nZWQiLCJfZmlyZU9uU2VsZWN0aW9uQ2hhbmdlIiwiX2NvbnZlcnRWaWV3cG9ydENvbFRvQ2hhcmFjdGVySW5kZXgiLCJfZ2V0V29yZEF0IiwiX2lzQ2hhcldvcmRTZXBhcmF0b3IiLCJ3b3JkU2VwYXJhdG9yIiwiZ2V0V3JhcHBlZFJhbmdlRm9yTGluZSIsImxhc3QiLCJjcmVhdGVEZWNvcmF0b3IiLCJfYXVkaW9Db250ZXh0IiwiQXVkaW9Db250ZXh0Iiwid2Via2l0QXVkaW9Db250ZXh0IiwiYXVkaW9Db250ZXh0IiwiY3JlYXRlQnVmZmVyU291cmNlIiwiZGVjb2RlQXVkaW9EYXRhIiwiX2Jhc2U2NFRvQXJyYXlCdWZmZXIiLCJfcmVtb3ZlTWltZVR5cGUiLCJiZWxsU291bmQiLCJjb25uZWN0IiwiZGVzdGluYXRpb24iLCJDaXJjdWxhckxpc3QiLCJfbWF4TGVuZ3RoIiwib25EZWxldGVFbWl0dGVyIiwib25JbnNlcnRFbWl0dGVyIiwib25UcmltRW1pdHRlciIsIl9hcnJheSIsIl9zdGFydEluZGV4IiwiX2xlbmd0aCIsIl9nZXRDeWNsaWNJbmRleCIsInJlY3ljbGUiLCJ0cmltU3RhcnQiLCJzaGlmdEVsZW1lbnRzIiwicmVwZWF0IiwiX29uQmluYXJ5IiwiX29uRGF0YSIsIl9vbkxpbmVGZWVkIiwiX29uV3JpdGVQYXJzZWQiLCJJbnN0YW50aWF0aW9uU2VydmljZSIsIk9wdGlvbnNTZXJ2aWNlIiwiQnVmZmVyU2VydmljZSIsIkxvZ1NlcnZpY2UiLCJDb3JlU2VydmljZSIsIkNvcmVNb3VzZVNlcnZpY2UiLCJJQ29yZU1vdXNlU2VydmljZSIsIl9kaXJ0eVJvd1NlcnZpY2UiLCJEaXJ0eVJvd1NlcnZpY2UiLCJJRGlydHlSb3dTZXJ2aWNlIiwidW5pY29kZVNlcnZpY2UiLCJVbmljb2RlU2VydmljZSIsIl9jaGFyc2V0U2VydmljZSIsIkNoYXJzZXRTZXJ2aWNlIiwiSUNoYXJzZXRTZXJ2aWNlIiwiSW5wdXRIYW5kbGVyIiwibWFya1JhbmdlRGlydHkiLCJzY3JvbGxCb3R0b20iLCJfd3JpdGVCdWZmZXIiLCJXcml0ZUJ1ZmZlciIsIl9vblNjcm9sbEFwaSIsIl93aW5kb3dzTW9kZSIsIndyaXRlU3luYyIsIkxvZ0xldmVsRW51bSIsIldBUk4iLCJNSU5JTVVNX0NPTFMiLCJNSU5JTVVNX1JPV1MiLCJyZWdpc3RlckVzY0hhbmRsZXIiLCJyZWdpc3RlckRjc0hhbmRsZXIiLCJyZWdpc3RlckNzaUhhbmRsZXIiLCJyZWdpc3Rlck9zY0hhbmRsZXIiLCJ3aW5kb3dzTW9kZSIsIl9lbmFibGVXaW5kb3dzTW9kZSIsInVwZGF0ZVdpbmRvd3NNb2RlV3JhcHBlZFN0YXRlIiwiZmluYWwiLCJzZXRXaW5MaW5lcyIsInJlc3RvcmVXaW4iLCJtaW5pbWl6ZVdpbiIsInNldFdpblBvc2l0aW9uIiwic2V0V2luU2l6ZVBpeGVscyIsInJhaXNlV2luIiwibG93ZXJXaW4iLCJyZWZyZXNoV2luIiwic2V0V2luU2l6ZUNoYXJzIiwibWF4aW1pemVXaW4iLCJmdWxsc2NyZWVuV2luIiwiZ2V0V2luU3RhdGUiLCJnZXRXaW5Qb3NpdGlvbiIsImdldFdpblNpemVQaXhlbHMiLCJnZXRTY3JlZW5TaXplUGl4ZWxzIiwiZ2V0Q2VsbFNpemVQaXhlbHMiLCJnZXRXaW5TaXplQ2hhcnMiLCJnZXRTY3JlZW5TaXplQ2hhcnMiLCJnZXRJY29uVGl0bGUiLCJnZXRXaW5UaXRsZSIsInB1c2hUaXRsZSIsInBvcFRpdGxlIiwiX2RhdGEiLCJob29rIiwicHV0IiwidW5ob29rIiwiRXNjYXBlU2VxdWVuY2VQYXJzZXIiLCJfY29yZU1vdXNlU2VydmljZSIsIl9wYXJzZUJ1ZmZlciIsIl9zdHJpbmdEZWNvZGVyIiwiX3V0ZjhEZWNvZGVyIiwiX3dpbmRvd1RpdGxlIiwiX2ljb25OYW1lIiwiX3dpbmRvd1RpdGxlU3RhY2siLCJfaWNvbk5hbWVTdGFjayIsIl9jdXJBdHRyRGF0YSIsIl9lcmFzZUF0dHJEYXRhSW50ZXJuYWwiLCJfb25SZXF1ZXN0QmVsbCIsIl9vblJlcXVlc3RSZWZyZXNoUm93cyIsIl9vblJlcXVlc3RSZXNldCIsIl9vblJlcXVlc3RTZW5kRm9jdXMiLCJfb25SZXF1ZXN0U3luY1Njcm9sbEJhciIsIl9vblJlcXVlc3RXaW5kb3dzT3B0aW9uc1JlcG9ydCIsIl9vbkExMXlDaGFyIiwiX29uQTExeVRhYiIsIl9vbkNvbG9yIiwiX3BhcnNlU3RhY2siLCJwYXVzZWQiLCJjdXJzb3JTdGFydFgiLCJjdXJzb3JTdGFydFkiLCJkZWNvZGVkTGVuZ3RoIiwiX3NwZWNpYWxDb2xvcnMiLCJzZXRDc2lIYW5kbGVyRmFsbGJhY2siLCJpZGVudFRvU3RyaW5nIiwicGFyYW1zIiwidG9BcnJheSIsInNldEVzY0hhbmRsZXJGYWxsYmFjayIsInNldEV4ZWN1dGVIYW5kbGVyRmFsbGJhY2siLCJzZXRPc2NIYW5kbGVyRmFsbGJhY2siLCJzZXREY3NIYW5kbGVyRmFsbGJhY2siLCJzZXRQcmludEhhbmRsZXIiLCJwcmludCIsImluc2VydENoYXJzIiwiaW50ZXJtZWRpYXRlcyIsImN1cnNvclVwIiwic2Nyb2xsUmlnaHQiLCJjdXJzb3JEb3duIiwiY3Vyc29yRm9yd2FyZCIsImN1cnNvckJhY2t3YXJkIiwiY3Vyc29yTmV4dExpbmUiLCJjdXJzb3JQcmVjZWRpbmdMaW5lIiwiY3Vyc29yQ2hhckFic29sdXRlIiwiY3Vyc29yUG9zaXRpb24iLCJjdXJzb3JGb3J3YXJkVGFiIiwiZXJhc2VJbkRpc3BsYXkiLCJlcmFzZUluTGluZSIsImluc2VydExpbmVzIiwiZGVsZXRlTGluZXMiLCJkZWxldGVDaGFycyIsInNjcm9sbFVwIiwic2Nyb2xsRG93biIsImVyYXNlQ2hhcnMiLCJjdXJzb3JCYWNrd2FyZFRhYiIsImNoYXJQb3NBYnNvbHV0ZSIsImhQb3NpdGlvblJlbGF0aXZlIiwicmVwZWF0UHJlY2VkaW5nQ2hhcmFjdGVyIiwic2VuZERldmljZUF0dHJpYnV0ZXNQcmltYXJ5Iiwic2VuZERldmljZUF0dHJpYnV0ZXNTZWNvbmRhcnkiLCJsaW5lUG9zQWJzb2x1dGUiLCJ2UG9zaXRpb25SZWxhdGl2ZSIsImhWUG9zaXRpb24iLCJ0YWJDbGVhciIsInNldE1vZGUiLCJzZXRNb2RlUHJpdmF0ZSIsInJlc2V0TW9kZSIsInJlc2V0TW9kZVByaXZhdGUiLCJjaGFyQXR0cmlidXRlcyIsImRldmljZVN0YXR1cyIsImRldmljZVN0YXR1c1ByaXZhdGUiLCJzb2Z0UmVzZXQiLCJzZXRDdXJzb3JTdHlsZSIsInNldFNjcm9sbFJlZ2lvbiIsInNhdmVDdXJzb3IiLCJ3aW5kb3dPcHRpb25zIiwicmVzdG9yZUN1cnNvciIsImluc2VydENvbHVtbnMiLCJkZWxldGVDb2x1bW5zIiwic2V0RXhlY3V0ZUhhbmRsZXIiLCJCRUwiLCJMRiIsImxpbmVGZWVkIiwiVlQiLCJGRiIsImNhcnJpYWdlUmV0dXJuIiwiQlMiLCJiYWNrc3BhY2UiLCJIVCIsInRhYiIsIlNPIiwic2hpZnRPdXQiLCJTSSIsInNoaWZ0SW4iLCJDMSIsIklORCIsIk5FTCIsIm5leHRMaW5lIiwiSFRTIiwidGFiU2V0IiwiT3NjSGFuZGxlciIsInNldFRpdGxlIiwic2V0SWNvbk5hbWUiLCJzZXRPclJlcG9ydEluZGV4ZWRDb2xvciIsInNldE9yUmVwb3J0RmdDb2xvciIsInNldE9yUmVwb3J0QmdDb2xvciIsInNldE9yUmVwb3J0Q3Vyc29yQ29sb3IiLCJyZXN0b3JlSW5kZXhlZENvbG9yIiwicmVzdG9yZUZnQ29sb3IiLCJyZXN0b3JlQmdDb2xvciIsInJlc3RvcmVDdXJzb3JDb2xvciIsInJldmVyc2VJbmRleCIsImtleXBhZEFwcGxpY2F0aW9uTW9kZSIsImtleXBhZE51bWVyaWNNb2RlIiwiZnVsbFJlc2V0Iiwic2V0Z0xldmVsIiwic2VsZWN0RGVmYXVsdENoYXJzZXQiLCJzZWxlY3RDaGFyc2V0IiwiQ0hBUlNFVFMiLCJzY3JlZW5BbGlnbm1lbnRQYXR0ZXJuIiwic2V0RXJyb3JIYW5kbGVyIiwiX3ByZXNlcnZlU3RhY2siLCJfbG9nU2xvd1Jlc29sdmluZ0FzeW5jIiwicmFjZSIsIkRFQlVHIiwiY2xlYXJSYW5nZSIsImNoYXJzZXQiLCJtYXJrRGlydHkiLCJzZXRDZWxsRnJvbUNvZGVQb2ludCIsIndjd2lkdGgiLCJfZXJhc2VBdHRyRGF0YSIsImluc2VydENlbGxzIiwiZ2V0TnVsbENlbGwiLCJhZGRDb2RlcG9pbnRUb0NlbGwiLCJwcmVjZWRpbmdDb2RlcG9pbnQiLCJEY3NIYW5kbGVyIiwiY29udmVydEVvbCIsIl9yZXN0cmljdEN1cnNvciIsIm5leHRTdG9wIiwiX3NldEN1cnNvciIsIl9tb3ZlQ3Vyc29yIiwidGFicyIsInByZXZTdG9wIiwiX2VyYXNlSW5CdWZmZXJMaW5lIiwicmVwbGFjZUNlbGxzIiwiX3Jlc2V0QnVmZmVyTGluZSIsImNsZWFyTWFya2VycyIsImRlbGV0ZUNlbGxzIiwiX2lzIiwidGVybU5hbWUiLCJzZXRnQ2hhcnNldCIsIkRFRkFVTFRfQ0hBUlNFVCIsImFjdGl2ZUVuY29kaW5nIiwiYWN0aXZhdGVBbHRCdWZmZXIiLCJhY3RpdmF0ZU5vcm1hbEJ1ZmZlciIsIl91cGRhdGVBdHRyQ29sb3IiLCJfZXh0cmFjdENvbG9yIiwiaGFzU3ViUGFyYW1zIiwiZ2V0U3ViUGFyYW1zIiwiX3Byb2Nlc3NVbmRlcmxpbmUiLCJzYXZlZFgiLCJzYXZlZFkiLCJzYXZlZEN1ckF0dHJEYXRhIiwic2F2ZWRDaGFyc2V0IiwiX3NhdmVkQ2hhcnNldCIsInBhcnNlQ29sb3IiLCJfc2V0T3JSZXBvcnRTcGVjaWFsQ29sb3IiLCJtYXJrQWxsRGlydHkiLCJpc0lwaG9uZSIsImlzSXBhZCIsInBsYXRmb3JtIiwiX19nZW5lcmF0b3IiLCJsYWJlbCIsInNlbnQiLCJ0cnlzIiwib3BzIiwidGhyb3ciLCJTb3J0ZWRMaXN0IiwiX2dldEtleSIsIl9zZWFyY2giLCJnZXRLZXlJdGVyYXRvciIsIkJ1ZmZlclN0cmluZ0l0ZXJhdG9yIiwiQnVmZmVyIiwiTUFYX0JVRkZFUl9TSVpFIiwiX2hhc1Njcm9sbGJhY2siLCJfbnVsbENlbGwiLCJfd2hpdGVzcGFjZUNlbGwiLCJfaXNDbGVhcmluZyIsIl9jb2xzIiwiX3Jvd3MiLCJfZ2V0Q29ycmVjdEJ1ZmZlckxlbmd0aCIsImdldFdoaXRlc3BhY2VDZWxsIiwiQnVmZmVyTGluZSIsIm1heExlbmd0aCIsInNjcm9sbGJhY2siLCJmaWxsVmlld3BvcnRSb3dzIiwiX2lzUmVmbG93RW5hYmxlZCIsIl9yZWZsb3ciLCJfcmVmbG93TGFyZ2VyIiwiX3JlZmxvd1NtYWxsZXIiLCJyZWZsb3dMYXJnZXJHZXRMaW5lc1RvUmVtb3ZlIiwicmVmbG93TGFyZ2VyQ3JlYXRlTmV3TGF5b3V0IiwicmVmbG93TGFyZ2VyQXBwbHlOZXdMYXlvdXQiLCJsYXlvdXQiLCJfcmVmbG93TGFyZ2VyQWRqdXN0Vmlld3BvcnQiLCJjb3VudFJlbW92ZWQiLCJyZWZsb3dTbWFsbGVyR2V0TmV3TGluZUxlbmd0aHMiLCJuZXdMaW5lcyIsImNvcHlDZWxsc0Zyb20iLCJnZXRXcmFwcGVkTGluZVRyaW1tZWRMZW5ndGgiLCJzZXRDZWxsIiwidGFiU3RvcFdpZHRoIiwiTWFya2VyIiwib25JbnNlcnQiLCJvbkRlbGV0ZSIsIl9yZW1vdmVNYXJrZXIiLCJfdHJpbVJpZ2h0IiwiX2VuZEluZGV4IiwiX3N0YXJ0T3ZlcnNjYW4iLCJfZW5kT3ZlcnNjYW4iLCJfY3VycmVudCIsIl9jb21iaW5lZCIsIl9leHRlbmRlZEF0dHJzIiwiY29weUZyb20iLCJCdWZmZXJTZXQiLCJfbm9ybWFsIiwiX2FsdCIsImluYWN0aXZlQnVmZmVyIiwiX25leHRJZCIsImlzRGlzcG9zZWQiLCJfb25EaXNwb3NlIiwiTlVMIiwiU09IIiwiU1RYIiwiRU9UIiwiRU5RIiwiQUNLIiwiRExFIiwiREMxIiwiREMyIiwiREMzIiwiREM0IiwiTkFLIiwiU1lOIiwiRVRCIiwiQ0FOIiwiRU0iLCJTVUIiLCJGUyIsIkdTIiwiUlMiLCJVUyIsIlNQIiwiREVMIiwiUEFEIiwiSE9QIiwiQlBIIiwiTkJIIiwiU1NBIiwiRVNBIiwiSFRKIiwiVlRTIiwiUExEIiwiUExVIiwiUkkiLCJTUzIiLCJTUzMiLCJEQ1MiLCJQVTEiLCJQVTIiLCJTVFMiLCJDQ0giLCJNVyIsIlNQQSIsIkVQQSIsIlNPUyIsIlNHQ0kiLCJTQ0kiLCJDU0kiLCJPU0MiLCJQTSIsIkFQQyIsIlVuaWNvZGVWNiIsInF1ZXVlTWljcm90YXNrIiwiX2FjdGlvbiIsIl9jYWxsYmFja3MiLCJfcGVuZGluZ0RhdGEiLCJfYnVmZmVyT2Zmc2V0IiwiX2lzU3luY1dyaXRpbmciLCJfc3luY0NhbGxzIiwiX2lubmVyV3JpdGUiLCJQQVlMT0FEX0xJTUlUIiwiRGNzUGFyc2VyIiwiX2hhbmRsZXJzIiwiX2FjdGl2ZSIsIl9pZGVudCIsIl9oYW5kbGVyRmIiLCJfc3RhY2siLCJsb29wUG9zaXRpb24iLCJmYWxsVGhyb3VnaCIsInJlZ2lzdGVySGFuZGxlciIsImNsZWFySGFuZGxlciIsInNldEhhbmRsZXJGYWxsYmFjayIsIlBhcmFtcyIsImFkZFBhcmFtIiwiX3BhcmFtcyIsIl9oaXRMaW1pdCIsIlZUNTAwX1RSQU5TSVRJT05fVEFCTEUiLCJUcmFuc2l0aW9uVGFibGUiLCJzZXREZWZhdWx0IiwiYWRkTWFueSIsIl90cmFuc2l0aW9ucyIsImhhbmRsZXJQb3MiLCJ0cmFuc2l0aW9uIiwiY2h1bmtQb3MiLCJpbml0aWFsU3RhdGUiLCJjdXJyZW50U3RhdGUiLCJfY29sbGVjdCIsIl9wcmludEhhbmRsZXJGYiIsIl9leGVjdXRlSGFuZGxlckZiIiwiX2NzaUhhbmRsZXJGYiIsIl9lc2NIYW5kbGVyRmIiLCJfZXJyb3JIYW5kbGVyRmIiLCJfcHJpbnRIYW5kbGVyIiwiX2V4ZWN1dGVIYW5kbGVycyIsIl9jc2lIYW5kbGVycyIsIl9lc2NIYW5kbGVycyIsIl9vc2NQYXJzZXIiLCJPc2NQYXJzZXIiLCJfZGNzUGFyc2VyIiwiX2Vycm9ySGFuZGxlciIsIl9pZGVudGlmaWVyIiwicmV2ZXJzZSIsImNsZWFyUHJpbnRIYW5kbGVyIiwiY2xlYXJFc2NIYW5kbGVyIiwiY2xlYXJFeGVjdXRlSGFuZGxlciIsImNsZWFyQ3NpSGFuZGxlciIsImNsZWFyRGNzSGFuZGxlciIsImNsZWFyT3NjSGFuZGxlciIsImNsZWFyRXJyb3JIYW5kbGVyIiwiY29sbGVjdCIsImFib3J0IiwiYWRkU3ViUGFyYW0iLCJhZGREaWdpdCIsIl9wdXQiLCJtYXhTdWJQYXJhbXNMZW5ndGgiLCJfc3ViUGFyYW1zIiwiX3N1YlBhcmFtc0xlbmd0aCIsIl9zdWJQYXJhbXNJZHgiLCJVaW50MTZBcnJheSIsIl9yZWplY3REaWdpdHMiLCJfcmVqZWN0U3ViRGlnaXRzIiwiX2RpZ2l0SXNTdWIiLCJmcm9tQXJyYXkiLCJnZXRTdWJQYXJhbXNBbGwiLCJfYWRkb25zIiwiX3dyYXBwZWRBZGRvbkRpc3Bvc2UiLCJCdWZmZXJBcGlWaWV3IiwiQnVmZmVyTGluZUFwaVZpZXciLCJfbGluZSIsIl9vbkJ1ZmZlckNoYW5nZSIsIl9hbHRlcm5hdGUiLCJhbHRlcm5hdGUiLCJhZGRDc2lIYW5kbGVyIiwiYWRkRGNzSGFuZGxlciIsImFkZEVzY0hhbmRsZXIiLCJhZGRPc2NIYW5kbGVyIiwidmVyc2lvbnMiLCJhY3RpdmVWZXJzaW9uIiwiaXNVc2VyU2Nyb2xsaW5nIiwiX2NhY2hlZEJsYW5rTGluZSIsImlzRnVsbCIsImdsZXZlbCIsIl9jaGFyc2V0cyIsIk5PTkUiLCJyZXN0cmljdCIsIlgxMCIsIlZUMjAwIiwiRFJBRyIsIkFOWSIsIkRFRkFVTFQiLCJTR1IiLCJfcHJvdG9jb2xzIiwiX2VuY29kaW5ncyIsIl9hY3RpdmVQcm90b2NvbCIsIl9hY3RpdmVFbmNvZGluZyIsIl9vblByb3RvY29sQ2hhbmdlIiwiX2xhc3RFdmVudCIsImFkZFByb3RvY29sIiwiYWRkRW5jb2RpbmciLCJfY29tcGFyZUV2ZW50cyIsInRyaWdnZXJCaW5hcnlFdmVudCIsImRvd24iLCJ1cCIsImRyYWciLCJtb3ZlIiwiX29uVXNlcklucHV0IiwiX3Njcm9sbFRvQm90dG9tIiwiX2RlY29yYXRpb25zIiwiX29uRGVjb3JhdGlvblJlZ2lzdGVyZWQiLCJfb25EZWNvcmF0aW9uUmVtb3ZlZCIsImdldERlY29yYXRpb25zQXRMaW5lIiwiX2NhY2hlZEJnIiwiX2NhY2hlZEZnIiwiZm9yZWdyb3VuZENvbG9yIiwiU2VydmljZUNvbGxlY3Rpb24iLCJfZW50cmllcyIsIl9zZXJ2aWNlcyIsImdldFNlcnZpY2UiLCJnZXRTZXJ2aWNlRGVwZW5kZW5jaWVzIiwiSU5GTyIsIkVSUk9SIiwiT0ZGIiwiX3VwZGF0ZUxvZ0xldmVsIiwiX2V2YWxMYXp5T3B0aW9uYWxQYXJhbXMiLCJfbG9nIiwiREVGQVVMVF9CRUxMX1NPVU5EIiwiYWx0Q2xpY2tNb3Zlc0N1cnNvciIsIl9vbk9wdGlvbkNoYW5nZSIsIl9zYW5pdGl6ZUFuZFZhbGlkYXRlT3B0aW9uIiwiX3NldHVwT3B0aW9ucyIsImRpJHRhcmdldCIsImRpJGRlcGVuZGVuY2llcyIsInNlcnZpY2VSZWdpc3RyeSIsIl9wcm92aWRlcnMiLCJfb25DaGFuZ2UiLCJfYWN0aXZlUHJvdmlkZXIiLCJabW9kZW0iLCJIRVhfRElHSVRTIiwiSEVYX09DVEVUX1ZBTFVFIiwiaGQiLCJFTkNPREVMSUIiLCJwYWNrX3UxNl9iZSIsIm51bWJlciIsInBhY2tfdTMyX2xlIiwiaGlnaF9ieXRlcyIsInVucGFja191MTZfYmUiLCJieXRlc19hcnIiLCJ1bnBhY2tfdTMyX2xlIiwib2N0ZXRzIiwib2N0ZXRzX3RvX2hleCIsImhleCIsInBhcnNlX2hleF9vY3RldHMiLCJoZXhfb2N0ZXRzIiwiVGV4dCIsIkVuY29kZXIiLCJieXRlcyIsIkRlY29kZXIiLCJUZXh0RGVjb2RlciIsImVzY2FwZSIsIkNSQzMyX01PRCIsIl9jcmN0YWIiLCJfdXBkY3JjIiwiY3AiLCJjcmMiLCJkaXZpZGVudCIsImN1cnJCeXRlIiwiY3JjX3dpZHRoIiwiYml0IiwiX2NvbXB1dGVfY3JjdGFiIiwiX192ZXJpZnkiLCJleHBlY3QiLCJnb3QiLCJDUkMiLCJjcmMxNiIsIm9jdGV0X251bXMiLCJjcmMzMiIsInZlcmlmeTE2IiwidmVyaWZ5MzIiLCJlbmNvZGVfY3VyIiwiZW5jb2RlX3RvZG8iLCJaRExFIiwiWk1MSUIiLCJabW9kZW1aRExFIiwic2V0X2VzY2FwZV9jdHJsX2NoYXJzIiwiZXNjYXBlX2N0cmxfY2hhcnMiLCJfc2V0dXBfemRsZV90YWJsZSIsImVzY2FwZXNfY3RybF9jaGFycyIsIl96ZGxlX3RhYmxlIiwiemRsZV90YWJsZSIsImxhc3RfY29kZSIsIl9sYXN0Y29kZSIsImFycmJ1ZiIsIkFycmF5QnVmZmVyIiwiYXJyYnVmX3VpbnQ4IiwiZXNjY3RsX3luIiwiYXJyYnVmX2kiLCJ0cmFjZSIsInNvX2ZhciIsInpzZW5kbGluZV90YWIiLCJYT0ZGIiwiWE9OIiwidHVyYm9fZXNjYXBlIiwiVFlQRV9NRVNTQUdFIiwiYWJvcnRlZCIsInBlZXJfYWJvcnRlZCIsImFscmVhZHlfYWJvcnRlZCIsImV4cGVjdGVkIiwidmFsaWRhdGlvbiIsInZhbCIsIl9nZW5lcmF0ZV9tZXNzYWdlIiwibXNnIiwiYXJnc19hZnRlcl90eXBlIiwibXNnX29yX3R5cGUiLCJnZW5lcmF0ZWQiLCJaUEFEIiwiWkJJTiIsIlpIRVgiLCJaQklOMzIiLCJIRVhfSEVBREVSX0NSTEYiLCJIRVhfSEVBREVSX0NSTEZfWE9OIiwiSEVYX0hFQURFUl9QUkVGSVgiLCJCSU5BUlkxNl9IRUFERVJfUFJFRklYIiwiQklOQVJZMzJfSEVBREVSX1BSRUZJWCIsIkhlYWRlciIsImlidWZmZXIiLCJkaXNjYXJkX2FsbCIsInBhcnNlciIsImdhcmJhZ2UiLCJUUklNX0xPT1AiLCJmaXJzdF9aUEFEIiwiX3BhcnNlX2hleCIsIl9wYXJzZV9iaW5hcnkxNiIsIl9wYXJzZV9iaW5hcnkzMiIsImhkciIsIkN0ciIsIkZSQU1FX05BTUVfQ1JFQVRPUiIsInRvX2hleCIsInRvX2NyYyIsIl9jcmNfYnl0ZXMiLCJfaGV4X2hlYWRlcl9lbmRpbmciLCJ0b19iaW5hcnkxNiIsInplbmNvZGVyIiwiX3RvX2JpbmFyeSIsInRvX2JpbmFyeTMyIiwiX2J5dGVzNCIsImNyY19mdW5jIiwiVFlQRU5VTSIsIlpSUUlOSVRfSEVBREVSIiwiWlJJTklUX0ZMQUciLCJDQU5GRFgiLCJDQU5PVklPIiwiQ0FOQlJLIiwiQ0FOQ1JZIiwiQ0FOTFpXIiwiQ0FORkMzMiIsIkVTQ0NUTCIsIkVTQzgiLCJaUklOSVRfSEVBREVSIiwiZmxhZ3NfYXJyIiwiYnVmc2l6ZSIsImZsYWdzX251bSIsImZsIiwiX2dldF9aUklOSVRfZmxhZ19udW0iLCJnZXRfYnVmZmVyX3NpemUiLCJjYW5fZnVsbF9kdXBsZXgiLCJjYW5fb3ZlcmxhcF9pbyIsImNhbl9icmVhayIsImNhbl9mY3NfMzIiLCJlc2NhcGVfOHRoX2JpdCIsIlpTSU5JVF9GTEFHIiwiWlNJTklUX0hFQURFUiIsImF0dG5fc2VxX2FyciIsIl9nZXRfWlNJTklUX2ZsYWdfbnVtIiwibnVtIiwiWkFDS19IRUFERVIiLCJwYXlsb2FkNCIsIlpGSUxFX1ZBTFVFUyIsInNwYXJzZSIsInRyYW5zcG9ydCIsIm1hbmFnZW1lbnQiLCJjb252ZXJzaW9uIiwiWkZJTEVfT1JERVIiLCJaRklMRV9IRUFERVIiLCJnZXRfb3B0aW9ucyIsIm9wdHMiLCJieXRlc19jb3B5Iiwic2tpcF9pZl9hYnNlbnQiLCJleHRrZXkiLCJaU0tJUF9IRUFERVIiLCJaQUJPUlRfSEVBREVSIiwiWkZJTl9IRUFERVIiLCJaRkVSUl9IRUFERVIiLCJaT2Zmc2V0SGVhZGVyIiwiWlJQT1NfSEVBREVSIiwiWkRBVEFfSEVBREVSIiwiWkVPRl9IRUFERVIiLCJGUkFNRV9DTEFTU19UWVBFUyIsImZjIiwiQ1JFQVRPUlMiLCJfZ2V0X2JsYW5rX2hlYWRlciIsInR5cGVudW0iLCJjcmVhdG9yIiwiX2dldF9ibGFua19oZWFkZXJfZnJvbV9jb25zdHJ1Y3RvciIsInpkbGVfZGVjb2RlZCIsIl9wYXJzZV9ub25femRsZV9iaW5hcnkxNiIsImRlY29kZWQiLCJoZHJfZXJyIiwiaGV4X2J5dGVzIiwibGZfcG9zIiwicHJlY2VkaW5nIiwicGFyc2VfaGV4IiwiQUJPUlRfU0VRVUVOQ0UiLCJzdHJpcF9pZ25vcmVkX2J5dGVzIiwiZmluZF9zdWJhcnJheSIsImhheXN0YWNrIiwibmVlZGxlIiwiSEFZU1RBQ0siLCJfY2hlY2tfYWJvcnRlZCIsImJhdGNoIiwidG90YWxfc2l6ZSIsImZvYmoiLCJtdGltZSIsImxhc3RNb2RpZmllZCIsImZpbGVzX3JlbWFpbmluZyIsImJ5dGVzX3JlbWFpbmluZyIsImZpbGVfaWR4IiwicHJvbWlzZV9jYWxsYmFjayIsImN1cl9iIiwic2VuZF9vZmZlciIsInJlcyIsInBpZWNlIiwicmVhZGVyIiwiRmlsZVJlYWRlciIsIm9uZXJyb3IiLCJvbnByb2dyZXNzIiwib25fcHJvZ3Jlc3MiLCJvbmxvYWQiLCJvbl9maWxlX2NvbXBsZXRlIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJwYWNrZXRzIiwiYmxvYiIsIkJsb2IiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJkb3dubG9hZCIsIkNPTU1PTl9aTV9IRVhfU1RBUlQiLCJTRU5UUllfQ09OU1RSVUNUT1JfUkVRVUlSRURfQVJHUyIsIkRldGVjdGlvbiIsInNlc3Npb25fdHlwZSIsImFjY2VwdGVyIiwiZGVuaWVyIiwiY2hlY2tlciIsIl9jb25maXJtZXIiLCJfZGVuaWVyIiwiX2lzX3ZhbGlkIiwiX3Nlc3Npb25fdHlwZSIsImRlbnkiLCJpc192YWxpZCIsImdldF9zZXNzaW9uX3JvbGUiLCJfY2FjaGUiLCJfYWZ0ZXJfc2Vzc2lvbl9lbmQiLCJfenNlc3Npb24iLCJzZXNzaW9uX2JlZm9yZV9jb25zdW1lIiwiaGFzX2VuZGVkIiwiZ2V0X3RyYWlsaW5nX2J5dGVzIiwibmV3X3Nlc3Npb24iLCJfcGFyc2UiLCJ0b190ZXJtaW5hbCIsIl9wYXJzZWRfc2Vzc2lvbiIsIl9vbl9yZXRyYWN0IiwiX3RvX3Rlcm1pbmFsIiwic2V0X3NlbmRlciIsIl9zZW5kZXIiLCJfb25fZGV0ZWN0IiwiX3NlbmRfYWJvcnQiLCJleHBpcmVkX3Nlc3Npb24iLCJnZXRfY29uZmlybWVkX3Nlc3Npb24iLCJhcnJheV9saWtlIiwiY29tbW9uX2hleF9hdCIsIlNlc3Npb24iLCJaUklOSVRfRkxBR1MiLCJERUZBVUxUX1JFQ0VJVkVfSU5QVVRfTU9ERSIsIk9WRVJfQU5EX09VVCIsIl9FdmVudGVyIiwiX29uX2V2dCIsIl9ldnRfb25jZV9pbmRleCIsIl9BZGRfZXZlbnQiLCJldnRfbmFtZSIsIl9nZXRfZXZ0X3F1ZXVlIiwidG9kbyIsInF1ZXVlIiwiX0hhcHBlbiIsInNlc3MiLCJjYiIsIlJlY2VpdmUiLCJTZW5kIiwiYWxsb3dfbWlzc2luZ19PTyIsImZsYWciLCJfYWxsb3dfbWlzc2luZ19PTyIsInNlbmRlcl9mdW5jIiwiX2hhc19lbmRlZCIsIl9iZWZvcmVfY29uc3VtZSIsIl9hYm9ydGVkIiwiX3N0cmlwX2FuZF9lbnF1ZXVlX2lucHV0IiwiX2NoZWNrX2Zvcl9hYm9ydF9zZXF1ZW5jZSIsIl9jb25zdW1lX2ZpcnN0IiwiX2lucHV0X2J1ZmZlciIsImdldF9yb2xlIiwiX3RyaW1fbGVhZGluZ19nYXJiYWdlX3VudGlsX2hlYWRlciIsInRyaW1fbGVhZGluZ19nYXJiYWdlIiwiX3BhcnNlX2FuZF9jb25zdW1lX2hlYWRlciIsIm5ld19oZWFkZXJfYW5kX2NyYyIsIl9sb2dfaGVhZGVyIiwiX2NvbnN1bWVfaGVhZGVyIiwiX2xhc3RfaGVhZGVyX25hbWUiLCJfbGFzdF9oZWFkZXJfY3JjIiwiaGVhZGVyIiwibmV3X2hlYWRlciIsIl9vbl9yZWNlaXZlIiwiX25leHRfaGVhZGVyX2hhbmRsZXIiLCJhYm9ydF9hdCIsIl9vbl9zZXNzaW9uX2VuZCIsIl9zZW5kX2hlYWRlciIsImJ5dGVzX2hkciIsIl9jcmVhdGVfaGVhZGVyX2J5dGVzIiwiX2xhc3Rfc2VudF9oZWFkZXIiLCJuYW1lX2FuZF9hcmdzIiwiYnVpbGQiLCJfZ2V0X2hlYWRlcl9mb3JtYXR0ZXIiLCJfemVuY29kZXIiLCJoZHJfb3JfcGt0IiwiX2J5dGVzX2FmdGVyX09PIiwiX2J5dGVzX2JlaW5nX2NvbnN1bWVkIiwiX3BhcnNlX2FuZF9jb25zdW1lX3N1YnBhY2tldCIsInBhcnNlX2Z1bmMiLCJzdWJwYWNrZXQiLCJTdWJwYWNrZXQiLCJfY29uc3VtZV9kYXRhIiwiZnJhbWVfZW5kIiwiX25leHRfc3VicGFja2V0X2hhbmRsZXIiLCJfZ290X1pGSU4iLCJhcnJheSIsInBhcnNlZCIsImdldF9wYXlsb2FkIiwiX29jdGV0c190b19zdHJpbmciLCJfdGV4dGRlY29kZXIiLCJfY29uc3VtZV9aRklMRV9kYXRhIiwiX2ZpbGVfaW5mbyIsInBhY2tldF9wYXlsb2FkIiwibnVsX2F0IiwiZm5hbWUiLCJ0aGVfcmVzdCIsIm1vZGUiLCJzZXJpYWwiLCJPZmZlciIsIl9hY2NlcHQiLCJfY3VycmVudF90cmFuc2ZlciIsIl9jb25zdW1lX1pEQVRBX2RhdGEiLCJfYWNjZXB0ZWRfb2ZmZXIiLCJfb2Zmc2V0X29rIiwiX3NlbmRfWlJQT1MiLCJfZmlsZV9vZmZzZXQiLCJfb25fZGF0YV9pbiIsImFja19leHBlY3RlZCIsIl9tYWtlX3Byb21pc2VfZm9yX2JldHdlZW5fZmlsZXMiLCJiZXR3ZWVuX2ZpbGVzX2hhbmRsZXIiLCJaRklMRSIsIlpTSU5JVCIsInNwa3QiLCJfY29uc3VtZV9aU0lOSVRfZGF0YSIsIlpGSU4iLCJfY29uc3VtZV9aRklOIiwiX2F0dG4iLCJfc3RhcnRlZCIsInJldCIsIl9zZW5kX1pSSU5JVCIsInJlc29sdmVfYWNjZXB0IiwiWkRBVEEiLCJfY29uc3VtZV9aREFUQSIsIlpFT0YiLCJfY29uc3VtZV9aRU9GIiwiYm91bmRfbWFrZV9wcm9taXNlX2Zvcl9iZXR3ZWVuX2ZpbGVzIiwiX29uX2ZpbGVfZW5kIiwiVHJhbnNmZXJfT2ZmZXJfTWl4aW4iLCJfemZpbGVfb3B0cyIsIlRyYW5zZmVyIiwiZmlsZV9pbmZvIiwic2VuZF9mdW5jIiwiZW5kX2Z1bmMiLCJfc2VuZCIsInpmaWxlX29wdHMiLCJhY2NlcHRfZnVuYyIsInNraXBfZnVuYyIsIl9hY2NlcHRfZnVuYyIsIl9za2lwX2Z1bmMiLCJfaW5wdXRfaGFuZGxlciIsIl92ZXJpZnlfbm90X3NraXBwZWQiLCJfc2tpcHBlZCIsIl9hY2NlcHRlZCIsIm9uX2lucHV0IiwiX3Nwb29sIiwiX2lucHV0X2hhbmRsZXJfbW9kZSIsIl9nZXRfc3Bvb2wiLCJTRU5ERVJfQklOQVJZX0hFQURFUiIsInpyaW5pdF9oZHIiLCJfc3VicGFja2V0X2VuY29kZV9mdW5jIiwiX2NvbnN1bWVfWlJJTklUIiwiX3N0YXJ0X2tlZXBhbGl2ZV9vbl9zZXRfc2VuZGVyIiwiZnVuYyIsIl9zdGFydF9rZWVwYWxpdmUiLCJfa2VlcGFsaXZlX3Byb21pc2UiLCJfa2VlcGFsaXZlX3RpbWVvdXQiLCJaQUNLIiwiX2dvdF9aU0lOSVRfWkFDSyIsIl9zZW5kX1pTSU5JVCIsIl9zdG9wX2tlZXBhbGl2ZSIsIl9rZWVwX2FsaXZlX3Byb21pc2UiLCJ6c2luaXRfZmxhZ3MiLCJfc2VuZF9oZWFkZXJfYW5kX2RhdGEiLCJfbGFzdF9aUklOSVQiLCJfZW5zdXJlX3JlY2VpdmVyX2VzY2FwZXNfY3RybF9jaGFycyIsInByb21pc2UiLCJfY29udmVydF9wYXJhbXNfdG9fb2ZmZXJfcGF5bG9hZF9hcnJheSIsInN1YnBhY2tldF9wYXlsb2FkIiwiVmFsaWRhdGlvbiIsIm9mZmVyX3BhcmFtZXRlcnMiLCJzdWJwYWNrZXRfc3BhY2VfcGllY2VzIiwiX3N0cmluZ190b19vY3RldHMiLCJfc2VuZGluZ19maWxlIiwicGF5bG9hZF9hcnJheSIsInpycG9zX2hhbmRsZXJfc2V0dGVyX2Z1bmMiLCJaUlBPUyIsImRvZXJfZnVuYyIsImhhbmRsZXJfc2V0dGVyX3Byb21pc2UiLCJaU0tJUCIsIl9zZW5kX2ludGVyaW1fZmlsZV9waWVjZSIsIl9lbmRfZmlsZSIsIl9zZW50X1pEQVRBIiwiaGRyX25hbWVfYW5kX2FyZ3MiLCJkYXRhX2FyciIsImZyYW1lZW5kIiwiZGF0YV9ieXRlcyIsIl9idWlsZF9zdWJwYWNrZXRfYnl0ZXMiLCJfYnVpbGRfYW5kX3NlbmRfc3VicGFja2V0Iiwic3RyaW5nIiwiX3RleHRlbmNvZGVyIiwidWludDhhcnIiLCJieXRlc19vYmoiLCJfc2VuZF9maWxlX3BhcnQiLCJfZW5zdXJlX3dlX2FyZV9zZW5kaW5nIiwiX3ByZXBhcmVfdG9fcmVjZWl2ZV9aUklOSVQiLCJhZnRlcl9jb25zdW1lIiwiWlJJTklUIiwib2tfdG9fY2xvc2UiLCJyZWoiLCJfc2VudF9PTyIsImZpbmFsX3BhY2tldGVuZCIsIm9ial9vZmZzZXQiLCJieXRlc19jb3VudCIsImNodW5rX3NpemUiLCJhdF9lbmQiLCJjaHVuayIsIlNVQlBBQ0tFVF9CVUlMREVSIiwiWm1vZGVtU3VicGFja2V0IiwiZW5jb2RlMTYiLCJfZW5jb2RlIiwiZW5jb2RlMzIiLCJfcGF5bG9hZCIsIl9mcmFtZWVuZF9udW0iLCJjcmNfbGVuIiwiZW5kX2F0IiwiX2ZyYW1lX2VuZHNfbG9va3VwIiwiWkVuZE5vQWNrU3VicGFja2V0IiwiWk5vRW5kTm9BY2tTdWJwYWNrZXQiLCJaTm9FbmRBY2tTdWJwYWNrZXQiLCJaRW5kQWNrU3VicGFja2V0IiwiemRsZV9hdCIsImZyYW1lZW5kX251bSIsInpkbGVfZW5jb2RlZF9wYXlsb2FkIiwiZ290X2NyYyIsIlpFbmRTdWJwYWNrZXRCYXNlIiwiWk5vRW5kU3VicGFja2V0QmFzZSIsImVuZF9ub19hY2siLCJlbmRfYWNrIiwibm9fZW5kX25vX2FjayIsIm5vX2VuZF9hY2siLCJMT09LU19MSUtFX1pNT0RFTV9IRUFERVIiLCJfdmFsaWRhdGVfbnVtYmVyIiwib2siLCJtdGltZV9vayIsImRhdGVfb2JqIiwiZ2V0VGltZSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJnZXR0ZXIiLCJkZWZpbml0aW9uIiwicHJvcCIsIm5jIiwiT3VyWHRlcm0iLCJwcm90b2NvbCIsInBhdGhuYW1lIiwic2VhcmNoIiwiQ29ubmVjdGlvbkZhY3RvcnkiLCJjbG9zZXIiLCJXZWJUVFkiLCJnb3R0eV9hdXRoX3Rva2VuIl0sInNvdXJjZVJvb3QiOiIifQ==